epic-12: finish by writing epic-5-resolution.md
This commit is contained in:
@@ -0,0 +1,56 @@
|
|||||||
|
# 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
|
||||||
Reference in New Issue
Block a user