docs(render): record Campaign AR Stage 2 closeout

This commit is contained in:
Erik 2026-08-22 14:01:07 +02:00
parent f92479ac3e
commit e56ac57486
3 changed files with 187 additions and 31 deletions

View file

@ -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 mandatory renderer requires modern OpenGL capabilities beyond Apple's native
OpenGL ceiling; revisit macOS only if a supported graphics backend is chosen. 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.
--- ---

View file

@ -1,13 +1,12 @@
# Campaign AR — Atmospheric Rendering / Shader Packs # Campaign AR — Atmospheric Rendering / Shader Packs
**Date:** 2026-08-21 **Date:** 2026-08-21
**Status:** STAGE 2 ACTIVE — the approved authored sun-and-moon shadow-source **Status:** MACHINE-LOCAL STAGE 2 COMPLETE — the authored sun-and-moon
extension and every non-physical Stage 1 correctness, performance, lifetime, shadow-source extension, Stage 1 owner gate, connected ACE matrix, dense A/B,
Release, evidence, and documentation gate are complete. After the live long lifetime, graphical package lifecycle, shader, locked-restore, Release,
sun/moon, source-transition, temporal-stability, desktop-performance, and and complete-test gates pass. A second-client remote-player row, unavailable
exposure correction round, the project owner accepted Stage 1 on 2026-08-22. physical GPU classes, and final project-owner pack-off/pack-on acceptance remain
Stage 2 connected, lifetime, package-lifecycle, physical-hardware, and final external closeout gates; the campaign is not yet declared shipped.
closeout evidence is now active.
**Phase id:** **Campaign AR** — assigned by the project owner on 2026-08-22 **Phase id:** **Campaign AR** — assigned by the project owner on 2026-08-22
**Scheduling:** originally held for the post-M7 rendering-polish pass; the **Scheduling:** originally held for the post-M7 rendering-polish pass; the
project owner explicitly authorized implementation on 2026-08-21. This 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 source selection, and finished every automated gate that did not require the
project owner's physical-display judgment. The owner accepted the subsequent project owner's physical-display judgment. The owner accepted the subsequent
live visual/performance round on 2026-08-22 after the default Atmospheric 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 exposure was corrected from 1.0 to 0.80. The machine-local Stage 2 rows are now
remaining connected, lifetime, package-lifecycle, physical-hardware, evidence, complete. Remaining closeout is limited to a second connected remote player,
and final owner-acceptance rows; it does not add another renderer feature tier. 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 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 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, 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. 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 The exact commands, commits, metrics, artifacts, and evidence limits are in the
remaining matrix: moving local/remote players, known monster encounters [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 reported under the authoritative `NonPlayerCreatures` category, and equipped
children; landblock publication/demotion; clear, overcast and rain; children; landblock publication/demotion; clear, overcast and rain;
outdoor/interior/dungeon transitions; portal travel and reconnect. Capture outdoor/interior/dungeon transitions; portal travel and reconnect. Capture
@ -500,25 +503,26 @@ Stage 2 and closeout gates, now active:
transitions and weather, and transitions and weather, and
fresh-process renderer/context/device-recreation assertions against a real fresh-process renderer/context/device-recreation assertions against a real
ACE session, proving exact resource convergence and no stale maps/owners. ACE session, proving exact resource convergence and no stale maps/owners.
The local recording/device-recreation semantics are closed; this connected Remote-player diagnostics remained zero because only one account/client was
execution and its user-visible evidence are not. available; a second connected client must close that evidence row.
2. Repeat the now-current clean-source RX 9070 XT 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 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 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 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 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 fallback row, and one high-end reference adapter do not prove the remaining
physical rows. 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; isolation; rays at dawn/noon/dusk, behind-camera and occluded states;
foliage cutouts; moving animated shadows under sun and moon; indoor gating; foliage cutouts; moving animated shadows under sun and moon; indoor gating;
source-transition continuity; temporal pixelation/shimmer; bias/cascade seam source-transition continuity; temporal pixelation/shimmer; bias/cascade seam
review; sun-only volumetric weather/occluder behavior; and pack-off review; sun-only volumetric weather/occluder behavior; and pack-off
restoration. restoration.
4. Exercise external install/select/update/remove/fail/recover flows in the 4. **PASS.** External install/select/update/remove/fail/recover flows passed in
graphical host, then complete the long lifetime run. Automated SDK and six fresh connected graphical processes. The nine-stop Medium lifetime route
lifecycle fixtures do not replace this connected evidence. passed with graceful shutdown, as did the deterministic 12-cycle and
5. Obtain explicit project-owner acceptance of the final pack-off and pack-on 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. visual/performance matrix before changing this document to shipped.
### Slice 0 — Contract, capability probe, and acdream-default no-op ### 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 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 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 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 This is the campaign's headline slice. Add camera-relative cascades, opaque
and alpha-cutout caster variants, animated SSBO transforms, shadow receivers, 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 gate passed on 2026-08-22. The v1
manifest schema, semantic binding table, compatibility/failure guide, manifest schema, semantic binding table, compatibility/failure guide,
validator, built-in pack, and three buildable external samples are present and validator, built-in pack, and three buildable external samples are present and
automated. Connected graphical package lifecycle, long-run convergence, the automated. Connected graphical package lifecycle and long-run convergence pass.
remaining physical GPU classes, and project-owner acceptance remain open; the The second-client remote-player row, remaining physical GPU classes, and final
30-row RX 9070 XT reference matrix is complete. 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, Publish the manifest/schema, semantic binding table, sample no-op pack,
Atmospheric pack, compatibility diagnostics, authoring/validation tool, and Atmospheric pack, compatibility diagnostics, authoring/validation tool, and
@ -917,11 +923,12 @@ and adds the current renderer's ownership and lifecycle boundaries.
## Completion gate ## Completion gate
The design, Stage 1 implementation, automated validation, and project-owner The design, implementation, Stage 1 owner gate, and every available
live gate are complete. Stage 2 and closeout are active. The campaign becomes machine-local Stage 2 connected, performance, lifetime, package, shader, build,
**shipped** only after the subsequent and complete-test gate are complete. The campaign becomes **shipped** only
connected, full physical-hardware, lifetime, and visual gates above pass and after the second-client remote-player row, remaining physical-hardware rows,
the project owner accepts both sides of the final matrix: 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 - **pack off:** unchanged output, performance, ownership, and lifecycle from
acdream's authoritative default retail-faithful renderer; and acdream's authoritative default retail-faithful renderer; and

View file

@ -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.70.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.