acdream/docs/research/2026-08-22-atmospheric-stage2-connected-gate.md

8.1 KiB
Raw Blame History

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. It applies the measured constraints and budgets already established in the terrain and atmospheric findings; 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. 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:

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

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/.

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.