docs(audit): C2 is FULLY closed -- the live-edit half was fixed too
Was about to spec a Codex fix for OC_Chunk / BM_Chunk / FChunkBiomeCache, which three docs still list as open. Checked the sites first. All of them already carry a layout-version guard: CP_Chunk -> CP_Version OC_Chunk -> OC_Version BM_Chunk -> BM_Version TC_BiomeCache -> TC_SeenVersion FChunkBiomeCache::Invalidate() exists precisely because the validity box says nothing about the FBiomeContext its cells were classified against, and all four thread_local instances call it on a version change. The only other two instances in the tree (VoxelContentManager ~445, the height-stack test) are function-local, constructed per task, so staleness is impossible there. Seventh time in this project a confident premise reversed on reading. It cost a doc edit instead of a Codex run and a build cycle. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -221,6 +221,30 @@ evaluates the second chunk against **the room list baked from the first chunk's
|
||||
(so "which archetype owns this chunk" stays unambiguous), which switches the blend off entirely.
|
||||
The one configuration the tests never build is the default one.
|
||||
|
||||
#### ✅✅ SECTION FULLY CLOSED 2026-08-16 — the live-edit half was fixed too. Do not re-open.
|
||||
|
||||
The text above still reads as though `OC_Chunk`, `BM_Chunk` and `FChunkBiomeCache` were open. **They
|
||||
are not.** Checked site by site on 2026-08-16, while about to spec a fix for them — the premise
|
||||
reversed on reading, for the seventh time in this project. Every per-chunk cache in the plugin now
|
||||
carries the layout version:
|
||||
|
||||
| cache | guard | site |
|
||||
|---|---|---|
|
||||
| `CP_Chunk` (density params + op stack) | `CP_Version` vs `GetLayoutVersion()` | `VoxelGenerator.cpp` ~613 |
|
||||
| `OC_Chunk` (`GetSurfaceHeightAt` oracle) | `OC_Version` | ~2626 |
|
||||
| `BM_Chunk` (`GetBiomeMaterialAt`) | `BM_Version` | ~3470 |
|
||||
| `TC_BiomeCache` (the `ClassifyTile` grid) | `TC_SeenVersion` | ~2724 |
|
||||
|
||||
`FChunkBiomeCache` gained an explicit `Invalidate()` (`VoxelBiomeTypes.h` ~253) precisely because its
|
||||
validity box says nothing about the `FBiomeContext` its cells were classified against; **all four**
|
||||
`thread_local` instances call it on a version change. The only other two instances in the tree —
|
||||
`VoxelContentManager.cpp` ~445 and the height-stack test — are **function-local**, constructed fresh
|
||||
per task, so no staleness is possible by construction.
|
||||
|
||||
⇒ Both the determinism half and the live-edit half of C2 are closed. The remaining audit item on
|
||||
this theme is **C9's library half** (`sinf`/`cosf` are not IEEE-754 specified), which is unrelated
|
||||
and still open with 0 measured exposure.
|
||||
|
||||
#### ✅ FIXED 2026-07-28 (the SDF-cache half) — pending build
|
||||
|
||||
The params now travel into the key, and the shape of the fix is worth recording because the obvious
|
||||
|
||||
+7
-3
@@ -178,9 +178,13 @@ Everything before it is built and green.
|
||||
libm can differ. Currently **0 samples within 1e-6 of the isosurface**, i.e. no measured risk. Run
|
||||
`CrossPlatformDigest` on Linux, compare the SHAPE digest, pin it. The real fix if ever needed is a
|
||||
deterministic in-house sin/cos.
|
||||
4. **`AUDIT §C2`'s remaining half** — `OC_Chunk`, `BM_Chunk`, `FChunkBiomeCache` are still keyed
|
||||
without the layout version. That is the live-edit staleness class ("I tweaked the asset and one
|
||||
patch kept the old shape"), not the determinism class, which is fixed.
|
||||
4. ~~**`AUDIT §C2`'s remaining half**~~ — **✅ CLOSED, verified 2026-08-16. Do not re-open, and do
|
||||
not spec a fix for it — I nearly did.** `OC_Chunk`, `BM_Chunk` and `TC_BiomeCache` all carry a
|
||||
layout-version guard (`OC_Version` / `BM_Version` / `TC_SeenVersion`), `FChunkBiomeCache` has an
|
||||
explicit `Invalidate()` that all four `thread_local` instances call on a version change, and the
|
||||
only other two instances in the tree are **function-local**, so they cannot go stale. Recorded in
|
||||
`AUDIT-2026-07.md §C2`. The live-edit half was fixed at the same time as the determinism half;
|
||||
only this list was stale.
|
||||
5. **Phase 3 — ops as data assets.** A design conversation, not a transcription. Don't start it
|
||||
unprompted. What makes it possible is already in place: ops depend on capabilities
|
||||
(`IVoxelBiomeField`), never on `UVoxelGenerator`.
|
||||
|
||||
Reference in New Issue
Block a user