Skip to content

Epic: dogfood-feedback from sworn 2026-07-12 — capability-policy schema + Rule 9/10/11 refinements #62

Description

@sawy3r

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    dogfood-feedbackProtocol feedback routed up from a reference-engine (sworn) dogfood

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions