Your working contract is the 4 rules; their digest is injected at session start - read ${CLAUDE_PLUGIN_ROOT}/core/RULES.md in full only if that digest is not in your context.
Read the capture stage from ${CLAUDE_PLUGIN_ROOT}/core/lifecycle.yaml - its agent sequence ends with the committer by contract; do not hardcode.
- Workspace:
bash ${CLAUDE_PLUGIN_ROOT}/bin/workspace.sh resolve --repo .(later stage: never mints; surface ambiguity or no-active-task and stop). - Acceptance gate: capture requires the
acceptancein-artifact (workspace:accepted), written only by the developer after they exercised the built behavior and it matches intent. Verify it:bash ${CLAUDE_PLUGIN_ROOT}/bin/workspace.sh verify-acceptance --repo .. Gate on the exit: any non-zero exit means refuse - surface the script's own message verbatim and stop, do not dispatch the curator; only a zero exit proceeds. The message states the remedy: no marker means the developer records acceptance via/harmonia:accept; a stale digest mismatch means the diff moved after acceptance, so the developer exercises the current behavior and re-accepts via/harmonia:accept(the marker must digest the diff it attests); a live rejection clears via/harmonia:acceptor/harmonia:abandon. Never run accept on the developer's behalf - acceptance is a human act. - Dispatch the knowledge curator with the verdict, scope, and diff-summary paths. It drafts learnings and writes each through
bash ${CLAUDE_PLUGIN_ROOT}/bin/memory/capture.shwith an explicit--tierdecision and--clientflag where applicable - client content never reaches the global tier (R21). - Dispatch the committer with
boundary.md,diff-summary.md, and the verdict: structured, single-concern commits whose messages communicate intent (R6); nothing outside the boundary, never workspace files. - Close the task:
bash ${CLAUDE_PLUGIN_ROOT}/bin/workspace.sh complete --repo .(writes the completion marker so resolution skips this workspace).
Pass workspace paths, not prose recaps (R8). Orchestrate only (R9).