fix(reasoning): enforce terminal post-mutation eligibility

This commit is contained in:
2026-08-14 09:11:08 +01:00
parent 34eb0cd4e3
commit 6b13e67c05
4 changed files with 414 additions and 13 deletions
+8 -13
View File
@@ -1660,7 +1660,7 @@ function isSelectableUnresolvedUnknown(graph, nodeId) {
return Boolean(
node &&
node.kind === "unknown" &&
!["resolved", "contradicted"].includes(node.status) &&
!["known", "resolved", "contradicted"].includes(node.status) &&
!(graph.resolvedNodeIds || []).includes(node.id),
);
}
@@ -1673,9 +1673,7 @@ function listUnresolvedUnknownCandidates(
return (graph.nodes || []).filter(
(node) =>
node.kind === "unknown" &&
!["resolved", "contradicted"].includes(node.status) &&
!(graph.resolvedNodeIds || []).includes(node.id) &&
isSelectableUnresolvedUnknown(graph, node.id) &&
!resolvedCurrentTurnSet.has(node.id),
);
}
@@ -2183,7 +2181,7 @@ function selectPatternCompatibleUnknownCandidate({
(node) =>
node.kind === "unknown" &&
!excluded.has(node.id) &&
!["resolved", "contradicted"].includes(node.status),
isSelectableUnresolvedUnknown(graph, node.id),
)
.filter(
(node) =>
@@ -3704,11 +3702,9 @@ export function applyValidatedProposal({
const remainingUnknownExists =
newActiveUnknownNodeId != null &&
updatedSituationGraph.nodes.some(
(node) =>
node.id === newActiveUnknownNodeId &&
node.kind === "unknown" &&
!updatedSituationGraph.resolvedNodeIds.includes(node.id),
isSelectableUnresolvedUnknown(
updatedSituationGraph,
newActiveUnknownNodeId,
);
if (!remainingUnknownExists) {
@@ -3846,9 +3842,8 @@ export function applyValidatedProposal({
: null;
const carriedActiveUnknownStillUnresolved = Boolean(
carriedActiveUnknownNode &&
carriedActiveUnknownNode.kind === "unknown" &&
!["resolved", "contradicted"].includes(carriedActiveUnknownNode.status) &&
!updatedSituationGraph.resolvedNodeIds.includes(
isSelectableUnresolvedUnknown(
updatedSituationGraph,
carriedActiveUnknownNode.id,
),
);