Skip to main content
An intervention in causal inference is fundamentally different from an observation. When you observe that two variables are correlated, you are on Rung 1 of Pearl’s causal ladder. When you ask what would happen if you actively set a variable to a specific value — regardless of its natural causes — you are on Rung 2, and you need do-calculus to answer the question correctly. Wu-Weism operationalizes Rung 2 through an intervention pipeline that checks identifiability before computing effects, so you always know whether your result is causally valid or association-level.

Observations vs. interventions

The distinction matters because confounders can make an observational association point in the wrong direction or overstate the effect size. The do() operator severs the incoming arrows to X in the causal graph, asking: if we forcibly set X (ignoring whatever normally determines it), what does Y become?

Phrasing intervention questions

Wu-Weism detects intervention intent from specific language patterns. Any of the following will trigger Rung 2 processing:
Keywords that reliably trigger Rung 2: do(, intervention, intervene, if we set, treatment, confounder, mediator, identifiability
The most unambiguous phrasing is explicit do() notation: do(variable_name = value). This removes any ambiguity between “if we observed X at level v” (Rung 1) and “if we set X to level v” (Rung 2).

Using operator mode

In addition to natural language triggers, you can force Rung 2 mode from Model Settings in the workbench sidebar:
1

Open Model Settings

Click the Model Settings icon in the left sidebar of the Causal Chat interface.
2

Find the operator mode selector

Under Inference Mode, locate the Operator dropdown. The default is Auto (Wu-Weism selects the rung based on your question).
3

Select Intervene

Set the operator mode to Intervene. This pins all subsequent questions in the session to Rung 2, even if your phrasing is observational.
Operator mode is useful when you are systematically exploring a causal graph and want every question treated as an intervention query, without needing to include do() notation each time.

The identifiability gate

Before Wu-Weism computes any intervention effect, it runs an identifiability check. Identifiability means: given the causal graph (SCM) and the available data, can the interventional distribution P(Y | do(X)) be computed from observational data alone? If the required confounders are not represented in the loaded SCM, the effect is not identifiable and the computation cannot be trusted.

When identifiability passes

The system proceeds to compute the intervention effect using the adjustment set — the minimal set of variables you need to condition on to block all backdoor paths from X to Y.
Identifiability: PASSED

When identifiability fails

If the identifiability gate blocks the computation, Wu-Weism does not silently return a biased estimate. Instead, it:
  1. Downgrades the response to association-level (Rung 1)
  2. Explains which confounders are missing from the SCM
  3. Labels the claim with association-only so it is not mistaken for a causal result
Identifiability: BLOCKED
This behavior is intentional. A Rung 1 answer that is clearly labeled as such is more scientifically useful than a Rung 2 answer that is secretly confounded.

Worked example: drug intervention on inflammation

Research scenario: You are studying whether administering an anti-inflammatory drug reduces interleukin-6 (IL-6) levels in patients with chronic inflammatory disease. You want a causal estimate, not just a correlation. Step 1 — Ask the intervention question
Step 2 — System event flow
Event sequence
Step 3 — Read the intervention result
Example response shape

Intervention payload structure

Internally, Wu-Weism represents every intervention as a structured payload. Understanding this helps you interpret what the system is computing: You can also supply these fields directly via the Causal Chat API if you are building programmatic workflows.

Viewing the causal trace

Every successful intervention produces a causal trace — a record of which graph edges were activated, which adjustment variables were used, and how the effect propagated through the SCM. You can view the causal trace in two places:
  • In the Claim Ledger at /claims: locate the claim by ID (e.g., claim_019), then expand the Provenance section. The trace ID (e.g., trace_007) links to the full edge-by-edge record.
  • Via the API: use the trace_id from the claim to query /api/scm/counterfactual-traces/{traceId} and retrieve the full trace record as JSON for downstream analysis or audit.

Common mistakes to avoid

Asking “what if we observed X at level v?” instead of “what if we set X to v?” These are different questions. The first is observational (Rung 1). The second is interventional (Rung 2). When in doubt, use explicit do() notation. Ignoring the identifiability gate result If identifiability fails and the response is labeled association-only, do not treat the estimate as causal. The downgrade is a signal that the SCM is missing information needed for a valid Rung 2 answer. Assuming a large effect size means identifiability passed Effect size and identifiability are independent. A large association can exist even when the causal effect is not identifiable from available data.

Next steps