Summary
Decapod 0.96.4 can place an agent in an unsatisfiable publication state:
- Workspace publication requires a material authored change under
.decapod/managed/specs/*.md.
- The generated agent contract prohibits agents from directly mutating
.decapod/* and requires all access through the Decapod CLI.
- The available
specs.refresh operation only refreshes attestations and explicitly does not satisfy the material-edit gate.
In addition, an unrelated completed-but-unverified todo blocks publication from a separate todo-scoped workspace.
Environment
- Decapod: 0.96.4
- Repository custody: worktree
- Workspace: isolated, non-protected feature branch
- Platform: macOS
Reproduction
- Create and claim a todo.
- Create an isolated workspace with
decapod workspace ensure.
- Make and test a small application change.
- Run
decapod validate or decapod workspace publish.
Observed failures:
PROOF_HOOK_FAILED: 1 done TODO(s) are CLAIMED but not VERIFIED: code_01kz8e93mabwgb8w.
STALE_SPECS_FINGERPRINT: Significant repo surfaces changed since last specs refresh. Review and rewrite living-spec authored prose ... fingerprint/attestation refresh alone is insufficient ... then call decapod rpc --op specs.refresh.
The unverified todo belongs to unrelated prior work. The current workspace has its own claimed todo, governed plan, trajectory, passing focused tests, and clean lint results.
Contract conflict
The generated AGENTS.md states both:
- Each PR needs a material authored living-spec rewrite.
- Do not mutate
.decapod/ state directly; all access must use the CLI.
No CLI operation appears to support authoring the required living-spec prose. decapod rpc --op specs.refresh is documented as insufficient for this gate. Consequently, an agent cannot reach a publishable state while obeying the generated contract.
Expected behavior
- Provide a sanctioned CLI/RPC operation for material living-spec authoring, or narrow the direct-mutation prohibition so agents may edit the authored portions of
.decapod/managed/specs/*.md.
- Scope proof-hook publication checks to the current todo/workspace, or report unrelated stale todos as repository-level warnings rather than blocking an independent PR.
- If human intervention is intentionally required for living-spec prose, make that decision gate explicit before implementation and provide a deterministic handoff/recovery command.
Actual behavior
Publication is blocked with no agent-permitted recovery path. decapod govern artifacts inventory --repair does not resolve either failure, and decapod workspace publish exits after validation.
Additional note
Warnings about machine-local session storage fallback and Docker socket permissions were also present, but appear unrelated to these two publication failures.
Summary
Decapod 0.96.4 can place an agent in an unsatisfiable publication state:
.decapod/managed/specs/*.md..decapod/*and requires all access through the Decapod CLI.specs.refreshoperation only refreshes attestations and explicitly does not satisfy the material-edit gate.In addition, an unrelated completed-but-unverified todo blocks publication from a separate todo-scoped workspace.
Environment
Reproduction
decapod workspace ensure.decapod validateordecapod workspace publish.Observed failures:
The unverified todo belongs to unrelated prior work. The current workspace has its own claimed todo, governed plan, trajectory, passing focused tests, and clean lint results.
Contract conflict
The generated AGENTS.md states both:
.decapod/state directly; all access must use the CLI.No CLI operation appears to support authoring the required living-spec prose.
decapod rpc --op specs.refreshis documented as insufficient for this gate. Consequently, an agent cannot reach a publishable state while obeying the generated contract.Expected behavior
.decapod/managed/specs/*.md.Actual behavior
Publication is blocked with no agent-permitted recovery path.
decapod govern artifacts inventory --repairdoes not resolve either failure, anddecapod workspace publishexits after validation.Additional note
Warnings about machine-local session storage fallback and Docker socket permissions were also present, but appear unrelated to these two publication failures.