fix(gates): require secret-safe observer credentials

This commit is contained in:
Erik 2026-08-22 14:20:14 +02:00
parent 772526d0cd
commit fa3e7978ec
5 changed files with 36 additions and 22 deletions

View file

@ -49,9 +49,11 @@ 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.
`tools/run-connected-render-pack-remote-player-gate.ps1` with the primary
`ACDREAM_TEST_USER`/`ACDREAM_TEST_PASS` and distinct observer
`ACDREAM_TEST_OBSERVER_USER`/`ACDREAM_TEST_OBSERVER_PASS` environment
variables. 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

View file

@ -122,11 +122,14 @@ primary client then timed out waiting for `CharacterList`: ACE did not permit a
second simultaneous character from the same account. Both clients were closed
cleanly, and the failed row is not represented as renderer evidence.
The gate now accepts a separate observer account and password, keeps credentials
out of its report, fails fast on session failure, and records whether distinct
accounts were configured. The authoritative nonzero `RemotePlayers` caster row
and visible moving remote-player shadow therefore require only access to a
second account; no missing renderer or test-harness implementation remains.
The gate now reads separate observer credentials from
`ACDREAM_TEST_OBSERVER_USER`/`ACDREAM_TEST_OBSERVER_PASS`, rejects same-account
configuration before launch, keeps credentials out of its report, and fails
fast on session failure. Character indexes are independently selectable because
index zero on two accounts still names distinct characters; the entered-world
identity assertion is authoritative. The nonzero `RemotePlayers` caster row and
visible moving remote-player shadow therefore require only access to a second
account; no missing renderer or test-harness implementation remains.
## Final automated gate