Public-copy language pass, homepage restructure and Documentation rename, 404 page, dead-anchor and permalink fixes, release-gate sign-off, and the pre-release review fixes of the 2026-10-05 batch (probe-doc drift, build-path hygiene, verify.sh and capture safety). Refs: D533 D534
9.9 KiB
Golden baseline frames
<level>/<platform>/frame_NNNNNN.png: reference GE_PCDUMP captures for
tools_pc/verify.sh, one folder per solo level (all 21, cuba = the ending)
and per platform (win, and linux — 21 levels x 3 frames on each, captured
2026-10-05 at the same stems).
Recipe (2026-10-02 re-base; verify.sh applies all of it):
data/ge007.inipinned to ONLY[Window] Width = 640, Height = 480(every other option at its compiled-in default; verify.sh backs yours up).GE_RSEED=0x0123456789abcdef(pinned PRNG).GE_INPUTSCRIPT="20:START"(skips the intro flyby; the scripted pad is the only input). Window per level, exactly asverify.sh'sgolden_dump_forstates it (D522 re-base 2026-10-05 — the 900 stem is NOT settled gameplay on every level: it fails the 1% limit on Surface 2 / Streets / Depot / Cradle and is still inside Dam's flyby):900-1500:300(900/1200/1500) on the 14 levels where 900 is settled,1000-1400:200(1000/1200/1400) on Surface 2 / Streets / Depot / Cradle / Frigate,1500-1700:100(1500/1600/1700) on Dam, and Cuba with no input (1:SNONE) and300-900:300(the ending cutscene; it returns to the boot screens before frame 1200).framediffwalks the CANDIDATE frames, so a sweep's--dumpmust hit the golden stems exactly — never widen a stride.- The gate INSTALLS THE CANONICAL SAVE
tools_pc/golden/ge007.eep(2 KB, in-tree; D523, superseded by D529): the frame depends on the save's content, not its presence — D523's "presence, not which save" claim (worst_cell 0.175625 on each of the four candidate saves, 21.557% with none) was only ever measured on Archives, and the 2026-10-05 A/B refutes it (facility 177.47 scene-level on the 2026-10-05 playtest save, 0.0-0.25 on every other candidate on disk).verify.shandcapture_p7.shinstall the canonical eep the same way they pin the ini (snapshot the local file if any, install the canonical one, restore-or-remove on exit), so the gate is reproducible on a fresh clone and in CI. A local playtest save is never the gate's input. The linux 63-frame set was re-captured on the box under the canonical eep 2026-10-05 (D531; the 2026-10-05 re-round, D530, turned out to have run under the box-LOCAL save — thecapture_p7.shper-level re-pin bug, fixed in D531) and is valid. - Every run ends via
GE_QUITFRAME(orderly quit; never a hard kill, D344).
Gate (two tiers): the structural framediff (cell means, coverage,
phash) catches gross breakage; then a per-pixel --exact --tol 2 check
with a per-level limit: 1% of pixels, 3% for Jungle and Surface 2, Cuba
structural only. Measured run to run: <= 0.57% on 18 levels, Jungle 1.75%,
Surface 2 2.33%, Cuba 36%; a global texture-filter switch measured 22%.
Cross-platform rule (D521, P7): a frame stem is comparable across
platforms only if it is settled gameplay on every platform in the set.
The intro flyby is wall-clock paced (D117): a box that cannot hold 60 fps
stretches wall time without advancing the sim-frame counter, so the flyby
settles at a different frame per box. On the Linux capture box (Mesa /
Intel HD 3000; the golden stems rendered in 11.8-15.1 ms) frame 900 is still
inside the flyby (it settles between ~830 and ~1130 run to run) while the
win/ golden at 900 is settled -- linux/900 vs win/900 is a scene offset
(92.863% over tol 2, phash 83 on Dam), NOT a renderer defect. After the 2026-10-05
re-round both platforms sit at the same stems and the cross-platform spread is
0.348-3.983% over tol 2 (structural tier 21/21 clean, phash <= 6 except cradle
at 40; Cuba 23.7-36.3% is structural-tier-only) — informational only. The gate
each platform ships is its own captures against its own goldens; never call the
cross-platform spread a parity gate. 1200/1500 are
settled on both and measure the real driver delta. GE_DETERM=1 is for
Linux-vs-Linux regression runs only (it changes the frame -> sim mapping;
against the win/ goldens it measures 15.788% at 900, 14.594% at 1200 and
16.171% at 1500, which is expected and must never be read as a delta).
Regenerate one level after a deliberate visual change: run
tools_pc/verify.sh <level> twice to confirm the new look is stable, then
capture with the recipe above and replace <level>/<platform>/*.png.
History
-
D531 (2026-10-05):
capture_p7.sh's D529 adaptation was incomplete — the per-level re-pin restored the pre-capture LOCAL save (D524-era line), silently overwriting D529's pre-loop canonical install, so the 2026-10-05 box re-round (D530) ran under the box-local save, not the canonical one. Fixed (loop now re-pins the canonical save per level;cd "$ROOT"added) and re-captured: fresh 21/21 box round, 63 frames committed, replacing the D530 set (47/63 frames differ — save content demonstrably moves the frames; 16 byte-identical save-independent scenes). -
D530 (2026-10-05, AMENDED BY D531): the linux set was re-rounded on the box (X220, tree
442eb2ff;~/p7-reround.loghitP7 re-round DONE2026-10-05 12:53 EDT, 21/21 rc=0) and committed, replacing the D525 cleared-eep set (51/63 frames differ; 12 save-independent scenes byte- identical). The "canonical eep" provenance claim was wrong — see D531. -
D168 (2026-09-01): the
GE_PCDUMPPPM writer emittedglReadPixelsrows unreversed, so every capture — and this baseline set — was vertically flipped. Writer fixed (port/fast3d/gfx_opengl.cpp); this set regenerated from a fresh, correctly-oriented-level_09run. -
2026-09-23 (v0.4.0): re-baselined. The 2026-09-09 (D215) set was captured while the port still rendered at 30 fps (2 sim ticks per frame); D248 moved it to 60 fps (1 tick/frame), so frame N now lands at half the sim time, and frames 200/320/440 fell in the intro cutscene, whose camera is nondeterministic (D117); two fresh captures disagreed at 440. The window moved to
640-1120:240, the same sim ticks the original set sampled. Two independent captures of it agree 3/3. The capture ini is now defaults-only, andverify.shpins it the same way (it used to rewrite only Width/Height, which kept personal settings). -
2026-09-23 (later): window moved again,
400-880:240→640-1120:240. Frame 400 is the last beat of the intro cutscene (Bond in the shaft) and its camera is nondeterministic (D117): 1 in ~5 gate runs failed it (dmean 0.7 vs 20.7 run to run). All three frames are now settled gameplay; three independent captures agree (worst dmean ≤ 6.8). -
2026-10-02: re-based and extended to all 21 levels (
<level>/win/), recipe above. The flat bunker1 set at the folder root was retired. Two independent 21-level passes agreed; noise per level measured as listed.verify.shno longer hard-kills (taskkill of everyge007.x86_64.exe, including a maintainer's game); it quits viaGE_QUITFRAMEand only stops its own PID as a watchdog fallback. -
2026-10-04 (P7): first
<level>/linux/set captured (21 levels, the recipe above verbatim) on a real-GL Linux box;verify.sh's linux pixcount/ framediff skip is now driver-conditional (aglxinforenderer probe, D521) -- llvmpipe/softpipe/swrast still skip, a real driver runs the full pixel gate. Structural framediff linux-vs-win: 19/21 clean; Dam (frame 900, the flyby) and Streets (frame 1200, a diagonal region delta) fail. Exact over- tol2: 1.1-6.6% on 17 levels; Archives 20-24.6% (a constant ~20 delta over the top 3 grid rows only), Cuba 10.7-26.4% (uniform d 3-6, cell means <= 11: dither noise floor), Jungle 5.9-6.6%, Streets 1200 9.6%. See D521. -
2026-10-05 (D522/D523 re-base): the win set's window moved on six levels — Surface 2 / Streets / Depot / Cradle / Frigate to
1000-1400:200, Dam to1500-1700:100. Measured, same build, honest sequential passes: at 900 those levels fail the per-pixel limit (Dam 6.542% @900 worst_cell 12.11, Surface 2 3.752%, Streets 1.001%, Depot 1.267%, Cradle 1.754%, Frigate 8.391% on a later run) and Dam's 900 is still flyby (run-to-run 3.6-3.8% over tol 2, maxchan 168); Dam's 1200 looked settled on two runs (0.000%) then diverged 5.761% on a third, so it moved to 1500-1700 (1500/1700 0.000% across three runs, 1600 keeps ~40 moving pixels at 0.013%). At the new stems three independent runs agree within tol 2.verify.shnow pins the save file (D523). The<level>/linux/set was stale everywhere, not only on those six levels: P7's 2026-10-04 round ran withdata/ge007.eepcleared, and D523 measures that save-file presence moves ~every level (Archives 21.557% with none, 0.175625 worst_cell with any of four saves). -
2026-10-05 (P7b, linux re-round): the box re-captured all 21 levels (63 frames, 21/21 rc=0, frames=3, 25-29 s each) at the windows
verify.shcarries, with the save pinned present, on the same real-GL box (Mesa 23.0.3 / Intel HD 3000). The set is now one frame per recipe stem on every level, both platforms. Cross-platform framediff (linux vs win, tol 2): structural 21/21 PASS (worst cell mean 4.43 on streets; phash <= 6 except cradle at 40, a hash tie with cell means 1.17), exact 0.348-3.983% on the 20 non-Cuba levels (Cuba 23.7-36.3%, structural tier only) — about half the stale set's 1.142-6.958%. D521's two residual bands are closed by this measurement: Archives 19.956-24.554% (cell means to 50.8, rows 0-2) is now 3.590-3.859% (worst cell 2.31, phash 1) and Streets 1200's 16.0-148.4 cell-mean band is now 3.616-3.983% (worst cell 4.43, phash 0) — both were the save-state difference, not a renderer. Dam's 900 (92.863%, phash 83) is out of the set; at 1500-1700 Dam measures 2.964-3.443%. Caveat: the box's own sweep is crash-detect only —glxinfo -Bfails there (rc 255, "unable to open display :0" from a non-login ssh shell) soverify.sh's fail-closed probe keeps the pixcount/framediff skip even though the game's readback works; the cross-platform numbers are computed on Windows against the merged linux PNGs. See D525.