diff --git a/docs/research/2026-09-01-overhaul/s5-consumers-material-closeout-packet.md b/docs/research/2026-09-01-overhaul/s5-consumers-material-closeout-packet.md index 32acc50d..e77c0f83 100644 --- a/docs/research/2026-09-01-overhaul/s5-consumers-material-closeout-packet.md +++ b/docs/research/2026-09-01-overhaul/s5-consumers-material-closeout-packet.md @@ -328,3 +328,35 @@ Independent mutation ledger (each mutation restored exactly before the next): `ApplyRetailView_UsesOwnerVisibilityAndInclusiveAuthoredDistance` first failed `Assert.True`, expected true / actual false, at `ParticleSystemTests.cs:519`. + +## 10. Sequential review 1 — retail lens and fix round 1 + +The retail lens found **no behavioral retail-fidelity defect**. It independently +matched the paired executable/PDB identity and bytes for +`ShouldDrawParticles`, `UpdateParticles`, both cell-family virtuals, the +previous-completed-frame transaction, the low-word discriminator, examination +bypass, x87 distance edges, AP-116, the exact landscape handoff, and unchanged +particle draw/queue/tick behavior. The lens returned FAIL on comment truth only: + +1. `ParticleVisibilityController.UseWorldView` still says an outdoor fallback + can publish the authoritative product, although S5-c1 deleted it. +2. `WalkFrameDriver.CopyVisibleCellsTo` still calls the diagnostics union the + complete `CObjCell::IsInView` answer and says particles, lights, and shadows + consume it. Particles now consume only the landscape half, EnvCell particle + eligibility is constant true, point lights use the resident registry, and + directional shadows remain S5-c2. +3. `ParticleSystem` calls the sorted-list lifecycle insertion/removal cost + binary even though only the insertion search is binary and list shifts / + removal are linear. Its adjacent blanket `O(log E)` lifecycle sentence must + remain scoped to the `SortedSet` indexes rather than the new list. + +Fix round 1 is comment-only. It may change exactly +`ParticleVisibilityController.cs`, `WalkFrameDriver.cs`, and +`ParticleSystem.cs`, plus this packet's result section. Do not change behavior, +tests, register rows, architecture prose, or any other file. Correct the three +descriptions to the surviving ownership/cost model, run `git diff --check` and +the same focused retail-review classes (47 Core particle tests, 38 App +visibility/terrain/frame/renderer tests, and 3 AP-116 settings/live-object +tests), commit once, then return to a narrow retail comment-truth re-review. +The production/gate-honesty lens remains undispatched until that re-review +passes. A third fix round still stops the chunk.