Imported from the codex worktree's uncommitted work
(C:/Users/erikn/.codex/worktrees/bd98/acdream on
codex/atmospheric-rendering-campaign), on top of its 8b7b601b.
The remote-player shadow gate ran two clients on fixed sleeps, so the
observer could move before the primary had taken its 'before' screenshot,
or the primary could take its 'after' shot before the observer had moved.
Now the harness publishes named signal files into each client's artifact
directory and the routes block on them:
- IRetailUiAutomationRuntime.TryIsAutomationSignalPublished, implemented
by WorldLifecycleAutomationController over <artifactDir>/signals/
<name>.signal (names validated by AutomationArtifactName, so no path
escape).
- 'wait signal <name> [timeoutMs]' in RetailUiAutomationScriptRunner.
- run-connected-render-pack-remote-player-gate.ps1 publishes
'primary-before' to the observer after the primary's before-shot
completes, then 'observer-moved' to the primary after the observer's
remote-observer-moved checkpoint.
- Both routes teleport with an explicit heading and wait 12 s to settle.
Build green; the three touched App test classes pass 58/58 including the
two new signal tests.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Every .csproj under tools/ is part of AcDream.slnx. The complete Release
gate restores and builds these tools, so a missing personal checkout or an API
change cannot leave a tracked tool silently broken. They are diagnostic/manual
programs: the gate builds them but does not run data-dependent investigations.
Tool
Purpose
Runtime prerequisite
A8CellAudit
Inspect landblock, EnvCell, portal, and collision topology.
Installed AC DAT files / the arguments documented by the program.
dump-keymap
Extract the retail master input maps and decoded actions.
Installed client_portal.dat.
PesChainAudit
Walk weather PES call chains and particle emitters.
Installed AC DAT files.
ProjectileVfxAudit
Audit projectile physics-script and particle-emitter VFX mappings.
Installed AC DAT files.
RainMeshProbe
Inspect rain surfaces, polygon sidedness, and generated mesh counts.
Installed AC DAT files.
RetailTimeProbe
Read retail time-of-day and sky state for comparison.
Windows, a running retail client, and process-read access.
SetupInspect
Dump Setup parts, placement poses, and animation frames.
Installed AC DAT files and a Setup ID.
ShaderCompiler
Compile the Vulkan GLSL shader set to committed SPIR-V.
Source and output directory arguments.
SkyObjectInspect
Inspect Dereth sky/day-group objects and texture data.
Installed AC DAT files.
StarsProbe
Audit sky-object geometry, UV ranges, and surfaces.
Installed AC DAT files.
TextureDump
Dump render-surface statistics and texture images.
Use pwsh ./tools/run-release-gate.ps1 for the authoritative bounded gate.
Package versions and lock-file maintenance are documented in
docs/release-gate.md.