@@ -58,14 +58,18 @@ Server telemetry currently shares the strict loopback Stripe-fake process; the
5858generic modular fake-service refactor remains scoped to the roadmap's
5959` e2e/06b-enterprise-integrations ` phase.
6060An exclusive checkout-level orchestrator lock prevents concurrent runs from
61- racing on ` .next ` , the shared build cache, or the fixed app/realtime ports.
61+ racing on ` .next ` , the shared build cache, or the fixed app/realtime ports. The
62+ lock records managed process groups, so recovery from an uncatchable
63+ orchestrator termination kills verified stale descendants before admitting a
64+ new writer.
6265
6366On interruption, the runner launches a detached cleanup supervisor before
6467exiting. It terminates managed process groups, force-drops the guarded database,
6568and removes temporary auth/cloud-config directories even if another Ctrl-C
6669terminates the foreground package runner.
6770Cleanup failures retain the lock and require the reported resources to be
6871inspected and cleaned before manually removing ` e2e/.cache/orchestrator.lock ` .
72+ Failure to start the detached cleanup supervisor also retains the lock.
6973
7074Pass Playwright arguments after ` -- ` :
7175
@@ -160,26 +164,31 @@ the in-memory canary scans the manifest, logs, report files, and trace archives
160164and fails if a synthetic password, invitation token, or runtime secret escaped
161165the excluded private directories. Cancelled CI runs do not upload unscanned
162166diagnostics, and an unreadable canary or incomplete archive scan causes all
163- potentially unscanned diagnostic roots to be scrubbed. Storage-state session cookies are intentionally not canaried
167+ potentially unscanned diagnostic roots to be scrubbed. CI uploads failure
168+ diagnostics only when the runner wrote its successful scan marker. The fixed
169+ foundation smoke password is public test input and is intentionally not a
170+ canary, so expected login traces remain useful. Storage-state session cookies are intentionally not canaried
164171because authenticated Playwright traces contain them by design; they are
165172synthetic and invalid once the run database is dropped.
166173Fresh-session recapture is deliberately deferred. Future membership-mutation
167174coverage must explicitly restore a private credential handoff and re-review its
168175access boundary rather than assuming credentials persist through Playwright.
169176
170177E2E builds verify the pinned Bun executable plus reviewed sandbox-bundle
171- source, direct dependency, and output fingerprints and never regenerate
172- committed ` .cjs ` files.
178+ source, direct dependency, and output fingerprints. They also regenerate the
179+ bundles into a temporary directory and require those fresh outputs to match the
180+ reviewed fingerprints without modifying committed ` .cjs ` files.
173181` bun run build:sandbox-bundles:integrity ` is the explicit maintenance command
174182that regenerates bundles and their reviewed integrity manifest together.
175- Unrelated monorepo lockfile changes do not invalidate the bundle fingerprint;
176- the committed output hashes still detect any transitive change that alters a
177- bundle.
183+ Unrelated monorepo lockfile changes do not invalidate the reviewed fingerprint;
184+ the fresh-output comparison detects transitive changes that alter a bundle.
178185
179186Reset/reseed cleanup remains deferred with keep-stack supervision. Ordinary
180187runs own a unique guarded database and remove it wholesale rather than carrying
181188untested row-level deletion code.
182189
183190Provider log scans are diagnostic tripwires, not proof of zero egress. The
184191primary boundaries are the default-deny child environment, provider disabling,
185- loopback-only service bindings, and guarded Stripe transport.
192+ loopback-only service bindings, guarded Stripe transport, disabled hosted
193+ marketing tags, and a browser-context allowlist that rejects every HTTP(S)
194+ origin outside the app and realtime service.
0 commit comments