docs(overhaul): close S5 c2 landing gate
This commit is contained in:
parent
ef819eedf5
commit
c3ac20b2ad
4 changed files with 102 additions and 5 deletions
|
|
@ -39,6 +39,41 @@ confirmed closed by the owner, 11 need a focused live gate, and 43 are safe to
|
||||||
remain closed. See
|
remain closed. See
|
||||||
[`docs/research/2026-08-28-owner-closed-issue-validity-audit.md`](research/2026-08-28-owner-closed-issue-validity-audit.md).
|
[`docs/research/2026-08-28-owner-closed-issue-validity-audit.md`](research/2026-08-28-owner-closed-issue-validity-audit.md).
|
||||||
|
|
||||||
|
## #469 — Atmospheric shadow-gate transition switches the whole outdoor lighting direction abruptly and can darken the world
|
||||||
|
|
||||||
|
**Status:** OPEN — found 2026-09-04 by the S5-c2 lead graphical gate; Campaign
|
||||||
|
OVERHAUL v2 renderer-solid/G4 scope. This predates S5-c2: exact parent
|
||||||
|
`5c106bcdf` and candidate `ef819eedf` reproduce the same dark re-enable.
|
||||||
|
|
||||||
|
**Evidence:** parent
|
||||||
|
`s5-c2-ab-parent/logs/selfgate-20260904-183815-s5c2-parent-shadow-ab` and
|
||||||
|
candidate `logs/selfgate-20260904-183925-s5c2-candidate-shadow-ab`, especially
|
||||||
|
`transition_disabled_retail.png`, `transition_reenabled_high.png`, and
|
||||||
|
`transition_dusk_high.png`. Both runs captured 7/7 frames, exited 0 with
|
||||||
|
graceful logout, and contained no fatal/validation match. The candidate's
|
||||||
|
re-enabled frame had a valid atmospheric runtime, 3,087 selected casters, four
|
||||||
|
cascades, 26 draws, and strength 0.5853; this is not missing shadow work.
|
||||||
|
|
||||||
|
**Mechanism:** `mesh_atmospheric.vert` and `terrain_atmospheric.vert` choose
|
||||||
|
retail's authored `-uLights[0].dirAndRange.xyz` while shadow flag bit 0 is
|
||||||
|
clear, but switch the directional diffuse term to normalized
|
||||||
|
`uShadowLightDirectionAndSource.xyz` as soon as that bit is set. Shadow
|
||||||
|
visibility/strength is weighted later, but the lighting-direction selection is
|
||||||
|
binary. Pack off/on, night/day, portal cover, indoor/outdoor, or a strength-zero
|
||||||
|
crossing can therefore relight the whole world in one frame; at the captured
|
||||||
|
Caul pose the celestial direction leaves most terrain/buildings nearly black.
|
||||||
|
IA-24 records that this alignment was intentional, so the repair must preserve
|
||||||
|
the declared opt-in behavior or explicitly revise that deviation—not quietly
|
||||||
|
mix two incompatible directions.
|
||||||
|
|
||||||
|
**Bounded next step before G4:** write a focused pack-lighting contract that
|
||||||
|
keeps the pack-active receiver direction stable across shadow-work gate
|
||||||
|
transitions (or proves a better single-direction policy), pins meshes and
|
||||||
|
terrain together, preserves exact pack-off pixels/work, recompiles and verifies
|
||||||
|
the shader manifest, then repeats this exact off/on/dusk A/B. G4 cannot call the
|
||||||
|
renderer solid while this remains unexplained and visibly severe; alternatively
|
||||||
|
the owner may explicitly accept the transition as part of IA-24.
|
||||||
|
|
||||||
## #468 — Teleport to the Holtburg cottage doorway pose seats the player in the house-interior cell at a point outside its floor; the player falls through the world
|
## #468 — Teleport to the Holtburg cottage doorway pose seats the player in the house-interior cell at a point outside its floor; the player falls through the world
|
||||||
|
|
||||||
**Status:** OPEN — found 2026-09-04 by the lead while running the G3 self-gate's capture pose 15 (`tools/overhaul-selfgate/route-g3b.txt`, `/teleloc A9B4013F 133.603592 13.391837 96.330009 …`, the retail capture's EYE pose used as a player pose). Placement/collision, NOT Campaign OVERHAUL v2 (the frame it produces is a correct render of a player in free fall); tactical, own fix. START at `claude-memory/project_placement_cutover_closed.md` (#331) and `project_physics_collision_digest.md`.
|
**Status:** OPEN — found 2026-09-04 by the lead while running the G3 self-gate's capture pose 15 (`tools/overhaul-selfgate/route-g3b.txt`, `/teleloc A9B4013F 133.603592 13.391837 96.330009 …`, the retail capture's EYE pose used as a player pose). Placement/collision, NOT Campaign OVERHAUL v2 (the frame it produces is a correct render of a player in free fall); tactical, own fix. START at `claude-memory/project_placement_cutover_closed.md` (#331) and `project_physics_collision_digest.md`.
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ accepted-divergence entries (#96, #49, #50).
|
||||||
| IA-21 | When ACE sends player BoolProperty `68` (`SpellComponentsRequired`) false, acdream presents the retail scarab/prismatic-taper formula even without a directly carried school focus. With component enforcement enabled, retail's exact focus/infusion versus account-customized selection remains intact. | `src/AcDream.App/Spells/SpellComponentRequirementService.cs` | A component-disabled server has no actionable legacy recipe; explicit product direction is that this client/server mode uses the modern scarab/taper component presentation | A custom server could expect retail's legacy recipe to remain visible even though casting consumes no components | `ClientMagicSystem::AreSpellComponentsRequired @ 0x00567B90`; `ClientMagicSystem::GetAppropriateSpellFormula @ 0x00567D50`; `CSpellBase::InqScarabOnlyFormula @ 0x00597050` |
|
| IA-21 | When ACE sends player BoolProperty `68` (`SpellComponentsRequired`) false, acdream presents the retail scarab/prismatic-taper formula even without a directly carried school focus. With component enforcement enabled, retail's exact focus/infusion versus account-customized selection remains intact. | `src/AcDream.App/Spells/SpellComponentRequirementService.cs` | A component-disabled server has no actionable legacy recipe; explicit product direction is that this client/server mode uses the modern scarab/taper component presentation | A custom server could expect retail's legacy recipe to remain visible even though casting consumes no components | `ClientMagicSystem::AreSpellComponentsRequired @ 0x00567B90`; `ClientMagicSystem::GetAppropriateSpellFormula @ 0x00567D50`; `CSpellBase::InqScarabOnlyFormula @ 0x00597050` |
|
||||||
| IA-22 | **Filed 2026-08-13 (#391, user-directed: "we should only support modern resolutions. Not any old format").** The Config Resolution dropdown offers a CURATED list — the monitor's real mode enumeration filtered to modern widescreen families (16:9/16:10/21:9/32:9, ≥1280 wide, fitting the desktop; `DisplayModeCatalog.Curate`) — and its Defaults value is the desktop's own mode. Retail offered the adapter's complete enumeration including 4:3 legacy modes and authored `800x600` as the row default (`gmConfigUI::InitOptions SetDefaultValue(0x03200258)`; `gmClient::Init @0x004047af` `Device::ForceDisplayResolution(1, 0x320, 0x258)`). | `src/AcDream.App/Rendering/DisplayModeCatalog.cs`; `src/AcDream.App/UI/Layout/ConfigOptionsPageController.cs` (Resolution row); fixture fallback `src/AcDream.UI.Abstractions/Panels/Settings/DisplaySettings.cs` (`AvailableResolutions`, 800x600 removed) | Explicit product direction. **Amended 2026-08-16 (#407, Campaign CC gate round 1):** the dropdown now offers `DisplayModeCatalog.WindowedResolutions` — the curated hardware modes UNIONed with the static modern-ladder sizes that fit the desktop — because a WINDOWED pick is a plain Size write needing no video mode, and remote/RDP virtual displays advertise almost no modes (the live RDP display exposed only 1920x1080 + the 2056x1290 desktop, starving the dropdown). The original "an offered mode is supported by construction" invariant now holds for the FULLSCREEN half only: the fullscreen apply still validates against the hardware `Resolutions` list plus `GlfwDisplayModeSwitcher`'s monitor-mode-list hard guard, so a fullscreen pick of a windowed-only entry refuses safely (log-and-stay, #388; the #392 apply-result seam is that family's open follow-up) — "Graphics mode not supported" crashes remain unreachable from the dropdown. | A user wanting a genuine legacy 4:3 mode cannot pick it; retail-parity comparisons of the Config tab's list/default will show the deviation. | decomp sites in the Divergence column; ISSUES #391 |
|
| IA-22 | **Filed 2026-08-13 (#391, user-directed: "we should only support modern resolutions. Not any old format").** The Config Resolution dropdown offers a CURATED list — the monitor's real mode enumeration filtered to modern widescreen families (16:9/16:10/21:9/32:9, ≥1280 wide, fitting the desktop; `DisplayModeCatalog.Curate`) — and its Defaults value is the desktop's own mode. Retail offered the adapter's complete enumeration including 4:3 legacy modes and authored `800x600` as the row default (`gmConfigUI::InitOptions SetDefaultValue(0x03200258)`; `gmClient::Init @0x004047af` `Device::ForceDisplayResolution(1, 0x320, 0x258)`). | `src/AcDream.App/Rendering/DisplayModeCatalog.cs`; `src/AcDream.App/UI/Layout/ConfigOptionsPageController.cs` (Resolution row); fixture fallback `src/AcDream.UI.Abstractions/Panels/Settings/DisplaySettings.cs` (`AvailableResolutions`, 800x600 removed) | Explicit product direction. **Amended 2026-08-16 (#407, Campaign CC gate round 1):** the dropdown now offers `DisplayModeCatalog.WindowedResolutions` — the curated hardware modes UNIONed with the static modern-ladder sizes that fit the desktop — because a WINDOWED pick is a plain Size write needing no video mode, and remote/RDP virtual displays advertise almost no modes (the live RDP display exposed only 1920x1080 + the 2056x1290 desktop, starving the dropdown). The original "an offered mode is supported by construction" invariant now holds for the FULLSCREEN half only: the fullscreen apply still validates against the hardware `Resolutions` list plus `GlfwDisplayModeSwitcher`'s monitor-mode-list hard guard, so a fullscreen pick of a windowed-only entry refuses safely (log-and-stay, #388; the #392 apply-result seam is that family's open follow-up) — "Graphics mode not supported" crashes remain unreachable from the dropdown. | A user wanting a genuine legacy 4:3 mode cannot pick it; retail-parity comparisons of the Config tab's list/default will show the deviation. | decomp sites in the Divergence column; ISSUES #391 |
|
||||||
| IA-23 | **Filed 2026-08-17 at the night-round review fix round (F8).** `gmHouseUI::DisplayPurchaseTimeText @0x004a3110`'s not-yet-expired branch renders `"You may buy another landscape house at " + strftime("%c", localtime(timestamp + 0x278d00)) + ". This restriction does not apply to apartments."` — byte-decoded from raw pushed literals at `@0x004a3265`/`@0x004a321d`/`@0x004a3235` (all three text pieces confirmed; a prior filing had wrongly called this "unrecoverable"). This port renders the SAME three pieces, in the same order, with the same expiry-timestamp math, but formats the middle date/time piece with .NET's culture-default `DateTime.ToString()` (no explicit format string) rather than the C runtime's `strftime("%c", ...)` — the two engines do not share a format table, so the RENDERED SHAPE of the date/time differs (e.g. .NET's short numeric date+time vs the CRT's `Ddd Mon DD HH:MM:SS YYYY`-style locale string) even though both express "the process's own locale's full date+time" and use the SAME underlying instant (local time, matching retail's `localtime()`). | `src/AcDream.Runtime/Gameplay/RuntimeHouseState.cs` (`Recompute`'s not-expired branch) | Both are "whatever the process locale says" full date+time strings; no game-logic reads or parses this text back, it is pure chat-scroll presentation, so a differently-shaped (but equally legible) date string carries no functional risk | A retail-side-by-side visual comparison will show a differently formatted date/time (not a byte-identical `strftime("%c")` reproduction) — cosmetic only | `gmHouseUI::DisplayPurchaseTimeText @0x004a3110`; `strftime`/`localtime` CRT calls at `@0x004a322c`/`@0x004a3216` |
|
| IA-23 | **Filed 2026-08-17 at the night-round review fix round (F8).** `gmHouseUI::DisplayPurchaseTimeText @0x004a3110`'s not-yet-expired branch renders `"You may buy another landscape house at " + strftime("%c", localtime(timestamp + 0x278d00)) + ". This restriction does not apply to apartments."` — byte-decoded from raw pushed literals at `@0x004a3265`/`@0x004a321d`/`@0x004a3235` (all three text pieces confirmed; a prior filing had wrongly called this "unrecoverable"). This port renders the SAME three pieces, in the same order, with the same expiry-timestamp math, but formats the middle date/time piece with .NET's culture-default `DateTime.ToString()` (no explicit format string) rather than the C runtime's `strftime("%c", ...)` — the two engines do not share a format table, so the RENDERED SHAPE of the date/time differs (e.g. .NET's short numeric date+time vs the CRT's `Ddd Mon DD HH:MM:SS YYYY`-style locale string) even though both express "the process's own locale's full date+time" and use the SAME underlying instant (local time, matching retail's `localtime()`). | `src/AcDream.Runtime/Gameplay/RuntimeHouseState.cs` (`Recompute`'s not-expired branch) | Both are "whatever the process locale says" full date+time strings; no game-logic reads or parses this text back, it is pure chat-scroll presentation, so a differently-shaped (but equally legible) date string carries no functional risk | A retail-side-by-side visual comparison will show a differently formatted date/time (not a byte-identical `strftime("%c")` reproduction) — cosmetic only | `gmHouseUI::DisplayPurchaseTimeText @0x004a3110`; `strftime`/`localtime` CRT calls at `@0x004a322c`/`@0x004a3216` |
|
||||||
| IA-24 | **Filed 2026-08-22, Campaign AR; amended 2026-09-04, Campaign OVERHAUL S5-c2.** An explicitly selected atmospheric render pack adds cascaded real-time directional shadows from terrain, trees, buildings, players, monsters, and other retained outdoor casters. The one shadow direction follows the visible authored sun, then the dominant haloed moon (`0x01001F6A`), then the secondary moon (`0x01001F67`); a moon supplies direction only while colour/energy remains retail's single interpolated `SkyTimeOfDay.DirColor × DirBright` channel. Its active terrain/object projection borrows retail's **prior successfully completed** landscape visibility by exact set reference, then selects ordinary objects by S2's retained retail CELLARRAY intersection and building shells by their outdoor placement `EffectCellId`; missing membership and no completed view fail closed, with no resident/frustum fallback. **While shadows render, the pack's receiver vertex shaders (`mesh_atmospheric.vert`, `terrain_atmospheric.vert`) also take the outdoor directional LIGHTING direction from that same celestial source instead of retail's authored `uLights[0]` direction, so the lit term agrees with the shadow direction; whenever the shadow gate is closed (night, user strength 0, portal cover, indoor) the flag bit is clear and both shaders fall back to the plain pipeline's authored-light expression (Campaign VM VM6 round 5, `754d59d9`).** Retail renders none of these real-time object-shadow maps and does not expose a second moon light. | `src/AcDream.App/Rendering/Packs/AuthoredCelestialShadowSource.cs`; `src/AcDream.App/Rendering/DirectionalSunShadowRenderer.cs`; `src/AcDream.App/Rendering/Scene/DirectionalShadowCasterFrame.cs`; pack-only receiver shaders; evidence `docs/research/2026-08-22-dereth-celestial-shadow-sources.md` and OVERHAUL packet §14 | This is the user-requested headline graphics enhancement and is strictly opt-in. Borrowing the prior completed retail landscape product and exact S2 membership narrows pack-on work without inventing another visibility owner. The retail path remains the default and authoritative fallback; pack-off does not build, select, upload, or draw shadow work and does not change `SceneLighting`. One selected source reuses one cascade array, so moon support does not multiply shadow resources. | Pack-on output intentionally differs from retail and deliberately trails camera visibility by one successfully completed world view. A wrong CELLARRAY/EffectCell identity, stale prior-view transaction, or celestial transform would visibly add, omit, or misalign shadows; pack-off output changing would violate the campaign's primary safety contract. | Landscape input: `LScape::draw_check_blocks @0x00505F80`, `LScape::landcell_check @0x005050A0`, `CLandCell::IsInView @0x00532CB0`; celestial: `SkyDesc::GetLighting @0x00500A80`, `GameSky::UseTime @0x005075B0`; installed Region `0x13000000`; cited research notes |
|
| IA-24 | **Filed 2026-08-22, Campaign AR; amended 2026-09-04, Campaign OVERHAUL S5-c2 and its graphical closeout.** An explicitly selected atmospheric render pack adds cascaded real-time directional shadows from terrain, trees, buildings, players, monsters, and other retained outdoor casters. The one shadow direction follows the visible authored sun, then the dominant haloed moon (`0x01001F6A`), then the secondary moon (`0x01001F67`); a moon supplies direction only while colour/energy remains retail's single interpolated `SkyTimeOfDay.DirColor × DirBright` channel. Its active terrain/object projection borrows retail's **prior successfully completed** landscape visibility by exact set reference, then selects ordinary objects by S2's retained retail CELLARRAY intersection and building shells by their outdoor placement `EffectCellId`; missing membership and no completed view fail closed, with no resident/frustum fallback. **While shadows render, the pack's receiver vertex shaders (`mesh_atmospheric.vert`, `terrain_atmospheric.vert`) also take the outdoor directional LIGHTING direction from that same celestial source instead of retail's authored `uLights[0]` direction, so the lit term agrees with the shadow direction; whenever the shadow gate is closed (night, user strength 0, portal cover, indoor) the flag bit is clear and both shaders fall back to the plain pipeline's authored-light expression (Campaign VM VM6 round 5, `754d59d9`). The switch is binary even when the effective shadow strength is small: S5-c2's exact-parent/candidate graphical A/B (§16) reproduces a conspicuous whole-world darkening across pack re-enable. Issue #469 keeps that pre-existing gate discontinuity open before G4; recording it here does not classify it as an S5-c2 regression.** Retail renders none of these real-time object-shadow maps and does not expose a second moon light. | `src/AcDream.App/Rendering/Packs/AuthoredCelestialShadowSource.cs`; `src/AcDream.App/Rendering/DirectionalSunShadowRenderer.cs`; `src/AcDream.App/Rendering/Scene/DirectionalShadowCasterFrame.cs`; pack-only receiver shaders; evidence `docs/research/2026-08-22-dereth-celestial-shadow-sources.md` and OVERHAUL packet §§14,16 | This is the user-requested headline graphics enhancement and is strictly opt-in. Borrowing the prior completed retail landscape product and exact S2 membership narrows pack-on work without inventing another visibility owner. The retail path remains the default and authoritative fallback; pack-off does not build, select, upload, or draw shadow work and does not change `SceneLighting`. One selected source reuses one cascade array, so moon support does not multiply shadow resources. | Pack-on output intentionally differs from retail and deliberately trails camera visibility by one successfully completed world view. A wrong CELLARRAY/EffectCell identity, stale prior-view transaction, celestial transform, or unresolved #469 gate transition would visibly add, omit, misalign, or abruptly relight the world; pack-off output changing would violate the campaign's primary safety contract. | Landscape input: `LScape::draw_check_blocks @0x00505F80`, `LScape::landcell_check @0x005050A0`, `CLandCell::IsInView @0x00532CB0`; celestial: `SkyDesc::GetLighting @0x00500A80`, `GameSky::UseTime @0x005075B0`; installed Region `0x13000000`; cited research notes |
|
||||||
| IA-25 | **Filed 2026-08-22, Campaign VM VM6.** An explicitly selected atmospheric render pack sways procedural-scenery foliage (trees/bushes — entity ids in the `0x8XXYYIII` `ProceduralSceneryIdAllocator` namespace) in `mesh_atmospheric.vert` and the four `directional_shadow_world_*` caster vertex shaders, driven by a weather-table lean/branch/flutter vertex displacement (`foliage_wind.glsl`, `FoliageWindModel` CPU mirror) whose mean/gust strength is looked up per DAT-classified `AcDream.Core.World.WeatherKind` (Clear/Overcast/Rain/Snow/Storm — the same classification `WeatherState.cs` already derives from the active day group's authored name, not the day group's raw index, which carries no weather meaning by itself) and eases toward its target over `WeatherSystem.TransitionSeconds` (10 s) so a weather change never snaps. Retail's fixed-function renderer applies no per-vertex wind displacement to any scenery mesh — Dereth's trees are static geometry. Wind direction (`wind-direction-degrees`, default 225°) is a plain pack default: there is no authored retail wind direction to read (no wind data exists in retail at all). Render-only: `WorldPicker` picks the undisplaced mesh, so a swaying leaf can be up to `lean + branch` metres from its pick volume at the moment of a click; foliage subsets are cosmetic scenery, not interactable in retail either. | `src/AcDream.App/Rendering/Shaders/foliage_wind.glsl`; `src/AcDream.App/Rendering/Wb/FoliageWindClassification.cs`; `src/AcDream.App/Rendering/Packs/FoliageWindModel.cs`; `src/AcDream.App/Rendering/Packs/AtmosphericPostProcessGraph.cs` (`ResolveFoliageWind`); `src/AcDream.App/Rendering/Packs/BuiltInAtmosphericRenderPack.cs` (wind settings + `FoliageWindByWeather`) | Explicitly opt-in graphics enhancement — the retail path (`mesh_modern`, `terrain_modern`, `mesh_detail`) never reads `BatchData.flags` bits 1/2 and is pixel-identical with the pack off. The classification never touches Runtime/Core physics — the collision BSP is the trunk, and picking against the undisplaced mesh has no gameplay consequence since foliage is not interactable. | Pack-on output intentionally differs from retail (moving foliage where retail has none). A wrong classification bit would sway a non-foliage object or leave a real tree still; a caster/receiver clock or amplitude mismatch would visibly misalign a leaf's shadow from the leaf itself. Pack-off output changing would violate the campaign's primary safety contract. | None — retail applies no vertex wind displacement to any geometry; `ProceduralSceneryIdAllocator` (top-nibble-0x8 entity-id namespace, existing acdream mechanism, not retail) |
|
| IA-25 | **Filed 2026-08-22, Campaign VM VM6.** An explicitly selected atmospheric render pack sways procedural-scenery foliage (trees/bushes — entity ids in the `0x8XXYYIII` `ProceduralSceneryIdAllocator` namespace) in `mesh_atmospheric.vert` and the four `directional_shadow_world_*` caster vertex shaders, driven by a weather-table lean/branch/flutter vertex displacement (`foliage_wind.glsl`, `FoliageWindModel` CPU mirror) whose mean/gust strength is looked up per DAT-classified `AcDream.Core.World.WeatherKind` (Clear/Overcast/Rain/Snow/Storm — the same classification `WeatherState.cs` already derives from the active day group's authored name, not the day group's raw index, which carries no weather meaning by itself) and eases toward its target over `WeatherSystem.TransitionSeconds` (10 s) so a weather change never snaps. Retail's fixed-function renderer applies no per-vertex wind displacement to any scenery mesh — Dereth's trees are static geometry. Wind direction (`wind-direction-degrees`, default 225°) is a plain pack default: there is no authored retail wind direction to read (no wind data exists in retail at all). Render-only: `WorldPicker` picks the undisplaced mesh, so a swaying leaf can be up to `lean + branch` metres from its pick volume at the moment of a click; foliage subsets are cosmetic scenery, not interactable in retail either. | `src/AcDream.App/Rendering/Shaders/foliage_wind.glsl`; `src/AcDream.App/Rendering/Wb/FoliageWindClassification.cs`; `src/AcDream.App/Rendering/Packs/FoliageWindModel.cs`; `src/AcDream.App/Rendering/Packs/AtmosphericPostProcessGraph.cs` (`ResolveFoliageWind`); `src/AcDream.App/Rendering/Packs/BuiltInAtmosphericRenderPack.cs` (wind settings + `FoliageWindByWeather`) | Explicitly opt-in graphics enhancement — the retail path (`mesh_modern`, `terrain_modern`, `mesh_detail`) never reads `BatchData.flags` bits 1/2 and is pixel-identical with the pack off. The classification never touches Runtime/Core physics — the collision BSP is the trunk, and picking against the undisplaced mesh has no gameplay consequence since foliage is not interactable. | Pack-on output intentionally differs from retail (moving foliage where retail has none). A wrong classification bit would sway a non-foliage object or leave a real tree still; a caster/receiver clock or amplitude mismatch would visibly misalign a leaf's shadow from the leaf itself. Pack-off output changing would violate the campaign's primary safety contract. | None — retail applies no vertex wind displacement to any geometry; `ProceduralSceneryIdAllocator` (top-nibble-0x8 entity-id namespace, existing acdream mechanism, not retail) |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -681,8 +681,8 @@ Update immediately when a slice changes state. Chat is not the ledger.
|
||||||
| 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 | **LANDED 2026-09-04** — implementation `26e97ba41`, provenance contract `5110bf676`, packet-only correction `3f2f00c9f`; packet §22–§25. Dead classic-group `LocalSortCenters`/`CachedBatch.LocalSortCenter` storage and the alpha camera-parameter/digest chain are deleted. Live per-cell/particle CYpt keys, opaque `SortDistance`, building/private/portal distances, two FIFO lists, all state/barriers, and AP/AD rows remain. | **G3 LEAD SELF-GATE PROVISIONAL PASS; owner acceptance/owner-only rows pending. G4 UNPASSED.** | Retail/deletion lens PASS. Production lens found no code defect and one artifact-provenance omission; packet-only fix round 1 passed its narrow re-review. Fresh campaign: Release 0W/0E; App 132/132; Core 29/29; allocation 2/2 at 0 B; shader 32/32. G3: route 1 13/13, route 2 4/4, route 3 retry 3/3, all exit 0/graceful. The first route-3 attempt stopped before Nanto on registered #462. Exact PNG paths: packet §25. |
|
| S4-c3b | **LANDED 2026-09-04** — implementation `26e97ba41`, provenance contract `5110bf676`, packet-only correction `3f2f00c9f`; packet §22–§25. Dead classic-group `LocalSortCenters`/`CachedBatch.LocalSortCenter` storage and the alpha camera-parameter/digest chain are deleted. Live per-cell/particle CYpt keys, opaque `SortDistance`, building/private/portal distances, two FIFO lists, all state/barriers, and AP/AD rows remain. | **G3 LEAD SELF-GATE PROVISIONAL PASS; owner acceptance/owner-only rows pending. G4 UNPASSED.** | Retail/deletion lens PASS. Production lens found no code defect and one artifact-provenance omission; packet-only fix round 1 passed its narrow re-review. Fresh campaign: Release 0W/0E; App 132/132; Core 29/29; allocation 2/2 at 0 B; shader 32/32. G3: route 1 13/13, route 2 4/4, route 3 retry 3/3, all exit 0/graceful. The first route-3 attempt stopped before Nanto on registered #462. Exact PNG paths: packet §25. |
|
||||||
| S5-c1 | **LANDED 2026-09-04 after the owner-authorized documentation/evidence exception.** Mandatory stop `efb075619` remains in history; final campaign tip `1718832e2`, reviewed scratch tip `b2d56f9e3`. | G4 UNPASSED | Narrow exception re-review PASS. Clean evidence: hermetic 16,760/16,760; inclusive InstalledDat 385 pass / the same documented 10 fail / 1 skip; both exact `d6592d3ac`, `WorktreeDirty=false`, manifests fully verified. Fresh campaign Release 0W/0E, Core 111/111, visibility 38/38, allocation/AP-116 4/4. Lead graphical portal-haze gate PROVISIONAL PASS, exit 0/graceful, 10 PNGs under `logs/selfgate-20260904-171137-s5c1-particle-visibility`; owner inspection pending. |
|
| S5-c1 | **LANDED 2026-09-04 after the owner-authorized documentation/evidence exception.** Mandatory stop `efb075619` remains in history; final campaign tip `1718832e2`, reviewed scratch tip `b2d56f9e3`. | G4 UNPASSED | Narrow exception re-review PASS. Clean evidence: hermetic 16,760/16,760; inclusive InstalledDat 385 pass / the same documented 10 fail / 1 skip; both exact `d6592d3ac`, `WorktreeDirty=false`, manifests fully verified. Fresh campaign Release 0W/0E, Core 111/111, visibility 38/38, allocation/AP-116 4/4. Lead graphical portal-haze gate PROVISIONAL PASS, exit 0/graceful, 10 PNGs under `logs/selfgate-20260904-171137-s5c1-particle-visibility`; owner inspection pending. |
|
||||||
| S5-c2 | **IMPLEMENTED 2026-09-04; documentation-only fix round 1 implemented, narrow re-review pending.** The opt-in IA-24 path borrows the exact prior-completed landscape set/flag, selects world casters through S2 CELLARRAY or building `EffectCellId`, selects authored terrain slots, and projects arbitrary active instance runs without rebuilding retained topology. Pack-off remains unchanged. | G4 UNPASSED | Retail/deviation review PASS. Production review found code/architecture/GPU-flight otherwise passing and returned FAIL only on stale evidence/status prose. Exact clean commit `603d4bbb05e`: hermetic 16,768/16,768; preserved broader InstalledDat 468 pass / 10 fail / 1 skip; canonical comparison 385 pass / the same 10 fail / 1 skip; all three manifests fully verified and both nonpassing-identity comparisons against accepted S5-c1 returned no differences. Packet §15 fix is implemented pending narrow re-review; not landed, review-closed, self-gated, or user-accepted. |
|
| S5-c2 | **LANDED + REVIEW-CLOSED 2026-09-04; lead graphical gate PROVISIONAL PASS.** Campaign stack `a4de2efc4` -> `048027e71` -> `ef819eedf`; reviewed scratch tip `521f5edda54`; packet §§14–16. The opt-in IA-24 path borrows the exact prior-completed landscape set/flag, selects world casters through S2 CELLARRAY or building `EffectCellId`, selects authored terrain slots, and projects exact active instance runs without rebuilding retained topology. Pack-off remains unchanged. | G4 UNPASSED | Retail/deviation PASS; production's documentation-only fix round 1 narrowly re-reviewed PASS. Fresh campaign Release 0W/0E and affected 137/137. Official evidence: hermetic 16,768/16,768; broader InstalledDat 468 pass / 10 fail / 1 skip; canonical 385 pass / the same 10 fail / 1 skip; manifests and nonpassing identities exact. Valid lead gate `logs/selfgate-20260904-183925-s5c2-candidate-shadow-ab`: seven PNGs, exit 0, graceful logout, no fatal match, no client left. Exact parent `5c106bcdf` A/B at `s5-c2-ab-parent/logs/selfgate-20260904-183815-s5c2-parent-shadow-ab` proves the gate-visible dark lighting switch predates c2; #469/IA-24 carry it for resolution or explicit owner acceptance before G4. Owner PNG inspection pending. |
|
||||||
| S5 | IN FLIGHT — c1 landed/provisionally self-gated; c2 implemented with clean evidence and documentation-only fix round 1 pending narrow re-review; c3–c5 and closeout remain | G4 | Packet §§7 and 12–15 are binding; never merge main before G4. |
|
| S5 | IN FLIGHT — c1 and c2 landed/review-closed/provisionally self-gated; c3–c5, #469 disposition, closeout, and G4 remain | G4 | Packet §§7 and 12–16 are binding; S5-c3 is next; never merge main before G4. |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Campaign OVERHAUL v2 — S5 consumers, material, and closeout packet
|
# Campaign OVERHAUL v2 — S5 consumers, material, and closeout packet
|
||||||
|
|
||||||
**Status:** S5-c1 LANDED + lead graphical gate PROVISIONAL PASS 2026-09-04;
|
**Status:** S5-c1 and S5-c2 LANDED + lead graphical gates PROVISIONAL PASS
|
||||||
S5-c2 CONTRACTED below.
|
2026-09-04; S5-c3 is next.
|
||||||
**Branch:** `claude/campaign-w-retail-frame-walk`.
|
**Branch:** `claude/campaign-w-retail-frame-walk`.
|
||||||
**Gate:** G4 remains unpassed. Nothing merges to `main` before G4.
|
**Gate:** G4 remains unpassed. Nothing merges to `main` before G4.
|
||||||
|
|
||||||
|
|
@ -885,3 +885,65 @@ One narrow independent production/gate-honesty re-review then checks only the
|
||||||
two corrected documents against the three clean artifact directories and the
|
two corrected documents against the three clean artifact directories and the
|
||||||
two recorded review verdicts. A new correction-worthy finding would be fix
|
two recorded review verdicts. A new correction-worthy finding would be fix
|
||||||
round 2; a third fix round still stops S5-c2 and is written up.
|
round 2; a third fix round still stops S5-c2 and is written up.
|
||||||
|
|
||||||
|
## 16. S5-c2 review closeout, landing, and lead graphical A/B — 2026-09-04
|
||||||
|
|
||||||
|
The narrow independent production/gate-honesty re-review returned **PASS**
|
||||||
|
with no finding. It checked the two-document fix-round scope, all three clean
|
||||||
|
artifact directories and manifests, both InstalledDat filters and counts, the
|
||||||
|
two unchanged nonpassing-identity comparisons, and the recorded sequential
|
||||||
|
review verdicts. No production or test file changed in fix round 1.
|
||||||
|
|
||||||
|
The reviewed scratch stack maps to the campaign branch as follows:
|
||||||
|
|
||||||
|
- implementation `603d4bbb05e` -> `a4de2efc4`;
|
||||||
|
- lead fix-round contract `0025bb2c097` -> `048027e71`;
|
||||||
|
- evidence/status correction `521f5edda54` -> `ef819eedf`.
|
||||||
|
|
||||||
|
The integrated campaign tree at `ef819eedf` is byte-identical to reviewed
|
||||||
|
scratch tip `521f5edda54`. Fresh campaign verification passed: Release solution
|
||||||
|
build 0 warnings / 0 errors and the affected 137-test lane 137/137. The
|
||||||
|
official clean evidence remains §14.7's hermetic 16,768/16,768, broader
|
||||||
|
InstalledDat 468 pass / 10 documented fail / 1 skip, and canonical
|
||||||
|
InstalledDat 385 pass / the same 10 documented fail / 1 skip, with all
|
||||||
|
manifests and nonpassing identities verified.
|
||||||
|
|
||||||
|
The first graphical run at
|
||||||
|
`logs/selfgate-20260904-182320-s5c2-shadow-selection` captured all seven
|
||||||
|
transition PNGs and reached its checkpoint without a fatal log entry, but its
|
||||||
|
route omitted `close-client`. GLFW exposes no main-window handle to the runner,
|
||||||
|
so the runner's graceful external close could not succeed. The owner was away
|
||||||
|
from the computer and explicitly directed the lead to close it; after the
|
||||||
|
graceful path was exhausted, the lead terminated only the verified campaign
|
||||||
|
PID. This run is retained as visual evidence but its teardown is **FAIL**, not
|
||||||
|
the valid c2 gate.
|
||||||
|
|
||||||
|
The lead then added an out-of-tree A/B route with an in-client `close-client`
|
||||||
|
step and built exact parent `5c106bcdf` in detached worktree
|
||||||
|
`s5-c2-ab-parent` (Release 0 warnings / 0 errors). Before each run ACE was UP on
|
||||||
|
UDP 9000 as PID 13340 and no graphical client was running. Exact evidence:
|
||||||
|
|
||||||
|
- parent: `s5-c2-ab-parent/logs/selfgate-20260904-183815-s5c2-parent-shadow-ab`;
|
||||||
|
- candidate:
|
||||||
|
`logs/selfgate-20260904-183925-s5c2-candidate-shadow-ab` at clean
|
||||||
|
`ef819eedf`.
|
||||||
|
|
||||||
|
Both runs produced all seven PNGs, exited 0, logged graceful logout confirmed,
|
||||||
|
left no client process, and contained no fatal/unhandled/device-lost/validation
|
||||||
|
match. Candidate metadata shows exact active selection rather than retained
|
||||||
|
topology fallback: 2,500 selected casters on the first high frame and 3,087
|
||||||
|
after re-enable, with four cascades and 26 draws; pack-off reports zero pack
|
||||||
|
work. Terrain, buildings, actors, UI, weather transitions, resize, and pack
|
||||||
|
off/on recovery remain present. The lead verdict for S5-c2's own scope is
|
||||||
|
**PROVISIONAL PASS pending owner inspection**.
|
||||||
|
|
||||||
|
The A/B also proves a conspicuous darkening on atmospheric re-enable is
|
||||||
|
pre-existing: exact parent and candidate both reproduce it. The receiver
|
||||||
|
shaders switch outdoor directional lighting from authored
|
||||||
|
`-uLights[0].dirAndRange` to `uShadowLightDirectionAndSource` whenever the
|
||||||
|
shadow flag becomes nonzero; the shadow-strength weight does not blend that
|
||||||
|
lighting-direction change. This is not an S5-c2 regression, but it is not
|
||||||
|
silently accepted as a solid-renderer result: issue #469 records it and IA-24
|
||||||
|
now names the gate-visible discontinuity. It must be resolved or explicitly
|
||||||
|
owner-accepted before G4. S5-c3 is next; G4 remains unpassed and nothing may
|
||||||
|
merge to `main`.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue