Skip to content

WP4: Lifecycle/closure semantics — succeeded disposition, closed requirements, closure receipt #47

Description

@marcusglee11

WP4: Lifecycle/Closure Semantics Design

Source: docs/audit/LIFEOS_AUTHORITY_AUDIT_RESULT_2026-04-27.md §G (G1-G6), §C-016, STATE-002, OD-AUDIT-002

Status: design packet — DO NOT IMPLEMENT UNTIL CEO APPROVES


Problem

succeeded is currently readable as terminal success, creating a false-closure risk (C-016, BLOCKING). The Target Architecture has useful work-order states but under-specifies the review-return and closure gap.


Decision: succeeded disposition (OD-AUDIT-002)

succeeded is a worker result event, not terminal closure.

Option Effect
A: Rename to worker_succeeded Makes worker-result intent explicit; low migration effort
B: Keep succeeded but add non-terminal documentation Preserves state names; doc-only — NOT recommended alone
C: Replace succeeded with review_returned Aligns with corrected G2 state machine; worker result → review/validation → closure

Recommended: C — aligns with audit corrected lifecycle. If too aggressive: A as transitional step.


closed requirements

closed = terminal accepted completion state. Not reachable directly from running or review_returned. Requires:

  1. All required validators/gates passed (or explicitly overridden by valid CEO receipt)
  2. PR/commit/artifact/test refs for build work
  3. Review disposition for reviewer-requested changes
  4. Reconciliation receipt for projection/tracker conflicts (if applicable)
  5. Open-decision list for unresolved issues
  6. Valid closure receipt (see below)

Transition path: review_returned → under_validation → closed

Prohibited shortcuts:

  • running → closed (no review/validation/closure receipt)
  • review_returned → closed without under_validation

New Schema: closure_receipt.v1

closure_receipt.v1:
  receipt_id: string       # clr_<ISO timestamp>_<work_order_id>
  work_order_id: string
  issue_id: string?
  previous_state: string
  new_state: string        # always closed
  closed_by: string
  closed_by_role: active_coo | ceo_authorized_operator
  validators_passed: [string]
  approval_refs: [string]
  artifact_refs: [string]
  pr_refs: [string]
  test_result_ref: string?
  reviewer_packet_refs: [string]
  unresolved_decisions: [string]
  reconciliation_ref: string?
  state_hash: string       # hash of lifecycle state record at closure time
  closed_at: datetime

Evidence bundle accompanies receipt: validator receipts, PR/commit refs, test summary, review packets, reconciliation receipts.

Implementation: ClosureReceipt dataclass in runtime/orchestration/coo/closure.py. Stored in artifacts/receipts/closure/.


New Schema: lifecycle_state.v1

Add to artifacts/coo/schemas.md:

lifecycle_state.v1:
  work_order_id: string
  issue_id: string?
  state: string
  previous_state: string?
  state_version: integer
  state_updated_at: datetime
  state_updated_by: string
  active_coo_id: string
  phase: string
  policy_version: string
  approval_ref: string?
  execution_order_ref: string?
  attempt_id: string?
  workflow_run_id: string?
  reviewer_packet_ref: string?
  validator_result_refs: [string]
  closure_receipt_ref: string?
  blocked_reason: string?
  needs_decision_owner: string?
  state_hash: string

Valid states: intake, triaged, awaiting_approval, ready, dispatched, running, review_returned, under_validation, fixes_requested, blocked, needs_decision, timed_out, superseded, withdrawn, rejected, failed, closed

Terminal states: closed, failed, rejected, withdrawn, superseded

Note: succeeded is NOT in the state list. See §2 for disposition.


Files to create/modify

File Action
artifacts/coo/schemas.md Amend — add lifecycle_state.v1, closure_receipt.v1
runtime/orchestration/coo/closure.py Create — ClosureReceipt dataclass, validation, evidence bundle
runtime/orchestration/coo/fsm.py Create — FSM definition, transition validator
runtime/orchestration/coo/state.py Create — LifecycleState dataclass, serialisation, state_hash
runtime/tests/orchestration/coo/test_closure_receipt.py Create
runtime/tests/orchestration/coo/test_lifecycle_state.py Create
runtime/tests/orchestration/coo/test_fsm.py Create

Explicitly out of scope


Full design packet: artifacts/plans/WP4_LIFECYCLE_CLOSURE_DESIGN_2026-04-27.md

Implementation blocked on CEO decision D1 (G-CBS demote) and WP3 approval schema per MAY NOT #7

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions