Name:
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
State:
Failed
finished in 19m
PR State:
merged
PR Author:
David Tran
PR Author Email:
PR:
#8
Committer:
David Tran
Committer Email:
david.tran@tvtmarine.com
Commit:
13814b83598c3c43e38230207eabc850106044e7
Description:
[ADD] viin_brain: WI-14 — UI panels (AI attribution badge + Graph panel + AI Review + filters)
Backend (viin_brain/models/viin_brain_page.py):
- action_ai_review_approve / action_ai_review_reject — record reviewer id + timestamp
- _check_ai_review_permission — vault editor/admin role guard (raises AccessError)
- brain_get_current_user_role — return 'admin'/'editor'/'commenter'/'viewer'/'viewer' (default)
- write() override — auto-flip ai_review_status=pending_review → human_modified on human content edit (skip when brain_agent_id context set, skip when caller wrote status explicitly)
Backend (viin_brain/models/viin_brain_database_view.py):
- brain_get_database_rows: new optional filters dict; filters.is_ai_authored restricts rows to AI-authored pages
New OWL components:
- AiAttributionBadge (3 files) — '✦ AI' chip + hover CSS tooltip with 5 rows (agent / confidence / trace / status / reviewer)
- GraphPanel (3 files) — tab inside BacklinkPanel: incoming (depth=1), outgoing (depth=2 nested via via_link_ids heuristic), siblings (same parent_id). ACL honored automatically via ORM
- AiReviewPanel (3 files) — tab inside BacklinkPanel: Approve / Reject buttons, role-guarded (only editor/admin can click), status + agent + confidence + reviewer meta
UI integration:
- BacklinkPanel: import GraphPanel + AiReviewPanel, add Graph tab (always) + AI Review tab (only when isAiAuthored), load is_ai_authored + parent_id in _loadBacklinks
- PageEditor: register AiAttributionBadge, include AI fields in page read, render badge in title row
- VaultSidebar: new '✦ AI' filter pill (mode=ai_authored), handle in _loadFilteredPages + empty-state message
- DatabaseView: toolbar toggle '✦ AI' (filterAiAuthored state), passes filters dict to brain_get_database_rows
Manifest:
- Register new components (SCSS + JS + XML) before page_editor + backlink_panel
- Register viin_brain_graph_panel_tour.js in web.assets_tests
Tests:
- TestAiReviewWorkflow (9 cases): approve/reject/admin-can-approve/viewer-cannot/commenter-cannot/human-modified/approved-stays/agent-edit-skips/role-helper
- Tour viin_brain_graph_panel_tour.js (AC-17): seed incoming + outgoing edges via wikilinks, verify tab renders both sections
Note: manually implemented (Option B) after /coder subprocess hit systematic
write-target drift pattern (pattern doc:
knowledge/viinforge/patterns/failure-2026-04-20-coder-writes-to-ai17-main-via-doc-refs.md).
BA_REVIEW + PLAN artifacts from /coder subprocess retained (acceptance_criteria.md +
implementation_plan.md) as design source.
Branch:
17.0
Instance ID:
0
Age:
Up-time: