docs(audit): align validation claims with current evidence

The reconstruction ledger still described an obsolete function count, claimed
local Windows/macOS cross-target checks despite those standard libraries being
absent, and attributed lock, claw, drain, and repeated-launch coverage to the
current autoplay trace. Those statements were stronger than the current
artifacts prove after the corrected trajectory.

Record the final C ledger counts, distinguish configured native CI from local
Linux production validation, add both stopped-Wine slingshot probes, and route
claw/panel/lock/drain evidence to the deterministic and focused tests that
actually cover it.

Test Plan:
- `rumdl check --flavor commonmark RECONSTRUCTION.md` -- passed
- `git diff --cached --check` -- passed
This commit is contained in:
2026-08-23 20:41:06 +02:00
parent 0c4c18dbea
commit 2a17fbeeef
+18 -13
View File
@@ -10,10 +10,10 @@ a9022f1894e3e6e21fc42e8f6c932f7c549ca77f63aaa0c488bb9d55d9d0174c TDKPIN.EXE
f1d9ac980c7bfba5dc53eaa9e7cb2c3cd9b82f879ee8962ad40bf863d641bb49 MMTIMER.DLL f1d9ac980c7bfba5dc53eaa9e7cb2c3cd9b82f879ee8962ad40bf863d641bb49 MMTIMER.DLL
``` ```
The Ghidra recovery covers all 301 named NE exports plus 62 internal function The reconstruction ledger verifies all 391 ordinary in-image functions, six
entries. Its raw output and coverage tables remain beside the binary, so later shared/overlapping entries, and all 301 NE entry points. Its raw output and
work can be checked against the same evidence rather than against this Rust coverage tables remain beside the binary, so later work can be checked against
implementation. the same evidence rather than against this Rust implementation.
## Coverage by subsystem ## Coverage by subsystem
@@ -50,10 +50,10 @@ decoded, build-ready subset; it does not replace that evidence archive.
- Static coverage: all intended decoded visual/audio resources are preserved; - Static coverage: all intended decoded visual/audio resources are preserved;
the recovered static collision layout is represented in Rust. the recovered static collision layout is represented in Rust.
- Build coverage: `cargo check`, unit tests, and strict Clippy complete on the - Build coverage: the production build, unit tests, and strict Clippy complete
host. Cross-target checks pass for `x86_64-pc-windows-gnu` and on the Linux host. This checkout does not have the Windows or macOS Rust
`x86_64-apple-darwin`; CI is configured to build and test natively on Linux, standard-library targets installed; the repository CI is configured to run
macOS, and Windows. check, tests, and Clippy natively on Linux, macOS, and Windows.
- Runtime coverage: the Linux executable was launched through the real window - Runtime coverage: the Linux executable was launched through the real window
backend, the attract screen was inspected, a game was started, a ball was backend, the attract screen was inspected, a game was started, a ball was
launched, collision scoring was observed, and a rendered frame was captured. launched, collision scoring was observed, and a rendered frame was captured.
@@ -63,16 +63,21 @@ decoded, build-ready subset; it does not replace that evidence archive.
controlled terminal-18 claw capture and release. A current one-substep controlled terminal-18 claw capture and release. A current one-substep
record-2 probe proves special-respawn publication `(17000,23000)/(0,3040)` record-2 probe proves special-respawn publication `(17000,23000)/(0,3040)`
followed by the same response's `(16698,21191)/(-302,-1809)` continuation. followed by the same response's `(16698,21191)/(-302,-1809)` continuation.
Rust tests assert these exact live states. Stopped one-substep probes cover both relative slingshot chains: record 57
produces `(77369,356597)/(1839,1832)` with spin `-5.28`, and record 72
produces `(233253,358494)/(-2095,1669)` with spin `+5.46`. Rust and C tests
assert these exact live states.
- Deterministic mechanics coverage: named launcher, flipper, and all four claw - Deterministic mechanics coverage: named launcher, flipper, and all four claw
terminal scenarios are driven by a 120 Hz validation clock while production terminal scenarios are driven by a 120 Hz validation clock while production
physics accumulates the recovered 100 Hz substep. Seeded runs use the original physics accumulates the recovered 100 Hz substep. Seeded runs use the original
Borland random stream. Traces include the last collision-object id and can Borland random stream. Traces include the last collision-object id and can
export the logical 640x460 render target. export the logical 640x460 render target.
- End-to-end gameplay coverage: seeded autoplay charges each launcher ball and - End-to-end gameplay coverage: seeded autoplay charges and launches a ball,
operates both flippers from ball position. The two-minute acceptance run operates both flippers from ball position, and covers target and bumper hits
covers repeated launches, both flippers, targets, bumpers, lock holes, a claw for two minutes while checking every state for finite values. Separate named
capture/release pair, and drains while checking every state for finite values. deterministic scenarios cover all claw terminals, launcher/flipper edges,
target rotation, the full panel, and effect-seven multiball; focused game
tests cover drains and lock-hole completion.
- Semantic boundary: collision, random, spin, fixed-point state, detail callback - Semantic boundary: collision, random, spin, fixed-point state, detail callback
batching, and flipper publication now use the reconstructed Borland/Win16 batching, and flipper publication now use the reconstructed Borland/Win16
timing model. Native texture drawing replaces Win16 GDI calls while preserving timing model. Native texture drawing replaces Win16 GDI calls while preserving