From dac19a3552bfede343ba332f499f2765b96ee7d4 Mon Sep 17 00:00:00 2001 From: robbond Date: Sat, 29 Aug 2026 16:46:51 +0100 Subject: [PATCH] fix(confidence-engine): show focused investigation activity --- components/reasoning-workspace.jsx | 86 ++---------------------------- docs/current-handoff.md | 25 +++++++++ 2 files changed, 30 insertions(+), 81 deletions(-) diff --git a/components/reasoning-workspace.jsx b/components/reasoning-workspace.jsx index 713a9f2..4176e7b 100644 --- a/components/reasoning-workspace.jsx +++ b/components/reasoning-workspace.jsx @@ -599,86 +599,10 @@ function ThreadContributionsBadge({ nodeId, contributions, findings }) { ); if (!threadContribs.length) return null; - // Show most recent contribution summary inline - const latest = threadContribs[threadContribs.length - 1]; - - const nonEmptyGroups = []; - for (const key of ["observations", "uncertainties", "assumptions", "relationships"]) { - const arr = latest[key]; - if (Array.isArray(arr) && arr.length > 0) nonEmptyGroups.push(key); - } - return ( -
- {/* Thread activity cue: visible when this node has focused investigation history */} - - INVESTIGATING - - {/* Thread learning indicator โ€” collapsed by default; user can expand to inspect history */} -
- - ๐Ÿ“ {threadContribs.length} learned contribution{threadContribs.length !== 1 ? "s" : ""} - -
- {/* All contributions listed in order */} - {threadContribs.map((c, idx) => ( -
- {idx > 0 &&
Contribution #{c.sequence || idx + 1}
} - {/* What this tells us โ€” via canonical Findings */} - {(() => { - const propositions = getHistoricalPropositions(c, findings); - return propositions.length ? ( -
-

What this tells us

-
    - {propositions.map((o, i) => ( -
  • {o}
  • - ))} -
-
- ) : null; - })()} - - {/* Still unclear */} - {c.uncertainties?.length ? ( -
-

Still unclear

-
    - {c.uncertainties.map((u, i) => ( -
  • {u}
  • - ))} -
-
- ) : null} - - {/* Assumptions */} - {c.assumptions?.length ? ( -
-

Assumptions

-
    - {c.assumptions.map((a, i) => ( -
  • {a}
  • - ))} -
-
- ) : null} - - {/* Connections */} - {c.relationships?.length ? ( -
-

Connections

-
    - {c.relationships.map((r, i) => ( -
  • {r.from} โ†’ {r.to} ({r.type})
  • - ))} -
-
- ) : null} -
- ))} -
-
-
+ + INVESTIGATING ยท {threadContribs.length} learned contribution{threadContribs.length !== 1 ? "s" : ""} + ); } @@ -1233,7 +1157,7 @@ function OpenQuestionsPanel({ onUpdateFindingProposition={onUpdateFindingProposition} /> - {/* Thread contributions for this node */} + {/* Thread contributions for this node โ€” compact cue inside card */} @@ -1832,8 +1756,8 @@ export default function ReasoningWorkspace({

{node.description}

)} {!isFocused && Unclear} + - ); })} diff --git a/docs/current-handoff.md b/docs/current-handoff.md index 865c6c5..6395d54 100644 --- a/docs/current-handoff.md +++ b/docs/current-handoff.md @@ -1946,3 +1946,28 @@ Target node: `n58lwnx` - do not create a fresh scenario unless an experiment explicitly requires one; - if this investigation is absent, report TEST-STATE MISSING rather than diagnosing persistence failure; - structural/relative assertions only for LLM output โ€” no exact prose dependency. + +## v0.49.6 โ€” OPEN QUESTION ACTIVITY VISIBILITY โ€” VERIFIED + +- **Status:** CLOSED / CHECKPOINTED +- `INVESTIGATING` is an activity/history cue independent from epistemic `Unclear` +- overview presentation is compact and non-expandable: `INVESTIGATING ยท N learned contribution(s)` +- cue lives inside the originating Open Question card +- activity derives from canonical focused Contributions using: `targetNodeId OR originatingTargetNodeId` +- investigated card was live verified after return from workspace +- untouched question remained without activity cue +- cue survived cold reload +- Open Question card remains the route into detailed investigation history +- zero LLM calls during verification +- targeted tests: 89 PASS +- build: PASS + +### Unresolved boundaries (no diagnosis) + +- completed-turn vs active-turn reconstruction +- empty response textarea against an already-completed historical question +- `Back to open questions` lifecycle +- top-right `Close investigation` wording / likely `Close workspace` +- `Done for now` remains a separate semantic action + +**Next boundary:** FOCUSED WORKSPACE COMPLETED-TURN / ACTIVE-TURN LIFECYCLE