Certificates¶
A plan without the evidence of where it may be trusted is half an answer. causal_plan returns
one object that carries both, so a caller cannot walk away with the actions and leave the
certificate behind.
Scopes¶
Each certificate bounds one thing, on one object, under premises it does not check. The other pages point here rather than repeat the claims.
| certificate | what it bounds | on what | its premises | proved or measured |
|---|---|---|---|---|
error tube: causal_plan, prescribe |
the gap between the plan's rollout on the model and on the plant, step by step, and the prefix that stays inside tolerance |
the plan's own RK4 steps (Euler's on request), on the model and on a plant whose field is within model_error of it along the path, and, where noise is given, whose next state is off the plan's step by a noise of that covariance |
a per-step bound on the field's error; a rate that bounds the field's slope in the state, or the state matrix of a field affine in it; a Gaussian noise, AR(1) from step to step, which the tube holds with probability 0.95 at each step. Under prescribe the field's error is the channel's standard error, each lever's at that lever's largest distance from the log's mean action, in any units of each lever and wherever its zero is, with the drift's own in quadrature, a scale and not a bound, and the noise is the plan's one-step error on the log; its rate holds at every state (global), where the fitted slope at each planned action carries the tube, or at the start alone (local) |
the recursions bound the error under those premises: Rocq proofs/lipschitz_rollout.v, Maxima validation/rk4_rollout.mac, validation/predictive_tube.mac and validation/exact_tube.mac; tests/test_predictive_tube.py and tests/test_exact_tube.py measure the noise's coverage, and the pendulum and BOPTEST case studies the tube's |
identification status: prescribe |
whether the graph identifies the levers' channel: identified, asserted or not_identified |
the panel and the graph passed as adjustment |
the graph is right; a lever the log never moves is held at its logged level, not identified | the adjustment set is Perković et al.'s canonical one, fuzzed against the criterion |
barrier audit and Γ*: certify_safety, prescribe |
whether the barrier condition holds at each step under an identification radius; Γ*, the largest level at which every step still has an admissible action that meets it |
the model's predicted path, pointwise: a filter, not a proof that the safe set is invariant | a control-affine plant, a barrier h, the marginal sensitivity model |
the algebraic core: Rocq proofs/barrier_feasibility.v, at any dimension in proofs/mathcomp/; what the pointwise check misses: chc.reachability |
optimality gap: plan_regret_bound |
how far the plan's objective is above the best plan its box allows | the planning model, not the plant | a curvature that holds over the whole box: supplied, or a linear model's (certified); sampled at the plan and a few points it is a diagnostic, and negative it is refused |
Rocq proofs/constrained_plan_regret.v, Maxima validation/constrained_plan_regret.mac |
LQ regret: chc.regret |
the certainty-equivalent controller's regret, quadratic in the model's error | a linear-quadratic plant | the model's error inside the ball the bound computes | the gain-gap identity, the ball and the constant: Rocq proofs/ce_explicit_constants.v, at any dimension in proofs/mathcomp/ |
interference regret: chc.regret |
regret quadratic in the identification and exposure-map errors together | a smooth cost and its minimiser | the planned policy within C (e_id + e_int) of the best one, assumed, not proved |
the algebra from that premise: Rocq proofs/interference_regret.v |
evaluation: certify_evaluation |
whether logs of a given size can evaluate a plan: every weight's variance finite, and enough effective samples, before any cost is read | a linear-Gaussian plant and affine policies | the plant's model | closed forms in chc.evaluation |
conformal width: SplitConformal |
marginal coverage of at least 1 − α |
data exchangeable with the calibration split | exchangeability; n ≥ (1 − α)/α calibration scores, which calibrate enforces |
the split-conformal argument, cited; coverage measures it |
deployment gate: chc.gate |
the expected share of wrong deploys across zones, at most α at every read |
the zones' logs in shadow | logged propensities, no spillover, no carryover | e-processes and e-BH, cited |
delay margin: chc.delay |
the delay the loop tolerates, arccos(a/K)/sqrt(K² − a²) |
a scalar loop with one discrete delay | the plant's rate a, and a gain K larger than a in magnitude |
the algebraic core: Rocq proofs/delay_margin.v; the smallest crossing: Maxima validation/delay_margin.mac, checked numerically |
Plan, audit, filter¶
"Safety" alone does not say which of three operations you get, so they are named apart:
- plan —
causal_plan. The box and linear constraints on the actions (budgets, rate limits) are in the solve, plus an a-priori Grönwall error tube that says how far ahead the plan may be trusted under its premises (the scopes). The tube is computed fromlipschitzandmodel_error; it does not enter the objective and does not move a single action. ABarrierConstraintdoes: passed asbarrier=, the audit's own condition is held in the solve by augmented-Lagrangian rounds. - audit —
certify_safety. Given a barrier and a sensitivity levelΓ, it prices a finished plan: where along it the safety guarantee survives unmeasured confounding, andΓ*, a ceiling for the problem along the plan's path rather than for the plan (below). Read-only by construction. - filter —
robust_safety_filter. It clips one nominal action into the certified interval at one state, online, for a scalar control.
A held barrier binds the answer, not every iterate as the box and the rows do, and the solver's
word is not taken for it: a solve stopped by its budget, or a condition no admissible action can
meet, comes back short of the condition, and plan.safety — the audit, run on the finished plan —
says so. The audit's verdict is the one to read, even on a plan solved under the barrier. The
design record is
ADR 0002.
What each certificate says¶
- The error tube — the prefix of the plan whose error tube stays inside
tolerance. The tube follows the plan's own RK4 steps, at a rate that bounds the norm of the field's slope in the state, or at the state matrix of a field affine in the state, whose RK4 propagators carry it.prescribesays where its rate holds:globalon a field affine in the state,localwhere the slope was read at the plan's start alone.plan.certified_actionsis that prefix and nothing more. With no error model supplied the certificate reportsnot_evaluatedrather than a vacuous full-horizon pass. The tube is a bound only wheremodel_errorbounds the field's error; the errorprescribesupplies is a standard error, so there that part is a scale. The plant's own noise is the other part: given asnoise, the tube adds the radius that holds it at each step with probability 0.95, andprescribereads it off the plan's one-step error on the log (tube_noise,tube_persistence). Without the noise, on logs shaped like the BOPTEST case's, a tube of 0.05 K one step ahead trusted 6 to 13 steps, and the plant left it at the first step on 60% of draws; with it, the tube trusts 1 or 2 steps, where the plant's error allows 2 or 3 (ADR 0080). On a field affine in the stateprescribecarries both parts by the fitted slope at each planned action, and the noise's radius is its exact 0.95 quantile at each step; elsewhere a bound on the slope's norm carries them, and the radius holds at least 0.95.tube_modesays which (exactorbound), and underexacttube_state_noisegives each state's own radius of the noise, in that state's units. The field's errorprescribesupplies is the channel's and the drift's standard error together. The quickstart's plant stays within its tolerance for 3 weeks, and the certificate now trusts 3, where it trusted 1 (ADR 0096). - The barrier — for a control-affine plant and a safe set
{h >= 0}, whether the barrier condition survives an identification radius on the effect, step by step, andΓ*: the largest level of the marginal sensitivity model at which every step along the plan's path still has an admissible action that meets the condition. It is a ceiling for the problem along that path, not for the plan: whether the plan's own actions meet it isplanned_certified, which a plan can fail under a comfortableΓ*. The plan-levelΓ*is the weakest step's, so one uncertifiable step sinks the plan. Where the barrier is flat, as at the centre of a ball, the radius is zero at every level and the step'sΓ*isinfornan. The radius is(Γ-1)/(Γ+1)·cvar_gaptimes the channel's operator norm at the plan's first state:cvar_gapis a share of the channel, 1 by default, soΓ*and the certified steps read the same in any units of the state or of the levers (ADR 0085). Underprescribethe audit reads each lever in units of its own largest action: the action set is the ellipsoid inside the box whose semi-axes those are, soΓ*and the certified steps read the same in any units of each lever (ADR 0091). Where two bounds tie, as at the midpoint of a two-sided one,prescribeaudits each and reports the weakerΓ*: an upper bound on the joint ceiling, because each bound's is reached by its own best action and no single action need reach both. - The optimality gap —
plan_regret_boundbounds how far a finished plan can be from the best one its own box allows on the planning model, from the plan's own gradient and with no optimum needed. It reads the plan's actions, not the solver's internals, so it prices a plan that came from anywhere — including one an operator edited by hand. It is a certificate where the curvature it divides by holds over the whole box: supplied by the caller, or read off a linear model's objective, which is quadratic, so one Hessian is the box's (status="certified"). Where the curvature is sampled at the plan and a few points of the box, the bound is a diagnostic ("diagnostic"): a pocket of negative curvature between the samples can hide a much cheaper plan. When the curvature read is negative no convexity argument applies, and the bound isinfrather than a fabricated number ("refused").prescribe's fitted channel reads the state, so its bound is a diagnostic. - The regret guarantee —
chc.regretcarries the LQ certainty-equivalence bound, quadratic in model error (Dean–Mania–Tu–Recht–Matni), and its extensions. It holds on a linear-quadratic plant whose model's error lies inside the ball the bound computes.
prescribe gathers the tube, the barrier and the optimality gap into a DecisionCertificate,
beside the identification status. The two axes are never merged: a plan can be fully certified
against a channel nothing identifies, which is a trustworthy tube around a meaningless action.
A lever the log never moves apart from what the states and the covariates predict is not
identified on that log, whatever the graph says: prescribe holds it at its logged level and the
certificate names it (unmoved_levers), and with every lever so there is no plan.
Objectives are protected; constraints are not¶
The same effect error costs the two halves of a decision differently. Performance regret is second order in the effect bias: an interior optimum has a vanishing gradient. The barrier margin pays at first order, because a binding constraint has no envelope to protect it. The comparison holds while the identification radius is smaller than the control channel, which is where any usable controller lives; past it the safety guarantee is simply gone. So a budget sized for regret is the wrong budget for safety.
What the certificate is worth¶
certify_safety checks the barrier condition pointwise along the model's trajectory. Forward
invariance follows only when the condition holds on the whole safe set.
chc.reachability computes the Hamilton–Jacobi answer the barrier only
approximates, on the same robust-margin algebra, and prices the difference: where the condition
holds on all of {h >= 0} the reachable tube is that set, and where it only holds pointwise,
certified_but_unreachable says how much the per-step reading over-promises. A per-step certified
prefix is a filter, not a proof.
See it¶
uv run python scripts/reachability_demo.py— the pointwise check against the true reachable tube, on the two-zone supply floor and on a double integrator where the barrier has relative degree 2.- The driver-supply case study —
Γ*tells a confounded plan from an adjusted one before either acts.