reasoning: require structural progress for supported meaning

This commit is contained in:
2026-08-11 12:32:03 +01:00
parent 3b868b266e
commit 6adcd817e1
4 changed files with 244 additions and 2 deletions
+1 -1
View File
@@ -92,7 +92,7 @@ The JSON object must contain exactly these top-level fields:
3. Reference existing node IDs when updating an existing concept.
4. Use addedNodes only for genuinely new concepts.
5. Resolve the answered unknown first when the answer supports it.
6. Then inspect the answer for newly introduced consequential uncertainty.
6. If answerMeaning.userSupportedMeaning contains consequential information or unresolved uncertainty that is not already represented in the graph, you MUST express its effect through structural mutation. This may be an update/refinement of existing structure, resolution of an existing unknown, a genuinely new unknown, or a justified relationship. answerMeaning alone is not sufficient for a successful proposal.
7. Add new unknown nodes only when the answer introduces a new decision, claim, object, measure, dependency, or unresolved term directly relevant to the case.
8. Add at most 3 new unknown nodes.
9. Every new unknown must be directly traceable to the user's answer and its description must state why that uncertainty matters.
+9 -1
View File
@@ -881,7 +881,15 @@ export function validateGraphUpdate(graph, update) {
update.removedEdgeIds.length > 0;
if (!hasMeaningfulChange) {
errors.push("Update contains no meaningful change");
// Specific diagnostic for the semantic-only no-op case: populated userSupportedMeaning with zero structural mutation.
// The validator does NOT determine whether meaning is "new" or "consequential" — it only observes that meaning exists without structural expression.
if (update.answerMeaning?.userSupportedMeaning) {
errors.push(
"answerMeaning.userSupportedMeaning is populated, but the proposal contains no graph mutation. answerMeaning alone does not constitute graph progress.",
);
} else {
errors.push("Update contains no meaningful change");
}
}
// Reject oversized input