diff --git a/docs/plans/2026-04-11-roadmap.md b/docs/plans/2026-04-11-roadmap.md index 4f462e06..e9d0d43c 100644 --- a/docs/plans/2026-04-11-roadmap.md +++ b/docs/plans/2026-04-11-roadmap.md @@ -2072,7 +2072,7 @@ OpenGL ceiling; revisit macOS only if a supported graphics backend is chosen. **Future / unscheduled — Campaign AR:** the opt-in [Atmospheric Rendering / Shader Packs campaign](2026-08-21-atmospheric-rendering.md) makes moving authored sun-and-moon directional shadows from trees, monsters, players, and buildings its Tier-2 headline while preserving acdream's current retail-faithful renderer as the default and leaving physics, collision, gameplay, and network behavior unchanged; the project owner assigned Campaign AR on 2026-08-22 without displacing active M4 gameplay work. The [celestial source contract](../research/2026-08-22-dereth-celestial-shadow-sources.md) selects sun, dominant moon, then secondary moon by rendered direction while retaining AC's single authored directional-energy channel; sun rays and volumetrics remain sun-only. The previously referenced #268 + TS-8 package is complete and retired. Stage 1's automated correctness, performance, lifetime, locked-restore, Release, evidence, documentation, and project-owner live gates completed on 2026-08-22 after the opt-in exposure correction. The [Stage 2 connected and closeout gate](../research/2026-08-22-atmospheric-stage2-connected-gate.md) now closes every available machine-local ACE, dense A/B, long-lifetime, graphical-package, shader, Release, and complete-test row. The implemented two-client gate proved that ACE rejects two concurrent characters on the one available account and is ready for separate observer credentials without recording secrets. A distinct-account remote-player row, unavailable physical GPU classes, and final project-owner pack-off/pack-on acceptance remain external gates; Campaign AR is not yet declared shipped. -**Planned, owner-directed — Campaign VM (VisualMaster):** the [VisualMaster campaign](2026-08-22-visualmaster-campaign.md) closes the [Campaign AR review](../research/2026-08-22-campaign-ar-review.md) findings with evidence (pack-off pixel/perf invariance vs `6c79d35c`, the un-anchored detail fade, a linear-light post stack, truthful closeouts, volumetric jitter) and adds weather-driven foliage wind behind the render pack. Named by the owner 2026-08-22; awaiting the owner's goal. +**In flight, automated closeout complete — Campaign VM (VisualMaster):** the [VisualMaster campaign](2026-08-22-visualmaster-campaign.md) closed the [Campaign AR review](../research/2026-08-22-campaign-ar-review.md) findings with evidence: VM0 proved the pack-off path is the pre-campaign renderer (pixel identity on static content, CPU −13 %, allocation −25×); VM2 cdb-read retail's live detail path (single-pass texture stages, the z-fade dead for built meshes) and VM1 re-ported #226 to it; VM4 made the documents truthful (real hardware darkens, the fallback brightened); VM5 de-banded the volumetrics (#421 filed); VM3 put the post stack in linear light with a numerically neutral preset; VM6 added weather-driven foliage wind behind the render pack (scenery-only, cutout/trunk motions, casters follow, independent of the shadow gate) through five Opus review rounds and a repeat-floor pixel apparatus ([note](../research/2026-08-23-vm6-foliage-wind-pixel-proof.md)). VM7's automated gates ran 2026-08-23 on `99d5b2a6`: release gate 15,283/0/0, connected lifecycle/reconnect route PASS pack-off and pack-on, final pack-off vs `base+normals` robust diff 5–10 px, #422 not reproducible in 40 instrumented runs. **Owed: the owner's VM3 and VM6 visual gates and the VM7 pack-off/pack-on matrix, then the merge to main; not declared shipped until then.** --- diff --git a/docs/research/2026-08-23-vm7-automated-closeout.md b/docs/research/2026-08-23-vm7-automated-closeout.md new file mode 100644 index 00000000..b71b5d4c --- /dev/null +++ b/docs/research/2026-08-23-vm7-automated-closeout.md @@ -0,0 +1,50 @@ +# Campaign VM — VM7 automated closeout + +**Date:** 2026-08-23 · **Binary:** `99d5b2a6` (source = binary, gate-verified) · +**Status:** every automated VM7 row PASSED; the owner's visual gates (VM3, +VM6, VM7 matrix) and the merge to main are OWED and were not attempted. + +Every row names its command, lane and artifact (the campaign's closeout rule). + +| Row | Command | Lane | Result | Artifact | +|---|---|---|---|---| +| Complete Release gate | `pwsh ./tools/run-release-gate.ps1` | hermetic (54-project graph, locked restore) | **15,283 passed / 0 skipped / 0 failed** across 14 assemblies | `artifacts/release-gate/release-gate-summary.json` | +| Connected lifecycle/reconnect route, pack off | `tools/run-connected-world-lifecycle-gate.ps1 -SkipBuild` | Live (local ACE, `+Acdream`) | **PASS**; warning: 25 expected world-edge landblock misses (capped) | `logs/connected-world-gate-20260823-043414/report.json` | +| Connected lifecycle/reconnect route, High pack | `… -RenderPackPreset high` | Live | **PASS**; same expected warning | `logs/connected-world-gate-20260823-043951/report.json` | +| VM0 invariance on the final binary | `tools/run-offline-pixel-gate.ps1 -RenderPackPreset retail -BuildingDetailTextures $false -Uncapped` for HEAD and `-ExeOverride `, two captures each | offline, isolated settings, one tool | **robust diff 5–10 px** (all in the lifestone band, VM0's known dynamic); whole-frame mean \|Δ\| 0.0075 = the repeat floor | `docs/research/evidence/vm7/1f151242-pack-off-vs-base-normals-robust.png` | +| #422 characterisation | `tools/i422/loop-debugheap.ps1 -Runs 24` (under cdb, debug heap) + 16 attached runs | offline High, Release | **0 / 40 faults** (P ≈ 0.5 % at the filed 1-in-8 rate) — not reproducible on this binary; watch item | `docs/research/evidence/vm7/i422-*.txt`; `docs/ISSUES.md` #422 | +| AR performance matrix, changed presets | `tools/run-atmospheric-performance-matrix.ps1 -PresetSet retail,low,medium,high -ResolutionSet 1920x1080 -FramePacing uncapped -SkipBuild` | offline, 45 s warm-up | see the "Performance matrix" section below | `artifacts/vm7-matrix/atmospheric-performance-matrix.md` | + +The `base+normals` reference is main `6c79d35c` + the two patches recorded at +`docs/research/evidence/vm0/` (config-dir isolation; A2 terrain normals), +built in a throwaway worktree and run through HEAD's gate script — never +the old tool (VM0 §"three methods that did not work", method 1). + +## Performance matrix + +(filled from `artifacts/vm7-matrix/atmospheric-performance-matrix.md`) + +## Register, roadmap, memory + +- Register: IA-24 amended (the receiver lighting direction follows the + celestial shadow source while shadows render; authored-light fallback when + the gate is closed), IA-25 (foliage wind) and AP-232 (detail blend weight) + stand from their slices; no row retired at VM7. +- Roadmap: Campaign VM entry → "in flight, automated closeout complete; + owner gates and merge owed". +- Memory: `project_visualmaster_campaign.md` (digest + DO-NOT-RETRY) and + `feedback_pixel_diff_needs_repeat_floor.md`. + +## What the owner gets to decide + +1. **VM3** — the linear-light post stack (brief: plan §VM3 gate brief; the + neutral High preset is pixel-identical to pack-off on static content, the + non-neutral presets are darker and differently toned than before — the + curve table in the brief says by how much). +2. **VM6** — the wind (plan §VM6 Acceptance, six steps; Clear should read + "barely moving, alive", Rain/Storm "clearly windy, still not a flag"; + the shadows follow; nothing moves indoors or pack-off). +3. **VM7** — the final pack-off / pack-on matrix, then the merge. + +If any pack-on run ends with exit code `-1073740940`, #422 is back: run +`tools/i422/loop-debugheap.ps1` first.