1.0 KiB
1.0 KiB
Approval UI — spec (v0 as-built in app/main.py v0.1.1; v1 roadmap)
v0 (as-built)
- Passcode-gated session cookie (EXECUTOR_PASSCODE; httpOnly; SameSite=Strict). Intended behind HAProxy with TLS for the PVE trust domain.
- Pages: / (queue: pending + recent), /ui/request/{id} (full pack content, agent, targets, justification, classification), /ui/audit (recent events).
- Actions: POST-only approve / deny (no GET-side effects; one-click from the queue page; Discord notification links here).
- Queue states: pending_approval -> queued/running -> completed | failed | denied.
- Every event appended to logs/audit-*.jsonl (id, ts, agent, kind, targets, decision, actor, outcome tail).
v1 roadmap (post-P0, not yet built)
- Typed confirmation (click + type request-id fragment) for high-impact ops.
- HAProxy basic-auth layer in front of the passcode session.
- Diff preview for gitea_api_ops requests (planned kind v0.2).
- Session idle timeout + login throttling.
- Approver identity in audit (first approver = the PO by convention).