Files
executor-config/docs/approval-ui-spec.md
T

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).