Why: include the current integration baseline before verification.
Evidence: fetched origin/main=dc01517de1cfb86abbd26dfb7932023763019d5d.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=682a4e8263fe007cb102fc9deaf71bda514ee387.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=82c8989973112d0533ee7c70654c907269df7859.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=84900d44d34d2d42428a5b5de1d92328d90a9950.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: the S9 acceptance corrections left no repeatable harness for the
duty-flows browser verification, and the doc-level in-flight confirmation
path had never been driven in a real browser; the legacy e2e.sh seeding
predates the login-key credential contract.
Evidence: bash scripts/e2e-duties.sh end-to-end PASS — granted non-admin
preview 200, in-flight round + reviewer change surfaces the confirmation
checkbox and a confirmed save invalidates the doc submission, idempotent
re-save applied=0 unchanged=1, unauthorized member preview 400,
void-legacy then doc submit passes (evidence row in this card).
Impact: scripts-only; no product code or pins change.
Refs: S9 acceptance report P0-B
Why: Emergency Codex fallback must not run before Cursor, Antigravity, and PI have each been exhausted.
Evidence: Cursor transport 5e6c93f765c232783a7dccb05544e26c386fb031; 29 config tests, focused emergency controller test, and 449 governance tests passed with 19 skips.
Impact: Emergency-mode implementation, repair, and test roles now require exactly one enabled profile for each normal adapter while preserving configured order.
Refs: .task/feature-agent-cli-enforcement.md
Why: The approved contract requires exactly three safe attempts for Cursor, agy, and PI, then one Codex emergency attempt, never host implementation authority.
Evidence: Routing/config tests were RED for never, max attempts, forbidden adapters, and legacy host fallback; 133 related tests now pass with one opt-in probe skipped.
Impact: Normal emergency-mode roles reject all non-Cursor/agy/PI adapters, project fallback is never, and Codex remains available through emergency/review paths.
Refs: independent Codex review of feature/agent-cli-enforcement
Why: Success-shaped receipts and caller-writable history must not authorize apply/admit without controller-originated provenance.
Evidence: Fabricated, unsigned, tampered-history, and moved-ref tests were RED before HMAC binding; 52 controller/history/admission tests now pass.
Impact: Stores a local 0600 attestation key, signs successful history including transport commit SHA, and verifies it before apply/admit.
Refs: independent Codex review of feature/agent-cli-enforcement
Why: Safe routing must not retry unproven cleanup, ignore worker fail-stop terminals, or lose out-of-scope rename sources.
Evidence: New tests were RED for each Review finding; 44 controller and admission tests now pass with diff-check clean.
Impact: Tightens safety classification and path inventory only; routing order and provenance contract remain unchanged.
Refs: independent Codex review of feature/agent-cli-enforcement
Why: Agents must use configured CLIs for implementation and testing, while remaining free to inspect, plan, test, and iterate within bounded scope.
Evidence: Task-card contract tests and the full 430-test governance discovery pass with 19 existing skips; diff-check passes.
Impact: Defines three safe attempts per normal CLI, one emergency Codex attempt, fail-stop terminals, and mandatory apply/admit integration.
Refs: feature/agent-cli-enforcement
Why: Implementation changes must be mechanically tied to a successful CLI transport instead of relying on agents to follow prose.
Evidence: Admission tests went RED without apply/admit; 10 admission, 41 agent-exec, and 62 task tests now pass with exact staged-content matching.
Impact: Adds validated transport fast-forwarding and rejects unproven implementation commits while exempting task cards and approved plan/spec paths.
Refs: feature/agent-cli-enforcement
Why: Normal execution roles must exclude Codex while a single enabled Codex adapter remains available for emergency routing and review.
Evidence: Parser invalid-case tests were RED before validation; all 17 config tests and agent_exec validate now pass.
Impact: Enables three attempts per normal profile, stable Cursor routing, and a validated emergency Codex profile.
Refs: feature/agent-cli-enforcement
Why: Codex CLI is permitted only after every normal execution profile exhausts three safe attempts, with no host implementation fallback.
Evidence: The emergency RED test lacked the fourth Codex attempt before implementation; 32 controller/history executions now pass.
Impact: Adds one emergency attempt for implementation, repair, and test roles while preserving fail-stop statuses and review isolation.
Refs: feature/agent-cli-enforcement
Why: Each non-Codex execution profile must receive three safe attempts before routing advances.
Evidence: The focused RED test observed one retryme launch before implementation; the controller and history suites now pass 31 executions.
Impact: Retries only unavailable and failed-clean outcomes; existing fail-stop statuses remain immediate.
Refs: feature/agent-cli-enforcement
Why: Routing needs an explicit per-profile attempt limit and a named Codex emergency profile before controller enforcement can be implemented.
Evidence: The new parser test failed on unknown keys before implementation; all 15 config test executions now pass and git diff --check is clean.
Impact: Adds backward-compatible optional configuration fields only; routing behavior is unchanged in this commit.
Refs: feature/agent-cli-enforcement
Why: env ensure downloads an interpreter and wheels. The real-combination start test allows 120 seconds, and that download made rc1 start time out.
Evidence: CI job 5184 timed out in test_U3_real_agent_identity_lifecycle_sqlite on scripts/svc.sh rc1 start.
Impact: Start only mounts a base layer that already exists. The first build is an explicit env ensure, run outside start.
Refs: Agent-System-Dev pull 570
Co-authored-by: Cursor <cursoragent@cursor.com>