Record exact projection-store ownership, automated and connected evidence, rollback chain, and the executor-ready canonical object-table plan. Reconcile milestones, roadmap, architecture, divergence pointers, AGENTS/CLAUDE, and durable handoff state. Co-authored-by: Codex <codex@openai.com>
138 lines
5.3 KiB
Markdown
138 lines
5.3 KiB
Markdown
# HANDOFF — J3.3 complete; start J3.4 canonical object-table ownership
|
|
|
|
## Outcome
|
|
|
|
Stop here. J3.3 is complete and certified.
|
|
|
|
Final code commits:
|
|
|
|
1. `420e5eea70fd2c29cf9c8614e6298a1f84d64045`
|
|
— App projection sidecars and presentation worksets use exact
|
|
`RuntimeEntityKey`.
|
|
2. `e937cc36df39cf6ea1eaba2f9c0243d1929da702`
|
|
— spatial residence, visibility, quiescence, rebucketing, retirement, and
|
|
origin recenter preserve that same exact key.
|
|
|
|
Do not reopen J3.3 unless a reproducible gate fails. The next slice is J3.4.
|
|
|
|
## Read in this order
|
|
|
|
1. `AGENTS.md`
|
|
2. `docs/plans/2026-07-25-modern-runtime-slice-j3-object-table.md`
|
|
3. `docs/plans/2026-07-25-modern-runtime-slice-j3.md`
|
|
4. `docs/research/2026-07-25-slice-j3-3-exact-projection-store.md`
|
|
5. `claude-memory/project_modern_runtime_architecture.md`
|
|
6. `claude-memory/project_live_entity_runtime.md`
|
|
7. `docs/architecture/acdream-architecture.md`
|
|
8. `docs/architecture/code-structure.md`
|
|
|
|
The first plan is the authoritative J3.4 execution plan. The parent plan
|
|
defines J3.5/J3.6 and final acceptance.
|
|
|
|
## Current architecture
|
|
|
|
- `RuntimeEntityDirectory` is the only server-GUID/incarnation/local-ID
|
|
authority.
|
|
- `RuntimeEntityRecord` is presentation-free.
|
|
- `LiveEntityProjectionStore` is the only materialized App sidecar store.
|
|
- Every App materialized owner uses exact `RuntimeEntityKey`.
|
|
- `GpuWorldState` retains the exact key across all spatial lifetime changes.
|
|
- `LiveEntityRuntime` is an App projection/lifecycle host, not canonical
|
|
identity.
|
|
- No queue, copied gameplay world, extra frame, or rendering behavior change
|
|
was introduced.
|
|
|
|
The remaining J3.4 split is visible in two places:
|
|
|
|
- `LiveEntityRuntime` still constructs `RuntimeEntityDirectory`.
|
|
- `GameWindow` still constructs the live `ClientObjectTable`.
|
|
|
|
J3.4 replaces those two independent construction points with one
|
|
presentation-free Runtime entity/object lifetime-group root, then makes all App
|
|
controllers and Runtime session routing borrow its exact instances.
|
|
|
|
## Required behavior
|
|
|
|
Preserve verbatim:
|
|
|
|
- canonical create acceptance before object-table CreateObject mutation;
|
|
- `CreateIntegrationVersion` revalidation after synchronous callbacks;
|
|
- logical DeleteObject mutation before App projection teardown;
|
|
- pickup/parent leave-world without object-table deletion;
|
|
- optimistic move, authoritative confirm, and rejection rollback;
|
|
- ViewContents/container replacement and nullable unknown-object move notices;
|
|
- current pre-Connect subscription order;
|
|
- object-table clear before graphical projection reset;
|
|
- synchronous press-time UI and controller reads.
|
|
|
|
Do not move retained UI, item icons, paperdolls, grids, cooldown drawing,
|
|
selection presentation, or higher-level inventory transactions into Runtime in
|
|
J3.4. Those are borrowers now and later J4 work.
|
|
|
|
## Baseline and gates
|
|
|
|
Final J3.3 baseline:
|
|
|
|
- focused exact ownership/streaming: 104 passed;
|
|
- App: 3,761 passed / 3 skipped;
|
|
- complete Release: 8,444 passed / 5 skipped;
|
|
- Release build: pass;
|
|
- connected report:
|
|
`logs/connected-world-gate-20260725-221008/report.json`;
|
|
- connected result: two sessions, seven checkpoints, both graceful exit code
|
|
zero, zero failures, zero render-shadow mismatches, zero pending deltas.
|
|
|
|
Standard commands:
|
|
|
|
```powershell
|
|
dotnet build AcDream.slnx -c Release --no-restore
|
|
dotnet test AcDream.slnx -c Release --no-build
|
|
```
|
|
|
|
Run the focused Runtime/Core/App matrix listed in the J3.4 plan before the full
|
|
suite. Commit the J3.4 code before running the connected gate so the report
|
|
identifies one immutable binary. Use credentials supplied by the user/session;
|
|
never write them into source or documentation.
|
|
|
|
## Worktree cautions
|
|
|
|
These tracked paths can appear modified from Windows metadata/line-ending
|
|
behavior while remaining content-identical to the index:
|
|
|
|
- `src/AcDream.App/Interaction/PlayerInteractionMovementSink.cs`
|
|
- `src/AcDream.App/Rendering/LiveAnimationPresentationContext.cs`
|
|
- `src/AcDream.Core/Physics/CellArray.cs`
|
|
- `src/AcDream.Core/Vfx/ParticleSystem.cs`
|
|
- `tests/AcDream.Core.Tests/Vfx/ParticleSystemTests.cs`
|
|
|
|
Do not stage or rewrite them unless `git diff -- <path>` shows a real task
|
|
change.
|
|
|
|
`.test-out/`, nested `.test-out/`, and `logs/` contain local test/evidence
|
|
artifacts, including very large prepared packages. Do not stage them and do not
|
|
recursively delete them without first verifying the exact absolute target.
|
|
|
|
## Exact rollback
|
|
|
|
If J3.3 itself must be rolled back, revert newest first:
|
|
|
|
```text
|
|
git revert e937cc36df39cf6ea1eaba2f9c0243d1929da702
|
|
git revert 420e5eea70fd2c29cf9c8614e6298a1f84d64045
|
|
```
|
|
|
|
For a J3.4 failure, revert only the new J3.4 commit. Do not use the J3.3
|
|
rollback as a shortcut.
|
|
|
|
## Final J3 goal
|
|
|
|
J3.4 establishes one Runtime entity/object ownership root. J3.5 publishes one
|
|
ordered per-session entity/object delta stream consumed by graphical and
|
|
direct hosts without a second queue or mirror. J3.6 proves failure recovery,
|
|
no-window lifecycle, multiple-instance isolation, exact teardown convergence,
|
|
Release parity, and the connected route.
|
|
|
|
The J3 campaign is complete only when J3.6 proves zero leaked canonical
|
|
records, tombstones, App projections, resources, container entries, parent
|
|
candidates, deltas, and subscriptions. That is the next clean boundary before
|
|
J4 gameplay-state services and later Slice K Linux/headless multi-session work.
|