feat: dashboard decision_level surfacing -- amber unclassified badge + filter (#76 part 1)#106
Merged
Knapp-Kevin merged 1 commit intoApr 29, 2026
Conversation
…+ filter (BicameralAI#76 part 1) Adds the read-side UI for decision_level. Pre-existing L1/L2/L3 badges (shipped in BicameralAI#71 / CodeGenome Phase 1+2) are preserved; this PR adds the missing amber 'Unclassified' state for NULL decision_level rows plus a top-of-table filter dropdown. - .lvl-unclassified CSS class (amber rgb(249,115,22)) - Rendering branch at line 548 handles null decision_level - <select id='lvl-filter'> with 5 options - Each decision row carries data-level='L1'|'L2'|'L3'|'unclassified' - Client-side JS applyLevelFilter(value) toggles row visibility No server changes. The companion inline-edit POST endpoint (BicameralAI#76 part 2) ships in a follow-up PR after the sibling BicameralAI#77 classifier PR lands ledger.queries.update_decision_level. Refs BicameralAI#76 (part 1 of 2) Generated with Claude Code (https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Knapp-Kevin
added a commit
to Knapp-Kevin/bicameral-mcp
that referenced
this pull request
Apr 29, 2026
…i/ package Audit found: - F-1 (BLOCKING): `bicameral/` Python package does not exist; the proposed `bicameral/drift_report.py` module would be unbuildable. SG-PLAN-GROUNDING-DRIFT instance BicameralAI#3 in this session. - F-2: dev tip moved 2 commits during planning (PR BicameralAI#106 + BicameralAI#107). Remediation: - Replace all 7 references: `bicameral/drift_report.py` → `cli/drift_report.py`; `bicameral.drift_report` (CLI module path) → `cli.drift_report`. - Update branch baseline note to current dev tip `c478dd5`. - The cli/ package was added by PR BicameralAI#107 (decision_level CLI for BicameralAI#77); it's the natural home for a CLI-invoked renderer. The plan's intent is preserved: pure-function renderer + GitHub Action workflow + sticky-comment poster. Re-audit pending.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Read-side UI for
decision_levelinassets/dashboard.html. Pre-existing L1/L2/L3 badges (shipped in #71 / CodeGenome Phase 1+2) are untouched; this PR adds the missing amber Unclassified state for NULLdecision_levelrows plus a top-bar filter dropdown so reviewers can scope the ledger view to a single level (or to the unclassified backlog)..lvl-unclassifiedCSS class -- amberrgb(249, 115, 22), sibling of.lvl-l1/.lvl-l2/.lvl-l3.renderDecbranch for nulldecision_level-- emitslvl-unclassifiedbadge labeledUnclassifiedand stamps the row withdata-level="unclassified".data-level="L1"|"L2"|"L3"|"unclassified"and thedecision-rowclass.<select id="lvl-filter">in the topbar (All / L1 / L2 / L3 / Unclassified) wired to a new client-sideapplyLevelFilter(value)helper.tests/test_dashboard_unclassified_rendering.py-- six assertions covering CSS, render branch, dropdown markup, filter function. The render path is inline JS, so the tests assert against the source-of-truth template rather than booting a DOM.Part 1 of 2
Phase 6 of the original plan (inline-edit POST endpoint) is deferred to a follow-up PR. That endpoint calls
ledger.queries.update_decision_level, which is being added in the sibling classifier PR (#77 /feat/decision-level-classify-77). Once that helper lands ondev, part 2 ships and closes the remaining slice of #76.No server changes
Pure HTML/CSS/JS edit plus one new pytest module. No touches to
classify/,cli/,handlers/,ledger/queries.py,contracts.py, orserver.py-- those are the sibling classifier PR's surface.Test plan
pytest tests/test_dashboard_unclassified_rendering.py -v-- 6 passed in 0.67spython -c "from dashboard.server import get_dashboard_server"-- imports cleanruff check .-- cleanruff format --check .-- 164 files already formattedmypy tests/test_dashboard_unclassified_rendering.py-- no issuesLabels
flow:feature-- read-side UI surfacing existing classifier output.Refs
decision_level+ "unclassified" badge for legacy NULL rows #76 (part 1 of 2)decision_level = NULLrows #77 /feat/decision-level-classify-77(providesupdate_decision_levelfor part 2)Generated with Claude Code