Repository navigation
Releases: iridae-dev/antecedent
Release list
v2.4.1
Antecedent 2.4.1
Changes since 2.4.0. This release extends workflows for interventions, fitted mechanisms, discovery, transport and weighted studies. Method-specific coverage records, explicit assumptions and replayable evidence determine each statistical interval’s supported scope. The generated claim blocks below describe the registered capabilities and refusals.
The weighted discovery-to-effect procedure also has a distinct three-quarter discovery allocation. It resolves orientation conflicts only when compatible resolutions preserve the treatment parent set. Its original half-split replay and records remain separate; each allocation and variance construction has its own method identity and coverage records.
Consumer workflows
| If you need to… | What 2.4.1 adds | Scope and evidence |
|---|---|---|
| Express an intervention as a policy | Typed intervention programs with arithmetic, conditions, clipping and variable or history reads; one execution path for sampling, counterfactuals and rollouts | Simulation, counterfactual execution and observational identification have separate licenses. Programs validate dependencies and output types. |
| Choose and validate fitted mechanisms | Boosted and forest mechanism families, per-node candidates and constraints, and shuffled, ordered or clustered validation splits | The result records the selected mechanism and validation provenance. A fit is not a causal identification claim. |
| Check a proposed graph against observations | Graph falsification tests local Markov implications against node relabellings | Reports rejection, non-rejection, insufficient information or incomplete computation with its test and budgets. Non-rejection does not establish the graph. |
| Replay noise or attribute variation to it | Noise replay and intrinsic causal influence reuse the compiled mechanisms | Permutation, simulation and mechanism-fit uncertainty remain distinct. |
| Analyze incomplete or unequally sampled observations | Missing-data policies and sampling weights across additional estimators | Weighted intervals have their own population target, variance construction and calibration coordinate. Unweighted evidence is not inherited. |
| Estimate an effect after discovery | Treatment-parent-set adjustment accepts unresolved edges away from the treatment; the versioned procedure allocates three quarters of rows to discovery and one quarter to independent analysis | Retains the original generating families, reporting and width requirements. Its own coverage records and versioned replay determine attestation; it makes no per-dataset graph-recovery guarantee. |
| Transport through an uncertain discovered structure | PAG and temporal class transport uses the experiments actually supplied, checked minimal standardization and temporal block bootstrap | An explicit completely randomized binary-trial compatibility test can refine the static class, recording every exclusion and its evidence. Disagreement remains a structural range; unsupported members remain a refusal. Complete-procedure records retain the exact discovery, trial, temporal and sampling scopes. |
| Pool independent Gaussian study estimates with unequal unknown variances | Rust EvidenceLedgerSession.pool_gaussian_studies, or Python random_effects(method="equal_study_gaussian"), uses an equal-study mean and empirical study-level variance with a declared Student reference |
This is a distinct construction for a common marginal study mean. Its conservative coverage role and measured scope require their own evidence; the released inverse-variance and HKSJ routes remain distinct. |
| Work beyond previous size ceilings | Wider graph posteriors, budgeted graph searches, larger matching and sensitivity problems, and participant-scale adaptive trials | Explicit resource budgets and completion diagnostics replace several fixed ceilings. Larger inputs do not widen scientific claims. |
| Control posterior endpoint accuracy | Optional minimum draw counts and endpoint Monte Carlo tolerances, with draws and seed retained for replay | An inadequate requested draw budget or endpoint precision is disclosed or refused rather than silently presented as a calibrated interval. |
Interval methods and calibration
Weighted split-effect analysis now defaults to the HC3 leverage-corrected sandwich. Explicit HC1 remains available for replay of the historical half-split and three-quarter-split constructions; their records do not attest the new default. The three-quarter discovery allocation and treatment-parent-invariant conflict resolution remain part of the current procedure identity.
Trial-compatible PAG transport also records its formula-selection strategy in TrialCompatibilityProof.estimation_strategy. The current strategy, declared_selection_joint_pretreatment_standardization, retains declared population-shift variables and prefers their joint standardization set only when the member structure and existing identification checks permit it. Selection depends on declared structure and supplied experiments, not fitted effect values. Missing legacy strategy fields replay the original minimal standardizer identity. The strategy has a distinct complete-procedure validation identity.
Rust adds estimate_trial_compatible_transport_confidence_set for a binary-trial mean contrast with explicit potential-outcome support. Identified results retain their percentile-bootstrap interval; completed scientific nonidentification returns the logical contrast support, labelled separately from a point estimate. Operational failures remain errors. The receipt binds the original inputs and seed; replay through verify_trial_compatible_transport_confidence_set_against requires those inputs and repeats the bootstrap. Complete-procedure validation separately measures set coverage, identified-point reporting and widths including logical bounds. The existing point/range/refusal API retains its behavior.
Responder-weighted variance now accounts for estimated response probabilities. Weighted population routes distinguish positive calibrated IPW weights, model-assisted outcome-noise calculations, regression-adjusted propensity strata and the published finite-cluster reference. Matching corrections account for shared outcome fits and the correct donor arm. These methods retain the original population targets and require records for the interval actually returned.
The opt-in population_linear_score_interval, population_linear_interval and population_linear_atc_interval methods have separate measured constructions. The Gaussian population methods assume independent rows and arm-linear Gaussian outcome noise; the ATC construction instead uses heteroskedastic arm-wise HC3 variance. The cluster population-score and published Student-reference intervals retain their own dependence and reference scopes. These are method-specific records: raw standard errors and sampling-weight declarations do not inherit every interval license.
For the five-, ten- and fifteen-study moderate-heterogeneity Gaussian workflows, in Rust explicitly call pool_gaussian_studies(...) and then pooled_interval(result). Python selects the same method with random_effects(..., method="equal_study_gaussian"), followed by pooled_interval(outcome.result). This uses the improved equal-study Gaussian construction on the original study-generating families. The DL/REML random_effects(...) construction retains its historical HKSJ numerical recipe; there is no automatic fallback or method relabeling. HKSJ publication is restricted to the baseline-family measured counts 20/25/30; the historical strong-family 5/15 records remain replayable candidate evidence and cannot license an unknown family. The newly collected Gaussian records do not attest the old HKSJ recipe at the failed coordinates.
Equal-study Gaussian pooling has twelve distinct conservative-role records across the declared study counts and generating families. Its records are separate from the eleven retained legacy Wald and HKSJ records. Pointwise Bayesian class-response records cover the five declared doses at 90% and 95%; a single identified class atom is measured for graph-posterior response, and multi-atom aggregate bands remain withheld.
The calibration runner preserves earlier collected evidence and its original decision semantics. New coverage-compatibility decisions account for the complete declared family and planned replicate looks, using a seed domain frozen before validation outcomes are observed. This controls false coverage-compatibility rejections for that frozen validation batch; it does not prove exact nominal coverage or replace reporting, width, minimum-replicate or scientific coverage-floor requirements. Development probes are not collected evidence, and method changes are not waived when they change numerical results.
The runtime audit found 6 h 34 min of parallel measurement work, excluding the
build, with about 35% of simulation time spent on precision rechecks. Scheduling
now retains historical longest-first ordering without a HEAD pilot; targeted
collection preserves complete passing evidence and supports genuine cached-prefix
extensions. See calibration runtime and evidence reuse
for the measured costs and the limits of these workflows. Calibration completion
remains subject to the records and release gates described below.
Compatibility
The released Rust paths and signatures remain available. New optional fields require constructors, builders or ..Default::default() when callers build public structs directly; see the [changelog](https://github.com/iridae-dev/antecedent/blob...
v2.4.0
Antecedent 2.4.0
Changes since Antecedent 2.3.0. The release connects measurements, fitted mechanisms, external evidence, transported claims, adaptive experiments and decisions through checked composition: each handoff states what it carries, what it cannot supply, and what it refuses. Every new interval route either carries coverage records at its own coordinate or is labelled derived and unmeasured. This page records each new cell with its inference status, the adjacent requests that are refused, and the artifact compatibility classes.
Consumer workflows
| If you need to… | Start here | What 2.4 adds | Inference status |
|---|---|---|---|
| Correct a measured exposure or outcome, or use an external latent posterior | Measurement transport, interface contracts | Classical error, repeated measurements, binary misclassification, categorical confusion matrices, provider latent posteriors, one measurement-model contract | point-only |
| Compose fitted mechanisms and propagate dependent uncertainty | Composition, composed uncertainty | Acyclic joint law under intervention; linear moments, aligned nonlinear functionals, known-weight mixtures; spread and exceedance of the composition | statistical interval for linear moments; derived-unmeasured otherwise |
| Pool, borrow from or revise evidence without double counting | External evidence, assumption range and revalidation | Row-level overlap, minimum-variance and random-effects pooling, hierarchical borrowing, a correlation range, revalidation after a source changes | statistical interval for fixed-effect and random-effects pooling; point-only otherwise; assumption range for unknown correlation |
| Transport counterfactuals, mechanisms and cohort effects | Transport and counterfactuals, mechanism transport, discovered structure | Nested and conditional counterfactual transport, sampled transport, transported mechanisms, class-of-structures transport, provider-sourced evidence, cohort-effect decisions | statistical interval for sampled counterfactual transport, cross-world quantities and the native cohort mean; otherwise point-only, exact-finite or structural envelope |
| Decide or invert on composed, cohort or transported sources | Inverse and decision reach, decisions | Sources state before execution what they supply; their identity and transport receipt travel into the result | follows the source |
| Judge how reliable a sampled decision or ranking is | Decision reliability | Monte Carlo error and effective sample size, ranking probabilities, selection-aware evaluation | statistical interval for ranking probability, utility, confidence set and selection-corrected value; derived-unmeasured otherwise |
| Run and analyse an adaptive experiment | Adaptive procedures | Analysis contract, procedure matrix, posterior, decision-theoretic stopping, adaptive weighting, repeated measures, anytime-valid and group-sequential readings | statistical interval for the measured Thompson, epsilon-greedy repeated-measures, anytime-valid and group-sequential coordinates; other guarantees closed |
| Assess a predictive law, or condition on an observation | Capabilities | Proper scores, score differences, calibration diagnostics, drift; observation-conditioned probabilities and evidence requirements | statistical interval for the score and the count-fitted observation probability; point-only otherwise |
| Re-run discovery with a changed setting | Selective recalculation | Stage reuse under a changed threshold, multiplicity rule, background knowledge, orientation budget, lag window or CI test | none (reuse accounting only) |
| Estimate an effect after discovering the graph | Selective discovery, discovered structure | Discovery on one half of a seeded split, a resolved structure accepted, the effect adjusted for the treatment's parents on the other half; the interval is attested only from a coverage record of the whole method | statistical interval for the split-discovery effect; per-dataset recovery stays closed |
| Call a provider you do not own | Provider-sourced transport | Law, posterior and nested callbacks with replay policy, portable results and re-derived identities | none (claims, not native facts) |
Bayesian counterparts of the vector, categorical, dose, mediation, latent-class, penalized and clustered score, finite-law decision, recovery and transport routes return a posterior mean as a point. Their draws are never offered as an interval.
Inference status
Cells outside the table below carry one of point_only (exact-finite or plug-in point), assumption_range (value over a declared premise range) or none (identification, inspection or a closed adjacent claim). Derived uncertainty is exact under its stated model and carries derived-unmeasured standing. One hundred and three coverage records are new in this release, each measured at 400 and rechecked at 2,000 replicates over a three-point sample-size grid, with borderline cells re-measured at 8,000 and 20,000.
| Route | Measured coordinate | Sample-size range | Coverage (nominal level) |
|---|---|---|---|
| Sampled counterfactual transport interval | three finite designs | 250 to 4,000 units | 0.94 to 0.96 |
| Whole-row bias-corrected recovery interval | binary missingness | 1,000 to 4,000 rows | 0.93 to 0.96 |
| Checked temporal studentized and basic effect intervals | whole-unit resampling | 64 to 256 units | 0.93 to 0.96 |
| Pooled evidence interval | fixed effect and Hartung-Knapp random effects, 5 and 10 studies | 75 to 200 per study | 0.93 to 0.96 |
| Cohort mean effect from a native linear fit | HC3 with a t quantile, 3 to 5 covariates | 200 to 800 rows | 0.90 to 0.97 |
| Count-fitted observation probability | Dirichlet posterior, confounded and measured-signal designs | 150 to 600 rows | 0.95 to 0.96 |
| Ranking probability, utility, confidence-set and selection-corrected intervals | 2, 8 and 64 candidates, shared and separate streams | 500 to 2,000 draws | 0.94 to 0.96 |
| Predictive score interval | iid, cluster and serial dependence | 400, 800 and 1,600 cases upward | 0.93 to 0.97 |
| Bridged claim interval | trial-level prediction and measurement correction | 15 to 40 trials; 100 to 400 units | 0.93 to 0.96 |
| Adaptive experiments | Thompson posterior (prior-predictive and large gap), epsilon-greedy repeated measures from 300 units, anytime-valid sequence | 100 to 1,200 units | 0.93 to 0.97 |
| Group-sequential repeated interval | three looks, null to large effect | 120 to 480 units | 0.94 to 0.96 |
| Composed linear-moment interval | shared rows, independent samples, aligned bootstrap | 200 to 800 rows | 0.94 to 0.96 |
| Cross-world intervals | independent sample from 60 units, fixed units | 60 to 240 units | 0.94 to 0.96 |
| Split-discovery downstream effect | discover on one half, adjust on the other | 300 to 1,200 analysis rows (600 to 2,400 in the table) | 0.95 to 0.96 |
The limits are recorded as named boundaries, not claimed: the Thompson posterior at exactly equal arms (0.92 to 0.94), a weighted Wald interval read at a posterior-probability stopping look (0.73 to 0.95 depending on exploration), the checked percentile effect interval (0.93 to 0.945), the serial CRPS mean interval (0.945), the cohort interval at 200 rows with four covariates (conservative, 0.918) and split discovery under weak edges, cancelling edges or reuse of the discovery rows. Existing measured scalar intervals from 2.3 keep their records and scope; none of them extends to a result outside its coordinate by inheritance, and a calibration record is never carried to a new target or composition.
Refused adjacent requests
| Request | Reason | Remedy |
|---|---|---|
| A recovery, false-discovery or error-control statement about the graph discovered on one dataset, or an interval for an estimate computed on the rows discovery used | Faithfulness and causal sufficiency are not testable from the data discovery ran on; reused rows have no measured construction | Report the structure with its unresolved edges; split the rows and use the sample-split effect |
| An interval for hierarchical, accounting-only or dependence-envelope pooled results, a nonlinear composed quantity, a bridged claim with no source standard error, a cohort mean from a caller-built export, an adaptive result read at a stopping look, a declared-model observation probability or a revalidated claim | No record at that coordinate, or no sampling distribution exists | Use the point or the assumption range; supply the missing input; measure the coordinate |
| Ranking probability, optimality set or selected-value interval from a point-only producer or independently drawn candidates | Candidates must come from one joint law | Keep per-draw utilities from one joint law |
| Source-spread, Monte Carlo and selection uncertainty as one combined number | Distinct meanings are not added | Report them separately |
| A probability, quantile, nonlinear utility or joint law from a cohort mean or a point source | A mean supplies no law | Supply draws or a finite table |
| A mechanism behind a selection arrow, or a transport with no declared uncertainty | The premise is untested | Refit in the target; declare the variance and covariance |
| A cross-world value ... |
v2.3.0
Antecedent 2.3.0
Changes since Antecedent 2.2.0. The release adds reusable causal results, checked decision and study-planning handoffs, selective recalculation, and measured uncertainty for five additional method families.
Consumer workflows
| If you need to… | Start here | What 2.3 adds |
|---|---|---|
| Carry a result into a decision, inverse query or reusable artifact | Result lifecycle and decisions | Named quantities, units, support and source provenance survive supported handoffs; aligned laws enable probability, quantile and nonlinear utility |
| Rank the next study using current evidence | Study ranking | Typed structural and numerical objectives, checked prior-to-signal inputs, explicit costs and independently consumed rankings |
| Update part of an analysis when inputs change | Selective recalculation | Retained adjusted, doubly robust, finite response/transport, Bayesian, temporal and design state; receipts identify executed work and compatible reuse |
| Use uncertainty in Bayesian transport, nested-Markov effects, repeated histories or recovered observations | Population, time and uncertainty | Method-specific measured scalar intervals with original-source replay and refusals outside the validated protocol |
| Combine external results with native analysis | External evidence and composition | Checked finite responses, aligned laws and bounded mean callbacks retain provider identities and their declared trust |
| Compare structural or sensitivity scenarios | Sensitivity and robustness | Per-scenario evidence, decision ranges, covariance-aware comparisons and preserved assumption boundaries |
The five new measured families are joint Bayesian transport, learned joint transport, nested-Markov Bayesian and Fisher inference, dependent temporal intervals, and sampled observation recovery. Their public adapters return inference.MeasuredInference only for the named scalars and validated graph, data, prior and numerical protocol. Loading an exported result independently replays its original source and verifies the applicable evidence. These method-specific licenses do not extend to arbitrary models, parameter-wide intervals or simultaneous coverage.
The original source artifacts and diagnostic summaries retain their declared statistical meaning. A mean supplies no joint law; structural ranges and sensitivity ranges supply no sampling confidence. Decisions from fitted effect models, general transported path-specific counterfactuals, discovery recalculation, adaptive policies and arbitrary callback/cross-world execution remain outside 2.3's supported workflows. See the linked guides for their exact boundaries.
Python API changes
The new decision.Contract.evaluate supports checked decision inputs; design.rank_designs adds typed objectives including declared structural sufficiency and cost; design.rank_structural remains a convenience view. The naming dictionary lists the current stage modules and supported Rust/Python entry points. Examples use the 2.3 API.
How to read the claims
| Term | Meaning |
|---|---|
point_only |
An exact or plug-in point estimate. No interval of any kind is claimed. |
nominal |
An interval whose coverage was never measured at its own coordinate (estimator_grid_not_measured). Unmeasured diagnostics grant no coverage license. |
calibrated |
An interval with a coverage record measured at its own coordinate; shown to readers as a statistical interval. A cell is described this way only once its records exist. |
structural_envelope |
The range of an answer over explicitly supplied structural scenarios. Not a confidence interval. |
assumption_range |
The range of an answer over a declared sensitivity set. Not a confidence interval. |
none |
No numerical claim: identification or inspection only. |
| statistical interval | The reader-facing name of a calibrated interval; it appears only beside a measured coverage record. |
2.3A cells
F15: joint distribution semantics
Claim: point_only
- Question: Can a consumer tell whether supplied draws represent one aligned joint realization, and which causal quantity each axis means?
- Scope: A previously identified, finite coordinate causal claim; graph identification belongs to its prerequisite record.
- Guarantee:
checked_joint_alignment_and_axis_identity_semantics_only_no_identification_or_coverage. - Bounds: max_draws = 100000, max_coordinates = 1024.
X2: cpdag completion scenarios
Claim: structural_envelope
- Question: Does a target effect remain identified and invariant across every DAG completion of a supplied CPDAG when each completion receives evidence bound to its own assumptions?
- Scope: Supplied CPDAG of at most six fully observed static nodes whose completions number at most 64, each consistent DAG completion retained separately under a canonical BLAKE3 identity over its sorted parent-child edges; selection edges and latent (bidirected) pairs are refused, never projected away. A completion is decided by the 2.2 classical catalog route with that row's scope inherited unchanged.
- Guarantee:
bounded_completion_enumeration_per_completion_2_2_decision_structural_envelope_no_graph_probability. - Bounds: max_nodes = 6, max_completions = 64.
- Not an interval: the structural envelope is never a confidence interval.
X2: shared scenario covariance
Claim: point_only
- Question: How correlated are effect estimates from identified DAG completions that reuse the same observed units?
- Scope: No graph claim of its own: the scenario estimates are supplied plug-in functionals of one complete-row table (a linear score of per-row terms, or a stratified adjusted contrast), typically those of the identified completions of the bounded CPDAG cell. Identification of each scenario's estimand belongs to its own record.
- Guarantee:
shared_row_resampling_covariance_point_only_no_interval. - Bounds: max_completions = 64, max_replicates = 2000, max_exact_rows = 24, max_exact_compositions = 4000000, max_table_rows = 10000, max_table_columns = 64.
X4: joint bayesian transport
Claim: calibrated
- Question: What target effect posterior follows from a declared joint source and target model and the supplied transport evidence?
- Scope: The fixed DAG and selection assumptions of a separately licensed 2.2 transport derivation; no ADMG or graph-class posterior in this cell.
- Guarantee:
original_native_method_replay_exact_scoped_measured_scalar_authorization. - Bounds: max_draws = 100000, max_model_parameters = 256.
- Interval scope: Named target_effect95 only, source sizes150..600 each; four original known-variance joint Gaussian configurations, isotropic variance1000 declared prior,4096 draws, frozen balanced independent source/target design and original native identification. Parameters, covariance, diagnostics and draws keep model-conditional/unmeasured source standing.
X4: binary nested markov pilot
Claim: calibrated
- Question: Can one bounded binary ADMG transport functional be evaluated through a correctly normalized nested-Markov likelihood?
- Scope: Exactly the Verma ADMG X1 -> X2 -> X3 -> X4, X2 <-> X4 over four binary observed variables (at most 6 observed variables admitted by the scope check, only this graph fits); every other ADMG, regime or non-binary domain is outside the pilot and refuses.
- Guarantee:
original_native_method_replay_exact_scoped_measured_scalar_authorization. - Bounds: max_observed = 6, max_iterations = 1000000.
- Interval scope: Named mean0/mean1/contrast95, n2000..8000 positive integer IID multinomial counts on original selected binary Verma ADMG; original licensed generalID/interior point eligibility, default fit; all11 Beta(1,1) OR all11 Beta(2,2),4chains2048warmup4096draws5Mproposals, fixed rank/folded Rhat<=1.01 and bulk/tailESS>=400 all14. Conditional proper posterior and finite chosen validation designs, no universal model guarantee.
X5: dependent temporal interval
Claim: calibrated
- Question: What sampling interval surrounds a target two-step sequence effect when observations share a repeated unit?
- Scope: The fixed two-slice selection ADMG and horizon-two query of the licensed 2.2 temporal transport cell; no longer sequence.
- Guarantee:
original_native_method_replay_exact_scoped_measured_scalar_authorization. - Bounds: max_horizon = 2, max_replicates = 2000, max_units = 100000.
- Interval scope: Direct two-step response under explicit initial law(.3,.7), sequence(0,0), complete binary histories, n75..200, whole-unit studentized B500, min_units20, max_failed_fraction.05 and level.95 only. Checked session methods have separate ownership in temporal_recalculation.
X5: uncertain initial state
Claim: point_only
- Question: How does uncertainty in the pre-action state change the two-step target response?
- Scope: The 2.2 fixed two-slice selection ADMG, with one finite observed pre-action state.
- Guarantee:
point_marginalization_over_supplied_target_initial_state_law_exact_finite_sum. - Bounds: max_initial_states = 64, max_horizon = 2.
X5: new period refresh
Claim: point_only
- Question: Can a prepared two-step result accept a new observation period without reusing stale time or selection premises?
- Scope: The 2...
v2.2.0
Antecedent 2.2.0
Antecedent 2.2.0 lets you ask which enumerated interventions reach a target mean, compare related claims using their shared score covariance, and see why a requested answer is refused. It adds an analytic interval for learned continuous trial transport under two declared IID designs, plus bounded transport, counterfactual, and study-planning routes. Results carry their assumptions, support checks, provenance, and refusal reasons.
Start with the question
| If you need to… | Start here | What you get |
|---|---|---|
| Ask “what would have to be true for this outcome?” over interventions you name | Finite-action inverse outcome | Feasible, infeasible, unsupported, and unevaluated actions relative to a licensed forward mean response and the enumerated grid |
| Keep a large AIPW analysis on the score-table path | Penalized propensity | Declared ridge or lasso propensity, cross-fitted scores, overlap diagnostics, and retargeting |
| Compare contract-specific routes or other related claims | Configured batches and retargeting | Joint plug-in covariance and named contrasts on a shared row snapshot |
| Transport a randomized trial's continuous outcome to a target population | Learned continuous transport | Cross-fitted target mean contrast and a calibrated pointwise analytic interval for either declared IID sampling design |
| Work with repeated entities or dyads | Clustered cross-fitted AIPW | Cluster-owned folds, score table, and dependence-aware standard error |
| Declare a composite treatment | Joint cells and derived treatments | Checked source roles, cell overlap, and a factorized propensity |
| Analyze matched case-control samples | Matched case-control odds ratio | A conditional odds ratio with design-specific refusals for absolute risks |
The inverse query is a finite search over already evaluated forward points. It does not infer an unobserved scenario from an outcome, interpolate missing doses, or turn point estimates into probabilities. A feasible action is feasible under the stated forward assumptions and target threshold; an action outside empirical support stays unsupported. The report binds the forward claim, program, and data snapshot identifiers when supplied. Its verify() method replays the local classification; it is not an authenticity check for the forward model.
For exploration before estimation, dependency preflight, cost estimates, and overlap diagnostics make failure modes actionable. For structural questions, the bounded transport and study planning routes say which inputs identify a target and what hypothetical evidence could repair a failed search.
Inference boundary. Point estimates, plug-in score covariances, structural envelopes, and assumption ranges have the meanings stated below. Sampling intervals without passing coverage at their exact coordinates remain withheld, even when an implementation can calculate a candidate band. The learned continuous trial transport percentile interval failed its sample-size grid; its analytic influence interval passed and is available for the declared IID designs.
How to read the claims
| Term | Meaning |
|---|---|
point_only |
An exact or plug-in point estimate. No interval of any kind is claimed. |
nominal |
An interval whose coverage was never measured at its own coordinate (estimator_grid_not_measured). 2.2 cells publish none. |
calibrated |
An interval with a coverage record measured at its own coordinate; shown to readers as a statistical interval. A cell is described this way only once its records exist. |
structural_envelope |
The range of an answer over explicitly supplied structural scenarios. Not a confidence interval. |
assumption_range |
The range of an answer over a declared sensitivity set. Not a confidence interval. |
none |
No numerical claim: identification or inspection only. |
| statistical interval | The reader-facing name of a calibrated interval; it appears only beside a measured coverage record. |
2.2A cells
X1: multi source limited experiment
Claim: point_only
- Question: Can a catalog of limited experiments spread across several source populations identify the target effect when no single source can?
- Scope: Finite discrete selection ADMG shared by target and sources; one selection diagram per source over the same named observed variables.
- Guarantee:
sound_incomplete. - Bounds: max_observed = 12, max_sources = 4, max_controllable_per_source = 4, max_candidate_regimes = 64, max_search_states = 4096, max_depth = 24.
- Interval: withheld. Coverage records passed for both declared sampling designs; the public interval remains closed for 2.2, so the result is the point only.
X2: finite scenario envelope
Claim: structural_envelope
- Question: Which transport conclusions survive each of a finite, explicitly supplied set of graph/selection scenarios?
- Scope: Finite list (1-64) of fixed selection diagrams (directed and bidirected edges over static observed variables, any number of outcomes and treatments) over at most 12 shared observed variables, each decided by the already licensed classical catalog sID row with that row's scope inherited unchanged: the only gate the scenario code adds is the 12-variable bound. Every scenario result is a checked derivation or an independently verified s-hedge, so the row's own limit (multi-outcome and larger general graphs are not enumerated against a latent-SCM oracle) narrows its conformance coverage, not what the path admits; no random ADMG in the scenario tests reached not_certified, which is a defensive status for this route. The new bounded ADMG transport class of 2.2B B1 is a later, separate row and enters only after B1 passes. No CPDAG/PAG-native transport ID.
- Guarantee:
per_scenario_contract_guarantee. - Bounds: max_scenarios = 64, max_observed = 12.
- Interval: withheld. The sampling-uncertainty interval is not offered (its route is closed:
scenario_aggregate_not_licensed). - Not an interval: the structural envelope is never a confidence interval.
X4: learned continuous trial transport
Claim: calibrated
- Question: What is the mean effect of a randomized binary treatment on a continuous outcome in an overlap-supported target population, and which graph-specific estimators are eligible?
- Scope: Certified direct or baseline-standardization transport derivation (existing prepare_trial graph contract).
- Guarantee:
model_double_robustness_of_point_and_pointwise_analytic_interval_under_iid_nuisance_rate_conditions. The point is model doubly robust; the interval also needs overlap and cross-fitting nuisance-rate conditions. - Bounds: max_bootstrap = 2000, min_bootstrap = 199, max_folds = 20, max_rows_consumed = 1000000, max_features_consumed = 256.
- Interval:
prepared.interval()reports the design-specific influence standard error and normal-reference interval. The 95% route passed a six-point sample-size grid with 2,000 datasets per point. It is not a CATE or simultaneous band. The percentile bootstrap failed coverage and remains unavailable; a bootstrap request returns the point with a withheld status. Interval artifacts use version 2 and are independently replayed; point artifacts remain version 1.
X5: two step temporal transport
Claim: point_only
- Question: Does a fixed two-step intervention sequence [a1, a2] transfer from the source to the target population, and what is its target response?
- Scope: Explicit acyclic two-slice unrolling (ADR 0021 temporal coordinates, TemporalDag unfolding or supplied directly) as a selection ADMG: baseline covariates, time-varying covariates observed before each action, one action per step over one discrete alphabet, one outcome after the last action, latent confounding as bidirected edges, and time-indexed selection targets. Horizon 2; at most 8 actions, 12 coordinates and 4096 complete covariate histories.
- Guarantee:
sound_incomplete. - Bounds: horizon = 2, max_actions = 8, max_observed = 12, max_history_states = 4096.
- Interval: withheld. The sampling-uncertainty interval is not offered (its route is closed:
estimator_inference_mismatch).
X8: path specific edge intervention
Claim: point_only
- Question: On a fixed fully observed DAG, how much of the treatment effect flows along a chosen set of edges while every other edge sees the baseline value?
- Scope: Explicit Markovian DAG of at most 8 observed variables with a single treatment and outcome: no latent confounding, no accepted or uncertain structure, no equivalence class, no temporal graph. B5 replaces the check with counterfactual identification on ADMGs.
- Guarantee:
exact_under_specified_scm. - Bounds: max_variables = 8, max_worlds = 8, max_rows = 100000.
- Interval: withheld. The sampling-uncertainty interval is not offered (its route is closed:
estimator_inference_mismatch).
X9: mixed source proof search
Claim: point_only
- Question: Can complementary distributions from different studies of one population identify a query that no named theorem route covers, and which leaf is missing when they cannot?
- Scope: Finite discrete ADMG over at most 10 observed variables; inputs are the target population's whole-population, available, measured, unconditioned joint laws of catalog regimes (o...
v2.1.1
Antecedent 2.1.1
2.1.1 corrects 2.1.0. It licenses no new coordinate and withdraws none. The changelog lists every change; this page covers what an upgrading user should check.
Estimates that change
Synthetic difference in differences now fits its time weights to the donors' post-period means, as the method specifies; 2.1.0's weights never moved from uniform. Fuzzy regression discontinuity and regression kink count rows exactly at the cutoff on the treated side. Negative binomial g-computation standard errors are no longer scaled by √α. Bayesian IV draws are decorrelated across nearby seeds. Transported priors carry the variance of their reweighted mean and drop a source whose weights have too few effective units. Badly scaled conjugate Gaussian designs are solved after equilibration. For mediation results, effect() now returns the queried contrast.
Artifacts verify what they claim
A study built without an explicit estimator now receives the same distribution replay and AIPW binding checks as one that names it; in 2.1.0 an edited artifact of that kind could still verify. Distribution scalars must match their atoms, a standard error requires its estimate, and structural masses, manifest trailing bytes, and total declared section sizes are checked on load. 2.0.0 anomaly-attribution artifacts keep their digests.
Prepared studies and transport
Refreshing a prepared study with a different row count rebinds its retained fit, and rebound validators reach the sealed routes. Two-source z-transport no longer multiplies factors taken at different treatment levels, and duplicate evidence binds by one documented rule on every path.
Results that are now refused
Where 2.1.0 returned a wrong answer and no small change recovers the right one, 2.1.1 refuses: kNN conditional-independence tests on two or more continuous conditioning variables, invalid or misaligned CI weights, clustered or HAC standard errors for matching, exact ratios over an unobserved stratum, and graph files a reader cannot represent faithfully. Elsewhere the correct result is now computed instead — for example, non-integer category codes are treated as labels, and a conditioning set that determines a variable gives exact independence.
Explicit refusals
2.1.1 licenses no new coordinate and withdraws none. Unlisted geometric coordinates still refuse; see the support matrix and the graphless support matrix.
Licensed support snapshot
The counts below are the geometric support matrix only: licensing, not the coverage a calibration pass measures.
472 licensed of 1475 meaningful cells (2089 n/a typed impossibilities are not a coverage gap). 1003 refused with a reason on file; 0 refused without a reason; 0 active allowed_unlicensed compatibility entries.
Interval calibration of the 472 licensed cells: 424 cite coverage records; 44 across 22 distinct coordinates have no coverage measurement for their estimator (estimator_grid_not_measured); 4 report no interval (no_interval_reported). A licensed cell therefore does not imply that its interval coverage was measured, and cited records do not by themselves make a result calibrated (see result.calibration).
AnomalyAttribution×Dag×explicit×Frequentist× validationnoneAnomalyAttribution×Dag×explicit×Bayesian× validationnoneAverageDerivative×Dag×explicit/accepted×Frequentist× validationnoneAverageDerivative×Dag×explicit/accepted×Bayesian× validationnoneAverageEffect×Dag/Admg/Cpdag/Pag×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullAverageEffect×CoDetermined/Unknown×explicit×Frequentist× validationnoneAverageEffect×Dag/Admg/Cpdag/Pag×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullChangeAttribution×Dag×explicit×Frequentist× validationnoneChangeAttribution×Dag×explicit×Bayesian× validationnoneConditionalEffect×Dag/Cpdag/Pag×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullConditionalEffect×Dag/Cpdag/Pag×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullCounterfactual×Dag×explicit/accepted×Frequentist× validationnoneCounterfactual×Dag×explicit/accepted×Bayesian× validationnoneDirectionalDerivative×Dag×explicit/accepted×Frequentist× validationnoneDirectionalDerivative×Dag×explicit/accepted×Bayesian× validationnoneElasticity×Dag×explicit/accepted×Frequentist× validationnoneElasticity×Dag×explicit/accepted×Bayesian× validationnoneInterventionalDistribution×Dag×explicit/accepted×Frequentist× validationnone/cheap/fullInterventionalDistribution×Admg×explicit/accepted×Frequentist× validationnoneInterventionalDistribution×Dag×explicit/accepted×Bayesian× validationnone/cheap/fullInterventionalDistribution×Admg×explicit/accepted×Bayesian× validationnoneInterventionResponse×Dag/Admg×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullInterventionResponse×Cpdag×explicit×Frequentist× validationnoneInterventionResponse×Cpdag×accepted×Frequentist× validationnoneInterventionResponse×Cpdag×graph_posterior×Frequentist× validationnoneInterventionResponse×Cpdag×graph_posterior×Frequentist× validationcheapInterventionResponse×Cpdag×graph_posterior×Frequentist× validationfullInterventionResponse×Pag×explicit×Frequentist× validationnoneInterventionResponse×Pag×accepted×Frequentist× validationnoneInterventionResponse×Pag×graph_posterior×Frequentist× validationnoneInterventionResponse×Pag×graph_posterior×Frequentist× validationcheapInterventionResponse×Pag×graph_posterior×Frequentist× validationfullInterventionResponse×TemporalDag×explicit×Frequentist× validationnoneInterventionResponse×TemporalDag×accepted×Frequentist× validationnoneInterventionResponse×TemporalDag×graph_posterior×Frequentist× validationnoneInterventionResponse×TemporalDag×graph_posterior×Frequentist× validationcheapInterventionResponse×TemporalDag×graph_posterior×Frequentist× validationfullInterventionResponse×TemporalCpdag×explicit×Frequentist× validationnoneInterventionResponse×TemporalCpdag×accepted×Frequentist× validationnoneInterventionResponse×TemporalCpdag×graph_posterior×Frequentist× validationnoneInterventionResponse×TemporalCpdag×graph_posterior×Frequentist× validationcheapInterventionResponse×TemporalCpdag×graph_posterior×Frequentist× validationfullInterventionResponse×TemporalPag×explicit×Frequentist× validationnoneInterventionResponse×TemporalPag×accepted×Frequentist× validationnoneInterventionResponse×TemporalPag×graph_posterior×Frequentist× validationnoneInterventionResponse×TemporalPag×graph_posterior×Frequentist× validationcheapInterventionResponse×TemporalPag×graph_posterior×Frequentist× validationfullInterventionResponse×CoDetermined×explicit×Frequentist× validationnoneInterventionResponse×Dag×explicit/accepted/graph_posterior×Bayesian× validationnoneInterventionResponse×Admg×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullInterventionResponse×Cpdag×explicit×Bayesian× validationnoneInterventionResponse×Cpdag×accepted×Bayesian× validationnoneInterventionResponse×Cpdag×graph_posterior×Bayesian× validationnoneInterventionResponse×Cpdag×graph_posterior×Bayesian× validationcheapInterventionResponse×Cpdag×graph_posterior×Bayesian× validationfullInterventionResponse×Pag×explicit×Bayesian× validationnoneInterventionResponse×Pag×accepted×Bayesian× validationnoneInterventionResponse×Pag×graph_posterior×Bayesian× validationnoneInterventionResponse×Pag×graph_posterior×Bayesian× validationcheapInterventionResponse×Pag×graph_posterior×Bayesian× validationfullInterventionResponse×TemporalDag×explicit×Bayesian× validationnoneInterventionResponse×TemporalDag×accepted×Bayesian× validationnoneInterventionResponse×TemporalDag×graph_posterior×Bayesian× validationnoneInterventionResponse×TemporalDag×graph_posterior×Bayesian× validationcheapInterventionResponse×TemporalDag×graph_posterior×Bayesian× validationfullInterventionResponse×TemporalCpdag×explicit×Bayesian× validationnoneInterventionResponse×TemporalCpdag×accepted×Bayesian× validationnoneInterventionResponse×TemporalCpdag×graph_posterior×Bayesian× validationnoneInterventionResponse×TemporalCpdag×graph_posterior×Bayesian× validation `chea...
v2.1.0
Antecedent 2.1.0 release notes
The 2.1 release in one view
2.1 keeps the identify → estimate → inspect → refresh → export → consume lifecycle of 2.0 and widens the questions that lifecycle can carry. Randomized experiments, held-out policy value, longitudinal regimes, difference-in-differences and related designs, and survival contrasts prepare and analyze as retained studies. Interval claims for those studies are rows of a graphless support matrix, separate from the geometric matrix. A row is a support license for that claim. It is not a coverage record; result.calibration is still the per-execution calibration status. Network exposure keeps its geometric Bernoulli cell and adds graphless rows for cluster-randomized, saturation, and observational contrasts. On the structural side, restricted experiments identify a target effect from the experiments a source can actually run, a fixed-DAG natural direct effect shares one abduced world across both treatments, and Bayesian estimation covers attribution, trial transport, network interference, and class-posterior intervention response. Every geometric-matrix route executes from a checked operation sealed at preparation. A result still carries its identification, support, uncertainty, assumptions, provenance, and limits.
Design studies on the same contract
The new families live on stage modules, not the package root: experiment, factorial, policy, regimes, quasi, and survival. Prepare freezes the design with the study. Refresh reuses that frozen design and can take outcome-only data; it does not re-read design columns from the new table. On the experiment, policy, regime, and interference queries, row-aligned inputs may be named by data column, and prepare resolves those names.
Randomized designs cover Bernoulli, complete, stratified, cluster, fixed-cell 2×2 factorial, and independent multi-arm assignment, plus switchback sequences, Wald complier effects, one-sided treatment on the treated, fixed-coefficient CUPED, and ANCOVA on pre-assignment covariates. Policy evaluation scores a precomputed binary or multi-action policy on held-out randomized subjects, including finite-class regret, uplift bins, and a kernel-smoothed group-to-dose policy under a declared known density. Longitudinal regimes evaluate a prespecified static or history-adaptive rule by g-formula, sequential doubly robust scores, or an additive marginal structural model. The caller supplies the conditional rewards or stabilized weights those scores condition on. Quasi-experimental designs cover two-period and repeated-cross-section difference-in-differences, staggered adoption with a never-treated event study, synthetic control and synthetic difference-in-differences (including a donor-trained ridge correction and an exact assignment test of a stated constant effect), fuzzy regression discontinuity, and regression kink. Survival contrasts cover individually randomized RMST and fixed-horizon survival, delayed entry, known censoring weights, and competing risks. Simultaneous curve bands are their own graphless rows.
The graphless support matrix is the support license for these claims. A design can return a point when no row matches. A matching row licenses that claim under its stated support; it does not calibrate the interval. A pointwise row does not confer a simultaneous band. A caller-supplied nuisance, density, or propensity is not independently verified.
Restricted experiments
2.0 transport assumes a source can experiment on the variables the classical theorems name. 2.1 adds z-transport for a target effect identified from one source's experiments on a bounded controllable set: finite discrete diagrams of up to twelve observed variables and four controllables. A positive decision is a checked formula bound only to the joints that formula cites, including a registered surrogate route. A line-11 obstruction is a structural fact about the selection diagram and the declared controllable set: an empty catalog and the full experiment family reach the same terminal, and replay rechecks it. Two sources are searched separately. Complementary factors combine only under two registered factorizations — disconnected outcome components, or one connected graph whose intervened outcomes separate into two groups given the treatments — and a request that would invent a joint over both sources' interventions is refused by name.
The same route reports an assumption range for outcome-kernel contamination, with witnesses and a tipping fraction. That range is not a sampling interval. A planner can test hypothetical catalog additions, rank checked sufficient studies by a caller-supplied cost, and replay the proposal when the evidence actually arrives. The point artifact carries the proof, catalog binding, laws, and program; an independent consumer rechecks them and recomputes the point. Empirical cited tables can publish a nominal percentile bootstrap or a posterior equal-tail interval. Both carry estimator_grid_not_measured. No coverage record attests them, and this cut does not treat them as calibrated. See the transport coverage matrix.
Nested counterfactuals and a wider Bayesian scope
The fixed three-node natural direct effect replays both treatment worlds from one abduced exogenous table. Under a non-separable outcome the frozen mediator carries that unit's disturbance into the direct effect, so the point is the shared-abduction value rather than a disturbance-free plug-in. The effect is point-only, and worlds outside that mediation contract refuse. See the counterfactual coverage matrix.
Bayesian estimation, still model-scoped, now includes anomaly and change attribution on a shared row law, trial-to-target transport, finite-network interference, and CPDAG and PAG intervention response under a graph posterior. Conditional effects take multiple declared modifiers. Response curves can report a simultaneous band from the same joint posterior draws. Finite-discrete structural transport accepts an empirical-support Bayesian bootstrap and a declared-state-space Dirichlet posterior. Sharp regression discontinuity has a bandwidth-conditional local-linear posterior, and a linear instrumental-variables route uses a joint Gaussian structural model. A quadratic g-computation basis and a cross-fitted robust average effect are available as procedures whose intervals do not carry a calibrated coverage claim.
Providers, without rebuilding Antecedent
extensibility.CausalProviderSpec is the contract for an analysis Antecedent does not implement. A Python provider is registered explicitly, or loaded from a separately installed entry point, and analyze returns a ProviderAnalysisResult that keeps the provider's output, uncertainty semantics, and trust boundary. It does not recast plugin output as a native point or interval. Caller-supplied verification fixtures can mark an exact request verified; unseen requests stay externally attested. An EconML handoff still encodes through the existing artifact path. External packages need no Rust or Python rebuild, and a verified provider does not receive a native support-matrix license.
What is deliberately not claimed in 2.1
The support matrix is the license for graph, evidence, inference, and validation coordinates. The graphless matrix is the license for design-family claims. Neither matrix is a calibration pass. An implemented query is not permission to combine every design, horizon, nuisance, and uncertainty statement.
In particular: synthetic control and synthetic difference-in-differences report a point, and their exact assignment p-values test a stated sharp null. They have no effect-interval row. The direct factorial utility reports cell means and covariance-free variance bounds and has no graphless row; the retained factorial randomization is a separate row. Sequential inverse-probability regime values and augmented panel difference-in-differences stay point-only. Caller-fitted censoring or propensity routes stay point-only where no row names them. Coupled capacity or budget constraints keep a policy value point-only. Longer regime horizons do not inherit the two- and three-period rows. Three or more ANCOVA covariates stay point-only. z-transport is sound and incomplete inside its variable bounds. A support license is not a coverage claim. calibrated still requires a coverage record that matches the execution and attests the executing code.
Explicit refusals
Unlisted geometric coordinates and unsupported priors or target populations still refuse. A graphless design that misses its row has no support license for that claim. A point may still be returned. See the support matrix and the graphless support matrix.
Licensed support snapshot
The counts below are the geometric support matrix only. They record which coordinates are licensed and which of those cite a coverage record in the registry — licensing, not the coverage a calibration pass measures. Design-family claims are in the graphless matrix.
472 licensed of 1475 meaningful cells (2089 n/a typed impossibilities are not a coverage gap). 1003 refused with a reason on file; 0 refused without a reason; 0 active allowed_unlicensed compatibility entries.
Interval calibration of the 472 licensed cells: 424 cite coverage records; 44 across 22 distinct coordinates have no coverage measurement for their estimator (estimator_grid_not_measured); 4 report no interval (no_interval_reported). A licensed cell therefore does not imply that its interval coverage was measured, and cited records do not by themselves make a resu...
v2.0.0
Antecedent 2.0.0 release notes
The 2.0 release in one view
2.0 makes Antecedent's existing causal lifecycle more capable without dropping its claim contract. The same identify → estimate → inspect → refresh → export → consume workflow now reaches learner-backed estimation and structural transport. A result still carries its identification, support, uncertainty, assumptions, provenance, and limits rather than exposing an estimate alone.
Learner-backed causal estimation
2.0 adds a Rust-native learner substrate built for nuisance prediction. It provides a stable learner specification and capability contract; zero-copy dense/sparse design views; row-indexed folds; and fold-local preprocessing, so learned transformations do not leak validation information into cross-fitting.
The initial provider set includes Antecedent-controlled OLS, weighted OLS, ridge, logistic, penalized logistic, elastic-net, and basis-regression paths, alongside gradient-boosted-tree, random-forest, extra-tree, and CPU-native neural adapters. The standard Python wheel includes the neural route. A restrained automatic selection route compares appropriate nuisance candidates instead of launching an unconstrained model search. Every fitted route reports the implementation and relevant capabilities rather than putting a provider name into the causal API.
On that foundation, 2.0 adds DML, cross-fitted AIPW, DR-Learner, and honest causal-forest workflows. Their outputs include held-out nuisance predictions, fold assignments, outcome/treatment diagnostics, overlap and trimming disclosure, and learner provenance. The uncertainty boundary is intentional: the honest forest exposes cate_leaf_dispersion as a stability diagnostic, not a pointwise standard error or confidence interval; nonlinear or penalized CATE final stages likewise do not manufacture pointwise intervals.
Structural transport across populations
2.0 turns transport from a formula-shaped feature into a checked execution workflow. Transport requests now state the target population, environments, evidence regimes, measured variables, interventions, sampling semantics, and known dependence. The implementation keeps separate experiments, marginal and joint measurements, observed evidence and proposed experiments, and population-specific mechanisms distinct.
Identification uses population- and regime-aware expressions plus a checked derivation DAG. The single-source route supports target-only derivations, classical theorem-scoped recursive identification, and verified scoped non-transportability witnesses. It keeps formula derivation separate from binding the formula to the supplied evidence catalog. Complementary-source transport tracks each selected source and premise, uses deterministic binding policy, and never silently pools incompatible studies or double-counts a shared dataset.
The evaluator supports exact finite-discrete laws and the licensed empirical table path. It validates provider coverage before evaluation, reports factor-level support and denominator failures, and preserves a certified functional while optimizing its execution plan. Prepared transport supports inspect → prepare → estimate → explicit refresh, while target response grids retain coordinates, partial failures, factor diagnostics, and joint resampling across grid points. Artifacts preserve the population, regime, derivation, provider, evidence, and inference identities through Rust/Python and independent-consumer round trips.
Clearer outcomes and stronger boundaries
The transport contract now distinguishes invalid input, theorem-stage non-certification, verified structural non-transportability, missing evidence or provider, unsupported evaluator, support failure, numerical failure, and budget/cancellation. A formula can therefore be identified yet unavailable to evaluate, and a failed bounded search never becomes an impossibility claim.
2.0 also strengthens the broader claim system: support coordinates, typed refusals, evidence, provenance, calibration status, artifact validation, and migration behavior remain explicit across the new paths. See the 2.0 transport migration guide for the public API moves.
What is deliberately not claimed in 2.0
The support matrix remains authoritative. An implemented type or documented workflow is not a license for every query, graph, evidence, inference, and validation combination. In particular, the initial transport statistical path is finite-discrete and its intervals are pointwise; continuous point interventions, quantile/derivative transport inference, and simultaneous response-grid bands are not licensed here.
Calibration status remains attached to every result. calibrated requires a coverage record that both matches the execution and attests the executing code; an interval does not become a general guarantee merely because an estimator returned it.
Explicit refusals
Every root query in the matrix has at least one licensed cell, so no query family is refused as a whole. Individual combinations refuse for graph, structure, evidence, inference, validation, support, or budget reasons; a combination not listed in the licensed block below is refused. See the support matrix for the full coordinate-level boundary.
Licensed support snapshot
463 licensed of 1403 meaningful cells (1999 n/a typed impossibilities are not a coverage gap). 940 refused with a reason on file; 0 refused without a reason; 0 active allowed_unlicensed compatibility entries.
Interval calibration of the 463 licensed cells: 295 cite coverage records; 164 have no coverage measurement for their estimator (estimator_grid_not_measured); 4 report no interval (no_interval_reported). A licensed cell therefore does not imply that its interval coverage was measured, and cited records do not by themselves make a result calibrated (see result.calibration).
AnomalyAttribution×Dag×explicit×Frequentist× validationnoneAverageDerivative×Dag×explicit/accepted×Frequentist× validationnoneAverageDerivative×Dag×explicit/accepted×Bayesian× validationnoneAverageEffect×Dag/Admg/Cpdag/Pag×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullAverageEffect×CoDetermined/Unknown×explicit×Frequentist× validationnoneAverageEffect×Dag/Admg/Cpdag/Pag×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullChangeAttribution×Dag×explicit×Frequentist× validationnoneConditionalEffect×Dag/Cpdag/Pag×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullConditionalEffect×Dag/Cpdag/Pag×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullCounterfactual×Dag×explicit/accepted×Frequentist× validationnoneCounterfactual×Dag×explicit/accepted×Bayesian× validationnoneDirectionalDerivative×Dag×explicit/accepted×Frequentist× validationnoneDirectionalDerivative×Dag×explicit/accepted×Bayesian× validationnoneElasticity×Dag×explicit/accepted×Frequentist× validationnoneElasticity×Dag×explicit/accepted×Bayesian× validationnoneInterventionalDistribution×Dag×explicit/accepted×Frequentist× validationnone/cheap/fullInterventionalDistribution×Admg×explicit/accepted×Frequentist× validationnoneInterventionalDistribution×Dag×explicit/accepted×Bayesian× validationnone/cheap/fullInterventionalDistribution×Admg×explicit/accepted×Bayesian× validationnoneInterventionResponse×Dag/Admg×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullInterventionResponse×Cpdag×explicit×Frequentist× validationnoneInterventionResponse×Cpdag×accepted×Frequentist× validationnoneInterventionResponse×Cpdag×graph_posterior×Frequentist× validationnoneInterventionResponse×Cpdag×graph_posterior×Frequentist× validationcheapInterventionResponse×Cpdag×graph_posterior×Frequentist× validationfullInterventionResponse×Pag×explicit×Frequentist× validationnoneInterventionResponse×Pag×accepted×Frequentist× validationnoneInterventionResponse×Pag×graph_posterior×Frequentist× validationnoneInterventionResponse×Pag×graph_posterior×Frequentist× validationcheapInterventionResponse×Pag×graph_posterior×Frequentist× validationfullInterventionResponse×TemporalDag×explicit×Frequentist× validationnoneInterventionResponse×TemporalDag×accepted×Frequentist× validationnoneInterventionResponse×TemporalDag×graph_posterior×Frequentist× validationnoneInterventionResponse×TemporalDag×graph_posterior×Frequentist× validationcheapInterventionResponse×TemporalDag×graph_posterior×Frequentist× validationfullInterventionResponse×TemporalCpdag×explicit×Frequentist× validationnoneInterventionResponse×TemporalCpdag×accepted×Frequentist× validationnoneInterventionResponse×TemporalCpdag×graph_posterior×Frequentist× validationnoneInterventionResponse×TemporalCpdag×graph_posterior×Frequentist× validationcheapInterventionResponse×TemporalCpdag×graph_posterior...
v1.11.0
Antecedent 1.11.0
The 1.x close-out on the 1.10.0 composition contract. 1.10.0 remains the
closed composition baseline. This cut opens additional licensed cells and
identification surface, carries the S practitioner acceptance suite and
the P speed program, and includes the 1.11 review corrections below. It
does not start the 2.0 transport program.
Coverage claims for this candidate attach to remesure 6a41568f plus
replay waiver facade-reexports-02c06614 (waiver to = 02c06614, the
last core-surface commit). The 587 records were remesured after the
finding repairs; every record carries core. Docs-only commits after
02c06614 do not change that surface. The 2026-09-19 working-tree count
of 258 matching plus 329 replay-attested records is the pre-repair
snapshot; it is not the claim for this candidate.
What 1.11.0 claims
- The 1.10 inspect → preview → execute → claim → consume path remains the
compiler lifecycle for every licensed cell. - Ordinary one-call analyses retain reusable studies.
- The default user path uses the machine (
threads>1);for_testsstays
serial and scalar. User-sized benches live in this tree. Graph-posterior
atoms and bootstrap replicate evaluation share onectx.parallelism
budget.result.refreshis the five-line second click. - External estimator handoffs keep identification Antecedent-certified and
estimation caller-attested.
Every Antecedent analysis retains a reusable study and exports a contracted execution; custom validator results travel as caller-attested, not re-verifiable, evidence, and a row-weight retarget re-executes only on its own data snapshot.
Every reported interval states its calibration: calibrated when a coverage record matches the execution and the execution is inside that record's scope; scope_not_assessed when a record matches but the execution is outside its scope or the record is a boundary; unavailable with a reason code when no record exists.
Identities are distinct and stable: every IdentityDomain plus target_weights is domain-separated and registered in parity/identity.toml.
Licensed cells
The generated block below is the current matrix snapshot for this workspace
version.
463 licensed of 1403 meaningful cells (1999 n/a typed impossibilities are not a coverage gap). 940 refused with a reason on file; 0 refused without a reason; 0 active allowed_unlicensed compatibility entries.
AnomalyAttribution×Dag×explicit×Frequentist× validationnoneAverageDerivative×Dag×explicit/accepted×Frequentist× validationnoneAverageDerivative×Dag×explicit/accepted×Bayesian× validationnoneAverageEffect×Dag/Admg/Cpdag/Pag×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullAverageEffect×CoDetermined/Unknown×explicit×Frequentist× validationnoneAverageEffect×Dag/Admg/Cpdag/Pag×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullChangeAttribution×Dag×explicit×Frequentist× validationnoneConditionalEffect×Dag/Cpdag/Pag×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullConditionalEffect×Dag/Cpdag/Pag×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullCounterfactual×Dag×explicit/accepted×Frequentist× validationnoneCounterfactual×Dag×explicit/accepted×Bayesian× validationnoneDirectionalDerivative×Dag×explicit/accepted×Frequentist× validationnoneDirectionalDerivative×Dag×explicit/accepted×Bayesian× validationnoneElasticity×Dag×explicit/accepted×Frequentist× validationnoneElasticity×Dag×explicit/accepted×Bayesian× validationnoneInterventionalDistribution×Dag×explicit/accepted×Frequentist× validationnone/cheap/fullInterventionalDistribution×Admg×explicit/accepted×Frequentist× validationnoneInterventionalDistribution×Dag×explicit/accepted×Bayesian× validationnone/cheap/fullInterventionalDistribution×Admg×explicit/accepted×Bayesian× validationnoneInterventionResponse×Dag/Admg×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullInterventionResponse×Cpdag×explicit×Frequentist× validationnoneInterventionResponse×Cpdag×accepted×Frequentist× validationnoneInterventionResponse×Cpdag×graph_posterior×Frequentist× validationnoneInterventionResponse×Cpdag×graph_posterior×Frequentist× validationcheapInterventionResponse×Cpdag×graph_posterior×Frequentist× validationfullInterventionResponse×Pag×explicit×Frequentist× validationnoneInterventionResponse×Pag×accepted×Frequentist× validationnoneInterventionResponse×Pag×graph_posterior×Frequentist× validationnoneInterventionResponse×Pag×graph_posterior×Frequentist× validationcheapInterventionResponse×Pag×graph_posterior×Frequentist× validationfullInterventionResponse×TemporalDag×explicit×Frequentist× validationnoneInterventionResponse×TemporalDag×accepted×Frequentist× validationnoneInterventionResponse×TemporalDag×graph_posterior×Frequentist× validationnoneInterventionResponse×TemporalDag×graph_posterior×Frequentist× validationcheapInterventionResponse×TemporalDag×graph_posterior×Frequentist× validationfullInterventionResponse×TemporalCpdag×explicit×Frequentist× validationnoneInterventionResponse×TemporalCpdag×accepted×Frequentist× validationnoneInterventionResponse×TemporalCpdag×graph_posterior×Frequentist× validationnoneInterventionResponse×TemporalCpdag×graph_posterior×Frequentist× validationcheapInterventionResponse×TemporalCpdag×graph_posterior×Frequentist× validationfullInterventionResponse×TemporalPag×explicit×Frequentist× validationnoneInterventionResponse×TemporalPag×accepted×Frequentist× validationnoneInterventionResponse×TemporalPag×graph_posterior×Frequentist× validationnoneInterventionResponse×TemporalPag×graph_posterior×Frequentist× validationcheapInterventionResponse×TemporalPag×graph_posterior×Frequentist× validationfullInterventionResponse×CoDetermined×explicit×Frequentist× validationnoneInterventionResponse×Dag/Cpdag/Pag×explicit/accepted/graph_posterior×Bayesian× validationnoneInterventionResponse×Admg×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullInterventionResponse×TemporalDag×explicit×Bayesian× validationnoneInterventionResponse×TemporalDag×accepted×Bayesian× validationnoneInterventionResponse×TemporalDag×graph_posterior×Bayesian× validationnoneInterventionResponse×TemporalDag×graph_posterior×Bayesian× validationcheapInterventionResponse×TemporalDag×graph_posterior×Bayesian× validationfullInterventionResponse×TemporalCpdag×explicit×Bayesian× validationnoneInterventionResponse×TemporalCpdag×accepted×Bayesian× validationnoneInterventionResponse×TemporalCpdag×graph_posterior×Bayesian× validationnoneInterventionResponse×TemporalCpdag×graph_posterior×Bayesian× validationcheapInterventionResponse×TemporalCpdag×graph_posterior×Bayesian× validationfullInterventionResponse×TemporalPag×explicit×Bayesian× validationnoneInterventionResponse×TemporalPag×accepted×Bayesian× validationnoneInterventionResponse×TemporalPag×graph_posterior×Bayesian× validationnoneInterventionResponse×TemporalPag×graph_posterior×Bayesian× validationcheapInterventionResponse×TemporalPag×graph_posterior×Bayesian× validationfullMediationEffect×Dag×explicit/accepted×Frequentist× validationnone/cheap/fullMediationEffect×Dag×explicit/accepted×Bayesian× validationnone/cheap/fullPathSpecificEffect×Dag×explicit/accepted×Frequentist× validationnone/cheap/fullPathSpecificEffect×Dag×explicit/accepted×Bayesian× validationnone/cheap/fullPointDerivative×Dag×explicit/accepted×Frequentist× validationnonePointDerivative×Dag×explicit/accepted×Bayesian× validationnonePulseEffect×TemporalDag/TemporalCpdag/TemporalPag×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullPulseEffect×TemporalDag/TemporalCpdag/TemporalPag×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullResponseCurve×Dag/Admg/Cpdag/Pag/TemporalDag/TemporalCpdag/TemporalPag×explicit/accepted/graph_posterior×Frequentist× validationnoneResponseCurve×Dag/Admg/Cpdag/Pag/TemporalDag/TemporalCpdag/TemporalPag×explicit/accepted/graph_posterior×Bayesian× validationnoneResponseJacobian×Dag× `expli...
v1.10.0
Antecedent 1.10.0
1.10 is a composition release of the
already-licensed support matrix: 341 licensed cells of 1423 meaningful
combinations. It does not add query kinds or identification theory.
What 1.10 claims
- Every licensed cell has a first-class inspect/contract coordinate.
- Every licensed cell completes the Rust compiler path
inspect → preview → execute → claim → consume
(every_licensed_cell_completes_the_compiler_path). Independent consume
must accept a verified program. TemporalPag uses the identified-PAG
envelope fixture so execute cannot terminate as an unidentified refuse. - Domain-separated identities, four reasoning slots, portable claims, and
independent consume of contractedanalysis_resultartifacts. - Ordinary one-call analyses retain reusable studies.
analyzeis
prepare(...).estimate().
Reuse, calibration, and identities
Every Antecedent analysis retains a reusable study and exports a contracted execution; custom validator results travel as caller-attested, not re-verifiable, evidence, and a row-weight retarget re-executes only on its own data snapshot.
Every reported interval states its calibration: calibrated when a coverage record matches the execution and the execution is inside that record's scope; scope_not_assessed when a record matches but the execution is outside its scope or the record is a boundary; unavailable with a reason code when no record exists.
Identities are distinct and stable: every IdentityDomain plus target_weights is domain-separated and registered in parity/identity.toml.
- Parent-estimator oracle evidence is not inherited by the compiler
path. The 341-cell lifecycle is composition-seam evidence
(internal_cross_checkon synthetic licensed-coordinate fixtures). result.answeris the safe consumption interface. Historical.effect/
.atewarn when a point display would misrepresent; they still return the
scalar unlessANTECEDENT_STRICT_ANSWER=1..posterior/.response
remain accessible.program_idis the compiled program.claim_idis the execution claim.
Release process
gate_release.sh is the PR inventory / composition umbrella. A green local
run is not an RC. Cut with scripts/gate_release_candidate.sh: a green CI
run on the candidate SHA, this inventory, Python lint/pytest, and one local
wheel. The inventory includes the calibration attestation
(scripts/gate_calibration_attestation.sh): every coverage record's
statistical surface is unchanged since the commit it was measured at, or a
valid replay waiver attests it. The same attestation runs first in every PR's
gates job and in both publish workflows (publish-release.yml,
publish-crates.yml), so nothing is built or published against a stale
registry. The CI python-wheels matrix remains required on the candidate SHA.
No PR or release job runs the 400-replicate calibration; it is measured
locally (scripts/measure_calibration.sh) before upload.
Licensed cells
The licensed inventory is unchanged from 1.9.0. The generated block below is
the current matrix snapshot for this workspace version.
341 licensed of 1423 meaningful cells (1979 n/a typed impossibilities are not a coverage gap). 1082 refused with a reason on file; 0 refused without a reason; 0 active allowed_unlicensed compatibility entries.
AnomalyAttribution×Dag×explicit×Frequentist× validationnoneAverageDerivative×Dag×explicit/accepted×Frequentist× validationnoneAverageDerivative×Dag×explicit/accepted×Bayesian× validationnoneAverageEffect×Dag×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullAverageEffect×Admg/Cpdag/Pag×explicit/accepted×Frequentist× validationnone/cheap/fullAverageEffect×CoDetermined/Unknown×explicit×Frequentist× validationnoneAverageEffect×Dag×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullAverageEffect×Admg/Cpdag/Pag×explicit/accepted×Bayesian× validationnone/cheap/fullChangeAttribution×Dag×explicit×Frequentist× validationnoneConditionalEffect×Dag×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullConditionalEffect×Cpdag/Pag×explicit/accepted×Frequentist× validationnone/cheap/fullConditionalEffect×Dag×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullConditionalEffect×Cpdag/Pag×explicit/accepted×Bayesian× validationnone/cheap/fullCounterfactual×Dag×explicit/accepted×Frequentist× validationnoneCounterfactual×Dag×explicit/accepted×Bayesian× validationnoneDirectionalDerivative×Dag×explicit/accepted×Frequentist× validationnoneDirectionalDerivative×Dag×explicit/accepted×Bayesian× validationnoneElasticity×Dag×explicit/accepted×Frequentist× validationnoneElasticity×Dag×explicit/accepted×Bayesian× validationnoneInterventionalDistribution×Dag×explicit/accepted×Frequentist× validationnone/cheap/fullInterventionalDistribution×Admg×explicit/accepted×Frequentist× validationnoneInterventionalDistribution×Dag×explicit/accepted×Bayesian× validationnone/cheap/fullInterventionalDistribution×Admg×explicit/accepted×Bayesian× validationnoneInterventionResponse×Dag×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullInterventionResponse×Cpdag/Pag/TemporalDag/TemporalCpdag/TemporalPag×explicit/accepted×Frequentist× validationnoneInterventionResponse×CoDetermined×explicit×Frequentist× validationnoneInterventionResponse×Dag×explicit/accepted/graph_posterior×Bayesian× validationnoneInterventionResponse×Cpdag/Pag/TemporalDag/TemporalCpdag/TemporalPag×explicit/accepted×Bayesian× validationnoneMediationEffect×Dag×explicit/accepted×Frequentist× validationnone/cheap/fullMediationEffect×Dag×explicit/accepted×Bayesian× validationnone/cheap/fullPathSpecificEffect×Dag×explicit/accepted×Frequentist× validationnone/cheap/fullPathSpecificEffect×Dag×explicit/accepted×Bayesian× validationnone/cheap/fullPointDerivative×Dag×explicit/accepted×Frequentist× validationnonePointDerivative×Dag×explicit/accepted×Bayesian× validationnonePulseEffect×TemporalDag×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullPulseEffect×TemporalCpdag/TemporalPag×explicit/accepted×Frequentist× validationnone/cheap/fullPulseEffect×TemporalDag×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullPulseEffect×TemporalCpdag/TemporalPag×explicit/accepted×Bayesian× validationnone/cheap/fullResponseCurve×Dag×explicit/accepted/graph_posterior×Frequentist× validationnoneResponseCurve×Cpdag/Pag/TemporalDag/TemporalCpdag/TemporalPag×explicit/accepted×Frequentist× validationnoneResponseCurve×Dag×explicit/accepted/graph_posterior×Bayesian× validationnoneResponseCurve×Cpdag/Pag/TemporalDag/TemporalCpdag/TemporalPag×explicit/accepted×Bayesian× validationnoneResponseJacobian×Dag×explicit/accepted×Frequentist× validationnoneResponseJacobian×Dag×explicit/accepted×Bayesian× validationnoneSemiElasticity×Dag×explicit/accepted×Frequentist× validationnoneSemiElasticity×Dag×explicit/accepted×Bayesian× validationnoneSustainedEffect×TemporalDag×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullSustainedEffect×TemporalCpdag/TemporalPag×explicit/accepted×Frequentist× validationnone/cheap/fullSustainedEffect×TemporalDag×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullSustainedEffect×TemporalCpdag/TemporalPag×explicit/accepted×Bayesian× validationnone/cheap/fullTemporalMediationEffect×TemporalDag×explicit×Frequentist× validationnoneTemporalMediationEffect×TemporalDag×explicit×Frequentist× validationcheapTemporalMediationEffect×TemporalDag×explicit×Frequentist× validationfullTemporalMediationEffect×TemporalDag×accepted×Frequentist× validationnoneTemporalMediationEffect×TemporalDag×accepted×Frequentist× validationcheapTemporalMediationEffect×TemporalDag×accepted×Frequentist× validationfullTemporalMediationEffect×TemporalDag×graph_posterior×Frequentist× validationnoneTemporalMediationEffect×TemporalCpdag×explicit/accepted×Frequentist× validationnone/cheap/fullTemporalMediationEffect×TemporalDag×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullTemporalMediationEffect×TemporalCpdag×explicit/ `accep...
v1.9.0
Antecedent 1.9.0
Released 2026-09-15. Calibration of licensed intervals: every licensed cell was
reviewed for mathematical errors and for claims that exceed the code or the
evidence (cell review), and the intervals those
cells publish are now checked by repeated-sampling coverage. Intervals that
missed were fixed; where no fix was available the measured coverage is
published as a boundary record and disclosed at runtime. The
support matrix is the license. Short-series
measurements: short-series thresholds.
What changed
- Calibration gate.
scripts/gate_calibration.shruns 400 replicates
per target (200 for the bootstrap Hájek IPW target) against a two-sided
level ± 3·MCSEband (±4.5 points at 90%), so over-coverage fails as well
as under-coverage. Multi-atom targets use fixtures whose identified atoms
disagree; temporal targets add AR(1) residuals and series down to n = 60.
It runs weekly and on manual dispatch (.github/workflows/calibration.yml),
not ingate_release.sh. - Gated versus boundary. A gated cell asserts the band. A boundary record
is measured and printed but not asserted, and the result carries a warning
naming the scope: temporal response bands under AR(1) ρ = 0.9 residuals
(0.887–0.943 pointwise, 0.877 simultaneous at nominal 0.95) and a shift
response under a persistent AR(1) φ = 0.9 treatment
(response.temporal.block.persistence_boundary); short or persistent
series on the scalar temporal effects
(estimate.temporal.circular_block_se.short_series, thresholds per SE
family: 45 for Pulse / single-step Sustained, 40 for mediation and for
multi-step Sustained, 155 for mixtures); and misspecification probes (bayesian.gcompwith an omitted
term, the Gaussian-score ADE under a skewed treatment). - Serially dependent rows. Frequentist temporal SEs resample circular
blocks of lag-aligned rows with a dependence-aware block length (lengthened
when any estimating score, residuals included, is persistently dependent)
and a circular-Bartlett fixed-b factor and a Bartlett kernel-bias factor of
the estimating scores; iid analytic SEs are NaN. Temporal
response bands use their own dependence-aware rule and refit every horizon
on the same calendar times. Bayesian temporal likelihoods, including both
temporal mediation mechanisms, are tempered by a REML-fitted autoregressive
variance ratio with a residual-scale term and the factor's own delta-method
spread (a generalized posterior), calibrated for short-memory dependence —
AR(2), ARMA(1,1) and MA(2) at n = 60–400 — not long memory. - Fixes. The shared circular-block mixture SE was inflated
1.35–2.3×; temporal mediation omitted mediator–outcome confounders;
path-specific effects returned the total effect when another path existed
and the recanting-witness check over-refused; the linear-adjustment
influence function understated envelope SEs; AIPW ATT/ATC, Kennedy-DR band
and g-computation level SEs missed coverage; second point derivatives used
a local cubic where a local quartic is needed (order-2 coverage
0.695 → 0.880); identified-set intervals now use per-completion endpoints. - Missing data. Null Float64 cells (Arrow nulls, NumPy/pandas NaN) were
stored as 0.0 and could be read as observed zeros; a NaN built from raw f64
slices stayed valid. Both are now missing cells, dropped from complete-case
estimates like a missing row; temporal paths fail closed with
IncompleteSeries. - New licensed cells (330 → 341). Accepted-Dag
Counterfactual
(Frequentist and Bayesian,none); ADMGInterventionalDistribution
(explicit and accepted, Frequentist and Bayesian,none), whose Frequentist
atoms carry a logit-bounded probability interval (bounded to[0, 1], not a
partial-identification bound), Rust Study API only; single-horizon
Frequentist DBN-posteriorTemporalMediationEffect(none) with a shared
circular-block SE for the frozen-weight aggregate; explicit-Dag
AnomalyAttribution/ChangeAttribution(Frequentist,none); Admg
TransportQuerytrial-to-target IPW (Frequentist,none); and Dag
InterferenceQueryNeighborCount HT/Hájek (Frequentist,none, Young
variance). Attribution, transport, and interference are Rust Study API only.
Python root__all__is 52 names (AnomalyAttribution/
ChangeAttributionfor the query axis;analyze()refuses both).
Prepared panel Pulse/Sustained now prepare and refresh; panel responses stay
refused.
Behaviour changes
- Bayesian derivative credible intervals use exchangeable-rank quantiles and
a degrees-of-freedom inflation of the GAM-gradient draw spread; the
directional and order-2 derivative cells are gated at nominal. - Temporal response bands carry a per-cell kernel-bias factor and a
short-series warning; the shift response under a persistent treatment is now
gated, and AR(1) ρ=0.9 residuals remain a disclosed boundary whose long-run
ratio is not estimable at n ≤ 1000. - Production runs evaluate every requested bootstrap replicate and posterior
draw. The previous adaptive budget stopped static bootstraps at 10–24
replicates whatever was requested, so published SEs carried 15–22% Monte
Carlo error and the 50→199 default had no effect on static cells. Bootstrap
SEs are more precise and bootstrapped runs take roughly the replicate ratio
longer (8–17× at the default 199, single-threaded). rd.sharpreports the HC1 residual-sandwich SE by default; the
homoskedastic SE is an opt-in (RdConfig::with_se_kind; Python
estimator_config={"se_kind": ...}). Point estimates are unchanged;
se_analyticchanges for everyrd.sharpresult.- At the Interactive latency tier, graph atoms left out of the 16-atom
subsample are reported assubsampled_out_mass, not as unidentified mass,
and Bayesian graph-posterior and DBN-posterior ATE results are
GraphDependentwhenever unidentified or subsampled-out mass is present. - A graph posterior that lists the same DAG more than once weights it once by
its combined mass (it entered with k² times its per-sample weight). AnalyticSeKind::Hc2/Hc3on influence-function SE paths (AIPW, Wald
IV and others) return an error instead of the HC1 value;Hc0there now
computes the uncorrected sandwich.- NaN and null Float64 cells are missing, as above.
- The temporal mediation short-series warning fires below 40 score effective
rows (was 35). - The default bootstrap replicate count is 199 (was 50): the Rust
Study
default, the Pythonstandardlatency tier and untieredanalyze(). - Observation-adjusted Sequences whose unfolded design reads the outcome at a
nonzero lag are refused. - Frequentist multi-atom graph-posterior curves withhold their band; the
joint-IF SE is published only for a scalar aggregate.
Licensed cells
341 licensed of 1423 meaningful cells (1979 n/a typed impossibilities are not a coverage gap). 1073 refused with a reason on file; 9 refused without a reason; 0 active allowed_unlicensed compatibility entries.
AnomalyAttribution×Dag×explicit×Frequentist× validationnoneAverageDerivative×Dag×explicit/accepted×Frequentist× validationnoneAverageDerivative×Dag×explicit/accepted×Bayesian× validationnoneAverageEffect×Dag×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullAverageEffect×Admg/Cpdag/Pag×explicit/accepted×Frequentist× validationnone/cheap/fullAverageEffect×CoDetermined/Unknown×explicit×Frequentist× validationnoneAverageEffect×Dag×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullAverageEffect×Admg/Cpdag/Pag×explicit/accepted×Bayesian× validationnone/cheap/fullChangeAttribution×Dag×explicit×Frequentist× validationnoneConditionalEffect×Dag×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullConditionalEffect×Cpdag/Pag×explicit/accepted×Frequentist× validationnone/cheap/fullConditionalEffect×Dag×explicit/accepted/graph_posterior×Bayesian× validationnone/cheap/fullConditionalEffect×Cpdag/Pag×explicit/accepted×Bayesian× validationnone/cheap/fullCounterfactual×Dag×explicit/accepted×Frequentist× validationnoneCounterfactual×Dag×explicit/accepted×Bayesian× validationnoneDirectionalDerivative×Dag×explicit/accepted×Frequentist× validationnoneDirectionalDerivative×Dag×explicit/accepted×Bayesian× validationnoneElasticity×Dag×explicit/accepted×Frequentist× validationnoneElasticity×Dag×explicit/accepted×Bayesian× validationnoneInterventionalDistribution×Dag×explicit/accepted×Frequentist× validationnone/cheap/fullInterventionalDistribution×Admg×explicit/accepted×Frequentist× validationnoneInterventionalDistribution×Dag×explicit/accepted×Bayesian× validationnone/cheap/fullInterventionalDistribution×Admg×explicit/accepted×Bayesian× validationnoneInterventionResponse×Dag×explicit/accepted/graph_posterior×Frequentist× validationnone/cheap/fullInterventionResponse×Cpdag/Pag/TemporalDag/TemporalCpdag/TemporalPag×explicit/accepted×Frequentist× validationnoneInterventionResponse×CoDetermined×explicit×Frequentist× va...