Skip to content

v2.4.1

Latest

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. Released artifact formats and identities remain available, while new method versions and explicitly requested construction options carry their own identities. Parent-set sources retain a replay path for the earlier half-split procedure. A record for one method version does not attest another.

Nested cohort artifact replay preserves the verified compact model container byte for byte after semantic validation. Previously, replay rebuilt its header with the current package version and could reject an otherwise valid older cohort body. The existing 2.4.0 cohort golden remains unchanged.

Statistical interval claims require a currently attesting record at the actual construction and scope. A computed interval or a passing artifact integrity check alone does not supply that authority.

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

Claims by cell

sample split parent set effect

Claim: point_only

  • Question: After discovery on three quarters of a table of ten to twenty variables, when only the treatment's parent set is unambiguous, what is the total effect (linear study) or intervention mean ratio (log-linear study) of a treatment on an outcome estimated by parent adjustment on the disjoint remaining quarter, with the unrelated undirected edges preserved, and over which measured family of generating processes does its interval cover the truth?
  • Scope: A static float64 table of ten to twenty searched variables, connected, of maximum degree at most four, whose generating DAG is linear Gaussian (log-normal on the original scale for a log-linear study), causally sufficient and strongly faithful, with every edge incident to the treatment oriented in its equivalence class.
  • Guarantee: whole_method_coverage_of_the_true_effect_measured_over_a_declared_family_never_a_per_dataset_recovery_statement.
  • Bounds: min_variables = 10, max_variables = 20.
  • Interval: withheld. The interval route is closed (cell_not_licensed) until its coverage records are measured; the result is the point only.

participant family

Claim: none

  • Question: What is the posterior, the decision and the time-uniform frequentist reading at each look of an adaptive experiment whose participants give several binary responses, under historical informative priors, Thompson allocation with a minimum exploration probability, and expected-loss, futility and recruitment-cap decisions, and does a retained history replay under the declared procedure?
  • Scope: Not applicable: a property of the declared collection procedure and the retained history.
  • Guarantee: design_effect_posterior_and_per_look_confidence_sequences_with_replayable_history_derived_unmeasured_no_coverage.
  • Bounds: max_arms = 4, max_responses_per_participant = 32, max_looks = 64, max_units = 65535, max_outcome_lag = 32, max_historical_sources = 16, max_historical_trials = 100000, max_replications = 1000000.

generalized propensity aipw

Claim: calibrated

  • Question: Can the contrast between two levels of a multi-level observational treatment be consumed with the population it speaks for stated, either the whole population (generalized-propensity standardization) or the subpopulation at the two levels (pairwise)?
  • Scope: No graph is identified or checked: the caller owns that the declared adjustment columns are a valid adjustment set for the multi-level treatment.
  • Guarantee: multi_level_treatment_contrast_with_stated_target_population_interval_at_exact_measured_full_population_scope.
  • Bounds: none declared.

randomized missing outcomes

Claim: point_only

  • Question: Can the intention-to-treat contrast of a randomized trial, a panel difference-in-differences, a lagged temporal effect or a NOTEARS graph be consumed when some values are missing, with the policy that handled them, the assumption it needs and the rows it dropped or reweighted stated?
  • Scope: No graph is identified or checked for the randomized and panel designs; the caller owns the declared observation covariates and, for temporal estimation, the lagged graph.
  • Guarantee: declared_missing_data_policy_with_stated_assumption_and_row_accounting_point_only_variance_unmeasured.
  • Bounds: none declared.

sampling weights

Claim: point_only

  • Question: Can an effect be estimated in the population that declared sampling weights represent, with the estimand, the normalization, the uncertainty construction and the effective sample size stated, for the linear, propensity, augmented, matching, randomized-trial, panel difference-in-differences and temporal routes?
  • Scope: No graph is identified or checked beyond what each route already requires: the caller owns that the declared adjustment columns are a valid adjustment set, that a randomized assignment mechanism is as declared and that parallel untreated trends hold for a panel.
  • Guarantee: weighted_population_effect_with_with_replacement_linearized_standard_error_point_only_interval_unmeasured.
  • Bounds: none declared.

observational survival effect

Claim: point_only

  • Question: Can the effect of an observed binary treatment on a right-censored event time, as a survival-probability difference and a restricted-mean-survival-time difference at a declared horizon, be consumed with its censoring assumption and positivity stated?
  • Scope: No graph is identified or checked: the caller owns that the declared adjustment columns are a valid adjustment set for the binary treatment.
  • Guarantee: observational_survival_effect_at_declared_horizon_with_declared_censoring_assumption_point_only_standard_error_unmeasured.
  • Bounds: none declared.

observational policy value

Claim: point_only

  • Question: Can the value of a treatment policy be estimated from observational data over a declared treatment support, with the policy evaluated on rows independent of its learning, or by cross-fitted learning when it is learned on the same data?
  • Scope: No graph is identified or checked: the caller owns that the declared adjustment columns are a valid adjustment set for the treatment.
  • Guarantee: observational_policy_value_under_declared_support_and_evaluation_point_only_standard_error_unmeasured.
  • Bounds: none declared.

model.graph falsification

Claim: none

  • Question: Is a declared causal DAG better than random relabellings of its own nodes at agreeing with the conditional independencies in the data, and can that comparison separate it from them at all?
  • Scope: A caller-declared static DAG over the observed columns of the data; causal sufficiency and no selection are assumed.
  • Guarantee: graph_node_permutation_comparison_of_local_markov_violations_diagnostic_no_error_rate_claim.
  • Bounds: max_permutations = 100000.

attribution.intrinsic influence

Claim: none

  • Question: How much of a target's variance is each upstream noise term (and the target's own) responsible for, and how well is that split determined by the simulation, the permutation sample and the fitted mechanisms separately?
  • Scope: A caller-declared static DAG with fitted mechanisms and mutually independent exogenous noise terms; bidirected edges and latent common causes are refused.
  • Guarantee: variance_shapley_of_noise_terms_unbiased_nested_coalition_values_component_standard_errors_uncalibrated.
  • Bounds: max_exact_players = 10.

uncertainty

Claim: calibrated

  • Question: Which uncertainty does a published scalar actually use, and which exact endpoint constructions have their own repeated-sampling evidence?
  • Scope: Only the graph classes of the allocated records; this endpoint rule identifies no graph.
  • Guarantee: published_scalar_endpoint_rule_with_exact_currently_attesting_method_scope_no_universal_standard_error_coverage.
  • Bounds: none declared.

Explicit refusals

No root query is without a licensed cell.

See the support matrix.

Analysis support changes since 2.4.0

Changes to generic analysis support since 2.4.0: 0 added coordinates, 0 removed coordinates.

The generic analysis grid is unchanged. The new typed workflows and method-specific inference scopes are described above; they do not expand this grid.

See the support matrix for the complete current inventory and interval standing.

What's Changed

  • Fix private test dependency packaging and recover v2.4.0 publication by @nulldiver in #65
  • Keep workspace dependency pins correct when bumping release versions by @nulldiver in #66
  • Declare UTF-8 in release test fixtures for portable CI checks by @nulldiver in #67
  • release: Prepare Antecedent 2.4.1 with calibrated inference and transport workflows by @nulldiver in #68

Full Changelog: v2.4.0...v2.4.1