feat(portal): side-by-side hypothesis map on the case dashboard (26 H.2)#171
Merged
bryanmatthewsimonson merged 1 commit intoJul 18, 2026
Conversation
Phase 26 slice H.2 (docs/HYPOTHESIS_MAP_DESIGN.md §4): - src/portal/hypothesis-block.js — renderHypothesesBlock over the shared case-view data envelope. A pure, node-testable buildHypothesisBlockModel derives every user-facing string; the DOM layer projects it 1:1 (el()/textContent, no innerHTML). Hypotheses render as equal-width side-by-side cards (grid; layout encodes nothing), each with statement, brief holders as followable source links, and default-open Supporting/Undermining sections whose headings carry ONLY their own size. Crux badges on claims attached to more than one hypothesis; verdict chain-head chips as context with the does-not-weight note; llm/nostr/seed provenance badges; dangling edges and unlabeled brief positions disclosed. Self-removes when the case has no map. - case-view.js mounts the block in the shared-assembly IIFE between the graph/synthesis blocks and the timeline. - tests/hypothesis-block.test.mjs — the §6.2 no-scoreboard guard over the model's strings (negative: no comparison phrasing or judgment number anywhere; positive: the maps-not-picks / not-a-ranking / does-not-weight disclaimers present — the corpus-publish pairing), cross-hypothesis reference check per card, honest degradation for unresolved claims/holders. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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
Phase-26 slice H.2 (HYPOTHESIS_MAP_DESIGN.md §4). Stacked on #170 (which stacks on #169) — merge in order; this PR retargets automatically.
What renders
A new Hypotheses block on the portal case dashboard, mounted in the shared-assembly IIFE (same
dataenvelope, no second collection pass). Equal-width side-by-side cards — the layout deliberately encodes nothing — each with:from brief/llm:/nostr:badges),Self-removes when the case has no hypotheses (no flag needed — assembly is local and free; only H.4's LLM suggestion will be gated).
Guard tests (§6.2)
buildHypothesisBlockModelis pure and node-testable; the DOM layer projects it 1:1. The guard walks every rendered string: no comparison phrasing or judgment number anywhere (negative half), required disclaimers present (positive half), per-card cross-hypothesis reference check, honest degradation for unresolved claims/holders.Tests: 1,758 green (6 new) · build clean · lint 0 errors.
Note for the smoke walk
The visual layout (grid cards, badge placement) needs a human browser pass — suggest adding a Phase-26 section to SMOKE_TEST.md once H.3's authoring affordance lands, so the walk covers create→attach→render in one pass.
Next
H.3 (manual attach claim→hypothesis affordance) follows.
🤖 Generated with Claude Code