Skip to content

Releases: iridae-dev/antecedent

v2.4.1

Choose a tag to compare

@github-actions github-actions released this 19 Oct 08:53
17e415c

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...

Read more

v2.4.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 09:31
5a05c03

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 ...
Read more

v2.3.0

Choose a tag to compare

@github-actions github-actions released this 11 Oct 09:53
61c2ab9

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...
Read more

v2.2.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 08:13
00e0208

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...
Read more

v2.1.1

Choose a tag to compare

@github-actions github-actions released this 30 Sep 10:28
203212f

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 × validation none
  • AnomalyAttribution × Dag × explicit × Bayesian × validation none
  • AverageDerivative × Dag × explicit / accepted × Frequentist × validation none
  • AverageDerivative × Dag × explicit / accepted × Bayesian × validation none
  • AverageEffect × Dag / Admg / Cpdag / Pag × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • AverageEffect × CoDetermined / Unknown × explicit × Frequentist × validation none
  • AverageEffect × Dag / Admg / Cpdag / Pag × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • ChangeAttribution × Dag × explicit × Frequentist × validation none
  • ChangeAttribution × Dag × explicit × Bayesian × validation none
  • ConditionalEffect × Dag / Cpdag / Pag × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • ConditionalEffect × Dag / Cpdag / Pag × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • Counterfactual × Dag × explicit / accepted × Frequentist × validation none
  • Counterfactual × Dag × explicit / accepted × Bayesian × validation none
  • DirectionalDerivative × Dag × explicit / accepted × Frequentist × validation none
  • DirectionalDerivative × Dag × explicit / accepted × Bayesian × validation none
  • Elasticity × Dag × explicit / accepted × Frequentist × validation none
  • Elasticity × Dag × explicit / accepted × Bayesian × validation none
  • InterventionalDistribution × Dag × explicit / accepted × Frequentist × validation none / cheap / full
  • InterventionalDistribution × Admg × explicit / accepted × Frequentist × validation none
  • InterventionalDistribution × Dag × explicit / accepted × Bayesian × validation none / cheap / full
  • InterventionalDistribution × Admg × explicit / accepted × Bayesian × validation none
  • InterventionResponse × Dag / Admg × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • InterventionResponse × Cpdag × explicit × Frequentist × validation none
  • InterventionResponse × Cpdag × accepted × Frequentist × validation none
  • InterventionResponse × Cpdag × graph_posterior × Frequentist × validation none
  • InterventionResponse × Cpdag × graph_posterior × Frequentist × validation cheap
  • InterventionResponse × Cpdag × graph_posterior × Frequentist × validation full
  • InterventionResponse × Pag × explicit × Frequentist × validation none
  • InterventionResponse × Pag × accepted × Frequentist × validation none
  • InterventionResponse × Pag × graph_posterior × Frequentist × validation none
  • InterventionResponse × Pag × graph_posterior × Frequentist × validation cheap
  • InterventionResponse × Pag × graph_posterior × Frequentist × validation full
  • InterventionResponse × TemporalDag × explicit × Frequentist × validation none
  • InterventionResponse × TemporalDag × accepted × Frequentist × validation none
  • InterventionResponse × TemporalDag × graph_posterior × Frequentist × validation none
  • InterventionResponse × TemporalDag × graph_posterior × Frequentist × validation cheap
  • InterventionResponse × TemporalDag × graph_posterior × Frequentist × validation full
  • InterventionResponse × TemporalCpdag × explicit × Frequentist × validation none
  • InterventionResponse × TemporalCpdag × accepted × Frequentist × validation none
  • InterventionResponse × TemporalCpdag × graph_posterior × Frequentist × validation none
  • InterventionResponse × TemporalCpdag × graph_posterior × Frequentist × validation cheap
  • InterventionResponse × TemporalCpdag × graph_posterior × Frequentist × validation full
  • InterventionResponse × TemporalPag × explicit × Frequentist × validation none
  • InterventionResponse × TemporalPag × accepted × Frequentist × validation none
  • InterventionResponse × TemporalPag × graph_posterior × Frequentist × validation none
  • InterventionResponse × TemporalPag × graph_posterior × Frequentist × validation cheap
  • InterventionResponse × TemporalPag × graph_posterior × Frequentist × validation full
  • InterventionResponse × CoDetermined × explicit × Frequentist × validation none
  • InterventionResponse × Dag × explicit / accepted / graph_posterior × Bayesian × validation none
  • InterventionResponse × Admg × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • InterventionResponse × Cpdag × explicit × Bayesian × validation none
  • InterventionResponse × Cpdag × accepted × Bayesian × validation none
  • InterventionResponse × Cpdag × graph_posterior × Bayesian × validation none
  • InterventionResponse × Cpdag × graph_posterior × Bayesian × validation cheap
  • InterventionResponse × Cpdag × graph_posterior × Bayesian × validation full
  • InterventionResponse × Pag × explicit × Bayesian × validation none
  • InterventionResponse × Pag × accepted × Bayesian × validation none
  • InterventionResponse × Pag × graph_posterior × Bayesian × validation none
  • InterventionResponse × Pag × graph_posterior × Bayesian × validation cheap
  • InterventionResponse × Pag × graph_posterior × Bayesian × validation full
  • InterventionResponse × TemporalDag × explicit × Bayesian × validation none
  • InterventionResponse × TemporalDag × accepted × Bayesian × validation none
  • InterventionResponse × TemporalDag × graph_posterior × Bayesian × validation none
  • InterventionResponse × TemporalDag × graph_posterior × Bayesian × validation cheap
  • InterventionResponse × TemporalDag × graph_posterior × Bayesian × validation full
  • InterventionResponse × TemporalCpdag × explicit × Bayesian × validation none
  • InterventionResponse × TemporalCpdag × accepted × Bayesian × validation none
  • InterventionResponse × TemporalCpdag × graph_posterior × Bayesian × validation none
  • InterventionResponse × TemporalCpdag × graph_posterior × Bayesian × validation `chea...
Read more

v2.1.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 12:26
955b020

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...

Read more

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 23 Sep 23:21
cb6bd54

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 × validation none
  • AverageDerivative × Dag × explicit / accepted × Frequentist × validation none
  • AverageDerivative × Dag × explicit / accepted × Bayesian × validation none
  • AverageEffect × Dag / Admg / Cpdag / Pag × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • AverageEffect × CoDetermined / Unknown × explicit × Frequentist × validation none
  • AverageEffect × Dag / Admg / Cpdag / Pag × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • ChangeAttribution × Dag × explicit × Frequentist × validation none
  • ConditionalEffect × Dag / Cpdag / Pag × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • ConditionalEffect × Dag / Cpdag / Pag × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • Counterfactual × Dag × explicit / accepted × Frequentist × validation none
  • Counterfactual × Dag × explicit / accepted × Bayesian × validation none
  • DirectionalDerivative × Dag × explicit / accepted × Frequentist × validation none
  • DirectionalDerivative × Dag × explicit / accepted × Bayesian × validation none
  • Elasticity × Dag × explicit / accepted × Frequentist × validation none
  • Elasticity × Dag × explicit / accepted × Bayesian × validation none
  • InterventionalDistribution × Dag × explicit / accepted × Frequentist × validation none / cheap / full
  • InterventionalDistribution × Admg × explicit / accepted × Frequentist × validation none
  • InterventionalDistribution × Dag × explicit / accepted × Bayesian × validation none / cheap / full
  • InterventionalDistribution × Admg × explicit / accepted × Bayesian × validation none
  • InterventionResponse × Dag / Admg × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • InterventionResponse × Cpdag × explicit × Frequentist × validation none
  • InterventionResponse × Cpdag × accepted × Frequentist × validation none
  • InterventionResponse × Cpdag × graph_posterior × Frequentist × validation none
  • InterventionResponse × Cpdag × graph_posterior × Frequentist × validation cheap
  • InterventionResponse × Cpdag × graph_posterior × Frequentist × validation full
  • InterventionResponse × Pag × explicit × Frequentist × validation none
  • InterventionResponse × Pag × accepted × Frequentist × validation none
  • InterventionResponse × Pag × graph_posterior × Frequentist × validation none
  • InterventionResponse × Pag × graph_posterior × Frequentist × validation cheap
  • InterventionResponse × Pag × graph_posterior × Frequentist × validation full
  • InterventionResponse × TemporalDag × explicit × Frequentist × validation none
  • InterventionResponse × TemporalDag × accepted × Frequentist × validation none
  • InterventionResponse × TemporalDag × graph_posterior × Frequentist × validation none
  • InterventionResponse × TemporalDag × graph_posterior × Frequentist × validation cheap
  • InterventionResponse × TemporalDag × graph_posterior × Frequentist × validation full
  • InterventionResponse × TemporalCpdag × explicit × Frequentist × validation none
  • InterventionResponse × TemporalCpdag × accepted × Frequentist × validation none
  • InterventionResponse × TemporalCpdag × graph_posterior × Frequentist × validation none
  • InterventionResponse × TemporalCpdag × graph_posterior × Frequentist × validation cheap
  • InterventionResponse × TemporalCpdag × graph_posterior...
Read more

v1.11.0

Choose a tag to compare

@github-actions github-actions released this 20 Sep 19:55
37c7b77

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_tests stays
    serial and scalar. User-sized benches live in this tree. Graph-posterior
    atoms and bootstrap replicate evaluation share one ctx.parallelism
    budget. result.refresh is 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 × validation none
  • AverageDerivative × Dag × explicit / accepted × Frequentist × validation none
  • AverageDerivative × Dag × explicit / accepted × Bayesian × validation none
  • AverageEffect × Dag / Admg / Cpdag / Pag × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • AverageEffect × CoDetermined / Unknown × explicit × Frequentist × validation none
  • AverageEffect × Dag / Admg / Cpdag / Pag × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • ChangeAttribution × Dag × explicit × Frequentist × validation none
  • ConditionalEffect × Dag / Cpdag / Pag × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • ConditionalEffect × Dag / Cpdag / Pag × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • Counterfactual × Dag × explicit / accepted × Frequentist × validation none
  • Counterfactual × Dag × explicit / accepted × Bayesian × validation none
  • DirectionalDerivative × Dag × explicit / accepted × Frequentist × validation none
  • DirectionalDerivative × Dag × explicit / accepted × Bayesian × validation none
  • Elasticity × Dag × explicit / accepted × Frequentist × validation none
  • Elasticity × Dag × explicit / accepted × Bayesian × validation none
  • InterventionalDistribution × Dag × explicit / accepted × Frequentist × validation none / cheap / full
  • InterventionalDistribution × Admg × explicit / accepted × Frequentist × validation none
  • InterventionalDistribution × Dag × explicit / accepted × Bayesian × validation none / cheap / full
  • InterventionalDistribution × Admg × explicit / accepted × Bayesian × validation none
  • InterventionResponse × Dag / Admg × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • InterventionResponse × Cpdag × explicit × Frequentist × validation none
  • InterventionResponse × Cpdag × accepted × Frequentist × validation none
  • InterventionResponse × Cpdag × graph_posterior × Frequentist × validation none
  • InterventionResponse × Cpdag × graph_posterior × Frequentist × validation cheap
  • InterventionResponse × Cpdag × graph_posterior × Frequentist × validation full
  • InterventionResponse × Pag × explicit × Frequentist × validation none
  • InterventionResponse × Pag × accepted × Frequentist × validation none
  • InterventionResponse × Pag × graph_posterior × Frequentist × validation none
  • InterventionResponse × Pag × graph_posterior × Frequentist × validation cheap
  • InterventionResponse × Pag × graph_posterior × Frequentist × validation full
  • InterventionResponse × TemporalDag × explicit × Frequentist × validation none
  • InterventionResponse × TemporalDag × accepted × Frequentist × validation none
  • InterventionResponse × TemporalDag × graph_posterior × Frequentist × validation none
  • InterventionResponse × TemporalDag × graph_posterior × Frequentist × validation cheap
  • InterventionResponse × TemporalDag × graph_posterior × Frequentist × validation full
  • InterventionResponse × TemporalCpdag × explicit × Frequentist × validation none
  • InterventionResponse × TemporalCpdag × accepted × Frequentist × validation none
  • InterventionResponse × TemporalCpdag × graph_posterior × Frequentist × validation none
  • InterventionResponse × TemporalCpdag × graph_posterior × Frequentist × validation cheap
  • InterventionResponse × TemporalCpdag × graph_posterior × Frequentist × validation full
  • InterventionResponse × TemporalPag × explicit × Frequentist × validation none
  • InterventionResponse × TemporalPag × accepted × Frequentist × validation none
  • InterventionResponse × TemporalPag × graph_posterior × Frequentist × validation none
  • InterventionResponse × TemporalPag × graph_posterior × Frequentist × validation cheap
  • InterventionResponse × TemporalPag × graph_posterior × Frequentist × validation full
  • InterventionResponse × CoDetermined × explicit × Frequentist × validation none
  • InterventionResponse × Dag / Cpdag / Pag × explicit / accepted / graph_posterior × Bayesian × validation none
  • InterventionResponse × Admg × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • InterventionResponse × TemporalDag × explicit × Bayesian × validation none
  • InterventionResponse × TemporalDag × accepted × Bayesian × validation none
  • InterventionResponse × TemporalDag × graph_posterior × Bayesian × validation none
  • InterventionResponse × TemporalDag × graph_posterior × Bayesian × validation cheap
  • InterventionResponse × TemporalDag × graph_posterior × Bayesian × validation full
  • InterventionResponse × TemporalCpdag × explicit × Bayesian × validation none
  • InterventionResponse × TemporalCpdag × accepted × Bayesian × validation none
  • InterventionResponse × TemporalCpdag × graph_posterior × Bayesian × validation none
  • InterventionResponse × TemporalCpdag × graph_posterior × Bayesian × validation cheap
  • InterventionResponse × TemporalCpdag × graph_posterior × Bayesian × validation full
  • InterventionResponse × TemporalPag × explicit × Bayesian × validation none
  • InterventionResponse × TemporalPag × accepted × Bayesian × validation none
  • InterventionResponse × TemporalPag × graph_posterior × Bayesian × validation none
  • InterventionResponse × TemporalPag × graph_posterior × Bayesian × validation cheap
  • InterventionResponse × TemporalPag × graph_posterior × Bayesian × validation full
  • MediationEffect × Dag × explicit / accepted × Frequentist × validation none / cheap / full
  • MediationEffect × Dag × explicit / accepted × Bayesian × validation none / cheap / full
  • PathSpecificEffect × Dag × explicit / accepted × Frequentist × validation none / cheap / full
  • PathSpecificEffect × Dag × explicit / accepted × Bayesian × validation none / cheap / full
  • PointDerivative × Dag × explicit / accepted × Frequentist × validation none
  • PointDerivative × Dag × explicit / accepted × Bayesian × validation none
  • PulseEffect × TemporalDag / TemporalCpdag / TemporalPag × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • PulseEffect × TemporalDag / TemporalCpdag / TemporalPag × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • ResponseCurve × Dag / Admg / Cpdag / Pag / TemporalDag / TemporalCpdag / TemporalPag × explicit / accepted / graph_posterior × Frequentist × validation none
  • ResponseCurve × Dag / Admg / Cpdag / Pag / TemporalDag / TemporalCpdag / TemporalPag × explicit / accepted / graph_posterior × Bayesian × validation none
  • ResponseJacobian × Dag × `expli...
Read more

v1.10.0

Choose a tag to compare

@github-actions github-actions released this 17 Sep 16:57
9cb4f24

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 contracted analysis_result artifacts.
  • Ordinary one-call analyses retain reusable studies. analyze is
    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_check on synthetic licensed-coordinate fixtures).
  • result.answer is the safe consumption interface. Historical .effect /
    .ate warn when a point display would misrepresent; they still return the
    scalar unless ANTECEDENT_STRICT_ANSWER=1. .posterior / .response
    remain accessible.
  • program_id is the compiled program. claim_id is 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 × validation none
  • AverageDerivative × Dag × explicit / accepted × Frequentist × validation none
  • AverageDerivative × Dag × explicit / accepted × Bayesian × validation none
  • AverageEffect × Dag × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • AverageEffect × Admg / Cpdag / Pag × explicit / accepted × Frequentist × validation none / cheap / full
  • AverageEffect × CoDetermined / Unknown × explicit × Frequentist × validation none
  • AverageEffect × Dag × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • AverageEffect × Admg / Cpdag / Pag × explicit / accepted × Bayesian × validation none / cheap / full
  • ChangeAttribution × Dag × explicit × Frequentist × validation none
  • ConditionalEffect × Dag × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • ConditionalEffect × Cpdag / Pag × explicit / accepted × Frequentist × validation none / cheap / full
  • ConditionalEffect × Dag × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • ConditionalEffect × Cpdag / Pag × explicit / accepted × Bayesian × validation none / cheap / full
  • Counterfactual × Dag × explicit / accepted × Frequentist × validation none
  • Counterfactual × Dag × explicit / accepted × Bayesian × validation none
  • DirectionalDerivative × Dag × explicit / accepted × Frequentist × validation none
  • DirectionalDerivative × Dag × explicit / accepted × Bayesian × validation none
  • Elasticity × Dag × explicit / accepted × Frequentist × validation none
  • Elasticity × Dag × explicit / accepted × Bayesian × validation none
  • InterventionalDistribution × Dag × explicit / accepted × Frequentist × validation none / cheap / full
  • InterventionalDistribution × Admg × explicit / accepted × Frequentist × validation none
  • InterventionalDistribution × Dag × explicit / accepted × Bayesian × validation none / cheap / full
  • InterventionalDistribution × Admg × explicit / accepted × Bayesian × validation none
  • InterventionResponse × Dag × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • InterventionResponse × Cpdag / Pag / TemporalDag / TemporalCpdag / TemporalPag × explicit / accepted × Frequentist × validation none
  • InterventionResponse × CoDetermined × explicit × Frequentist × validation none
  • InterventionResponse × Dag × explicit / accepted / graph_posterior × Bayesian × validation none
  • InterventionResponse × Cpdag / Pag / TemporalDag / TemporalCpdag / TemporalPag × explicit / accepted × Bayesian × validation none
  • MediationEffect × Dag × explicit / accepted × Frequentist × validation none / cheap / full
  • MediationEffect × Dag × explicit / accepted × Bayesian × validation none / cheap / full
  • PathSpecificEffect × Dag × explicit / accepted × Frequentist × validation none / cheap / full
  • PathSpecificEffect × Dag × explicit / accepted × Bayesian × validation none / cheap / full
  • PointDerivative × Dag × explicit / accepted × Frequentist × validation none
  • PointDerivative × Dag × explicit / accepted × Bayesian × validation none
  • PulseEffect × TemporalDag × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • PulseEffect × TemporalCpdag / TemporalPag × explicit / accepted × Frequentist × validation none / cheap / full
  • PulseEffect × TemporalDag × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • PulseEffect × TemporalCpdag / TemporalPag × explicit / accepted × Bayesian × validation none / cheap / full
  • ResponseCurve × Dag × explicit / accepted / graph_posterior × Frequentist × validation none
  • ResponseCurve × Cpdag / Pag / TemporalDag / TemporalCpdag / TemporalPag × explicit / accepted × Frequentist × validation none
  • ResponseCurve × Dag × explicit / accepted / graph_posterior × Bayesian × validation none
  • ResponseCurve × Cpdag / Pag / TemporalDag / TemporalCpdag / TemporalPag × explicit / accepted × Bayesian × validation none
  • ResponseJacobian × Dag × explicit / accepted × Frequentist × validation none
  • ResponseJacobian × Dag × explicit / accepted × Bayesian × validation none
  • SemiElasticity × Dag × explicit / accepted × Frequentist × validation none
  • SemiElasticity × Dag × explicit / accepted × Bayesian × validation none
  • SustainedEffect × TemporalDag × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • SustainedEffect × TemporalCpdag / TemporalPag × explicit / accepted × Frequentist × validation none / cheap / full
  • SustainedEffect × TemporalDag × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • SustainedEffect × TemporalCpdag / TemporalPag × explicit / accepted × Bayesian × validation none / cheap / full
  • TemporalMediationEffect × TemporalDag × explicit × Frequentist × validation none
  • TemporalMediationEffect × TemporalDag × explicit × Frequentist × validation cheap
  • TemporalMediationEffect × TemporalDag × explicit × Frequentist × validation full
  • TemporalMediationEffect × TemporalDag × accepted × Frequentist × validation none
  • TemporalMediationEffect × TemporalDag × accepted × Frequentist × validation cheap
  • TemporalMediationEffect × TemporalDag × accepted × Frequentist × validation full
  • TemporalMediationEffect × TemporalDag × graph_posterior × Frequentist × validation none
  • TemporalMediationEffect × TemporalCpdag × explicit / accepted × Frequentist × validation none / cheap / full
  • TemporalMediationEffect × TemporalDag × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • TemporalMediationEffect × TemporalCpdag × explicit / `accep...
Read more

v1.9.0

Choose a tag to compare

@github-actions github-actions released this 15 Sep 09:49
d63055b

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.sh runs 400 replicates
    per target (200 for the bootstrap Hájek IPW target) against a two-sided
    level ± 3·MCSE band (±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 in gate_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.gcomp with 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); ADMG InterventionalDistribution
    (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-posterior TemporalMediationEffect (none) with a shared
    circular-block SE for the frozen-weight aggregate; explicit-Dag
    AnomalyAttribution / ChangeAttribution (Frequentist, none); Admg
    TransportQuery trial-to-target IPW (Frequentist, none); and Dag
    InterferenceQuery NeighborCount HT/Hájek (Frequentist, none, Young
    variance). Attribution, transport, and interference are Rust Study API only.
    Python root __all__ is 52 names (AnomalyAttribution /
    ChangeAttribution for 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.sharp reports 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_analytic changes for every rd.sharp result.
  • At the Interactive latency tier, graph atoms left out of the 16-atom
    subsample are reported as subsampled_out_mass, not as unidentified mass,
    and Bayesian graph-posterior and DBN-posterior ATE results are
    GraphDependent whenever 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 / Hc3 on influence-function SE paths (AIPW, Wald
    IV and others) return an error instead of the HC1 value; Hc0 there 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 Python standard latency tier and untiered analyze().
  • 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 × validation none
  • AverageDerivative × Dag × explicit / accepted × Frequentist × validation none
  • AverageDerivative × Dag × explicit / accepted × Bayesian × validation none
  • AverageEffect × Dag × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • AverageEffect × Admg / Cpdag / Pag × explicit / accepted × Frequentist × validation none / cheap / full
  • AverageEffect × CoDetermined / Unknown × explicit × Frequentist × validation none
  • AverageEffect × Dag × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • AverageEffect × Admg / Cpdag / Pag × explicit / accepted × Bayesian × validation none / cheap / full
  • ChangeAttribution × Dag × explicit × Frequentist × validation none
  • ConditionalEffect × Dag × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • ConditionalEffect × Cpdag / Pag × explicit / accepted × Frequentist × validation none / cheap / full
  • ConditionalEffect × Dag × explicit / accepted / graph_posterior × Bayesian × validation none / cheap / full
  • ConditionalEffect × Cpdag / Pag × explicit / accepted × Bayesian × validation none / cheap / full
  • Counterfactual × Dag × explicit / accepted × Frequentist × validation none
  • Counterfactual × Dag × explicit / accepted × Bayesian × validation none
  • DirectionalDerivative × Dag × explicit / accepted × Frequentist × validation none
  • DirectionalDerivative × Dag × explicit / accepted × Bayesian × validation none
  • Elasticity × Dag × explicit / accepted × Frequentist × validation none
  • Elasticity × Dag × explicit / accepted × Bayesian × validation none
  • InterventionalDistribution × Dag × explicit / accepted × Frequentist × validation none / cheap / full
  • InterventionalDistribution × Admg × explicit / accepted × Frequentist × validation none
  • InterventionalDistribution × Dag × explicit / accepted × Bayesian × validation none / cheap / full
  • InterventionalDistribution × Admg × explicit / accepted × Bayesian × validation none
  • InterventionResponse × Dag × explicit / accepted / graph_posterior × Frequentist × validation none / cheap / full
  • InterventionResponse × Cpdag / Pag / TemporalDag / TemporalCpdag / TemporalPag × explicit / accepted × Frequentist × validation none
  • InterventionResponse × CoDetermined × explicit × Frequentist × va...
Read more