The consent ladder has a lifecycle mode that no check uses yet. Two pieces:
- Provisioner teardown: deactivate/reactivate/delete support in
src/provision.tsso lifecycle checks can drive account state transitions. - Lifecycle checks: the account-lifecycle guide gives exact expectations:
#identity→#account→#commitordering on creation (already covered), no#commitevents for non-active accounts, an empty#commiton reactivation after long deletion, and migration end-state invariants (DID doc + active status + valid repo with higherrev). Per the spec these areshould-level (the migration flow is explicitly non-normative; seedocs/spec-gaps.md).
This is the highest-signal remaining tier: it catches the "relay silently stopped picking up my PDS" class of bug.
Done when: --mode lifecycle runs checks that exercise deactivation/reactivation against the oracle and assert the firehose event sequences.
Done in b46270a (main).
What shipped:
Two findings worth recording (now in docs/interop-traps.md):
Also fixed along the way: --only prefixes were being swallowed by flag parsing in cli.ts/e2e.ts, so per-check reruns silently ran nothing.
Gate: pnpm typecheck clean; pnpm e2e green (exit 0) -- 47 lexicon pass, 13 spec pass, 2 reference pass, 0 fail. The one remaining warn is the intentional spec-side should (fresh-commit-on-reactivation), which the reference itself does not satisfy.