Plan — console self-service + accounts + triage (2026-07-08)
TDD per task; commit per task; mirrors byte-identical. Spec:
specs/2026-07-08-console-selfservice-accounts-design.md.
Order (smallest → largest, then triage):
T1 #3 Schema browser (internal-web)
- [ ]
lib/schema/filter.tsfilterTables+ tests (case-insensitive substring, empty q = all) - [ ]
/admin/internal/schemapage (DB select → tables + search + count) + AdminRail "Skema DB"
T2 #2a Public persona (public-web + internal-web config copies)
- [ ]
persona_preamblein both Config stores (default "", clamp ≤4000) + tests - [ ] compose prepends persona; orchestrate passes cfg value + tests
- [ ]
/admin/public/personapage (GET/PUT via /api/admin/orchestrator) + AdminRail
T3 #2b Agent persona (agents ×2 + internal-web)
- [ ]
dash/persona.pyload_persona()+ file-path tests (missing/invalid/valid, cap) - [ ]
agents.pyprepends persona;app/persona_admin.pyGET/PUT + hot-swap; register in main.py ×2 - [ ] compose: named
…-agent-data:/datavolumes for both agents - [ ] internal-web
/api/admin/agent-personaproxy (PUT guarded+audited) +/admin/internal/personapage + AdminRail
T4 #5 Per-account history (public-web)
- [ ]
lib/threads/store.tsThreadStore + tests (upsert, append, list-by-email, get-owned, title cap) - [ ] orchestrate route tee (Akun cookie → persist on done; fire-and-forget) + tests (mock runOrchestrator)
- [ ]
/api/threads/doc+/[id]Akun branch + tests; sidebar keeps same client contract
T5 #8 Password lifecycle
- [ ]
PublicUserStore.resetPassword(tv++) + tests - [ ]
POST /api/auth/change-password+ cookie re-issue + tests; sidebar "Ubah kata sandi" dialog - [ ] internal-web
PublicAccountAdminStore+/api/admin/public-users(+[id]PATCH reset/disable/enable, guarded+audited) + tests +/admin/shared/public-userspage + AdminRail
T6 #7 Vuln triage
- [ ]
pnpm auditworkspace: fix crit/high via bumps/overrides; suites stay green - [ ]
pip-auditboth agents' requirements: bump compatible pins; in-image pytest gate at ship - [ ] Record remaining/deferred in completion notes
T7 Verify + ship
- [ ]
pnpm check+ agent pytest (pinned venv) + mirrors diff - [ ] build-and-ship → deploy-staging → live smoke (schema page, persona PUT→answer changes, history after Akun chat, change-password, admin reset)
- [ ] ROADMAP restructure (#1 #4 #6 = Next up; built items marked DONE), completion notes, upload, push