From e56ac57486a6d287c605aa45a39199613f9a34d3 Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 22 Aug 2026 14:01:07 +0200 Subject: [PATCH] docs(render): record Campaign AR Stage 2 closeout --- docs/plans/2026-04-11-roadmap.md | 2 +- .../plans/2026-08-21-atmospheric-rendering.md | 67 ++++---- ...08-22-atmospheric-stage2-connected-gate.md | 149 ++++++++++++++++++ 3 files changed, 187 insertions(+), 31 deletions(-) create mode 100644 docs/research/2026-08-22-atmospheric-stage2-connected-gate.md diff --git a/docs/plans/2026-04-11-roadmap.md b/docs/plans/2026-04-11-roadmap.md index 8f475c92..56128b58 100644 --- a/docs/plans/2026-04-11-roadmap.md +++ b/docs/plans/2026-04-11-roadmap.md @@ -2070,7 +2070,7 @@ Native macOS graphical support is not committed by this track. The current mandatory renderer requires modern OpenGL capabilities beyond Apple's native 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. Stage 2 connected, performance, lifetime, package-lifecycle, physical-hardware, and closeout evidence is active. +**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. A second-client 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. --- diff --git a/docs/plans/2026-08-21-atmospheric-rendering.md b/docs/plans/2026-08-21-atmospheric-rendering.md index e3220a6f..a02376cd 100644 --- a/docs/plans/2026-08-21-atmospheric-rendering.md +++ b/docs/plans/2026-08-21-atmospheric-rendering.md @@ -1,13 +1,12 @@ # Campaign AR — Atmospheric Rendering / Shader Packs **Date:** 2026-08-21 -**Status:** STAGE 2 ACTIVE — the approved authored sun-and-moon shadow-source -extension and every non-physical Stage 1 correctness, performance, lifetime, -Release, evidence, and documentation gate are complete. After the live -sun/moon, source-transition, temporal-stability, desktop-performance, and -exposure correction round, the project owner accepted Stage 1 on 2026-08-22. -Stage 2 connected, lifetime, package-lifecycle, physical-hardware, and final -closeout evidence is now active. +**Status:** MACHINE-LOCAL STAGE 2 COMPLETE — the authored sun-and-moon +shadow-source extension, Stage 1 owner gate, connected ACE matrix, dense A/B, +long lifetime, graphical package lifecycle, shader, locked-restore, Release, +and complete-test gates pass. A second-client remote-player row, unavailable +physical GPU classes, and final project-owner pack-off/pack-on acceptance remain +external closeout gates; the campaign is not yet declared shipped. **Phase id:** **Campaign AR** — assigned by the project owner on 2026-08-22 **Scheduling:** originally held for the post-M7 rendering-polish pass; the project owner explicitly authorized implementation on 2026-08-21. This @@ -30,9 +29,10 @@ ceiling and shadow quality, completed authored sun/dominant-moon/secondary-moon source selection, and finished every automated gate that did not require the project owner's physical-display judgment. The owner accepted the subsequent live visual/performance round on 2026-08-22 after the default Atmospheric -exposure was corrected from 1.0 to 0.80. Stage 2 is active and limited to the -remaining connected, lifetime, package-lifecycle, physical-hardware, evidence, -and final owner-acceptance rows; it does not add another renderer feature tier. +exposure was corrected from 1.0 to 0.80. The machine-local Stage 2 rows are now +complete. Remaining closeout is limited to a second connected remote player, +unavailable physical-hardware rows, and final owner acceptance; it does not add +another renderer feature tier. Stage 1's dense-scene regression is pinned by the connected failures already captured on 2026-08-22: Atmospheric fell back at 68,395, 67,581, and even @@ -489,10 +489,13 @@ Stage 1 project-owner gate: 2; it is not a substitute for Stage 2's connected scenario, long-lifetime, package lifecycle, additional physical-GPU, or final pack-off/pack-on rows. -Stage 2 and closeout gates, now active: +Stage 2 machine-local closeout result (2026-08-22): -1. Execute the already-implemented connected graphical route and complete its - remaining matrix: moving local/remote players, known monster encounters +The exact commands, commits, metrics, artifacts, and evidence limits are in the +[Stage 2 connected and closeout report](../research/2026-08-22-atmospheric-stage2-connected-gate.md). + +1. **PASS, except the external second-client row.** The connected graphical + route covered moving local players, known monster encounters reported under the authoritative `NonPlayerCreatures` category, and equipped children; landblock publication/demotion; clear, overcast and rain; outdoor/interior/dungeon transitions; portal travel and reconnect. Capture @@ -500,25 +503,26 @@ Stage 2 and closeout gates, now active: transitions and weather, and fresh-process renderer/context/device-recreation assertions against a real ACE session, proving exact resource convergence and no stale maps/owners. - The local recording/device-recreation semantics are closed; this connected - execution and its user-visible evidence are not. -2. Repeat the now-current clean-source RX 9070 XT + Remote-player diagnostics remained zero because only one account/client was + available; a second connected client must close that evidence row. +2. **EXTERNAL HARDWARE GATE.** Repeat the current clean-source RX 9070 XT pack-off/Low/Medium/High/Auto × 1080p/1440p/4K × capped/uncapped matrix on every other supported physical GPU class. The integrated-AMD Auto-to-retail artifact proves weak-adapter safe fallback only; it does not prove active Low or the complete matrix on that adapter. Automated weak-GPU fixtures, one fallback row, and one high-end reference adapter do not prove the remaining physical rows. -3. Complete the visual matrix for Tier-1 neutral values and private-view/UI +3. **FINAL OWNER GATE.** Complete the visual matrix for Tier-1 neutral values and private-view/UI isolation; rays at dawn/noon/dusk, behind-camera and occluded states; foliage cutouts; moving animated shadows under sun and moon; indoor gating; source-transition continuity; temporal pixelation/shimmer; bias/cascade seam review; sun-only volumetric weather/occluder behavior; and pack-off restoration. -4. Exercise external install/select/update/remove/fail/recover flows in the - graphical host, then complete the long lifetime run. Automated SDK and - lifecycle fixtures do not replace this connected evidence. -5. Obtain explicit project-owner acceptance of the final pack-off and pack-on +4. **PASS.** External install/select/update/remove/fail/recover flows passed in + six fresh connected graphical processes. The nine-stop Medium lifetime route + passed with graceful shutdown, as did the deterministic 12-cycle and + fresh-device convergence fixtures. +5. **FINAL OWNER GATE.** Obtain explicit project-owner acceptance of the final pack-off and pack-on visual/performance matrix before changing this document to shipped. ### Slice 0 — Contract, capability probe, and acdream-default no-op @@ -601,7 +605,8 @@ creatures, other live dynamics, and equipped children without inventing tree or hostile-monster identity. Fixed-camera morning/afternoon artifacts are not moon evidence; the live-gate result and its exact boundary are recorded in the [Stage 1 live-gate report](../research/2026-08-22-atmospheric-stage1-live-gate.md). -Stage 2 connected and closeout acceptance is active. +The machine-local Stage 2 connected and closeout matrix passes. The external +second-client, additional-GPU, and final owner rows above remain open. This is the campaign's headline slice. Add camera-relative cascades, opaque and alpha-cutout caster variants, animated SSBO transforms, shadow receivers, @@ -678,9 +683,10 @@ the Tier-2+ budget. gate passed on 2026-08-22. The v1 manifest schema, semantic binding table, compatibility/failure guide, validator, built-in pack, and three buildable external samples are present and -automated. Connected graphical package lifecycle, long-run convergence, the -remaining physical GPU classes, and project-owner acceptance remain open; the -30-row RX 9070 XT reference matrix is complete. +automated. Connected graphical package lifecycle and long-run convergence pass. +The second-client remote-player row, remaining physical GPU classes, and final +project-owner acceptance remain open; the 30-row RX 9070 XT reference matrix is +complete. Publish the manifest/schema, semantic binding table, sample no-op pack, Atmospheric pack, compatibility diagnostics, authoring/validation tool, and @@ -917,11 +923,12 @@ and adds the current renderer's ownership and lifecycle boundaries. ## Completion gate -The design, Stage 1 implementation, automated validation, and project-owner -live gate are complete. Stage 2 and closeout are active. The campaign becomes -**shipped** only after the subsequent -connected, full physical-hardware, lifetime, and visual gates above pass and -the project owner accepts both sides of the final matrix: +The design, implementation, Stage 1 owner gate, and every available +machine-local Stage 2 connected, performance, lifetime, package, shader, build, +and complete-test gate are complete. The campaign becomes **shipped** only +after the second-client remote-player row, remaining physical-hardware rows, +and final visual gates above pass and the project owner accepts both sides of +the final matrix: - **pack off:** unchanged output, performance, ownership, and lifecycle from acdream's authoritative default retail-faithful renderer; and diff --git a/docs/research/2026-08-22-atmospheric-stage2-connected-gate.md b/docs/research/2026-08-22-atmospheric-stage2-connected-gate.md new file mode 100644 index 00000000..4198e36f --- /dev/null +++ b/docs/research/2026-08-22-atmospheric-stage2-connected-gate.md @@ -0,0 +1,149 @@ +# Campaign AR Stage 2 connected and closeout gate + +**Date:** 2026-08-22 +**Verdict:** PASS for every machine-local Stage 2 row; external hardware, +second-client remote-player evidence, and final project-owner acceptance remain +explicit gates + +## Scope and evidence boundary + +This report records the executable ACE-connected, dense-scene A/B, long-life, +external-package, shader, build, and complete-test work that followed the +[Stage 1 live approval](2026-08-22-atmospheric-stage1-live-gate.md). It applies +the measured constraints and budgets already established in the +[terrain and atmospheric findings](2026-08-21-terrain-and-atmospheric-rendering-findings.md); +it does not re-derive them or revisit that report's refuted claims. + +The measured binaries were clean-source Release products. The retail renderer +remained the default and authoritative path. No physics or collision behavior +was changed. + +## Connected scenario matrix + +The three-process connected lifecycle gate passed on exact commit `0b6c6557`. +Its report is +[`logs/connected-world-gate-20260822-132443/report.json`](../../logs/connected-world-gate-20260822-132443/report.json). +The capped six-stop process ran for 249.114 seconds, the fresh uncapped reconnect +for 67.917 seconds, and the pack-transition process for 51.277 seconds. All +three exited gracefully with no hard failures. Full graphical-process teardown +and the subsequent fresh Vulkan context/device construction passed. + +The route proved: + +- capped and uncapped operation, portal travel, reconnect, fresh process, and + destination publication/retirement; +- outdoor, Facility Hub interior/dungeon, and outdoor-after-dungeon states; +- atomic High select, retail disable, High re-enable, 1024 x 768 resize, clear, + overcast, and rain transitions; +- resource-free retail restoration and active enhanced metadata at every named + screenshot; and +- terminal render-scene shadow parity with zero mismatches and zero pending + deltas. + +The connected metadata makes the caster boundary concrete. The transition row +published 6,624 casters: 374 terrain commands, 6,571 outdoor statics, 26 +buildings, 10 animated statics, one local player, 14 non-player creatures, one +other live dynamic, and one equipped child. The capped login row reached 9,533 +casters, including 922 animated statics; Holtburg after the dungeon reached +9,539. Facility Hub correctly published `Outdoor=false`, zero directional +strength, and zero casters. Outdoor DAT publication still cannot distinguish a +tree from other outdoor scenery, and create-object metadata still cannot +distinguish a hostile monster from another non-player creature, so the report +keeps the authoritative `OutdoorStatics` and `NonPlayerCreatures` labels. + +One diagnostic distinction is retained rather than hidden: streaming frames +recorded transient render-frame candidate-order differences before the final +candidate sets and digests converged. The authoritative render-scene shadow +comparison finished 77/77 with zero mismatch in the transition process; no +pack or retail-output divergence remained at the terminal checkpoints. + +## Dense turning A/B and frame pacing + +Matched dense-Arwic runs used the same route, commit `1f75ce05`, resolution, +camera turn, server, character, entity population (15,522), and warmed scene: + +- Atmospheric Medium: + [`logs/connected-dense-town-20260822-133441.report.json`](../../logs/connected-dense-town-20260822-133441.report.json) +- retail/off: + [`logs/connected-dense-town-20260822-133727.report.json`](../../logs/connected-dense-town-20260822-133727.report.json) + +| Phase | Retail CPU p50 / p95 / p99 | Medium CPU p50 / p95 / p99 | Retail GPU p50 / p95 | Medium GPU p50 / p95 | +|---|---:|---:|---:|---:| +| Six-second turn | 27.8 / 32.9 / 36.7 ms | 28.6 / 32.2 / 40.2 ms | 0.6 / 1.2 ms | 1.5 / 1.9 ms | +| Stationary | 28.6 / 30.2 / 31.1 ms | 29.1 / 30.9 / 32.6 ms | 0.9 / 0.9 ms | 1.7 / 1.8 ms | + +The user's turning hitch reproduces on the retail path: Medium did not worsen +turn CPU p95 (32.2 versus 32.9 ms). It adds the expected GPU work, about +0.7–0.9 ms at p95/p50 in this run. The Atmospheric screenshot's pack-owned +window reports incremental CPU p50/p95/p99 of 0.209/0.248/0.302 ms, inclusive +GPU p50/p95/p99 of 1.374/1.818/1.869 ms, 14,890 casters, three cascades, +61,655,840 resident bytes, and 44,236,800 transient bytes. Medium therefore +stays inside its declared CPU, GPU, and 128 MiB resident budgets. + +Process working/private memory was also recorded, as required: the stationary +Medium process was 1,669.9/2,084.4 MiB versus retail's 1,354.8/1,676.8 MiB. +Those process totals include driver and shared host allocations and are not +substituted for the exact pack-owned GPU ledger. Retirement and terminal +convergence are covered by the long route and deterministic lifecycle gates. + +## Long lifetime and package lifecycle + +The nine-stop Medium route passed on exact commit `1f75ce05`: +[`logs/connected-r6-soak-20260822-134004.report.json`](../../logs/connected-r6-soak-20260822-134004.report.json). +It ran for 516.064 seconds through Caul, Sawato, Rynthid, Aerlinthe, Sawato +revisit, Holtburg, Caul return, Sawato plateau, and Caul plateau. Every +materialization, movement/jump/combat exercise, return/convergence check, and +graceful close passed. The warnings are expected world/DAT population noise; +there are no renderer, pack-budget, or lifecycle failures. + +The connected graphical external-package gate passed all six fresh processes +on exact commit `f92479ac`. Its machine-readable report is +[`artifacts/atmospheric-rendering/connected-package-lifecycle-20260822-135333/report.json`](../../artifacts/atmospheric-rendering/connected-package-lifecycle-20260822-135333/report.json). + +| Scenario | Plugin outcome | Renderer outcome | Persisted selection | +|---|---|---|---| +| Install/select v1 Low | loaded | external v1 active | external v1 | +| Replace by v2 with stale v1 selection | loaded | safe retail fallback with exact version diagnostic | retail | +| Explicitly select v2 High | loaded | external v2 active | external v2 | +| Remove package | failed-not-found | safe retail fallback | retail | +| Inject failure after registration | failed and transaction rolled back | safe retail fallback | retail | +| Correct package and reselect | loaded | external v2 active | external v2 | + +Every process connected, entered world, captured its render-pack metadata, +disconnected, and exited with code zero. Failure rows created no half-active +pack and recovery required an explicit corrected selection. + +## Final automated gate + +On clean exact code commit `f92479ac`: + +- managed shader regeneration compiled **24/24** Vulkan pairs and produced no + tracked SPIR-V difference; +- forced locked restore passed; +- the complete Release solution built with **0 warnings and 0 errors**; and +- the repository-owned fresh-process gate passed **15,178/15,178** tests with + zero skips or failures across 14 assemblies. App contributed **5,950/5,950**. + +The complete logs, TRX files, environment inventory, hashes, and aggregate +summary are under +[`artifacts/atmospheric-rendering/stage2-closeout-release-gate-f92479ac/`](../../artifacts/atmospheric-rendering/stage2-closeout-release-gate-f92479ac/). + +## Remaining external gates + +Campaign AR is not declared shipped by this report. Three evidence classes are +not available to this machine-local run: + +1. A second connected client/account must produce a nonzero authoritative + `RemotePlayers` caster row and a visible moving remote-player shadow. +2. Supported physical GPU classes other than the installed Radeon RX 9070 XT + and integrated AMD adapter must repeat the required pack-off/Low/Medium/ + High/Auto resolution and pacing rows. The integrated adapter currently + proves safe Auto-to-retail fallback, not active Low or the complete matrix. +3. The project owner must later perform and explicitly accept the final + pack-off/pack-on visual matrix, including moving sun and moon shadows, + foliage cutouts, temporal shimmer/cascade seams, indoor gating, rays and + sun-only volumetrics, and retail restoration. + +These are evidence gates, not authorization for more renderer features. The +current code, SDK, connected lifecycle, package lifecycle, long lifetime, and +machine-local automation are complete.