docs: record question-formulation fix
This commit is contained in:
@@ -1707,3 +1707,15 @@ This satisfies 57J.77's boundary A recommendation: a committed update-only path
|
||||
### Experiment 57J.86 — Smallest Recovery Contract for Null Semantic/Action with Good Mutation (Read-Only Design)
|
||||
|
||||
**Objective:** What is the smallest recovery contract that lets the engine preserve a good mutation while recovering missing semantic/action declarations, without regenerating or discarding the mutation? Read-only design evaluation of four options (deterministic action fill, declaration-only repair call, full regeneration, keep transition path). **Classification: B — DECLARATION-ONLY REPAIR CALL.** structuralActionRequired is PARTIALLY recoverable from structure via hasMeaningfulChange=true (but this changes field semantics from model declaration to engine inference). answerMeaning fields are NOT recoverable from mutation structure alone. Existing code has zero repair capability — validator only validates, orchestrator returns errors on rejection with no retry/repair path. Option B chosen: one bounded second-stage repair call that preserves mutation arrays exactly and recovers all missing declarations (answerMeaning + structuralActionRequired) through model declaration. Repair receives raw answer + original proposal as context; forbidden from changing any mutation arrays. Repair classified as SECOND-STAGE REPAIR, not RETRY or NORMAL SECOND CALL — existing call accounting cannot cleanly distinguish repair calls without tooling change. Non-negotiable invariants all met: original mutation preserved, no keyword logic, no regeneration, exactly 1 bounded additional call, provider-agnostic, 57J.84 information survives full recovery. No production code changed; no Ollama calls; documentation-only design.
|
||||
|
||||
### Experiment 58A.4 — Question-Like Label Formulation Fix
|
||||
|
||||
**Objective:** When an unknown's label is already interrogative (wh-question, yes/no question via subject-auxiliary inversion, or whether-clause), produce a grammatically correct follow-up question instead of interpolating the label raw into a declarative template frame.
|
||||
|
||||
**Defect reproduced by 58A.2 + 58A.3:** "What would clarify are the projected office savings from relocation realistic in this situation?" — malformed template injection.
|
||||
|
||||
**Fix summary:** Added `isInterrogativeMeaning()` (generic interrogative detection: wh-prefix, subject-auxiliary inversion, whether-clause) and `wrapInterrogativeForTemplate()`. All five question-builders now short-circuit before template interpolation when the meaning is already interrogative. Noun-phrase behaviour preserved. Target selection unchanged.
|
||||
|
||||
**Ownership location:** `lib/graph/question-formulator.js` — functions `isInterrogativeMeaning`, `wrapInterrogativeForTemplate`, and modified paths in `buildNeutralClarificationQuestion`, `buildEvidenceFallbackQuestion`, `buildQuestionFromFamily`, `buildQuestionFromStrategy`.
|
||||
|
||||
**Classification: PASS.** 20 new focused tests pass. No regressions. Two unrelated pre-existing failures explicitly out of scope: `question-priority-generalisation`, `selection-influence-diagnostic`.
|
||||
|
||||
Reference in New Issue
Block a user