Skip to main content

ADR-021: Additive Stage 6 "Deprecate" — Lifecycle Retirement Capability

FieldValue
StatusAccepted
Accepted2026-06-11 — HITL approved the 5+1 model via session decision (AskUserQuestion: "5+1 = 6 stages").
Date2026-06-11
Decision MakersHITL, Cloud Architect, Product Owner
Scopelifecycle-5plus1-2026-06-11
Relationship to ADR-020EXTENDS — does NOT supersede. ADR-020's signed 5-stage canonical remains the canonical baseline, byte-unchanged. This ADR appends one stage.

Additive guarantee (read this first). ADR-020 ("7-Phase to 5-Stage Lifecycle Migration", Status: Accepted, 2026-05-02) remains in force and is NOT reopened by this ADR. The five stages it ratified — Discover · Design · Build · Deploy · Support & Scale — keep their order, their names, their autonomy tiers, and their migrated data representations exactly as signed. This ADR makes a single additive change: it appends a sixth stage, Deprecate, after Support & Scale. No existing stage is renamed, reordered, removed, or re-migrated. The model is now "5 + 1".


Context

ADR-020 collapsed three conflicting lifecycle models into one signed 5-stage canonical, eliminating an estimated 12–210 hrs/yr of vocabulary-translation overhead. That decision is sound and is not in question here.

However, ADR-020's 5-stage canonical has no retirement stage — and the project constitution mandates one in two separate places:

  • Principle VI — Governance & Compliance, constitution.md:144:

    "Secure retirement: decommissioning plans, data archival, evidence preservation"

  • ADLC Workflow — Operate gate, constitution.md:194:

    "Operate: Audit metrics, data lineage, decommission plan → Gate: Compliance review closed"

  • Operate phase activity, constitution.md:186:

    "Operate: Curated agent catalog, ongoing fairness audits, security risk assessments, regulatory compliance tests, secure retirement"

This is a genuine, currently-unbuilt gap (independent of any model debate): there is no command, no agent, no skill, and no gate that operationalizes secure retirement. The constitution requires it; nothing builds it. For an ANZ FSI/Energy/Telecom enterprise platform, an un-evidenced or ad-hoc decommission is a direct APRA CPS 234 §36 exposure (information-asset retirement must produce auditable evidence).

A parallel exploration also surfaced a 9-phase ("9D": Discovery → … → Deprecation) proposal that would add Deprecation as one of nine serial phases. That proposal re-litigates the just-signed ADR-020 and re-pays its one-time migration cost (ADR-020 Consequences: 9 CSV files + 3 docs + types.ts). The 9D structure is therefore rejected here as the mechanism; only the one capability it correctly identified — retirement — is adopted, and adopted additively.


Decision

Add a sixth lifecycle stage, "Deprecate", ADDITIVELY on top of the signed 5-stage canonical. The model becomes "5 + 1" (six stages).

The 5+1 canonical (Stage 6 appended; Stages 1–5 unchanged from ADR-020)

#StageSourceAutonomy Tier (sub-steps)Gate / signed artifact
1DiscoverADR-020 (unchanged)[A] + [HITL-gate]discovery-brief.md signed
2DesignADR-020 (unchanged)[A] + [HITL-gate]feature-spec.md + tasks.md
3BuildADR-020 (unchanged)[A] code + [A-gated] review/testsTests green; PR ready; docs updated
4DeployADR-020 (unchanged)[A-gated] test → [HITL] applyPlan reviewed; HITL applies; visual-verify
5Support & ScaleADR-020 (unchanged)[A-readonly] + [HITL-decide]DORA collected; retro; remediation HITL-approved
6Deprecate (NEW)this ADR[A-readonly] collect + [HITL-decide] + [HITL] destroydecommission-plan.md signed; usage < floor; deps cleared; data archived; evidence preserved

What "additive" means concretely

  1. Data representationdocs/src/data/projects/types.ts ADLCPhase union appends "Deprecate" after "Support & Scale". The existing five members keep their positions. No CSV re-migration: the 9 CSVs migrated under ADR-020 are byte-untouched because no existing phase value changes.
  2. Single SSOT — a new skills/governance/lifecycle-ssot/SKILL.md becomes the one canonical definition of all six stages. constitution.md and .adlc/CLAUDE.md reference it (they stop restating the lifecycle). This de-fragments the canon that was previously smeared across constitution.md + MANIFEST.json + QUICKSTART-deploy-lifecycle.md + .adlc/CLAUDE.md.
  3. 9D aliases survive as labels, not structure — "Deprecation" becomes an alias of Stage 6; "Definition" → Discover; "Documentation" → cross-cutting + Build sub-step; "Delivery" → Deploy (1:1 rename); "Data" → Deploy (migration) + Support & Scale (measurement). Nothing the 9D model named is lost; none of it becomes a new serial phase.
  4. No new destructive surface — Stage 6's destructive operations (terminate-*, delete-*, git rm, terraform apply) are already hook-blocked today by validate-bash.sh and principle-i-acceptable-agency.md. The new /adlc:deprecate command authors a signed decommission-plan.md and stops; the HITL executes any actual destroy, post-signature, through the existing hook-gated path. Building Stage 6 adds tooling, not new risk.

Components this decision authorizes (built in later waves, not this ADR)

ComponentFileRole
Lifecycle SSOT skillskills/governance/lifecycle-ssot/SKILL.mdThe one canonical 6-stage definition
Secure-retirement skillskills/governance/secure-retirement/SKILL.mdDecommission/archival/evidence domain knowledge (Principle VI)
Lifecycle-steward agentagents/decision/lifecycle-steward.mdStage 6 owning specialist (orchestrator pattern, Principle VII)
Deprecate commandcommands/adlc/deprecate.md (/adlc:deprecate)Stage 6 orchestrator — authors signed plan, never destroys
Decommission-evidence hookhooks/scripts/enforce-decommission-evidence.shMakes the Operate gate (L194) enforceable, not advisory
Decommission-plan templatetemplates/adlc/decommission-plan.mdSigned-artifact schema the command emits and the hook gates on

Alternatives Considered

Option A: Adopt the full 9-phase ("9D") model (Discovery → … → Deprecation)

Rejected. The 9D model re-litigates ADR-020, which the organization signed on 2026-05-02 and whose migration it already paid for (ADR-020 Consequences: 9 CSV files + 3 docs + types.ts union). Re-opening the canon to insert nine serial phases re-pays that migration cost for zero net capability gain — eight of the nine 9D phases map cleanly onto the existing five stages (Definition→Discover, Documentation→cross-cutting, Delivery→Deploy, Data→Deploy+Support&Scale, etc.). Only the ninth, Deprecation, names a capability the 5-stage canon lacks. Adopting that one capability additively delivers the entire benefit of 9D at ~1/9th the change cost and without disturbing the signed baseline. This directly reconciles with ADR-020 Option A ("Keep 7-phase, translate in documentation only — Rejected: translation overhead is the problem"): adding more serial phases re-introduces exactly the translation overhead ADR-020 eliminated.

Option B: Fold retirement into Stage 5 (Support & Scale) — no new stage

Rejected. Support & Scale's autonomy profile is [A-readonly] monitoring + [HITL-decide] remediation — a keep-it-running posture. Retirement is the opposite intent: a deliberate, gated, evidence-producing wind-down that culminates in [HITL] destruction of assets. Folding a destroy-intent workflow into a keep-running stage would (a) hide the most safety-critical lifecycle transition inside an operational-monitoring stage, and (b) leave the Operate-gate's "decommission plan → Compliance review closed" requirement (L194) without a distinct gate artifact. CPS 234 §36 needs retirement to be a named, auditable lifecycle event with its own signed artifact — not a sub-mode of monitoring. A distinct Stage 6 with its own decommission-plan.md gate is the minimum structure that satisfies the compliance mandate. (This also reconciles with ADR-020 Option C — "keep three models per domain, rejected for complexity": we are NOT adding a parallel model, only one stage to the single canonical model.)

Option C: Add an explicit "Measure" gate as well (the "5+2" model)

Rejected (for now). A parallel design question asked whether the post-launch telemetry→insight loop ("Data-as-measurement") deserves its own named stage between Deploy and Support & Scale. It does not, today: that measurement loop already has its commands (/metrics:update-dora, /ceremony:review), its agent (observability-engineer), and its gate (the Sprint Review ceremony = "metrics collected + analysis complete + stakeholders informed"). All three exist and run inside Support & Scale's front half. Wrapping a new "Measure" phase around already-shipped components would be PREMATURE_ABSTRACTION — a structural label with no new capability behind it. Retirement, by contrast, has zero existing components — which is precisely why it (and only it) earns a new stage. If a future need arises to make the measurement loop a hard gate, that is a separate, additive ADR; it is explicitly out of scope here.

Option D: Build the Stage 6 tooling without an ADR

Rejected. APRA CPS 234 §36 and constitution Principle VI require a human-signed decision record for a new lifecycle stage that governs information-asset retirement. ~30 downstream story-points (the secure-retirement skill, lifecycle-steward agent, deprecate command, evidence hook, template) have no authorizing artifact without this ADR. The ADR is the HITL gate for all of it.


Consequences

Positive

  • Constitution honored: Principle VI's secure-retirement mandate (L144) and the Operate gate (L194) move from prose to runnable, gated tooling.
  • Signed baseline preserved: ADR-020's 5-stage canon and its paid-for migration are untouched. Zero CSV re-migration. The additive change is one enum member.
  • Compliance posture: retirement becomes a named, auditable lifecycle event with a signed decommission-plan.md — closing the CPS 234 §36 information-asset-retirement evidence gap.
  • Canon de-fragmentation: the new lifecycle-ssot SSOT replaces four scattered restatements with one referenced source.
  • No new risk surface: destructive verbs stay hook-blocked; the command authors a plan and stops; HITL executes destruction through the existing gated path.

Negative / Costs

  • One-time additive cost: append "Deprecate" to the ADLCPhase union; increment component counts in MANIFEST.json; reference the SSOT from constitution.md + .adlc/CLAUDE.md. This is a MINOR semver bump (additive), not MAJOR.
  • New components to maintain: one skill (SSOT), one skill (secure-retirement), one agent, one command, one hook, one template. Each follows existing orchestrator/skill conventions, so maintenance overhead is bounded.
  • Cross-tree ADR-number note: this ADR is adr-021 in the docs/docs/adrs/ series (the same series as the adr-020 it extends). A separate ADR-021-spec-kit-consolidation.md exists in the distinct .claude/memory/adrs/ framework-infra namespace. The two trees are independent (lowercase adr- = product-lifecycle; UPPERCASE ADR- = ADLC-infra) and have reused numbers before (adr-001 exists in both). Recommend a one-line disambiguation note in each tree's index during the SSOT-alignment wave — non-blocking for signing this ADR.

Neutral

  • The 6-phase constitution engineering loop (Plan → Build → Test → Deploy → Monitor → Operate) is unchanged. The SSOT declares it as the inner engineering loop nested inside Stage 3 (Build) + Stage 4 (Deploy) — it is not a competing model, and this ADR does not alter it.

References

  • ADR-020: 7-Phase to 5-Stage Lifecycle Migration (Status: Accepted, 2026-05-02) — the signed baseline this ADR extends and does NOT supersede. docs/docs/adrs/adr-020-7-to-5-phase-migration.md
  • Constitution Principle VI — Governance & Compliance, constitution.md:144 — "Secure retirement: decommissioning plans, data archival, evidence preservation" (the mandate)
  • Constitution ADLC Workflow — Operate gate, constitution.md:194 — "Operate: Audit metrics, data lineage, decommission plan → Gate: Compliance review closed" (the gate this ADR operationalizes)
  • Constitution Principle VII, constitution.md:155 — orchestrator pattern (50–100 lines) the lifecycle-steward agent follows
  • APRA CPS 234 §36 — information-asset retirement / auditable decommission evidence
  • principle-i-acceptable-agency.md + validate-bash.sh — the existing hooks that already block Stage 6's destructive verbs (no new guardrail required)
  • Plan: ~/.claude/plans/this-session-aims-to-tidy-rossum.md (RQ1 5+1 table, LC-1..LC-9 backlog)
  • Coordination: tmp/b2b-commerce/coordination-logs/{product-owner,cloud-architect}-lifecycle-5plus1-2026-06-11.json

Origin: ADLC Framework Wave F0 (scope_id: lifecycle-5plus1-2026-06-11). Additive to ADR-020. HITL flips Status: Proposed → Accepted before Wave F1 build begins. Agent never commits (Principle I) — HITL authors the commit.