From 8ef4d7dc09171516811bb2bcbde8c4a99e03f6e3 Mon Sep 17 00:00:00 2001 From: Fr0zka Date: Sun, 16 Aug 2026 17:12:01 +0200 Subject: [PATCH] docs: CORRECTION -- bUseOperatorStack is ON in the game's data assets The handoff said "No strate asset has the box ticked -- that is my call and I still haven't made it." Stale, and I reasoned from it all session. Jahni: "the data assets in game have the switch on." Everything downstream flips. The operator stack is the PRODUCTION density path, so the measured perf regression is one players feel, and any unsound EffectOverBox is a live hole rather than a latent one. The two correctness fixes committed today (7dbdf51, eaa44bf) both say "nothing in the running game was affected" in their bodies -- that sentence is wrong. Those commits are pushed and stay as written; OPSTACK-PROGRESS 2026-08-16 (h) is the correction of record. Concrete consequence: 7dbdf51 did not fail in practice only because this Perlin's empirical sup (~1.0-1.1) happened to stay under the margin the wrong bound left (1.27 for shafts, 1.40 for maze) -- not because the code was right. And eaa44bf is worth checking against the real assets: if any strate has ColumnMinRadius > ColumnMaxRadius or ShaftMinRadius > ShaftMaxRadius, it WAS producing tiles with no geometry and no collision. Process failure worth keeping: the flag lives in .uasset binary data, which is not greppable from here, so the docs carried a hand-written claim about it that nobody re-checked. A fact that lives outside the repo cannot be maintained inside it -- record what it was and when it was checked, never assert it as current. Rule added to the handoff. Co-Authored-By: Claude Opus 5 --- OPSTACK-HANDOFF.md | 23 ++++++++++++++++++++--- OPSTACK-PROGRESS.md | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/OPSTACK-HANDOFF.md b/OPSTACK-HANDOFF.md index 64ad20b..c1d05ac 100644 --- a/OPSTACK-HANDOFF.md +++ b/OPSTACK-HANDOFF.md @@ -70,9 +70,26 @@ bit** against its original density function. The `switch` and the stack are two interchangeable implementations. Everything sits behind `UVoxelStrateDefinition::bUseOperatorStack`; the ported list lives **only** in -`UVoxelStrateManager::UsesOperatorStackForChunk` (all 8). **No strate asset has the box ticked** — -that is my call and I still haven't made it. `GetDensityAt` and `ClassifyTile` build the stack -through the **same** factory, `VF_BuildOpStackForChunk` — a second copy would be a hole, not a bug. +`UVoxelStrateManager::UsesOperatorStackForChunk` (all 8). `GetDensityAt` and `ClassifyTile` build the +stack through the **same** factory, `VF_BuildOpStackForChunk` — a second copy would be a hole. + +> ### ⚠️⚠️ CORRECTED 2026-08-16 — **THE FLAG IS ON IN THE GAME'S DATA ASSETS.** +> +> This section used to say *"No strate asset has the box ticked — that is my call and I still +> haven't made it."* **That is false and was believed for a whole session.** Jahni: *"the data assets +> in game have the switch on."* +> +> **Everything downstream of that premise flips:** +> - The operator stack is **the production density path**, not a dormant twin. The measured perf +> regression is a regression players feel, not a lab result. +> - Any unsoundness in an op's `EffectOverBox` is a **live** hole, not a latent one. Two were found +> and fixed on 2026-08-16 (`7dbdf51`, `eaa44bf`) and **both of those commit messages say "nothing +> in the running game was affected" — that sentence is WRONG, for this reason.** See +> `OPSTACK-PROGRESS.md` 2026-08-16 (h) for the corrected severity. +> - The T1.d prize is already being collected in-game; `CODEX-TASK-001`'s counters measure how much. +> +> **Never state the flag's state from memory again — it lives in `.uasset` data, which is not +> greppable from here. Ask, or read it in the editor.** ### ✅ T1.d — the tile-skipping prize — is real and measured **in the harness** (not yet in the game) diff --git a/OPSTACK-PROGRESS.md b/OPSTACK-PROGRESS.md index b769cdc..11d3538 100644 --- a/OPSTACK-PROGRESS.md +++ b/OPSTACK-PROGRESS.md @@ -3743,3 +3743,39 @@ The proved counts **will move**; that is the point, not a regression. **`NumUnso must stay 0 in all three.** If one goes non-zero, the wider sampler has found a real hole the narrow one was hiding — in which case this task paid for itself on its first run, and the number must be reported rather than tuned away. + +## 2026-08-16 (h) — ⚠️ CORRECTION: the flag is ON in the game. Today's two fixes were LIVE, not latent. + +Jahni, on being told the op stack was "switched off": **"the data assets in game have the switch on."** + +The handoff said *"No strate asset has the box ticked — that is my call and I still haven't made it."* +That sentence was stale, and I reasoned from it all session. **Every severity assessment written +today under "nothing in the running game is affected" is wrong**, including two commit messages that +say so in their body (`7dbdf51`, `eaa44bf`). Those are pushed and stay as written; this entry is the +correction of record. + +### Corrected severity + +| fix | as filed today | actually | +|---|---|---| +| `7dbdf51` — `ExtraReach` used `sup\|FBM\| = 1.0`, proved bound 1.5 | "latent, nothing affected" | **live in the shipped game.** VerticalShafts needed `B ≤ 1.27`, Maze `B ≤ 1.40`. Whether a hole ever *manifested* rests on this Perlin's true sup (~1.0–1.1 empirically) — i.e. **it did not fail because the empirical sup happened to stay under the margin**, not because the code was right. | +| `eaa44bf` — cell sweep padded by `MaxRadius`, envelope is `max(Min, Max)` | "no-op at defaults" | **still a no-op at correctly ordered values — but now worth CHECKING the real assets.** If any strate has `ColumnMinRadius > ColumnMaxRadius` or `ShaftMinRadius > ShaftMaxRadius`, that asset **was** producing tiles with no geometry and no collision. | + +⇒ **ACTION FOR JAHNI, before or with the next build:** open the strate assets and confirm +`ColumnMinRadius ≤ ColumnMaxRadius` and `ShaftMinRadius ≤ ShaftMaxRadius`. If either is inverted, +`eaa44bf` fixed a live hole and the before/after is visible. `IslandMinRadius/MaxRadius` was already +guarded and is not at risk. + +Also re-prioritised by this: **the perf regression is a shipped regression**, not a lab curiosity. +`CODEX-TASK-001` / `-002` stop being "prove the refactor worked" and become "diagnose a live +slowdown". Same build, higher stakes. + +### The process failure worth keeping + +The flag's state lives in **`.uasset` binary data**, which cannot be grepped from here. So the docs +carried a hand-written claim about it, nobody re-checked it, and it silently went stale — the exact +shape of `AUDIT §C2`'s staleness class, but in prose instead of a cache key. + +**Rule added to the handoff: never state the flag's state from memory. Ask, or read it in the +editor.** More generally: *a fact that lives outside the repo cannot be maintained inside the repo* — +docs may record what it was **and when it was checked**, never assert it as current.