test: replace runtime root source freezes

This commit is contained in:
Erik 2026-08-18 16:02:15 +02:00
parent 80c7b44457
commit 3c492aedc2
4 changed files with 248 additions and 220 deletions

View file

@ -1265,3 +1265,39 @@ Verification:
attributed methods, and reduces direct/total source readers from 57/83 to
44/70. The remaining 70 reconcile to the 22 approved retained
policies/contracts and 48 staged replacements.
## Batch AA Runtime-root and crash-status source-freeze replacement
Batch AA converts the three approved Runtime-root/session-host freezes and the
three crash-status freezes. No product source changes and no test is removed.
The canonical-root checks now scan compiled App metadata rather than C# text:
`GameWindow` constructs exactly one `GameRuntime`, acquires its one host lease,
and constructs none of the displaced Runtime child roots; the entire App
assembly contains exactly one `LiveSessionCommandSurface` construction edge.
The character-creation status regression follows the compiled delegate targets
created by `LiveSessionRuntimeFactory.Create` and verifies the exact Guid/Name
and RawCode/Reason/AttemptedName property-to-writer call order. The existing
Runtime `SessionStatusWriter` suite remains the payload-shape oracle.
The #406 crash regression now inspects the built `GameWindow.Run` and
`ReportExited` methods. It proves the native frame-loop call precedes cleanup
retention, the `_runFailure` store precedes rethrow, the failure read precedes
all terminal paths, the three crash/graceful/incomplete writer calls and their
literals retain their order, and both shutdown exits funnel through the one
reporting method. Reflection verifies the nullable exception latch exists and
that neither constructor assigns it, preserving its default-null state.
`CompiledCallGraph` gained a reusable field-load/store reader so latch ordering
can be checked by IL offset without pinning field expressions or formatting.
Verification:
- all 15 focused Runtime-root/session-host/crash-status methods pass;
- the complete locked Release build covers all 44 projects with zero warnings
and zero errors;
- the no-retry complete hermetic Release gate remains 14,346/14,346 with zero
skips or failures across all 12 test assemblies; and
- the regenerated 1,254-file inventory parses every file, remains at 11,414
attributed methods, and reduces direct/total source readers from 44/70 to
41/64. The remaining 64 reconcile to the 22 approved retained
policies/contracts and 42 staged replacements.