docs(overhaul): contract S4 c3b deletions
This commit is contained in:
parent
b1d33c9b88
commit
a0523e6057
3 changed files with 144 additions and 2 deletions
|
|
@ -679,6 +679,7 @@ Update immediately when a slice changes state. Chat is not the ledger.
|
||||||
| S4-c2 owner repair | **STOPPED UNLANDED 2026-09-04** — owner-authorized implementation `a094bf2b7` is clean in `s4-c2-impl`; packet §15 is the review record | G3/G4 UNPASSED | The repaired renderer behavior passed the retail lens: exact whole-leaf pass membership, `0x08`/`0x09` CLIP, row-3 override, blend/reference/depth state, sentinel separation, detail state, rollback, allocation, AP-238/AP-240. The lens still returned FAIL: commit body omitted the required per-mutation first failures, packet mutation 5 names the wrong first assertion/address, and four source/test comments are stale. Sequential production lens therefore did not run. Correcting those items is a post-review fourth repair, which §14 does not authorize. Nothing landed or graphically gated; resume only by explicit owner process decision. |
|
| S4-c2 owner repair | **STOPPED UNLANDED 2026-09-04** — owner-authorized implementation `a094bf2b7` is clean in `s4-c2-impl`; packet §15 is the review record | G3/G4 UNPASSED | The repaired renderer behavior passed the retail lens: exact whole-leaf pass membership, `0x08`/`0x09` CLIP, row-3 override, blend/reference/depth state, sentinel separation, detail state, rollback, allocation, AP-238/AP-240. The lens still returned FAIL: commit body omitted the required per-mutation first failures, packet mutation 5 names the wrong first assertion/address, and four source/test comments are stale. Sequential production lens therefore did not run. Correcting those items is a post-review fourth repair, which §14 does not authorize. Nothing landed or graphically gated; resume only by explicit owner process decision. |
|
||||||
| S4-c2 attempts 1–5 | **ATTEMPT 1/5 CONSUMED; ATTEMPT 2/5 PASSED AND LANDED 2026-09-04** — reviewed implementation `daaeab0ba`; campaign stack `89f1e2676` → `9ccb61a8e` → `0aa166aa0` → `252886e84`; packet §17 | G3/G4 UNPASSED | Sequential retail/evidence then production/gate-honesty PASS. Fresh: Release 0W/0E; shader 32/32; affected 37/37; real allocation 2/2 at 0 B; production 239/239. Official no-retry hermetic 16,734/1: sole unchanged global `Console.Out` capture race, exact theory 2/2 isolated. InstalledDat 255/10 documented/1. Validation routes `selfgate-20260904-115818-s4c2-landed-route` and `selfgate-20260904-120025-s4c2-landed-g3b` PASS provisional. First soak failed on known #461/#462; retry and S4-c1 control both 9/9 graceful; stationary averages CPU p95 −0.01 ms, GPU p95 +0.16 ms, alloc p50 +1.2 KiB, update p95 −0.12 ms. Three attempts remain unused. |
|
| S4-c2 attempts 1–5 | **ATTEMPT 1/5 CONSUMED; ATTEMPT 2/5 PASSED AND LANDED 2026-09-04** — reviewed implementation `daaeab0ba`; campaign stack `89f1e2676` → `9ccb61a8e` → `0aa166aa0` → `252886e84`; packet §17 | G3/G4 UNPASSED | Sequential retail/evidence then production/gate-honesty PASS. Fresh: Release 0W/0E; shader 32/32; affected 37/37; real allocation 2/2 at 0 B; production 239/239. Official no-retry hermetic 16,734/1: sole unchanged global `Console.Out` capture race, exact theory 2/2 isolated. InstalledDat 255/10 documented/1. Validation routes `selfgate-20260904-115818-s4c2-landed-route` and `selfgate-20260904-120025-s4c2-landed-g3b` PASS provisional. First soak failed on known #461/#462; retry and S4-c1 control both 9/9 graceful; stationary averages CPU p95 −0.01 ms, GPU p95 +0.16 ms, alloc p50 +1.2 KiB, update p95 −0.12 ms. Three attempts remain unused. |
|
||||||
| S4-c3a | **LANDED 2026-09-04 after the owner-authorized §21 evidence exception.** Reviewed scratch stack `44e2bc227b` → `b6bf6c131` → `eea5793d2` → `14397b14c` → `359061b82` → `255194e90` → `9cfddf301`; campaign cherry-picks `a86ec73ec` → `8e0c6fb14` → `01674bcc7` → `8bd75ba31` → `b6b015604` → `316193043` → `67c76026e`. The earlier stop remains in history at `06b986622`. | G3/G4 UNPASSED | Final retail lens PASS; production behavior/lifecycle/allocation/scope clean. The narrow independent gate-honesty re-review PASS reproduced the exact first failure (AP-table-boundary `Assert.True`, `rowIndex=-1`, before `Assert.Single`), restored AP-241 byte-identically, and passed the pin 1/1. Fresh campaign: Release 0W/0E; focused class lane 96/96; no-surface 1/1; AP pin 1/1; real allocation 2/2 at 0 B; shader 32/32; `git diff --check` clean. No client launched. NEXT: write c3b's deletion-only contract from the landed code; G3 stays locked until c3b lands. |
|
| S4-c3a | **LANDED 2026-09-04 after the owner-authorized §21 evidence exception.** Reviewed scratch stack `44e2bc227b` → `b6bf6c131` → `eea5793d2` → `14397b14c` → `359061b82` → `255194e90` → `9cfddf301`; campaign cherry-picks `a86ec73ec` → `8e0c6fb14` → `01674bcc7` → `8bd75ba31` → `b6b015604` → `316193043` → `67c76026e`. The earlier stop remains in history at `06b986622`. | G3/G4 UNPASSED | Final retail lens PASS; production behavior/lifecycle/allocation/scope clean. The narrow independent gate-honesty re-review PASS reproduced the exact first failure (AP-table-boundary `Assert.True`, `rowIndex=-1`, before `Assert.Single`), restored AP-241 byte-identically, and passed the pin 1/1. Fresh campaign: Release 0W/0E; focused class lane 96/96; no-surface 1/1; AP pin 1/1; real allocation 2/2 at 0 B; shader 32/32; `git diff --check` clean. No client launched. NEXT: write c3b's deletion-only contract from the landed code; G3 stays locked until c3b lands. |
|
||||||
|
| S4-c3b | **CONTRACT WRITTEN — packet §22; implementation pending.** Delete only the superseded classic-group `LocalSortCenters`/`CachedBatch.LocalSortCenter` sidecar and the dead alpha camera-parameter/digest chain. Preserve c3a's live per-cell/particle CYpt keys, opaque `SortDistance`, building/private/portal distances, two FIFO lists, all state/barriers, and AP/AD rows. Correct/pin the three `AlphaFlushCounts_*` reasons; verify the old bias/stencil/distance-sort paths stay absent. | G3/G4 UNPASSED | One Sonnet implementation, then sequential retail/deletion and production/gate-honesty lenses. Dual PASS lands the deletion-only chunk and unlocks G3. No client before landing. |
|
||||||
| S5 | — | G4 | fill |
|
| S5 | — | G4 | fill |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -159,10 +159,12 @@ memory −17.7 MiB. G3/G4 remain unpassed.
|
||||||
|
|
||||||
## 4. After chunk 2
|
## 4. After chunk 2
|
||||||
|
|
||||||
1. **S4-c3a is LANDED; c3b is unlocked.** Packet §21 records the owner's
|
1. **S4-c3a is LANDED; c3b is contracted in packet §22.** Packet §21 records the owner's
|
||||||
evidence-only exception, the exact mutation correction, narrow independent
|
evidence-only exception, the exact mutation correction, narrow independent
|
||||||
PASS, campaign commit mapping, and fresh build/focused gates. Write c3b's
|
PASS, campaign commit mapping, and fresh build/focused gates. Write c3b's
|
||||||
deletion-only contract from the landed code. Do not start G3 until c3b lands.
|
deletion-only contract from the landed code. §22 deletes only dead grouped
|
||||||
|
sort-center/camera sidecars and preserves the live c3a keys. Do not start G3
|
||||||
|
until c3b lands.
|
||||||
2. **G3 — S4's owner gate:** the lead runs `route-g3.txt` (13 matrix shots),
|
2. **G3 — S4's owner gate:** the lead runs `route-g3.txt` (13 matrix shots),
|
||||||
`route-g3b.txt` (the capture poses; pose 15 now outdoors), `route-g3c.txt`
|
`route-g3b.txt` (the capture poses; pose 15 now outdoors), `route-g3c.txt`
|
||||||
(Nanto ×3, 300 s waits) with `pwsh -File tools/overhaul-selfgate/run-selfgate.ps1 -Label <l> -Route <file>`
|
(Nanto ×3, 300 s waits) with `pwsh -File tools/overhaul-selfgate/run-selfgate.ps1 -Label <l> -Route <file>`
|
||||||
|
|
|
||||||
|
|
@ -1851,3 +1851,142 @@ allocation pins 2/2 at 0 B; shader/manifest/SPIR-V lane 32/32; `git diff
|
||||||
--check` clean. The campaign `src`/`tests` tree is byte-identical to reviewed
|
--check` clean. The campaign `src`/`tests` tree is byte-identical to reviewed
|
||||||
scratch commit `9cfddf301`. No graphical client was launched. c3b is now
|
scratch commit `9cfddf301`. No graphical client was launched. c3b is now
|
||||||
unlocked; G3 remains locked until the deletion-only c3b chunk lands.
|
unlocked; G3 remains locked until the deletion-only c3b chunk lands.
|
||||||
|
|
||||||
|
## 22. S4-c3b contract — delete the superseded alpha-order sidecars (lead, 2026-09-04)
|
||||||
|
|
||||||
|
### 22.1 Retail and landed-code boundary
|
||||||
|
|
||||||
|
This chunk changes no retail-visible renderer behavior. Named retail
|
||||||
|
`D3DPolyRender::AddMeshToAlphaList @0x0059C230` accepts mesh/subset/surface and
|
||||||
|
list-state flags but no camera or distance argument; it appends into one of two
|
||||||
|
fixed arrays. `FlushAlphaList @0x0059D2E0` replays those arrays by index.
|
||||||
|
Retail's only relevant distance step is earlier and per cell:
|
||||||
|
`CShadowPart::insertion_sort @0x006B5130..0x006B519D`, before the resulting
|
||||||
|
parts call `DrawMesh`. The paired bytes and the named pseudo-C agree on those
|
||||||
|
facts; §§17–21 contain the earlier byte/review record.
|
||||||
|
|
||||||
|
Landed c3a now owns the needed key on
|
||||||
|
`WalkClassifiedBatch.LocalSortCenter`/`SortDistanceSq` and on the prepared
|
||||||
|
particle record before the two FIFO lists see it. A separate classic grouped
|
||||||
|
dispatcher sidecar survives only as dead storage and diagnostic hash input:
|
||||||
|
`CachedBatch.LocalSortCenter`, `InstanceGroup.LocalSortCenters`, and their
|
||||||
|
append/cache plumbing. Two additional tombstones pass a camera position into
|
||||||
|
`DeferTransparentGroups` and `BuildTransparentSubmissionDigest`, then discard
|
||||||
|
it. None feeds a draw, route, list choice, queue record, flush, or barrier.
|
||||||
|
|
||||||
|
### 22.2 D1 — remove the dead grouped sort-center sidecar
|
||||||
|
|
||||||
|
Delete `CachedBatch.LocalSortCenter` and
|
||||||
|
`InstanceGroup.LocalSortCenters`, including constructor arguments, cache-hit
|
||||||
|
delegate/plumbing, append parameters, per-frame clear/release calls, and the
|
||||||
|
unused field in `AddSubmissionInstance`'s diagnostic digest. The resulting
|
||||||
|
classic grouped path retains matrices, exact submission ordinal, clip slot,
|
||||||
|
lights, indoor/detail/opacity/selection state, and every material key.
|
||||||
|
|
||||||
|
This deletion must not touch these live retail keys:
|
||||||
|
|
||||||
|
- `ObjectRenderData.SortCenter`;
|
||||||
|
- `WalkClassifiedBatch.LocalSortCenter` and `SortDistanceSq`;
|
||||||
|
- `WalkStaticStreamPopulator`'s transformed authored-center calculation and
|
||||||
|
stable descending per-cell insertion sort;
|
||||||
|
- `ParticleRenderer`'s authored GfxObj sort center, prepared distance, and
|
||||||
|
object/particle merge;
|
||||||
|
- building-degrade `ViewerDistanceTo`, opaque `InstanceGroup.SortDistance`,
|
||||||
|
portal-flood distance, private-viewport sorting, or off-screen particle
|
||||||
|
ordering.
|
||||||
|
|
||||||
|
The `CurrentRenderDispatcherSubmission` digest deliberately stops hashing the
|
||||||
|
deleted non-rendered sidecar. That is diagnostic cleanup, not a world-render
|
||||||
|
change; submission order and every rendered field remain hashed.
|
||||||
|
|
||||||
|
### 22.3 D2 — remove the dead alpha camera-parameter chain
|
||||||
|
|
||||||
|
Remove `cameraWorldPosition` from
|
||||||
|
`DeferTransparentGroups`, `BuildTransparentSubmissionDigest`,
|
||||||
|
`CreateDispatcherSubmission`, `ObserveCurrentDispatcherSubmission`, and
|
||||||
|
`ObserveClassifiedDispatcherSubmission`, plus all callers/tests. No
|
||||||
|
`_ = cameraWorldPosition` tombstone may remain.
|
||||||
|
|
||||||
|
Keep the camera output from `BeginEntityDispatch`, the camera argument to
|
||||||
|
`PartitionInstanceGroups`, `InstanceGroup.SortDistance`, and
|
||||||
|
`CompareOpaqueSubmissionOrder`: that is the still-live opaque/private grouped
|
||||||
|
path and is outside the alpha deletion.
|
||||||
|
|
||||||
|
### 22.4 D3 — truth cleanup and explicit non-changes
|
||||||
|
|
||||||
|
The six `AlphaFlushCounts_*` rows remain evaluated KnownFailures. Their exact
|
||||||
|
three reasons are: (1) the replay world is content-empty; (2) AP-238 coalesces
|
||||||
|
EnvCell work to one `(cell,list)` token; (3) AP-239/AP-240 alter list
|
||||||
|
membership for the named ordinary-Wb cases. Remove any surviving broad
|
||||||
|
“per instance versus per subset” explanation; ordinary Wb and particle paths
|
||||||
|
otherwise append per real subset. The live `AlphaFlushSites_*` rows remain.
|
||||||
|
|
||||||
|
Static deletion verification must find no executable `RetailAlphaOrdering`,
|
||||||
|
`FlushFartherThan`, alpha-submit `viewerDistance`, portal punch depth bias,
|
||||||
|
`#129` eye-span cap, or stencil-mark pass. Do not delete generic RHI stencil
|
||||||
|
support, change `PortalDepthMaskRenderer`, touch shaders/SPIR-V, or change
|
||||||
|
AD-119/AP-238/AP-239/AP-240/AP-241/AP-242/AP-243. The historical mutation
|
||||||
|
comments that quote the deleted old API may remain when clearly past tense.
|
||||||
|
|
||||||
|
### 22.5 Required tests and mutation evidence
|
||||||
|
|
||||||
|
Extend the existing production-facing tests, not a surrogate implementation:
|
||||||
|
|
||||||
|
1. reflection/source shape proves `CachedBatch` and `InstanceGroup` have no
|
||||||
|
`LocalSortCenter(s)` sidecar while `WalkClassifiedBatch` still has
|
||||||
|
`LocalSortCenter` and `SortDistanceSq`;
|
||||||
|
2. reflection/source shape proves the five D2 methods have no dead camera
|
||||||
|
parameter and neither tombstone remains, while `PartitionInstanceGroups`
|
||||||
|
still accepts and uses its camera position for opaque `SortDistance`;
|
||||||
|
3. existing cache-hit composition, transparent submission-order digest,
|
||||||
|
group-clear, per-cell object order, particle merge, queue, allocation, and
|
||||||
|
shader/state pins remain green;
|
||||||
|
4. a source-truth pin keeps the three `AlphaFlushCounts_*` reasons and rejects
|
||||||
|
the false broad explanation;
|
||||||
|
5. a deletion pin rejects any production resurrection of
|
||||||
|
`RetailAlphaOrdering`, `FlushFartherThan`, or an alpha-submit
|
||||||
|
`viewerDistance`, without rejecting unrelated building/opaque/portal
|
||||||
|
distance owners.
|
||||||
|
|
||||||
|
Every new pin gets a real sabotage. At minimum, record the actual first
|
||||||
|
failure after independently restoring: (a) `InstanceGroup.LocalSortCenters`;
|
||||||
|
(b) `CachedBatch.LocalSortCenter`; (c) the discarded camera parameter/tombstone
|
||||||
|
on `DeferTransparentGroups`; (d) the discarded camera parameter on the
|
||||||
|
transparent digest; (e) the false broad count explanation; and (f) one deleted
|
||||||
|
alpha-order symbol. Restore each mutation exactly before the clean return.
|
||||||
|
|
||||||
|
### 22.6 Scope, gates, and review
|
||||||
|
|
||||||
|
Allowed production files:
|
||||||
|
`src/AcDream.App/Rendering/Wb/CachedBatch.cs`,
|
||||||
|
`WbDrawDispatcher.cs`, and comment-only cleanup in
|
||||||
|
`WbDrawDispatcher.WalkClassify.cs`. Tests may change only
|
||||||
|
`tests/AcDream.App.Tests/Rendering/Wb/InstanceGroupClearTests.cs`,
|
||||||
|
`tests/AcDream.App.Tests/Rendering/Walk/WalkStaticStreamPopulatorTests.cs`, and
|
||||||
|
the directly affected existing rendering test file if compile fallout requires
|
||||||
|
it. Documentation is limited to this packet,
|
||||||
|
`docs/architecture/worldbuilder-inventory.md`, and
|
||||||
|
`docs/architecture/acdream-architecture.md`. No register edit is expected; if
|
||||||
|
source truth disproves that, stop and return the fact instead of silently
|
||||||
|
changing scope.
|
||||||
|
|
||||||
|
Must not change queue/router/pipeline/list membership, capacity, flush/barrier,
|
||||||
|
particle preparation, per-cell sort/merge, package/content/RHI/shader state,
|
||||||
|
or graphical behavior. No client launch from the implementation/review
|
||||||
|
worktree.
|
||||||
|
|
||||||
|
Automated return: `git diff --check`; Release solution 0W/0E; focused Wb
|
||||||
|
group/cache/digest + walk per-cell/order + queue/particle/router suite; both
|
||||||
|
real production 0-B pins; shader/manifest/SPIR-V 32/32; hermetic lane; and
|
||||||
|
InstalledDat with exactly the documented global set plus the six retained
|
||||||
|
`AlphaFlushCounts_*`, no new failure. The implementer commits one bounded
|
||||||
|
change on a clean worktree and returns exact files, counts, and mutation-first-
|
||||||
|
failure text.
|
||||||
|
|
||||||
|
Sequential reviews: first, retail/deletion fidelity verifies the named decomp
|
||||||
|
and paired bytes, that only pre-append per-cell CYpt survives, and that every
|
||||||
|
live distance owner above was preserved. Second, production/gate honesty checks
|
||||||
|
call reachability, diagnostic-digest consequences, cache/reset/storage
|
||||||
|
lifecycle, allocation, allowed scope, every mutation claim, and all gate
|
||||||
|
counts. A failed lens gets one bounded fix contract; a third fix round stops
|
||||||
|
and is written up. Dual PASS lands c3b and unlocks G3.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue