Files
confidence-engine/docs/experiment-60b66.md
T

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

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.
  • 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 unknownresolved 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 unknownresolved. 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

  1. The 60B.64 decision-sufficiency closure rule works live. When hasRemainingMaterialFactors(decisionId, graph) === false AND 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.
  2. No regression in customer-signing factor resolution. The negative meaning (customer will not sign) is preserved exactly.
  3. Zero spurious mutations. No nodes or edges added during this resolution pass.
  4. 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

  1. All reasoning behaviour is complete — NOT claimed. This experiment only covers the single customer-signing negative case on the product-launch decision graph.
  2. All decision domains are proven — NOT claimed. Other domains (savings, relocation, etc.) are not covered.
  3. Production is universally correct — NOT claimed.

Production code changed: NO

Prompt changed: NO

Validator changed: NO

Schema changed: NO

Harness changed during experiment: NO

Vitest run: NO

Ollama calls: 1

Direct API calls: 0

Dev server disturbed: NO