You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First formal instance of the sworn → Baton feedback loop. A 2026-07-12 resume-from-unclean-exit dogfood in sworn (release 2026-07-11-contract-edge-gates, driver grok-4.5 via OpenRouter) surfaced 7 findings; triage routed the protocol-level ones here. Source of truth: sworn repo docs/captures/2026-07-12-baton-handoff-capability-policy-and-protocol-updates.md (and …-resume-recovery-dogfood-findings.md), sworn ADR-0013.
Baton owns these contracts; sworn implements against whatever Baton ratifies and re-vendors on the VERSION-pin bump (ADR-0010). Nothing here is imposed.
Actionables
§3.1 — NEW SCHEMA capability-policy-v1 (headline). A model-agnostic contract declaring (a) the capability taxonomy and (b) each role's required capabilities. Baton owns the roles, so role→required-capability is a Baton concern. Baton declares the hard requirement; it does NOT rank or pick models (that stays engine-side, eval-based). Front half of the golden thread: need → role → required-capability → eligible-model. Replaces unportable model pins ("verifier = opus for 1M context") with an auditable, model-agnostic requirement that survives frontier moves.
§3.2 — Rule 11 resume-reset contract. A resumed loop must restore each track worktree to its committed slice state (reset --hard + clean) before re-dispatch. Finding 1: crash debris from an unclean exit contaminated the retry's diff (and tripped Finding 5's detector on leftover code). Same fail-closed principle Rule 11 already applies to process-global mutation, extended to the worktree.
§3.3 — Rule 9 autonomous-mode gate semantics. Define the design-review gate's behaviour when no human Coach is in the loop. Finding 6: the autonomous loop generated the design TL;DR and proceeded straight to implementing — the gating captain dispatch had deferred out. Human-in-the-loop semantics are defined; autonomous semantics are not. Decision required (Type-1): auto-proceed (recorded) / self-review by captain / hard-pause for async Coach ack. Handoff recommends hard-pause on Type-1, never auto-proceed.
§3.4 — Rule 10 mock = code construct, not string match. Finding 5: the S03 assemble slice (whose job is to parse boundary/mock annotations) contains string literals like "// @no-mock\n// @mock-boundary …"; the first-pass detector matched the literals and failed the slice closed. A "mock at a boundary" is a code construct (a call/binding substituting the boundary), detected against code tokens (non-string/non-comment spans or AST), not raw text.
§3.5 — Rule 8/9 gate contract when a capability is genuinely absent. With §3.1 this is an override-only edge case, but it should be defined: when a structured-output-dependent gate is routed to a model that cannot produce structured output, does it degrade to a still-gating prose pass or record a Rule-2 (capability-absent) deferral? Today it defers silently.
§5 — Formalise the feedback loop (CONTRIBUTING / "Feedback from reference engines" note): triage every finding protocol vs engine; route protocol → Baton dogfood-feedback issues linking the sworn capture; make the loop durable reference, not tribal memory.
Ownership (from the handoff's finding table)
Findings 0, 4 stay in sworn (engine). Findings 2, 3 stay in sworn but motivate the capability architecture (ADR-0013 — "read what the provider publishes," not "hardcode per model"). Findings 1, 5, 6 + the capability policy are the Baton actionables above.
Governance: land as a human-ratified package → new minor (v0.11.0). sworn re-vendors on the VERSION-pin bump.
First formal instance of the sworn → Baton feedback loop. A 2026-07-12 resume-from-unclean-exit dogfood in sworn (release
2026-07-11-contract-edge-gates, driver grok-4.5 via OpenRouter) surfaced 7 findings; triage routed the protocol-level ones here. Source of truth: sworn repodocs/captures/2026-07-12-baton-handoff-capability-policy-and-protocol-updates.md(and…-resume-recovery-dogfood-findings.md), sworn ADR-0013.Baton owns these contracts; sworn implements against whatever Baton ratifies and re-vendors on the VERSION-pin bump (ADR-0010). Nothing here is imposed.
Actionables
capability-policy-v1(headline). A model-agnostic contract declaring (a) the capability taxonomy and (b) each role's required capabilities. Baton owns the roles, so role→required-capability is a Baton concern. Baton declares the hard requirement; it does NOT rank or pick models (that stays engine-side, eval-based). Front half of the golden thread: need → role → required-capability → eligible-model. Replaces unportable model pins ("verifier = opus for 1M context") with an auditable, model-agnostic requirement that survives frontier moves.reset --hard+clean) before re-dispatch. Finding 1: crash debris from an unclean exit contaminated the retry's diff (and tripped Finding 5's detector on leftover code). Same fail-closed principle Rule 11 already applies to process-global mutation, extended to the worktree."// @no-mock\n// @mock-boundary …"; the first-pass detector matched the literals and failed the slice closed. A "mock at a boundary" is a code construct (a call/binding substituting the boundary), detected against code tokens (non-string/non-comment spans or AST), not raw text.protocolvsengine; routeprotocol→ Batondogfood-feedbackissues linking the sworn capture; make the loop durable reference, not tribal memory.Ownership (from the handoff's finding table)
Findings 0, 4 stay in sworn (engine). Findings 2, 3 stay in sworn but motivate the capability architecture (ADR-0013 — "read what the provider publishes," not "hardcode per model"). Findings 1, 5, 6 + the capability policy are the Baton actionables above.
Governance: land as a human-ratified package → new minor (v0.11.0). sworn re-vendors on the VERSION-pin bump.