diff --git a/docs/current-handoff.md b/docs/current-handoff.md index 34c05fd..b1b1c91 100644 --- a/docs/current-handoff.md +++ b/docs/current-handoff.md @@ -200,6 +200,15 @@ Experiment 54N tested whether an interpretation disagreement can be judged for m - `npx vitest run tests/graph/question-formulator.test.js` → PASS (39/39) - **Still unproven live:** the exact 60B.29 `Uncertainty over whether...` customer-signing case through the full end-to-end runtime path on this branch. +### 60B.33 explicit bare `whether` proposition fix + +- 60B.32 diagnosed that proposition extraction for a bare `Whether...` description still depended on label keywords like `status|likelihood|risk|uncertainty`, causing nominal labels such as `Enterprise customer signing decision` to lose their explicit proposition. +- `extractMeaning()` now treats a description beginning with bare `Whether...` as sufficient evidence of an unresolved proposition regardless of label wording, while preserving the existing bounded rationale stripping. +- Focused deterministic verification passed: + - `npx vitest run tests/graph/question-formulator.test.js` → PASS (42/42) +- Generic non-proposition decision unknowns remain on their existing path when no explicit `Whether...` proposition is present. +- **Still unproven live:** the exact 60B.31 live-shaped customer-signing case through the full end-to-end runtime path on this branch. + ### 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-60b33.md b/docs/experiment-60b33.md new file mode 100644 index 0000000..5f9bb4a --- /dev/null +++ b/docs/experiment-60b33.md @@ -0,0 +1,123 @@ +# Experiment 60B.33 — Honor Explicit Bare `Whether...` Propositions + +**Branch:** `feature/bare-whether-proposition-v0.33` +**Starting HEAD:** `29d565372b68fd286d797b18b19864778d517d03` +**Date:** 2026-08-14 +**Status:** COMPLETE + +## Objective + +Close the narrow gap diagnosed in 60B.32 by making an explicit bare `Whether...` description sufficient evidence of an unresolved proposition even when the label is nominal and lacks status/likelihood/risk keywords. + +## 60B.32 Diagnosis + +The previous bounded proposition path still required label keywords such as: + +```text +status +likelihood +probability +chance +risk +uncertainty +``` + +before honoring a bare `Whether...` description. + +That meant a live-shaped node like: + +```text +label: +Enterprise customer signing decision + +description: +Whether the prospective enterprise customer will commit this year, because resolving this uncertainty is needed to decide if launching this year provides superior net value over waiting twelve months. +``` + +failed to preserve its explicit proposition even though the description itself already stated one. + +## Exact Deterministic Change + +Production change was limited to `lib/graph/question-formulator.js`. + +Inside `extractMeaning()`, the bounded proposition-extraction gate now treats a description beginning with: + +```text +Whether ... +``` + +as sufficient for proposition extraction regardless of label wording. + +This preserves the existing label-keyword path, but adds the narrower rule: + +```text +if description explicitly starts with bare Whether... +→ extract whether-proposition directly +``` + +using the same existing rationale stripping boundary. + +## Exact 60B.31 Regression + +For the live-shaped node: + +```text +label: +Enterprise customer signing decision + +description: +Whether the prospective enterprise customer will commit this year, because resolving this uncertainty is needed to decide if launching this year provides superior net value over waiting twelve months. +``` + +the deterministic final question is now: + +```text +What evidence would clarify whether the prospective enterprise customer will commit this year? +``` + +The final question excludes: + +- `launching` +- `superior net value` +- `waiting twelve months` +- `because` + +and the source node description remains unchanged. + +## Focused Verification + +Run exactly as bounded: + +```bash +npx vitest run tests/graph/question-formulator.test.js +``` + +Result: + +```text +PASS — 42/42 tests +``` + +Focused coverage confirms: + +- exact 60B.31 live-shaped regression passes +- bare `Whether...` works with an unrelated nominal label (`Supplier contract decision`) +- bare `Whether...` with a status-like label remains unchanged +- all prefix regressions from 60B.28/60B.30 remain green +- direct interrogatives remain unchanged +- a generic non-proposition decision unknown remains on its existing non-proposition path +- source descriptions remain intact + +## Preserved Existing Paths + +This change did **not**: + +- change decision-threshold precedence globally +- change question-target selection +- change graph structure, materiality, schema, provider, or harness behaviour +- add domain-specific wording +- regress `Unknown whether...`, `Uncertain whether...`, `Uncertainty about whether...`, `Uncertainty regarding whether...`, or `Uncertainty over whether...` + +## What Remains Unproven + +The exact live 60B.31 rerun on this branch remains unproven. This experiment guarantees the deterministic formulation boundary only.