diff --git a/components/reasoning-workspace.jsx b/components/reasoning-workspace.jsx index dc37be8..3154fd5 100644 --- a/components/reasoning-workspace.jsx +++ b/components/reasoning-workspace.jsx @@ -1187,8 +1187,10 @@ function OpenQuestionsPanel({ onUpdateFindingDisposition, onUpdateFindingProposition, }) { + const resolvedIds = new Set(graph?.resolvedNodeIds || []); + const openNodes = (graph?.nodes || []).filter( - (n) => n.kind === "unknown" && n.status !== "resolved" && !doneForNowIds.includes(n.id), + (n) => n.kind === "unknown" && !resolvedIds.has(n.id) && !doneForNowIds.includes(n.id), ); if (openNodes.length <= 0) return null; @@ -1817,12 +1819,14 @@ export default function ReasoningWorkspace({ {(() => { const resolvedIds = new Set(graph?.resolvedNodeIds || []); - // Open Questions: unresolved unknown nodes only (investigable) + // Open Questions: unknown nodes NOT in resolvedNodeIds (canonically investigable) const openUnknowns = (graph?.nodes || []).filter( - (n) => - n.kind === "unknown" && - n.status !== "resolved" && - !resolvedIds.has(n.id), + (n) => n.kind === "unknown" && !resolvedIds.has(n.id), + ); + + // Clarified questions: unknown nodes that ARE in resolvedNodeIds (read-only historical) + const clarifiedQuestions = (graph?.nodes || []).filter( + (n) => n.kind === "unknown" && resolvedIds.has(n.id), ); // Possible Interpretations: unresolved assumption nodes only (informational, not investigable) @@ -1915,6 +1919,28 @@ export default function ReasoningWorkspace({ )} + {/* QUESTIONS WE HAVE CLARIFIED — resolved unknowns shown post-Done */} + {clarifiedQuestions.length > 0 && ( +
+

+ Questions we have clarified +

+ {clarifiedQuestions.map((node) => ( +
+
+ {node.label} + {node.description && node.description !== node.label && ( +

{node.description}

+ )} + Clarified +
+
+ ))} +
+ )} + {/* POSSIBLE INTERPRETATIONS — assumption nodes (informational, not investigable) */} {possibleInterpretations.length > 0 && (