Skip to content

[FLO-13.4b] Add deterministic durable lifecycle traces and recovery scenarios #65

Description

@szmyty

Parent: #31
Suite roadmap: #11
Depends on: #64

Outcome

Extend the executable scenario corpus to prove durable lifecycle transitions and recovery decisions through public Flow APIs, with bounded deterministic evidence suitable for CI and the future scenario gallery #62.

Acceptance criteria

  • Version test-owned lifecycle recipes/receipts with expected ordered transitions, eligibility outcomes, exact fixture/source identity, and explicit coverage gaps; reuse [FLO-3.3] Persist versioned plans, runs, checkpoints, and recovery decisions #49 durable schemas rather than inventing another run model.
  • Cover cancellation before launch, during execution, and between completed steps; timeout, nonzero exit, signal termination, output limits, host interruption, and fresh-process restart.
  • Cover completed/partial/interrupted resume, corrupt checkpoints, and changed input, plan, configuration, provider, implementation, artifact, and validation evidence.
  • Cover explicit retry/abandon decisions, retryable versus terminal classifications, compatible reuse, and downstream invalidation through the graph assessment boundary.
  • Run each recipe in fresh workspaces and compare normalized traces/receipts; enforce runtime, memory/output/artifact, and history budgets with no sleep/retry workarounds.
  • Make missing/duplicate/unknown receipts and fixture drift fail the CI gate; retain privacy-safe machine reports and update the lifecycle coverage guide.

Boundaries

Hermetic synthetic providers only; preserve source bytes and failed evidence. Authority/effect counters and cleanup residual qualification belong to the final checkpoint. Keep #31 open.

Implementation review — 2026-09-26

Implemented in PR #68, merged as 6db839facc822707e9e3a9d74dda044faac77fe7 on 2026-09-26. CI run 36233562728 passed all five jobs for review head 680f9c205a791c7872bd18b7561e8fa425db78d8: Rust 1.85, stable Rust, repository validators, and macOS/Windows durable-state checks.

The corpus has 34 lifecycle recipes, each executed twice in fresh workspaces, alongside 81 acceptance recipes per Rust toolchain. It includes actual host exits/fresh-process restart, typed retryable and terminal provider failures, stale graph evidence, corrupt-state refusals, strict receipt/source checks, and bounded Linux test supervision. No production state schema or runtime execution behavior changed.

#65 is closed after maintainer merge. #66 is implemented in PR #69; keep parent #31 open until that review is merged. The maintainer's 2026-09-26 instruction supersedes the prior hosted/default-branch CI wait: hand back bounded work after focused local checks and record unverified gates honestly.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions