feat(streaming): shadow-publish flat collision assets
Carry one immutable prepared collision closure with each accepted near-tier generation and install graph plus flat views through the same retained publication receipt. Apply the same strict package-only rule to live entities, add exact sampled graph-authoritative comparison artifacts and lifecycle counters, and prove cancellation, demotion, rehydrate, revisit, teardown, reconnect, and the nine-stop route with 14,064 zero-mismatch samples. Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
parent
f7ff9f4eea
commit
d9446030e6
32 changed files with 2777 additions and 92 deletions
91
docs/research/2026-07-25-slice-i5-dual-collision-shadow.md
Normal file
91
docs/research/2026-07-25-slice-i5-dual-collision-shadow.md
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
# Slice I5 — dual collision publication and connected shadow gate
|
||||
|
||||
## Outcome
|
||||
|
||||
Slice I5 is complete. Production gameplay remains graph-authoritative for this
|
||||
checkpoint, but every streamed near-tier generation and every live DAT object
|
||||
now publishes the matching prepared flat collision representation. The sampled
|
||||
flat path runs from a complete cloned transition, compares exact state and
|
||||
float bits, and cannot alter the graph result used by gameplay.
|
||||
|
||||
No visual, collision, movement, or retail algorithm changed in this slice.
|
||||
|
||||
## Ownership
|
||||
|
||||
- `LandblockBuild` carries one immutable `LandblockCollisionBuild` containing
|
||||
sorted source IDs, flat GfxObj/Setup collision, flat CellStruct geometry, and
|
||||
per-EnvCell topology.
|
||||
- `LandblockBuildFactory` reads that closure from the existing
|
||||
`IPreparedCollisionSource` after the serialized DAT transaction. A missing or
|
||||
corrupt prepared record rejects the complete near-tier generation; a
|
||||
graph-only partial publication is forbidden.
|
||||
- `LandblockPhysicsPublisher` commits graph and flat views through one retained
|
||||
publication receipt. Cell and topology ownership is withdrawn on exact
|
||||
replacement, near-to-far demotion, full removal, and session teardown.
|
||||
- `LiveCollisionAssetPublisher` applies the same strict dual-publication rule
|
||||
to CreateObject, appearance, and local-player Setup paths.
|
||||
- `PhysicsDataCache` exposes typed graph/flat counts in canonical lifecycle
|
||||
snapshots. Landblock-scoped cell and topology catalogs retire together.
|
||||
|
||||
## Shadow referee
|
||||
|
||||
`CollisionShadowVerifier` samples the production entry points while leaving the
|
||||
graph result authoritative. The flat query receives one retained, reset-complete
|
||||
clone of `ObjectInfo`, `SpherePath`, and `CollisionInfo`. Comparisons cover:
|
||||
|
||||
- containment availability, point containment, sphere containment;
|
||||
- root bounding spheres and physics availability;
|
||||
- cell and GfxObj moving-collision results;
|
||||
- complete transition state, collision/contact state, sphere path, candidate
|
||||
ordering, walkable vertices, GUID lists, and exact IEEE-754 float bits.
|
||||
|
||||
A mismatch or flat fault writes one deterministic JSON artifact. The disabled
|
||||
production path allocates zero managed bytes over 10,000 warmed queries.
|
||||
|
||||
## Automated evidence
|
||||
|
||||
- Focused Core and App collision/publication suites pass.
|
||||
- Cancellation publishes neither representation.
|
||||
- Pending receipt to accepted publication, demotion, rehydration,
|
||||
same-location replacement, adjacent-landblock isolation, full removal, and
|
||||
session reset preserve exact ownership without duplication.
|
||||
- Release build: zero warnings and zero errors.
|
||||
- Complete solution: 8,396 passed / 5 skipped.
|
||||
|
||||
## Connected evidence
|
||||
|
||||
Lifecycle/reconnect gate:
|
||||
|
||||
- artifact:
|
||||
`logs/connected-world-gate-20260725-162020/report.json`
|
||||
- capped login, Aerlinthe, Rynthid, Facility Hub, Holtburg, Aerlinthe revisit,
|
||||
then a fresh uncapped reconnect process;
|
||||
- 12,730 sampled queries, 12,730 exact matches;
|
||||
- zero mismatches, zero flat faults, zero mismatch artifacts;
|
||||
- graph/flat cell counts equal at every stable checkpoint;
|
||||
- all publication, retirement, upload, and warmup backlogs converged to zero;
|
||||
- both processes disconnected gracefully with exit code 0.
|
||||
|
||||
Nine-stop R6 route:
|
||||
|
||||
- artifact:
|
||||
`logs/connected-r6-soak-20260725-162614.report.json`
|
||||
- Caul, Sawato, Rynthid, Aerlinthe, Sawato revisit, Holtburg, Caul revisit,
|
||||
Sawato plateau, and Caul plateau;
|
||||
- turn, forward/release, jump, combat-toggle, and movement-truth exercises;
|
||||
- 42,719 eligible queries, 1,334 sampled queries, 1,334 exact matches;
|
||||
- zero mismatches, zero flat faults, zero mismatch artifacts;
|
||||
- graph/flat cell counts equal at all nine stable checkpoints;
|
||||
- graceful client shutdown and zero gate failures.
|
||||
|
||||
The run occurred under RDP/lock-screen conditions. It is accepted for
|
||||
deterministic correctness and lifetime evidence only; its absolute frame/GPU
|
||||
measurements are not a physical-display performance gate.
|
||||
|
||||
## Next
|
||||
|
||||
Slice I6 flips canonical production traversal to the prepared flat
|
||||
representation in one bisectable commit. The graph remains a temporary
|
||||
automated referee for the initial cutover gate. The exact cutover commit and
|
||||
`git revert <sha>` command must be recorded before correctness/visual
|
||||
acceptance, after which production graph retention can be removed.
|
||||
Loading…
Add table
Add a link
Reference in a new issue