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.
| Capability | mean | conversion | ratio | retention | quantile | total | active |
|---|---|---|---|---|---|---|---|
| breakout | |||||||
| cate | |||||||
| cluster | |||||||
| cuped | |||||||
| daily_asof | |||||||
| encouragement | |||||||
| estimate | |||||||
| export | |||||||
| from_moments | |||||||
| observational | |||||||
| report_calendar | |||||||
| report_window | |||||||
| rollout | |||||||
| sequential | |||||||
| sitewide |
Capability interactions
| Combination | Status | Reason |
|---|---|---|
| breakout × observational | breakout is not supported for an observational design | |
| cluster × breakout | does not support breakout dimension 'seg'; declared breakouts: [] | |
| cluster × cuped | cannot combine with a CUPED covariate | |
| cluster × daily_asof | from_unit_panel(cluster=...) is unavailable on a per-day panel | |
| cluster × encouragement | ITT + additive LATE cluster-robust; CUPED and complier-relative LATE still refuse | |
| cluster × export | wire format carries no cluster marker | |
| cluster × observational | adjusted estimators cluster their variance | |
| cluster × prior | an informative prior is not supported with a declared cluster | |
| cluster × sequential | clustered and observational sequential routes are unsupported | |
| cluster × sitewide | 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. | |
| cuped × encouragement | numerator-only CUPED LATE | |
| sequential × cuped | 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. | |
| sequential × encouragement | 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. | |
| sequential × observational | sequential 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