Skip to content

feat(portal): manual hypothesis authoring — add, attach, detach (26 H.3)#172

Closed
bryanmatthewsimonson wants to merge 1 commit into
claude/phase-26-h2-hypothesis-renderfrom
claude/phase-26-h3-attach-affordance
Closed

feat(portal): manual hypothesis authoring — add, attach, detach (26 H.3)#172
bryanmatthewsimonson wants to merge 1 commit into
claude/phase-26-h2-hypothesis-renderfrom
claude/phase-26-h3-attach-affordance

Conversation

@bryanmatthewsimonson

Copy link
Copy Markdown
Owner

Summary

Phase-26 slice H.3 — the human-drawn-edges affordance. Stacked on #171 (→ #170#169); merge in order.

  • Add hypothesis… — label (identity — immutable, per the H.1 model) + statement. Shown even when the map is empty (as long as the case has orbit claims), so the map is startable entirely by hand — no LLM required (single-user posture unchanged).
  • Attach claim… per hypothesis card — orbit-claim picker, Supports/Undermines role, optional note. Attaching to a brief-seeded card promotes it: the idempotent label-derived create lands the record, then the edge. The form copy states the rule: a claim can support one hypothesis and undermine another; nothing is netted.
  • ✕ detach per edge row; ✕ delete hypothesis on persisted cards with blast-radius confirm (cascades edges, dependents-first order from the H.1 review).
  • Every DOM-layer string (buttons, placeholders, tooltips) is exported and walked by the no-scoreboard guard test alongside the model's strings.

Tests: 1,758 green · build clean · lint 0 errors.

Next

H.4 (LLM edge suggestion through the map/reduce firewall) follows — the last hypothesis-map slice before the counterfactual pair.

🤖 Generated with Claude Code

Phase 26 slice H.3 (docs/HYPOTHESIS_MAP_DESIGN.md §7):

- 'Add hypothesis…' on the block: label (identity, immutable) +
  statement, HypothesisModel.create with suggested_by 'user'. Renders
  even on an empty map when the case has orbit claims, so the map is
  startable without LLM synthesis; a claimless case still renders
  nothing.
- 'Attach claim…' per card: orbit-claim picker + Supports/Undermines
  role + optional note. A brief-seeded card is PROMOTED on first
  attach (idempotent create — label is identity), then the edge lands
  on the persisted record. The form copy states the never-netted rule.
- '✕ detach' per edge row; '✕ delete hypothesis' on persisted cards
  with the blast-radius confirm (cascades edges, dependents-first).
- All authoring + tooltip strings exported (AUTHORING_STRINGS,
  CRUX_BADGE_TITLE, VERDICT_CHIP_TITLE) and walked by the
  no-scoreboard guard test — nothing the block puts on screen escapes
  the guard. Edge ids ride the view model for detach.
- Re-render via callbacks.onReloadCase (the add-sources/synthesis
  precedent).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@bryanmatthewsimonson

Copy link
Copy Markdown
Owner Author

Landed on main via the #183 consolidation merge — this PR was auto-closed by the base-branch deletion cascade, but its commits are all in main.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant