ADR 020 Explicit Phase Lifecycle - joeroberts/release-radar GitHub Wiki

  • ID: ADR-020
  • Status: Accepted
  • Date: 2026-09-10
  • Date meaning: Original dated decision/source section; extraction recorded 2026-10-02.
  • Implementation: No implementation information was recorded in the source status; tickets own progress.
  • Approval qualification: Recorded owner-approved Phase 5 scope; slice-specific exclusions and later dependencies remain as stated.

Context

Explicit phase lifecycle remains distinct from structural readiness, viewed/active phase, ticket lanes and Delivery Goal acceptance.

Owner decision authority and portability

The owner authorized independent Unassessed / Upcoming / In delivery / Completed phase lifecycle, multiple In-delivery phases, explicit guarded completion and explicit reopening. Narrow typed owner-app decisions require exact registration, lifecycle revision, reason and relevant planning baseline; external agents may read but cannot assert this decision authority. Origin is checked before replay. Completed-phase delivery writes reject at store-owned admission boundaries until explicit reopening, including proposal apply and old/new association ownership. Read-only references to Completed work, observations and identity-preserving recovery remain distinct from new delivery work. Accepted ticket/goal and retired history is preserved. The Phase 5E brief defines the bounded schema, authority, writer, recovery and native contract.

A future complete portable project package must represent both the phase's current lifecycle value and its immutable transition history. Each history item must retain the exact phase identity, monotonically increasing revision, previous/current value, typed action, owner reason, decision timestamp, source registration/generation and the completion planning-baseline digest when applicable. Import must preserve this source history without replaying decisions, fabricating owner audits or silently deriving lifecycle from readiness, active/viewed phase, goals, lanes or counts. Any future compatibility design must either preserve all supported lifecycle facts or fail complete export explicitly. This records the Phase 5E portability requirement only: portable archive v1, the current exporter/importer implementation and their accepted fixtures are unchanged by this slice.

Lifecycle and completion assessment

Phase lifecycle is separately persisted in schema 23 with revisioned owner decision history. Existing and new phases default Unassessed without inferred decisions. Lifecycle decisions do not change active/view context, structural readiness, Delivery Goal acceptance or ticket lanes. Explicit reopening targets In delivery or Upcoming; it never reopens Accepted tickets/goals or un-retires originals.

Completion atomically composes D coverage with Accepted remaining required goals and all nonretired phase work. Uncovered/unassessed or incomplete carried work blocks; superseded debt remains counted, debt-free superseded goals do not block. Fully explicitly dropped scope remains removed, not accepted; empty/all-dropped phases cannot complete without actual delivered outcome. Legacy no-goal phases may qualify through actual Accepted work. Cross-phase carry uses exact descendants. Dependency eligibility retains D semantics without requiring explicit Completed. Ready plus zero upcoming work is a readiness summary, never inferred lifecycle.