Files
confidence-engine/docs/experiment-59a3.md
T

8.9 KiB

Experiment 59A.3 — Known vs Uncertain Consequence Structure

Branch: feature/question-formulation-v0.24 Date: 2026-08-12 Status: Complete Following: 59A.2 which showed partial decomposition (delivery impact structured but engineer loss left only in text, no epistemic separation).

Objective

When the user states one consequence as known ("two senior engineers will leave") and a downstream consequence as uncertain ("whether losing them would delay delivery"), does the proposal represent them as separate structural objects with different epistemic states?

This isolates that distinction without the extra £2m-resolution step from 59A.1/59A.2.

Context route

Read only:

  • docs/current-handoff.md (sections 59A.1, 59A.2)
  • Fixture: tests/fixtures/pre-anchored-update-savings-realism.json
  • Harness: scripts/reproduce-multi-turn-investigation.mjs

Do not load older experiment history.

Fixed starting graph

Fixture: tests/fixtures/pre-anchored-update-savings-realism.json

Existing unresolved question:

n_savings_realism — Are the projected office savings from relocation realistic? — status = unknown

Fixed answer

We know that relocating would cause two senior engineers to leave. What I don't know is whether losing them would delay delivery, or by how many months.

The answer contains two semantically different assertions:

  1. Known consequence: two senior engineers will leave (epistemic state = known)
  2. Uncertain consequence: whether/when that loss delays delivery (epistemic state = unknown)

Note: this version omits the £2m savings confirmation present in 59A.2, isolating only the known-vs-unknown distinction.

Execution

Host/model: qwen-claude:latest at http://192.168.1.111:11434 Calls: startCalls=0, updateCalls=1, totalCalls=1 Retries: 0


Results

UPDATE output

HTTP status: 422
Stage: proposal_compatibility
Error: "selectedQuestion must be a single non-compound question"

Rejected proposal snapshot (from diagnostics.rejectedProposalSnapshot)

answerMeaning

  • userSupportedMeaning: "Relocating will cause two senior engineers to depart; it is currently unknown whether this loss will delay project delivery or determine the magnitude of such delays."
  • possibleInference: "The financial savings from relocation may be negated by productivity losses and delivery delays caused by losing key technical staff."

Proposal mutations

{
  "updatedNodes": [],
  "resolvedUnknownNodeIds": [],
  "addedNodes": [
    {
      "id": "n_talent_departure",
      "kind": "observation",
      "label": "Senior engineer turnover from relocation",
      "description": "Relocating would cause two senior engineers to leave.",
      "parentId": null,
      "dependsOn": ["n_relocation_state"],
      "affects": ["n_delivery_delay_impact"],
      "childIds": []
    },
    {
      "id": "n_delivery_delay_impact",
      "kind": "unknown",
      "label": "Delivery delay impact from lost engineers",
      "description": "Whether losing the two senior engineers will delay project delivery and by how many months; matters because it determines if productivity loss outweighs office savings.",
      "parentId": null,
      "dependsOn": ["n_talent_departure"],
      "affects": ["n_relocation_state"],
      "childIds": []
    }
  ],
  "addedEdges": [
    {
      "fromNodeId": "n_delivery_delay_impact",
      "toNodeId": "n_talent_departure",
      "relationship": "depends_on"
    }
  ]
}

selectedQuestion

null (no selected question produced — caused the rejection at proposal_compatibility)


Reasoning Assessment

Known engineer loss

  • Created dedicated node n_talent_departure:
    • kind = observation (not unknown, not provisional)
    • label: "Senior engineer turnover from relocation"
    • description: "Relocating would cause two senior engineers to leave."
    • depends_on: n_relocation_state
    • affects: [n_delivery_delay_impact]
  • affects field carries a typed structural link to the downstream uncertainty node.

Classification: SEPARATE KNOWN STRUCTURE

The engineer departure is not embedded in text or left uncertain — it is its own observation node with status derived from kind=observation (a factual assertion, not an unresolved question). This is a correct epistemic state for a known consequence.

Delivery impact

  • Created dedicated node n_delivery_delay_impact:
    • kind = unknown
    • status = unknown
    • label: "Delivery delay impact from lost engineers"
    • description: "Whether losing the two senior engineers will delay project delivery and by how many months..."
    • depends_on: [n_talent_departure]
  • The dependsOn field is populated with the known-consequence node — a typed structural link.

Classification: SEPARATE UNRESOLVED STRUCTURE

Delivery uncertainty is its own unknown node with proper kind=status=unknown and structural linkage back to the known consequence via depends_on.

Epistemic separation

  • n_talent_departure (kind=observation) = known factual consequence
  • n_delivery_delay_impact (kind=unknown, status=unknown) = unresolved uncertain consequence
  • They are two distinct nodes with a typed affects/depends_on relationship between them.

Classification: CLEARLY SEPARATED

The epistemic distinction is preserved at the structural level — two different kinds, two different statuses, connected by typed edges.

Relationship between engineer loss and delivery delay

  • n_talent_departure.affects = ["n_delivery_delay_impact"]
  • n_delivery_delay_impact.dependsOn = ["n_talent_departure"]
  • Edge: n_delivery_delay_impact → n_talent_departure with relationship=depends_on

Classification: TYPED / STRUCTURAL LINK

The causal chain is represented by both a forward field (affects) and a reverse edge (depends_on), not just embedded in prose.

Next question

No selectedQuestion was produced (null). The rejection was caused by the validator requiring "a single non-compound question."

Note: the savings-realism node (n_savings_realism) remains unresolved because this answer version does not address it — that is expected and correct for this variant of the experiment.

Classification: NONE


Classification: A — CORRECT EPISTEMIC DECOMPOSITION

Why:

This is a clean positive result. The model created two separate structural objects with distinct epistemic states:

  1. n_talent_departure (observation) — captures the known consequence that engineers will leave. Not uncertain, not pending resolution. Its kind=observation signals "established fact to be taken into account."
  2. n_delivery_delay_impact (unknown) — captures the unresolved downstream uncertainty about delivery impact magnitude, depending on the known departure.

The causal chain between them is represented via typed fields (affects/depends_on) and a typed edge (depends_on), not just text embedding.

The key distinction from 59A.2: in that experiment both consequences were compressed into one unknown node ("Impact of losing two senior engineers on delivery timelines"). Here they are separate nodes with different kinds — the known-vs-unknown boundary is structurally preserved.

Important caveat: The update was rejected at proposal_compatibility because no selectedQuestion was produced. This is a validator-side issue, not a semantic reasoning failure. The rejected snapshot demonstrates correct structural decomposition even though the update was not applied to the persistent graph.

Did "two senior engineers will leave" become its own known structure: YES

Did delivery delay remain explicitly unresolved: YES

Did the graph/proposal preserve the distinction: YES


What this establishes:

  1. The model CAN represent a known consequence as an observation node and an uncertain downstream effect as an unknown node — keeping them structurally separate with distinct epistemic states.
  2. A typed causal chain (affects + depends_on edge) can be produced between these two kinds of nodes in a single proposal.
  3. Removing the £2m savings confirmation from the answer did not degrade the known-vs-unknown separation; it actually focused the model's attention on exactly what was being tested.

What this does NOT prove:

  1. Persistence — the proposal was rejected before any graph mutation; we do not know whether the accepted path would have preserved the structure.
  2. Next-question generation — the selectedQuestion failure (null) was not resolved by this experiment. The model may struggle to formulate a single non-compound question when two structural consequences are introduced.
  3. Stability — one run only; cold-start variance has been a factor across Experiments 59A series.
  4. Cross-domain generalisation — single domain case only.

Production code changed: NO

Prompt changed: NO

Validator changed: NO

Harness changed: NO

Vitest run: NO

Ollama calls beyond harness count: 0

Dev server disturbed: NO