TITIP-007 Escalation
| Status | Accepted |
| Version | 0.1 |
| Stage | 0 — Authority |
Purpose
Specify the state machine that sits between a due check and a release candidate. Escalation collects evidence. It does not deliver vaults.
States
Canonical states:
ACTIVE
→ CHECK_DUE
→ REMINDER_1
→ REMINDER_2
→ ALTERNATE_CHANNEL
→ GRACE_PERIOD
→ TRUSTED_CONTACT_VERIFY
→ REVIEW
→ ELIGIBLE_FOR_RELEASE
Terminal or side states used by the same machine:
| State | When |
|---|---|
ACTIVE |
Owner confirmed, or a new cycle has not started |
CANCELLED |
Owner confirmed, or owner stopped the cycle, after it had left ACTIVE |
HELD |
Policy cannot proceed (too few contacts, provider outage past a safety limit, global hold) |
ELIGIBLE_FOR_RELEASE |
Evidence for eligibility is complete. Not delivered |
RELEASED is not an escalation state. It belongs to the release case after manual approval and delivery (TITIP-008). Escalation stops at eligibility.
Any non-terminal state must accept owner confirmation and transition to ACTIVE, emitting life_check.confirmed and escalation.cancelled.
Prototype mapping
Using the default policy in TITIP-006:
| Demo label | State | Evidence so far |
|---|---|---|
| Day 0 — life check sent | REMINDER_1 |
none yet |
| Day 3 — reminder sent | REMINDER_2 |
none yet |
| Day 7 — SMS sent | ALTERNATE_CHANNEL |
alternate_channel_attempted when the provider accepts or the attempt is recorded as failed after retry |
| Day 21 — grace ended | end of GRACE_PERIOD |
life_check_unconfirmed, grace_period_elapsed |
| Day 22 — trusted contact confirmed | TRUSTED_CONTACT_VERIFY → REVIEW |
trusted_contact_confirmed |
| Day 23 — eligible | ELIGIBLE_FOR_RELEASE |
the three eligibility codes below |
Day numbers assume the default offsets: reminder at 0, second at day 3, SMS at day 7, grace 14 days after the alternate-channel point (day 7 + 14 = day 21). Implementers must compute from the policy version, not hard-code 21 October.
Eligibility evidence
A cycle may enter ELIGIBLE_FOR_RELEASE only when all of the following are recorded against that cycle and policy version:
life_check_unconfirmedgrace_period_elapsedtrusted_contact_confirmedwith count ≥minimum_confirmations
manual_review_approved is not required to enter this state. It is required to leave a release candidate toward real delivery.
If trusted_verification.required is true and confirmations are insufficient, the state remains TRUSTED_CONTACT_VERIFY or moves to HELD. It must not skip to eligible.
Provider outage
If the alternate channel cannot be attempted, the cycle must not treat the outage as a successful attempt and must not start grace. It stays at ALTERNATE_CHANNEL and alerts operators. Accidental inactivity and provider failure are different (architecture/threat-model.md).
Versioning
Escalation reads the policy version frozen at CHECK_DUE. A newer owner policy does not rewrite the open cycle. The new version applies to the next cycle.
Acceptance
- The demo simulation can walk Day 0 through Day 23 using only these transitions.
- Owner confirm at Day 7 yields
ACTIVEand no eligibility evidence. - Missing trusted-contact confirmation never produces
ELIGIBLE_FOR_RELEASE.