124 lines
3.3 KiB
Markdown
124 lines
3.3 KiB
Markdown
# Experiment 60B.26 — Proposition Question Formulation Fix
|
|
|
|
**Branch:** `feature/proposition-question-shape-v0.30`
|
|
**Date:** 2026-08-13
|
|
**Status:** COMPLETE
|
|
|
|
## Objective
|
|
|
|
Implement the smallest deterministic fix so `whether...` propositions are turned into concise evidence questions without carrying explanatory rationale, while preserving direct interrogatives and wh-questions.
|
|
|
|
## 60B.25 Diagnosis Applied
|
|
|
|
60B.25 isolated two deterministic causes:
|
|
|
|
1. `extractMeaning(...)` returned the full description, including explanatory rationale.
|
|
2. `isInterrogativeMeaning(...)` treated `whether...` propositions as if they were already finished direct questions.
|
|
|
|
The intended correction was:
|
|
|
|
> clean unresolved proposition + existing evidence framing
|
|
|
|
not grammatical rewriting into `Will/Does/Is...`.
|
|
|
|
## Exact Proposition-Extraction Rule
|
|
|
|
The bounded extraction change stays inside `lib/graph/question-formulator.js`.
|
|
|
|
For the existing narrow path where:
|
|
|
|
- the label is nominal / status-like (`status|likelihood|probability|chance|risk|uncertainty`)
|
|
- and the description begins with `whether...`
|
|
|
|
the formulator now extracts only the proposition portion.
|
|
|
|
Implemented rule:
|
|
|
|
- match `whether ...`
|
|
- stop at the first clear rationale boundary:
|
|
- `;`
|
|
- `, so that ...`
|
|
- `, because ...`
|
|
- `matters because ...`
|
|
|
|
This is bounded to explicit `whether...` proposition extraction only. It is **not** a global semicolon truncation rule.
|
|
|
|
## Exact Whether / Evidence-Framing Rule
|
|
|
|
The formulator now distinguishes:
|
|
|
|
- **direct interrogatives**
|
|
- `Will our largest client leave if we relocate?`
|
|
- `What would change the preferred option?`
|
|
- **indirect unresolved propositions**
|
|
- `whether the supplier will renew the contract`
|
|
|
|
`whether...` is no longer treated as a direct interrogative.
|
|
|
|
Instead, it is routed through the existing deterministic evidence phrasing:
|
|
|
|
```text
|
|
What evidence would clarify whether X?
|
|
```
|
|
|
|
No subject/auxiliary inversion was added.
|
|
|
|
## Preserved Direct Interrogatives
|
|
|
|
Direct question labels remain preserved as question-ready:
|
|
|
|
- yes/no direct interrogatives still pass through unchanged
|
|
- wh-questions still pass through unchanged
|
|
|
|
This also preserves 60B.20-style behaviour.
|
|
|
|
## Focused Test Result
|
|
|
|
Command run:
|
|
|
|
```bash
|
|
npx vitest run tests/graph/question-formulator.test.js
|
|
```
|
|
|
|
Result:
|
|
|
|
```text
|
|
PASS (29/29)
|
|
```
|
|
|
|
Covered regressions:
|
|
|
|
1. Exact 60B.24 rationale stripping regression
|
|
2. Clean `whether...` proposition without rationale
|
|
3. Direct interrogative preserved
|
|
4. Wh-question preserved
|
|
5. Source node description unchanged
|
|
6. Non-`whether` semicolon content not globally truncated
|
|
|
|
## What Remains Unproven Until Live 60B.24 Rerun
|
|
|
|
This experiment proves the deterministic question-formulation layer behaves correctly for the fixed regression shape and focused test coverage.
|
|
|
|
Still unproven live:
|
|
|
|
- the exact end-to-end 60B.24 continuation through the full runtime path
|
|
- whether any upstream live-model variation changes the selected unknown or surrounding graph state before formulation
|
|
|
|
## Production Boundary Confirmed
|
|
|
|
Changed:
|
|
|
|
- `lib/graph/question-formulator.js`
|
|
- `tests/graph/question-formulator.test.js`
|
|
|
|
Not changed:
|
|
|
|
- prompt builder
|
|
- schema
|
|
- apply-proposal
|
|
- question-target selection
|
|
- materiality
|
|
- reasoning-context compatibility
|
|
- provider integration
|
|
- harness
|