✅ Completed — Documentation audit (scout-docs) ✅ Completed — API scout audit (scout-api)
- Scanned all 20
docs/**/*.mdfiles + README, CHANGELOG, .env.example - Wrote per-file 1-line summaries (23 files total)
- Cross-referenced docs against source code in
crates/andweb/ - Flagged 6 issues across 3 severity levels
- Scanned ALL API route files in
crates/rungu-api/src/(7 files: attachment, auth, comment, post, project, vote routes + error/oauth/lib) - Scanned MCP server in
crates/rungu-mcp/src/lib.rs(13 tools) - Scanned
openapi.rs(17 of 27 endpoints documented) - Scanned
store.rs(full CRUD for all entities including attachments) - Scanned proto types in
crates/rungu-proto/src/lib.rs - Cross-referenced all handlers, MCP tools, OpenAPI entries, and store methods
- Flagged 20 issues across 4 severity levels
- Wrote full report to
/tmp/scout-api.md
/tmp/scout-docs.md— Full doc audit report (created)/tmp/scout-api.md— Full API audit report (created)
- All 4 attachment endpoints missing from OpenAPI — Handlers carry
#[utoipa::path]attrs but are never registered inpaths(...). Schemas also missing. - All 5 auth endpoints missing from OpenAPI — No
#[utoipa::path]attrs on handlers, not inpaths(...). - MCP has no attachment tools — 13 tools but zero for attachment list/upload/download/delete.
list_attachmentshas no auth and no post-existence check — Unlikelist_commentswhich verifies post exists first.
- MCP missing
delete_posttool (REST hasDELETE /api/posts/{id}) - MCP missing
delete_commenttool - MCP missing project CRUD (create/update/delete) — possibly intentional
- OpenAPI
bodytypes don't match actual{ "data": ... }envelope (all endpoints) - List endpoints inconsistent on pagination (posts/changelog have it, comments/attachments/projects don't)
upload_attachmentreturns bare object, all other create endpoints wrap in{ "data": ... }- Auth errors return plain text, API errors return
{ "error": ... }JSON - MCP
update_post_statushas no ownership check (REST enforces owner/admin)
- MCP missing
get_roadmaptool (REST has it) - OpenAPI uses
serde_json::Valuebody for many endpoints — no concrete schema - MCP
get_statscounts are wrong for projects with >1000 posts - MCP response shapes differ from REST (
{ "posts": [...] }vs{ "data": [...] }) - Duplicate
OAuthIdentityin proto (dead, noemail_verified) vs oauth.rs (live) - Duplicate
*Requestvs*Bodystructs in proto (4 pairs,*Requestunused) - Unused proto types:
ListResponse<T>,ListPostsQuery,ProjectStats GET /healthnot in OpenAPI (minor)
- 27 REST endpoints total (21 API + 5 auth + 1 health)
- 17 of 27 documented in OpenAPI (63%)
- 13 MCP tools (read-heavy: 8 read, 5 write)
- 6 MCP↔REST parity gaps (attachments entirely, delete_post, delete_comment, roadmap, project CRUD)