{
  "uid": "cogitave.learn.work-the-request-lifecycle.the-lifecycle-stages",
  "kind": "moduleUnit",
  "href": "/modules/work-the-request-lifecycle/the-lifecycle-stages/",
  "title": "The seven lifecycle stages",
  "summary": "",
  "type": null,
  "products": [],
  "roles": [],
  "levels": [],
  "subjects": [],
  "headings": [
    "Stages auto-advance; the human is an exception",
    "The two write tools only propose"
  ],
  "source": "A Request always carries exactly one `stage` from a fixed enum. The stages run in\norder, and each one **produces an artifact** and **passes a gate** before the next\nbegins.\n\n| # | Stage | Artifact it must produce | Gate that lets it advance |\n| --- | --- | --- | --- |\n| 1 | intake | intake form + issue + draft Request node | form valid; identity and owner assigned |\n| 2 | evaluate | classification + security/dependency assessment | triage sign-off + security clear |\n| 3 | plan | task DAG + blast radius + per-task scope | plan approved |\n| 4 | document | RFC / ADR / design doc (design-class only) | consensus reached, decision Accepted |\n| 5 | implement | branch + signed Conventional commits + draft PR | inside grant; no protected write or apply |\n| 6 | review | completed Definition-of-Done checklist | DoD == 100% + CODEOWNER approval |\n| 7 | done | changelog + docs sync + evidence token | doc-drift clear + evidence recorded |\n\n`rejected` is a terminal sub-state of **evaluate** - an out-of-scope or duplicate\nrequest stops there, with a recorded reason. The full detail of each stage lives\nin [`LIFECYCLE.md`](../../../../agents/lifecycle/LIFECYCLE.md); read it there\nrather than trusting this summary from memory.\n\n## Stages auto-advance; the human is an exception\n\nA stage **auto-advances when its automated checks are green** - schema and typed\nvalidation, policy-as-code, a security clear, and (for a behavior change) a green\neval gate. A human is not asked to sign off at every boundary. A human is pulled\nin on an **exception**: a gate check fails, confidence is low or the case is\nnovel, drift or a policy violation is detected, or the transition is in the\nminimal always-human set (merge / apply / release and the irreversible actions).\n\n> [!NOTE]\n> Stage 4 (document) is **skipped** for non-design-class changes: they advance\n> `plan -> implement` directly, and the skip and its justification are recorded on\n> the Request.\n\n## The two write tools only propose\n\nThe whole lifecycle exposes exactly **two write tools**, and this is the property\nto internalize:\n\n- `request_intake` - stage 1. Opens the GitHub issue and creates the draft\n  Request node.\n- `advance_stage` - stages 2 through 7. Records each stage transition.\n\n> [!IMPORTANT]\n> Both are **propose-only**: they open a GitHub issue or PR and stage a *draft*\n> Request node. **Neither** mutates protected state, merges, applies, or releases.\n> A failed gate returns the Request to the prior stage with a recorded reason, and\n> every transition is written as WORM evidence bound to the acting identity.\n\nSo an agent can carry a change all the way to the edge of `review` autonomously -\nbut the merge, the apply, and the release stay on the far side of a human gate.\n",
  "partOf": "cogitave.learn.work-the-request-lifecycle",
  "durationInMinutes": 6,
  "quiz": null
}