From db5016c138ba0b739697f4017851436539096654 Mon Sep 17 00:00:00 2001 From: robbond Date: Tue, 18 Aug 2026 14:59:52 +0100 Subject: [PATCH] feat(experiment): checkpoint RTO case workspace lifecycle --- components/reasoning-workspace.jsx | 216 ++++++++++++++++++++++++----- 1 file changed, 180 insertions(+), 36 deletions(-) diff --git a/components/reasoning-workspace.jsx b/components/reasoning-workspace.jsx index 449f85b..28252d8 100644 --- a/components/reasoning-workspace.jsx +++ b/components/reasoning-workspace.jsx @@ -527,6 +527,14 @@ export default function ReasoningWorkspace({ const pendingTurnRef = useRef(null); // ── Experiment 12: toggle between progress panel versions (temporary experimental UI) ── const [panelVariant, setPanelVariant] = useState("c"); + + // ── RTO.01 — presentation-only selection for open investigation items ── + const [selectedPresentationItemId, setSelectedPresentationItemId] = useState(null); + + // ── RTO.02 — case / question workspace lifecycle (presentation only) ── + const [focusedPresentationItemId, setFocusedPresentationItemId] = useState(null); + const [doneForNowIds, setDoneForNowIds] = useState([]); + const { saveSession, loadSession } = useSessionPersistence(); // Persist workspace state on every successful update (Phase 3) @@ -663,49 +671,185 @@ export default function ReasoningWorkspace({
{/* ── Left lane: active conversation & notebook ───────── */}
- {/* Active question — only when there is one */} - {hasSelectedQuestion && ( - <> - + {/* ── Open questions (case workspace) — no ranking bias ── */} + {(() => { + const openNodes = graph.nodes.filter( + (n) => n.kind === "unknown" && n.status !== "resolved" && !doneForNowIds.includes(n.id) + ); + if (openNodes.length <= 1) return null; - {updateStatus === "success" && !isUpdating && ( - - )} - - )} + return ( +
+

+ Open questions +

+
+ {openNodes.map((node) => { + const isSelected = selectedPresentationItemId === node.id; - {/* Answer form — only when a question is active and not loading */} - {!isUpdating && canAnswer && ( -
-
- -