# Epic 5 — Approval system (Tiers, grants, approvals)

## completed deliverables

### 1. Tier model (T0-T4)

introduced `Tier` as a enum in `core:events` with values 0-4 where 0 is inference and 4 is something destructive.

---

### 2. grants system

introduced `ApprovalGrant` as a serializable data class in `core:approvals`.

scopes:

```text
Session -> stage -> project
```

properties:

* all grants work on the concrete scope.
* grants are revoked when scope changes.
* grants contain set of `permittedTiers`.

---

### 3. approval lifecycle events

introduced events in `:core:events` to emit when approval is:
- ApprovalRequested
- ApprovalDecisionResolved
- ApprovalGrantCreated
- ApprovalGrantExpired

---

### 4. timeout semantics

timeout are resolved on a higher level, not in approval system.

---

### 5. steering injection module

introduced `UserSteering` in `core:events`.
gets injected in approval and should be respected by other components.

---

# final state

Correx now has:

> tiered, replay-safe approval authorization layer