You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: address 25 PR review findings from local agents and external reviewers
Guards: add empty-roles validation, set __name__ on closures, fix
require_read_access docstring to clarify SYSTEM exclusion.
UserController: add asyncio.Lock for CEO uniqueness TOCTOU, move
password validation before DB reads, extract validation helpers
(functions now under 50 lines), add logger.warning on all error paths,
check delete() return value, remove PII from logs, reorder delete
checks so self-deletion is testable, use tuple instead of list return.
Frontend: remove board_member from WRITE_ROLES (matches backend),
add board_member exclusion assertion in constants test.
Tests: parametrize role creation tests, tighten list assertion,
assert first POST in duplicate test, add system user update test,
add backup controller HTTP-level guard tests.
Docs: add /api/v1/users to API Surface table, update Board Member
and CEO role descriptions, fix escalation chain role value, update
CLAUDE.md package structure.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
| `GET /api/v1/setup/status`, `GET /api/v1/setup/templates`, `POST /api/v1/setup/company`, `POST /api/v1/setup/agent`, `GET /api/v1/setup/agents`, `PUT /api/v1/setup/agents/{index}/model` (`{index}` = zero-based position in the list returned by `GET /api/v1/setup/agents`; not a stable ID -- re-fetch to resolve; out-of-range returns 404), `GET /api/v1/setup/name-locales/available`, `GET /api/v1/setup/name-locales`, `PUT /api/v1/setup/name-locales`, `POST /api/v1/setup/complete` | First-run setup wizard: status check (public, reports `has_company`/`has_agents`/`has_providers`/`has_name_locales` for step resume), template listing, company creation (auto-creates template agents with model matching), agent listing + model reassignment, manual agent creation (blank path), name locale management (list available Faker locales, get/set selected locales for agent name generation), completion gate (requires company + agents + providers) |
1101
+
| `/api/v1/users` | CEO-only user CRUD: create, list, get, update role, delete human user accounts |
@@ -1182,8 +1183,8 @@ For the full page list, navigation hierarchy, URL routing map, and WebSocket cha
1182
1183
1183
1184
| Role | Access | Description |
1184
1185
|------|--------|-------------|
1185
-
| **Board Member** | Observe + major approvals only | Minimal involvement, strategic oversight |
1186
-
| **CEO** | Full authority, replaces CEO agent | Human IS the CEO, agents are the team |
1186
+
| **Board Member** | Read-only + approve/reject | Strategic oversight; can view all resources and decide on pending approvals, but cannot create or modify resources |
1187
+
| **CEO** | Full authority, user management | Human IS the CEO, agents are the team. Sole authority to create, modify, and delete user accounts |
0 commit comments