01The 8-state authority lifecycle
Eric Beans added Expire to the model June 2 2026: "A surprising amount of enterprise authority doesn't get revoked. It simply ages out." Expire and Revoke are materially different governance outcomes:
- Revoke = active removal (employment terminated, license suspended, compliance action)
- Expire = natural aging out (no renewal requested, term ended, policy retired)
Auditors, regulators, and insurers care about the distinction.
02The scenario — two authorities, six phases, three rogue attempts
compliance_actionemployment_terminatedno_renewal_requested03Six distinct lifecycle state_ids
04The killer check — 3 rogue decisions named
ROGUE DECISIONS FLAGGED: 3 decision(s) made after the actor's authority entered a suspended/expired/revoked state: decision_lc_rogue_during_suspend decision_lc_rogue_post_revoke decision_lc_rogue_post_expire
The check correctly distinguishes decision_lc_004 (legitimate — temp approver still held active authority at decision time) from decision_lc_rogue_post_expire (made AFTER temp authority's expire). It walks events PER AUTHORITY to compute each decision's at_ms against the actor's lifecycle state, not just snapshot state at T.
This is investigator-grade evidence. Eric's framing: "A lot of fraud happens after someone should have lost access."
05The 9 lifecycle audit questions answered
princ_root_lifecycle_44962d9b-… (signed grant)granted_by fieldprinc_compliance_44962d9b-… (signed AuthoritySuspend)princ_compliance_44962d9b-… (signed AuthorityReinstate)princ_root_lifecycle_44962d9b-… (signed Revoke with reason+category)compliance_action, employment_terminated, no_renewal_requested)decisions_up_to filtered by lifecycle interval — see scenario table aboveresponsibility_chainQuestion 9 is the breakthrough Eric named: "Most systems can identify actors. Very few can identify retained responsibility." That's the foundation Proof #14.1 (Replayable Responsibility) builds on.
06The new schema
Three new canonical event kinds added to AuthEvent:
AuthoritySuspend {
at_ms, authority_id,
suspended_by, reason, reason_category, signature
}
AuthorityReinstate {
at_ms, authority_id,
reinstated_by, reason, signature
}
AuthorityExpire {
at_ms, authority_id,
expired_by, expiry_type, signature
}
Revoke extended with optional reason + reason_category fields, backward-compat via skip_serializing_if = Option::is_none. All 13 prior proofs' state_ids verified byte-identical under the extended engine.
DB CHECK constraint extended for the 3 new kinds.
07What this proof IS and IS NOT
The substrate Proof #14.1 (Replayable Responsibility) rides on. A reconstruction of the full lifecycle (Grant + Use + Suspend + Reinstate + Expire + Revoke; Modify deferred). Investigator-grade evidence — three rogue decisions are flagged by name with the lifecycle event that should have prevented them. Six byte-identical state_ids per replay.
A claim that responsibility_chain is yet a first-class schema field (that lands in #14.1). A claim that AuthorityModify (mid-lifecycle scope/expiry change) is yet a distinct event kind — queued. A claim that the engine enforces "rogue decisions are rejected at issuance" — the check FLAGS rogue decisions in the confidence score; issuance-time enforcement is a separate policy gate.
08Where this proof sits
responsibility_chain schema (actor + supervisor + policy_owner + model_owner + approving_authority). The gap Eric named.09Known limitations
- AuthorityModify deferred. Mid-lifecycle scope reduction or expiry extension warrants a distinct Modify event with prev/new fields.
- Issuance-time enforcement is policy-layer, not chain-layer. This proof's confidence check FLAGS rogue decisions for audit; the receipt-issuing service must enforce the active-authority check at issuance time independently.
- Phase E lock open.
AuthEvent.signaturestored but not verified at replay ingestion; L9.1 closes this. - Single tenant. Cross-tenant lifecycle interactions queued for #16.
10Evidence appendix
| Field | Value |
|---|---|
| Tenant ID | tenant_authority_lifecycle_44962d9b-25f5-5622-bd9a-98d5580bb8a2 |
| Tenant root | princ_root_lifecycle_44962d9b-… |
| Treasury officer | princ_treasury_officer_001 |
| Temp approver | princ_temp_approver_001 |
| Compliance | princ_compliance_44962d9b-… |
| Event count | 14 |
| Distinct lifecycle state_ids | 6 |
| Rogue decisions flagged | 3 (during_suspend · post_revoke · post_expire) |
| Replay confidence at final | 30/100 (signatures + lifecycle checks fail) |
| Reconstruction artifact | reconstruction.json |
| Harness | tests/authority_lifecycle_replay_001.rs (scif-backend @ cb4376378) |
11Readiness determination
First Authority Lifecycle Replay (foundation of accountability): PROVEN IN OPERATION for one tenant, 14 signed events, 8-state lifecycle exercised (minus Modify, queued), six distinct deterministic lifecycle state_ids, three rogue decisions named in the lifecycle confidence check.
What this unlocks: Proof #14.1 — First Replayable Responsibility. The responsibility_chain schema captures actor + supervisor + policy_owner + model_owner + approving_authority. Eric: "The day you can prove who owned the consequences, you'll be operating in territory where there are very few direct competitors."
What this does not unlock: a claim that responsibility_chain is first-class (#14.1); a claim that Modify is yet a distinct event kind; a claim that the engine enforces rogue rejection at issuance.
Issued by H33, Inc. · Eric Beans, CEO · 2026-06-02
Independently reconstructable. Inputs: scif-backend @ cb4376378 · tests/authority_lifecycle_replay_001.rs · reconstruction.json.