Tracking epic for the backend & contract bug audit documented in docs/backend-contract-bug-audit.md (PR #114 ).
Multi-agent functional-correctness review of backend/ + the FE↔BE API contract. Every finding adversarially re-verified against source: 40 candidates → 31 distinct confirmed bugs (2 critical, 6 high, 9 medium, 14 low), grouped into the issues below. This is the backend sibling of the frontend UI audit epic #113 .
P0 — critical (data exposure) P1 — high [P1] search_course_materials leaks other users' documents into the tutor/note-chat LLM #125 — search_course_materials leaks other users' documents into the LLM [security][P1] Encryption boundary leaks: unencrypted assignment-notes write + ciphertext in API responses #126 — Encryption boundary leaks: unencrypted notes write + ciphertext in responses [security][P1] Agent-migration regressions: mastery-via-chat gone, empty concepts_covered, no usage limits #127 — Agent-migration regressions: mastery-via-chat, concepts_covered, usage limits (blocks [P2] Live-update Learn progress card via SSE graph deltas #74 )[P1] Knowledge-graph write integrity: quiz bypasses apply_graph_update, non-atomic mastery, directional edge dedup #128 — Knowledge-graph write integrity: quiz bypass, non-atomic mastery, edge dedup (overlaps [P2] Gate shared-course-context writes behind the Class Intel toggle #72 )[P1] Admin allowlist 404 — frontend calls GET /api/admin/allowlist with no backend route #130 — Admin allowlist 404 (missing GET /api/admin/allowlist)[P1] Social realtime correctness: duplicate bubbles, unscoped reaction reloads, has_more off-by-one #131 — Social realtime correctness: dup bubbles, reaction scope, has_more (root cause of [P1] Fix Social page: posts not saving / not fetching on create #85 )P2 — medium P3 — low Cross-references to pre-existing issues (de-overlapped) Recommended fix order P0 data exposure ([P0] calendar.export_to_google cross-user IDOR leaks decrypted private notes #123 , [P0] Realtime room chat renders encrypted ciphertext for incoming messages #124 ) — small surgical fixes. Remaining security items ([P1] search_course_materials leaks other users' documents into the tutor/note-chat LLM #125 , [P1] Encryption boundary leaks: unencrypted assignment-notes write + ciphertext in API responses #126 , [P2] Unauthenticated feedback/issue-report endpoints + over-exposed private profile #134 ). Knowledge-graph correctness cluster ([P1] Agent-migration regressions: mastery-via-chat gone, empty concepts_covered, no usage limits #127 , [P1] Knowledge-graph write integrity: quiz bypasses apply_graph_update, non-atomic mastery, directional edge dedup #128 , [P2] Quiz scoring & idempotency: double-submit double-counts, free point on malformed item #129 ). The rest by severity.
Tracking epic for the backend & contract bug audit documented in
docs/backend-contract-bug-audit.md(PR #114).Multi-agent functional-correctness review of
backend/+ the FE↔BE API contract. Every finding adversarially re-verified against source: 40 candidates → 31 distinct confirmed bugs (2 critical, 6 high, 9 medium, 14 low), grouped into the issues below. This is the backend sibling of the frontend UI audit epic #113.P0 — critical (data exposure)
[security][security](root cause of [P1] Fix Social page: posts not saving / not fetching on create #85)P1 — high
[security][security]P2 — medium
[security]P3 — low
Cross-references to pre-existing issues (de-overlapped)
update_course_contextwrite path with [P1] Knowledge-graph write integrity: quiz bypasses apply_graph_update, non-atomic mastery, directional edge dedup #128.Recommended fix order
securityitems ([P1] search_course_materials leaks other users' documents into the tutor/note-chat LLM #125, [P1] Encryption boundary leaks: unencrypted assignment-notes write + ciphertext in API responses #126, [P2] Unauthenticated feedback/issue-report endpoints + over-exposed private profile #134).