diff --git a/docs/current-handoff.md b/docs/current-handoff.md index ab94daa..bb37ac0 100644 --- a/docs/current-handoff.md +++ b/docs/current-handoff.md @@ -174,6 +174,15 @@ Experiment 54N tested whether an interpretation disagreement can be judged for m - `npx vitest run tests/graph/question-formulator.test.js` → PASS (29/29) - **Still unproven live:** the exact 60B.24 regression through the full end-to-end runtime path. +### 60B.28 explicit uncertainty-prefix proposition coverage + +- 60B.27 exposed a narrow coverage gap: descriptions starting `Unknown whether...` fell through to nominal label extraction instead of the existing bounded `whether ...` proposition path. +- `extractMeaning()` now extends the same case-insensitive prefix normalisation used before proposition extraction to also strip explicit uncertainty markers `unknown` and `uncertain`. +- As a result, `Whether...`, `Unknown whether...`, `Uncertain whether...`, `Uncertainty about whether...`, and `Uncertainty regarding whether...` now all expose `whether X` before existing rationale stripping and evidence framing run. +- Focused deterministic verification passed: + - `npx vitest run tests/graph/question-formulator.test.js` → PASS (37/37) +- **Still unproven live:** the exact 60B.27 customer-signing case through the full end-to-end runtime path. + ### When This Knowledge-Management Phase Is Complete Provisional criteria for review (all confirmed met by Experiment 38 cold-start test): diff --git a/docs/experiment-60b28.md b/docs/experiment-60b28.md new file mode 100644 index 0000000..4eb1d47 --- /dev/null +++ b/docs/experiment-60b28.md @@ -0,0 +1,132 @@ +# Experiment 60B.28 — Explicit Uncertainty Prefix Proposition Coverage + +**Branch:** `feature/proposition-prefix-coverage-v0.31` +**Starting HEAD:** `4e66e1ffbf1b8aa9103f72430c14e26d48f7f1fd` +**Date:** 2026-08-14 +**Status:** COMPLETE + +## Objective + +Close the narrow live coverage gap identified in 60B.27 by extending bounded proposition-prefix normalisation so explicit uncertainty forms beginning: + +```text +Unknown whether... +Uncertain whether... +``` + +enter the same `whether ...` proposition-extraction path already established in 60B.26. + +## 60B.27 Coverage Gap + +60B.27 confirmed that the live cleanup from 60B.26 was working correctly for: + +- material target preservation +- evidence framing activation +- explanatory rationale removal from the final question +- source graph meaning preservation + +But the live node description began: + +```text +Unknown whether one prospective enterprise customer will sign if we launch this year, so that the remaining £700k of the expected £1.2M annual revenue is realized. +``` + +The existing bounded proposition path recognised: + +```text +Whether... +Uncertainty about whether... +Uncertainty regarding whether... +``` + +but not: + +```text +Unknown whether... +Uncertain whether... +``` + +So formulation fell back to the nominal label instead of preserving the full unresolved proposition. + +## Exact Prefix Normalisation Added + +Production change was limited to `lib/graph/question-formulator.js`. + +Inside `extractMeaning()`, the description-start normalisation used before the existing `^whether` proposition check now also strips these explicit uncertainty prefixes case-insensitively: + +```text +unknown +uncertain +``` + +This means the following bounded forms are now treated equivalently for proposition extraction: + +```text +Whether X... +Unknown whether X... +Uncertain whether X... +Uncertainty about whether X... +Uncertainty regarding whether X... +``` + +Each now exposes: + +```text +whether X +``` + +before the existing rationale-boundary stripping and evidence framing logic runs. + +## Focused Regression Behaviour + +The exact 60B.27 regression now formulates: + +```text +What evidence would clarify whether one prospective enterprise customer will sign if we launch this year? +``` + +The final question excludes: + +- `£700k` +- `£1.2M` +- `annual revenue` + +while the source node description remains unchanged. + +Additional focused deterministic coverage also confirms: + +- `Uncertain whether...` preserves the proposition with evidence framing +- bare `Whether...` remains unchanged +- `Uncertainty about whether...` remains unchanged +- `Uncertainty regarding whether...` remains unchanged +- direct interrogatives remain unchanged +- nominal non-`whether` behaviour remains unchanged +- formulation-only cleanup does not mutate the source description + +## Preserved Existing Paths + +This change did **not**: + +- redesign question formulation +- broaden parsing beyond explicit uncertainty markers +- convert arbitrary `unknown` descriptions into propositions +- mutate graph descriptions +- change question templates, routing, provider logic, schema, or proposal application + +## Verification + +Focused command run exactly as bounded: + +```bash +npx vitest run tests/graph/question-formulator.test.js +``` + +Result: + +```text +PASS — 37/37 tests +``` + +## What Remains Unproven Until Exact Live 60B.27 Rerun + +Deterministic formulation coverage is now proven for the targeted prefix gap, but the exact live end-to-end 60B.27 rerun is still required to reconfirm that the same proposition-preserving output appears through the full runtime path with live model-selected graph updates.