docs(post-A.5 #54): close JobKind plumbing issue + update CLAUDE.md flight status

Move ISSUE #54 to Recently closed referencing commit `bf31e59`. Drop
#54 from CLAUDE.md "Currently in flight" — only #53 (Tier 1 retry)
remains open in the post-A.5 polish phase.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-05-10 16:04:01 +02:00
parent bf31e59805
commit 9a55354143
2 changed files with 20 additions and 25 deletions

View file

@ -525,13 +525,14 @@ acdream's plan lives in two files committed to the repo:
acceptance criteria. Do not drift from the spec without explicit user acceptance criteria. Do not drift from the spec without explicit user
approval. approval.
**Currently in flight: Post-A.5 polish — Tier 1 retry + JobKind plumbing.** **Currently in flight: Post-A.5 polish — Tier 1 retry (only remaining priority).**
Open issues: #53 (Tier 1 entity cache redo with animation-mutation audit), #54 (JobKind Open issues: #53 (Tier 1 entity cache redo with animation-mutation audit).
plumbing through BuildLandblockForStreaming for proper far-tier skip). ISSUES #52 (lifestone missing) and #54 (JobKind plumbing) closed 2026-05-10. #52 by
ISSUE #52 (lifestone missing) closed 2026-05-10 by commit `e40159f` — three real bugs commit `e40159f` — three real bugs in the WB rendering migration's translucent pass
in the WB rendering migration's translucent pass (alpha-test discard, missing cull state, (alpha-test discard, missing cull state, missing `uDrawIDOffset` uniform). #54 by
missing `uDrawIDOffset` uniform). After #53/#54 close, the next planned phase is N.6 commit `bf31e59``LandblockStreamJobKind` plumbed through `BuildLandblockForStreaming`,
(perf polish) — see roadmap for scope. far-tier worker now does heightmap-only load (no `LandBlockInfo`, no `SceneryGenerator`).
After #53 closes, the next planned phase is N.6 (perf polish) — see roadmap for scope.
**Phase A.5 (Two-tier Streaming + Horizon LOD) shipped 2026-05-10.** **Phase A.5 (Two-tier Streaming + Horizon LOD) shipped 2026-05-10.**
N₁=4 near-tier (81 LBs, full detail) + N₂=12 far-tier (544 LBs, terrain only); fog N₁=4 near-tier (81 LBs, full detail) + N₂=12 far-tier (544 LBs, terrain only); fog

View file

@ -46,24 +46,6 @@ Copy this block when adding a new issue:
# Active issues # Active issues
## #54 — A.5/jobkind-plumbing: far-tier worker loads full entity layer then strips
**Status:** OPEN
**Severity:** LOW (correctness/perf; worker wastes CPU on far-tier LandBlockInfo + scenery generation that is immediately discarded)
**Filed:** 2026-05-10
**Component:** streaming / LandblockStreamer
**Description:** Bug A's fix (commit `9217fd9`) patches at the worker output — after a far-tier job completes the full `LoadNear` path, the result's entity list is stripped before posting to the completion queue. This means far-tier LBs still load `LandBlockInfo` + run `SceneryGenerator` + call `LandblockLoader.BuildEntitiesFromInfo` even though those results are thrown away. At N₂=12, that is ~544 far-tier LBs × unnecessary dat reads + scenery math on promotion sequences.
**Proper fix:** plumb `LandblockStreamJobKind` through `BuildLandblockForStreaming` so far-tier jobs call only `LandBlock` heightmap read + `LandblockMesh.Build`, skipping `LandBlockInfo` + `SceneryGenerator` entirely. The function signature change is ~5 lines; wiring is ~10 lines. Estimated 30 min1 hour total.
**Files:**
- `src/AcDream.App/Streaming/LandblockStreamer.cs``HandleJob` + `BuildLandblockForStreaming`
**Acceptance:** Far-tier LB worker path reads only the `LandBlock` dat file (no `LandBlockInfo`, no `SceneryGenerator` call). Verified by adding a counter diagnostic or via dotnet-trace showing the dat-read call count per job kind.
---
## #53 — A.5/tier1-redo: entity-classification cache broke animation (reverted) ## #53 — A.5/tier1-redo: entity-classification cache broke animation (reverted)
**Status:** OPEN **Status:** OPEN
@ -1721,6 +1703,18 @@ Unverified. The likely culprits, ranked by suspected probability:
# Recently closed # Recently closed
## #54 — [DONE 2026-05-10 · bf31e59] A.5/jobkind-plumbing: far-tier worker loads full entity layer then strips
**Closed:** 2026-05-10
**Commits:** `bf31e59` (factory signature change to 2-arg + back-compat overload + far-tier early-out)
**Component:** streaming / LandblockStreamer
**Resolution.** `LandblockStreamer.cs` primary ctor now takes `Func<uint, LandblockStreamJobKind, LoadedLandblock?>` so the factory can branch on the job kind. A back-compat overload preserves the old single-arg signature for existing test code (5 ctor sites in `LandblockStreamerTests.cs` resolved to the overload with no test changes). `BuildLandblockForStreaming(uint, JobKind)` in `GameWindow.cs` early-outs for `LoadFar` with a heightmap-only path (`_dats.Get<LandBlock>(landblockId)` + `Array.Empty<WorldEntity>()`); near-tier path is unchanged. The Bug A post-load entity strip in `LandblockStreamer.HandleJob` is retained as a `Debug.Assert` + Release safety net. Per-LB worker cost on far-tier dropped from ~tens of ms (LandBlockInfo + scenery + interior) to ~sub-ms (single LandBlock dat read).
**Verification.** Build green; 1688/1696 tests pass (8 pre-existing physics/input failures unchanged); 30 streaming-targeted tests (LandblockStreamer + StreamingController + StreamingRegion) all green via the back-compat overload.
---
## #52 — [DONE 2026-05-10 · e40159f] A.5/lifestone-missing: Holtburg lifestone not rendering ## #52 — [DONE 2026-05-10 · e40159f] A.5/lifestone-missing: Holtburg lifestone not rendering
**Closed:** 2026-05-10 **Closed:** 2026-05-10