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
```
The Ghidra recovery covers all 301 named NE exports plus 62 internal function
entries. Its raw output and coverage tables remain beside the binary, so later
work can be checked against the same evidence rather than against this Rust
implementation.
The reconstruction ledger verifies all 391 ordinary in-image functions, six
shared/overlapping entries, and all 301 NE entry points. Its raw output and
coverage tables remain beside the binary, so later work can be checked against
the same evidence rather than against this Rust implementation.
## 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;
the recovered static collision layout is represented in Rust.
- Build coverage: `cargo check`, unit tests, and strict Clippy complete on the
host. Cross-target checks pass for `x86_64-pc-windows-gnu` and
`x86_64-apple-darwin`; CI is configured to build and test natively on Linux,
macOS, and Windows.
- Build coverage: the production build, unit tests, and strict Clippy complete
on the Linux host. This checkout does not have the Windows or macOS Rust
standard-library targets installed; the repository CI is configured to run
check, tests, and Clippy natively on Linux, macOS, and Windows.
- Runtime coverage: the Linux executable was launched through the real window
backend, the attract screen was inspected, a game was started, a ball was
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
record-2 probe proves special-respawn publication `(17000,23000)/(0,3040)`
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
terminal scenarios are driven by a 120 Hz validation clock while production
physics accumulates the recovered 100 Hz substep. Seeded runs use the original
Borland random stream. Traces include the last collision-object id and can
export the logical 640x460 render target.
- End-to-end gameplay coverage: seeded autoplay charges each launcher ball and
operates both flippers from ball position. The two-minute acceptance run
covers repeated launches, both flippers, targets, bumpers, lock holes, a claw
capture/release pair, and drains while checking every state for finite values.
- End-to-end gameplay coverage: seeded autoplay charges and launches a ball,
operates both flippers from ball position, and covers target and bumper hits
for two minutes while checking every state for finite values. Separate named
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
batching, and flipper publication now use the reconstructed Borland/Win16
timing model. Native texture drawing replaces Win16 GDI calls while preserving