diff --git a/docs/current-handoff.md b/docs/current-handoff.md index 5494600..7ac4003 100644 --- a/docs/current-handoff.md +++ b/docs/current-handoff.md @@ -1574,6 +1574,63 @@ With Contribution persistence demonstrated working, the remaining unresolved bou **Selected next boundary: Focused → global Finding integration / Previous Learning presentation.** +### PHASE 6 — UNCLEAR + INVESTIGATING CUE ON OPEN QUESTION CARDS + +#### What was done + +Added an amber **INVESTIGATING** cue to the `ThreadContributionsBadge` component (line ~583-590 of `reasoning-workspace.jsx`). The cue renders above the "📝 N learned contribution" detail element whenever the node has one or more matching contributions identified by `c.targetNodeId === nodeId`. + +The cue is also visible on Done-for-now cards (same ThreadContributionsBadge component). + +UNCLEAR (epistemic state tag) and INVESTIGATING (activity indicator) are **independent** — both render on the same card simultaneously. One does not suppress or replace the other. + +#### Deterministic tests added (11 new) + +File: `tests/open-questions-vs-assumptions.test.jsx` — describe block "Focused investigation history cue" + +| Test | What it verifies | +|------|------------------| +| investigated question matches contributions by targetNodeId | identity rule correctness | +| uninvestigated question gets zero threadContribs | no false-positive cue | +| unrelated contributions do not contaminate another node | isolation | +| 1+ contributions → cue shows | visibility logic | +| UNCLEAR and INVESTIGATING coexist on same node | epistemic vs activity independence | +| Done-for-now retains cue when contributions exist | persistent indicator state | +| identity rule distinguishes contributed from uninvestigated | discrimination test | +| multiple contributions on same node still show single cue | idempotent cue, not count-dependent | +| null/undefined contributions → no cue | guard against falsy | +| empty array → no cue | boundary value | +| mismatched targetNodeId → no match | selector correctness | + +All 57 tests pass. + +#### Live Playwright verification (2026-08-28) + +Canonical scenario: e-commerce checkout abandonment, `targetNode = n58lwnx`. +State: 1 contribution targeting n58lwnx, 3 findings. + +**Observed on first Open Question card ("Relative contribution..."):** +- `INVESTIGATING` (amber text) visible above the card content +- `📝 1 learned contribution` badge visible below INVESTIGATING +- Both UNCLEAR and INVESTIGATING present simultaneously — coexist, no suppression + +**Observed on other two Open Question cards:** +- No INVESTIGATING cue — correct (zero matching contributions by targetNodeId) + +#### What is OUT OF SCOPE for this phase + +- The cue does NOT render in the initial reflection surface (plain buttons). It only renders inside `OpenQuestionsPanel` → `ThreadContributionsBadge`. This is by design; the panel appears during focused workspace operation, not the initial scenario entry. +- No CSS animation, transition, or expansion behavior — just a static indicator. +- Does NOT affect which cards are clickable/investigable (UNCLEAR handles that). + +#### Remaining open boundaries (unchanged) + +1. **Follow-up selected-question duplication** (OPEN UI ISSUE) — proposed follow-up appears simultaneously as ACTIVE QUESTION and STILL-AVAILABLE FOLLOW-UP; proposal state vs active-question state disconnect +2. **Focused → global ownership/integration** (STILL OPEN) — how accumulated focused Findings map into the global SituationGraph reasoning layer +3. **Current Understanding incorporating focused learning** (STILL OPEN) — narrative understanding should be reconstructed from globally eligible Findings + graph state, not directly from latest focused result + +**Selected next boundary: Focused → global Finding integration / Previous Learning presentation.** + **Why this is now the strongest next boundary:** - The Contribution persistence blocker that prevented assessing previous-learning completeness has been removed. If Contributions persist correctly to canonical storage and survive reload, then the Previous Learning panel should be able to render them without a persistence defect obscuring the UI question. - This is a product-semantic/user-facing progression (not internal cleanup). It directly tests whether the findings domain model established in the handoff can be exercised end-to-end: accumulated focused evidence → visible to user as usable context.