Skip to content
Development documentation. The PyPI package predates these APIs. Install from GitHub instead: pip install 'increment @ git+https://github.com/kylejcaron/increment.git' Keep any extras requested by the guide, such as increment[dashboard].

Method compatibility reference

Use the matrix to check support for a capability and metric type. Select a cell to see tested combinations with other methods. An unlisted combination is not evidence of support.

Capabilitymeanconversionratioretentionquantiletotalactive
breakout
cate
cluster
cuped
daily_asof
encouragement
estimate
export
from_moments
observational
report_calendar
report_window
rollout
sequential
sitewide

Capability interactions

CombinationStatusReason
breakout × observationalbreakout is not supported for an observational design
cluster × breakoutdoes not support breakout dimension 'seg'; declared breakouts: []
cluster × cupedcannot combine with a CUPED covariate
cluster × daily_asoffrom_unit_panel(cluster=...) is unavailable on a per-day panel
cluster × encouragementITT + additive LATE cluster-robust; CUPED and complier-relative LATE still refuse
cluster × exportwire format carries no cluster marker
cluster × observationaladjusted estimators cluster their variance
cluster × prioran informative prior is not supported with a declared cluster
cluster × sequentialclustered and observational sequential routes are unsupported
cluster × sitewidemean/conversion/retention/ratio decompose over cluster-grain moments via from_clusters. Clustered sitewide can miss treated units with no exposure row, so the relative-impact estimate is a lower bound; the absolute-impact point estimate is unaffected.
cuped × encouragementnumerator-only CUPED LATE
sequential × cupedasymptotic_mean registers adjusted_mean from retained (Y, X) moments. Admitted on InferenceSpec(kind='asymptotic_mean') only: the coefficient is fitted from retained joint moments at every look (Lindon et al. 2022). A pre-period coefficient is an alternative on the asymptotic scalar_mean route, not on AlwaysValid's exact Bernoulli route.
sequential × encouragementregistered raw ITT and Bernoulli uptake compliance. Support depends on the estimand: raw ITT and registered Bernoulli uptake compliance are supported; binary-uptake LATE is refused. Declare estimands explicitly.
sequential × observationalsequential likelihoods require a declared randomized or encouragement design

Detailed reference

breakout × mean: SUPPORTED

native run_breakout; frame sources refuse by substrate

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_breakout

Evidence source: probe

breakout × conversion: SUPPORTED

Probed end to end.

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_breakout

Evidence source: probe

breakout × ratio: SUPPORTED

Probed end to end.

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_breakout

Evidence source: probe

breakout × retention: SUPPORTED

native path; bounded band

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_breakout

Evidence source: probe

breakout × quantile: REFUSED

quantiles do not decompose over segment moments

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_breakout

Refusal code: readout.metric.quantile_breakout; exception: CapabilityError; fragment: quantiles do not decompose over segment moments

Evidence source: probe

breakout × total: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_breakout

Evidence source: probe

breakout × active: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_breakout

Evidence source: probe

cate × mean: SUPPORTED

Probed end to end.

Owner: increment.cate

Evidence: tests/test_composition_matrix.py::test_cate

Evidence source: probe

cate × conversion: SUPPORTED

Probed end to end.

Owner: increment.cate

Evidence: tests/test_composition_matrix.py::test_cate

Evidence source: probe

cate × ratio: REFUSED

estimate_cate does not support ratio metric

Owner: increment.cate

Evidence: tests/test_composition_matrix.py::test_cate

Refusal code: cate.does_support_ratio; exception: NotImplementedError; fragment: estimate_cate does not support ratio metric

Evidence source: probe

cate × retention: REFUSED

type='retention' is not supported on from_unit_summary

Owner: increment.cate

Evidence: tests/test_composition_matrix.py::test_cate

Refusal code: unavailable; exception: ValueError; fragment: type='retention' is not supported on from_unit_summary

Evidence source: probe

cate × quantile: REFUSED

CATE is not supported for quantile metric

Owner: increment.cate

Evidence: tests/test_composition_matrix.py::test_cate

Refusal code: cate.cate_supported_quantile; exception: NotImplementedError; fragment: CATE is not supported for quantile metric

Evidence source: probe

cate × total: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.cate

Evidence: tests/test_composition_matrix.py::test_cate

Evidence source: probe

cate × active: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.cate

Evidence: tests/test_composition_matrix.py::test_cate

Evidence source: probe

cluster × mean: SUPPORTED

>=40 clusters keeps the small-K advisory out of this cell

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_cluster

Evidence source: probe

cluster × conversion: SUPPORTED

Probed end to end.

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_cluster

Evidence source: probe

cluster × ratio: SUPPORTED

den family carries the metric's own per-cluster denominator

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_cluster

Evidence source: probe

cluster × retention: SUPPORTED

native path; declared Experiment.cluster

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_cluster

Evidence source: probe

cluster × quantile: REFUSED

not supported for quantile metrics

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_cluster

Refusal code: source.frame.cluster_capability; exception: CapabilityError; fragment: not supported for quantile metrics

Evidence source: probe

cluster × total: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_cluster

Evidence source: probe

cluster × active: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_cluster

Evidence source: probe

cuped × mean: SUPPORTED

Probed end to end.

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_cuped

Evidence source: probe

cuped × conversion: SUPPORTED

Probed end to end.

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_cuped

Evidence source: probe

cuped × ratio: SUPPORTED

numerator and denominator each adjusted; induced covariance retained

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_cuped

Evidence source: probe

cuped × retention: SUPPORTED

native path via Experiment.n_pre_periods

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_cuped

Evidence source: probe

cuped × quantile: REFUSED

CUPED does not apply to quantile

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_cuped

Refusal code: frame.metric.cuped_does_apply; exception: ValueError; fragment: CUPED does not apply to quantile

Evidence source: probe

cuped × total: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_cuped

Evidence source: probe

cuped × active: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_cuped

Evidence source: probe

daily_asof × mean: SUPPORTED

panel daily grain

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_daily_asof

Evidence source: probe

daily_asof × conversion: SUPPORTED

Probed end to end.

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_daily_asof

Evidence source: probe

daily_asof × ratio: SUPPORTED

Probed end to end.

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_daily_asof

Evidence source: probe

daily_asof × retention: SUPPORTED

native as-of view; the independent-per-day view refuses by design

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_daily_asof

Evidence source: probe

daily_asof × quantile: REFUSED

quantiles do not decompose into per-day moments

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_daily_asof

Refusal code: readout.metric.quantile_grain; exception: CapabilityError; fragment: quantiles do not decompose into per-day moments

Evidence source: probe

daily_asof × total: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_daily_asof

Evidence source: probe

daily_asof × active: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_daily_asof

Evidence source: probe

encouragement × mean: SUPPORTED

Probed end to end.

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_encouragement

Evidence source: probe

encouragement × conversion: SUPPORTED

Probed end to end.

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_encouragement

Evidence source: probe

encouragement × ratio: REFUSED

LATE is not supported for ratio metric

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_encouragement

Refusal code: estimation.encouragement.late.ratio; exception: NotImplementedError; fragment: LATE is not supported for ratio metric

Evidence source: probe

encouragement × retention: REFUSED

type='retention' is not supported on from_unit_summary

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_encouragement

Refusal code: unavailable; exception: ValueError; fragment: type='retention' is not supported on from_unit_summary

Evidence source: probe

encouragement × quantile: REFUSED

have no moments representation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_encouragement

Refusal code: breakout.quantile; exception: CapabilityError; fragment: have no moments representation

Evidence source: probe

encouragement × total: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_encouragement

Evidence source: probe

encouragement × active: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_encouragement

Evidence source: probe

estimate × mean: SUPPORTED

Probed end to end.

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_estimate

Evidence source: probe

estimate × conversion: SUPPORTED

Probed end to end.

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_estimate

Evidence source: probe

estimate × ratio: SUPPORTED

Probed end to end.

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_estimate

Evidence source: probe

estimate × retention: SUPPORTED

native path; the frame summary seam refuses (pinned separately)

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_estimate

Evidence source: probe

estimate × quantile: SUPPORTED

served through unit_frame, not moments

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_estimate

Evidence source: probe

estimate × total: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_estimate

Evidence source: probe

estimate × active: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_estimate

Evidence source: probe

export × mean: SUPPORTED

Probed end to end.

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_export

Evidence source: probe

export × conversion: SUPPORTED

Probed end to end.

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_export

Evidence source: probe

export × ratio: SUPPORTED

Probed end to end.

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_export

Evidence source: probe

export × retention: SUPPORTED

guardrail rows ride the export

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_export

Evidence source: probe

export × quantile: REFUSED

no moments representation

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_export

Refusal code: source.native.operation; exception: CapabilityError; fragment: no moments representation

Evidence source: probe

export × total: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_export

Evidence source: probe

export × active: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_export

Evidence source: probe

from_moments × mean: SUPPORTED

Probed end to end.

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_from_moments

Evidence source: probe

from_moments × conversion: SUPPORTED

Probed end to end.

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_from_moments

Evidence source: probe

from_moments × ratio: SUPPORTED

denominator moment family rides the wire

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_from_moments

Evidence source: probe

from_moments × retention: SUPPORTED

explicit MetricSpec re-declare round-trips a real export; the terse form refuses pointing at the explicit form

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_from_moments

Evidence source: probe

from_moments × quantile: REFUSED

needs unit-grain rows

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_from_moments

Refusal code: source.moments.unit_grain; exception: CapabilityError; fragment: needs unit-grain rows

Evidence source: probe

from_moments × total: NOT APPLICABLE

no MetricSpec type exists; the terse form refuses by name

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_from_moments

Evidence source: probe

from_moments × active: NOT APPLICABLE

no MetricSpec type exists; the terse form refuses by name

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_from_moments

Evidence source: probe

observational × mean: SUPPORTED

iptw, dml and aipw all probed

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_observational

Evidence source: probe

observational × conversion: SUPPORTED

Probed end to end.

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_observational

Evidence source: probe

observational × ratio: REFUSED

is not supported for ratio metric

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_observational

Refusal code: estimation.adjust_common.supported_ratio_metric; exception: UnsupportedRequestError; fragment: is not supported for ratio metric

Evidence source: probe

observational × retention: REFUSED

type='retention' is not supported on from_unit_summary

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_observational

Refusal code: unavailable; exception: ValueError; fragment: type='retention' is not supported on from_unit_summary

Evidence source: probe

observational × quantile: REFUSED

has no moment representation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_observational

Refusal code: source.frame.quantile_no_moments; exception: CapabilityError; fragment: has no moment representation

Evidence source: probe

observational × total: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_observational

Evidence source: probe

observational × active: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_observational

Evidence source: probe

report_calendar × mean: SUPPORTED

Probed end to end.

Owner: increment.reporting

Evidence: tests/test_composition_matrix.py::test_report_calendar

Evidence source: probe

report_calendar × conversion: SUPPORTED

Probed end to end.

Owner: increment.reporting

Evidence: tests/test_composition_matrix.py::test_report_calendar

Evidence source: probe

report_calendar × ratio: SUPPORTED

point-only: value is served, the interval is NULL

Owner: increment.reporting

Evidence: tests/test_composition_matrix.py::test_report_calendar

Evidence source: probe

report_calendar × retention: REFUSED

retention needs a cohort anchor

Owner: increment.reporting

Evidence: tests/test_composition_matrix.py::test_report_calendar

Refusal code: report.metric.unsupported; exception: CapabilityError; fragment: retention needs a cohort anchor

Evidence source: probe

report_calendar × quantile: REFUSED

no moments representation

Owner: increment.reporting

Evidence: tests/test_composition_matrix.py::test_report_calendar

Refusal code: report.metric.unsupported; exception: CapabilityError; fragment: no moments representation

Evidence source: probe

report_calendar × total: SUPPORTED

value only; n and the interval are NULL by design

Owner: increment.reporting

Evidence: tests/test_composition_matrix.py::test_report_calendar

Evidence source: probe

report_calendar × active: SUPPORTED

value only; n and the interval are NULL by design

Owner: increment.reporting

Evidence: tests/test_composition_matrix.py::test_report_calendar

Evidence source: probe

report_window × mean: REFUSED

rolling window= applies to total/active metrics only

Owner: increment.reporting

Evidence: tests/test_composition_matrix.py::test_report_window

Refusal code: report.metric.unsupported; exception: CapabilityError; fragment: rolling window= applies to total/active metrics only

Evidence source: probe

report_window × conversion: REFUSED

rolling window= applies to total/active metrics only

Owner: increment.reporting

Evidence: tests/test_composition_matrix.py::test_report_window

Refusal code: report.metric.unsupported; exception: CapabilityError; fragment: rolling window= applies to total/active metrics only

Evidence source: probe

report_window × ratio: REFUSED

rolling window= applies to total/active metrics only

Owner: increment.reporting

Evidence: tests/test_composition_matrix.py::test_report_window

Refusal code: report.metric.unsupported; exception: CapabilityError; fragment: rolling window= applies to total/active metrics only

Evidence source: probe

report_window × retention: REFUSED

retention needs a cohort anchor

Owner: increment.reporting

Evidence: tests/test_composition_matrix.py::test_report_window

Refusal code: report.metric.unsupported; exception: CapabilityError; fragment: retention needs a cohort anchor

Evidence source: probe

report_window × quantile: REFUSED

no moments representation

Owner: increment.reporting

Evidence: tests/test_composition_matrix.py::test_report_window

Refusal code: report.metric.unsupported; exception: CapabilityError; fragment: no moments representation

Evidence source: probe

report_window × total: SUPPORTED

Probed end to end.

Owner: increment.reporting

Evidence: tests/test_composition_matrix.py::test_report_window

Evidence source: probe

report_window × active: SUPPORTED

Probed end to end.

Owner: increment.reporting

Evidence: tests/test_composition_matrix.py::test_report_window

Evidence source: probe

rollout × mean: SUPPORTED

priced over run_breakout output; relative log moments only

Owner: increment.breakout.rollout

Evidence: tests/test_composition_matrix.py::test_rollout

Evidence source: probe

rollout × conversion: SUPPORTED

Probed end to end.

Owner: increment.breakout.rollout

Evidence: tests/test_composition_matrix.py::test_rollout

Evidence source: probe

rollout × ratio: SUPPORTED

the ratio's own relative log moments carry it, like any other type

Owner: increment.breakout.rollout

Evidence: tests/test_composition_matrix.py::test_rollout

Evidence source: probe

rollout × retention: SUPPORTED

native path; a guardrail's segments price like any other

Owner: increment.breakout.rollout

Evidence: tests/test_composition_matrix.py::test_rollout

Evidence source: probe

rollout × quantile: NOT APPLICABLE

no quantile BreakoutEstimate can exist: breakout refuses at the segment-moment seam, and this capability consumes that output only

Owner: increment.breakout.rollout

Evidence: tests/test_composition_matrix.py::test_rollout

Evidence source: probe

rollout × total: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.breakout.rollout

Evidence: tests/test_composition_matrix.py::test_rollout

Evidence source: probe

rollout × active: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.breakout.rollout

Evidence: tests/test_composition_matrix.py::test_rollout

Evidence source: probe

sequential × mean: REFUSED

public sequential plans admits Bernoulli or registered asymptotic mean, adjusted mean and ratio observations. This probe uses a Gaussian likelihood registration. Use InferenceSpec(kind='asymptotic_mean') for qualified asymptotic continuous-mean sequential inference.

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_sequential

Refusal code: sequential.route.unsupported; exception: CapabilityError; fragment: public sequential plans admits Bernoulli or registered asymptotic mean, adjusted mean and ratio observations

Evidence source: probe

sequential × conversion: SUPPORTED

registered raw Bernoulli likelihood

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_sequential

Evidence source: probe

sequential × ratio: REFUSED

public sequential plans admits Bernoulli or registered asymptotic mean, adjusted mean and ratio observations. This probe uses the exact Gaussian ratio likelihood, which remains a private diagnostic. Use InferenceSpec(kind='asymptotic_mean') for the qualified asymptotic ratio_mean law (see the sequential x cuped pair).

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_sequential

Refusal code: sequential.route.unsupported; exception: CapabilityError; fragment: public sequential plans admits Bernoulli or registered asymptotic mean, adjusted mean and ratio observations

Evidence source: probe

sequential × retention: SUPPORTED

native finalized bounded retention with Bernoulli likelihood

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_sequential

Evidence source: probe

sequential × quantile: REFUSED

quantiles need a matching sequential sampling proof

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_sequential

Refusal code: sequential.route.unsupported; exception: CapabilityError; fragment: quantiles need a matching sequential sampling proof

Evidence source: probe

sequential × total: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_sequential

Evidence source: probe

sequential × active: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_sequential

Evidence source: probe

sitewide × mean: SUPPORTED

Probed end to end.

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_sitewide

Evidence source: probe

sitewide × conversion: SUPPORTED

Probed end to end.

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_sitewide

Evidence source: probe

sitewide × ratio: SUPPORTED

numerator and denominator get independent site sums

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_sitewide

Evidence source: probe

sitewide × retention: REFUSED

site volume is undefined for a retention metric

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_sitewide

Refusal code: query.builders.site_volume_metric_type; exception: CapabilityError; fragment: site volume is undefined for a retention metric

Evidence source: probe

sitewide × quantile: REFUSED

site volume is undefined for a quantile metric

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_sitewide

Refusal code: query.builders.site_volume_metric_type; exception: CapabilityError; fragment: site volume is undefined for a quantile metric

Evidence source: probe

sitewide × total: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_sitewide

Evidence source: probe

sitewide × active: NOT APPLICABLE

report-layer type: refused by MetricSpec and by experiment validation

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_sitewide

Evidence source: probe

breakout × observational: REFUSED

breakout is not supported for an observational design

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_capability_pairs

Refusal code: readout.view.observational; exception: NotImplementedError; fragment: breakout is not supported for an observational design

Evidence source: probe

cluster × breakout: REFUSED

does not support breakout dimension 'seg'; declared breakouts: []

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_capability_pairs

Refusal code: readout.source.dimension; exception: CapabilityError; fragment: does not support breakout dimension 'seg'; declared breakouts: []

Evidence source: probe

cluster × cuped: REFUSED

cannot combine with a CUPED covariate

Owner: increment._frame_validation

Evidence: tests/test_composition_matrix.py::test_capability_pairs

Refusal code: source.frame.cluster_capability; exception: CapabilityError; fragment: cannot combine with a CUPED covariate

Evidence source: probe

cluster × daily_asof: REFUSED

from_unit_panel(cluster=...) is unavailable on a per-day panel

Owner: increment.frame

Evidence: tests/test_composition_matrix.py::test_capability_pairs

Refusal code: source.frame_panel.cluster_grain; exception: CapabilityError; fragment: from_unit_panel(cluster=...) is unavailable on a per-day panel

Evidence source: probe

cluster × encouragement: SUPPORTED

ITT + additive LATE cluster-robust; CUPED and complier-relative LATE still refuse

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_capability_pairs

Evidence source: probe

cluster × export: REFUSED

wire format carries no cluster marker

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_capability_pairs

Refusal code: source.moments.cluster_grain; exception: CapabilityError; fragment: wire format carries no cluster marker

Evidence source: probe

cluster × observational: SUPPORTED

adjusted estimators cluster their variance

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_capability_pairs

Evidence source: probe

cluster × prior: REFUSED

an informative prior is not supported with a declared cluster

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_capability_pairs

Refusal code: arm.adjustment.cluster_prior; exception: CapabilityError; fragment: an informative prior is not supported with a declared cluster

Evidence source: probe

cluster × sequential: REFUSED

clustered and observational sequential routes are unsupported

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_capability_pairs

Refusal code: sequential.route.unsupported; exception: CapabilityError; fragment: clustered and observational sequential routes are unsupported

Evidence source: probe

cluster × sitewide: LIMITED

mean/conversion/retention/ratio decompose over cluster-grain moments via from_clusters. Clustered sitewide can miss treated units with no exposure row, so the relative-impact estimate is a lower bound; the absolute-impact point estimate is unaffected.

Owner: increment.analysis

Evidence: tests/test_composition_matrix.py::test_capability_pairs

Evidence source: probe

cuped × encouragement: SUPPORTED

numerator-only CUPED LATE

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_capability_pairs

Evidence source: probe

sequential × cuped: LIMITED

asymptotic_mean registers adjusted_mean from retained (Y, X) moments. Admitted on InferenceSpec(kind='asymptotic_mean') only: the coefficient is fitted from retained joint moments at every look (Lindon et al. 2022). A pre-period coefficient is an alternative on the asymptotic scalar_mean route, not on AlwaysValid's exact Bernoulli route.

Owner: increment.sequential_source

Evidence: tests/test_composition_matrix.py::test_capability_pairs

Evidence source: probe

sequential × encouragement: LIMITED

registered raw ITT and Bernoulli uptake compliance. Support depends on the estimand: raw ITT and registered Bernoulli uptake compliance are supported; binary-uptake LATE is refused. Declare estimands explicitly.

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_capability_pairs

Evidence source: probe

sequential × observational: REFUSED

sequential likelihoods require a declared randomized or encouragement design

Owner: increment.readouts

Evidence: tests/test_composition_matrix.py::test_capability_pairs

Refusal code: sequential.route.unsupported; exception: CapabilityError; fragment: sequential likelihoods require a declared randomized or encouragement design

Evidence source: probe

always-valid-quantile

Context: Family Role: primary, Inference: always valid, Multiplicity: disabled

Runtime: REFUSED; Family: NOT APPLICABLE

Quantile sequential inference has no matching raw likelihood and is refused before data.

Alternative: Use fixed-horizon quantile inference.

Evidence

  • integration: tests/test_analysis_quantile.py::test_declared_plan_always_valid_inference_reaches_quantile_readout
  • integration: tests/estimation/test_quantile_sequential_coverage.py::test_quantile_sequential_historical_tail_grid_refuses_before_outcomes

Contract provenance: arm_moments (contract); plan_family (contract, ref=plan_family)

Findings

  • arm_moments: runtime=REFUSED; refusal code: arm.metric.quantile_sequential
  • plan_family: runtime=LIMITED; warning: metric 'latency': quantile sequential inference is refused because the registered Beta/NIG/NIW likelihoods target means and ratios of means. Use fixed-horizon quantile inference.; reference: plan_family
always-valid-quantile-secondary-family

Context: Family Role: secondary, Inference: always valid, Multiplicity: enabled

Runtime: REFUSED; Family: EXCLUDED

The unsupported quantile likelihood refuses the analysis before family evidence.

Alternative: Use fixed-horizon quantile inference for family participation.

Evidence

  • unit: tests/test_plan_resolver.py::TestAlwaysValidQuantileWarning::test_quantile_refuses_before_plan_can_claim_sequential_evidence
  • integration: tests/test_analysis_quantile.py::test_declared_plan_always_valid_inference_reaches_quantile_readout

Contract provenance: arm_moments (contract); plan_family (contract, ref=plan_family)

Findings

  • arm_moments: runtime=REFUSED; refusal code: arm.metric.quantile_sequential
  • plan_family: runtime=LIMITED; warning: metric 'latency': quantile sequential inference is refused because the registered Beta/NIG/NIW likelihoods target means and ratios of means. Use fixed-horizon quantile inference.; reference: plan_family