Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
a9c6639
docs(brief): add M1.1.15.1 milestone brief
guysenpai Aug 25, 2026
ad1195f
docs(brief): confirm specs read for M1.1.15.1
guysenpai Aug 25, 2026
1683d14
docs(brief): activate M1.1.15.1
guysenpai Aug 25, 2026
d9654ee
feat(core): mint ModuleContext with its four-field pin (M1.1.15.1)
guysenpai Aug 25, 2026
2ef8ebd
docs(brief): log gate A of M1.1.15.1
guysenpai Aug 25, 2026
ab3b808
docs(brief): record the gate A matrix reading for M1.1.15.1
guysenpai Aug 25, 2026
8df74da
docs(brief): record the two gate F additions (M1.1.15.1)
guysenpai Aug 25, 2026
d3b0697
feat(forge): make Broadphase.update infallible (M1.1.15.1)
guysenpai Aug 25, 2026
594cbf0
docs(brief): log gate B of M1.1.15.1
guysenpai Aug 25, 2026
a59e259
docs(brief): record the gate B matrix reading (M1.1.15.1)
guysenpai Aug 25, 2026
77f8904
feat(forge): add the Forge3DModule adapter (M1.1.15.1)
guysenpai Aug 25, 2026
cf55d74
docs(brief): log gate C of M1.1.15.1
guysenpai Aug 25, 2026
d0d68db
test(forge): make two OOM sweep oracles exact (M1.1.15.1)
guysenpai Aug 25, 2026
e415619
docs(brief): record the gate C matrix reading (M1.1.15.1)
guysenpai Aug 25, 2026
c155331
perf(forge): resolve a body proxy through a dense index (M1.1.15.1)
guysenpai Aug 25, 2026
2143c6d
docs(brief): log gate D of M1.1.15.1
guysenpai Aug 25, 2026
e3fffa1
docs(brief): record the gate D matrix reading (M1.1.15.1)
guysenpai Aug 25, 2026
ce6d042
perf(forge): measure the C1.1 frame column with a real tick (M1.1.15.1)
guysenpai Aug 27, 2026
6b02e44
perf(forge): gate the C1.1 frame budget on p99, not the median
guysenpai Aug 27, 2026
81d0b58
chore: propagate the M1.1.15.2 / M1.1.21.1 renames (M1.1.15.1)
guysenpai Aug 27, 2026
f8010a7
docs(brief): close M1.1.15.1
guysenpai Aug 27, 2026
0efea42
test(forge): exercise the adapter's answers, not only its signatures
guysenpai Aug 27, 2026
4a8b313
fix(forge): deduplicate entities at the projecting tier, uncap staging
guysenpai Aug 27, 2026
dc359e2
docs(brief): reopen M1.1.15.1 on external review
guysenpai Aug 27, 2026
5214865
docs(brief): close M1.1.15.1
guysenpai Aug 27, 2026
2bca532
test(forge): give every adapter entry an oracle that discriminates
guysenpai Aug 27, 2026
2e4277b
fix(forge): overlapShape reports the OOM its signature declares
guysenpai Aug 27, 2026
90882b2
docs(brief): journal the second reopening of M1.1.15.1
guysenpai Aug 27, 2026
5626392
fix(forge): guard the entity-major premise in every mode, not in two
guysenpai Aug 27, 2026
91d6a07
docs(brief): journal H1 and the assert class sweep
guysenpai Aug 27, 2026
df38e0c
chore(ci): add one ReleaseFast cell, and close M1.1.15.1
guysenpai Aug 27, 2026
fb56720
fix(forge): give the three bare query entries their error channel
guysenpai Aug 27, 2026
590a5b2
docs(brief): journal the third reopening of M1.1.15.1
guysenpai Aug 27, 2026
e93f434
docs(brief): close M1.1.15.1
guysenpai Aug 28, 2026
374e6e2
fix(forge): refuse a violated entity-major premise, never repair it
guysenpai Aug 28, 2026
d398027
docs(brief): close M1.1.15.1
guysenpai Aug 28, 2026
bb8520a
fix(forge): stop promising what the adapter cannot observe
guysenpai Aug 28, 2026
cad534b
docs(brief): close M1.1.15.1
guysenpai Aug 28, 2026
fc8d3dd
docs(forge): correct a debt's address and reduce it to a pointer
guysenpai Aug 28, 2026
81cc48a
docs(forge): correct a debt's address and reduce it to a pointer
guysenpai Aug 28, 2026
cd24212
docs(brief): fix a sweep sub-total and stop copying the floor
guysenpai Aug 28, 2026
c5e3811
docs(brief): correct a rule RD-18 states, not a fact it reports
guysenpai Aug 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 29 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,29 @@ jobs:
# figure rather than a steady state: the same cell ran in 1 minute when the
# cache served it.
precision: [false, true]
# M1.1.15.1 / H1 — ONE EXTRA CELL, AND DELIBERATELY NOT AN AXIS.
#
# `std.debug.assert` is compiled to NOTHING in ReleaseFast. The matrix above
# carries {Debug, ReleaseSafe} only, so every assert in the tree is verified in
# exactly the two modes where its breach costs nothing and in NEITHER of the
# modes a game ships. H1 was born in that gap: the entity-major premise of
# `Forge3DModule.dedupEntities` was held by an assert, so the guard was absent
# precisely where its breach silently returns an entity twice.
#
# ONE CELL AND NOT SIX, and the reason is the shape of the class it detects:
# a release-stripped assert is MODE-dependent, neither platform- nor
# precision-dependent. `-Doptimize` decides whether the assert exists at all;
# the OS and `-Dphysics_f64` cannot make it reappear or vanish. So one cell
# detects the whole class, and completing the axis would cost 50 % of the
# matrix for the same detection.
#
# **DO NOT "COMPLETE" THIS BY SYMMETRY.** If a future finding is
# platform-dependent or precision-dependent, that is a different class and it
# needs its own reason written here — not this one extended.
include:
- os: ubuntu-24.04
mode: ReleaseFast
precision: false
runs-on: ${{ matrix.os }}
# M0.1 hotfix — bumped from 10 to 20 min: Windows ReleaseSafe on the
# 2-vCPU runner spends ~3 min on `zig build` then ~7 min on
Expand Down Expand Up @@ -186,7 +209,11 @@ jobs:
# work, ~45 % inside the 20-min budget on the slowest runner. ReleaseSafe
# keeps the cache: its near-cold recompile is what the 55-min budget exists
# for, and it is the leg the cache was added for in the first place.
timeout-minutes: ${{ matrix.mode == 'ReleaseSafe' && 55 || 20 }}
# ReleaseFast joins ReleaseSafe on the 55-minute budget: both are optimising
# builds, and the 20 minutes were sized for Debug. Sizing the new cell to Debug's
# budget would make it fail on compile time rather than on the class it exists to
# detect, which is the worst kind of red.
timeout-minutes: ${{ (matrix.mode == 'ReleaseSafe' || matrix.mode == 'ReleaseFast') && 55 || 20 }}
steps:
- uses: actions/checkout@v6

Expand Down Expand Up @@ -881,7 +908,7 @@ jobs:
# permanent, where a dispatch input leaves no trace in the repository at all.
# Absent the trailer the job skips and costs nothing.
#
# PERMANENT, not scaffolding. M1.1.25 replays the harness at N workers, M1.A on
# PERMANENT, not scaffolding. M1.1.21.1 replays the harness at N workers, M1.A on
# a rebuilt scheduler DAG, and every shape added later moves the scenario —
# each needs a regeneration with provenance.
#
Expand Down
24 changes: 13 additions & 11 deletions CLAUDE.md

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion bench/forge_3d_character.zig
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,6 @@ fn runBatch(gpa: std.mem.Allocator, scene: *Scene, mode: Mode, checksum: *f64) !
},
else => {
const r = try scene.chars.moveCharacter(
gpa,
&scene.bp,
&scene.bm,
&scene.store,
Expand Down
Loading