test(e2e): spawned document-release subagent returns the JSON contract through a firing gate (#2733)

The behavioral proof the bug shipped without: ship-docsync stubs the
skill (no preamble, no gates) and skill-e2e-workflow suppresses the
gates by prompt. This gate-tier E2E plays the parent — it drives the
verbatim Step 18 dispatch prompt (extracted from the live pr-body.md,
drift-proof) against a real preamble-bearing document-release slice in
a Conductor-ambient env with both AUQ hooks seeded live, an unbumped
VERSION making Step 8 fire. Asserts: the final line parses as the
5-key JSON contract, the fired gate's auto-choice is recorded in
decisions, and VERSION is untouched (the gate resolved to its
recommended Skip). Burn-in: 1/1 pass, $0.35, 21 turns, 106s.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Garry Tan
2026-08-31 00:18:06 +00:00
co-authored by Claude Fable 5
parent 0c1b50441d
commit 85e4597b48
3 changed files with 305 additions and 0 deletions
+6
View File
@@ -159,6 +159,12 @@ jobs:
- name: e2e-ship-docsync
file: test/skill-e2e-ship-docsync.test.ts
tier: gate
# #2733 behavioral proof: the document-release JSON contract survives
# a firing AUQ gate inside a spawned-marked subagent. Whole-file
# tier-gated like ship-docsync, so the row carries tier: gate.
- name: e2e-docsync-spawned
file: test/skill-e2e-docsync-spawned.test.ts
tier: gate
# Consent-gate guardrail for the Third-Party Web Actions contract
# (Aside recommended-driver rewrite): hermetic shims, deterministic
# grep assertions, gate tier in E2E_TIERS.