From 22e1d7484b6e77f7a07120072366557dc9fcb07a Mon Sep 17 00:00:00 2001 From: robbond Date: Thu, 27 Aug 2026 13:43:23 +0100 Subject: [PATCH] feat(confidence-engine): support finding corrections --- components/reasoning-workspace.jsx | 65 ++++++++- components/scenario-form.jsx | 11 ++ tests/v03-reasoning.test.js | 219 +++++++++++++++++++++++++++++ 3 files changed, 292 insertions(+), 3 deletions(-) diff --git a/components/reasoning-workspace.jsx b/components/reasoning-workspace.jsx index e240e9c..15d0b20 100644 --- a/components/reasoning-workspace.jsx +++ b/components/reasoning-workspace.jsx @@ -170,10 +170,35 @@ function FocusedQuestionBody({ focusedContributions, currentFindings, onUpdateFindingDisposition, + onUpdateFindingProposition, }) { const hasContent = focused?.question?.trim() || formulationStep === "active" || processingStep === "active" || focused?.error; const hasResult = Boolean(focused?.result); + // ── Local correction state (FQB-owned, not propagated upward) ─ + const [editingFindingId, setEditingFindingId] = useState(null); + const [draft, setDraft] = useState(""); + + function startEditing(id, proposition) { + setEditingFindingId(id); + setDraft(proposition ?? ""); + } + + function cancelEditing() { + setEditingFindingId(null); + setDraft(""); + } + + function saveEditing() { + const trimmed = (draft ?? "").trim(); + if (!trimmed || !editingFindingId) { + cancelEditing(); + return; + } + onUpdateFindingProposition?.(editingFindingId, trimmed); + cancelEditing(); + } + return ( <> {isFocused && hasContent && ( @@ -206,14 +231,40 @@ function FocusedQuestionBody({

What this tells us