test(overhaul): pin verified cathedral geometry and membership

This commit is contained in:
Erik 2026-09-05 20:44:30 +02:00
parent 00ea65a164
commit eea83ac884
5 changed files with 203 additions and 1 deletions

View file

@ -973,6 +973,16 @@ Exact hashes/counts/artifacts in `c1a-integrated-capture-verification.md`.
This expected initial failure authorizes the recorded golden pin and five This expected initial failure authorizes the recorded golden pin and five
product mutations, not C1a/G4 PASS. Fresh-process/full/final gates still owed. product mutations, not C1a/G4 PASS. Fresh-process/full/final gates still owed.
**C1a witness review-closed:** recorded golden pinned; seven Release builds
0W0E, baseline/restored exact fact pass and all five actual product mutations
fail only at the final golden comparison with unchanged counts. Exact source
restoration,32/32manifest, independent sequential retail/product then
production/gate-honesty PASS. No production change or review-fix round.
`c1a-product-discrimination-verification.md` preserves all evidence;
`c1a-integrated-verification.md` releases clean-checkpoint official lanes and
two fresh processes/C1c consumer. Those runs and final graphical/G4 gates
remain owed; no full-gate PASS is inferred from focused checks.
## 14. Risk register (condensed) ## 14. Risk register (condensed)
- **R1 second scene graph.** Graph records own only topology/membership facts; - **R1 second scene graph.** Graph records own only topology/membership facts;

View file

@ -0,0 +1,57 @@
# C1a final integrated verification
2026-09-05. This records the guarded original witness, not the preserved
authored-input diagnostic. Bridge implementation1e645ee40 and first actual
capture66825e0bb precede the golden/mutation contract00ea65a16.
## Candidate review closed
Only the authorized golden literal differs from66825e0bb. Reviewed raw test
SHA256F0EDF3F82252211F595C25A66B5F98A6688F1A061E887A074E939EF8FCB25649.
Implementer note `c1a-product-discrimination-verification.md`, SHA256
B0C239EB600A06FE0AD39694FA748DB65AED616FCC5F2E4E1365D5AF809E8AF3,
retains the seven builds/runs and five actual mutation patches/products.
Sequential independent review: retail/product meaning PASS, then production/
gate honesty PASS, no actionable findings or review-fix round. Reviewer did
not implement the App witness. It read the complete file, binding contracts,
named order routines/sealed paired evidence, actual factory/extractor and
headless publication bodies. Nonempty0104, seven ramp parts, ordered
0112/0113/0009 and21clip-required entries remain literal assertions.
Complete ordered geometry and unfiltered cross-owner membership are retained.
Lead separately read all five saved source patches, independently parsed all
seven TRXs and verified32/32manifest entries, current test/note source seals
and the one-line final delta. Baseline/restored pass; every mutation reaches
only final golden failure after both changed fresh-owner products agree.
All relevant counts remain unchanged. No production mutation, copied
registration, missing fixture, extra agent or graphical run occurred.
## Clean-checkpoint execution release
Lead may commit this exact candidate and run the remaining original gates
on one clean checkpoint, with no code/document edits during execution:
1. Official full Release gate with locked restore/build and the literal
filter `Lane!=InstalledDat&Lane!=Linux&Lane!=Manual&Lane!=Timing&Lane!=Live&Lane!=PreparedPackage`.
Fresh directory `artifacts/s5-c1a-final-hermetic-20260905-r1/`.
2. Two fresh exact geometry-fact test processes from that build/checkpoint,
each with explicit installed opt-in/directory, plus C1c's unchanged
`Oh_walk_corpus_reproduces_all_25_complete_frames_at_full_signature8`.
Fresh directories `artifacts/s5-c1a-final-focused-20260905-r1/` and `-r2/`.
3. Official canonical InstalledDat lane `Lane=InstalledDat&Purpose!=Diagnostic`,
explicit ACDREAM_RUN_INSTALLED_DAT_TESTS=1 and Documents/Asheron's Call,
same built binaries, fresh `artifacts/s5-c1a-final-installed-20260905-r1/`.
Use tools/run-release-gate.ps1 for the official lanes. Never reuse an
artifact directory. Before each build/test authoritatively check both client
names/debuggers absent and ACE UDP9000; one process at a time. Verify all
manifests and every nonpassing identity; do not retry/filter to claim green.
The canonical comparator has eight known failures and one known skip in
`c1c-integrated-verification.md`; any changed/new failure returns a finding.
Missing explicit opt-in is an invalid invocation, not useful gate evidence.
These runs are not yet claimed complete. The final graphical lifecycle,
reconnect, R6/portal/dungeon/owner matrix, graceful ownership convergence and
G4 remain separate. C2 performance comparison/FPS repair stays deferred.
No original scratch or red authored diagnostic may be modified or rerun.

View file

@ -0,0 +1,110 @@
# C1a product discrimination — frozen implementer return
2026-09-05, campaign base00ea65a164583ea47f7c36d5d1f7bd0ddcfedf00.
This is implementation/evidence, not independent review or C1a/G4 approval.
## Scope and execution
The only lasting test change is ExpectedCombinedHash at line38, pinned to
251A13A58133D79062B38A7145250E5B1FE018AF8E28E1D29A092C4B6C63ABF0,
as authorized from clean66825e0bb's independent-owner capture. No production,
fixture, package, shader, other test, original scratch or diagnostic changed.
No client, agent or commit. All temporary mutation code was removed.
Pinned and final raw test SHA256:
F0EDF3F82252211F595C25A66B5F98A6688F1A061E887A074E939EF8FCB25649.
This exact hash was verified after EACH of the five apply_patch restorations;
each phase retains restored-source.sha256. Original scratch remains
9894EC50BF40F732237E3249E5F7815FDC931DDC66F1D5D212D0CA717373A9C5.
Seven Release App.Tests builds, all exit0/0warnings/0errors. Seven exact-fact
runs: baseline and final-restored exit0/1passed/0failed/0skipped; m1m5 each
exit1/0passed/1failed/0skipped, solely at final ExpectedCombinedHash assertion,
line73. Thus both fresh products, their byte arrays, three hashes, complete
counts, original semantic checks and mutation-specific assertions all agreed
before each intended failure. No retry or extra test run.
Before each build and test, process-name checks found no AcDream.App/acclient
or windbg/windbgx/cdb/ntsd/x64dbg/x32dbg/vsjitdebugger/msvsmon. Each check
confirmed ACE UDP9000 PID13340. Prechecks ran18:34:1318:37:59UTC and appear
in execution-tool stdout; build and test process output is saved separately.
Every command returned terminal status; final testhost/client/debugger check
found none. No live execution handle remains; exclusive lane is released.
Commands for each phase, with fresh phase artifact directory:
```powershell
dotnet build tests/AcDream.App.Tests/AcDream.App.Tests.csproj -c Release --no-restore --nologo
$env:ACDREAM_RUN_INSTALLED_DAT_TESTS='1'
$env:ACDREAM_DAT_DIR="C:\Users\erikn\Documents\Asheron's Call"
dotnet test tests/AcDream.App.Tests/AcDream.App.Tests.csproj -c Release --no-build --no-restore --filter 'FullyQualifiedName=AcDream.App.Tests.Streaming.LandblockGeometryMembershipInstalledDatTests.CathedralFactoryGeometryAndRetailMembership_AreCompleteAndDeterministic' --logger "trx;LogFileName=capture.trx" --results-directory $phase
```
The four full installed DAT hashes match the accepted corpus in every TRX.
These are focused test-project builds/runs, not full-solution or official lanes.
## Actual discriminators
1. m1: F4180104's extracted mesh vertex0 Position.X raw bit0 XOR1;
normal/UV/Y/Z and lengths untouched, changed bit asserted.
2. m2: first real F4180104 OrderedUploadBatches subset with distinct indices;
swap index0 with its first differing index after asserting inequality.
3. m3: actual ramp MeshRefs0/1 swapped BEFORE PublishStaticCollision, after
asserting seven refs and different GfxObj IDs. Actual published entries
in every retained ramp cell then assert seven parts, indices0/1 and the
reordered GfxObj IDs. No copied registration. Both geometry and membership
hashes change; original three-cell/21-entry assertions still pass.
4. m4: after unchanged semantic checks, obtain the actual registry-backed
List<RetailPartEntry> in the ramp's first cell; select its real ramp entry,
assert true, replace only ClipPlanesRequired=false. Same-list identity,
unchanged count and all remaining record fields asserted.
5. m5: after unchanged semantic checks, use real CrossOwnerCellId and swap
adjacent entries of different owners in its actual list. Adjacent pairing
preserves each owner's relative order. Same-list identity, count, both
complete owner projections and both unchanged CELLARRAYs asserted.
Actual source patches are preserved as each mutation's source.diff; these
include the authorized pin relative to the unpinned committed base.
All seven runs have exactly the same counts:
geometry visibility24/shells22/entities241/Setups35/GfxObjs59/vertices4946/
subsets222/indices12300/SetupParts72;
membership entities241/logicalOwners229/arrays229/arrayCells256/domain55/entries440.
## Product hashes
|Phase|Geometry SHA256|Membership SHA256|Combined SHA256|
|---|---|---|---|
|baseline|3DA9040F65F58E2FF20EF2B4761A700C847298DFBEF370E3EA76AEE85B53D187|AC18FF6BAB798D4480AF1EFD0B90DE3E9252AD4B6C837AB60AAC6DC42A08BC9A|251A13A58133D79062B38A7145250E5B1FE018AF8E28E1D29A092C4B6C63ABF0|
|final-restored|3DA9040F65F58E2FF20EF2B4761A700C847298DFBEF370E3EA76AEE85B53D187|AC18FF6BAB798D4480AF1EFD0B90DE3E9252AD4B6C837AB60AAC6DC42A08BC9A|251A13A58133D79062B38A7145250E5B1FE018AF8E28E1D29A092C4B6C63ABF0|
|m1-vertex-bit|0888052AC02E485F86D3E5CBDCD644D9CA6E753642961D53AC00B6A2081B2C99|AC18FF6BAB798D4480AF1EFD0B90DE3E9252AD4B6C837AB60AAC6DC42A08BC9A|0A89C2E1C8890269A88F0E9EB866F7852FD7675649811DBD3AADE22FDA3CD408|
|m2-subset-indices|1163B81F5804E5AA535D6720330902285415C7DF9CA34A9059828544204B8B8A|AC18FF6BAB798D4480AF1EFD0B90DE3E9252AD4B6C837AB60AAC6DC42A08BC9A|C2391C2946D70B27A5B443476BC34C841A746AC832FA4A13DF3B660F27AD81C7|
|m3-prepublication-parts|FB65BCC96D2ACEF34BE4AB3AC549407D8EB985109142D01AE784E60571C8CCE7|A5E6299F5396A4B7825EF081E43C1AF9BBCB90EB5D48F43506086DD6F2B8696C|AC2E51967AC6C4122E926EF6730F1E45AF0ADF65FBE9544FDE90B28A9F0C9EDB|
|m4-retained-clip-bit|3DA9040F65F58E2FF20EF2B4761A700C847298DFBEF370E3EA76AEE85B53D187|1D3D29509060545D4432718BEC46C6D30027007318076E7C2585722A8AE4F1CA|8B3C9C1F3D44EB5ECF45AA0A73DDF575DBC2231DE2AAB81C7219EC67BF944C0B|
|m5-cross-owner-order|3DA9040F65F58E2FF20EF2B4761A700C847298DFBEF370E3EA76AEE85B53D187|0F3D2F925B4DB24CCC4A1D4ACA2F8FE395BE68F07E73F158B468FFDE141FB5C4|60B87692BF195376C37E6AA68D748CA935A20F6B639835057F2D83257C612256|
## Raw artifacts
Root: artifacts/s5-c1a-product-discrimination-20260905-r1/.
Each phase has release-build.log, capture.log and capture.trx. Mutation phases
also retain source.diff and restored-source.sha256; final-restored has the
one-line lasting source.diff. SHA256SUMS.txt seals all32 evidence files.
|TRX path under artifact root|SHA256|
|---|---|
|baseline/capture.trx|2B384DC81EF9AE41AA44F9CA45DCAAAB5B6E2B9348D7D01C8CA22D9BB89AC88F|
|final-restored/capture.trx|BE85019004AC17DFAB70E70A48467690C6D0521D1CEEAF82DEFB04D66EB4940C|
|m1-vertex-bit/capture.trx|B8EB2D7365587918DA1940AB32FE2D065178B6B8E3DB5394A322EFAA2290C211|
|m2-subset-indices/capture.trx|4821BB6AD0722CB604F7F2C795CF28E02DBCAA7A749F3CD62C06B2929CAA2B39|
|m3-prepublication-parts/capture.trx|22E9082356CC840D6C94B8B93285C24F38212085896259460B8DC9D344146B28|
|m4-retained-clip-bit/capture.trx|94777ABEC8F70068E307D2B47B8C92F562C2D75EAC45EFE57ADB7E929BAAA409|
|m5-cross-owner-order/capture.trx|774A7156D36095CE1A435AB0DB4CC9BD375F5CB62FF290600826DEA6E5EF3C6A|
## Remaining gates
Lead owns sequential independent review, clean checkpoint, two fresh focused
processes and official literal-hermetic/canonical-InstalledDat lanes with exact
nonpassing identities, plus C1c's unchanged25-frame consumer. No general
native list-order, x87, lifecycle/GPU, FPS, known retail leakage, AMD-cause or
C1a/G4 acceptance claim. Initialized part order0..6 is not later native retained
order0,1,6,5,2,4,3. AD117 and remaining AP159 boundary predicates stay open.

View file

@ -5243,3 +5243,28 @@ only a nonempty actual F4180104 mesh guard was prepared under its separate
write-only contract. Lead owns its explicit capture/mutation release and write-only contract. Lead owns its explicit capture/mutation release and
final campaign gates. No client launch, known retail leakage/FPS change or final campaign gates. No client launch, known retail leakage/FPS change or
main merge in this chunk. main merge in this chunk.
## 68. C1a actual geometry/membership and discrimination — 2026-09-05
Bridge landed1e645ee40; guarded original witness66825e0bb. Its first clean
installed capture completes BOTH real fresh-owner products: nonempty0104
shell, seven ramp parts, exact0112/0113/0009 cells and21clip-required entries,
byte-identical geometry/membership and counts. Sole initial failure was the
final unpinned literal. Product/corpus/artifact hashes are sealed in
`c1a-integrated-capture-verification.md`.
Authorized combined golden251A13A58133D79062B38A7145250E5B1FE018AF8E28E1D29A092C4B6C63ABF0
is now pinned. Seven Release builds0W0E; baseline/restored1/1, all five real
product mutations intentionally fail only the final golden with unchanged
counts and both owner captures equal. Exact source restored after every
mutation. Lead and independent reviewer separately read patches/TRXs and
verified32/32artifact hashes. Sequential retail/product and production/gate
honesty lenses PASS, no findings. The only lasting new test delta is the
golden literal. `c1a-product-discrimination-verification.md` records all raw
products; `c1a-integrated-verification.md` owns clean-checkpoint execution.
Two fresh focused processes, unchanged C1c25-frame consumer, full literal
hermetic and canonical InstalledDat lanes are still owed. Known canonical
nonpassing identities remain explicit; no entire-lane PASS from filters.
Final lifecycle/stability, graphical matrix and owner G4 are separate. No
FPS work, known retail leakage change, authored-diagnostic rerun or main merge.

View file

@ -35,7 +35,7 @@ public sealed partial class LandblockGeometryMembershipInstalledDatTests
private const uint LandblockId = 0xF418FFFFu; private const uint LandblockId = 0xF418FFFFu;
private const uint ShellCellId = 0xF4180104u; private const uint ShellCellId = 0xF4180104u;
private const uint RampSetupId = 0x020009A2u; private const uint RampSetupId = 0x020009A2u;
private const string ExpectedCombinedHash = "REPLACE_AFTER_FIRST_VERIFIED_CAPTURE"; private const string ExpectedCombinedHash = "251A13A58133D79062B38A7145250E5B1FE018AF8E28E1D29A092C4B6C63ABF0";
private static readonly (string Name, string Sha256)[] AcceptedDatFiles = private static readonly (string Name, string Sha256)[] AcceptedDatFiles =
[ [