triage(#135): dashboard tooltip → /bicameral-sync (scope-cut from auto-resolve)#138
Merged
Merged
Conversation
…cameral-sync Scope-cut from #135's original L2 proposal (--auto-resolve-trivial flag on link_commit). Design enumeration produced 7 options; all required either an LLM in the deterministic core (violating the "selection over generation" guardrail) or trivial-cases enumeration with non-zero false-positive risk. Cut: accept the architectural limit. Post-commit hook stays sync-only. Resolution path = dashboard tooltip on status === 'pending' rows → user runs /bicameral-sync in their Claude Code session. No code is auto-resolved. assets/dashboard.html: renderStateCell() ternary at line 455 → if/else if. New 'pending' branch attaches tooltip text "Pending compliance — run /bicameral-sync in your Claude Code session to resolve." Reuses existing data-tip CSS pattern (lines 187–198, hover transitions). Static string literal — no esc() needed (no HTML special chars). skills/bicameral-dashboard/SKILL.md: One bullet under Notes documenting the tooltip nudge contract. Per pilot/mcp/CLAUDE.md "tool changes ship with skill updates" rule (UI behavior changed; tool response shape unchanged). Section 4 razor: renderStateCell 19 LOC (cap 40), nesting 1 (cap 3), nested ternaries 0. Replaced ternary with if/else if — improves razor score, doesn't degrade it. Verification: manual (no automated test added — dashboard.html has zero existing test infrastructure; UI test harness absent; PR description includes manual verification step). Acknowledged advisory in Entry #24 audit. Refs #135 (close post-merge with scope-cut comment). Refs BicameralAI/bicameral#108 (Flow 3 spec edit, post-merge gh action). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…iation seal Reality matches Promise. Three changes (2 repo files + 2 deferred external gh actions) land per Entry #24 audit blueprint 1:1; 0 new tests (acknowledged advisory — manual verification mitigates); Section 4 razor clean. Audit verdict: PASS, L1 (Entry #24 chain hash 1de1fac7). Implementation: Entry #25 chain hash 51c8a45c. Merkle seal: efd0304b2f0e0b3ca28aa4620c2b8ea2eda5ab9e2828ca852ab9f3c5adda6eb5 Architectural decision recorded: bicameral-mcp#135's auto-resolve direction abandoned (no caller LLM in hook context, MCP sampling not viable in Claude Code's main chat). Resolution path = dashboard tooltip → /bicameral-sync. The tooltip surfaces the pending state; the human in their session is the qualified judge. Plan addition tracking (Entry #24 preconditions, final state): ✅ #2 — SKILL.md tooltip note (delivered in IMPL, sealed here) 🟡 #1 — PR description manual verification step (composed in /qor-document) 🟡 #3 — #135 close comment README/docs deferral (composed in /qor-document) Surfaced for follow-up (not blocking): bicameral-mcp#125 scope should be widened — 7 skills under pilot/mcp/.claude/skills/ are absent from the canonical pilot/mcp/skills/ location claimed by pilot/mcp/CLAUDE.md. Spec correction queued (post-merge gh action): bicameral#108 Flow 1 step 3 claims IngestResponse.supersession_candidates exists when it does not; collision detection lives caller-side via bicameral-context-sentry skill, surfaces via bicameral.preflight.unresolved_collisions. Capability shortfalls (carried, no regression vs Entry #23): qor/scripts/ runtime helpers absent (gate artifacts not written), tools/reliability/ validators absent (Steps 4.6–4.8 skipped), agent-teams not declared, codex-plugin not declared (solo audit/seal), intent_lock capture skipped. Refs #135. 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 |
jinhongkuan
added a commit
that referenced
this pull request
Apr 30, 2026
The simulation (scripts/sim_issue_108_flows.py) walks all six canonical flows from BicameralAI/bicameral#108 against the live bicameral-mcp implementation on dev. All 6 PASS post-#135-triage merge: Flow 1 PASS ingest → ratify; supersession_candidates absent (corrected) Flow 2 PASS region-anchored preflight (current contract; topic-BM25 removed) Flow 3 PASS full V1 path: ingest→ratify→bind→commit→link_commit→reflect Flow 3a PASS branch ephemeral; switch-to-main → drifted (no phantom reflect) Flow 4 PASS capture-corrections; agent_session source round-trips Flow 5 PASS history exposes both axes (status × signoff_state) Two spec drifts surfaced and fixed forward: 1. Flow 2 step 1 — spec said "BM25 search on the topic". Reality: v0.10.0 removed topic-BM25 from handle_preflight (see docs/preflight-failure-scenarios.md §intro). Current behaviour is region-anchored lookup via file_paths + HITL surfacing (unresolved_collisions, context_pending_ready). The caller LLM reads bicameral.history() and reasons over it for topic-relevance. Spec text correction queued as post-merge gh issue edit on #108. 2. Flow 4 step 3 — spec said source="conversation". Implementation's _SOURCE_TYPE_MAP (handlers/history.py) does NOT include "conversation" — it falls through to "manual". Canonical value for AI-surfaced session decisions is "agent_session". This commit corrects the capture-corrections skill (which was instructing callers to use the silently-broken "conversation" value) to use "agent_session". Spec text correction queued as post-merge gh issue edit on #108. Both spec corrections are external gh actions (gh issue edit) that fire post-merge once this PR lands on dev — same pattern as #135 triage. Closes the original ask in this session: validate #108 flows end-to-end on dev. Triage #135 (PR #138, merged eaf97e2) corrected the supersession_candidates wording and added the out-of-session committer paragraph to Flow 3; this PR closes the remaining gaps. Refs #108. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
jinhongkuan
added a commit
that referenced
this pull request
Apr 30, 2026
The simulation (scripts/sim_issue_108_flows.py) walks all six canonical flows from BicameralAI/bicameral#108 against the live bicameral-mcp implementation on dev. All 6 PASS post-#135-triage merge: Flow 1 PASS ingest → ratify; supersession_candidates absent (corrected) Flow 2 PASS region-anchored preflight (current contract; topic-BM25 removed) Flow 3 PASS full V1 path: ingest→ratify→bind→commit→link_commit→reflect Flow 3a PASS branch ephemeral; switch-to-main → drifted (no phantom reflect) Flow 4 PASS capture-corrections; agent_session source round-trips Flow 5 PASS history exposes both axes (status × signoff_state) Two spec drifts surfaced and fixed forward: 1. Flow 2 step 1 — spec said "BM25 search on the topic". Reality: v0.10.0 removed topic-BM25 from handle_preflight (see docs/preflight-failure-scenarios.md §intro). Current behaviour is region-anchored lookup via file_paths + HITL surfacing (unresolved_collisions, context_pending_ready). The caller LLM reads bicameral.history() and reasons over it for topic-relevance. Spec text correction queued as post-merge gh issue edit on #108. 2. Flow 4 step 3 — spec said source="conversation". Implementation's _SOURCE_TYPE_MAP (handlers/history.py) does NOT include "conversation" — it falls through to "manual". Canonical value for AI-surfaced session decisions is "agent_session". This commit corrects the capture-corrections skill (which was instructing callers to use the silently-broken "conversation" value) to use "agent_session". Spec text correction queued as post-merge gh issue edit on #108. Both spec corrections are external gh actions (gh issue edit) that fire post-merge once this PR lands on dev — same pattern as #135 triage. Closes the original ask in this session: validate #108 flows end-to-end on dev. Triage #135 (PR #138, merged eaf97e2) corrected the supersession_candidates wording and added the out-of-session committer paragraph to Flow 3; this PR closes the remaining gaps. Refs #108. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> (cherry picked from commit 2503fe6)
This was referenced Apr 30, 2026
jinhongkuan
added a commit
that referenced
this pull request
May 1, 2026
The simulation (scripts/sim_issue_108_flows.py) walks all six canonical flows from BicameralAI/bicameral#108 against the live bicameral-mcp implementation on dev. All 6 PASS post-#135-triage merge: Flow 1 PASS ingest → ratify; supersession_candidates absent (corrected) Flow 2 PASS region-anchored preflight (current contract; topic-BM25 removed) Flow 3 PASS full V1 path: ingest→ratify→bind→commit→link_commit→reflect Flow 3a PASS branch ephemeral; switch-to-main → drifted (no phantom reflect) Flow 4 PASS capture-corrections; agent_session source round-trips Flow 5 PASS history exposes both axes (status × signoff_state) Two spec drifts surfaced and fixed forward: 1. Flow 2 step 1 — spec said "BM25 search on the topic". Reality: v0.10.0 removed topic-BM25 from handle_preflight (see docs/preflight-failure-scenarios.md §intro). Current behaviour is region-anchored lookup via file_paths + HITL surfacing (unresolved_collisions, context_pending_ready). The caller LLM reads bicameral.history() and reasons over it for topic-relevance. Spec text correction queued as post-merge gh issue edit on #108. 2. Flow 4 step 3 — spec said source="conversation". Implementation's _SOURCE_TYPE_MAP (handlers/history.py) does NOT include "conversation" — it falls through to "manual". Canonical value for AI-surfaced session decisions is "agent_session". This commit corrects the capture-corrections skill (which was instructing callers to use the silently-broken "conversation" value) to use "agent_session". Spec text correction queued as post-merge gh issue edit on #108. Both spec corrections are external gh actions (gh issue edit) that fire post-merge once this PR lands on dev — same pattern as #135 triage. Closes the original ask in this session: validate #108 flows end-to-end on dev. Triage #135 (PR #138, merged eaf97e2) corrected the supersession_candidates wording and added the out-of-session committer paragraph to Flow 3; this PR closes the remaining gaps. Refs #108. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> (cherry picked from commit 2503fe6)
jinhongkuan
added a commit
that referenced
this pull request
May 1, 2026
The simulation (scripts/sim_issue_108_flows.py) walks all six canonical flows from BicameralAI/bicameral#108 against the live bicameral-mcp implementation on dev. All 6 PASS post-#135-triage merge: Flow 1 PASS ingest → ratify; supersession_candidates absent (corrected) Flow 2 PASS region-anchored preflight (current contract; topic-BM25 removed) Flow 3 PASS full V1 path: ingest→ratify→bind→commit→link_commit→reflect Flow 3a PASS branch ephemeral; switch-to-main → drifted (no phantom reflect) Flow 4 PASS capture-corrections; agent_session source round-trips Flow 5 PASS history exposes both axes (status × signoff_state) Two spec drifts surfaced and fixed forward: 1. Flow 2 step 1 — spec said "BM25 search on the topic". Reality: v0.10.0 removed topic-BM25 from handle_preflight (see docs/preflight-failure-scenarios.md §intro). Current behaviour is region-anchored lookup via file_paths + HITL surfacing (unresolved_collisions, context_pending_ready). The caller LLM reads bicameral.history() and reasons over it for topic-relevance. Spec text correction queued as post-merge gh issue edit on #108. 2. Flow 4 step 3 — spec said source="conversation". Implementation's _SOURCE_TYPE_MAP (handlers/history.py) does NOT include "conversation" — it falls through to "manual". Canonical value for AI-surfaced session decisions is "agent_session". This commit corrects the capture-corrections skill (which was instructing callers to use the silently-broken "conversation" value) to use "agent_session". Spec text correction queued as post-merge gh issue edit on #108. Both spec corrections are external gh actions (gh issue edit) that fire post-merge once this PR lands on dev — same pattern as #135 triage. Closes the original ask in this session: validate #108 flows end-to-end on dev. Triage #135 (PR #138, merged eaf97e2) corrected the supersession_candidates wording and added the out-of-session committer paragraph to Flow 3; this PR closes the remaining gaps. Refs #108. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> (cherry picked from commit 2503fe6)
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
Triage scope-cut for #135 (post-commit hook auto-resolve loop, P0). After
design enumeration of 7 options, every path to auto-resolution either (a)
requires an LLM in the deterministic core — violating the selection over
generation guardrail — or (b) requires a trivial-cases enumeration with
non-zero false-positive risk against the integrity contract.
Cut: accept the architectural limit. Post-commit hook stays sync-only.
Resolution path = dashboard tooltip on
status === 'pending'rows → userruns
/bicameral-syncin their Claude Code session. The qualified judge ofany pending compliance check is the human-in-session, not a hook-side
automaton.
Changes
pilot/mcp/assets/dashboard.htmlrenderStateCell()ternary → if/else if; newpendingbranch with tooltippilot/mcp/skills/bicameral-dashboard/SKILL.mdpilot/mcp/docs/META_LEDGER.mdpilot/mcp/docs/SYSTEM_STATE.mdTooltip text: "Pending compliance — run /bicameral-sync in your Claude Code session to resolve."
Section 4 razor:
renderStateCell19 LOC (cap 40), nesting 1 (cap 3),nested ternaries 0 (replaced ternary with if/else if — improves razor score).
Test plan
Mandatory manual verification — no automated UI test exists for
pilot/mcp/assets/dashboard.html; this is the agreed mitigation per Entry#24 audit advisory:
cd pilot/mcp && python -m server(or equivalent dev-server invocation); open dashboard URL./bicameral-ingest+bicameral.bind), modify the bound file,git commit.… pending; on hover, a tooltip appears with the text above./bicameral-syncin a Claude Code session — tooltip's call-to-action resolves the pending state toreflected(ordrifted).Existing test suite: unaffected (no Python/server code touched).
Chain integrity
1de1fac7…51c8a45c…efd0304b…Post-merge external
ghactions (queued)Will fire after merge:
gh issue close BicameralAI/bicameral-mcp#135 --comment ...Will fire after merge:
gh issue edit BicameralAI/bicameral#108 --body-file -Two sentence-level spec corrections:
Flow 3 — append at end:
Flow 1 step 2 — replace:
with:
Out of scope (deferred to separate PRs)
sim_issue_108_flows.py— simulation against the corrected Add deterministic escalation policy engine for semantic drift outcomes #108 spec, runs ondevafter this triage merges.pilot/mcp/skills/references across CLAUDE.md, DEV_CYCLE.md, TODO.md #125 — stalepilot/mcp/skills/reference cleanup. Finding surfaced during this triage: scope of docs cleanup — remove stalepilot/mcp/skills/references across CLAUDE.md, DEV_CYCLE.md, TODO.md #125 should widen — 7 skills underpilot/mcp/.claude/skills/are absent from canonicalpilot/mcp/skills/(perpilot/mcp/CLAUDE.mdclaim).Risk
L1 — UI-only behavior change to existing infrastructure, plus issue/spec doc edits. No new code paths, no schema changes, no contract changes. Three audit preconditions (manual verification step, SKILL.md note, deferral-status close comment) all satisfied or composed.
Closes #135 (post-merge via queued
gh issue closeabove).🤖 Generated with Claude Code