From 9a55354143e99edaa3d4dbe8e0e516000ee7bf90 Mon Sep 17 00:00:00 2001 From: Erik Date: Sun, 10 May 2026 16:04:01 +0200 Subject: [PATCH] docs(post-A.5 #54): close JobKind plumbing issue + update CLAUDE.md flight status MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- CLAUDE.md | 15 ++++++++------- docs/ISSUES.md | 30 ++++++++++++------------------ 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index dd52848..4e0b00b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -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 approval. -**Currently in flight: Post-A.5 polish — Tier 1 retry + JobKind plumbing.** -Open issues: #53 (Tier 1 entity cache redo with animation-mutation audit), #54 (JobKind -plumbing through BuildLandblockForStreaming for proper far-tier skip). -ISSUE #52 (lifestone missing) closed 2026-05-10 by commit `e40159f` — three real bugs -in the WB rendering migration's translucent pass (alpha-test discard, missing cull state, -missing `uDrawIDOffset` uniform). After #53/#54 close, the next planned phase is N.6 -(perf polish) — see roadmap for scope. +**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). +ISSUES #52 (lifestone missing) and #54 (JobKind plumbing) closed 2026-05-10. #52 by +commit `e40159f` — three real bugs in the WB rendering migration's translucent pass +(alpha-test discard, missing cull state, missing `uDrawIDOffset` uniform). #54 by +commit `bf31e59` — `LandblockStreamJobKind` plumbed through `BuildLandblockForStreaming`, +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.** N₁=4 near-tier (81 LBs, full detail) + N₂=12 far-tier (544 LBs, terrain only); fog diff --git a/docs/ISSUES.md b/docs/ISSUES.md index 5f1390d..a8da715 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -46,24 +46,6 @@ Copy this block when adding a new issue: # 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 min–1 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) **Status:** OPEN @@ -1721,6 +1703,18 @@ Unverified. The likely culprits, ranked by suspected probability: # 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` 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(landblockId)` + `Array.Empty()`); 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 **Closed:** 2026-05-10