Skip to main content

Runtime Evidence & 2D/3D Parity Chain (#2469)

Date: 2026-08-11 Scope: CloudCraft integration #2469 — prove runtime evidence and 2D/3D parity for integrated slices.

1. Evidence chain

The minimal evidence chain: Unit → Guard → Build → Browser → Snapshot/Hash-Readback. Rule: Build-only success is NOT runtime success. A green build does not prove the overlay renders or the snapshot is consumed.

2. Evidence captured for CloudCraft slices

Slice #2465 (2D truth path)

Slice #2464 (3D parity)

Slice #2466 (chunk/Kappa contract)

Slice #2468 (donor license safety)

3. Readback points (revision, snapshot, hash)

Evidence must reference the exact tested stand. The revisionHash readback proves the snapshot consumed is the server-authoritative one, not a fabricated local copy.

4. 2D/3D parity contract

Both renderers must satisfy OverlayRendererParityContract:
  • consumesWorldOverlayModel: true — both consume the shared model.
  • truthSource: "server-snapshot" — truth comes from the server, not invented locally.
  • derivesFromDerivation: true — both use deriveWorldOverlayModelFromSnapshot().
  • displayMayDiffer: true — 2D iso and 3D top-down may render differently.
Rule: 2D/3D dürfen unterschiedliche Darstellung, aber keine unterschiedliche Wahrheit haben. verifyParity(client2d, client3d) passes when both contracts are satisfied. The expected contracts are in EXPECTED_PARITY_CONTRACTS.

5. What counts as build-only (NOT runtime success)

buildEvidenceChain() reports build-only if no runtime layer (browser, snapshot-hash-readback) has passed. It reports pass only when a runtime layer passes.

6. Acceptance criteria

7. Remaining runtime evidence (pending)

The following requires a running dev server + browser session and is tracked for follow-up:
  • 2D minimap overlay marker rendering screenshot
  • 3D minimap overlay marker rendering screenshot
  • /api/gameplay/snapshot revisionHash readback against the running server
  • 2D/3D side-by-side parity screenshot showing same POI/resource facts
These cannot be captured in a headless unit test. The evidence chain infrastructure (buildEvidenceChain, verifyParity) is in place to record them once a browser session is available.
This evidence chain was created by an AI agent (OpenHands) on behalf of the user.