7.9 KiB
Experiment 58B.2 — Verified Uncertainty Resolution
Branch: feature/question-formulation-v0.24
Date: 2026-08-12
Status: Complete
Previous context: Follows 58B.1 which showed the engine preserves qualified evidence while keeping uncertainty open. This tests the opposite boundary: when the user explicitly verifies and confirms realism, does the engine resolve?
Objective
When the user explicitly says the £2m figure has now been verified and is realistic, does the engine resolve the existing n_savings_realism uncertainty rather than merely changing its value or weakening its status?
Fixed Starting Graph
Fixture: tests/fixtures/pre-anchored-update-savings-realism.json
id: n_savings_realism
label: Are the projected office savings from relocation realistic?
kind: unknown
status: unknown
value: null
confidence: low
dependsOn: [n_relocation_state]
Fixed Answer
We have now verified the projected saving at about £2 million per year, including the relevant lease exit costs, and I am confident that estimate is realistic.
Components:
- Concrete value: approximately £2 million per year
- Verification: the estimate has now been checked
- Relevant dependency addressed: lease exit costs included
- Explicit confidence: user now believes the estimate is realistic
No new uncertainty introduced.
Execution
FIXTURE_MODE=updateOnly \
ANSWER_2="We have now verified the projected saving at about £2 million per year, including the relevant lease exit costs, and I am confident that estimate is realistic." \
CONFIDENCE_ENGINE_BASE_URL=http://127.0.0.1:3000 \
node scripts/reproduce-multi-turn-investigation.mjs
Host/model: qwen-claude:latest at http://192.168.1.111:11434 Calls: startCalls=0, updateCalls=1, totalCalls=1 Retries: 0
Results
Answer meaning
Not returned in the update response (updateOnly mode accepted without including answerMeaning in the output). The structural fields below are authoritative.
Structural proposal
updatedNodes:[{"nodeId":"n_savings_realism","previousStatus":"unknown","newStatus":"resolved","previousValue":null,"newValue":"£2,000,000","reason":"User verified the projected annual savings including lease exit costs are realistic."}]resolvedUnknownNodeIds:["n_savings_realism"]addedNodes:[]addedEdges:[]structuralActionRequired: null
Persistent graph after update
node: id=n_relocation_state, kind=state, label=Engineering team relocation consideration, status=provisional
node: id=n_savings_realism, kind=unknown, label=Are the projected office savings from relocation realistic?, status=resolved
edge: n_savings_realism → n_relocation_state (depends_on)
Selected question
None produced.
Assessment
| Criterion | Result | Classification |
|---|---|---|
| £2m figure | "£2,000,000" on n_savings_realism |
PRESERVED AS VERIFIED |
| Existing uncertainty status | unknown → resolved |
CORRECTLY RESOLVED |
| Identity of savings-realism node | Single node, unchanged id (n_savings_realism), no duplicates |
ORIGINAL IDENTITY RESOLVED |
| Verification meaning | reason: "User verified the projected annual savings including lease exit costs are realistic." | PRESERVED |
| Next investigation | NONE — no consequential unresolved issue remains | GOOD |
£2m figure analysis
The value "£2,000,000" preserves the core monetary figure. The "per year" unit is not explicit in newValue (unlike 58B.1 which had "£2M/year (unverified)") but is preserved in the reason field ("projected annual savings"). This qualifies as PRESERVED AS VERIFIED — the amount is captured and the verification context survives.
Uncertainty resolution analysis
Status clearly changed from unknown to resolved. The node id n_savings_realism appears in resolvedUnknownNodeIds. This is unambiguous correct resolution.
Identity analysis
Exactly one savings-realism unknown node exists before and after the update. Same node id, same label, status transitions correctly. No duplicate created. ORIGINAL IDENTITY RESOLVED.
Verification meaning analysis
The reason field on the updated node explicitly states: "User verified the projected annual savings including lease exit costs are realistic." This captures all four components of the user's answer (value, verification, lease costs, confidence). PRESERVED.
Next investigation analysis
No selected question was produced. This is correct behavior — the existing uncertainty is resolved and no new consequential unresolved issue was introduced by the answer. GOOD.
Classification: A — UNCERTAINTY CORRECTLY RESOLVED
- n_savings_realism correctly resolved (status →
resolved) - Included in
resolvedUnknownNodeIds - Verified £2m evidence survives as
"£2,000,000"with full verification context in reason field - No duplicate uncertainty created
- Same node id preserved (original identity resolved)
- No redundant question asked about realism
- No consequential unresolved issue remains to investigate
What the engine understood correctly
- Resolution trigger: The explicit "verified" and "confident...realistic" language triggered correct uncertainty resolution — status moved from
unknowntoresolved. This is the semantic boundary 58B.1 left open. - Value extraction: The figure was captured as
"£2,000,000"— a clean monetary representation. - Verification context: The reason field captured all four answer components: value (£2m), verification status ("verified"), lease exit costs, and confidence ("realistic").
- No fabrication: No new uncertainty nodes or edges were created from this answer that contained no new uncertainty.
- Identity preservation: The original
n_savings_realismwas updated (not replaced or duplicated). - Correct termination signal: No selected question was produced, correctly reflecting that the existing investigation thread is complete.
What it overstated, weakened, or lost
Minor weakening of temporal unit: The "per year" time unit is not explicit in newValue (which is "£2,000,000" rather than "£2,000,000/year"). However, the word "annual" in the reason field partially compensates. This does not affect the core resolution question — it is a secondary representation detail.
What this establishes
- When the user provides explicit verification AND confidence about realism, the engine correctly resolves the existing savings-realism uncertainty (status →
resolved+ inclusion inresolvedUnknownNodeIds). - This is the semantic opposite of 58B.1 and works correctly — the engine distinguishes between "unverified but plausible" (keep open) and "verified and confident" (resolve).
- The verified £2m figure survives in persistent graph state with verification context captured.
- No duplicate uncertainty is created during resolution.
- The engine does not ask the resolved question again — it correctly terminates when no consequential unresolved issue remains.
What this does NOT prove
- Single controlled case — one answer, one model invocation. Stability across different answers or repeated runs is untested.
- Temporal unit preservation — whether "per year" survives in
newValuedepends on answer phrasing and model behavior. - answerMeaning fields — the update response did not include answerMeaning, so whether userSupportedMeaning captured all four components independently of the reason field is unavailable.
- Multi-turn stability — what happens when subsequent turns arrive after a resolved uncertainty is untested here.
- Cross-domain generalisation — this is a single cost-savings domain case.