| type | ProcessSpec | |
|---|---|---|
| summary | Defines what an effort note must preserve while work is active and how it closes. | |
| id | SPEC-0002 | |
| spec-status | active | |
| last-updated | 2026-05-19 | |
| aliases |
|
Efforts are bounded execution records against a frozen set of specs. They are the durable home for plan, execution notes, deviations, and closure — everything that would otherwise get lost in chat or commit messages.
- make active work legible at a glance
- preserve deviations and execution evidence
- give closure, audit, backport, and compounding work an explicit but lightweight home
- replacing specs with implementation detail
- using effort notes as permanent design documentation
- tracking day-to-day chatter; keep execution notes load-bearing
- Every effort note lives under
docs/efforts/and is namedYYYY-MM-DD-HH-MM-<slug>.md. - Frontmatter contains:
idnamecreated-atplan-approved-by(blank until real human approval)statussummary
- Body contains, in order:
ScopeSpec Set (Frozen)— wikilinks to every governingSpecLikenote plus its specid; links in this section are indexed as the canonical frozen-spec relationStories In Scope (Frozen)— wikilinks to embedded story nodes using canonicalSPEC-####.US#display text, plus selected acceptance-criterion wikilinks using canonicalSPEC-####.US#.AC#display text; links in this section are indexed as canonical frozen-story / frozen-criterion relations to embedded graph nodesSpec Coverage Checklist— one item per selected story / acceptance criterion, reusing the same durable story / criterion wikilinks fromStories In Scope (Frozen)Plan— populated byplanand approved before executionOriginal Intended Delivery— what the frozen stories said this effort intended to shipActual Delivered— what the effort actually shipped, deferred, or changedExecution Notes— appended during work as the effort-local journal; never rewritten historicallyDeviations— each deviation names what changed and whyCompounding Follow-ups— repeated friction, missing support, capability gaps, and smallest durable fixesClosure Checklist— one checklist item for implementation complete, audit run, backport complete, and compounding triage completeStatus— current effort status using the repo's effort-status vocabulary
plan-approved-byis set only by a real human name. Placeholders (user,owner,<pending>, handles, shorthand) are forbidden.created-atis the canonical effort creation/start timestamp. Filename timestamp remains naming/discovery metadata only.created-at,plan-approved-at, and each timestampedExecution Notesentry use UTC DateTime format with minute precision, e.g.2026-05-19T18:42Z. Bare dates are for speclast-updated, not effort event history.iduses theEFF-XXXXformat and is mirrored intoaliases:.- Starting an effort includes choosing which
readyuser stories and criteria are in scope now, then linking each selected embedded node fromStories In Scope (Frozen)with a durable block-target wikilink. - Efforts own story execution relations by linking selected story and acceptance-criterion nodes in
Stories In Scope (Frozen); stories do not carry live effort links. - Effort-local task lists, coverage checklists, rationale notes, and execution notes should reuse those durable story / criterion wikilinks when they point at selected scope. Plain labels like
[SPEC-0007.US1]are readable but not graph edges. Execution Notesentries are the effort-local log for human decisions, agent surprises, new conclusions, validation evidence, blockers, handoffs, and resume points. Use this shape:- 2026-05-19T18:42Z [decision] Colthorp approved the narrower scope because ....- Required
Execution Notesentry kinds are[decision],[surprise],[learning],[validation],[blocker],[handoff], and[resume]. Use[note]only for load-bearing execution evidence that does not fit another kind. - Human decisions and agent surprises stay in the effort unless they change durable spec truth, code behavior, or reusable operating guidance. In that case, backport the changed truth to the owning spec, reference, code doc, or skill, and keep the timestamped effort entry as the provenance trail.
- If a selected story is not fully delivered when the effort closes, record the carry-forward in
Actual Delivered/Deviationsand move the story back to an appropriate non-complete state rather than forcing closure in the spec. - Deviations are recorded as they happen, not backfilled at closure.
- An effort closes only after:
- every coverage checklist item is
[x], - every open deviation is resolved or explicitly carried forward,
- required audits have run,
- durable learnings that changed authoritative contracts have been backported via
backport, - repeated friction and missing agent capabilities have been triaged via
compound, and - every
Closure Checklistitem is[x].
- every coverage checklist item is
- One effort per focused change; split multi-subsystem work into separate efforts.
- Cross-reference related efforts instead of merging their scopes.
- Small efforts may keep required sections terse, but should still preserve frozen spec/story/criterion scope and the closure gates.
- Link to external tickets or PRs from
Execution Notes. - Keep terse effort-local rationale in
Execution Noteseven when no spec, reference, or code doc update is warranted.
The full EffortStatus vocabulary is enumerated in .rhizome/ontology/schema.graphql. Use these values in status: truthfully:
planned— the effort exists and scope is frozen, but active execution has not started yet. Use this betweeneffort-newandplanfinishing, and between plan-approval and the first execution edit.active— execution is currently live. Keepstatus,Execution Notes, andDeviationscurrent while work is underway.complete— the bounded slice is finished and the effort stands as the completed delivery record. See the closure procedure below; do not flip tocompleteuntil every closure gate is satisfied.archived— historical effort retained for provenance. Use this for retired or cancelled efforts that should remain discoverable but should not be treated as live execution surface. Cancellations land here only after a Deviation entry records why.
SpecStatus (proposed, active, superseded, archived) and UserStoryStatus (draft, ready, satisfied) are independent of effort status. A complete effort can target an active spec whose stories have been promoted to satisfied, while a planned effort can target a proposed spec only if the effort is explicitly story-shaping work.
A complete effort is a closure that survives audit, backport, and compounding triage. To close, run these in order. Steps 2–4 MUST be invoked as separate sub-agents, each using the named skill (alignment-audit, backport, compound) and receiving the effort note path plus the supporting inputs called out below. Name the skill by name and let the harness resolve it. The phases do not run inline inside the implement conversation, and the implement-phase agent does not flip status: complete itself.
implementlands the last code/test/doc edits. AppendActual Deliveredagainst the existingOriginal Intended Deliverybaseline (do not rewrite the baseline). Carry-forward any partially delivered story by recording it inActual DeliveredandDeviations, and move the story back to a non-satisfiedstate. The implement-phase agent's last action on a closing effort is to spawn a sub-agent that uses thealignment-auditskill (step 2) with the effort note path.alignment-audit(sub-agent uses thealignment-auditskill). Inputs: effort note path, frozenSpec Setwikilinks, frozenStories In Scopewikilinks, touched code paths, recorded deviations. Produces typed findings against the effort's frozen scope, the spec set, the linked references, and the touched code. The audit emits findings only; it does not mutate specs or close the effort. Tick the audit item inClosure Checklistonly after required audits have run and blocking findings are resolved or carried forward.backport(sub-agent uses thebackportskill). Inputs: effort note path, audit findings from step 2, deviations marked for spec/reference/code-doc reconciliation, and timestamped[decision],[surprise], or[learning]execution notes that changed authoritative truth. Applies edits surfaced by the audit: spec bodies updated to match delivered reality, reference docs refreshed, code docs tightened where needed, and carry-forward work recorded where needed. Tick eachSpec Coverage Checklistitem only when it is actually true. Reconcile any remaining gap betweenOriginal Intended DeliveryandActual Delivered. Tick the backport item inClosure Checklistwhen durable reconciliation is complete.compound(sub-agent uses thecompoundskill). Inputs: effort note path, contents ofCompounding Follow-ups, repeated-friction / missing-evidence / missing-access / agent-blocker observations from execution. Triages each into the smallest durable home (test, script, skill, capability request, follow-on effort). Tick the compounding item inClosure Checklistwhen triage is complete.- Flip
statustocompleteonly when all closure gates are satisfied:- every
Spec Coverage Checklistitem is[x], - every open
Deviationsentry is resolved or explicitly carried forward, - every
Closure Checklistitem is[x].
- every
After closure the effort note is historical record. See SPEC-0051 lifecycle immutability for the rules governing post-closure edits and how follow-on efforts pick up where prior efforts closed.
- whether the repo wants mandatory approver fields beyond
plan-approved-by