Solve robust policy across causal models
Choose an aggregate policy across competing interventional causal models and a bounded posterior credal set: derive model-by-action expected utility from outcome probabilities, compute exact lower/upper utility and adversarial model weights, minimize worst-case regret, expose model disagreement and value of perfect model information, and fail closed when any causal evidence gate fails.
What it's for
Creates a decision-science layer beyond one confident causal graph: Gitrevio can show which policy survives plausible competing mechanisms, exactly which model weighting defeats it, and whether resolving model ambiguity is worth buying.
What you give it
Inputs split into evidence read from your connected systems, calibration your team owns, and numerical controls that affect precision but never the result's meaning.
| Field | Type | Role | Required |
|---|---|---|---|
| actions | array of objects (1 field) ≥ 2 items | Evidence | Yes |
| causal_models | array of objects (6 fields) ≥ 2 items | Evidence | Yes |
| critical_minimum_utility | number | Your calibration | Yes |
| max_detail_rows | integer ≥ 1, ≤ 500 | Numerical control | Optional |
| maximum_acceptable_regret | number ≥ 0 | Your calibration | Yes |
| outcome_utilities | object | Evidence | Yes |
Each causal_models
record
| Field | Type | Required |
|---|---|---|
| action_outcomes | array of objects (2 fields) | Yes |
| id | string (non-empty) | Yes |
| interventional_evidence_passed | any | Yes |
| posterior_weight | number (≥ 0, ≤ 1) | Yes |
| weight_lower | number (≥ 0, ≤ 1) | Yes |
| weight_upper | number (≥ 0, ≤ 1) | Yes |
{
"actions": [
{
"id": "accelerate"
},
{
"id": "hold"
}
],
"causal_models": [
{
"action_outcomes": [
{
"action_id": "accelerate",
"probabilities": {
"loss": 0.1,
"success": 0.9
}
},
{
"action_id": "hold",
"probabilities": {
"loss": 0.4,
"success": 0.6
}
}
],
"id": "optimistic-mechanism",
"interventional_evidence_passed": true,
"posterior_weight": 0.7,
"weight_lower": 0.2,
"weight_upper": 0.8
},
{
"action_outcomes": [
{
"action_id": "accelerate",
"probabilities": {
"loss": 0.8,
"success": 0.2
}
},
{
"action_id": "hold", Truncated for display — the full payload is 64 lines.
What you get back
This is the actual output of running the example above — computed by the same function the platform calls, not an illustration.
{
"action_robustness": [
{
"action_id": "hold",
"nominal_expected_utility": 44.5,
"robust_lower_expected_utility": 43,
"robust_upper_expected_utility": 52,
"worst_case_competitor": "accelerate",
"worst_case_regret": 21
},
{
"action_id": "accelerate",
"nominal_expected_utility": 53.5,
"robust_lower_expected_utility": 1,
"robust_upper_expected_utility": 64,
"worst_case_competitor": "hold",
"worst_case_regret": 51
}
],
"assumptions": [
"Each supplied model defines comparable interventional outcome probabilities for every action and has an auditable identification/evidence gate.",
"The lower/upper model weights form a defensible credal set containing the nominal posterior rather than being tuned to force a preferred action.",
"Outcome utilities are complete, commensurable, and owned by accountable decision makers; omitted harms are not silently assigned zero utility."
],
"causal_model_diagnostics": [
{
"action_expected_utilities": {
"accelerate": 85,
"hold": 40
},
"model_id": "optimistic-mechanism",
"model_optimal_action": "accelerate",
"posterior_weight": 0.7,
"selected_action_worst_regret_weight": 0.8,
"weight_interval": [
0.2,
0.8
]
},
{
"action_expected_utilities": {
"accelerate": -20,
"hold": 55
}, Truncated for display — the full payload is 76 lines.
How it works
Causal inference & experiment design — Separate what a change caused from what merely moved alongside it.
- 1 Require two or more prespecified causal models with every candidate action, identical outcome states, valid interventional probabilities, a model-specific identification/evidence gate, a nominal posterior weight, and feasible lower/upper model-weight bounds.
- 2 Translate each model's interventional outcome distribution into action expected utility using one complete owner-governed utility table; never substitute observational prediction probabilities for do-intervention semantics.
- 3 Solve bounded-simplex linear extrema exactly by allocating remaining model mass adversarially: obtain robust lower/upper utility for each action and maximum regret against every competing action across the entire credal set.
- 4 Select on full-precision minimax regret with robust-lower and nominal tie breaks, then apply evidence, critical-utility, and acceptable-regret gates; report adversarial weights, model-optimal actions, disagreement, and nominal value of perfect model information.
Before you trust it
Every tool in the catalog ships with the conditions under which its answer is meaningful — and the conditions under which it should abstain instead of guessing.
Assumptions & guardrails
- Assignment or adoption timing, interference policy, overlap, attrition, and outcome availability match the estimand encoded by the method.
- Each supplied model has a defensible causal graph/estimand and identified interventional probabilities for every candidate action in the target population; shared omissions remain possible.
- Nominal and bounded model weights are frozen from model evidence and sensitivity analysis, form a feasible simplex, and were not chosen to force the preferred action.
- Actions, mutually exclusive/exhaustive outcomes, utilities, constraints, and critical thresholds represent the accountable aggregate decision with material harms included.
- A causal label is warranted only when design and diagnostic requirements pass; otherwise treat the result as descriptive or abstain.
- Robustness spans only the supplied causal models and credal bounds; agreement among models sharing the same omitted mechanism can create false confidence.
- The solver consumes identified interventional distributions but does not discover a DAG, identify effects, or transform observational association into causality.
- A robust aggregate policy remains subject to accountable approval and cannot authorize automated person-level employment, fraud, compensation, or security action.
Minimum evidence
- actions: at least 2 rows/items
- outcome_utilities: required and organization-defined
- causal_models: at least 2 rows/items
- maximum_acceptable_regret: required and organization-defined
- critical_minimum_utility: required and organization-defined
How to validate it
Preserve the assignment/adoption design and validate overlap, pre-period or placebo diagnostics, attrition, interference policy, and cluster-level uncertainty; never tune on the estimated effect.
Calibrating it to your org
Same for everyone
The mathematical kernel, validation rules, method version, and JSON output semantics are organization-independent; no tenant-trained coefficients or company benchmark is embedded in the function.
Specific to you
- one comparable do-intervention outcome distribution for every model-action pair
- model-specific identification/evidence gates plus nominal posterior and sensitivity-derived lower/upper model weights
- causal model set and DAG versions, target population, intervention semantics, actions, exhaustive outcomes, utilities, model-weight credal set, critical utility, regret tolerance, and approval boundary
Calibration workflow
- 1 Define the management decision, target outcome, aggregate unit, privacy boundary, cadence, and prediction/intervention horizon for this organization.
- 2 Build a tenant-scoped historical cohort using only information available before each prediction or decision; preserve zero periods, censoring, assignment probabilities, and unresolved outcomes when the method requires them.
- 3 Estimate statistical parameters on training history, but obtain costs, utilities, risk tolerance, practical-effect thresholds, capacity, and policy constraints from accountable decision owners.
- 4 Validate on later time windows or held-out aggregate units at the deployment grain, against a simple baseline and the function-specific validation strategy.
- 5 Deploy only if the returned decision clears evidence, overlap, calibration, robustness, and guardrail checks; warning, unsupported, schema-gap, and fallback decisions are abstentions.
- 6 Monitor realized outcomes, data drift, coverage, and decision regret; recalibrate at a governed cadence or after a detected regime/definition change, never merely because a stakeholder dislikes the result.
Call it from your AI
You don't wire up 388 tools in your MCP client. The GitRevio MCP server exposes 18 tools, three of which let an agent search the catalog, read a tool's schema, and run it — so the assistant finds this one on its own.
gitrevio_capabilities_search
{ "q": "choose an aggregate policy across competing" }
→ finds "solve_robust_policy_across_causal_models"
gitrevio_capability_describe
{ "capability_id": "solve_robust_policy_across_causal_models" }
→ returns the input schema and agent guidance shown on this page
gitrevio_capability_run
{ "capability_id": "solve_robust_policy_across_causal_models", "arguments": { ... } }
→ returns the result shown above Works in Claude Desktop, Claude Code, Cursor, Cline, Continue.dev, Goose and Aider. See the MCP server.
Related tools
Audit KPI threshold bunching
Detect a post-target excess concentration immediately above a governed KPI threshold: compare within-unit pre/post local mass and above-versus-below mirror asymmetry, bootstrap whole units, report density bins and a smoothed log-density jump, and explicitly refuse to equate bunching with individual gaming or intent.
Forecast correlated milestone slippage
Forecast joint portfolio milestone slippage from complete historical episode-by-category planned/actual duration ratios: fit log-error marginals and a positive-definite shrinkage Gaussian copula, mix shared and idiosyncratic shocks, propagate durations through the current dependency DAG, and report joint confidence, finish distributions, and tail value at risk.
Audit commercial technical commitment integrity
Audit signed commercial promises against explicitly allocated technical scope, dependency order, funded capacity, acceptance criteria and evidence; expose orphan scope, double allocation, cycles, late plans and maximum contractual penalty without interpreting legal rights from engineering activity.
Audit decision execution fidelity
Audit whether approved decisions actually became verified implementation at the promised aggregate-unit and component grain, with whole-unit bootstrap uncertainty and simultaneous gates for fidelity, overdue scope, unverifiable evidence, exceptions and critical gaps.
Audit release risk prediction integrity
Audit a complete eligible-change release-risk cohort for point-in-time prediction lineage, exact change-to-deployment linkage, mature mutually exclusive outcomes, selective labels, score-triggered intervention contamination, calibration and false alarms before the score influences a release decision.
Audit sunk cost escalation
Audit whether cumulative sunk cost predicts aggregate project continuation after project fixed effects, checkpoint time, forward value, success probability, remaining cost, and future irreversibility, with project-cluster bootstrap uncertainty.