docs(render): audit Campaign AR completion evidence
This commit is contained in:
parent
d84edf0ceb
commit
772526d0cd
4 changed files with 92 additions and 14 deletions
|
|
@ -0,0 +1,73 @@
|
|||
# Campaign AR completion audit
|
||||
|
||||
**Date:** 2026-08-22
|
||||
**Branch:** `codex/atmospheric-rendering-campaign`
|
||||
**Status:** all implementation and machine-local gates complete; not shipped
|
||||
|
||||
## Audit boundary
|
||||
|
||||
This is the requirement-by-requirement closeout audit for
|
||||
[Campaign AR](../plans/2026-08-21-atmospheric-rendering.md). It uses the
|
||||
measured evidence and constraints in the
|
||||
[terrain and atmospheric findings](2026-08-21-terrain-and-atmospheric-rendering-findings.md)
|
||||
without re-deriving them or revisiting that report's three refuted claims. The
|
||||
detailed connected results remain in the
|
||||
[Stage 2 report](2026-08-22-atmospheric-stage2-connected-gate.md).
|
||||
|
||||
The last remote fetch reported `origin/main` at `6c79d35c`; merge `99cf26e0`
|
||||
is in this branch and `git rev-list --left-right --count HEAD...origin/main`
|
||||
reported 11 branch commits and zero missing main commits before this audit's
|
||||
documentation-only closeout commit.
|
||||
|
||||
## Requirement ledger
|
||||
|
||||
| Requirement | Verdict | Authoritative evidence |
|
||||
|---|---|---|
|
||||
| Stage 1 project-owner stop | Pass | The owner's 2026-08-22 “Looks good!” acceptance, after exposure 1.0 → 0.80, is recorded in the [live-gate report](2026-08-22-atmospheric-stage1-live-gate.md). |
|
||||
| Retail-faithful path stays default and authoritative | Pass | The checked-in production no-op oracle, six physical pack-off rows, connected disable/restore transitions, and package-failure rows all pass. A branch diff contains only newly named atmospheric/detail shader sources plus the generated shader manifest; no pre-campaign retail shader source is modified. |
|
||||
| Physics and collision unchanged | Pass | `git diff origin/main...HEAD -- src/AcDream.Runtime src/AcDream.App/Physics src/AcDream.Core/Physics` is empty. The connected routes use the existing gameplay simulation without changing it. |
|
||||
| Tier 1 bloom, filmic tone mapping, colour grade, vignette, neutral settings, resize, and retained-UI/private-view isolation | Pass for implementation and available automation/physical rows | Slice 1 tests and the RX 9070 XT 30-row matrix pass; final project-owner image judgment remains below. |
|
||||
| Tier 1 authored-sun rays | Pass for implementation and connected state transitions | Authored sun/day-group/weather, occlusion-mask, behind-camera/off gates, and pre-tonemap composition are automated; connected time/weather transitions pass. Final physical-display dawn/noon/dusk, occlusion, and edge-flicker judgment remains below. |
|
||||
| Tier 2 moving authored sun/moon shadows are the headline | Pass for implementation, Stage 1 owner gate, and available connected rows | The selected-source contract, stabilized cascades, opaque/cutout casters, animated transforms, receivers, outdoor/indoor gating, and weather energy pass. Connected metadata proves terrain, outdoor statics, buildings, animated statics, local player, non-player creatures, other dynamics, and equipped children. The distinct-account remote-player row remains below. |
|
||||
| Headline caster membership without fabricated identity | Pass | Diagnostics report source-owned `OutdoorStatics` and `NonPlayerCreatures` rather than guessing tree or hostile-monster identity. The transition capture published 6,624 casters and the capped route reached 9,533. |
|
||||
| Low/Medium/High/Auto scaling and weak-hardware fail-safe | Pass on available hardware | The exact RX 9070 XT 30-row matrix passes. The integrated AMD Auto run retires atomically to retail with a visible reason and a 0.00365% paired sky-masked difference. Other physical adapters remain below. |
|
||||
| Tier 2+ sun-only volumetric shafts | Pass for implementation and available performance/lifecycle rows | Sun-only selection, weather/indoor gates, independent quality, depth reuse, neutral A/B, and the 2,048-sample reference-GPU cost row pass. Final owner occluder/weather judgment remains below. |
|
||||
| Connected select/disable/re-enable, resize, weather, interior/dungeon, portal, reconnect, and fresh renderer/device recreation | Pass | [`logs/connected-world-gate-20260822-132443/report.json`](../../logs/connected-world-gate-20260822-132443/report.json): three clean graphical processes, graceful exits, 77/77 terminal render-scene shadow parity, zero mismatch, and zero pending deltas. |
|
||||
| Dense turning/frame-pacing and desktop-performance investigation | Pass | Matched Medium/retail dense-Arwic reports show the reported turning hitch on both paths. Medium does not worsen CPU p95 (32.2 vs 32.9 ms) and adds about 0.7–0.9 ms GPU work. Pack-owned CPU/GPU/memory measurements stay within Medium budgets. |
|
||||
| Long-run resource convergence | Pass | [`logs/connected-r6-soak-20260822-134004.report.json`](../../logs/connected-r6-soak-20260822-134004.report.json) completes the 516.064-second nine-stop route with movement/jump/combat, revisits, convergence, and graceful shutdown. Deterministic 12-cycle and fresh-device fixtures also pass. |
|
||||
| External pack install/select/update/remove/fail/recover | Pass | [`artifacts/atmospheric-rendering/connected-package-lifecycle-20260822-135333/report.json`](../../artifacts/atmospheric-rendering/connected-package-lifecycle-20260822-135333/report.json): all six fresh connected graphical processes pass; failures create no half-active pack and corrected recovery is explicit. |
|
||||
| Public pack API and SDK | Pass | BCL-only v1 contracts, manifest schema, semantic bindings, compatibility guide, validator, built-in pack, no-op sample, and two Tier-2 samples are present. External projects reference only `AcDream.Plugin.Abstractions`, not App or Vulkan. |
|
||||
| Shaders and generated artifacts | Pass | Managed regeneration compiles 24/24 Vulkan pairs. The final release gate reports no tracked SPIR-V difference after regeneration. |
|
||||
| Locked restore, Release build, and complete hermetic tests | Pass | [`artifacts/atmospheric-rendering/stage2-closeout-release-gate-d78ce100/release-gate-summary.json`](../../artifacts/atmospheric-rendering/stage2-closeout-release-gate-d78ce100/release-gate-summary.json): clean exact code commit `d78ce100`, locked restore pass, zero-warning/error Release build, and 15,179/15,179 tests passing with zero skips/failures across 14 assemblies. |
|
||||
| Campaign documentation and divergence registration | Pass | Campaign plan, SDK docs, Stage 1/2 reports, roadmap pointer, release-gate graph update, IA-24, and this audit are present. Phase identifier remains **Campaign AR**. |
|
||||
| M4 priority is not displaced | Pass | The roadmap and campaign plan retain M4 as the active gameplay milestone and describe Campaign AR as owner-authorized parallel work. No roadmap milestone is reassigned. |
|
||||
|
||||
## Exact remaining external gates
|
||||
|
||||
No further renderer, SDK, tool, test, or machine-local documentation work is
|
||||
known from this audit. Campaign AR remains deliberately **not shipped** until
|
||||
all three evidence classes below pass:
|
||||
|
||||
1. **Distinct-account remote player.** Run
|
||||
`tools/run-connected-render-pack-remote-player-gate.ps1` with separate
|
||||
primary and observer ACE credentials. Require a nonzero authoritative
|
||||
`RemotePlayers` caster count plus a visible moving remote-player shadow.
|
||||
The same-account attempt is recorded in
|
||||
[`artifacts/atmospheric-rendering/connected-remote-player-20260822-140355/report.json`](../../artifacts/atmospheric-rendering/connected-remote-player-20260822-140355/report.json): the observer entered and moved, then ACE rejected the concurrent primary session. The corrected gate does not serialize credentials.
|
||||
2. **Unavailable physical adapters.** On every other supported physical Vulkan
|
||||
adapter, run the source-identical matrix for pack-off, Low, Medium, High,
|
||||
and Auto at 1920×1080, 2560×1440, and 3840×2160, each capped and uncapped.
|
||||
That is 30 rows per adapter. The installed RX 9070 XT already passes all 30;
|
||||
the installed integrated AMD row proves Auto-to-retail fallback only, so
|
||||
active Low and the other 29 rows on that adapter also remain external.
|
||||
3. **Final project-owner visual acceptance.** Compare pack off and pack on for
|
||||
Tier-1 neutral output and private views/UI; sun rays at dawn/noon/dusk,
|
||||
behind-camera and occluded states; foliage cutouts; moving local, remote,
|
||||
creature, tree, and building shadows under sun and moon; indoor gating;
|
||||
source transitions; temporal shimmer/pixelation and cascade/bias artifacts;
|
||||
sun-only volumetric weather/occluder behavior; and exact pack-off
|
||||
restoration. The owner must explicitly accept both sides before the plan or
|
||||
roadmap says shipped.
|
||||
|
||||
These are evidence gates, not open implementation slices. Any failure reopens
|
||||
only the behavior it contradicts; passing them closes the campaign.
|
||||
|
|
@ -172,3 +172,6 @@ not available to this machine-local run:
|
|||
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.
|
||||
|
||||
The campaign-wide requirement ledger and exact external-row definition are in
|
||||
the [Campaign AR completion audit](2026-08-22-atmospheric-campaign-completion-audit.md).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue