From d16755eabcd2732d54fe8377c3ecc932a3f68255 Mon Sep 17 00:00:00 2001 From: Koshkoshinsk Date: Mon, 13 Apr 2026 14:08:51 +0000 Subject: [PATCH] docs(v2-checklist): note self-approval UX gap --- docs/v2-checklist.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/v2-checklist.md b/docs/v2-checklist.md index 350ef79..561b810 100644 --- a/docs/v2-checklist.md +++ b/docs/v2-checklist.md @@ -154,6 +154,7 @@ Status: [x] done, [~] partial, [ ] not started - [x] Admin user ID per group - [x] Admin-only command filtering in container - [ ] Admin model refactor — instance-level default admin (user + messaging app) for all approval routing, overridable per agent group; deliver approval cards to admin's DM when the platform supports it +- [ ] Self-approval UX: when the user requesting a sensitive action IS the recorded admin/owner of the agent group, the agent still posts an Approve button back to that same person and narrates "waiting on admin approval" — confusing, redundant, and the "waiting" line stays visible even after the user immediately clicks approve. - [ ] Replace the `is_admin`/main vs. non-main distinction on agent groups with an explicit owner/admin model — every agent group has a recorded owner (the platform user who created or installed it) and an admin (who receives approvals and can change wiring); the two default to the same identity but can diverge (e.g. handoff). Drops the "main group = admin group" coupling. Downstream consequence: non-main group registration on Telegram must use the same pairing-code flow as main (`setup --step pair-telegram` with a `wire-to:` or `new-agent:` intent), since there's no longer a privileged "main" chat whose identity is trusted transitively — every group binds its own admin at registration time. - [x] Approval flow (sensitive action -> card to admin -> approve/reject -> execute) — `pending_approvals` table, `requestApproval()` helper, reuses interactive card infra - [x] Agent requests dependency/package install (install_packages, admin approval, rebuild on approval)