Skip to content

Make lifecycle review status transitions atomic and self-validating #305

Description

@tkstang

Summary

Lifecycle review status is duplicated across review ledgers, implementation and state prose, routing fields, and secondary counters. In a downstream run, product fixes were already complete but several additional review cycles were consumed because statuses remained stale or were reintroduced during later bookkeeping.

Examples included a completed fix event left in an intermediate state, stale pending prose, broken links after backlog archival, and a phase status reverting to review pending after correction.

Desired behavior

Establish one structured authority for review-event, phase, and routing status. Lifecycle commands should update dependent artifacts atomically or derive human-readable views from that authority. Before dispatching another review, run a consistency check that catches stale or contradictory status without consuming a reviewer invocation.

Historical review provenance must remain append-only; atomic current-state updates must not rewrite prior event identities, artifacts, or reviewed heads.

Acceptance criteria

  • One transition helper or structured authority owns current review and phase status.
  • Plan, implementation, and state views cannot silently diverge after a transition.
  • A pre-review invariant rejects stale or contradictory current status before dispatch.
  • Append-ordered review provenance remains immutable.
  • Secondary fields and counters are either synchronized with the authority or documented as intentionally different semantics.
  • Regression tests cover stale-state retention and reintroduction after an otherwise valid correction.

Related

This issue is distinct: it targets the cross-artifact transition mechanism that permits current lifecycle state to diverge.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    tracked-in-backlogAccepted and linked to an OAT file-backed backlog item

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions