acdream/docs/research/2026-09-01-overhaul/oh0-baseline.md

365 lines
22 KiB
Markdown

# Campaign OVERHAUL OH0 baseline
Date: 2026-09-01
Worktree: `C:\Users\erikn\source\repos\acdream\.claude\worktrees\peaceful-blackburn-5333f0`
Branch: `claude/campaign-w-retail-frame-walk`
Purpose: preserve and classify the exact pre-overhaul state before any OH
production behavior is changed.
## Outcome
OH0 found a green but heavily modified renderer state. It is recoverable, but
it is not one accepted fix. The dirty tree consists of several coherent
candidate mechanisms, diagnostic experiments, tests, and documentation. No
unrelated/user-owned semantic change was found. No dirty behavioral hunk is
repository-proven user-accepted, so this baseline deliberately calls them
**candidates** or **investigation state**.
The accepted history anchors remain:
- `b8befded` — accepted pre-overhaul rendering anchor named by the campaign.
- `e880860291a79e0cb20454710567d86ad8731675` — OH0 parent HEAD.
Checkpoint `b3b7d922` (`checkpoint(render): preserve pre-overhaul
investigation state`) is the recovery anchor for the classified semantic
state. It is not a visual or retail-fidelity acceptance claim.
## Repository state
| Field | Value |
|---|---|
| Branch | `claude/campaign-w-retail-frame-walk` |
| Parent HEAD | `e880860291a79e0cb20454710567d86ad8731675` |
| Upstream | `origin/claude/campaign-w-retail-frame-walk` |
| Upstream relation | behind `0`, ahead `27` |
| Staged paths | `0` |
| Dirty paths before this document | `53` |
| Dirty-path composition | `45` tracked semantic/intentional diffs, `5` CRLF-normalization-only entries, `3` untracked |
| Submodule | `references/WorldBuilder` at `34460c44d7fb921afa50ee30288a53236f50f451`, clean |
| Tracked diff size | 2,945 insertions, 626 deletions across 45 semantic tracked paths |
Five status entries have no filtered semantic diff and differ only by working
tree line endings:
- `src/AcDream.App/Rendering/Scene/RenderProjectionRecordFactory.cs`
- `src/AcDream.App/Rendering/Scene/RenderSceneContracts.cs`
- `src/AcDream.Core/Physics/ShadowPartBox.cs`
- `src/AcDream.Core/World/MeshRef.cs`
- `src/AcDream.Core/World/WorldEntity.cs`
`src/AcDream.App/Streaming/LandblockBuildFactory.cs` removes one blank line
only. Those six paths are excluded from the semantic checkpoint and left
untouched.
## Complete semantic classification
### Plan and documentation
- `docs/plans/2026-09-01-campaign-overhaul-world-solidity.md` is the new OH
execution plan.
- `docs/plans/2026-08-30-campaign-fw-frame-walk.md` records the accepted
`b8befded` allocation closeout and links to OH.
- `docs/architecture/worldbuilder-inventory.md` mixes candidate assertions
about recipe 7, whole-mesh leaves, and reconstructed render-shadow
membership. Those statements are evidence to review, not closed truth.
- `docs/launch-options.md` documents cathedral probes, but the dirty version
omits `ACDREAM_PROBE_FACILITY_STAIRS` and the behavior-changing
`ACDREAM_PROBE_CATHEDRAL_SKIP_PUNCH`. It stays with diagnostic quarantine.
### Prepared-content recipe 7 candidate
This coherent candidate carries the authored DrawingBSP root sphere into
prepared GfxObj records and requires one explicit full rebuild from bake
recipe 6 to 7:
- `src/AcDream.Content/MeshExtractor.cs`
- `src/AcDream.Content/Pak/PakFormat.cs`
- `src/AcDream.Launcher.Core/Installation/ContentMigrationCatalog.cs`
- `src/AcDream.Launcher.Core/Installation/LauncherInstallRecordStore.cs`
- `tests/AcDream.Content.Tests/MeshExtractorSolidFaceExtractionTests.cs`
- `tests/AcDream.Content.Tests/InstalledPreparedCollisionCatalogTests.cs`
- `tests/AcDream.Launcher.Core.Tests/Installation/ContentMigrationCatalogTests.cs`
This is not yet an accepted OH mechanism. OH2/OH3 must decide which authored
bounds and graph owner retail actually uses.
### Independent lighting-review candidate
This group removes last-frame drawable-cell filtering and selects from every
resident light:
- `src/AcDream.Core/Lighting/LightManager.cs`
- `src/AcDream.App/Rendering/WorldRenderFrameBuilder.cs`
- `tests/AcDream.Core.Tests/Lighting/LightManagerTests.cs`
- `tests/AcDream.App.Tests/Rendering/WorldRenderFrameBuilderTests.cs`
It is independent of OH0 and is not acceptance-proven. The parallel retail
review found that retail separates a seven-light dynamic pool from a separate
static bake, inserts the viewer light first, and derives candidates from the
current EnvCell plus authored `VisibleCells`/`stab_list`. OH must keep this
group quarantined unless a later world-ownership slice proves a dependency.
### Exact portal depth-state port candidate
This atomic group replaces stencil mark/write plus bias with one
ALWAYS/write/no-stencil pass and removes the bias shader/tests:
- `src/AcDream.App/Rendering/Gpu/GpuPipelineDescription.cs`
- `src/AcDream.App/Rendering/PortalDepthMaskRenderer.cs`
- `src/AcDream.App/Rendering/PortalDepthMaskRenderer.Rhi.cs`
- `src/AcDream.App/Rendering/Shaders/portal_depth.vert`
- `src/AcDream.App/Rendering/Shaders/spv/portal_depth.vert.spv`
- `src/AcDream.App/Rendering/Shaders/spv/shaders.manifest.json`
- deleted `tests/AcDream.App.Tests/Rendering/Issue129PunchBiasTests.cs`
- untracked `tests/AcDream.App.Tests/Rendering/PortalDepthMaskRetailStateTests.cs`
The GPU state may match the isolated retail call, but activating it before
the exact painter interleave exists removes the accepted #117 safeguard.
Therefore this is preserved as an indivisible candidate, not accepted output.
### Walk-owned exit-seal view candidate
The following changes borrow planes from exact walk clip slots and stamp exit
seals per captured flood view rather than the legacy assembly/no-clip
fallback:
- `src/AcDream.App/Rendering/ClipFrame.cs`
- portions of `src/AcDream.App/Rendering/RetailPViewPassExecutor.cs`
- portions of `src/AcDream.App/Rendering/RetailPViewRenderer.cs`
- portions of `src/AcDream.App/Rendering/Walk/WalkFrameDriver.cs`
- `tests/AcDream.App.Tests/Rendering/ClipFrameLayoutTests.cs`
- portions of `tests/AcDream.App.Tests/Rendering/Walk/WalkFrameDriverTests.cs`
Several of those files also contain unrelated behavior and diagnostics, so
future OH work must split by hunk rather than treating the files as one owner.
### Reconstructed static/dynamic membership candidate
This group rebuilds static render-cell membership from visual bounds, buckets
dynamics by physics CELLARRAY, inherits equipped-child root cells, and removes
the static outdoor prune:
- `src/AcDream.App/Composition/FrameRootComposition.cs`
- portions of `src/AcDream.App/Rendering/Walk/WalkProductionWorldData.cs`
- `src/AcDream.Core/Physics/CellTransit.cs`
- `src/AcDream.Core/Physics/ShadowObjectRegistry.cs`
- `src/AcDream.Core/Physics/ShadowShapeBuilder.cs`
- `tests/AcDream.App.Tests/Rendering/Issue177StairDescentCameraFloodTests.cs`
- `tests/AcDream.Core.Tests/Physics/CellTransitFindTransitCellsBoxTests.cs`
- portions of `tests/AcDream.App.Tests/Rendering/Walk/WalkProductionWorldDataTests.cs`
This is explicitly reconstruction evidence rather than the intended OH3
architecture: `WalkProductionWorldData` is a competing App-owned world model,
and the `CellTransit` prune removal also changes collision membership. The
portal-less building-shell fallback from anchor cell to landscape-position
cell is a distinct behavior inside the same production/test files and must be
reviewed separately.
### Built-mesh, part-stamp, and shell-stamp candidate
This group changes admitted portal-view meshes to coarse sphere admission plus
whole-mesh slot 0, adds per-part stamps and a local-player bypass, and rearms
shell/part stamps at a mid-frame boundary:
- portions of `src/AcDream.App/Rendering/Wb/WbDrawDispatcher.WalkClassify.cs`
- portions of `src/AcDream.App/Rendering/Walk/WalkFrameDriver.cs`
- portions of `src/AcDream.App/Rendering/RetailPViewPassExecutor.WalkLeaf.cs`
- `tests/AcDream.App.Tests/Rendering/Walk/WalkProductionWorldConformanceTests.cs`
- portions of `tests/AcDream.App.Tests/Rendering/Walk/WalkStaticStreamPopulatorTests.cs`
- portions of `tests/AcDream.App.Tests/Rendering/Walk/WalkFrameDriverTests.cs`
This reverses the mechanism in accepted commit `11e68aad`; it is high-risk
until OH1 arbitrates retail's built-mesh versus non-built-mesh branches and
the retail oracle proves the leaf order.
### Diagnostic-only apparatus
- `src/AcDream.App/Rendering/Walk/WalkPView.cs`
- `src/AcDream.App/Rendering/Wb/WbDrawDispatcher.OrderedStream.cs`
- `src/AcDream.App/Rendering/Walk/WalkStaticStreamPopulator.cs`
- untracked `src/AcDream.App/Rendering/Wb/WbDrawDispatcher.FacilityStairProbe.cs`
- `tools/A8CellAudit/Program.cs`
The Facility probe partial is a compile dependency of calls in the other
three App files and must travel with them. `A8CellAudit` mixes DrawingBSP
audits with cell/setup diagnostics; it remains evidence tooling.
`src/AcDream.Core/Rendering/RenderingDiagnostics.cs` and portions of
`WalkFrameDriver`, both pass executors, `RetailPViewRenderer`,
`WalkProductionWorldData`, and `WbDrawDispatcher.WalkClassify` mix print-only
traces with hard-coded cathedral carrier suppressions and skip switches. They
are preserved only as quarantined investigation apparatus and are scheduled
for removal in OH10.
## High-risk facts carried into OH1
1. No dirty behavioral change is acceptance-proven.
2. Whole-mesh slot-0 behavior reverses accepted `11e68aad`.
3. The one-pass far-Z punch removes #117's guard before exact painter
interleave is present.
4. Static membership is reconstructed from AABBs in App, matching the
duplicate-owner problem OH3 is meant to eliminate.
5. The `CellTransit` outdoor-prune change affects collision as well as render
registration.
6. Dirty architecture documentation overstates unreviewed candidates as
shipped truth.
## Behavior-changing diagnostic flags
The following variables were checked at Process, User, and Machine scopes.
All were absent at OH0, and every implementation tests for the exact string
`"1"` or defaults a requested cell ID to zero. Therefore no probe is enabled
in a normal launch from this environment.
| Variable | Kind | OH0 value |
|---|---|---|
| `ACDREAM_PROBE_CATHEDRAL_SKIP_PUNCH` | suppresses punch behavior | unset |
| `ACDREAM_PROBE_CATHEDRAL_SKIP_SEALS` | suppresses exit seals | unset |
| `ACDREAM_PROBE_CATHEDRAL_SKIP_CELL_SHELLS` | suppresses cell shells | unset |
| `ACDREAM_PROBE_CATHEDRAL_SKIP_SOUTH_LOOKIN_SHELLS` | scene-specific shell suppression | unset |
| `ACDREAM_PROBE_CATHEDRAL_SKIP_LOOKIN_SHELL` | requested-cell shell suppression | unset |
| `ACDREAM_PROBE_CATHEDRAL_SKIP_SOUTH_BUILDING_SHELL` | scene-specific building suppression | unset |
| `ACDREAM_PROBE_CATHEDRAL_SHELL_ORDER` | print-only shell-order trace | unset |
Additional Facility trace variables are diagnostic output controls. They do
not alter the accepted draw path, but they remain quarantined with the
behavior probes until OH10 cleanup.
## Build and focused automated baseline
All commands ran from the binding worktree against the uncommitted state
classified above.
| Gate | Result |
|---|---|
| `dotnet build AcDream.slnx -c Release --nologo` | PASS — 0 warnings, 0 errors, 23.29 s |
| App walk/depth/frame focused filter | PASS — 272 passed, 1 skipped, 0 failed |
| Content geometry focused filter | PASS — 12 passed, 0 skipped, 0 failed |
| Core membership/light focused filter | PASS — 33 passed, 0 skipped, 0 failed |
| Launcher migration focused filter | PASS — 2 passed, 0 skipped, 0 failed |
The App filter included `Rendering.Walk`, `PortalDepthMask`,
`Issue177StairDescentCameraFloodTests`, `ClipFrameLayoutTests`, and
`WorldRenderFrameBuilderTests`. Green tests prove the current candidates are
internally consistent; they do not prove retail parity or visual acceptance.
## Installed source and prepared-package identity
Source directory: `C:\Users\erikn\Documents\Asheron's Call`
| Artifact | Bytes | SHA-256 |
|---|---:|---|
| `client_portal.dat` | 926,941,184 | `DC6E500BA22E6B186DB7171E3F3345238B6444C85D798ADC85E550973B8D12E4` |
| `client_cell_1.dat` | 348,127,232 | `6DB0ABF00FBCEED62C3F1EE842EE7C1F423D732BED77A5B7C102EE89A52AB99E` |
| `client_highres.dat` | 133,169,152 | `503E0828D14F2F9CCBC31431E1055AC188464BF4B499DE37F4C3D5B2D9F3E727` |
| `client_local_English.dat` | 1,048,576 | `E85C820280C88FAC7DF6C8043F5E24596E9C8774193AF4123D756546F78FB2BB` |
| `acdream.pak` | 597,144,496 | `0AD2A24C00579FC40E93E5C73FF800FCE587665D831AACD11DEACBCC59A84D6D` |
| `acdream.recipe6.pak` | 597,229,424 | `37BC0EA1778F899AF9E3B2397937D373F69D615B15D3E32041BF389D93B624BF` |
Active `acdream.pak` header:
| Field | Value |
|---|---:|
| Magic | `0x4B504341` |
| Format | `2` |
| Portal iteration | `2072` |
| Cell iteration | `982` |
| HighRes iteration | `497` |
| Language iteration | `994` |
| TOC offset | `543435712` |
| TOC count | `2237866` |
| Bake tool version | `7` |
Compiled shader manifest SHA-256:
`65AE59DA995B9FBAA997F50A12B07FEEBB6CDA4121C881C5921BFF9ACE752CCF`.
## Pre-overhaul file hash manifest
These hashes capture every status path before OH0 added this document. A
deleted path is represented by the parent commit plus the explicit deletion.
| Path | Status | Bytes | SHA-256 |
|---|---|---:|---|
| `docs/architecture/worldbuilder-inventory.md` | ` M` | 40809 | `275EACBB7AF5C6837558DE95ED0C973038E83E89A2EA1B4B10FCCD11AAC7378B` |
| `docs/launch-options.md` | ` M` | 89617 | `1DEF166EF74A82A9FF4151FF3AB95A46DB03F951BDE44CBCF0415F3D06DE85ED` |
| `docs/plans/2026-08-30-campaign-fw-frame-walk.md` | ` M` | 43730 | `988DACAC01E2367DBBCFD49DC1F146E8EDE2CE96892BCB9C25874D6A752B50F6` |
| `src/AcDream.App/Composition/FrameRootComposition.cs` | ` M` | 40619 | `55BB45148909191BBF4B5EDACAB6273330BCD2AE37B60F4370426A3C14138146` |
| `src/AcDream.App/Rendering/ClipFrame.cs` | ` M` | 14769 | `EA3C52E7FCFA51E4F9C21CDC33D89215F9E9768332DD88E831265E738E06BB01` |
| `src/AcDream.App/Rendering/Gpu/GpuPipelineDescription.cs` | ` M` | 16982 | `108661215FE9DFF414ABFDB050985C3A0946A38EFA509ABB2A93443F8CB06A30` |
| `src/AcDream.App/Rendering/PortalDepthMaskRenderer.Rhi.cs` | ` M` | 8820 | `93B559C8D30773ABB9E7DCA0884A0E6A37A9E16BA9AE13FDA1D4354E68D91022` |
| `src/AcDream.App/Rendering/PortalDepthMaskRenderer.cs` | ` M` | 5070 | `D9C8D245C5CC7CFC96762AAEA28F7D74B3F1B0CFF7C7BA661C5FEF8806CBC62D` |
| `src/AcDream.App/Rendering/RetailPViewPassExecutor.WalkLeaf.cs` | ` M` | 12773 | `81DE87E5687DD79901DC72714BBF21FE5295AEE1E0A4093BCF5A3B91AAAA95DB` |
| `src/AcDream.App/Rendering/RetailPViewPassExecutor.cs` | ` M` | 19048 | `91B688E4ADE207FF016441979537B71C0B4AE6D5C4BF055EC0E0B0E6A6961CCA` |
| `src/AcDream.App/Rendering/RetailPViewRenderer.cs` | ` M` | 41456 | `30193DE518BF3BF1312AC2E1A34CA9AF76FF38E0B9A0E848F15A6628C2A95920` |
| `src/AcDream.App/Rendering/Scene/RenderProjectionRecordFactory.cs` | ` M` | 5342 | `A0C28300F80528BBD63FF034139DB7E353146B27E5782AEAFAF882AA244DD880` |
| `src/AcDream.App/Rendering/Scene/RenderSceneContracts.cs` | ` M` | 21927 | `2D043913905BB45F1E3E24290CEDA96678AAF6EEE89FED17FA8586DFBAA27D8A` |
| `src/AcDream.App/Rendering/Shaders/portal_depth.vert` | ` M` | 2632 | `004B91F8891EF63C3E9051E098F7FD5251537A8FB756FE647C22F5A729561EAE` |
| `src/AcDream.App/Rendering/Shaders/spv/portal_depth.vert.spv` | ` M` | 1900 | `4AC1C452E7AC0D08A32F67FB03F21229AF2D1605BAA81F407240A3626251DFD7` |
| `src/AcDream.App/Rendering/Shaders/spv/shaders.manifest.json` | ` M` | 11066 | `65AE59DA995B9FBAA997F50A12B07FEEBB6CDA4121C881C5921BFF9ACE752CCF` |
| `src/AcDream.App/Rendering/Walk/WalkFrameDriver.cs` | ` M` | 80236 | `9E82A07B0CA77947657221566625ABB6305E476D3EA436E95F8F5006AD6C6F3C` |
| `src/AcDream.App/Rendering/Walk/WalkPView.cs` | ` M` | 26293 | `565FC89767A6910EAB4E81785EB5CCF1D2F272FA37FD77BDB885F9D8135446B7` |
| `src/AcDream.App/Rendering/Walk/WalkProductionWorldData.cs` | ` M` | 34723 | `86F2A43657E884BAE32D166A5C70084559C6D6A900810FD0DD2C76F1D7AC4CF1` |
| `src/AcDream.App/Rendering/Walk/WalkStaticStreamPopulator.cs` | ` M` | 8896 | `FEA240901A82FCBE6B9B2DAED19DCDC985BF460E771F7820D8601F1136043F82` |
| `src/AcDream.App/Rendering/Wb/WbDrawDispatcher.OrderedStream.cs` | ` M` | 31069 | `355FE62DBAA8988E69BD2A468DE44D7A5AE799D0E0649559C885900C7F6F0824` |
| `src/AcDream.App/Rendering/Wb/WbDrawDispatcher.WalkClassify.cs` | ` M` | 41357 | `13A669521266D49396A8C8F3D34DA2064EDBE2BD0613F5112C0D4BCCDE404D87` |
| `src/AcDream.App/Rendering/WorldRenderFrameBuilder.cs` | ` M` | 27021 | `A34C66BEBFF07538EC55BCC65454BEC61811FB5F7E724C749D8351A25741E585` |
| `src/AcDream.App/Streaming/LandblockBuildFactory.cs` | ` M` | 37350 | `8BDDB5A07C32BB083475836A8C3F782F980E30E2D532F214A8A9AA5E80735C48` |
| `src/AcDream.Content/MeshExtractor.cs` | ` M` | 72211 | `5453D06062416A2B04FFC900715C76BDA3E22CD36B68F30514D28FA5E0364C99` |
| `src/AcDream.Content/Pak/PakFormat.cs` | ` M` | 8334 | `F260AB6742A576DDB84AF11A75089AD7645C9CF180456B341C9ECA6B07489757` |
| `src/AcDream.Core/Lighting/LightManager.cs` | ` M` | 29182 | `F58998E7AAE1CC7C2E4D0E8EA76F23E3CBFCE9CE71B55104BD7D6671DCA60A26` |
| `src/AcDream.Core/Physics/CellTransit.cs` | ` M` | 76728 | `74A4DE885A309AA5060DB130B0C13706C93A8B1A51C4C0675D91A777EA85ED91` |
| `src/AcDream.Core/Physics/ShadowObjectRegistry.cs` | ` M` | 115614 | `D297D2CE83EF2341A438E2F697C63A0C27A1C6E4FAE62E18A904D9CB88CA57E7` |
| `src/AcDream.Core/Physics/ShadowPartBox.cs` | ` M` | 8694 | `49F7A142CE8A1AE5EEBCB33E31B81421F84539D2CAD212D75ED5E36829190DF3` |
| `src/AcDream.Core/Physics/ShadowShapeBuilder.cs` | ` M` | 23478 | `9FA4EE057C09B0BF0BBEFA618F1A9768F22A7EE99FF55596B334E32C55EA966F` |
| `src/AcDream.Core/Rendering/RenderingDiagnostics.cs` | ` M` | 37557 | `9A251F8785F7F4256E5D30408178A7B4365B240FF01196E0F3E62C22AC76EAE5` |
| `src/AcDream.Core/World/MeshRef.cs` | ` M` | 1778 | `9349926D73AEDC97A95726FAC154B84FC6D4EBF2DB6DD64BE50014291428A221` |
| `src/AcDream.Core/World/WorldEntity.cs` | ` M` | 14597 | `81922AAA930B336ECC4167B7B342D9B65336EEB39ECBF61C1607ED530423CF57` |
| `src/AcDream.Launcher.Core/Installation/ContentMigrationCatalog.cs` | ` M` | 4883 | `5C2CC4B1D6BF3BD6D3BE837E405E969C27235EC3845A449D97C50784E9AB21F4` |
| `src/AcDream.Launcher.Core/Installation/LauncherInstallRecordStore.cs` | ` M` | 24440 | `787360E3D426DE24BB1CFE00CD6FBC69B9AFD86E18E161412EEBFB14861C6990` |
| `tests/AcDream.App.Tests/Rendering/ClipFrameLayoutTests.cs` | ` M` | 8033 | `9C340D45BB703D1107B34C9BE40162D9E6C69C209E326DEA3744C2F870C2B040` |
| `tests/AcDream.App.Tests/Rendering/Issue129PunchBiasTests.cs` | ` D` | deleted | n/a |
| `tests/AcDream.App.Tests/Rendering/Issue177StairDescentCameraFloodTests.cs` | ` M` | 36493 | `21AC79E23320F73E377368AB63D2701E05C31708223AFF29D9DCF2C504A99EB9` |
| `tests/AcDream.App.Tests/Rendering/Walk/WalkFrameDriverTests.cs` | ` M` | 55621 | `A68994C420D5F1099C5F86D9FDB2F194B5665A39874179B137CD6AA8504903FF` |
| `tests/AcDream.App.Tests/Rendering/Walk/WalkProductionWorldConformanceTests.cs` | ` M` | 19850 | `F73CC8F494E568133E1C1354D52EE85252C575B26C98948F65BAF5FF522CA57C` |
| `tests/AcDream.App.Tests/Rendering/Walk/WalkProductionWorldDataTests.cs` | ` M` | 9231 | `1FA6B591865C551619FC392F3B8FCD710299094529A8109355484EA3271A5457` |
| `tests/AcDream.App.Tests/Rendering/Walk/WalkStaticStreamPopulatorTests.cs` | ` M` | 36223 | `4A08C37591C1F65A1142B6F8D9361EA2BC70FBE7C77519F17F758418694DF01B` |
| `tests/AcDream.App.Tests/Rendering/WorldRenderFrameBuilderTests.cs` | ` M` | 22735 | `450BF823EAD6D825CDA3AD584634C704F721564F139C08B5EEB96A2228965ED7` |
| `tests/AcDream.Content.Tests/InstalledPreparedCollisionCatalogTests.cs` | ` M` | 4208 | `0549B7C75651B4E3DF1469ED5B451DDA16B71710950A1EC252052419E3723903` |
| `tests/AcDream.Content.Tests/MeshExtractorSolidFaceExtractionTests.cs` | ` M` | 20309 | `48D45135ACED92EFA57982E432CECE7B9ADE6AA50E1B12F0E36DFF347E2EDC35` |
| `tests/AcDream.Core.Tests/Lighting/LightManagerTests.cs` | ` M` | 26623 | `DB009E9DE99AA471C1C8425C3056ED02DEB606B54109A2E76761C5F5A684BD24` |
| `tests/AcDream.Core.Tests/Physics/CellTransitFindTransitCellsBoxTests.cs` | ` M` | 25854 | `09D32BDC9C3AE6F6235D32C560AEE3CA93734AB1D92597D4BD067E84AB5A86DD` |
| `tests/AcDream.Launcher.Core.Tests/Installation/ContentMigrationCatalogTests.cs` | ` M` | 1112 | `69D38F40488702EBD2A6AB87A2B72D992CB07819A9125F13FEEEA31385D34964` |
| `tools/A8CellAudit/Program.cs` | ` M` | 39282 | `D453EFBB7F1D70A3A7D866EDD7AEB166AEA00506AAAD4DB290A431A0BD13CC02` |
| `docs/plans/2026-09-01-campaign-overhaul-world-solidity.md` | `??` | 66337 | `EDFB74CB3600B2DFE00FA789636674A1553C183FFA113115B16D72195B0CDB6D` |
| `src/AcDream.App/Rendering/Wb/WbDrawDispatcher.FacilityStairProbe.cs` | `??` | 6536 | `5D12468429869A07606B3FB9AFE258C4007F85AFB3481C16D0F4882984A29552` |
| `tests/AcDream.App.Tests/Rendering/PortalDepthMaskRetailStateTests.cs` | `??` | 2537 | `2175E30A42F856DD9AE77C8308120386633A0357654F37E56B0DB7E106DD0C9A` |
## Recovery procedure
1. Never use `reset --hard`, `checkout --`, or `clean` against this worktree.
2. To inspect the historical accepted state, use detached/read-only inspection
of `b8befded` or `e880860291a79e0cb20454710567d86ad8731675` in a separate
worktree; do not overwrite this checkout.
3. To restore the complete pre-overhaul investigation state, revert later OH
commits in reverse order, stopping at checkpoint `b3b7d922`.
4. To undo the checkpoint itself while retaining history, use
`git revert b3b7d922`; do not rewrite history.
5. The six excluded normalization/blank-line paths may remain dirty. Compare
them with `git diff --ignore-space-at-eol -- <path>` before treating them as
content.
6. Validate any restored state with the DAT/package/shader identities above,
then rerun the Release build and the four focused gate groups.
## OH0 review disposition
- Every pre-existing status path is accounted for.
- Both required history anchors are recorded.
- No behavior probe is silently enabled by its default or current
environment.
- No unrelated/user-owned semantic change was found.
- Production behavior was not edited during OH0.
- The classified state is safe to preserve as an explicitly unaccepted
recovery checkpoint.