7.9 KiB
Experiment 60B.66 — Live Decision-Closure Regression (60B.64 Fix)
Date: 2026-08-14
Branch: feature/decision-closure-integration-v0.43
Head commit: bce05f7 feat(reasoning): integrate explicit decision-sufficiency closure (60B.64)
Objective
Does the committed 60B.64 production path now close the exact 60B.56 negative customer-signing case with no stale active target, no follow-up question, no new uncertainty, and no invented recommendation direction?
Hypothesis
hasRemainingMaterialFactors(decisionId, graph) === false
AND
raw user answer explicitly confirms no other material uncertainty remains
=> resolve the existing parent decision before another question is selected
Result:
customer factor = resolved
decision = resolved
activeUnknownNodeId = null
selectedQuestion = null
Configured environment
- Model: qwen-claude:latest
- Ollama base URL: http://192.168.1.111:11434
- Confidence Engine base URL: http://127.0.0.1:3000
Input
- Fixture:
tests/fixtures/pre-anchored-product-launch-customer-signing.json- Pre-anchored state: decision (
n_product_launch_decision) in unknown status; enterprise customer signing (n_enterprise_customer_signing) in unknown status, activeUnknownNodeId = n_enterprise_customer_signing.
- Pre-anchored state: decision (
- Answer: "No. The enterprise customer has now confirmed in writing that they will not sign if we launch this year, so the £700,000 of expected annual revenue from them will not be received. There are no other material uncertainties between launching this year and waiting twelve months."
Run
FIXTURE_MODE=updateOnly \
FIXTURE_PATH=tests/fixtures/pre-anchored-product-launch-customer-signing.json \
ANSWER_2="No. The enterprise customer has now confirmed in writing that they will not sign if we launch this year, so the £700,000 of expected annual revenue from them will not be received. There are no other material uncertainties between launching this year and waiting twelve months." \
CONFIDENCE_ENGINE_BASE_URL=http://127.0.0.1:3000 \
node scripts/reproduce-multi-turn-investigation.mjs
- startCalls: 0
- updateCalls: 1
- totalCalls: 1
- Retries: 0
Results
Proposal accepted: YES (HTTP 200)
updatedNodes:
[
{
"nodeId": "n_enterprise_customer_signing",
"previousStatus": "unknown",
"newStatus": "resolved",
"newValue": "confirmed_no_signing",
"reason": "User explicitly confirmed in writing the enterprise customer will not sign, resolving this material uncertainty."
},
{
"nodeId": "opt_launch_this_year",
"previousStatus": "known",
"newStatus": "known",
"newValue": "Revised financial impact: ~£500k/year expected additional recurring revenue (excluding the confirmed lost £700k enterprise customer), £300k one-off launch/support cost.",
"reason": "Update option description to reflect the resolved financial consequence of the now-resolved unknown."
},
{
"nodeId": "n_product_launch_decision",
"previousStatus": "unknown",
"newStatus": "resolved",
"newValue": null,
"reason": "All represented material factors resolved and raw user answer explicitly confirmed no further material uncertainty remains."
}
]
resolvedUnknownNodeIds:
["n_enterprise_customer_signing", "n_product_launch_decision"]
addedNodes:
[]
addedEdges:
[]
structuralActionRequired: null
Customer node final state:
n_enterprise_customer_signing: status = resolved, value = confirmed_no_signing
Customer resolution meaning:
"User explicitly confirmed in writing the enterprise customer will not sign, resolving this material uncertainty." → Negative meaning preserved.
Decision node final state:
n_product_launch_decision: status = resolved (CLOSED)
Launch option final state:
opt_launch_this_year: status = known
Wait option final state:
opt_wait_twelve_months: status = known
DIRECT CLOSURE METADATA
finalActiveUnknownNodeId: null
finalSelectedQuestion: null
Assessment
Customer factor: RESOLVED IN PLACE
The enterprise-customer-signing node was updated in place from unknown → resolved with value confirmed_no_signing.
Negative meaning: PRESERVED
The resolution reason and newValue ("confirmed_no_signing") both explicitly preserve the negative meaning — the customer will not sign.
Parent decision: RESOLVED IN PLACE (KNOWN/CLOSED)
n_product_launch_decision transitioned from unknown → resolved. The 60B.64 deterministic closure rule fired correctly: all material factors resolved + raw user answer explicitly confirmed no further uncertainty => decision closed in place.
Identity preservation:
- Decision node: PRESERVED
- Launch option: PRESERVED
- Wait option: PRESERVED
Active lifecycle: NULL — CLEARED
finalActiveUnknownNodeId is directly null. No stale or genuine unresolved target remains.
Final question: NULL — DECISION COMPLETE
finalSelectedQuestion is directly null. No continuation question was generated.
New uncertainty discipline: NONE (no new nodes, no new edges)
Recommendation direction: NONE (not inventoried by this run)
60B.56 → 60B.66 comparison
| Field | 60B.56 (FAILURE) | 60B.66 (PASS) |
|---|---|---|
| Proposal accepted | YES | YES |
| Customer status | unknown→resolved | unknown→resolved |
| Customer meaning | PRESERVED | PRESERVED |
| Decision status | unknown (KEPT OPEN) | resolved (CLOSED) |
| finalActiveUnknownNodeId | "n_product_launch_decision" | null |
| finalSelectedQuestion | non-null decision_threshold | null |
| addedNodes | [] | [] |
| addedEdges | [] | [] |
| resolvedUnknownNodeIds | ["n_enterprise_customer_signing"] | ["n_enterprise_customer_signing", "n_product_launch_decision"] |
Progress from 60B.56 → 60B.66: The clean-closure contract is now met. The decision node auto-resolves when all its dependency unknowns resolve and the user explicitly confirms no further material uncertainty remains. Both activeUnknownNodeId and selectedQuestion are null.
Classification: A — LIVE REASONING THREAD CLOSED
All success criteria directly observed:
- Proposal accepted ✓
- Customer resolves in place ✓
- Negative meaning preserved ✓
- Decision resolves/closes in place ✓
- Decision identity preserved ✓
- Both options preserved ✓
- addedNodes = [] ✓
- addedEdges = [] ✓
- finalActiveUnknownNodeId = null ✓
- finalSelectedQuestion = null ✓
What this proves
- The 60B.64 decision-sufficiency closure rule works live. When
hasRemainingMaterialFactors(decisionId, graph) === falseAND the raw user answer explicitly confirms no other material uncertainty remains, the parent decision node is correctly resolved before any follow-up question is selected. - No regression in customer-signing factor resolution. The negative meaning (customer will not sign) is preserved exactly.
- Zero spurious mutations. No nodes or edges added during this resolution pass.
- The exact live failure that drove experiments 60B.47→60B.64 is now fixed.
Behavioural baseline
CUSTOMER-SIGNING / DECISION-SUFFICIENCY THREAD:
BEHAVIOURALLY CLOSED FOR CURRENT REGRESSION BASELINE
This establishes a pre-refactor behavioural baseline. The behaviour may now be frozen as the baseline before any zero-semantic-change decision-sufficiency extraction refactor.
What remains unproven
- All reasoning behaviour is complete — NOT claimed. This experiment only covers the single customer-signing negative case on the product-launch decision graph.
- All decision domains are proven — NOT claimed. Other domains (savings, relocation, etc.) are not covered.
- Production is universally correct — NOT claimed.