tsfm-lens · cross-architecture comparison

TimesFM vs Chronos-2 vs Sundial vs Chronos-Bolt

Concept Atlas — TimesFM 2.5, Chronos-2, Sundial, Chronos-Bolt  · run concept_atlas_v2 · 2026-09-29 · 965 series · 5 families · context 512 · horizon 64 · window 32
Headline: fairness card + L0 + confirmed findings only · Standard: this report as written · Methods: every collapsed detail expanded

At a glance

Scorecard

This is a summary of conclusions drawn from the sections below — it introduces no evidence of its own. Every headline question this run has an artifact for appears as a measured value, the reference it is compared with, and the rule that produced the verdict; each row is computed from the same artifact as the section it summarizes, and that section is where the figures, the caveats and the full numbers are. The rule is printed so a reader can apply a different one to the same numbers; the verdict column is derived from it and is not written by hand anywhere.

Show the 33 scored rows
MeasureMeasuredCompared againstRuleVerdict
Lowest overall MASE (Chronos-2)1.691 MASE1.761 MASE
next-best model (TimesFM)
value < reference (lower is better)better
What does this mean?

MASE is scale-free (each series' error over its own naive-forecast error), so it is comparable across families; it rewards point accuracy only, not calibration.

model mase
Chronos-2 1.691
TimesFM 1.761
Sundial 1.950
Chronos-Bolt 2.151
Data families where one model separates significantly (1 of 5)1 family1 family
one family (the minimum for any family-level claim)
value ≥ 1meets
What does this mean?

Holm-corrected at α=0.05; a family absent from this count is one where the models were not distinguished, not one where they were equal. `power_state` is the third reading a non-detection needs: 'detected' vs. 'not detected, adequately powered' (a stated MDE this run could have caught) vs. 'not detected, underpowered or unsatisfiable' (no MDE is even computable at this n / n_boot).

family favored mase_ratio p_holm power_state
mixture Chronos-2 1.105 0.015 detected
block_bootstrap none 1.003 1.000 not detected, adequately powered (MDE=0.039)
parametric none 1.029 1.000 not detected, adequately powered (MDE=0.165)
random_parametric none 1.029 1.000 not detected, adequately powered (MDE=0.142)
sequential_par none 0.967 1.000 not detected, adequately powered (MDE=0.078)
Best model beats a trivial (no-skill) forecast (block_bootstrap)1.533 MASE2.262 MASE
better of naive-1 / seasonal-naive on this family (__seasonal_naive__)
value < reference (lower is better)better
What does this mean?

`mase` ≈ 1.0 for naive-1 under the default `mean_abs_diff` scale is true by construction, not a discovery -- the informative comparison is against seasonal-naive, which is not 1.0 by construction. A family where the best model does NOT clear this is a finding about that family, not a bug.

model mase reference available
Chronos-2 1.533 NaN NaN
NaN 2.326 __naive__ True
NaN 2.262 __seasonal_naive__ True
Best model beats a trivial (no-skill) forecast (mixture)1.209 MASE1.857 MASE
better of naive-1 / seasonal-naive on this family (__seasonal_naive__)
value < reference (lower is better)better
What does this mean?

`mase` ≈ 1.0 for naive-1 under the default `mean_abs_diff` scale is true by construction, not a discovery -- the informative comparison is against seasonal-naive, which is not 1.0 by construction. A family where the best model does NOT clear this is a finding about that family, not a bug.

model mase reference available
Chronos-2 1.209 NaN NaN
NaN 2.493 __naive__ True
NaN 1.857 __seasonal_naive__ True
Best model beats a trivial (no-skill) forecast (parametric)2.814 MASE4.086 MASE
better of naive-1 / seasonal-naive on this family (__seasonal_naive__)
value < reference (lower is better)better
What does this mean?

`mase` ≈ 1.0 for naive-1 under the default `mean_abs_diff` scale is true by construction, not a discovery -- the informative comparison is against seasonal-naive, which is not 1.0 by construction. A family where the best model does NOT clear this is a finding about that family, not a bug.

model mase reference available
Chronos-2 2.814 NaN NaN
NaN 4.179 __naive__ True
NaN 4.086 __seasonal_naive__ True
Best model beats a trivial (no-skill) forecast (random_parametric)1.771 MASE3.683 MASE
better of naive-1 / seasonal-naive on this family (__seasonal_naive__)
value < reference (lower is better)better
What does this mean?

`mase` ≈ 1.0 for naive-1 under the default `mean_abs_diff` scale is true by construction, not a discovery -- the informative comparison is against seasonal-naive, which is not 1.0 by construction. A family where the best model does NOT clear this is a finding about that family, not a bug.

model mase reference available
Chronos-2 1.771 NaN NaN
NaN 4.090 __naive__ True
NaN 3.683 __seasonal_naive__ True
Best model beats a trivial (no-skill) forecast (sequential_par)1.070 MASE1.448 MASE
better of naive-1 / seasonal-naive on this family (__naive__)
value < reference (lower is better)better
What does this mean?

`mase` ≈ 1.0 for naive-1 under the default `mean_abs_diff` scale is true by construction, not a discovery -- the informative comparison is against seasonal-naive, which is not 1.0 by construction. A family where the best model does NOT clear this is a finding about that family, not a bug.

model mase reference available
Chronos-Bolt 1.070 NaN NaN
NaN 1.448 __naive__ True
NaN 1.520 __seasonal_naive__ True
Peak cross-model CKA (weakest of 6 pairs: TimesFM ↔ Sundial, stacked_xf.4 ↔ model.layers.2)0.412 CKA0.046 CKA
shuffled-series null at the same layer pair
value ≥ 4× referenceclears
What does this mean?

Geometric evidence. A ratio over the shuffle null says the alignment is not an artifact of series statistics; it does not say either model uses the shared geometry. The 4× in the rule is a stated convention — the CIs are given so a stricter or looser rule can be applied to the same numbers.

quantity layers value shuffled_null ci_lo ci_hi
TimesFM ↔ Chronos-2 stacked_xf.4 ↔ encoder.block.7 0.426 0.037 0.418 0.442
TimesFM ↔ Sundial stacked_xf.4 ↔ model.layers.2 0.412 0.046 0.399 0.428
TimesFM ↔ Chronos-Bolt stacked_xf.4 ↔ encoder.block.2 0.381 0.012 0.371 0.397
Chronos-2 ↔ Sundial encoder.block.0 ↔ model.layers.0 0.913 0.001 0.907 0.919
Chronos-2 ↔ Chronos-Bolt encoder.block.0 ↔ encoder.block.0 0.909 0.001 0.900 0.916
Sundial ↔ Chronos-Bolt model.layers.0 ↔ encoder.block.0 0.928 0.001 0.924 0.932
Best stitching gain over the input-feature baseline (Sundial → Chronos-2)0.901 ΔR²0 ΔR²
zero gain (the input-feature baseline itself)
95% CI lower bound > 0excludes
What does this mean?

The plotted value is the CI's lower bound, because the rule is about the CI and not the point estimate. Raw R² is deliberately not the headline: both models saw the same series, so only the gain above a probe built from the raw input is evidence of shared *learned* structure.

direction src_layer dst_layer best_r2 gain_over_input_baseline ci_lo ci_hi
TimesFM → Chronos-2 stacked_xf.2 encoder.block.0 0.747 0.707 0.683 0.725
Chronos-2 → TimesFM encoder.block.1 stacked_xf.0 0.633 0.611 0.592 0.630
TimesFM → Sundial stacked_xf.4 model.layers.4 0.728 0.681 0.668 0.695
Sundial → TimesFM model.layers.10 stacked_xf.18 0.636 0.609 0.579 0.638
TimesFM → Chronos-Bolt stacked_xf.2 encoder.block.0 0.724 0.649 0.626 0.673
Chronos-Bolt → TimesFM encoder.block.2 stacked_xf.0 0.602 0.580 0.559 0.602
Chronos-2 → Sundial encoder.block.0 model.layers.0 0.963 0.891 0.880 0.905
Sundial → Chronos-2 model.layers.1 encoder.block.0 0.952 0.911 0.901 0.920
Chronos-2 → Chronos-Bolt encoder.block.0 encoder.block.0 0.968 0.893 0.879 0.906
Chronos-Bolt → Chronos-2 encoder.block.1 encoder.block.0 0.949 0.908 0.898 0.917
Sundial → Chronos-Bolt model.layers.1 encoder.block.0 0.953 0.878 0.864 0.893
Chronos-Bolt → Sundial encoder.block.0 model.layers.0 0.937 0.865 0.854 0.878
Crystallization-depth spread (Chronos-Bolt earliest, Sundial latest)1 relative depth (block axis)0.273 relative depth (block axis)
earliest model's depth (Chronos-Bolt)
|difference| ≥ 0.1 relative depthseparated
What does this mean?

Depth is a fraction of each model's own whole stack, including surfaces this run never captured, so a model whose coverage is partial legitimately tops out below 1.0 — check the coverage rows before reading a depth *location* across models.

model crystallization_depth final_mase depth_axis
Chronos-Bolt 0.273 3.171 block
Sundial 1.000 2.445 block
Best accuracy-per-compute (Chronos-Bolt): overall MASE × GFLOPs per series3.416 MASE·GFLOPs13.070 MASE·GFLOPs
next-best deal (TimesFM)
value < reference (lower is better)better
What does this mean?

FLOPs are measured with torch's FLOP counter on this run's own context and horizon, not derived from a parameter count — so this transfers to an architecture no adapter was written for. The product is a deliberate choice of how to trade the two, not the only one: the per-model parameters, GFLOPs and MASE are all in the table so a different trade can be computed from them. FLOPs are not latency.

model gflops_per_series parameters overall_mase mase_x_gflops
Chronos-Bolt 1.589 47718016.000 2.151 3.416
TimesFM 7.424 231289280.000 1.761 13.070
Sundial 7.444 128329680.000 1.950 14.513
Chronos-2 8.654 119477664.000 1.691 14.633
Least-observed model's captured FLOP fraction (Sundial)0.224 fraction of forecast FLOPs0.900 fraction of forecast FLOPs
0.90 (the threshold that qualifies depth claims)
value ≥ 0.90below
What does this mean?

Every claim in this report about *where inside a model* something happens is scoped to the fraction observed here. Accuracy and cost rows are unaffected — they are measured at the model's output.

model captured_flops_fraction
Sundial 0.224
TimesFM 0.425
Chronos-Bolt 0.793
Chronos-2 0.975
Cross-model corruption-fingerprint agreement (pooled rank ρ)0.495 Spearman ρ0 Spearman ρ
zero agreement (independent depth profiles)
95% CI lower bound > 0excludes
What does this mean?

Each model's per-layer sensitivity profile is placed on the shared relative-depth axis and rank-correlated, per corruption. The plotted value is the CI's lower bound. This is a comparison of two *within-model* causal fingerprints — it says the two models are affected in the same depth order, not that they share a mechanism. A corruption with a strongly negative ρ in the table is a real disagreement, not noise, and is what the pooled number averages away.

corruption rank_rho ci_lo ci_hi
dropout 0.498 0.476 0.534
detrend 0.330 0.279 0.468
deseasonalize 0.259 0.199 0.277
frequency_shift 0.222 0.076 0.327
level_shift 0.040 -0.066 0.087
smooth -0.418 -0.526 -0.349
warp -0.640 -0.698 -0.621
noise -0.738 -0.756 -0.729
spike -0.787 -0.801 -0.780
Clustering agreement (weakest of 6 pairs: TimesFM and Chronos-Bolt, AMI)0.401 AMI0 AMI
zero (chance agreement — AMI is chance-corrected)
95% CI lower bound > 0excludes
What does this mean?

Descriptive evidence. Clusters are matched by label overlap, so a high AMI says two models partition this corpus alike; it says nothing about *why*, and cluster labels are approximate by construction. Every pair's own AMI is in the table beneath.

quantity value ci_lo ci_hi clusters_a clusters_b
TimesFM vs Chronos-2 0.601 0.568 0.633 5 5
TimesFM vs Sundial 0.684 0.650 0.719 5 5
TimesFM vs Chronos-Bolt 0.422 0.401 0.461 5 5
Chronos-2 vs Sundial 0.589 0.557 0.625 5 5
Chronos-2 vs Chronos-Bolt 0.452 0.430 0.495 5 5
Sundial vs Chronos-Bolt 0.510 0.483 0.549 5 5
Most load-bearing attention head, TimesFM (stacked_xf.0 · head 11)0.198 ΔMASE0 ΔMASE
TimesFM's own repeat-run noise floor (exactly zero — deterministic forecasts)
value ≥ 2× referenceclears
What does this mean?

Mean-ablating one head and re-forecasting. A deterministic model's repeat-run floor is exactly zero, so any nonzero effect clears the rule by construction for that model — which is why the floor is printed rather than folded into a verdict. The 2× is a stated convention; the per-head floor multiples are in the table so a stricter bar can be applied.

layer head delta_mase floor_multiple
stacked_xf.0 11 0.198 None
stacked_xf.18 0 0.111 None
stacked_xf.19 7 0.055 None
stacked_xf.17 1 0.047 None
stacked_xf.19 5 0.047 None
Most load-bearing attention head, Chronos-2 (encoder.block.11 · head 7)0.055 ΔMASE0 ΔMASE
Chronos-2's own repeat-run noise floor (exactly zero — deterministic forecasts)
value ≥ 2× referenceclears
What does this mean?

Mean-ablating one head and re-forecasting. A deterministic model's repeat-run floor is exactly zero, so any nonzero effect clears the rule by construction for that model — which is why the floor is printed rather than folded into a verdict. The 2× is a stated convention; the per-head floor multiples are in the table so a stricter bar can be applied.

layer head delta_mase floor_multiple
encoder.block.11 7 0.055 None
encoder.block.11 5 0.051 None
encoder.block.11 1 0.038 None
encoder.block.11 4 0.033 None
encoder.block.10 2 0.029 None
Most load-bearing attention head, Sundial (model.layers.3 · head 11)0.037 ΔMASE0.177 ΔMASE
Sundial's own repeat-run noise floor
value ≥ 2× referencedoes not clear
What does this mean?

Mean-ablating one head and re-forecasting. A deterministic model's repeat-run floor is exactly zero, so any nonzero effect clears the rule by construction for that model — which is why the floor is printed rather than folded into a verdict. The 2× is a stated convention; the per-head floor multiples are in the table so a stricter bar can be applied.

layer head delta_mase floor_multiple
model.layers.3 11 0.037 0.211
model.layers.3 5 0.028 0.161
model.layers.9 3 0.025 0.139
model.layers.3 4 0.024 0.134
model.layers.3 3 0.024 0.134
Most load-bearing attention head, Chronos-Bolt (encoder.block.5 · head 7)0.157 ΔMASE0 ΔMASE
Chronos-Bolt's own repeat-run noise floor (exactly zero — deterministic forecasts)
value ≥ 2× referenceclears
What does this mean?

Mean-ablating one head and re-forecasting. A deterministic model's repeat-run floor is exactly zero, so any nonzero effect clears the rule by construction for that model — which is why the floor is printed rather than folded into a verdict. The 2× is a stated convention; the per-head floor multiples are in the table so a stricter bar can be applied.

layer head delta_mase floor_multiple
encoder.block.5 7 0.157 None
encoder.block.4 0 0.053 None
encoder.block.2 7 0.049 None
encoder.block.2 4 0.041 None
encoder.block.1 4 0.041 None
SAE feature alignment to ground truth, TimesFM (weakest of 10 layers: stacked_xf.10)0.145 mean |ρ| of matched features0.120 mean |ρ| of matched features
label-permutation null (p95 over shuffles)
value > referenceabove
What does this mean?

Each feature is matched to whichever ground-truth field it correlates with best, so the mean is inflated by that search even under pure noise — the permutation null is how large the same search gets on shuffled labels. The headline is this model's weakest layer against its own null, so a pass means every analyzed layer cleared it; the per-layer table is beneath. Read the dead feature rate beside it: alignment computed over a mostly-dead dictionary describes very few live features.

quantity value null_p95 null_mean n_permutations n_features_matched dead_feature_rate reconstruction_fidelity
stacked_xf.10 measured 0.145 0.120 0.111 3.000 1042.000 0.239 0.879
stacked_xf.18 measured 0.197 0.122 0.117 3.000 344.000 0.121 0.907
stacked_xf.6 measured 0.146 0.116 0.115 3.000 1199.000 0.163 0.898
stacked_xf.16 measured 0.169 0.111 0.109 3.000 555.000 0.142 0.898
stacked_xf.2 measured 0.165 0.115 0.113 3.000 662.000 0.186 0.936
stacked_xf.14 measured 0.156 0.111 0.110 3.000 674.000 0.263 0.869
stacked_xf.4 measured 0.149 0.115 0.114 3.000 1131.000 0.204 0.917
stacked_xf.0 measured 0.176 0.115 0.113 3.000 564.000 0.209 0.967
stacked_xf.8 measured 0.148 0.114 0.112 3.000 979.000 0.159 0.893
stacked_xf.12 measured 0.150 0.115 0.112 3.000 955.000 0.170 0.886
SAE feature alignment to ground truth, Chronos-2 (weakest of 7 layers: encoder.block.7)0.168 mean |ρ| of matched features0.120 mean |ρ| of matched features
label-permutation null (p95 over shuffles)
value > referenceabove
What does this mean?

Each feature is matched to whichever ground-truth field it correlates with best, so the mean is inflated by that search even under pure noise — the permutation null is how large the same search gets on shuffled labels. The headline is this model's weakest layer against its own null, so a pass means every analyzed layer cleared it; the per-layer table is beneath. Read the dead feature rate beside it: alignment computed over a mostly-dead dictionary describes very few live features.

quantity value null_p95 null_mean n_permutations n_features_matched dead_feature_rate reconstruction_fidelity
encoder.block.8 measured 0.168 0.120 0.118 3.000 4353.000 0.004 0.917
encoder.block.10 measured 0.168 0.118 0.118 3.000 4594.000 0.005 0.925
encoder.block.11 measured 0.243 0.114 0.114 3.000 447.000 0.065 0.912
encoder.block.7 measured 0.168 0.120 0.119 3.000 4042.000 0.002 0.914
encoder.block.9 measured 0.170 0.118 0.117 3.000 4553.000 0.004 0.920
encoder.block.6 measured 0.173 0.117 0.116 3.000 2868.000 0.003 0.907
encoder.block.5 measured 0.172 0.119 0.116 3.000 2481.000 0.003 0.912
SAE feature alignment to ground truth, Sundial (weakest of 9 layers: model.layers.5)0.158 mean |ρ| of matched features0.119 mean |ρ| of matched features
label-permutation null (p95 over shuffles)
value > referenceabove
What does this mean?

Each feature is matched to whichever ground-truth field it correlates with best, so the mean is inflated by that search even under pure noise — the permutation null is how large the same search gets on shuffled labels. The headline is this model's weakest layer against its own null, so a pass means every analyzed layer cleared it; the per-layer table is beneath. Read the dead feature rate beside it: alignment computed over a mostly-dead dictionary describes very few live features.

quantity value null_p95 null_mean n_permutations n_features_matched dead_feature_rate reconstruction_fidelity
model.layers.3 measured 0.162 0.119 0.118 3.000 3458.000 0.008 0.963
model.layers.10 measured 0.166 0.121 0.119 3.000 4821.000 0.019 0.947
model.layers.11 measured 0.165 0.118 0.117 3.000 4240.000 0.039 0.961
model.layers.9 measured 0.164 0.121 0.119 3.000 4792.000 0.012 0.943
model.layers.6 measured 0.160 0.120 0.119 3.000 4073.000 0.006 0.951
model.layers.7 measured 0.160 0.119 0.119 3.000 4425.000 0.006 0.947
model.layers.5 measured 0.158 0.119 0.118 3.000 3716.000 0.006 0.956
model.layers.4 measured 0.159 0.119 0.117 3.000 3584.000 0.005 0.964
model.layers.8 measured 0.163 0.119 0.118 3.000 4601.000 0.009 0.945
SAE feature alignment to ground truth, Chronos-Bolt (weakest of 3 layers: encoder.block.5)0.179 mean |ρ| of matched features0.115 mean |ρ| of matched features
label-permutation null (p95 over shuffles)
value > referenceabove
What does this mean?

Each feature is matched to whichever ground-truth field it correlates with best, so the mean is inflated by that search even under pure noise — the permutation null is how large the same search gets on shuffled labels. The headline is this model's weakest layer against its own null, so a pass means every analyzed layer cleared it; the per-layer table is beneath. Read the dead feature rate beside it: alignment computed over a mostly-dead dictionary describes very few live features.

quantity value null_p95 null_mean n_permutations n_features_matched dead_feature_rate reconstruction_fidelity
encoder.block.4 measured 0.189 0.114 0.112 3.000 1293.000 0.008 0.957
encoder.block.5 measured 0.179 0.115 0.112 3.000 1203.000 0.008 0.959
encoder.block.3 measured 0.188 0.114 0.112 3.000 1351.000 0.014 0.953
SAE causal concepts, Chronos-2/encoder.block.6: strongest concept's effect vs. its null4.416 multiples of null p951 multiples of null p95
random-direction ablation null (p95, same magnitude)
value > referenceabove
What does this mean?

Each concept's name and its dominant channel are DERIVED from the same ablation battery this row scores, never authored -- a concept whose profile is empty ('no measured effect') is excluded from the max here by construction, not by a separate filter. The per-concept detail is every concept this target's dictionary clustered into, not only the winner -- and a concept with no measured effect says so in words rather than leaving the cell blank, which pandas would otherwise render as `NaN` and a reader would read as a failed measurement rather than the useful negative result it is.

concept members dominant channel effect (x null p95)
mild raises horizon_shape_far · unusually raises horizon_shape_near 11 horizon_shape_far 1.788
strong raises horizon_shape_near · unusually raises mase 3 horizon_shape_near 4.416
SAE causal concepts, Chronos-2/encoder.block.8: strongest concept's effect vs. its null3.203 multiples of null p951 multiples of null p95
random-direction ablation null (p95, same magnitude)
value > referenceabove
What does this mean?

Each concept's name and its dominant channel are DERIVED from the same ablation battery this row scores, never authored -- a concept whose profile is empty ('no measured effect') is excluded from the max here by construction, not by a separate filter. The per-concept detail is every concept this target's dictionary clustered into, not only the winner -- and a concept with no measured effect says so in words rather than leaving the cell blank, which pandas would otherwise render as `NaN` and a reader would read as a failed measurement rather than the useful negative result it is.

concept members dominant channel effect (x null p95)
mild raises horizon_shape_far · unusually raises horizon_shape_near 15 horizon_shape_far 1.632
strong raises horizon_shape_far · unusually raises trend 4 horizon_shape_far 3.203
SAE causal concepts, Chronos-Bolt/encoder.block.4: strongest concept's effect vs. its null3.267 multiples of null p951 multiples of null p95
random-direction ablation null (p95, same magnitude)
value > referenceabove
What does this mean?

Each concept's name and its dominant channel are DERIVED from the same ablation battery this row scores, never authored -- a concept whose profile is empty ('no measured effect') is excluded from the max here by construction, not by a separate filter. The per-concept detail is every concept this target's dictionary clustered into, not only the winner -- and a concept with no measured effect says so in words rather than leaving the cell blank, which pandas would otherwise render as `NaN` and a reader would read as a failed measurement rather than the useful negative result it is.

concept members dominant channel effect (x null p95)
strong raises seasonal 8 seasonal 3.267
strong raises horizon_shape_far · unusually lowers spectral_centroid 3 horizon_shape_far 3.045
SAE causal concepts, Sundial/model.layers.5: strongest concept's effect vs. its null2.288 multiples of null p951 multiples of null p95
random-direction ablation null (p95, same magnitude)
value > referenceabove
What does this mean?

Each concept's name and its dominant channel are DERIVED from the same ablation battery this row scores, never authored -- a concept whose profile is empty ('no measured effect') is excluded from the max here by construction, not by a separate filter. The per-concept detail is every concept this target's dictionary clustered into, not only the winner -- and a concept with no measured effect says so in words rather than leaving the cell blank, which pandas would otherwise render as `NaN` and a reader would read as a failed measurement rather than the useful negative result it is.

concept members dominant channel effect (x null p95)
moves horizon_shape_near 5 none cleared its own null no channel cleared
mild raises horizon_shape_far · unusually raises horizon_shape_near 4 horizon_shape_far 1.178
strong raises horizon_shape_near · unusually raises horizon_shape_far 3 horizon_shape_near 2.288
Registered claims that replicated on held-out private data1 claim1 claim
registered claims that could be re-tested
value ≥ all re-testable claimsmeets
What does this mean?

47 claim(s) were registered before the private corpus was opened; 1 were re-testable. These are the only confirmatory results in this report — every other row is exploratory.

registered_claim confirmed private_mean_delta ci_lo ci_hi p_holm
Chronos-2 stronger on mixture True 0.307 0.209 0.413 0.001
Concepts shared (same effect and inputs, reproducible): TimesFM & Chronos-20 concepts11 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where TimesFM or Chronos-2 holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (15 of 27 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): TimesFM & Sundial1 concepts11 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where TimesFM or Sundial holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (15 of 27 run-wide concepts are excluded for that or the single-model reason).

concept name
10 strong raises level · unusually lowers trend
Concepts shared (same effect and inputs, reproducible): TimesFM & Chronos-Bolt1 concepts7 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where TimesFM or Chronos-Bolt holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (15 of 27 run-wide concepts are excluded for that or the single-model reason).

concept name
18 strong raises mase
Concepts shared (same effect and inputs, reproducible): Chronos-2 & Sundial1 concepts11 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Chronos-2 or Sundial holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (15 of 27 run-wide concepts are excluded for that or the single-model reason).

concept name
9 strong raises horizon_shape_far · unusually raises spectral_centroid
Concepts shared (same effect and inputs, reproducible): Chronos-2 & Chronos-Bolt0 concepts10 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Chronos-2 or Chronos-Bolt holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (15 of 27 run-wide concepts are excluded for that or the single-model reason).

Concepts shared (same effect and inputs, reproducible): Sundial & Chronos-Bolt0 concepts11 concepts
stable, multi-model atlas concepts either model is part of
value ≥ 1× referencedoes not clear
What does this mean?

Denominator counts only concepts BOTH seed-stable and spanning 2+ models where Sundial or Chronos-Bolt holds a member -- a concept whose stability was never measured is excluded from this row entirely, not treated as unstable (15 of 27 run-wide concepts are excluded for that or the single-model reason).

A verdict here is arithmetic on one run, not a conclusion about the models in general. Every row inherits the evidence class of the section that produced it — behavioral, geometric, translatable, causal-within-model or descriptive — which the “How to read this report” note below defines, and which decides how much weight a cleared rule can carry.

Q1: What is shared by all models?

A concept must clear the full evidence ladder -- same causal effect, same driving inputs, reproducible across an independent SAE seed -- to count as genuinely shared.

No concept has causal-effect members in all 4 models; the broadest span 3 of 4. Of the 1 concept(s) spanning 3 models: 1 partially shared. 9 multi-model concept(s) share the same causal EFFECT but fire on different series in each model (convergent) -- the models reach the same forecast adjustment from different inputs.

How sure: L2/L3 not jointly reached at full model count.

Jump to evidence ↓

Q2: What is unique to each model, and why?

Per model, its reproducible model-specific concepts: what each does, what it fires on, and whether the model's own behavioral advantage on those series is actually traced to that concept's own ablation effect.

Bottom line: of 10 model-specific concept(s), 1 sit on series where their model forecasts better than every other model, and 0 of those are traced to the concept by its own ablation. A concept unique to a model is not, by itself, evidence of an advantage.

TimesFM: 3 reproducible model-specific concept(s).
'mild raises level' -- does: level +2.03x null, horizon_shape_near +1.93x null; fires on: ar_order (ρ=0.43, n=555); why: no model is clearly better or worse than this one on these series; removing it worsens this model's MASE (1.880x the null's 95th percentile)
'mild raises horizon_shape_near · unusually raises mase' -- does: horizon_shape_near +1.03x null, mase +1.03x null; fires on: n_seasonalities (ρ=0.49, n=555); why: no model is clearly better or worse than this one on these series; removing it worsens this model's MASE (1.025x the null's 95th percentile)
'shifts the level' -- does: level -1.26x null, mase +1.24x null; fires on: ar_coeff_sum (ρ=0.49, n=374); why: this model is worse than 2 model(s) on these series; removing it worsens this model's MASE (1.244x the null's 95th percentile)

Chronos-2: 3 reproducible model-specific concept(s).
'strong raises dispersion · unusually raises horizon_shape_far' -- does: dispersion +1.54x null, level -0.81x null; fires on: has_intermittency (ρ=0.37, n=555); why: no model is clearly better or worse than this one on these series; removing it does not move this model's MASE beyond the random-direction null (0.403x)
'strong lowers dispersion' -- does: dispersion -2.72x null, horizon_shape_far +1.89x null; fires on: provenance-driven: fires on mixture series; why: this model beats every other on these series, but removing the concept does not worsen its MASE; removing it does not move this model's MASE beyond the random-direction null (0.576x)
'strong lowers level · unusually lowers seasonal' -- does: level -5.68x null, dispersion -4.03x null; fires on: noise_scale (ρ=-0.37, n=555); why: no model is clearly better or worse than this one on these series; removing it worsens this model's MASE (1.378x the null's 95th percentile)

Sundial: 4 reproducible model-specific concept(s).
'strong raises dispersion · unusually raises spectral_centroid' -- does: dispersion +2.78x null, horizon_shape_near +1.32x null; fires on: provenance-driven: fires on block_bootstrap series; why: this model is worse than 3 model(s) on these series; removing it does not move this model's MASE beyond the random-direction null (0.285x)
'strong raises horizon_shape_far · unusually raises mase' -- does: horizon_shape_near +1.02x null, horizon_shape_far +0.97x null; fires on: n_seasonalities (ρ=0.62, n=555); why: this model is worse than 1 model(s) on these series; removing it does not move this model's MASE beyond the random-direction null (0.672x)
'strong raises horizon_shape_far · unusually raises horizon_shape_near' -- does: horizon_shape_far +3.80x null, horizon_shape_near +2.63x null; fires on: ar_coeff_sum (ρ=0.14, n=374); why: this model is worse than 2 model(s) on these series; removing it improves this model's MASE (0.068x the null's 95th percentile)
'strong raises dispersion · unusually raises seasonal' -- does: dispersion +3.61x null, seasonal +3.12x null; fires on: n_changepoints (ρ=-0.22, n=555); why: this model is worse than 2 model(s) on these series; removing it improves this model's MASE (2.873x the null's 95th percentile)

Chronos-Bolt: 0 model-specific concepts (reproducible or not yet measured).

How sure: uniqueness is relative to the analyzed layers and dictionaries; reproducibility is L3; what a concept fires on is correlational; the advantage link combines a behavioral gap with a within-model ablation; nothing here is confirmed on private data (L6).

Jump to evidence ↓

Q3: How similar is each pair?

Each metric measures a different kind of similarity (behavior, geometry, linear translatability, clustering, SAE effect, SAE inputs), so they need not agree: read each on its own scale, never averaged into one score.

Closest pair, by metric: Sundial/Chronos-Bolt on 2 metric(s) (Best-layer CKA 0.928, Input transfer 0.950); Chronos-2/Sundial on 2 metric(s) (Stitching gain 0.901, Atlas co-membership 0.588); TimesFM/Sundial on 2 metric(s) (Cluster agreement (AMI) 0.684, Shared concepts 1); TimesFM/Chronos-2 on 1 metric(s) (Error agreement 0.947).
Furthest pair, by metric: TimesFM/Chronos-Bolt on 4 metric(s) (Best-layer CKA 0.381, Stitching gain 0.614, Cluster agreement (AMI) 0.422, Input transfer 0.777); Chronos-2/Chronos-Bolt on 1 metric(s) (Error agreement 0.728); Sundial/Chronos-Bolt on 1 metric(s) (Atlas co-membership 0.192); TimesFM/Chronos-2 on 1 metric(s) (Shared concepts 0).
Kendall's W across every measured metric: 0.281 (p=0.0700, 7 metric(s)); within representation metrics only: 0.530 (p=0.1379, 3 metric(s)). With only a handful of model pairs, Kendall's W has low power: a non-significant p does NOT mean the metrics agree, and a significant one should still be read alongside the per-metric rank table above, not instead of it.
Disagreements: Sundial and Chronos-Bolt: rank 1 of 6 on Best-layer CKA, rank 6 of 6 on Atlas co-membership. Sundial and Chronos-Bolt: rank 1 of 6 on Input transfer, rank 6 of 6 on Atlas co-membership. Chronos-2 and Chronos-Bolt: rank 2 of 6 on Stitching gain, rank 6 of 6 on Error agreement....and 10 more contrast(s) below.

How sure: 13 large rank disagreement(s) found across metric families

Jump to evidence ↓

Pair-similarity rank table
PairError agreementBest-layer CKAStitching gainCluster agreement (AMI)Atlas co-membershipInput transferShared conceptsMedian rankRank range
TimesFM / Chronos-214423554.04.0
TimesFM / Sundial25512222.04.0
TimesFM / Chronos-Bolt56664626.04.0
Chronos-2 / Sundial32131422.03.0
Chronos-2 / Chronos-Bolt63255355.04.0
Sundial / Chronos-Bolt41346154.05.0

Kendall's W (all measured metrics): 0.281 (p=0.0700, 7 metric(s)). Within representation metrics only: 0.530 (p=0.1379, 3 metric(s)). With only a handful of model pairs, Kendall's W has low power: a non-significant p does NOT mean the metrics agree, and a significant one should still be read alongside the per-metric rank table above, not instead of it.

Overall behavioral metrics (L0)
model smape pinball mae_over_mad mase
Chronos-2 0.706 0.580 0.874 1.691
Chronos-Bolt 0.800 0.743 1.002 2.151
Sundial 0.804 0.777 1.049 1.950
TimesFM 0.722 0.601 0.917 1.761

New to this report? How to read this report states the evidence-class ladder every section below is ordered by.

Alignment & provenance

Impulse alignment check (diagonal-hit fraction) — near 1.0 means declared token time spans are trustworthy for this checkpoint/library version.

modelminmeanshallowest layergate
TimesFM1.001.00stacked_xf.0pass
Chronos-21.001.00encoder.block.0pass
Sundial0.120.48model.layers.0pass
Chronos-Bolt1.001.00encoder.block.0pass

tsfm_lens 0.1.0 · run time 6h 25m
models TimesFM (timesfm): google/timesfm-2.5-200m-pytorch; Chronos-2 (chronos2): amazon/chronos-2; Sundial (sundial): thuml/sundial-base-128m; Chronos-Bolt (chronos_bolt): amazon/chronos-bolt-small
packages torch 2.12.0, numpy 2.1.0, pandas 2.3.3, zarr 2.18.7, sklearn 1.7.2, transformers 4.57.6, timesfm 2.0.2, chronos 2.3.1

Non-finite activation values at write time — any nonzero count here means that layer's stored values include inf/NaN, which store.load would otherwise raise on the first time an analysis stage actually reads that layer.

model/layercounttotalfraction
Chronos-2/encoder.block.00118579200.0000%
Chronos-2/encoder.block.10118579200.0000%
Chronos-2/encoder.block.100118579200.0000%
Chronos-2/encoder.block.110118579200.0000%
Chronos-2/encoder.block.20118579200.0000%
Chronos-2/encoder.block.30118579200.0000%
Chronos-2/encoder.block.40118579200.0000%
Chronos-2/encoder.block.50118579200.0000%
Chronos-2/encoder.block.60118579200.0000%
Chronos-2/encoder.block.70118579200.0000%
Chronos-2/encoder.block.80118579200.0000%
Chronos-2/encoder.block.90118579200.0000%
Chronos-Bolt/encoder.block.0079052800.0000%
Chronos-Bolt/encoder.block.1079052800.0000%
Chronos-Bolt/encoder.block.2079052800.0000%
Chronos-Bolt/encoder.block.3079052800.0000%
Chronos-Bolt/encoder.block.4079052800.0000%
Chronos-Bolt/encoder.block.5079052800.0000%
Sundial/model.layers.00118579200.0000%
Sundial/model.layers.10118579200.0000%
Sundial/model.layers.100118579200.0000%
Sundial/model.layers.110118579200.0000%
Sundial/model.layers.20118579200.0000%
Sundial/model.layers.30118579200.0000%
Sundial/model.layers.40118579200.0000%
Sundial/model.layers.50118579200.0000%
Sundial/model.layers.60118579200.0000%
Sundial/model.layers.70118579200.0000%
Sundial/model.layers.80118579200.0000%
Sundial/model.layers.90118579200.0000%
TimesFM/stacked_xf.00197632000.0000%
TimesFM/stacked_xf.100197632000.0000%
TimesFM/stacked_xf.120197632000.0000%
TimesFM/stacked_xf.140197632000.0000%
TimesFM/stacked_xf.160197632000.0000%
TimesFM/stacked_xf.180197632000.0000%
TimesFM/stacked_xf.20197632000.0000%
TimesFM/stacked_xf.40197632000.0000%
TimesFM/stacked_xf.60197632000.0000%
TimesFM/stacked_xf.80197632000.0000%

Part 1 — The setup and whether to trust it

Whether this run's cross-model comparisons are fair between the configured models, and what the benchmark corpus actually contains.

↑ contents
Fairness

The fairness card

Every measured asymmetry between each pair of models in this run, before any result section.

What this stage tells you

Question
Given everything the other stages found, is this a fair comparison, and what's actually solid enough to act on?

How
Collects every stage's artifacts into one document, states upfront which measured asymmetries between each pair of models (parameters, compute, coverage, forecast determinism) apply before any result is read, and marks every section as rendered, skipped, or failed rather than silently omitting anything.

Good vs. bad result
Good: every enabled stage's section actually rendered (no 'failed' rows in the coverage panel) and the fairness card names its asymmetries with real measured values rather than 'not yet measured'. Bad: any section marked 'failed' (a bug, not an expected degrade) or a fairness row that couldn't be measured, which should downgrade how much weight a depth-located claim in that section deserves.

What it cannot tell you
The report presents what the pipeline measured; it adds no new evidence of its own. A 'rendered' status only means a section produced output without error, not that a result inside it is strong — that's for the evidence-class ladder shown once at the top (geometric / translatable / causal-within-model / descriptive / illustrative / behavioral) to decide, section by section.

This run compares 4 models, so there are 6 pairs. Fairness is a property of a pair, so each gets its own card below; the first is open and the rest are collapsed.

TimesFM vs Chronos-2
Axis TimesFM Chronos-2 Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 3 (decomposable) same tier no stage dropped
Parameters 231.3M 119.5M 1.94× all quality claims
FLOPs per forward (per series) 7.42 GFLOPs 8.65 GFLOPs 1.17× all quality claims
Captured FLOP fraction 42.5% 97.5% 55.0 pt gap all depth-located claims
Depth axis ('block') caps at 0.947 caps at 1.000 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic deterministic both same kind all delta claims
Finest resolvable lag (token width) 32 steps 16 steps 2.0× — matched at 32 steps all cross-model attention-lag claims
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
TimesFM vs Sundial
Axis TimesFM Sundial Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 2 (steerable) run capped at tier 2 by the lower model no stage dropped
Parameters 231.3M 128.3M 1.80× all quality claims
FLOPs per forward (per series) 7.42 GFLOPs 7.44 GFLOPs 1.00× all quality claims
Captured FLOP fraction 42.5% 22.4% 20.1 pt gap all depth-located claims
Depth axis ('block') caps at 0.947 caps at 1.000 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic ±0.177 MASE one deterministic, one sampled all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
TimesFM vs Chronos-Bolt
Axis TimesFM Chronos-Bolt Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 2 (steerable) run capped at tier 2 by the lower model no stage dropped
Parameters 231.3M 47.7M 4.85× all quality claims
FLOPs per forward (per series) 7.42 GFLOPs 1.59 GFLOPs 4.67× all quality claims
Captured FLOP fraction 42.5% 79.3% 36.7 pt gap all depth-located claims
Depth axis ('block') caps at 0.947 caps at 0.455 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic deterministic both same kind all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Chronos-2 vs Sundial
Axis Chronos-2 Sundial Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 2 (steerable) run capped at tier 2 by the lower model no stage dropped
Parameters 119.5M 128.3M 1.07× all quality claims
FLOPs per forward (per series) 8.65 GFLOPs 7.44 GFLOPs 1.16× all quality claims
Captured FLOP fraction 97.5% 22.4% 75.1 pt gap all depth-located claims
Depth axis ('block') caps at 1.000 caps at 1.000 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic ±0.177 MASE one deterministic, one sampled all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Chronos-2 vs Chronos-Bolt
Axis Chronos-2 Chronos-Bolt Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 3 (decomposable) 2 (steerable) run capped at tier 2 by the lower model no stage dropped
Parameters 119.5M 47.7M 2.50× all quality claims
FLOPs per forward (per series) 8.65 GFLOPs 1.59 GFLOPs 5.45× all quality claims
Captured FLOP fraction 97.5% 79.3% 18.3 pt gap all depth-located claims
Depth axis ('block') caps at 1.000 caps at 0.455 94.7% overlap all cross-depth figures
Forecast determinism / noise floor deterministic deterministic both same kind all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses
Sundial vs Chronos-Bolt
Axis Sundial Chronos-Bolt Asymmetry Qualifies
Analysis eligibility full (spans declared by adapter) full (spans declared by adapter) both fully eligible every non-L0 section
Capability tier 2 (steerable) 2 (steerable) same tier no stage dropped
Parameters 128.3M 47.7M 2.69× all quality claims
FLOPs per forward (per series) 7.44 GFLOPs 1.59 GFLOPs 4.69× all quality claims
Captured FLOP fraction 22.4% 79.3% 56.8 pt gap all depth-located claims
Depth axis ('block') caps at 1.000 caps at 0.455 94.7% overlap all cross-depth figures
Forecast determinism / noise floor ±0.177 MASE deterministic one deterministic, one sampled all delta claims
Finest resolvable lag (token width) not yet measured not yet measured n/a all attention-lag claims (needs the attention stage with pattern capture supported by both adapters)
Declared training exposure not yet measured not yet measured n/a all behavioral claims
Capability intersection not yet measured not yet measured n/a the asymmetric analyses

Every measured asymmetry between the models in this run, one card per pair, before any result section. This is the page to check first, and the strongest single argument that this repo's comparisons are honest rather than merely careful.

What does this mean?

How to read it
Every row is read from an already-measured artifact -- no value here is hand-written. A row reading 'not yet measured' means the stage or analysis named in Qualifies is either disabled in this config or not yet built anywhere in the repo; read any claim that row would qualify with the same caution states for it in prose.

Limitations
This card is only as complete as the F-items behind it. F3, F7 and F8 have no landed measurement anywhere in the repo yet, so their rows are a statement of absence, not a small number -- absence of a row here is never evidence of fairness.

Corpus

The corpus card

What the benchmark corpus actually is and whether it can be trusted, before any model result.

What this stage tells you

Question
Can the benchmark corpus itself be trusted -- is it free of copied reference series, free of near-duplicates, and diverse enough that a model can't do well here just by memorizing one shape?

How
Reads the sealed corpus's own manifest (when present) and, optionally, an existing `benchmark_validation` report, and renders both as a fixed trust ladder of named claims -- never recomputes a leakage or diversity check itself, and never imports `benchmark_validation`.

Good vs. bad result
Good: every trust-ladder row reads `measured` with a real reference and a stated verdict. Bad: a row reads `not_checked` -- the corpus was built with `--references none`, so every candidate passed the leakage gate trivially, which is NOT the same as a corpus that was checked and found clean -- or `not_recorded`, meaning no audit ever ran at all.

What it cannot tell you
Two rows are always unresolvable and are rendered that way rather than omitted: whether the private split's distribution genuinely matches the dev split's (no mechanism in this repo compares them), and whether any model being compared was trained on data shaped like this corpus (no audit anywhere can inspect a checkpoint's own training data). A `measured` row is evidence the corpus is sound by the checks that exist -- it is not proof no other check would find a problem.

Sealed corpus, visibility public, epoch 0, 965 sealed samples (965 usable after length filtering). Global digest 65e020884dfdb9df….

Series counts by tier and by generator, for THIS run's own corpus.

What does this mean?

How to read it
Each bar is a count of series sharing that label. `tier` distinguishes leakage-safe synthetic series from real-derived ones; `generator` names the construction mechanism.

Limitations
This renders only the corpus this run actually loaded (`data.path`), never a dev-vs-private side-by-side -- the private split is loaded independently, only by the `confirm` stage, and is not available here to compare against without loading a second corpus this stage was not given.

One representative context window (512 steps) per family, 5 of 5 families shown.

What does this mean?

How to read it
Each panel is one real series from this corpus, not an average or a synthetic composite -- picked per family (`np.random.default_rng` seeded on `run.seed`) rather than by a head slice, since this corpus is written grouped by generator and a plain prefix would silently select a family-skewed sample.

Limitations
Each panel has its own y-axis: series scales are not comparable across panels, and this is illustrative, not a diversity measurement (that is Figure 3 below, computed in feature space).

Provenance unverified. this validation_report.json predates corpus_digest (item C1.3) -- matched by configured path only, not cross-checked against this run's corpus

Equal-frequency histogram of pairwise shape-similarity scores over 965 series (redundancy fraction 0.0). Effective dimensionality 5.294 of 22 catch22/24 features; near-collision fraction 0.0518.

What does this mean?

How to read it
Computed by `benchmark_validation` in **catch22 feature space, never on UMAP coordinates** -- distances here are the real diversity measurement, unlike Figure 4 below. This particular validation report's provenance is UNVERIFIED (item C1.3) -- it is matched to this corpus by configured path only, not by a cross-checked digest, so it may in principle describe a different corpus than the one this run actually used.

Limitations
A high redundancy fraction can be a true finding, not a defect -- e.g. many pure-seasonal series sharing one period differ only in noise and are legitimately near-duplicate in shape. Read this figure alongside effective dimensionality, never alone.

Feature-space map: a standalone interactive 3-D UMAP projection exists alongside this corpus’s validation report at ../../validation_large/feature_space_3d.html.

This section deliberately does not re-plot or re-derive a UMAP embedding -- `validation_report.json` persists only aggregated quantiles and bucket histograms, never raw per-sequence coordinates, and item C1.2 forbids this package from importing `benchmark_validation` to regenerate one.

What does this mean?

How to read it
Open the linked standalone HTML file directly (`benchmark_validation`'s own `plot_embedding` output) for the interactive 3-D view, colored by generator.

Limitations
Three things this repo insists on stating every time UMAP is mentioned: diversity is measured in catch22 feature space, never on UMAP coordinates (Figure 3 above is the real measurement); UMAP distorts global distances and cluster sizes, so gaps in the 3-D plot are not quantitative; and this is a CORPUS feature-space embedding, a different object entirely from an activation-space embedding of a model's internals.

Distance-to-nearest-reference quantiles for series the gate accepted vs. rejected, against 82 real reference series from ['hf/Monash-University/monash_tsf/covid_deaths/train', 'hf/Monash-University/monash_tsf/saugeenday/train', 'hf/Monash-University/monash_tsf/tourism_quarterly/train', 'hf/Monash-University/monash_tsf/traffic_weekly/train', 'hf/Monash-University/monash_tsf/us_births/train', 'hf/Monash-University/monash_tsf/vehicle_trips/train']. 68 of 2000 candidates rejected (14 cross-split near-duplicate pairs).

What does this mean?

How to read it
A series below the gate threshold is rejected as too close to a real reference series. Only aggregated quantiles are persisted, not the raw per-candidate distance array, so this is a quantile comparison, not a full histogram.

Limitations
This gate measures INSTANCE-level leakage only (an exact copy of a reference series) -- it says nothing about DISTRIBUTIONAL leakage (a model having seen data *shaped like* this), which is carried by construction for every real-derived-tier sample and cannot be audited by this or any other check.

Corpus trust ladder

ClaimMeasuredCompared againstRuleVerdict
No series here is a copy of a real reference series (68 of 2000 candidates rejected)0.352 distance0.350 distance
gate threshold (dtw)
value > referenceabove
What does this mean?
accepted_distance_quantiles n_candidates n_rejected
{'min': 0.35173091829909253, 'p01': 0.3790535521358083, 'p05': 0.44749580415548, 'p50': 0.7072645456924898} 2000 68
No two series within a split are near-duplicates of each other7 pairs0 pairs
0 within-split near-duplicate pairs
value ≤ 0does not clear
What does this mean?
n_pairs_within_public n_pairs_within_private
4 3
The dev and private splits share no series14 pairs0 pairs
0 cross-split near-duplicate pairs
value ≤ 0does not clear
What does this mean?
n_pairs_across_splits
14
The private split looks like the dev splitnot measurednot measured
a declared equivalence margin
value > referenceinconclusive
What does this mean?

No mechanism in this repo currently compares the private split's distribution against the dev split's item B1's audit block is written identically to both splits by construction (same epoch, same verdict), so it cannot answer this question. Recorded as inconclusive rather than omitted.

A model cannot do well here by memorizing one shape (effective dimensionality)5.2942
benchmark_validation's default min_effective_dimensionality (gates.py) -- not read from this report's own config
value ≥ 2meets
What does this mean?
total_variance near_collision_fraction
30.074 0.052
Series here vary in more than one way (7 distinct per-group dominant features of 7 groups)72
at least 2 distinct dominant features across groups
value ≥ 2meets
What does this mean?
group top_variance_feature
diverse_synthetic_backbone [DN_OutlierInclude_n_001_mdrmd, 3.5579]
real_block_bootstrap [CO_trev_1_num, 16.3848]
real_ett_mixture [CO_FirstMin_ac, 2.7601]
real_sequential_par [CO_trev_1_num, 6.4236]
real_weather_multiplicative [CO_trev_1_num, 19.4466]
real_weather_weighted_sum [CO_trev_1_num, 15.9006]
seasonal_trend_fixed [DN_OutlierInclude_n_001_mdrmd, 4.6944]
The models being compared were not trained on this datanot measurednot measured
a checkpoint's own training corpus
value > referencenot_verifiable
What does this mean?

Nothing in this repo can inspect a checkpoint's training corpus. the two-tier design audits INSTANCE-level leakage (rows 1-3 above: is any series here a copy of something we checked against) but DISTRIBUTIONAL leakage -- has a model's training data ever seen data shaped like this -- is carried by construction for every real_derived-tier sample and is not something any audit in this repo, or any other, can rule out. This row is intentionally unresolvable and is rendered rather than omitted so it cannot be mistaken for a question nobody thought to ask.

Seven claims about the corpus itself, each derived from `corpus/card.json` -- never a model result.

What does this mean?

How to read it
`not_recorded` means no audit ever ran; `not_checked` means the leakage gate ran with zero reference series (`--references none`) so every candidate passed trivially -- NOT the same as a corpus checked and found clean. `inconclusive` and `not_verifiable` rows are claims nothing in this repo can currently resolve, rendered rather than omitted.

Limitations
A `measured`/`clears` verdict is evidence the corpus is sound by the checks that exist here -- it is not proof no other check would find a problem, and rows 4 and 7 are permanently open questions this section states rather than answers.

Part 2 — How well each model forecasts

Behavioral accuracy per benchmark family, what each model costs to run, and what its input front-end does before any layer runs.

↑ contents
L0

Behavioral profile

Forecast quality per benchmark family: the hypotheses the deeper levels try to explain.

What this stage tells you

Question
Which model actually forecasts more accurately, and on what kinds of data?

How
Runs every model's native forecasting procedure on every benchmark series, scores each series' error against a naive same-scale baseline, and statistically compares the paired per-series differences within each data family, correcting for testing many families -- and, when more than two models are configured, many model pairs -- at once.

Good vs. bad result
Good: a family where the paired difference's confidence interval clearly excludes zero after correction — a real, replicable accuracy edge on that kind of data. Bad: every family's interval spans zero (no reliable difference survives correction), or a gap that looks real in the bar chart but isn't backed by a significant test.

What it cannot tell you
This is purely behavioral: it can tell you which model wins and where, but nothing about why, or what mechanism inside either model produces the gap — that's what every stage after this one exists to investigate. It also measures point-forecast accuracy only; a model can score well here and still have badly miscalibrated uncertainty (a separate calibration diagnostic covers that, but it is not this headline number). And it is the ONLY stage that compares more than two models: everything after it compares the designated pair only, so with three models the extra pairs are unexamined there rather than weakly evidenced.

Per-family forecast error (MASE, mean absolute error scaled by each series' own naive one-step error) for every configured model. This is the purely behavioral baseline everything else in the report tries to explain mechanistically.

What does this mean?

How to read it
Lower bars are better. Bars near 1.0 mean the model is about as good as a naive one-step-repeat forecast on that family; well below 1.0 is genuine skill. Compare bar heights within a family across models, not across families (family difficulty varies a lot).

Limitations
MASE rewards point-forecast accuracy only, not calibration — a model can have great MASE and terrible quantile coverage. With more than two models configured, every model appears here, but the paired significance test below only ever compares the first two (the deep-dive pair every other section analyzes).

Repeat-run noise floor

model repeats n_series deterministic mean |ΔMASE| p95 |ΔMASE| max |ΔMASE|
TimesFM 3 16 True 0.000 0.000 0.000
Chronos-2 3 16 True 0.000 0.000 0.000
Sundial 3 16 False 0.177 0.638 1.662
Chronos-Bolt 3 16 True 0.000 0.000 0.000

Each model forecasts the same small series subset (16 series) 3 times; this is how much MASE varies between calls that should, absent sampling, be identical. Every ΔMASE elsewhere in this report (head/MLP ablation, SAE forecast-preservation, L3 restoration) is otherwise implicitly compared against zero.

What does this mean?

How to read it
`deterministic: true` with a floor of exactly 0 is expected and correct for a model with no sampling in its forecast path -- a free wiring sanity check (here: Chronos-2, Chronos-Bolt and TimesFM); Sundial samples and so does not. A model that samples its forecast will show a nonzero floor; a ΔMASE smaller than that floor is not distinguishable from noise.

Limitations
Measured on a small subset for speed, so the floor estimate itself has some uncertainty -- read it as an order-of-magnitude reference, not a precise bound.

116 of 3860 series excluded from every MASE mean/ratio/test above and below (scale='mean_abs_diff', min_scale_frac=0.05) -- their MASE denominator was too small relative to the target's own level to trust. smape/pinball/mae_over_mad below still include them. Per-family/per-archetype breakdown is in the "excluded" column of each table.

Overall metrics

model smape pinball mae_over_mad mase
Chronos-2 0.706 0.580 0.874 1.691
Chronos-Bolt 0.800 0.743 1.002 2.151
Sundial 0.804 0.777 1.049 1.950
TimesFM 0.722 0.601 0.917 1.761

Per-family metrics

model family mase mae_over_mad smape pinball mase_n_excluded seasonal_naive_available seasonal_naive_n_excluded
Chronos-2 block_bootstrap 1.533 1.029 1.241 0.547 0 NaN NaN
Chronos-2 mixture 1.209 0.822 0.639 0.480 11 NaN NaN
Chronos-2 parametric 2.814 0.861 0.654 0.891 4 NaN NaN
Chronos-2 random_parametric 1.771 0.858 0.656 0.586 14 NaN NaN
Chronos-2 sequential_par 1.113 1.123 0.902 0.355 0 NaN NaN
Chronos-Bolt block_bootstrap 1.604 1.065 1.238 0.578 0 NaN NaN
Chronos-Bolt mixture 1.214 0.831 0.648 0.477 11 NaN NaN
Chronos-Bolt parametric 2.870 0.877 0.653 0.905 4 NaN NaN
Chronos-Bolt random_parametric 2.791 1.135 0.866 0.951 14 NaN NaN
Chronos-Bolt sequential_par 1.070 1.090 0.899 0.340 0 NaN NaN
Sundial block_bootstrap 1.601 1.228 1.129 0.624 0 NaN NaN
Sundial mixture 1.461 1.052 0.844 0.653 11 NaN NaN
Sundial parametric 3.115 0.959 0.706 1.099 4 NaN NaN
Sundial random_parametric 2.089 1.038 0.750 0.833 14 NaN NaN
Sundial sequential_par 1.076 1.118 0.827 0.409 0 NaN NaN
TimesFM block_bootstrap 1.538 1.031 1.229 0.550 0 NaN NaN
TimesFM mixture 1.336 0.909 0.666 0.527 11 NaN NaN
TimesFM parametric 2.895 0.881 0.676 0.900 4 NaN NaN
TimesFM random_parametric 1.822 0.893 0.677 0.599 14 NaN NaN
TimesFM sequential_par 1.075 1.107 0.838 0.340 0 NaN NaN
__naive__ block_bootstrap 2.326 1.682 0.927 1.163 0 True 0.000
__naive__ mixture 2.493 1.532 1.126 1.341 11 True 0.000
__naive__ parametric 4.179 1.278 0.821 2.078 4 True 0.000
__naive__ random_parametric 4.090 1.565 1.014 2.102 14 True 0.000
__naive__ sequential_par 1.448 1.482 0.929 0.724 0 True 0.000
__seasonal_naive__ block_bootstrap 2.262 2.053 0.953 1.131 0 True 0.000
__seasonal_naive__ mixture 1.857 1.400 0.851 1.039 11 True 0.000
__seasonal_naive__ parametric 4.086 1.258 0.817 2.044 4 True 0.000
__seasonal_naive__ random_parametric 3.683 1.438 0.916 1.910 14 True 0.000
__seasonal_naive__ sequential_par 1.520 1.547 0.927 0.760 0 True 0.000

`__naive__` and `__seasonal_naive__` are not configured models -- they are the trivial forecasts every real model should beat: repeat the last context value, or repeat the last full dominant period. Their MASE, if not excluded as unreliable, is what the scorecard's 'beats a trivial forecast' row below compares each family's best model against.

What does this mean?

How to read it
`__naive__`'s MASE is ≈1.0 under the default `mean_abs_diff` scale BY CONSTRUCTION -- that is not a discovery. `__seasonal_naive__` is the informative one: it is not 1.0 by construction, and a family where the best model does not beat it is worth reading as a real finding, not a bug.

Limitations
`__seasonal_naive__`'s MASE is missing (not zero, not a fallback to naive-1) for any family where every series is too short to hold one full detected period -- see `seasonal_naive_available` on that row.

`mae_over_mad` is a scale-free companion to MASE that doesn't depend on the context, only the target's own dispersion.

What does this mean?

How to read it
It should move roughly in step with MASE. If MASE looks anomalously low/high for a family but `mae_over_mad` doesn't, suspect a MASE scale-term artifact rather than genuine model behavior on that family.

Limitations
Not a drop-in MASE replacement — it can itself look small/undefined on a near-constant target, which is a different, legitimate degeneracy this metric doesn't protect against.

Per-archetype breakdown

Families with no per-sample archetype label (shown under their family name instead): block_bootstrap, mixture, parametric, sequential_par.

model archetype mase mae_over_mad smape pinball mase_n_excluded
Chronos-2 amplitude_modulated 2.002 0.770 0.833 0.631 0
Chronos-2 anomaly_heavy 0.986 0.599 0.445 0.337 1
Chronos-2 ar_colored_noise 0.848 0.954 0.789 0.272 0
Chronos-2 block_bootstrap 1.533 1.029 1.241 0.547 0
Chronos-2 clean_low_noise 3.678 0.695 0.553 1.285 5
Chronos-2 intermittent_bursts 1.111 1.049 1.379 0.354 0
Chronos-2 mixture 1.209 0.822 0.639 0.480 11
Chronos-2 multi_seasonal_complex 1.233 0.360 0.391 0.396 2
Chronos-2 noisy_chaotic 1.064 1.037 0.660 0.342 0
Chronos-2 nonsinusoidal_seasonal 2.964 0.719 0.910 0.909 0
Chronos-2 parametric 2.814 0.861 0.654 0.891 4
Chronos-2 random_walk_drift 2.872 1.705 0.564 0.935 1
Chronos-2 regime_switching 2.613 1.362 0.497 0.886 2
Chronos-2 seasonal_dominant 0.395 0.105 0.225 0.126 0
Chronos-2 sequential_par 1.113 1.123 0.902 0.355 0
Chronos-2 trend_dominant 0.785 0.774 0.248 0.262 3
Chronos-Bolt amplitude_modulated 2.467 0.991 1.000 0.813 0
Chronos-Bolt anomaly_heavy 1.785 0.862 0.693 0.576 1
Chronos-Bolt ar_colored_noise 0.916 1.016 0.838 0.287 0
Chronos-Bolt block_bootstrap 1.604 1.065 1.238 0.578 0
Chronos-Bolt clean_low_noise 5.580 1.043 0.830 2.069 5
Chronos-Bolt intermittent_bursts 1.170 1.109 1.385 0.376 0
Chronos-Bolt mixture 1.214 0.831 0.648 0.477 11
Chronos-Bolt multi_seasonal_complex 5.560 1.257 1.047 1.786 2
Chronos-Bolt noisy_chaotic 1.209 1.168 0.711 0.382 0
Chronos-Bolt nonsinusoidal_seasonal 4.460 1.080 1.166 1.433 0
Chronos-Bolt parametric 2.870 0.877 0.653 0.905 4
Chronos-Bolt random_walk_drift 3.074 1.898 0.579 1.015 1
Chronos-Bolt regime_switching 2.850 1.392 0.549 0.971 2
Chronos-Bolt seasonal_dominant 3.212 0.830 1.030 1.218 0
Chronos-Bolt sequential_par 1.070 1.090 0.899 0.340 0
Chronos-Bolt trend_dominant 1.026 0.894 0.297 0.323 3
Sundial amplitude_modulated 2.080 0.821 0.898 0.755 0
Sundial anomaly_heavy 1.237 0.700 0.517 0.463 1
Sundial ar_colored_noise 0.897 1.006 0.826 0.330 0
Sundial block_bootstrap 1.601 1.228 1.129 0.624 0
Sundial clean_low_noise 3.886 0.829 0.705 1.847 5
Sundial intermittent_bursts 1.164 1.109 1.351 0.432 0
Sundial mixture 1.461 1.052 0.844 0.653 11
Sundial multi_seasonal_complex 2.311 0.591 0.627 0.904 2
Sundial noisy_chaotic 1.205 1.187 0.713 0.449 0
Sundial nonsinusoidal_seasonal 3.430 0.827 1.050 1.180 0
Sundial parametric 3.115 0.959 0.706 1.099 4
Sundial random_walk_drift 3.163 1.968 0.594 1.226 1
Sundial regime_switching 3.003 1.902 0.586 1.193 2
Sundial seasonal_dominant 0.852 0.225 0.415 0.349 0
Sundial sequential_par 1.076 1.118 0.827 0.409 0
Sundial trend_dominant 1.839 1.575 0.446 0.787 3
TimesFM amplitude_modulated 2.111 0.834 0.900 0.662 0
TimesFM anomaly_heavy 1.002 0.609 0.455 0.326 1
TimesFM ar_colored_noise 0.875 0.974 0.799 0.274 0
TimesFM block_bootstrap 1.538 1.031 1.229 0.550 0
TimesFM clean_low_noise 3.411 0.667 0.552 1.213 5
TimesFM intermittent_bursts 1.164 1.099 1.394 0.370 0
TimesFM mixture 1.336 0.909 0.666 0.527 11
TimesFM multi_seasonal_complex 1.460 0.358 0.429 0.468 2
TimesFM noisy_chaotic 1.111 1.083 0.674 0.349 0
TimesFM nonsinusoidal_seasonal 3.417 0.815 0.961 1.043 0
TimesFM parametric 2.895 0.881 0.676 0.900 4
TimesFM random_walk_drift 2.875 1.747 0.555 0.934 1
TimesFM regime_switching 2.394 1.432 0.476 0.850 2
TimesFM seasonal_dominant 0.430 0.118 0.258 0.142 0
TimesFM sequential_par 1.075 1.107 0.838 0.340 0
TimesFM trend_dominant 0.833 0.809 0.301 0.254 3

Paired tests (α=0.05, Holm-corrected across archetypes, positive Δ favors first model):

archetype MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
intermittent_bursts 1.047 -0.053 -0.092 -0.020 0.001 0.008 Chronos-2
mixture 1.105 -0.127 -0.183 -0.076 0.001 0.008 Chronos-2
nonsinusoidal_seasonal 1.153 -0.453 -0.774 -0.159 0.001 0.014 Chronos-2
noisy_chaotic 1.044 -0.046 -0.105 0.003 0.066 0.858 none
amplitude_modulated 1.054 -0.108 -0.261 0.056 0.192 1.000 none
anomaly_heavy 1.016 -0.016 -0.128 0.087 0.797 1.000 none
ar_colored_noise 1.031 -0.026 -0.063 0.005 0.114 1.000 none
block_bootstrap 1.003 -0.005 -0.034 0.024 0.664 1.000 none
clean_low_noise 0.928 0.266 -0.428 1.008 0.457 1.000 none
multi_seasonal_complex 1.185 -0.227 -0.687 0.253 0.325 1.000 none
parametric 1.029 -0.081 -0.194 0.031 0.178 1.000 none
random_walk_drift 1.001 -0.003 -0.228 0.236 0.995 1.000 none
regime_switching 0.916 0.219 -0.159 0.607 0.278 1.000 none
seasonal_dominant 1.088 -0.035 -0.094 0.015 0.217 1.000 none
sequential_par 0.967 0.037 -0.019 0.116 0.267 1.000 none
trend_dominant 1.062 -0.048 -0.137 0.015 0.208 1.000 none

Quantile calibration

Reliability curve: for each nominal quantile level (e.g. p90), the fraction of (series, horizon-step) positions where the true target actually fell at or below that level's forecast. A perfectly calibrated model traces the diagonal.

What does this mean?

How to read it
Above the diagonal means this model's forecasts at that level are set too high (the target clears them more often than the nominal rate implies); below the diagonal means set too low. This is orthogonal to point-forecast accuracy (MASE) above -- a model can have excellent MASE and poor calibration, or vice versa.

Limitations
Computed by pooling every (series, horizon-step) position; a model that's well-calibrated on average can still be miscalibrated on a specific family or horizon range the pooled curve doesn't show. the forecast-stochasticity asymmetry applies here too: a sampled model's quantiles reflect real predictive uncertainty a deterministic model's quantile head cannot represent the same way.

PIT histogram

Probability integral transform: where each target actually falls within its own model's quantile forecasts, approximated by linear interpolation between the handful of quantile levels this repo requests.

What does this mean?

How to read it
A flat histogram across [0, 1] is the calibration signature; a hump in the middle means intervals are too wide (underconfident, targets cluster near the median forecast); mass piled at the edges means intervals are too narrow (overconfident).

Limitations
Coarse by construction -- only as fine-grained as the configured quantile levels (`l0.quantiles`), not a true continuous-CDF PIT.

Interval coverage, sharpness, and quantile crossing

model nominal coverage empirical coverage mean interval width quantile crossing rate
TimesFM 0.800 0.795 48.157 0.000
Chronos-2 0.800 0.772 45.585 0.000
Sundial 0.800 0.369 20.108 0.000
Chronos-Bolt 0.800 0.749 48.634 0.000

Outer-interval (lowest to highest configured quantile level) empirical vs. nominal coverage, mean interval width (sharpness), and how often a model's own quantile levels are non-monotonic (a claimed higher-level forecast below a lower-level one -- a real forecast-head defect, not a calibration question).

What does this mean?

How to read it
Empirical coverage close to nominal is good; a wide gap either way means this model's stated interval doesn't mean what it claims. Sharpness alone (narrower is 'better') is only meaningful once coverage is already close to nominal -- a narrow, badly-undercovering interval is not an improvement.

Limitations
Quantile crossing rate should be 0 or near-0 for any competently implemented quantile head; a nonzero rate here is a real defect worth investigating in that model's `predict` path, not a modeling nuance to read past.

Reliability from own quantile width

For each model, series are grouped into equal-count deciles by that model's OWN quantile-band width, and each decile's mean realized MASE is plotted against it — the free reliability check a practitioner already has after one model's forecast, needing no second checkpoint.

What does this mean?

How to read it
A rising line means this model's own stated uncertainty tracks its actual error: when its band is wide, expect a bigger miss. found this signal beats cross-model disagreement as an error predictor in 10 of 11 scorable model-runs across six existing run directories — this panel is that winning baseline, not the losing heuristic.

Limitations
A model with a flat or non-monotonic line here has an uninformative uncertainty band even if its point forecasts are good — width and accuracy are different properties. Computed on this run's own dev corpus only; whether the relationship holds on a different data distribution is untested.

model Spearman (own width vs error) deciles
TimesFM 0.842 10
Chronos-2 0.818 10
Sundial 0.840 10
Chronos-Bolt 0.794 10

MASE by horizon step

Per-horizon-step absolute error, scaled by the same per-series MASE denominator used everywhere else in L0 -- the whole-horizon MASE elsewhere in this report is this curve's own mean.

What does this mean?

How to read it
A rising curve means error compounds with forecast distance, as expected; a flat curve means the model's error is dominated by something other than distance-from-context (e.g. a systematic bias). Compare the *shape*, not just the endpoints, between models: one model can start worse at h=1 and end better at h=H, which the whole-horizon average alone would hide.

Limitations
Pooled across every series in the corpus; a family- or archetype-specific curve would need the `by_family` breakdown in the underlying artifact, not shown here.

Pinball loss by horizon step

Same per-horizon-step reduction applied to pinball loss instead of point MASE -- so this reflects the whole quantile forecast's calibration-weighted accuracy at each step, not just the point forecast.

What does this mean?

How to read it
Read alongside the calibration section above: a model whose pinball loss grows faster than its MASE at long horizons is likely widening its intervals appropriately (expected and healthy); one whose pinball loss stays flat while MASE grows may be under-widening its uncertainty at long range.

Limitations
Same pooling caveat as the MASE curve above.

Paired family tests (α=0.05, Holm-corrected, positive Δ favors first model (n_boot=2000, p floored at 1/n_boot=0.0005))

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored Power / MDE
mixture 1.105 -0.127 -0.186 -0.076 0.001 0.015 Chronos-2 achieved power 98% at this n
block_bootstrap 1.003 -0.005 -0.033 0.024 0.703 1.000 none No difference detected. A true difference of >= 0.039 MASE would have been detected 80% of the time at this n.
parametric 1.029 -0.081 -0.195 0.033 0.172 1.000 none No difference detected. A true difference of >= 0.165 MASE would have been detected 80% of the time at this n.
random_parametric 1.029 -0.052 -0.142 0.037 0.266 1.000 none No difference detected. A true difference of >= 0.142 MASE would have been detected 80% of the time at this n.
sequential_par 0.967 0.037 -0.018 0.120 0.250 1.000 none No difference detected. A true difference of >= 0.078 MASE would have been detected 80% of the time at this n.

`Power / MDE`: for a family with no detected difference, the smallest true difference this run's sample size could reliably (80% of the time) have caught; for a family that already found a strength, how often a repeat of this exact test would find it again.

What does this mean?

How to read it
A family reading 'not testable' has no meaningful MDE at all -- either the Holm correction for this many comparisons cannot reach significance at this n_boot no matter the effect size, the family has too few series to resample, or every series gave an identical paired delta. Read 'no difference detected, MDE = X' as a statement about this RUN's resolving power, never as evidence the two models behave the same on that family.

Limitations
Simulation-based and therefore itself noisy at the `n_sim` used; not a substitute for running more series if the MDE is larger than the effect size a reader actually cares about.

Paired family tests — TimesFM vs. Sundial

Positive Δ favors TimesFM. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
random_parametric 0.872 0.267 0.151 0.383 0.001 0.015 TimesFM
mixture 0.915 0.125 0.058 0.200 0.001 0.019 TimesFM
block_bootstrap 0.960 0.064 0.025 0.101 0.002 0.036 TimesFM
parametric 0.929 0.221 0.065 0.377 0.008 0.128 none
sequential_par 0.999 0.001 -0.029 0.031 0.911 1.000 none

Paired family tests — TimesFM vs. Chronos-Bolt

Positive Δ favors TimesFM. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
mixture 1.101 -0.122 -0.186 -0.067 0.001 0.015 Chronos-Bolt
random_parametric 0.653 0.968 0.757 1.179 0.001 0.015 TimesFM
block_bootstrap 0.959 0.066 0.011 0.138 0.013 0.195 none
parametric 1.008 -0.024 -0.195 0.135 0.773 1.000 none
sequential_par 1.005 -0.006 -0.040 0.032 0.804 1.000 none

Paired family tests — Chronos-2 vs. Sundial

Positive Δ favors Chronos-2. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
block_bootstrap 0.957 0.069 0.032 0.107 0.001 0.015 Chronos-2
mixture 0.828 0.252 0.174 0.344 0.001 0.015 Chronos-2
parametric 0.903 0.301 0.150 0.461 0.001 0.015 Chronos-2
random_parametric 0.848 0.319 0.205 0.439 0.001 0.015 Chronos-2
sequential_par 1.033 -0.036 -0.127 0.031 0.432 1.000 none

Paired family tests — Chronos-2 vs. Chronos-Bolt

Positive Δ favors Chronos-2. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
random_parametric 0.635 1.020 0.805 1.252 0.001 0.015 Chronos-2
block_bootstrap 0.955 0.072 0.018 0.141 0.006 0.102 none
mixture 0.996 0.005 -0.023 0.031 0.726 1.000 none
parametric 0.980 0.056 -0.087 0.195 0.412 1.000 none
sequential_par 1.040 -0.043 -0.134 0.017 0.252 1.000 none

Paired family tests — Sundial vs. Chronos-Bolt

Positive Δ favors Sundial. Holm-adjusted across every (pair, family) test in this run, not within this pair alone.

family MASE ratio paired ΔMASE lo hi p (boot) p (Holm) favored
mixture 1.204 -0.247 -0.340 -0.166 0.001 0.015 Chronos-Bolt
random_parametric 0.749 0.701 0.512 0.884 0.001 0.015 Sundial
parametric 1.085 -0.245 -0.430 -0.046 0.016 0.224 none
block_bootstrap 0.998 0.003 -0.057 0.076 0.979 1.000 none
sequential_par 1.006 -0.007 -0.053 0.038 0.764 1.000 none

The model pairs this run configures beyond the first. L0 is the only stage that can honestly run for all of them -- it needs nothing but each model's `predict`, no alignment, no shared window axis.

What does this mean?

How to read it
Read these exactly like the first pair's table above; the correction is joint, so a p (Holm) here and one there came out of the same adjustment.

Limitations
A few stages report one pair only -- named in the multiplicity ledger below, and read from the run's own record rather than listed here. The pairs they omit are unexamined there, which is a stronger statement than 'weakly evidenced'.

Multiplicity ledger

3599 corrected comparisons were made in this report, in 45 independent correction families. Each family's own correction (Holm for behavioral/confirm comparisons, BH for cross-model transfer tests) is applied within it and never across families, so the counts below do not add up to one test — they are the multiplicity a reader would otherwise have to infer from the tables. This run configures 4 models, so L0 tests all 6 pairs and corrects across every (pair, family) test at once. L3's cross-model fingerprint agreement, the per-family exemplars and the held-out confirmation report one pair only (TimesFM vs. Chronos-2), because each produces a single artifact rather than a per-pair one; the remaining pairs are not weakly-evidenced there, they are unexamined.

correction family comparisons method α n_boot most stringent threshold smallest p (Holm) reachable min. batch to survive (BH)
L0 per-family paired tests 30 holm 0.050 2000 0.002 0.015 NaN
L0 per-archetype paired tests 16 holm 0.050 2000 0.003 0.008 NaN
Confirm — pre-registered hypotheses (private corpus) 1 holm 0.050 2000 0.050 0.001 NaN
Transfer — Chronos-2 → Chronos-Bolt (forward leg, exact) 12 bh 0.050 200 0.004 NaN 2.000
Transfer — Chronos-2 → Chronos-Bolt (reverse leg, exact) 12 bh 0.050 200 0.004 NaN 2.000
Transfer — Chronos-2 → Sundial (forward leg, exact) 36 bh 0.050 200 0.001 NaN 4.000
Transfer — Chronos-2 → Sundial (reverse leg, exact) 36 bh 0.050 200 0.001 NaN 4.000
Transfer — Chronos-2 → TimesFM (forward leg, exact) 40 bh 0.050 200 0.001 NaN 4.000
Transfer — Chronos-2 → TimesFM (reverse leg, exact) 40 bh 0.050 200 0.001 NaN 4.000
Transfer — Chronos-Bolt → Chronos-2 (forward leg, exact) 12 bh 0.050 200 0.004 NaN 2.000
Transfer — Chronos-Bolt → Chronos-2 (reverse leg, exact) 12 bh 0.050 200 0.004 NaN 2.000
Transfer — Chronos-Bolt → Sundial (forward leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Transfer — Chronos-Bolt → Sundial (reverse leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Transfer — Chronos-Bolt → TimesFM (forward leg, exact) 20 bh 0.050 200 0.003 NaN 2.000
Transfer — Chronos-Bolt → TimesFM (reverse leg, exact) 20 bh 0.050 200 0.003 NaN 2.000
Transfer — Sundial → Chronos-2 (forward leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Transfer — Sundial → Chronos-2 (reverse leg, exact) 18 bh 0.050 200 0.003 NaN 2.000
Transfer — Sundial → Chronos-Bolt (forward leg, exact) 9 bh 0.050 200 0.006 NaN 1.000
Transfer — Sundial → Chronos-Bolt (reverse leg, exact) 9 bh 0.050 200 0.006 NaN 1.000
Transfer — Sundial → TimesFM (forward leg, exact) 30 bh 0.050 200 0.002 NaN 3.000
Transfer — Sundial → TimesFM (reverse leg, exact) 30 bh 0.050 200 0.002 NaN 3.000
Atlas Transfer — Chronos-2 → Chronos-Bolt (forward leg, exact) 81 bh 0.050 200 0.001 NaN 9.000
Atlas Transfer — Chronos-2 → Chronos-Bolt (reverse leg, exact) 81 bh 0.050 200 0.001 NaN 9.000
Atlas Transfer — Chronos-2 → Sundial (forward leg, exact) 243 bh 0.050 200 0.000 NaN 25.000
Atlas Transfer — Chronos-2 → Sundial (reverse leg, exact) 243 bh 0.050 200 0.000 NaN 25.000
Atlas Transfer — Chronos-2 → TimesFM (forward leg, exact) 270 bh 0.050 200 0.000 NaN 27.000
Atlas Transfer — Chronos-2 → TimesFM (reverse leg, exact) 270 bh 0.050 200 0.000 NaN 27.000
Atlas Transfer — Chronos-Bolt → Chronos-2 (forward leg, exact) 28 bh 0.050 200 0.002 NaN 3.000
Atlas Transfer — Chronos-Bolt → Chronos-2 (reverse leg, exact) 28 bh 0.050 200 0.002 NaN 3.000
Atlas Transfer — Chronos-Bolt → Sundial (forward leg, exact) 36 bh 0.050 200 0.001 NaN 4.000
Atlas Transfer — Chronos-Bolt → Sundial (reverse leg, exact) 36 bh 0.050 200 0.001 NaN 4.000
Atlas Transfer — Chronos-Bolt → TimesFM (forward leg, exact) 40 bh 0.050 200 0.001 NaN 4.000
Atlas Transfer — Chronos-Bolt → TimesFM (reverse leg, exact) 40 bh 0.050 200 0.001 NaN 4.000
Atlas Transfer — Sundial → Chronos-2 (forward leg, exact) 196 bh 0.050 200 0.000 NaN 20.000
Atlas Transfer — Sundial → Chronos-2 (reverse leg, exact) 196 bh 0.050 200 0.000 NaN 20.000
Atlas Transfer — Sundial → Chronos-Bolt (forward leg, exact) 84 bh 0.050 200 0.001 NaN 9.000
Atlas Transfer — Sundial → Chronos-Bolt (reverse leg, exact) 84 bh 0.050 200 0.001 NaN 9.000
Atlas Transfer — Sundial → TimesFM (forward leg, exact) 280 bh 0.050 200 0.000 NaN 28.000
Atlas Transfer — Sundial → TimesFM (reverse leg, exact) 280 bh 0.050 200 0.000 NaN 28.000
Atlas Transfer — TimesFM → Chronos-2 (forward leg, exact) 119 bh 0.050 200 0.000 NaN 12.000
Atlas Transfer — TimesFM → Chronos-2 (reverse leg, exact) 119 bh 0.050 200 0.000 NaN 12.000
Atlas Transfer — TimesFM → Chronos-Bolt (forward leg, exact) 51 bh 0.050 200 0.001 NaN 6.000
Atlas Transfer — TimesFM → Chronos-Bolt (reverse leg, exact) 51 bh 0.050 200 0.001 NaN 6.000
Atlas Transfer — TimesFM → Sundial (forward leg, exact) 153 bh 0.050 200 0.000 NaN 16.000
Atlas Transfer — TimesFM → Sundial (reverse leg, exact) 153 bh 0.050 200 0.000 NaN 16.000

Coarse p-floor — 40 of 42 BH transfer families. Their exact permutation p-values are floored at 1/(n_null+1), which sits above BH's rank-1 bar q/m, so a lone transfer cannot survive there: BH is step-up, and a family only declares discoveries once 2–28 floor-level p-values arrive together. Survivors in these families are genuine FDR-controlled results; the non-survivors are partly arithmetic. Set concepts.transfer_p_method: adaptive to resolve floor-hitting legs with a larger null.

How many statistical comparisons this report actually made, and under what correction.

What does this mean?

How to read it
'Most stringent threshold' is alpha/n -- the bar the *smallest* p-value in that family must clear under Holm's first step. Later steps are progressively less strict, so this is the ceiling on severity, not the bar every test faced.

Limitations
These families are corrected separately, by design: the dev corpus is hypothesis-generating and Confirm is one-shot by construction. Pooling them into one Bonferroni family would be more conservative but would also mean a pre-registered confirmation paid for every exploratory look, which is exactly the trade the exploration/confirmation split exists to avoid.

Cost

Cost and capacity

What each model costs to run — parameters, measured FLOPs, latency, VRAM — and what its L0 quality looks like per unit of compute rather than in absolute terms.

What this stage tells you

Question
What does each model cost to run, and is its forecast quality bought with more compute?

How
Runs a handful of extra forward (and, optionally, full-forecast) passes through each model while measuring parameter counts, FLOPs, wall-clock latency, and peak GPU memory, then re-plots each model's L0 accuracy against those costs instead of looking at accuracy alone.

Good vs. bad result
Good: FLOPs are measured directly (not falling back to an unmeasured or 'suspicious_low' reading) and the model sits down-and-to-the-left on the compute-normalized chart — lower error for less compute. Bad: a `flops_sanity: suspicious_low` verdict (the measurement can't see a fused or custom kernel and is undercounting compute), or the L0 stage didn't run, so cost can't be normalized by quality at all.

What it cannot tell you
Cost is measured only at this run's own context length, batch, and horizon — it does not generalize to a different sequence length, and FLOPs are not the same thing as latency (a model with fewer FLOPs can still be slower on real hardware). It also only tells you the price of a forward pass, never whether that price bought anything mechanistically interesting — that's what every later stage is for.

Measured over batch 8, context 512, horizon 64.

model params (M) body (M) blocks FLOPs/series forward (ms) predict (ms) peak VRAM (MB) FLOPs check
TimesFM 231.289 196.715 20 7.42 GFLOPs 38.069 37.017 977.705 plausible
Chronos-2 119.478 113.274 12 8.65 GFLOPs 20.653 21.686 257.922 plausible
Sundial 128.330 113.311 12 7.44 GFLOPs 7.375 56.351 595.922 plausible
Chronos-Bolt 47.718 18.881 6 1.59 GFLOPs 13.731 13.656 109.311 plausible

How much of each model this run actually observed

model blocks captured params captured FLOPs of capture pass FLOPs of full forecast capture pass / forecast observed (headline) depth claims qualified
TimesFM 10/20 42.5% 42.5% 42.5% 100.0% 42.5% True
Chronos-2 12/12 94.8% 97.5% 97.5% 100.0% 97.5% False
Sundial 12/12 88.3% 97.9% 22.4% 22.9% 22.4% True
Chronos-Bolt 6/6 39.6% 79.3% 79.3% 100.0% 79.3% True

⚠ TimesFM: 34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched.

⚠ TimesFM: 10 of 20 matched blocks are skipped by capture_layer_stride=2.

⚠ Sundial: 15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched.

⚠ Sundial: the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved.

⚠ Chronos-Bolt: 28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched.

Computational coverage, as opposed to the section coverage in report/coverage.json: what fraction of each model's own forward work the capture surface saw. This is the single most important caveat on any depth-located claim, and until now it existed only as prose in.

What does this mean?

How to read it
Read the 'observed (headline)' column first. Blocks-captured measures capture_layer_stride loss only and is 1/1 even for a regex that covers just an encoder; params- and FLOPs-captured use whole-model denominators and so do see that. Any model under 90% gets every depth-located finding qualified automatically in the findings list. A headline marked 'or less' is an upper bound taken from the capture-pass/forecast ratio, used when per-block FLOPs did not resolve by name — it still gates correctly, since a model failing the bar even optimistically has certainly failed it.

Limitations
The FLOPs denominators come from the same measured counter as the table above, so a 'suspicious_low' FLOPs check disarms these fractions too. 'FLOPs of full forecast' is measured at this run's decoding settings — for a sampled decoder, num_samples moves the denominator, so it is a property of this run, not of the architecture alone. A blank means not measurable here, which is not the same as full coverage.

Compute completed by depth

How much of each model's *full forecast* has actually happened by a given point on the relative-depth axis that every cross-model depth figure in this report shares. It is the honesty check on those figures: two models at the same relative depth have generally not done the same share of their work.

What does this mean?

How to read it
Each curve rises from 0 toward the fraction of that model's own measured forecast FLOPs its captured blocks account for. Read a depth-located claim about a model whose curve is far below another's at the same x as being about a different amount of computation — a claim at depth 0.5 is only 'halfway through the model' if the curve is near 0.5 there too. Chronos-Bolt, Sundial and TimesFM top out well short of 1.0 here — that matches the coverage table above rather than contradicting it, and is the reason a depth-located claim about those models carries an automatic qualifier.

Limitations
Normalized by predict.flops (the full forecast, incl. every sampled decode pass) when `budget.measure_predict` measured it — the fix (D2) / named, now built — falling back to the capture-pass FLOPs only when no forecast measurement exists, in which case a curve reaching 1.0 means 'covers its own forward pass', not 'covers the forecast'.

Quality per unit of compute

The practitioner's question, which no accuracy number alone can answer: is the more accurate model simply the one that spent more? Overall MASE is re-plotted against measured cost — FLOPs per series on the left, parameters on the right.

What does this mean?

How to read it
Lower is better on the y axis; further left is cheaper on the x axis. A model in the lower-left is winning outright. A model that is lower but further right is buying its accuracy with compute, and whether that is a good trade is a deployment decision this chart deliberately does not make for you. Both x axes are logarithmic, because model sizes worth comparing differ by orders of magnitude.

Limitations
FLOPs are a measured proxy for cost, not a measure of wall-clock latency — a model can be FLOP-cheap and slow, or FLOP-heavy and fast, depending on how well its shapes map onto the hardware. Both are measured at this run's single context length and horizon and do not extrapolate to others. Models whose internals could not be measured are absent from this chart rather than plotted at zero.

Measured cost of one forward pass over this run's own context length and batch, per model. FLOPs are measured with torch.utils.flop_counter.FlopCounterMode rather than derived from a hand-written formula, so the number is architecture-agnostic and works for a model nobody has written a cost model for. Parameters are split into front-end / body / head by module position relative to the captured blocks.

What does this mean?

How to read it
Latency is a median over repeated calls on this machine and is the least portable row here — read FLOPs and parameters for anything meant to transfer. FLOPs/series divides by the measured batch, so it is comparable across models even when their batch sizes differ. In the compute-normalized panel, down and to the left is better: lower MASE for less compute.

Limitations
FLOPs are not latency: a model with fewer FLOPs can be slower if its shape suits the hardware worse, and a fused or custom kernel the counter cannot see is undercounted (the flops_sanity row states whether the measurement clears an analytic lower bound — a suspicious_low verdict means this model's compute-normalized numbers should not be trusted). The parameter role split is a positional heuristic, not an architectural fact, and is reported as such per model. Cost is measured on this run's context length and horizon only; both scale the answer, attention super-linearly.

Frontend

Input front-end diagnostics

What each model does to its input before any layer runs: quantization resolution, scale-equivariance, context-truncation-from-the-back, and NaN handling.

What this stage tells you

Question
What does each model do to its input BEFORE any layer runs -- how coarsely does it quantize the series, does scaling the input scale the forecast back out cleanly, how does accuracy degrade as recent context goes missing, and what happens when a context value is NaN?

How
Reads each re-quantizing tokenizer's own bin geometry to score how coarse one quantization step is relative to a series' own amplitude; calls `predict` on the input scaled up/down by large factors and compares the rescaled-back forecast to the original; calls `predict` with the most recent context progressively withheld (a staleness scenario, not a front-trim) to trace a degradation curve; and injects NaN at the front, middle, and back of the context to see whether `predict` errors, silently produces a non-finite forecast, or genuinely handles it.

Good vs. bad result
Good: a re-quantizing tokenizer's bin width is a small fraction of the series' own amplitude with little saturating clipping, near-zero scale-equivariance residual, graceful (not cliff-shaped) accuracy degradation as recent context is withheld, and a NaN verdict of 'handled' or an explicit, clean error rather than a silently corrupted forecast. Bad: heavy clipping or a large quantization step relative to signal amplitude, a scale-equivariance residual that grows with the scale factor, a sharp cliff at a specific context length, or a 'propagates' NaN verdict -- a non-finite input silently becomes a non-finite forecast with no error to flag it.

What it cannot tell you
Every diagnostic here is about the FRONT DOOR only -- what happens before or around a forward pass, never what happens inside one (that's every other stage's job). Quantization resolution is meaningful only for a re-quantizing tokenizer and is reported as 'not applicable', never a fabricated zero, for a continuous-embedding architecture. NaN handling is checked at only a handful of hand-placed positions and one missing-fraction, not exhaustively; and none of these four probes says anything about forecast quality on ordinary, well-formed input -- L0 is what answers that.

Measured over 64 sampled series, context 512, horizon 64.

Quantization resolution

model status bin width (frac of amplitude) series with any clipping mean clip fraction
TimesFM not_applicable — — —
Chronos-2 not_applicable — — —
Sundial not_applicable — — —
Chronos-Bolt not_applicable — — —

TimesFM: not applicable — adapter.token_ids is None -- no re-quantizing tokenizer for this probe to measure (continuous patch-MLP embedding)

Chronos-2: not applicable — adapter.token_ids is None -- no re-quantizing tokenizer for this probe to measure (continuous patch-MLP embedding)

Sundial: not applicable — adapter.token_ids is None -- no re-quantizing tokenizer for this probe to measure (continuous patch-MLP embedding)

Chronos-Bolt: not applicable — adapter.token_ids is None -- no re-quantizing tokenizer for this probe to measure (continuous patch-MLP embedding)

A re-quantizing tokenizer maps each context onto a fixed number of bins whose edges are set from that series' own statistics. This asks how coarse one bin actually is relative to a series' own amplitude, and how often the tokenizer's saturating clamp is hit.

What does this mean?

How to read it
A small 'bin width' fraction means the tokenizer can distinguish fine detail; a large one means real amplitude differences within a series collapse onto the same token. Read 'series with any clipping' alongside it — clipping means a value was extreme enough to fall entirely outside the tokenizer's bin range, not just coarsely binned.

Limitations
Only meaningful for a re-quantizing tokenizer — a continuous embedding has no bin geometry for this probe to measure and is reported as 'not applicable', never a fabricated zero (Chronos-2, Chronos-Bolt, Sundial and TimesFM in this run). The bin geometry is read directly from the checkpoint's own tokenizer, never hardcoded.

Scale-equivariance

model factor residual (× context scale) max residual non-finite series
TimesFM 1000.0 0.0000 0.0000 0
TimesFM 0.001 0.0000 0.0000 0
Chronos-2 1000.0 0.0087 0.0531 0
Chronos-2 0.001 0.0093 0.0520 0
Sundial 1000.0 0.0000 0.0002 0
Sundial 0.001 0.0332 0.2105 0
Chronos-Bolt 1000.0 0.0084 0.0414 0
Chronos-Bolt 0.001 0.0087 0.0442 0

A forecaster that only cares about a series' shape should predict the same thing (after unscaling) whether the input arrives as raw units or multiplied by 1000 or 0.001 — this checks whether that holds in practice.

What does this mean?

How to read it
The residual is the mean absolute difference between the original forecast and the rescaled-then-unscaled one, normalized by each series' own typical step size (the same scale MASE uses) so it's comparable across series. Near zero means the model is effectively scale-equivariant at that factor; a residual that grows with the scale factor means extreme scales genuinely confuse the model's own internal normalization, not just numerical noise. A model flagged as 'not scale-equivariant through this adapter' crossed a threshold set relative to the other models measured in this same run (10x their median worst residual, floored at 1.0 context-scale unit) — read this as 'this adapter likely bypasses the checkpoint's own input normalization', not as an architectural property of the model family.

Limitations
Non-finite series (overflow/underflow at an extreme scale factor) are excluded from the residual average but counted separately — a model that fails outright at 1000× is a different, more severe finding than one that degrades gracefully, and averaging the two together would hide which one happened.

Context truncation from the back

model shape baseline MASE (median) most-truncated MASE (median) most-truncated MASE (raw mean) worst step (frac of total degradation)
TimesFM graceful 0.963 3.567 3.13e+05 0.36
Chronos-2 graceful 0.980 3.739 3.13e+05 0.38
Sundial graceful 1.281 3.770 3.13e+05 0.52
Chronos-Bolt graceful 1.289 3.952 3.13e+05 0.47

Unlike the existing phase-sensitivity and context-scaling diagnostics (which both trim OLD history from the front), this asks what happens when the most RECENT context is what's missing — a data-staleness or reporting-lag scenario — by keeping the front of the context and asking the model to forecast further ahead to reach the same fixed target.

What does this mean?

How to read it
'Graceful' means accuracy degrades roughly evenly as more recent context goes missing; 'cliff' means it stays flat until one specific length, then jumps sharply — a hard floor below which the model has almost nothing useful left to work with. 'no_degradation' means withholding recent context didn't measurably hurt this model on this corpus.

Limitations
This is a genuinely different axis from phase-sensitivity (sub-patch-width front shifts) and context-scaling/E20 (which keeps recent history intact and only drops old history) — do not read this section as a duplicate or a replacement for either. A model that cannot forecast far enough to bridge a large staleness gap has that length point skipped rather than crashing the whole diagnostic; fewer than 3 surviving points means the shape could not be characterized at all for that model. Baseline/most-truncated MASE and the shape classification all use the per-length MEDIAN, not the raw mean, over series — at the shortest available-context lengths, a handful of series are locally near-flat over that short a window, which sends MASE's own denominator toward its floor and that series' MASE toward an astronomical, non-representative value regardless of forecast quality. The raw mean is shown alongside specifically so a large gap between the two columns is visible as the tell that this is happening, rather than silently absorbed into one number.

NaN / missing-timestep handling

model verdict raised propagated non-finite clean scenarios
TimesFM propagates 0 3 0 3
Chronos-2 handled 0 0 3 3
Sundial propagates 0 3 0 3
Chronos-Bolt handled 0 0 3 3

Whether each model errors, silently propagates a NaN into its forecast, or genuinely handles a missing timestep in its context — three very different outcomes this repo does not assume in advance.

What does this mean?

How to read it
'errors' and 'handled' are both acceptable outcomes (a loud failure is honest; genuine handling is a real capability). 'propagates' is the dangerous case: a non-finite forecast with no error raised looks like an ordinary result until something downstream notices the NaN. 'mixed' means the verdict depends on where in the context the value went missing.

Limitations
Checked at only three hand-placed positions (front/middle/back of context) and one missing-fraction (default 5% of context) — not exhaustive. A model verdict here says nothing about forecast QUALITY on ordinary, well-formed input; it only characterizes what happens at this one specific failure mode.

Part 3 — Where the forecast forms inside each model

Which layers were worth the expensive analyses below, what each model's own depth profile looks like, and where its forecast crystallizes.

↑ contents
Screen

Layer screening

Which of each model's own captured layers were flagged as worth further, expensive analysis — and what sae.targets: auto trained on.

What this stage tells you

Question
Which of this model's own layers are worth spending the expensive stages (Lens, L1, L2, L3, attention, SAE) on?

How
Scores every layer a model actually captured with a cheap, architecture-agnostic proxy for 'interesting residual-stream activity' — by default, how much a layer's own trajectory through activation space bends and does work — and flags the highest scorers within a compute budget.

Good vs. bad result
Good: the selected layer(s) coincide with, or precede, the layers where L1/L2/L3/Lens later find the strongest real signal — the cheap proxy pointed at something genuine. Bad: a selection sitting at the very first or very last layer with no real signal there, or a run where the report has to state the method fell back to a uniform-stride null because its own selection failed.

What it cannot tell you
This is a cheap proxy for interestingness, not interestingness itself — it won a single-corpus, single-checkpoint-pair bake-off, not a validated rule across architectures. It also only screens the layers `capture_layer_stride` actually captured, so at a stride greater than 1 it cannot see, and cannot recommend, half the model's blocks; it answers 'which captured layer looks most active,' not 'which is the best layer in the whole model.'

TimesFM

Screened all 20 of 20 model blocks (dedicated stride-1 screening pass, independent of capture_layer_stride=2).

A cheap score over this model's own layers, used to decide which few layers are worth spending an expensive analysis (an SAE) on. The bars are the score; the highlighted ones are what the screen selected — the highest-scoring layers, up to a budget of 5 for this model and nothing else.

What does this mean?

How to read it
Height is only meaningful relative to the other bars for the same model — it is a ranking device, not a quantity with units. A screen worth trusting picks layers in the middle-to-late range and clearly separates them from the rest; a flat profile means the screen found nothing to distinguish layers by, and the selection is close to arbitrary.

Limitations
This is a cheap proxy for interestingness, not interestingness itself — it was chosen by a bake-off against random and uniform-stride nulls on one corpus and one checkpoint pair. It also scores only the layers this run actually captured, so if the header above warns that not every block was screened, a better layer may exist that was never looked at.

Chronos-2

Screened all 12 of 12 model blocks (dedicated stride-1 screening pass, independent of capture_layer_stride=1).

A cheap score over this model's own layers, used to decide which few layers are worth spending an expensive analysis (an SAE) on. The bars are the score; the highlighted ones are what the screen selected — the highest-scoring layers, up to a budget of 3 for this model and nothing else.

What does this mean?

How to read it
Height is only meaningful relative to the other bars for the same model — it is a ranking device, not a quantity with units. A screen worth trusting picks layers in the middle-to-late range and clearly separates them from the rest; a flat profile means the screen found nothing to distinguish layers by, and the selection is close to arbitrary.

Limitations
This is a cheap proxy for interestingness, not interestingness itself — it was chosen by a bake-off against random and uniform-stride nulls on one corpus and one checkpoint pair. It also scores only the layers this run actually captured, so if the header above warns that not every block was screened, a better layer may exist that was never looked at.

Sundial

Screened all 12 of 12 model blocks (dedicated stride-1 screening pass, independent of capture_layer_stride=1).

A cheap score over this model's own layers, used to decide which few layers are worth spending an expensive analysis (an SAE) on. The bars are the score; the highlighted ones are what the screen selected — the highest-scoring layers, up to a budget of 3 for this model and nothing else.

What does this mean?

How to read it
Height is only meaningful relative to the other bars for the same model — it is a ranking device, not a quantity with units. A screen worth trusting picks layers in the middle-to-late range and clearly separates them from the rest; a flat profile means the screen found nothing to distinguish layers by, and the selection is close to arbitrary.

Limitations
This is a cheap proxy for interestingness, not interestingness itself — it was chosen by a bake-off against random and uniform-stride nulls on one corpus and one checkpoint pair. It also scores only the layers this run actually captured, so if the header above warns that not every block was screened, a better layer may exist that was never looked at.

Chronos-Bolt

Screened all 6 of 6 model blocks (dedicated stride-1 screening pass, independent of capture_layer_stride=1).

A cheap score over this model's own layers, used to decide which few layers are worth spending an expensive analysis (an SAE) on. The bars are the score; the highlighted ones are what the screen selected — the highest-scoring layers, up to a budget of 2 for this model and nothing else.

What does this mean?

How to read it
Height is only meaningful relative to the other bars for the same model — it is a ranking device, not a quantity with units. A screen worth trusting picks layers in the middle-to-late range and clearly separates them from the rest; a flat profile means the screen found nothing to distinguish layers by, and the selection is close to arbitrary.

Limitations
This is a cheap proxy for interestingness, not interestingness itself — it was chosen by a bake-off against random and uniform-stride nulls on one corpus and one checkpoint pair. It also scores only the layers this run actually captured, so if the header above warns that not every block was screened, a better layer may exist that was never looked at.

A cheap, architecture-agnostic pre-screen run on every one of a model's own captured layers before any expensive downstream stage (lens/L1/L2/L3/attention/SAE) -- the layer(s) it picks per model are what `sae.targets: auto` trains a dictionary on. The bar height is the selector's own internal score (not comparable across models or across methods); the highlighted bars are the layers actually selected, within this run's compute budget.

What does this mean?

How to read it
Read this as "where this method thinks it's worth spending expensive compute", not as a finished interpretability claim -- nothing else in the report depends on it being right, only on what gets trained downstream if `sae.targets` is left empty.

Limitations
The default method (`work_bend`) won a single-corpus, single-checkpoint-pair bake-off (2026-08-05) — real signal, not a settled cross-architecture rule. On some models/corpora the theoretical best possible selector has little room to beat a free uniform-stride null; a method not beating it there is not necessarily broken. `factor_emergence` has a known, diagnosed weighting flaw and underperformed in that bake-off.

Profile

Model internals

Per-model depth profiles: where representations expand, where family information becomes decodable, and how far each layer moves from raw input statistics.

What this stage tells you

Question
What does each model's own internal representation look like at each depth, on its own terms?

How
For each layer of each model separately, measures how many effective dimensions its activations actually use, how close its representation still is to simple statistics of the raw input, and how well a simple classifier can read the data's family straight out of it.

Good vs. bad result
Good: a clear expand-then-compress effective-dimensionality curve, a family-decodability curve that rises well above chance at some depth, and a representation that visibly moves away from raw-input statistics with depth. Bad: a flat effective-dimensionality curve or a family-probe accuracy that never clears chance — either means this per-model view has nothing to say about that model's depth behavior.

What it cannot tell you
Everything here is per-model and descriptive — it never directly compares models against each other (L1 exists for that). 'Decodable' does not mean 'used by the forecast': a layer can carry perfect family information the model itself never reads out. It's also limited to the window-pooled representation, so structure that lives only within a window and not across windows is invisible to it.

effective dimensionality (participation ratio)

Participation ratio of each layer's activation covariance spectrum — an effective count of how many dimensions the representation actually spreads its variance across (not the raw width of the layer), per model, per depth.

What does this mean?

How to read it
Higher means the representation is using more of its available capacity at that layer; a dip means activity is collapsing onto fewer effective directions there. Compare *shape* across depth within a model (expansion then compression is a common pattern) rather than comparing raw values across models with different widths — a 64-dim and a 48-dim layer aren't on the same scale.

Limitations
This is a per-model diagnostic, not a cross-model comparison — two models can have very different effective-dimensionality curves and still solve the forecasting task equally well. It also only sees the *window-pooled* representation, so within-window structure that pooling discards isn't reflected here.

CKA with input features

Linear CKA between each layer's window states and a hand-crafted baseline of that same window's raw values, FFT magnitudes, and summary statistics — how far, per model and per depth, the representation has moved from simple local input statistics.

What does this mean?

How to read it
Near 1.0 means this layer is still basically a linear function of raw local window stats (typical right after an embedding, before much mixing). Near 0 means the representation encodes something the simple local baseline can't see at all, most often because attention has already mixed information across positions/windows before this depth — that decorrelates a *window's* state from that *same window's* own raw statistics even though the information hasn't vanished, it's just no longer purely local.

Limitations
A curve that's low and flat across every depth (including layer 0) usually means mixing saturates fast, which is expected for architectures with very few tokens per context (a handful of patches attend to each other almost immediately). Architectures with many more tokens per context typically show a more gradual decline instead. Low here is neither good nor bad on its own: it says the representation isn't simply local, not whether it's useful.

family probe accuracy (held-out series)

Held-out logistic-regression accuracy predicting the benchmark family from each layer's window states (PCA-reduced first), split by series so windows of a training series never leak into validation — where in depth family identity becomes linearly decodable.

What does this mean?

How to read it
The dotted line is chance (majority-class baseline for however many families exist); the dash-dot line per model is a permutation null — the identical probe refit with family labels reshuffled at the series level, showing how high accuracy can get by chance alone on this exact split and architecture. A peak well above *both* lines means that depth linearly encodes which kind of series this is. The peak layer is called out in the findings below as where family information is most accessible.

Limitations
'Decodable' is not the same as 'used by the forecast' — a layer can carry perfect family information the model never actually reads out (cross-check against the tuned lens and behavioral sensitivity to see what's causally load-bearing). Accuracy is also capped by how separable the configured families actually are in the benchmark, not just by the model. The permutation null is the stronger of the two floors — the majority-class chance line ignores the classifier and split entirely, so a probe can clear it while still scoring within the null's own p95, which means its apparent decodability could be search/split artifact rather than real information.

Chronos-2 — every measured layer

layer rel. depth eff. dim CKA to input probe acc. probe − chance screen score screened in mean Δact (all corruptions) best restoration closest layer in another model that layer's CKA
encoder.block.0 0.000 9.456 0.005 0.770 0.343 -1.718 False 0.594 0.063 Sundial:model.layers.0 0.913
encoder.block.1 0.091 13.026 0.006 0.924 0.497 -1.281 False 0.609 layer not patched Sundial:model.layers.0 0.897
encoder.block.2 0.182 17.369 0.007 0.928 0.501 -1.290 False 0.625 0.065 Chronos-Bolt:encoder.block.2 0.892
encoder.block.3 0.273 24.437 0.009 0.939 0.512 -0.960 False 0.641 layer not patched Chronos-Bolt:encoder.block.2 0.875
encoder.block.4 0.364 33.292 0.010 0.946 0.519 -0.889 False 0.648 0.053 Chronos-Bolt:encoder.block.2 0.846
encoder.block.5 0.455 45.933 0.012 0.952 0.525 -0.240 False 0.668 layer not patched Chronos-Bolt:encoder.block.3 0.817
encoder.block.6 0.545 53.964 0.013 0.949 0.522 -0.055 False 0.677 0.045 Chronos-Bolt:encoder.block.3 0.793
encoder.block.7 0.636 66.976 0.016 0.950 0.523 0.109 False 0.703 layer not patched Chronos-Bolt:encoder.block.4 0.712
encoder.block.8 0.727 65.852 0.018 0.961 0.533 0.303 True 0.704 0.048 Chronos-Bolt:encoder.block.4 0.634
encoder.block.9 0.818 59.877 0.019 0.963 0.536 -0.007 False 0.721 layer not patched Chronos-Bolt:encoder.block.4 0.537
encoder.block.10 0.909 48.954 0.019 0.954 0.527 4.954 True 0.745 0.049 Sundial:model.layers.11 0.492
encoder.block.11 1.000 4.146 0.010 0.961 0.534 1.074 True 0.377 layer not patched Sundial:model.layers.11 0.432

Every per-layer quantity this run measured for Chronos-2, joined by layer name across the stages that produced them.

Chronos-Bolt — every measured layer

layer rel. depth eff. dim CKA to input probe acc. probe − chance screen score screened in skip-lens MASE mean Δact (all corruptions) best restoration closest layer in another model that layer's CKA
encoder.block.0 0.000 5.942 0.010 0.706 0.279 -2.050 False 4.414 0.438 0.060 Sundial:model.layers.0 0.928
encoder.block.1 0.091 8.730 0.012 0.777 0.350 -1.553 False 3.954 0.503 layer not patched Sundial:model.layers.0 0.908
encoder.block.2 0.182 12.464 0.012 0.793 0.365 -0.227 False 3.706 0.532 0.036 Sundial:model.layers.1 0.896
encoder.block.3 0.273 20.024 0.010 0.808 0.380 0.279 False 3.341 0.555 layer not patched Chronos-2:encoder.block.2 0.858
encoder.block.4 0.364 30.040 0.011 0.833 0.405 3.255 True 3.090 0.564 0.056 Chronos-2:encoder.block.4 0.789
encoder.block.5 0.455 35.363 0.012 0.809 0.381 0.295 True 3.171 0.533 layer not patched Chronos-2:encoder.block.5 0.632

Every per-layer quantity this run measured for Chronos-Bolt, joined by layer name across the stages that produced them.

Sundial — every measured layer

layer rel. depth eff. dim CKA to input probe acc. probe − chance screen score screened in skip-lens MASE mean Δact (all corruptions) best restoration closest layer in another model that layer's CKA
model.layers.0 0.000 7.279 0.007 0.688 0.260 -2.069 False 4.662 0.545 0.089 Chronos-Bolt:encoder.block.0 0.928
model.layers.1 0.091 10.654 0.010 0.823 0.396 -0.926 False 4.689 0.560 layer not patched Chronos-Bolt:encoder.block.1 0.906
model.layers.2 0.182 15.247 0.011 0.873 0.446 -1.517 False 4.627 0.614 0.078 Chronos-Bolt:encoder.block.2 0.767
model.layers.3 0.273 17.769 0.011 0.927 0.500 1.623 True 4.327 0.672 layer not patched Chronos-Bolt:encoder.block.2 0.598
model.layers.4 0.364 6.561 0.005 0.941 0.514 -0.295 False 4.203 0.699 0.067 TimesFM:stacked_xf.18 0.396
model.layers.5 0.455 7.173 0.004 0.940 0.513 -0.154 False 4.122 0.721 layer not patched TimesFM:stacked_xf.18 0.386
model.layers.6 0.545 8.200 0.005 0.944 0.516 0.315 False 4.137 0.731 0.085 TimesFM:stacked_xf.18 0.379
model.layers.7 0.636 10.153 0.005 0.944 0.516 0.167 False 3.856 0.742 layer not patched TimesFM:stacked_xf.18 0.376
model.layers.8 0.727 13.630 0.006 0.940 0.512 -0.448 False 3.713 0.749 0.079 Chronos-2:encoder.block.7 0.370
model.layers.9 0.818 18.231 0.008 0.932 0.504 0.394 False 3.309 0.748 layer not patched Chronos-2:encoder.block.7 0.420
model.layers.10 0.909 27.828 0.012 0.935 0.508 2.449 True 2.795 0.729 0.056 Chronos-2:encoder.block.7 0.542
model.layers.11 1.000 11.677 0.013 0.933 0.506 0.460 True 2.445 0.697 layer not patched Chronos-2:encoder.block.8 0.518

Every per-layer quantity this run measured for Sundial, joined by layer name across the stages that produced them.

TimesFM — every measured layer

layer rel. depth eff. dim CKA to input probe acc. probe − chance screen score screened in skip-lens MASE mean Δact (all corruptions) best restoration closest layer in another model that layer's CKA
stacked_xf.0 0.000 25.528 0.002 0.642 0.214 -0.681 False 4.348 0.608 0.078 Chronos-2:encoder.block.3 0.359
stacked_xf.2 0.105 32.980 0.007 0.842 0.414 0.053 False 3.784 0.394 layer not patched Chronos-2:encoder.block.5 0.416
stacked_xf.4 0.211 36.621 0.010 0.911 0.483 -0.666 False 3.512 0.340 0.068 Chronos-2:encoder.block.7 0.426
stacked_xf.6 0.316 30.978 0.010 0.931 0.504 0.582 False 3.477 0.316 layer not patched Chronos-2:encoder.block.7 0.391
stacked_xf.8 0.421 25.568 0.008 0.934 0.506 -1.293 False 3.394 0.310 0.083 Chronos-2:encoder.block.7 0.358
stacked_xf.10 0.526 22.949 0.007 0.936 0.509 1.151 True 3.303 0.306 layer not patched Chronos-2:encoder.block.8 0.347
stacked_xf.12 0.632 19.427 0.006 0.941 0.513 -1.432 False 3.295 0.307 0.082 Chronos-2:encoder.block.11 0.332
stacked_xf.14 0.737 14.768 0.005 0.938 0.510 -0.438 False 3.237 0.292 layer not patched Chronos-2:encoder.block.11 0.310
stacked_xf.16 0.842 8.083 0.003 0.908 0.481 0.281 False 3.002 0.315 0.047 Sundial:model.layers.4 0.267
stacked_xf.18 0.947 2.806 0.003 0.870 0.442 4.708 True 2.713 0.289 layer not patched Sundial:model.layers.4 0.396

Every per-layer quantity this run measured for TimesFM, joined by layer name across the stages that produced them.

One row per captured layer, one column per per-layer quantity the run measured, so a single layer can be read across every stage at once instead of by cross-referencing five figures.

What does this mean?

How to read it
Columns come from different stages and mean different things. eff. dim and CKA to input are descriptive geometry (how many directions the layer's representation spreads over, and how much it still resembles raw input statistics). probe acc. is decodability of the data family from that layer, worth reading as probe − chance. screen score is the cheap interestingness heuristic that chose sae.targets: auto, and screened in marks its picks. skip-lens MASE is the forecast quality obtainable from that layer through the model's own head — it descending and then flattening is the crystallization the Forecast lens section measures. mean Δact and best restoration are the layer's average reaction to the corruption battery and the most any single patch at that layer recovered. closest layer in other model is that layer's argmax over the cross-model CKA matrix.

Limitations
A blank cell means that stage did not measure that layer — stages run at independent strides (l3.patching.layer_stride, capture_layer_stride), so absence is a config fact, not a zero. Nothing here is causal except best restoration, and that is causal within its own model only. Relative depth is a fraction of the model's whole stack including surfaces this run never captured, so the last row of a partially-observed model is not that model's output.

Lens

Forecast lens

Per-layer forecasts read out with the model's own head: where in depth the final forecast crystallizes, and how much of it a linear probe already sees.

What this stage tells you

Question
At what depth does each model's forecast actually take its final shape?

How
Feeds each layer's own activations into the model's normal output pathway, as if that layer were the last one, to see how good a forecast it already produces; separately, fits a small linear readout per layer to check whether the forecast is already recoverable there even if the model's own head can't decode it yet.

Good vs. bad result
Good: a curve that reaches close to final accuracy well before the last layer ('crystallizes early'), consistent with a similarly early rise in the tuned-lens readout. Bad: a flat, uninformative curve where the tuned lens also shows nothing until the very last layer — the forecast genuinely needs the model's full depth — or the two disagree sharply, itself informative about miscalibrated early layers.

What it cannot tell you
The direct (skip-lens) readout can be misleadingly pessimistic about early layers for reasons unrelated to information content — the model's final block was never trained to decode them — which is exactly why the tuned-lens readout exists alongside it. Even together, both only detect *linearly* recoverable structure; a forecast could be present in a layer in a form no linear readout can see.

Skip lens unavailable for Chronos-2

Chronos-2: the forecast head reads positions that a final-block patch of this adapter's token_slice span cannot reach, so every layer would return an identical forecast. A skip-lens curve is produced by overwriting a layer's states and reading the model's own forecast; where the forecast head does not read the overwritten positions, every layer returns the identical forecast, so the curve would be flat by construction rather than as a finding. It is withheld instead. The tuned lens below is a separate mechanism (a probe fit on stored states, no patching) and does cover Chronos-2.

The logit-lens analog for forecasting: layer-l's token states are patched into the model's own final block, and its own head decodes a forecast from them — using the real output pathway, no access to internals beyond the existing patch primitive. The dotted line is each model's true final-layer MASE.

What does this mean?

How to read it
A curve that drops toward the final-MASE line early in depth means the forecast is already largely formed well before the last layer ('crystallizes early'); a curve that only reaches it at the last point means the model needs its full depth. The 'crystallization depth' finding below is the first relative depth whose MASE lands within a configurable tolerance of final.

Limitations
Like classic logit lens, early layers can be miscalibrated for reasons unrelated to information content (the final block/head wasn't trained to decode them) — a high early MASE doesn't prove the forecast isn't already linearly present, only that this particular readout can't see it yet. That's exactly the gap the tuned lens below (a probe fit specifically for each layer) is designed to close.

Tuned lens: linear readout from window states

A ridge probe fit per layer (held-out by series) predicting either the model's own final forecast (solid) or the true target (dashed) from that layer's window states — a readout that, unlike the skip lens above, is tuned for each layer instead of relying on the final head to decode it.

What does this mean?

How to read it
High solid-line R² early in depth means the forecast is already linearly recoverable from that layer even if the skip lens (constrained to the model's own head) can't show it yet. The dashed 'ground truth' line is usually lower and caps out at whatever the model's own final-layer accuracy allows — it can't exceed how good the forecast itself is.

Limitations
A linear probe only detects *linear* readability; a layer could carry the forecast in a nonlinear form invisible here. Splits are by held-out series (matching the L2 discipline), so R² reflects generalization to new series, not in-sample fit.

Skip-lens MASE by horizon step

How early in each model's depth an individual forecast step becomes readable, instead of the whole horizon averaged into one curve. Each model has its own colour scale — compare the pattern within a panel, not the shade across panels.

The skip-lens MASE curve above, resolved by forecast horizon step instead of averaged over the whole horizon: each cell is that layer's skip-lens forecast error at that one specific step ahead.

What does this mean?

How to read it
A column that stays dark (low MASE) across most of depth means that horizon step crystallizes early; a column that only lightens near the bottom row means the model needs its full depth to forecast that far ahead. Comparing near-term columns (small horizon step) against far-term columns answers whether a model commits to its short-horizon forecast earlier in depth than its long-horizon one.

Limitations
Same caveats as the whole-horizon skip lens above (miscalibration at early layers is a readout limitation, not proof the forecast isn't linearly present yet — see the tuned lens for that) — colors are not comparable across models, only within one model's own grid.

Crystallization depth by horizon step

Gaps are unresolved steps, not missing data: TimesFM 60 of 64 steps (its deepest captured layer, stacked_xf.18, is still 1.15 MASE away from reproducing the model's own forecast). At those horizon steps the skip-lens MASE never came within tolerance of that step's own final-layer MASE at any captured layer, so there is no crossing depth to plot. The usual cause is that the deepest captured layer is not the model's true final block — under a capture stride above 1 the last blocks are skipped, so the curve stops short of where the forecast actually finishes forming, and the steps that finish latest are the ones left unresolved. Capturing at stride 1 closes it. Read a gap as 'not resolved within the layers measured', never as a deeper crystallization point.

For each forecast horizon step independently, the first relative depth whose skip-lens MASE at that step lands within tolerance of that step's own final-layer MASE — the same crystallization-depth definition above, just computed once per horizon step instead of once for the whole averaged curve.

What does this mean?

How to read it
A rising curve (crystallization depth increasing with horizon step) means the model settles its near-term forecast earlier in depth than its far-term one — plausible if later steps need more integrated context. A flat curve means the model commits to the whole horizon at once, regardless of how far out a given step is.

Limitations
A gap in the curve (missing marker) means that horizon step's skip-lens MASE never came within tolerance at any captured layer — read as 'not resolved', not as 'infinitely deep'.

Part 4 — Do the models represent things the same way?

Representational geometry and linear stitching between every model pair, how each model clusters the benchmark on its own, and how similar every model pair is across every metric this pipeline measures independently of the concept atlas below.

↑ contents
L1

Representational geometry

Linear CKA between every layer pair: where the two models' representations share geometry. Correlational evidence only.

What this stage tells you

Question
Do the models represent this data similarly at all?

How
Compares every pair of layers, one from each model, by how similarly they organize the same set of series geometrically — a comparison that ignores each layer's own arbitrary rotation and scale — and checks the result against a shuffled-series control.

Good vs. bad result
Good: a peak similarity that sits clearly above the shuffled-series null, especially one that follows a sensible pattern by depth (early layers matching early layers). Bad: a similarity score that's high everywhere and barely rises above the null — a sign the number mostly reflects that the models see the same input, not that they've learned anything in common.

What it cannot tell you
This is correlational: a high score never establishes that the two models compute the same thing, only that their representations are geometrically similar — which two under-trained or too-simple networks can also produce for reasons that have nothing to do with shared learning. It says nothing about mechanism; L2 and L3 exist specifically because this stage can't answer that.

Linear CKA between every layer pair of the two models, in feature space (invariant to rotation/scaling of either representation, so it compares geometry, not raw coordinates). This is the first, cheapest cross-model question: do these two layers organize the same benchmark similarly at all?

How to read this number

How to read it
1.0 is identical geometry up to rotation; 0 is unrelated. High values are expected and not by themselves impressive: both models process the exact same structured input, and CKA is well known to be inflated by shared input-driven variance alone, independent of any shared computation — that is exactly why L2's stitching-gain-over-input-baseline exists as the corrected comparison. The dotted reference line on the depth-correspondence chart below is an empirical null: the same statistic recomputed after shuffling which series lines up with which. A peak far above that null line means the number is at least tracking genuine per-sample correspondence (not an artifact of comparing any two reasonable encoders) — it does not by itself mean the models learned the same thing.

Limitations
Correlational only; says nothing about mechanism (see L2/L3 for that). Sensitive to how many series/windows are sampled — the CI widens for family-conditioned values with few series. Layer-pair geometry can also look similar simply because both networks are under-trained or too small relative to the input's effective dimensionality — that inflates CKA the same way shared input structure does, and the two are hard to tell apart from this number alone.

Peak similarity, every pair

model A model B peak CKA at rel. depth shuffled null
TimesFM Chronos-2 0.43 [0.42, 0.44] L4 ↔ L7 0.21 / 0.64 0.037
TimesFM Sundial 0.41 [0.40, 0.43] L4 ↔ L2 0.21 / 0.18 0.046
TimesFM Chronos-Bolt 0.38 [0.37, 0.40] L4 ↔ L2 0.21 / 0.18 0.012
Chronos-2 Sundial 0.91 [0.91, 0.92] L0 ↔ L0 0.00 / 0.00 0.001
Chronos-2 Chronos-Bolt 0.91 [0.90, 0.92] L0 ↔ L0 0.00 / 0.00 0.001
Sundial Chronos-Bolt 0.93 [0.92, 0.93] L0 ↔ L0 0.00 / 0.00 0.001

The peak-CKA layer pair for every model pair in this run, each against its own shuffled-series null. The heatmap at the top of this section is the first row of this table.

What does this mean?

How to read it
Compare each pair's peak against ITS OWN null column, never against another pair's peak: the null absorbs how much similarity the shared input alone produces for that particular pair of architectures, and that quantity is not the same for two pairs.

Limitations
Every value is a maximum over the two models' layer grids, so larger models offer more candidates to maximize over and their peaks are biased upward relative to smaller ones. The relative depths use the 'block' axis, so a model with an uncaptured surface legitimately never reaches 1.0.

Layer-pair similarity, every pair

2 more pair(s)

The same layer-by-layer CKA matrix as the heatmap at the top of this section, for every model pair, on one shared 0-1 colour scale so the panels are comparable to each other.

Layer correspondence by depth, every pair

2 more pair(s)

For each pair, every layer of model A matched to its best-matching layer of model B, against relative depth on the 'block' axis. The dotted line in each panel is that pair's own shuffled-series null. All panels share a 0-1 y-axis, so curve heights are directly comparable between pairs.

For each layer of the first model, the best-matching layer of the second model and their CKA, plotted against relative depth — a compact way to see whether early layers match early layers (architectures process the input in a similar order) or whether matches jump around in depth.

What does this mean?

How to read it
A roughly monotonic line (early-to-early, late-to-late) suggests comparable processing order despite different depths/patch sizes. A flat, uniformly-high line usually means the input's own structure dominates every layer's geometry about equally — see the null-line caveat above.

Limitations
The 'best match' is a max over the other model's layers, which mechanically biases the curve upward versus any single fixed pairing (more candidates to match against) and can look artificially smooth even when the underlying matrix is noisy — always sanity-check against the heatmap above. The x-axis is the 'block' depth axis: 'block' places a layer by its position over the model's whole stack, including any surface this run never captured, so a model whose captured layers stop partway up it legitimately ends short of 1.0 instead of being stretched to fill the axis, as Chronos-Bolt and TimesFM do in this run.

Family-conditioned agreement, every pair

Peak CKA computed within one benchmark family at a time, for every model pair. Read down a family (which pairs agree on this kind of series?) and across families (does one family separate every pair, or only some?) — a family where one pair's bar is much lower than its neighbours is where those two models' representations diverge specifically.

The same peak-CKA computation restricted to one benchmark family at a time (e.g. only trending series, only spiky series), so a family where two models diverge structurally doesn't get averaged away by families where they agree.

What does this mean?

How to read it
Compare bar heights across families, not to some universal threshold — a lower bar means this family's structure is where those models' representations differ most, which is exactly the kind of finding the exemplar case studies exist to make concrete.

Limitations
Families with fewer than `l1.min_family_series` series are dropped entirely (too few series for a stable per-family CKA), so a family's absence here isn't evidence of anything.

Representational similarity (RSA), every pair

Spearman rank correlation between the two models' series-by-series dissimilarity matrices, at each depth of model A. This is the rank-based companion to the CKA curves above: a pair high on CKA but low here agrees about overall geometry while ordering individual series differently.

RSA along matched layers

layer_a layer_b spearman
stacked_xf.0 encoder.block.3 0.593
stacked_xf.2 encoder.block.5 0.705
stacked_xf.4 encoder.block.7 0.653
stacked_xf.6 encoder.block.7 0.659
stacked_xf.8 encoder.block.7 0.647
stacked_xf.10 encoder.block.8 0.573
stacked_xf.12 encoder.block.11 0.451
stacked_xf.14 encoder.block.11 0.416
stacked_xf.16 encoder.block.11 0.444
stacked_xf.18 encoder.block.7 0.463

A second opinion on the CKA-matched layer pairs above: each layer's series are ranked by pairwise dissimilarity (1 minus correlation) into a representational dissimilarity matrix (RDM), and the two models' RDMs at each matched pair are Spearman rank-correlated. RSA is invariant to a different class of transform than CKA (monotonic distance rescaling instead of rotation), so agreement between the two is evidence the CKA match isn't an artifact of its specific invariance.

What does this mean?

How to read it
Spearman ρ near 1 means the two models rank which series-pairs are similar/dissimilar in the same order at that layer pair; near 0 means the rankings are unrelated even though CKA (a different notion of agreement) may have matched these layers.

Limitations
Computed on series-level pooled embeddings only (no window resolution), over a capped sample (`l1.rsa_max_series`) for cost — a rough second check, not a replacement for the CKA statistics above.

CKA in SAE feature space

The same linear-CKA statistic as the heatmap above, but computed on each target's PERSISTED, ENCODED SAE feature activations (`store.load(..., space='sae')`) instead of raw activation-space hidden states.

Best feature-space pair: L8 ↔ L11, CKA 0.59 [0.56, 0.63].

This is NOT computed over the same layer pairs as the activation-space CKA above — SAE targets are pinned for forecast-readability, not chosen to peak on this statistic, so it is not yet a like-for-like 'feature space vs. activation space' verdict at the same depth.

What does this feature-space CKA mean?

How to read it
A high value here means the two models' SPARSE, human-legible feature dictionaries agree on which series look similar — a stronger, more interpretable echo of shared structure than the raw activation-space CKA above, since a feature basis is (attempted to be) meaningful on its own rather than an arbitrary rotation of the hidden space.

Limitations
Requires `sae.persist_features: true` (off by default) and at least two SAE targets spanning both comparison-pair models — most runs will not have this artifact at all, which is why it renders only when found rather than as an empty placeholder.

L2

Stitching probes

Ridge maps between window states, reported as gain over an input-feature baseline; only that gain is evidence of shared learned structure.

What this stage tells you

Question
Can one model's layer actually be translated into the other's, beyond what's explained by both simply seeing the same input?

How
Fits a simple linear map from one model's layer activations to the other's, compares how well it predicts against a hand-built baseline that only ever sees the raw input (never the other model), and reports the gap between the two as the real evidence.

Good vs. bad result
Good: the best pair's gain over the input baseline has a confidence interval that clearly sits above zero — real evidence the source layer predicts the target layer better than raw input alone could. Bad: that interval includes zero — the apparent shared structure could just be an artifact of the models seeing the same series.

What it cannot tell you
Only the gain over the input baseline counts as evidence here — raw predictive accuracy alone is untrustworthy, since both models process the same input and would score well on that basis alone. This also only detects *linear* translatability (a genuine nonlinear correspondence between two layers can score zero gain), and it is still not a causal claim: a good stitch means the two layers' information is compatible, not that either model's forecast actually depends on it.

Stitching gain, every pair

model A model B A → B B → A best of the two
TimesFM Chronos-2 +0.707 +0.611 +0.707
TimesFM Sundial +0.681 +0.609 +0.681
TimesFM Chronos-Bolt +0.649 +0.580 +0.649
Chronos-2 Sundial +0.891 +0.911 +0.911
Chronos-2 Chronos-Bolt +0.893 +0.908 +0.908
Sundial Chronos-Bolt +0.878 +0.865 +0.878

One row per model pair. A → B is the gain when that row's model A is stitched into its model B, B → A the reverse — so each row is self-contained and the two columns always refer to that row's own two models, never to another pair's. The per-direction heatmaps below give the full layer grid behind each number.

What does this mean?

How to read it
Only the gain ABOVE the input baseline is evidence of shared learned structure, so a value at or below zero means that direction carries no stitching evidence regardless of how high its raw R² is. The two directions of one pair are fit independently and are not expected to match.

Limitations
A point estimate without its CI: the per-direction headings below carry the interval, and a gain whose CI straddles zero is not evidence no matter what this column shows. Nothing here corrects for having looked at C(n,2) x 2 directions.

TimesFM → Chronos-2 · best R² 0.75 · best gain over input baseline 0.71 [0.68, 0.73]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-2 → TimesFM · best R² 0.63 · best gain over input baseline 0.61 [0.59, 0.63]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

TimesFM → Sundial · best R² 0.73 · best gain over input baseline 0.68 [0.67, 0.70]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Sundial → TimesFM · best R² 0.64 · best gain over input baseline 0.61 [0.58, 0.64]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

TimesFM → Chronos-Bolt · best R² 0.72 · best gain over input baseline 0.65 [0.63, 0.67]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-Bolt → TimesFM · best R² 0.60 · best gain over input baseline 0.58 [0.56, 0.60]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-2 → Sundial · best R² 0.96 · best gain over input baseline 0.89 [0.88, 0.90]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Sundial → Chronos-2 · best R² 0.95 · best gain over input baseline 0.91 [0.90, 0.92]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-2 → Chronos-Bolt · best R² 0.97 · best gain over input baseline 0.89 [0.88, 0.91]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-Bolt → Chronos-2 · best R² 0.95 · best gain over input baseline 0.91 [0.90, 0.92]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Sundial → Chronos-Bolt · best R² 0.95 · best gain over input baseline 0.88 [0.86, 0.89]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

Chronos-Bolt → Sundial · best R² 0.94 · best gain over input baseline 0.87 [0.85, 0.88]

For every (source layer, target layer) pair, a ridge probe is fit from the source model's window states to the target model's, and scored as held-out R². The heatmap color is not that raw R² — it's the *gain* above a hand-crafted input-feature probe (raw window values, FFT magnitudes, summary stats) fit to predict the same target, because both models saw the same input, so high raw R² can just mean 'both are reasonable functions of the input,' not 'these representations share learned structure.'

What does this mean?

How to read it
Red (positive ΔR²) at a pair means the source layer predicts the target layer better than raw input features alone can — genuine evidence of shared structure beyond input. Blue (negative) means the input baseline actually wins; that pair carries no stitching evidence at all. The title line's gain CI is the one number to trust: if its low end is above zero, the best pair's gain is real; if the CI straddles zero, treat the whole heatmap as noise no matter how saturated it looks.

Limitations
Ridge R² rewards *linear* translatability only — a nonlinear correspondence between two layers would show up as zero gain here even if it exists. Direction matters: A→B and B→A are fit and scored independently and are not expected to agree.

L4

Activation clusters

How each model organizes the benchmark, with clusters labeled by what they approximately activate for.

What this stage tells you

Question
How does each model organize the whole benchmark on its own terms, and do the models group the data the same way?

How
Projects each model's activations, at its own side of the strongest cross-model layer pair, down to a small number of dimensions, clusters them, labels each cluster by what kind of data dominates it, and compares how much each pair's groupings agree using a chance-corrected overlap score.

Good vs. bad result
Good: clean, well-separated clusters that line up with real, interpretable properties of the data, and a partition-agreement score meaningfully above chance between a pair of models. Bad: a single smeared blob with no real separation, or cluster labels that don't correspond to anything a human would recognize as a coherent group.

What it cannot tell you
The 2D map is a visualization only — apparent distances or gaps between clusters on the plot are not quantitative and should never be read as a diversity or separation measure. Cluster labels are approximate (majority family plus salient statistics), not ground truth, and everything here is descriptive: it says how each model happens to partition the data, not why, and not whether that partition is causally meaningful to either model's forecast.

Each model's window states at its side of the L1 peak-CKA layer pair, reduced to 2D (UMAP if enabled, else PCA) and k-means clustered — a low-dimensional map of how each model organizes the whole benchmark, colored by its own cluster assignment.

What does this mean?

How to read it
Clean, well-separated color blobs mean that model's representation carves the benchmark into distinct groups at this layer; a single smeared blob means it doesn't separate much at all there. Hover any point for its series id, true family, and the cluster's approximate label — compare cluster shapes side by side, not exact colors (cluster indices aren't matched across models).

Limitations
The 2D layout is a projection for visualization only — apparent distances between clusters aren't meaningful, only which points share a cluster. Cluster *labels* are approximate (majority family + salient signal stats), so treat them as a reading aid, not ground truth; the partition-overlap statistic below is the quantitative version of what this plot shows visually.

TimesFM clusters (silhouette 0.19)

cluster size purity label
0 145 0.641 mixture (64%) · anti-persistent · broadband/noisy spectrum
1 302 0.927 random_parametric (93%) · mixed characteristics
2 106 1.000 mixture (100%) · smooth/persistent
3 145 0.745 parametric (74%) · clean · smooth/persistent
4 102 0.373 mixture (37%) · rising trend · smooth/persistent

Chronos-2 clusters (silhouette 0.18)

cluster size purity label
0 198 0.540 parametric (54%) · smooth/persistent · clean
1 126 0.754 mixture (75%) · anti-persistent · broadband/noisy spectrum
2 107 1.000 mixture (100%) · smooth/persistent
3 146 0.993 random_parametric (99%) · peaked spectrum · clean
4 223 0.641 random_parametric (64%) · mixed characteristics

Sundial clusters (silhouette 0.17)

cluster size purity label
0 159 0.767 random_parametric (77%) · clean · peaked spectrum
1 113 0.929 mixture (93%) · smooth/persistent
2 188 0.574 parametric (57%) · clean · smooth/persistent
3 162 0.586 mixture (59%) · broadband/noisy spectrum · anti-persistent
4 178 0.888 random_parametric (89%) · anti-persistent

Chronos-Bolt clusters (silhouette 0.18)

cluster size purity label
0 128 0.836 random_parametric (84%) · falling trend · clean
1 129 0.736 mixture (74%) · anti-persistent · broadband/noisy spectrum
2 141 0.716 random_parametric (72%) · anti-persistent · noisy
3 275 0.367 mixture (37%) · smooth/persistent
4 127 0.543 random_parametric (54%) · rising trend · clean

Partition overlap · AMI = 0.60 [0.57, 0.63]

Row-normalized contingency between the two models' cluster assignments (what fraction of model A's cluster i falls into each of model B's clusters), plus adjusted mutual information (AMI) as a single overlap statistic.

What does this mean?

How to read it
A heatmap concentrated on (close to) a diagonal-like permutation means the two partitions correspond well, even if cluster numbers don't literally match; a spread-out heatmap means little correspondence. AMI=1.0 is identical partitions, 0 is what you'd expect from independent random partitions of the same size.

Limitations
AMI corrects for chance agreement from cluster count/size alone, but its bootstrap CI (when shown) resamples label pairs, not the clustering itself — it reflects assignment stability, not k-means initialization variance. `k` is often 'auto' (number of benchmark families), so overlap partly reflects how family-like each model's natural clusters are, not just agreement between the two models.

Partition overlap, every pair

2 more pair(s)

Row-normalized contingency between each pair's own cluster assignments, on one shared 0-1 colour scale so the panels are comparable to each other — the same statistic as the single reference-pair heatmap above, for every pair this run measured, not just the designated one.

Partition agreement, every pair

model A model B AMI
TimesFM Chronos-2 0.60 [0.57, 0.63]
TimesFM Sundial 0.68 [0.65, 0.72]
TimesFM Chronos-Bolt 0.42 [0.40, 0.46]
Chronos-2 Sundial 0.59 [0.56, 0.62]
Chronos-2 Chronos-Bolt 0.45 [0.43, 0.50]
Sundial Chronos-Bolt 0.51 [0.48, 0.55]

Adjusted mutual information between each pair of models' cluster assignments. The heatmap grid above draws every pair's own overlap; this table gives the same pairs' exact AMI values.

What does this mean?

How to read it
AMI is chance-corrected, so 0 is what independent partitions of the same sizes would give and the values are directly comparable across rows even when the pairs have different cluster counts.

Limitations
Each row is an independent statistic with its own CI; nothing here corrects for the fact that C(n,2) of them were looked at, so read the spread across rows rather than singling out the largest.

Similarity

Pair similarity across metrics

Every representation/behavioral/SAE similarity metric this pipeline computes, one row per metric, one dot per model pair -- moved here from "Concepts" because it is not about concepts.

What this stage tells you

Question
Which features does each model's dictionary actually use when it forecasts, do they group into named concepts, and does another model group the same series the same way?

How
For every trained dictionary, zeroes each candidate feature out of the model's own reconstruction on the series where that feature fires hardest, and measures nine properties of the forecast against a random-direction null. Features that move something are clustered by what they move into concepts (or the dictionary is declared non-modular when no clean grouping exists). Each concept's top series are then checked in every other model: does some feature there separate the same series better than random series of the same kind would, and does that feature's own top series come back the other way? Finally every concept is described in a sentence composed only from what was measured. Separately, every causal feature across every model is also pooled into one shared space and clustered directly against each other, so a group there can span several models even when a dictionary's own per-target clustering above found no clean grouping within it.

Good vs. bad result
Good: features whose removal moves the forecast well above the null, concepts with several members each, and transfers that clear the matched null in both directions. Bad: most targets declared non-modular (the dictionary's causal features do not group), or transfer rates that are high only because the matched null is weak for that kind of series.

What it cannot tell you
A transfer that clears its null says another model separates the same series, not that it uses the feature the same way causally. The rates are uncorrected for the many tests made, and nothing yet says how often a concept would transfer to a second dictionary trained on the SAME model, so a rate cannot be read as high or low on its own. Everything here is measured on the development corpus only.

Every representation/behavioral/SAE similarity metric this pipeline already computes, one row per metric, one dot per model pair -- the evidence behind the compact “How similar is each pair?” answer box in “At a glance” above.

How similar is each pair?

Every measured similarity metric, one row per metric, one dot per model pair on that metric's OWN native axis -- ranges are never rescaled across metrics, since a stitching gain and a CKA value are not the same kind of number even though both happen to run roughly 0-1.

What does this mean?

How to read it
Whiskers are the metric's own bootstrap CI where one exists. The dotted vertical line is that metric's own reference (a null, a chance level, or the input-feature baseline) -- read a pair's distance from ITS metric's own reference, never compare raw positions across rows. Use the dropdown to highlight one pair across every metric at once.

Limitations
Metrics disagree by design (this run's own measured fact): a pair close on one axis can be far on another. A missing row means that metric's own stage artifact was not present for this run.

Rank table
PairError agreementBest-layer CKAStitching gainCluster agreement (AMI)Atlas co-membershipInput transferShared conceptsMedian rankRank range
TimesFM / Chronos-214423554.04.0
TimesFM / Sundial25512222.04.0
TimesFM / Chronos-Bolt56664626.04.0
Chronos-2 / Sundial32131422.03.0
Chronos-2 / Chronos-Bolt63255355.04.0
Sundial / Chronos-Bolt41346154.05.0

Kendall's W (all measured metrics): 0.281 (p=0.0700, 7 metric(s)). Within representation metrics only: 0.530 (p=0.1379, 3 metric(s)). With only a handful of model pairs, Kendall's W has low power: a non-significant p does NOT mean the metrics agree, and a significant one should still be read alongside the per-metric rank table above, not instead of it.

Contrasts -- where metrics disagree most
Per-metric model x model heatmaps

Error agreement -- model x model. Whether the two models make similar per-series forecast errors (Spearman correlation of log MASE across series).

Best-layer CKA -- model x model. The most similar pair of layers' linear representational geometry: the max linear CKA over every layer-pair between the two models.

Stitching gain -- model x model. How much of one model's activations a linear probe trained on the other model's activations explains, beyond an input-feature baseline (both directions, averaged).

Cluster agreement (AMI) -- model x model. Whether the two models' activation clusters group the same series together (adjusted mutual information).

Atlas co-membership -- model x model. How often the two models' causally-ablated SAE features land in the same cross-model concept (shared causal effect profile), versus a model-label permutation null.

Input transfer -- model x model. Whether an atlas concept's top-firing series in one model are also grouped by the OTHER model's own SAE dictionary (shared input selectivity, both directions).

Shared concepts -- model x model. Count of cross-model concepts classed as sharing BOTH causal effect and input selectivity between the two models.

Part 5 — What causally drives the forecast

Corruption sensitivity and within-model activation patching, attention structure and head/MLP causality, and the seasonality circuit.

↑ contents
L3

Perturbation & patching

Where each model's depth reacts to structured corruptions, and where clean activations causally restore corrupted forecasts.

What this stage tells you

Question
Where, causally, does each model actually carry a specific structural property of the data — and does damaging it there hurt the forecast?

How
Corrupts one structural property of the input at a time (trend, seasonality, added noise, and so on), measures how much each layer's activations shift because of it, then splices the clean, uncorrupted activations back into an otherwise-corrupted forward pass, one layer at a time, to see how much of the clean forecast that single splice restores.

Good vs. bad result
Good: a restoration curve that rises toward 1.0 at some depth for a given corruption — that layer causally carries the fix for that property — and two models whose sensitivity fingerprints peak at matching relative depths for the same corruption. Bad: a restoration curve that never clears a small fraction anywhere, or a corruption whose measured sensitivity is small only because it touches a tiny fraction of the input's timesteps in the first place, not because the model is robust to it.

What it cannot tell you
The activation-shift fingerprints are a magnitude-of-change measure by themselves, not a causal one — a layer can shift a lot without that shift ever affecting the final forecast, which is exactly why the patching curve exists alongside it. Even the patching curve is causal only *within* one model: this stage never transplants activations between models, so any cross-model comparison here is two separately-measured within-model curves side by side, never a joint causal test.

For each corruption (columns) and layer (rows), the relative change in that layer's activations between clean and corrupted input, averaged over series — a [depth x corruption] fingerprint of which structural property each model reacts to, and where.

What does this mean?

How to read it
Brighter cells mean that layer's representation shifted more under that corruption. Reading down a column shows where in depth a given property (say, seasonality) gets encoded; reading across a row shows what a given layer is currently sensitive to. Two models with similar column shapes react to the same properties at similar relative depths, even if their absolute layer counts differ. The depth axis (named per panel above) places each layer within the model's *whole* stack, not just its captured layers, so a model with a real but uncaptured surface legitimately caps out partway up the axis rather than reaching 1.0, as Chronos-Bolt and TimesFM do in this run.

Limitations
This is a magnitude-of-change measure, not a causal one — a layer can shift a lot without that shift affecting the final forecast at all (see the behavioral-sensitivity bars and the activation-patching curve below for the causal follow-through). Different architectures normalize activations differently, so raw magnitudes are not directly comparable across models — only the column *shape* (where the peak is) should be compared.

Cross-model fingerprint agreement

One bar group per corruption, one bar per model pair — every pair in the run is shown and named, so a bar is never read as a statement about models it does not compare.

Each model's per-corruption fingerprint (the column above) is interpolated onto the depth range each pair of models actually shares (never extrapolated past either model's own span), and the two resulting depth profiles are Spearman rank-correlated — one number per corruption summarizing whether both models encode that property at matching relative depths. On this run's depth axis some pairs' spans only partly overlap (TimesFM vs Chronos-2: 95%; TimesFM vs Sundial: 95%; TimesFM vs Chronos-Bolt: 48%; Chronos-2 vs Chronos-Bolt: 45%; Sundial vs Chronos-Bolt: 45%); agreement is computed over that overlap only (never extrapolated across it), so the un-overlapped depth is excluded rather than invented.

What does this mean?

How to read it
+1 means both models' sensitivity peaks at the same relative depth for that corruption; -1 means they peak at opposite ends; 0 means unrelated depth profiles. The lowest bar is called out in the findings as the most divergent corruption for each pair — the structural property that pair's architectures seem to handle at meaningfully different points in depth.

Limitations
Rank correlation over a coarse 33-point depth grid can be noisy for very shallow models (few layers to interpolate between), and says nothing about whether the property matters to the forecast at all — cross-reference with behavioral sensitivity below.

Behavioral sensitivity

How much each corruption changes the final *forecast* (scaled mean absolute change), independent of any internals — the behavioral counterpart to the activation fingerprints above. Value labels are drawn on every bar specifically because this battery's corruptions are not strength-matched (next note) — a shared linear axis dominated by one outsized corruption can make every other bar look flat even when its own value is not small.

What does this mean?

How to read it
Taller bars mean that corruption matters more to this model's output. A corruption with a tall activation fingerprint but a short bar here is being represented internally without much consequence for the forecast — an interesting mismatch worth checking against the patching curve below, which is the causal version of this same question. Read the printed value, not just bar height, before concluding a corruption 'does nothing.'

Limitations
Scale is in MASE-like units (MAE over each series' own naive scale), so it's comparable across families but reflects each corruption's configured strength as much as the model's intrinsic sensitivity — a fair cross-model comparison, not a fair cross-corruption one unless strengths were tuned to match. How unfair a given cross-corruption comparison is, is measured rather than described here: the breakdown table below gives each corruption's own input footprint and perturbation energy, which is what a bar's height should be read against. A corruption altering well under 1% of timesteps produces a small series-averaged value arithmetically, whatever the model does at the points it touched — the per-window patching heatmap further down is where such localized damage shows whether it is still causally recoverable. Dotted reference lines mark each sampling model's own repeat-run MASE noise floor (see the Overall metrics section above) -- a bar below its model's line is not distinguishable from repeat-run noise.

Corruption-by-corruption breakdown

corruption model input touched (%) input energy strength matched forecast Δ Δ lo Δ hi Δ in floor units activation peak depth peak Δact mean Δact depth agreement ρ best restoration restored at
level_shift Chronos-2 38.237 85118.562 False 11.590 11.012 12.170 no floor (deterministic) 0.909 0.867 0.749 0.040 0.036 encoder.block.0
level_shift Chronos-Bolt 38.237 85118.562 False 11.524 10.966 12.104 no floor (deterministic) 0.364 0.701 0.663 0.040 0.060 encoder.block.0
level_shift Sundial 38.237 85118.562 False 10.765 10.231 11.323 60.9× 0.455 0.828 0.795 0.040 0.054 model.layers.0
level_shift TimesFM 38.237 85118.562 False 11.426 10.860 12.003 no floor (deterministic) 0.000 0.312 0.194 0.040 0.058 stacked_xf.8
frequency_shift Chronos-2 60.303 44380.930 False 2.795 2.574 3.028 no floor (deterministic) 0.909 1.186 1.130 0.222 not patched not patched
frequency_shift Chronos-Bolt 60.303 44380.930 False 2.576 2.384 2.773 no floor (deterministic) 0.364 1.021 0.927 0.222 not patched not patched
frequency_shift Sundial 60.303 44380.930 False 2.829 2.618 3.057 16.0× 0.455 1.184 1.086 0.222 not patched not patched
frequency_shift TimesFM 60.303 44380.930 False 2.703 2.495 2.920 no floor (deterministic) 0.000 1.040 0.583 0.222 not patched not patched
deseasonalize Chronos-2 49.920 6126.171 False 2.389 2.195 2.602 no floor (deterministic) 0.909 0.787 0.637 0.259 0.051 encoder.block.4
deseasonalize Chronos-Bolt 49.920 6126.171 False 2.146 1.982 2.326 no floor (deterministic) 0.364 0.580 0.519 0.259 0.030 encoder.block.4
deseasonalize Sundial 49.920 6126.171 False 2.103 1.940 2.277 11.9× 0.818 0.765 0.677 0.259 0.022 model.layers.10
deseasonalize TimesFM 49.920 6126.171 False 2.186 1.998 2.396 no floor (deterministic) 0.000 0.538 0.393 0.259 0.083 stacked_xf.8
detrend Chronos-2 19.398 948.467 False 1.891 1.662 2.121 no floor (deterministic) 0.909 0.292 0.211 0.330 not patched not patched
detrend Chronos-Bolt 19.398 948.467 False 1.795 1.579 2.018 no floor (deterministic) 0.364 0.212 0.184 0.330 not patched not patched
detrend Sundial 19.398 948.467 False 1.533 1.356 1.718 8.7× 0.818 0.263 0.228 0.330 not patched not patched
detrend TimesFM 19.398 948.467 False 1.719 1.509 1.948 no floor (deterministic) 0.947 0.126 0.105 0.330 not patched not patched
warp Chronos-2 46.519 27093.529 False 1.563 1.411 1.720 no floor (deterministic) 0.909 0.778 0.689 -0.640 0.065 encoder.block.2
warp Chronos-Bolt 46.519 27093.529 False 1.565 1.425 1.699 no floor (deterministic) 0.273 0.529 0.502 -0.640 0.009 encoder.block.4
warp Sundial 46.519 27093.529 False 1.461 1.338 1.590 8.3× 0.818 0.710 0.646 -0.640 0.089 model.layers.0
warp TimesFM 46.519 27093.529 False 1.506 1.370 1.647 no floor (deterministic) 0.000 0.901 0.407 -0.640 0.026 stacked_xf.12
noise Chronos-2 60.660 22732.613 False 1.245 1.115 1.387 no floor (deterministic) 0.909 0.825 0.752 -0.738 0.049 encoder.block.10
noise Chronos-Bolt 60.660 22732.613 False 1.343 1.220 1.477 no floor (deterministic) 0.091 0.672 0.629 -0.738 0.056 encoder.block.4
noise Sundial 60.660 22732.613 False 1.382 1.279 1.498 7.8× 0.727 0.920 0.853 -0.738 0.085 model.layers.6
noise TimesFM 60.660 22732.613 False 1.180 1.085 1.290 no floor (deterministic) 0.000 0.982 0.484 -0.738 0.021 stacked_xf.12
smooth Chronos-2 22.232 10737.406 False 0.905 0.841 0.967 no floor (deterministic) 0.909 0.740 0.600 -0.418 not patched not patched
smooth Chronos-Bolt 22.232 10737.406 False 1.034 0.960 1.110 no floor (deterministic) 0.273 0.484 0.449 -0.418 not patched not patched
smooth Sundial 22.232 10737.406 False 1.079 0.990 1.170 6.1× 0.818 0.840 0.743 -0.418 not patched not patched
smooth TimesFM 22.232 10737.406 False 1.006 0.920 1.104 no floor (deterministic) 0.000 0.539 0.352 -0.418 not patched not patched
spike Chronos-2 1.526 36907.762 False 0.490 0.429 0.562 no floor (deterministic) 0.909 0.608 0.552 -0.787 -0.055 encoder.block.10
spike Chronos-Bolt 1.526 36907.762 False 0.818 0.743 0.901 no floor (deterministic) 0.364 0.601 0.549 -0.787 -0.082 encoder.block.2
spike Sundial 1.526 36907.762 False 0.942 0.863 1.026 5.3× 1.000 0.835 0.739 -0.787 0.035 model.layers.2
spike TimesFM 1.526 36907.762 False 0.812 0.721 0.919 no floor (deterministic) 0.000 0.803 0.406 -0.787 -0.048 stacked_xf.4
dropout Chronos-2 8.126 2884.297 False 0.755 0.669 0.840 no floor (deterministic) 0.818 0.621 0.465 0.498 0.013 encoder.block.2
dropout Chronos-Bolt 8.126 2884.297 False 0.699 0.634 0.770 no floor (deterministic) 0.455 0.328 0.263 0.498 0.036 encoder.block.4
dropout Sundial 8.126 2884.297 False 0.821 0.754 0.893 4.6× 0.818 0.500 0.389 0.498 0.047 model.layers.2
dropout TimesFM 8.126 2884.297 False 0.784 0.694 0.881 no floor (deterministic) 0.000 0.242 0.205 0.498 0.057 stacked_xf.12

Every corruption in this run's battery, per model: how much of the input it altered and with how much energy, how far the forecast moved, where the activations moved most, whether the two models moved at comparable depths, and how much of the damage patching recovered.

What does this mean?

How to read it
Read input touched (%) and input energy first — they are properties of the corruption, identical for every model, and they set the scale a response should be read against. A corruption altering under 1% of timesteps produces a small series-averaged forecast Δ arithmetically, whatever the model does at the points it touched. Δ in floor units divides the response by that model's own repeat-run variation, so a value near 1 is not distinguishable from the model's own noise; a model with no sampling in its forecast path has a zero floor and is labelled rather than divided by. Rows are ordered by the model-averaged forecast Δ, so the top row is this battery's strongest corruption as measured on these models, not as expected.

Limitations
strength matched is False for every row unless l3.calibrate: input_energy was set, and it is the column that decides whether comparing two rows is fair. Comparing two models within a row is fair either way — they received the same corrupted input. Activation magnitudes are not comparable across architectures (different normalization), so peak Δact/mean Δact should be compared down a model's own column and by peak location across models, not by value. best restoration is present only for the corruptions l3.patching.corruptions selected; every other row says so in the cell rather than leaving it blank, because a corruption nobody patched and a corruption whose patch recovered nothing are different findings.

Activation patching: clean → corrupted restoration

One panel per corruption, every model overlaid on a shared restoration scale — so a model's depth profile is read down a single panel, and two corruptions are compared by putting their panels side by side. Clicking a model in the legend hides it in every panel at once.

At each layer, clean (uncorrupted) token states are spliced into an otherwise-corrupted forward pass, one alignment window at a time, and each patched forecast is scored against how much of the clean-vs-corrupted forecast gap that single window's worth of clean state restored. The curve is the average restoration across all windows at that layer — a genuinely localized causal probe of where the corrupted property's effect on the *forecast* is carried.

What does this mean?

How to read it
1.0 means patching that layer (on average, one window at a time) fully restores the clean forecast; 0 means no effect; negative means patching that window actively made the corrupted forecast worse (a real and informative outcome, not an error — it means that window's clean state is actively misleading once the rest of the context is still corrupted). A curve that rises with depth suggests the corruption's effect on the output is increasingly concentrated in later layers' local token states; a flat curve near 0 suggests the damage isn't carried locally at all (check the per-window heatmaps below for exactly where it lives instead).

Limitations
Deliberately NOT a whole-context (every position at once) patch: overwriting an entire layer's complete state is mathematically guaranteed to reach exactly 100% restoration at every layer in any purely sequential residual architecture (nothing about the input survives past a fully-overwritten layer), which tests wiring, not depth. Window-local patching avoids that ceiling, but values from different corruptions aren't on a shared physical scale (each is normalized by its own clean-vs-corrupted damage) — compare shapes/crossovers within a corruption, not raw levels across corruptions. Unlike the ΔMASE figures elsewhere in this report, these values are NOT expressed in repeat-run-noise-floor units: restoration is already normalized by each corruption's own damage, and that denominator is not stored in MASE units, so the conversion would need a change to the L3 stage itself rather than to this chart. Read a near-zero restoration as "not localized here", not as "below the noise floor".

TimesFM: per-window restoration (window = 32 steps)

Where in both depth and time each corruption's effect on TimesFM's forecast is causally carried: one grid per corruption, brighter = patching that one (layer, window) cell recovered more.

The full [depth x time-window] grid the curve above averages over: each cell patches only that layer's tokens belonging to that one time window, so this is where in *both* depth and time a corruption's effect on the forecast is causally concentrated.

What does this mean?

How to read it
A bright cell means restoring just that (layer, window) recovered most of the clean forecast — the corrupted property's effect on the output is concentrated there. A hot column at a late window (near forecast start) usually just reflects recency — the model naturally weights recent context more — rather than anything specific to the corruption.

Limitations
Every window is scored against the *same* full-context damage denominator (so cells are additive/comparable within one corruption's grid), but that also means a model with many small-effect windows and one with a single dominant window can show similar curve-level averages above for very different reasons — always check the grid, not just the averaged curve.

Chronos-2: per-window restoration (window = 32 steps)

Where in both depth and time each corruption's effect on Chronos-2's forecast is causally carried: one grid per corruption, brighter = patching that one (layer, window) cell recovered more.

Sundial: per-window restoration (window = 32 steps)

Where in both depth and time each corruption's effect on Sundial's forecast is causally carried: one grid per corruption, brighter = patching that one (layer, window) cell recovered more.

Chronos-Bolt: per-window restoration (window = 32 steps)

Where in both depth and time each corruption's effect on Chronos-Bolt's forecast is causally carried: one grid per corruption, brighter = patching that one (layer, window) cell recovered more.

Which corruptions split near-term from far-future repair

corruption TimesFM Chronos-2 Sundial Chronos-Bolt
deseasonalize differs (0.42 → 0.21) same depth (0.18) differs (0.91 → 0.18) differs (0.36 → 0.00)
noise same depth (0.00) differs (0.91 → 0.36) differs (0.18 → 0.00) same depth (0.36)
level_shift differs (0.63 → 0.42) same depth (0.00) same depth (0.00) same depth (0.00)
spike differs (0.00 → 0.21) same depth (0.91) differs (0.36 → 0.18) same depth (0.36)
warp differs (0.00 → 0.42) differs (0.36 → 0.18) same depth (0.00) same depth (0.36)
dropout differs (0.84 → 0.63) differs (0.73 → 0.18) differs (0.91 → 0.00) differs (0.36 → 0.00)

For each corruption, whether the layer that best repairs the first forecast step is the same layer that best repairs the last one. Depths are on each model's own relative-depth axis.

Per-model horizon heatmaps

TimesFM: per-horizon-step restoration

The same restoration, resolved by how far ahead the forecast step is rather than collapsed over the horizon, for TimesFM.

The same window-averaged restoration curve above, resolved by forecast horizon step instead of collapsed over it: each cell asks how much of the clean-vs-corrupted gap AT THAT specific forecast step (not the whole horizon on average) patching that layer restored.

What does this mean?

How to read it
A cell that fades toward the right (later horizon steps) means that layer's causal contribution to restoring the corruption's damage is concentrated in the near-term part of the forecast; a flat row means the layer's causal role is uniform across the whole forecast horizon.

Limitations
Uses the exact per-window-averaged restoration already computed for the depth curve above — no new forward passes — so it inherits the same per-corruption normalization caveat: compare shapes within one corruption's row, not raw levels across corruptions.

Chronos-2: per-horizon-step restoration

The same restoration, resolved by how far ahead the forecast step is rather than collapsed over the horizon, for Chronos-2.

Sundial: per-horizon-step restoration

The same restoration, resolved by how far ahead the forecast step is rather than collapsed over the horizon, for Sundial.

Chronos-Bolt: per-horizon-step restoration

The same restoration, resolved by how far ahead the forecast step is rather than collapsed over the horizon, for Chronos-Bolt.

A concrete, single-series version of the aggregate patching curves above: for one series, the clean context and the corrupted context it produced, its own clean / corrupted / patched forecasts under every corruption that was patched, and its own restoration grid at the corruption that damaged it most.

How to read these case studies

How to read it
The patched forecast at each corruption uses the single (layer, window) cell that restored the most on average across the whole sampled batch — named in the table as patch_layer / patch_window — not this series' own best cell, which the table gives separately as own_best_layer / own_best_window. Where the two differ, the plotted patch is not the best available for this series, and recovered_frac is correspondingly lower than own_best_restoration. A negative recovered_frac means patching moved the forecast further from the clean one than the corruption did. The context traces are plotted on the same time axis as the forecasts but before step 0 — the corrupted context is what the model actually read before producing the forecast from corrupted input trace; the clean context is what it read for the other two forecasts. Each panel supports the usual Plotly affordances (drag to zoom into a region, double-click to reset, camera icon to save an image) via the toolbar in its top-right corner — the same detail-on-demand the SAE exemplar panels give through their click-to-enlarge modal, adapted to a multi-panel figure that already draws every corruption at once.

Limitations
These series are a family-stratified sample of the patched batch, not a typical or a worst case: useful for making the aggregate curves concrete and for checking that the patch mechanism does what the aggregate says, not for estimating how often any pattern here occurs. All quantities are scaled by each series' own naive-forecast error, so they are comparable across series of different amplitude.

TimesFM · d54b542c0edbac49 (random_parametric)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 0.829 0.684 2.023 1.767 False 1.642 1.920 stacked_xf.16 15 0.984 stacked_xf.16 15
noise 0.335 -0.103 2.023 1.767 False 2.083 2.098 stacked_xf.16 13 0.993 stacked_xf.16 15
level_shift 6.364 0.280 2.023 1.767 False 7.760 5.978 stacked_xf.0 15 0.979 stacked_xf.16 15
spike 0.391 -0.351 2.023 1.767 False 1.689 1.646 stacked_xf.0 2 0.978 stacked_xf.16 15
warp 0.462 0.555 2.023 1.767 False 2.124 2.190 stacked_xf.12 13 0.981 stacked_xf.16 13
dropout 0.051 -0.798 2.023 1.767 False 2.019 2.054 stacked_xf.4 5 0.998 stacked_xf.12 13

Every patched corruption for series d54b542c0edbac49 under TimesFM, in units of this series' own naive-forecast error. On this series TimesFM's clean forecast does not beat a flat line (2.02 against 1.77 for holding the last observed value, same units). That is a property of the series, not of the corruption experiment: with nothing periodic in the context to extrapolate, the best available response is a level estimate, which is why the clean, corrupted and patched traces all look flat and all sit close together. Read the clean-vs-corrupted gap on this panel; the clean-vs-truth gap is a ceiling every model in this run hits.

Series d54b542c0edbac49 under TimesFM: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series d54b542c0edbac49, level_shift (the corruption that damaged this series most under TimesFM): how much patching each single layer×window cell recovered, for this series alone.

TimesFM · c334536c37301114 (mixture)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 2.304 -0.163 0.546 5.016 True 2.561 3.003 stacked_xf.16 15 0.899 stacked_xf.12 13
noise 0.575 0.059 0.546 5.016 True 0.899 0.758 stacked_xf.16 13 0.969 stacked_xf.0 15
level_shift 11.329 0.621 0.546 5.016 True 11.443 4.403 stacked_xf.0 15 0.979 stacked_xf.0 15
spike 0.555 0.000 0.546 5.016 True 0.945 0.945 stacked_xf.0 2 0.953 stacked_xf.4 11
warp 3.168 0.025 0.546 5.016 True 3.392 3.316 stacked_xf.12 13 0.802 stacked_xf.16 15
dropout 0.153 0.113 0.546 5.016 True 0.581 0.550 stacked_xf.4 5 0.994 stacked_xf.4 13

Every patched corruption for series c334536c37301114 under TimesFM, in units of this series' own naive-forecast error.

Series c334536c37301114 under TimesFM: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series c334536c37301114, level_shift (the corruption that damaged this series most under TimesFM): how much patching each single layer×window cell recovered, for this series alone.

Chronos-2 · d54b542c0edbac49 (random_parametric)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 0.214 -0.360 1.787 1.767 False 1.687 1.670 encoder.block.0 9 0.992 encoder.block.10 15
noise 0.347 0.037 1.787 1.767 False 1.888 1.911 encoder.block.0 10 0.981 encoder.block.4 8
level_shift 6.771 0.127 1.787 1.767 False 7.655 6.793 encoder.block.0 15 0.983 encoder.block.0 13
spike 0.236 -0.114 1.787 1.767 False 1.909 1.906 encoder.block.6 6 0.983 encoder.block.0 2
warp 0.310 -0.008 1.787 1.767 False 2.091 2.098 encoder.block.0 2 0.986 encoder.block.6 15
dropout 0.085 -1.271 1.787 1.767 False 1.796 1.778 encoder.block.2 5 0.993 encoder.block.0 1

Every patched corruption for series d54b542c0edbac49 under Chronos-2, in units of this series' own naive-forecast error. On this series Chronos-2's clean forecast does not beat a flat line (1.79 against 1.77 for holding the last observed value, same units). That is a property of the series, not of the corruption experiment: with nothing periodic in the context to extrapolate, the best available response is a level estimate, which is why the clean, corrupted and patched traces all look flat and all sit close together. Read the clean-vs-corrupted gap on this panel; the clean-vs-truth gap is a ceiling every model in this run hits.

Series d54b542c0edbac49 under Chronos-2: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series d54b542c0edbac49, level_shift (the corruption that damaged this series most under Chronos-2): how much patching each single layer×window cell recovered, for this series alone.

Chronos-2 · c334536c37301114 (mixture)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 1.743 -0.107 0.532 5.016 True 2.002 2.195 encoder.block.0 9 0.917 encoder.block.6 14
noise 0.657 0.209 0.532 5.016 True 0.830 0.679 encoder.block.0 10 0.957 encoder.block.0 10
level_shift 10.897 0.508 0.532 5.016 True 11.070 5.530 encoder.block.0 15 0.976 encoder.block.0 15
spike 0.175 -0.232 0.532 5.016 True 0.487 0.530 encoder.block.6 6 0.970 encoder.block.4 2
warp 3.283 -0.030 0.532 5.016 True 3.477 3.581 encoder.block.0 2 0.748 encoder.block.2 6
dropout 0.110 0.379 0.532 5.016 True 0.502 0.532 encoder.block.2 5 0.990 encoder.block.0 5

Every patched corruption for series c334536c37301114 under Chronos-2, in units of this series' own naive-forecast error.

Series c334536c37301114 under Chronos-2: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series c334536c37301114, level_shift (the corruption that damaged this series most under Chronos-2): how much patching each single layer×window cell recovered, for this series alone.

Sundial · d54b542c0edbac49 (random_parametric)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 0.286 -0.413 1.955 1.767 False 1.719 1.762 model.layers.10 15 0.995 model.layers.10 15
noise 0.768 0.392 1.955 1.767 False 1.820 1.870 model.layers.2 15 0.987 model.layers.8 15
level_shift 5.847 0.475 1.955 1.767 False 6.773 3.995 model.layers.8 15 0.982 model.layers.10 15
spike 0.258 -0.438 1.955 1.767 False 1.922 1.822 model.layers.2 6 0.987 model.layers.0 2
warp 0.215 -1.457 1.955 1.767 False 2.047 1.734 model.layers.10 15 0.988 model.layers.10 15
dropout 0.141 -2.113 1.955 1.767 False 1.831 1.737 model.layers.6 15 0.993 model.layers.10 15

Every patched corruption for series d54b542c0edbac49 under Sundial, in units of this series' own naive-forecast error. On this series Sundial's clean forecast does not beat a flat line (1.95 against 1.77 for holding the last observed value, same units). That is a property of the series, not of the corruption experiment: with nothing periodic in the context to extrapolate, the best available response is a level estimate, which is why the clean, corrupted and patched traces all look flat and all sit close together. Read the clean-vs-corrupted gap on this panel; the clean-vs-truth gap is a ceiling every model in this run hits.

Series d54b542c0edbac49 under Sundial: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series d54b542c0edbac49, level_shift (the corruption that damaged this series most under Sundial): how much patching each single layer×window cell recovered, for this series alone.

Sundial · c334536c37301114 (mixture)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 1.913 0.285 0.623 5.016 True 2.417 1.868 model.layers.10 15 0.873 model.layers.10 15
noise 0.696 -0.082 0.623 5.016 True 1.213 1.113 model.layers.2 15 0.976 model.layers.0 6
level_shift 9.580 0.576 0.623 5.016 True 9.939 4.424 model.layers.8 15 0.984 model.layers.2 15
spike 0.621 -0.027 0.623 5.016 True 1.098 1.066 model.layers.2 6 0.977 model.layers.0 11
warp 2.925 0.849 0.623 5.016 True 3.387 0.951 model.layers.10 15 0.960 model.layers.10 15
dropout 0.162 -0.493 0.623 5.016 True 0.709 0.735 model.layers.6 15 0.981 model.layers.2 13

Every patched corruption for series c334536c37301114 under Sundial, in units of this series' own naive-forecast error.

Series c334536c37301114 under Sundial: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series c334536c37301114, level_shift (the corruption that damaged this series most under Sundial): how much patching each single layer×window cell recovered, for this series alone.

Chronos-Bolt · d54b542c0edbac49 (random_parametric)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 0.207 -0.239 1.870 1.767 False 1.696 1.841 encoder.block.4 15 0.991 encoder.block.4 8
noise 0.603 -0.563 1.870 1.767 False 1.871 2.230 encoder.block.0 15 0.975 encoder.block.0 14
level_shift 6.712 0.208 1.870 1.767 False 7.547 6.150 encoder.block.0 15 0.972 encoder.block.0 13
spike 0.572 -0.119 1.870 1.767 False 1.940 1.938 encoder.block.0 14 0.906 encoder.block.2 4
warp 0.575 -0.011 1.870 1.767 False 2.324 2.360 encoder.block.0 11 0.955 encoder.block.4 15
dropout 0.376 -0.007 1.870 1.767 False 1.940 1.939 encoder.block.0 9 0.976 encoder.block.0 1

Every patched corruption for series d54b542c0edbac49 under Chronos-Bolt, in units of this series' own naive-forecast error. On this series Chronos-Bolt's clean forecast does not beat a flat line (1.87 against 1.77 for holding the last observed value, same units). That is a property of the series, not of the corruption experiment: with nothing periodic in the context to extrapolate, the best available response is a level estimate, which is why the clean, corrupted and patched traces all look flat and all sit close together. Read the clean-vs-corrupted gap on this panel; the clean-vs-truth gap is a ceiling every model in this run hits.

Series d54b542c0edbac49 under Chronos-Bolt: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series d54b542c0edbac49, level_shift (the corruption that damaged this series most under Chronos-Bolt): how much patching each single layer×window cell recovered, for this series alone.

Chronos-Bolt · c334536c37301114 (mixture)

corruption damage recovered_frac mase_clean mase_naive beats_naive mase_corrupted mase_patched patch_layer patch_window own_best_restoration own_best_layer own_best_window
deseasonalize 2.011 0.038 0.620 5.016 True 2.325 2.246 encoder.block.4 15 0.918 encoder.block.4 12
noise 0.543 0.181 0.620 5.016 True 0.921 0.793 encoder.block.0 15 0.982 encoder.block.0 6
level_shift 10.998 0.583 0.620 5.016 True 11.144 4.731 encoder.block.0 15 0.977 encoder.block.0 15
spike 0.565 0.385 0.620 5.016 True 0.844 0.692 encoder.block.0 14 0.941 encoder.block.2 11
warp 4.255 -0.028 0.620 5.016 True 4.453 4.592 encoder.block.0 11 0.742 encoder.block.4 6
dropout 0.164 0.009 0.620 5.016 True 0.645 0.642 encoder.block.0 9 0.991 encoder.block.2 13

Every patched corruption for series c334536c37301114 under Chronos-Bolt, in units of this series' own naive-forecast error.

Series c334536c37301114 under Chronos-Bolt: one panel per patched corruption. Before step 0, the clean context and the corrupted context it produced — the last 64 steps shown by default for most corruptions, since that keeps them readable; spike and dropout touch only a small, randomly-located span of the full context, so those two default to a wider view with that span shaded and labelled corrupted span so it isn't missed. The full context is plotted underneath every panel either way — use the autoscale button in the toolbar (top-right of the figure) to zoom out and see all of it, on any corruption; after it, the clean forecast, the corrupted one, and the one recovered by patching. Each panel is patched at the single layer×window cell that restored the most on average across the whole batch — the patch_layer/patch_window pair in the table above, not this series' own best cell, which the table gives separately as own_best_layer. The context and forecast of the same condition share a color (clean = blue, corrupted = orange), so each pair reads as one continuous line across the divider; the gap between true continuation and forecast from clean input is this model's ordinary forecast error on this series, which the corruption experiment neither creates nor removes — the quantity under study is the gap between the clean and corrupted forecasts. Legend clicks apply to every panel; use the toolbar in the top-right of the figure to zoom into any region.

Series c334536c37301114, level_shift (the corruption that damaged this series most under Chronos-Bolt): how much patching each single layer×window cell recovered, for this series alone.

Attention

Attention structure & head causality

Where heads look as a function of temporal lag, which heads carry seasonal structure, and which heads and MLP blocks forecasts causally depend on.

What this stage tells you

Question
Which attention heads look where in time, and which of them (or which MLP blocks) actually matter to the forecast?

How
Averages each head's attention weight as a function of how far back in time it looks, flags heads whose attention concentrates near seasonal-period multiples, and separately re-runs the forecast with individual heads or MLP blocks zeroed out to see how much accuracy degrades.

Good vs. bad result
Good: a head with a clean, repeating attention stripe at a real seasonal lag (a periodicity head) whose removal via ablation measurably hurts accuracy on exactly that kind of data — pattern and causal importance agreeing. Bad: no head or MLP block's removal moves accuracy at all, or the architecture reports 'unsupported' because it exposes no attention weights to inspect.

What it cannot tell you
The lag-profile and periodicity-head numbers are unconditional averages over sampled series, so a head that's periodic only on some data families and flat on others can look unremarkable in the averaged view even though it's doing real, family-specific work. Pattern support (whether attention weights or ablation are even available) varies by architecture, so a missing or 'unsupported' result here is a capability gap, not evidence the model lacks that structure.

TimesFM

Attention mass by temporal lag

Average attention weight as a function of how many steps behind the query a key token is, for every head of every captured layer — reveals which heads act locally (mass concentrated at small lag) versus which look far back (mass at large or periodic lags).

What does this mean?

How to read it
A bright stripe at a fixed lag repeating every `period` steps is a candidate periodicity/induction head — it's specifically looking one season back. A head with all its mass at lag 0-1 is doing local/recency-based aggregation, not long-range structure.

Limitations
This is an unconditional average over sampled series, so a head that's periodic only on seasonal families and local on trend-only families will show a blurred, unremarkable average here — the top-periodicity-heads table below is computed per-family specifically to avoid that dilution. Architectures with no exposed attention pattern (purely functional attention) show 'unsupported' instead of this heatmap.

Top periodicity heads

layer head score family
stacked_xf.1 8 0.040 block_bootstrap
stacked_xf.0 3 0.022 block_bootstrap
stacked_xf.0 15 0.018 block_bootstrap
stacked_xf.0 0 0.015 block_bootstrap
stacked_xf.0 14 0.015 block_bootstrap

Per head, per family: normalized attention mass falling within ±1 lag of that family's seasonal period (and its multiples), minus a mask-fraction baseline — the mass a head paying uniform attention to every lag would put in those same positions purely by chance, given how many of the possible lags count as 'near a period multiple.' Each head keeps only its best-scoring family (shown in the table) so a head periodic on one family isn't diluted by its flat behavior on the others, the way the unconditional heatmap above would show it.

What does this mean?

How to read it
'score' is excess mass over that chance baseline, not a raw fraction: 0 means this head's mass near seasonal-lag multiples is exactly what a uniform head would show by chance (no real periodicity signal); a score of, say, 0.30 means an extra 30 percentage points of this head's attention mass sits at seasonal-lag multiples beyond chance — this is the induction-head analog for forecasting. Higher is a stronger, more specifically seasonal head.

Limitations
Only tests period multiples derived from each benchmark family's *labeled* seasonal period — a head genuinely periodic at an unlabeled or non-integer-ratio period would score near zero here despite being real. The reported family is whichever gave that head its single highest score, not every family it responds to.

Head mean-ablation ΔMASE

Each head's output projection input is fixed to its mean activation (mean-ablation: removes what's head-specific about this input while preserving the head's typical/average contribution) and the resulting forecast degradation is measured — a direct causal test of which heads the forecast depends on, not just which heads look interesting.

What does this mean?

How to read it
Positive ΔMASE (red) means removing that head hurts the forecast — it's load-bearing. Near-zero or negative (blue) means the head is redundant or even actively unhelpful for this benchmark. Concretely: a cell at +0.15 means mean-ablating that head made this model's average MASE 0.15 worse in absolute terms (e.g. 1.00 → 1.15, roughly 15% worse relative to a MASE-1.0 baseline); a cell at -0.05 means ablating it left the forecast slightly *better*. The most load-bearing head is called out in the findings.

Limitations
Mean-ablation is a specific, relatively mild intervention (replacing with the *average* behavior, not zero or noise) — a head could still matter under a harsher ablation. Heads can also compensate for each other (redundant circuits), so ablating one at a time can understate the importance of a head that's only critical once its backup is also removed.

MLP ablation unavailable: no wrapping MLP submodule found for this architecture (its feed-forward block may be exposed as separate Linear layers instead of one named module).

Chronos-2

Attention mass by temporal lag

Average attention weight as a function of how many steps behind the query a key token is, for every head of every captured layer — reveals which heads act locally (mass concentrated at small lag) versus which look far back (mass at large or periodic lags).

What does this mean?

How to read it
A bright stripe at a fixed lag repeating every `period` steps is a candidate periodicity/induction head — it's specifically looking one season back. A head with all its mass at lag 0-1 is doing local/recency-based aggregation, not long-range structure.

Limitations
This is an unconditional average over sampled series, so a head that's periodic only on seasonal families and local on trend-only families will show a blurred, unremarkable average here — the top-periodicity-heads table below is computed per-family specifically to avoid that dilution. Architectures with no exposed attention pattern (purely functional attention) show 'unsupported' instead of this heatmap.

Top periodicity heads

layer head score family
encoder.block.3 5 0.406 block_bootstrap
encoder.block.2 10 0.401 block_bootstrap
encoder.block.3 3 0.391 block_bootstrap
encoder.block.5 1 0.387 block_bootstrap
encoder.block.5 4 0.373 block_bootstrap

Per head, per family: normalized attention mass falling within ±1 lag of that family's seasonal period (and its multiples), minus a mask-fraction baseline — the mass a head paying uniform attention to every lag would put in those same positions purely by chance, given how many of the possible lags count as 'near a period multiple.' Each head keeps only its best-scoring family (shown in the table) so a head periodic on one family isn't diluted by its flat behavior on the others, the way the unconditional heatmap above would show it.

What does this mean?

How to read it
'score' is excess mass over that chance baseline, not a raw fraction: 0 means this head's mass near seasonal-lag multiples is exactly what a uniform head would show by chance (no real periodicity signal); a score of, say, 0.30 means an extra 30 percentage points of this head's attention mass sits at seasonal-lag multiples beyond chance — this is the induction-head analog for forecasting. Higher is a stronger, more specifically seasonal head.

Limitations
Only tests period multiples derived from each benchmark family's *labeled* seasonal period — a head genuinely periodic at an unlabeled or non-integer-ratio period would score near zero here despite being real. The reported family is whichever gave that head its single highest score, not every family it responds to.

Top periodicity heads — resolution-matched

layer head score family
encoder.block.3 5 0.062 block_bootstrap
encoder.block.4 4 0.062 block_bootstrap
encoder.block.3 1 0.062 block_bootstrap
encoder.block.3 2 0.062 block_bootstrap
encoder.block.3 0 0.062 block_bootstrap

The same statistic, recomputed after binning this model's lag axis to 32 time steps — the token width of the coarsest model in this run (TimesFM). Lag index means a different number of timesteps for each model (this one resolves 16 steps), so the native table above compares unlike to unlike across models.

What does this mean?

How to read it
This is the table a CROSS-MODEL claim may cite; the native one above is the right axis for a statement about this model alone. If a head's rank differs between the two, the native ranking was partly a statement about patch size.

Limitations
Binning can only lose resolution, never add it, so a genuinely sub-bin-width periodicity in the finer model is invisible here by construction — that is the point: it is not comparable to a model that cannot resolve it at all. A difference smaller than 32 steps is not interpretable across models under any mode.

Head mean-ablation ΔMASE

Each head's output projection input is fixed to its mean activation (mean-ablation: removes what's head-specific about this input while preserving the head's typical/average contribution) and the resulting forecast degradation is measured — a direct causal test of which heads the forecast depends on, not just which heads look interesting.

What does this mean?

How to read it
Positive ΔMASE (red) means removing that head hurts the forecast — it's load-bearing. Near-zero or negative (blue) means the head is redundant or even actively unhelpful for this benchmark. Concretely: a cell at +0.15 means mean-ablating that head made this model's average MASE 0.15 worse in absolute terms (e.g. 1.00 → 1.15, roughly 15% worse relative to a MASE-1.0 baseline); a cell at -0.05 means ablating it left the forecast slightly *better*. The most load-bearing head is called out in the findings.

Limitations
Mean-ablation is a specific, relatively mild intervention (replacing with the *average* behavior, not zero or noise) — a head could still matter under a harsher ablation. Heads can also compensate for each other (redundant circuits), so ablating one at a time can understate the importance of a head that's only critical once its backup is also removed.

MLP mean-ablation ΔMASE

The same mean-ablation causal test as the head heatmap above, applied to each block's MLP sublayer as a whole instead of individual attention heads.

What does this mean?

How to read it
Taller bars mean that block's MLP matters more to the forecast. Comparing this to the head-ablation heatmap for the same block shows whether a layer's causal contribution is mostly attention-driven, MLP-driven, or both.

Limitations
Same caveats as head ablation: mean-ablation is mild, and redundancy across blocks can hide a block's true importance if another block backs it up.

Sundial

Attention patterns unsupported for this architecture.

Head mean-ablation ΔMASE

Each head's output projection input is fixed to its mean activation (mean-ablation: removes what's head-specific about this input while preserving the head's typical/average contribution) and the resulting forecast degradation is measured — a direct causal test of which heads the forecast depends on, not just which heads look interesting.

What does this mean?

How to read it
Positive ΔMASE (red) means removing that head hurts the forecast — it's load-bearing. Near-zero or negative (blue) means the head is redundant or even actively unhelpful for this benchmark. Concretely: a cell at +0.15 means mean-ablating that head made this model's average MASE 0.15 worse in absolute terms (e.g. 1.00 → 1.15, roughly 15% worse relative to a MASE-1.0 baseline); a cell at -0.05 means ablating it left the forecast slightly *better*. The most load-bearing head is called out in the findings.

Limitations
Mean-ablation is a specific, relatively mild intervention (replacing with the *average* behavior, not zero or noise) — a head could still matter under a harsher ablation. Heads can also compensate for each other (redundant circuits), so ablating one at a time can understate the importance of a head that's only critical once its backup is also removed.

⚠ Sundial's most load-bearing head (L3·h11) ablates to ΔMASE +0.037 (0.2× this model's repeat-run floor of ±0.177, below its own repeat-run noise floor) — so no head in this model cleared its own repeat-run noise floor, and no ranking finding is emitted from this heatmap.

MLP mean-ablation ΔMASE

The same mean-ablation causal test as the head heatmap above, applied to each block's MLP sublayer as a whole instead of individual attention heads.

What does this mean?

How to read it
Taller bars mean that block's MLP matters more to the forecast. Comparing this to the head-ablation heatmap for the same block shows whether a layer's causal contribution is mostly attention-driven, MLP-driven, or both. The dotted line is this model's own repeat-run MASE noise floor: a bar below it is not distinguishable from calling the model twice.

Limitations
Same caveats as head ablation: mean-ablation is mild, and redundancy across blocks can hide a block's true importance if another block backs it up.

Chronos-Bolt

Attention patterns unsupported for this architecture.

Head mean-ablation ΔMASE

Each head's output projection input is fixed to its mean activation (mean-ablation: removes what's head-specific about this input while preserving the head's typical/average contribution) and the resulting forecast degradation is measured — a direct causal test of which heads the forecast depends on, not just which heads look interesting.

What does this mean?

How to read it
Positive ΔMASE (red) means removing that head hurts the forecast — it's load-bearing. Near-zero or negative (blue) means the head is redundant or even actively unhelpful for this benchmark. Concretely: a cell at +0.15 means mean-ablating that head made this model's average MASE 0.15 worse in absolute terms (e.g. 1.00 → 1.15, roughly 15% worse relative to a MASE-1.0 baseline); a cell at -0.05 means ablating it left the forecast slightly *better*. The most load-bearing head is called out in the findings.

Limitations
Mean-ablation is a specific, relatively mild intervention (replacing with the *average* behavior, not zero or noise) — a head could still matter under a harsher ablation. Heads can also compensate for each other (redundant circuits), so ablating one at a time can understate the importance of a head that's only critical once its backup is also removed.

MLP mean-ablation ΔMASE

The same mean-ablation causal test as the head heatmap above, applied to each block's MLP sublayer as a whole instead of individual attention heads.

What does this mean?

How to read it
Taller bars mean that block's MLP matters more to the forecast. Comparing this to the head-ablation heatmap for the same block shows whether a layer's causal contribution is mostly attention-driven, MLP-driven, or both.

Limitations
Same caveats as head ablation: mean-ablation is mild, and redundancy across blocks can hide a block's true importance if another block backs it up.

Part 6 — Features and concepts

The sparse feature dictionaries trained per model and per layer, the concepts they cluster into, whether those concepts are shared across models, and concrete per-family case studies.

↑ contents
SAE

Sparse feature dictionary

Per-target reconstruction/dead-feature/forecast-preservation summary, plus exemplar series for the dictionary's ground-truth-matched features.

What this stage tells you

Question
Can each model's layer be decomposed into a small number of individually interpretable features, do those features actually matter to the forecast, and do the two models' features play the same role?

How
Trains a sparse dictionary that reconstructs a layer's activations from only a handful of active 'feature' directions at a time, then checks reconstruction quality, how many learned features ever fire at all, whether swapping in the reconstruction changes the forecast, and whether any feature's activation tracks a known ground-truth property of the data (like a trend order or a seasonal period). A causal channel battery then patches each alive feature's direction into a clean forward pass and measures a real, per-channel response (not just correlation with a label), scored against a random-direction null. Features are clustered into named 'roles' by their shared response and structural signature, and each model's roles are matched against the other model's by cosine similarity of their null-normalized response fingerprints, checked against an untrained-twin floor.

Good vs. bad result
Good: high reconstruction fidelity, a low dead-feature rate, forecast-preservation deltas that stay within the SAE's own seed-to-seed noise floor, and features whose activation clearly tracks a real ground-truth field well above what random label shuffling would produce by chance. For the causal layer: a channel response that clears the random-direction null, and a cross-model role match rate that clears its own untrained-twin floor (not just zero). Bad: the large majority of features never firing at all (a common failure mode), a forecast-preservation delta far outside the noise floor, a ground-truth alignment score that isn't meaningfully above its own permutation-null control, or a role match rate that looks large but sits below the untrained-twin floor — architecture match alone can produce that, not shared learned structure.

What it cannot tell you
A feature firing on a particular kind of series is illustrative correlation unless the causal channel battery has confirmed a real patched response for that feature — check the channel result, not just the ground-truth alignment score, before reading any feature as meaningful. A cross-model role match is a geometric correspondence in response space, not evidence the two models use that role the same way causally — read the match rate against its own untrained-twin floor before treating any match as evidence of a shared feature; a rate that does not clear that floor is not an established claim for that pair, and this is a per-run measurement, not a fixed property of the method. Only the small alive fraction of the dictionary (often under 10%) can ever show up as an example, and the headline alignment number is inflated by searching many candidate ground-truth fields per feature, so it must always be read next to its permutation-null control, never on its own.

What these numbers are for, and why reconstruction fidelity is not the headline

A sparse dictionary is only useful here if four things hold, in order, and each column below tests exactly one of them. (1) Is it a faithful stand-in for the layer? That is reconstruction fidelity — and it is a floor, not a finding: a dictionary that cannot rebuild the layer is describing something else. (2) Is enough of it actually in use? That is the dead-feature share. High fidelity from a mostly-dead dictionary means every feature shown was drawn from a small surviving minority. (3) Does the model still forecast the same way through it? That is ΔMASE, and it is a stronger test than fidelity, because fidelity is measured in activation space where all directions count equally and the forecast does not care equally about all of them — a reconstruction can be numerically excellent and still drop the one direction the forecast head reads. ΔMASE sign then asks whether that number survives refitting the dictionary at another random seed; where it does not, the damage and its direction are not a measurement at all. (4) Do its features correspond to anything nameable? That is alignment, read against each dictionary's own label-permutation null rather than against zero. This is the one closest to the question the section exists for — the goal is reading features, not rebuilding layers — and it is the one that most often disagrees with fidelity: on this evidence a dictionary can rebuild its layer almost perfectly while none of its features corresponds to any labelled property. Open the table below for each column's exact arithmetic.

Every trained dictionary on one row, worst first. LEFT: how much of each dictionary is dead, against the acceptance bar it was judged on. MIDDLE: how well the live part reconstructs the layer. RIGHT: each dictionary's ground-truth alignment (orange) against ITS OWN label-permutation null (grey tick) -- the bar's length is the margin, and a grey tick to the right of the orange dot means the names carry no more signal than shuffled labels would.

All 14 numbers per dictionary as a table, plus the rule behind every verdict
target reconstruction fidelity reconstruction fidelity (held out) dead rate dead-rate gate admission ΔMASE (window) ΔMASE (token) ΔMASE (token, held out) granularity gap ΔMASE vs own floor ΔMASE sign alignment mean abs rho permutation null p95 alignment vs null
TimesFM/stacked_xf.14 0.869 0.605 0.263 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.075 0.075 0.752 0.000 no floor (deterministic) resolvable (spread ±0.009 over 3 seeds) 0.156 0.111 clears null p95 by +0.045
TimesFM/stacked_xf.10 0.879 0.620 0.239 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.022 0.022 0.426 0.000 no floor (deterministic) NOT resolvable (spread ±0.088 over 3 seeds) 0.145 0.120 clears null p95 by +0.025
TimesFM/stacked_xf.0 0.967 0.910 0.209 passes (under 30%) admitted 0.169 0.169 -0.103 0.000 no floor (deterministic) NOT resolvable (spread ±0.168 over 3 seeds) 0.176 0.115 clears null p95 by +0.061
TimesFM/stacked_xf.4 0.917 0.704 0.204 passes (under 30%) REFUSED — failed: reconstruction fidelity -0.005 -0.005 0.125 0.000 no floor (deterministic) NOT resolvable (spread ±0.086 over 3 seeds) 0.149 0.115 clears null p95 by +0.034
TimesFM/stacked_xf.2 0.936 0.818 0.186 passes (under 30%) REFUSED — failed: reconstruction fidelity -0.018 -0.018 -0.034 0.000 no floor (deterministic) resolvable (spread ±0.075 over 3 seeds) 0.165 0.115 clears null p95 by +0.050
TimesFM/stacked_xf.12 0.886 0.618 0.170 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.000 0.000 0.350 0.000 no floor (deterministic) NOT resolvable (spread ±0.043 over 3 seeds) 0.150 0.115 clears null p95 by +0.035
TimesFM/stacked_xf.6 0.898 0.662 0.163 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.045 0.045 0.126 0.000 no floor (deterministic) NOT resolvable (spread ±0.127 over 3 seeds) 0.146 0.116 clears null p95 by +0.030
TimesFM/stacked_xf.8 0.893 0.630 0.159 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation -0.004 -0.004 0.302 0.000 no floor (deterministic) resolvable (spread ±0.062 over 3 seeds) 0.148 0.114 clears null p95 by +0.033
TimesFM/stacked_xf.16 0.898 0.659 0.142 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.085 0.085 0.629 0.000 no floor (deterministic) NOT resolvable (spread ±0.093 over 3 seeds) 0.169 0.111 clears null p95 by +0.059
TimesFM/stacked_xf.18 0.907 0.864 0.121 passes (under 30%) admitted -0.053 -0.053 0.130 0.000 no floor (deterministic) NOT resolvable (spread ±0.079 over 3 seeds) 0.197 0.122 clears null p95 by +0.075
Chronos-2/encoder.block.11 0.912 0.890 0.065 passes (under 30%) admitted 0.000 0.000 0.000 0.000 no floor (deterministic) NOT resolvable (spread ±0.000 over 3 seeds) 0.243 0.114 clears null p95 by +0.129
Sundial/model.layers.11 0.961 0.822 0.039 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.075 0.018 0.172 0.057 0.4× resolvable (spread ±0.371 over 3 seeds) 0.165 0.118 clears null p95 by +0.047
Sundial/model.layers.10 0.947 0.735 0.019 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.103 -0.005 0.339 0.107 0.6× resolvable (spread ±0.270 over 3 seeds) 0.166 0.121 clears null p95 by +0.045
Chronos-Bolt/encoder.block.3 0.953 0.881 0.014 passes (under 30%) admitted 0.125 -0.054 0.103 0.179 no floor (deterministic) resolvable (spread ±0.097 over 3 seeds) 0.188 0.114 clears null p95 by +0.074
Sundial/model.layers.9 0.943 0.724 0.012 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.164 0.011 0.362 0.153 0.9× resolvable (spread ±0.254 over 3 seeds) 0.164 0.121 clears null p95 by +0.043
Sundial/model.layers.8 0.945 0.739 0.009 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.137 0.058 0.351 0.079 0.8× resolvable (spread ±0.277 over 3 seeds) 0.163 0.119 clears null p95 by +0.044
Chronos-Bolt/encoder.block.5 0.959 0.848 0.008 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.159 -0.076 -0.038 0.235 no floor (deterministic) resolvable (spread ±0.155 over 3 seeds) 0.179 0.115 clears null p95 by +0.065
Chronos-Bolt/encoder.block.4 0.957 0.856 0.008 passes (under 30%) admitted 0.197 0.038 0.152 0.159 no floor (deterministic) resolvable (spread ±0.209 over 3 seeds) 0.189 0.114 clears null p95 by +0.075
Sundial/model.layers.3 0.963 0.822 0.008 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.133 0.019 0.077 0.114 0.8× resolvable (spread ±0.252 over 3 seeds) 0.162 0.119 clears null p95 by +0.043
Sundial/model.layers.7 0.947 0.757 0.006 passes (under 30%) REFUSED — failed: reconstruction fidelity, forecast preservation 0.173 0.064 0.266 0.109 1.0× resolvable (spread ±0.258 over 3 seeds) 0.160 0.119 clears null p95 by +0.041
Sundial/model.layers.6 0.951 0.778 0.006 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.194 -0.006 0.241 0.200 1.1× resolvable (spread ±0.228 over 3 seeds) 0.160 0.120 clears null p95 by +0.040
Sundial/model.layers.5 0.956 0.803 0.006 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.194 -0.005 0.197 0.199 1.1× resolvable (spread ±0.292 over 3 seeds) 0.158 0.119 clears null p95 by +0.039
Chronos-2/encoder.block.10 0.925 0.675 0.005 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.003 -0.010 0.002 0.013 no floor (deterministic) resolvable (spread ±0.017 over 3 seeds) 0.168 0.118 clears null p95 by +0.050
Sundial/model.layers.4 0.964 0.834 0.005 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.137 -0.122 0.246 0.259 0.8× resolvable (spread ±0.246 over 3 seeds) 0.159 0.119 clears null p95 by +0.040
Chronos-2/encoder.block.8 0.917 0.662 0.004 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.001 -0.049 0.039 0.049 no floor (deterministic) resolvable (spread ±0.095 over 3 seeds) 0.168 0.120 clears null p95 by +0.049
Chronos-2/encoder.block.9 0.920 0.664 0.004 passes (under 30%) REFUSED — failed: reconstruction fidelity -0.007 -0.029 0.072 0.022 no floor (deterministic) resolvable (spread ±0.071 over 3 seeds) 0.170 0.118 clears null p95 by +0.053
Chronos-2/encoder.block.5 0.912 0.712 0.003 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.150 -0.074 0.110 0.224 no floor (deterministic) resolvable (spread ±0.106 over 3 seeds) 0.172 0.119 clears null p95 by +0.053
Chronos-2/encoder.block.6 0.907 0.682 0.003 passes (under 30%) REFUSED — failed: reconstruction fidelity 0.036 -0.080 0.128 0.116 no floor (deterministic) resolvable (spread ±0.091 over 3 seeds) 0.173 0.117 clears null p95 by +0.055
Chronos-2/encoder.block.7 0.914 0.654 0.002 passes (under 30%) REFUSED — failed: reconstruction fidelity -0.014 -0.061 0.065 0.047 no floor (deterministic) resolvable (spread ±0.149 over 3 seeds) 0.168 0.120 clears null p95 by +0.048

Every column, in words, with its arithmetic.

ColumnWhat it means, and why it mattersHow it is calculated
targetOne trained dictionary: a model and the single layer of it this dictionary was fitted on. Every other column is a property of that one dictionary, so two rows differ in the model, the layer and the fit at once.Named `model/layer` exactly as the `sae` stage resolved it.
reconstruction fidelityHow faithfully the sparse dictionary can rebuild the layer's own activations from a handful of active features. This is the FLOOR on everything below it: a dictionary that cannot reproduce the layer is not describing the layer.1 - (sum of squared reconstruction error / sum of squared error of predicting the mean activation), over the activations the dictionary was fitted on. 1.0 is exact; 0.0 is no better than predicting the mean; negative is worse than that.
reconstruction fidelity (held out)The same quantity on SERIES the dictionary never saw during training. A large drop from the fitted value means the dictionary memorized these series rather than learning the layer's structure.Identical formula, evaluated on a held-out split of whole SERIES (never windows -- windows inside one series are dependent, so a window split would leak). Drawn as a diamond on the same bar as the fitted value, so the gap between them is a visible length.
dead rateThe fraction of the dictionary's features that never activate on any input. A dead feature is capacity that was allocated and never used, so a high rate means every feature shown was drawn from a small alive minority rather than from the whole dictionary.(features whose activation is exactly zero on every probed row) / (dictionary size).
dead-rate gateThe pass/fail verdict on the dead share, printed together with the bar it was compared against rather than only as a word.`dead rate` compared to the configured acceptance threshold. A target with no threshold configured reads `no gate configured` -- its rate was recorded but never checked, which is not the same as passing.
admissionWhether this dictionary was admitted for feature-level reading at all, and on which bar it failed if not.Every configured acceptance check (reconstruction fidelity, forecast damage) evaluated together. A bar that was never MEASURED leaves the verdict `undecidable` rather than `passed` -- an unmeasured check is not a cleared one.
ΔMASE (window)How much the model's forecast error changes when the layer's real activations are replaced by the dictionary's reconstruction of them. Near zero means the dictionary is a faithful enough stand-in that the model still forecasts the same way; large positive means the reconstruction threw away something the forecast needed.MASE(forecast from the reconstructed activations) - MASE(forecast from the real activations), with the reconstruction done on the pooled WINDOW axis and then broadcast back over the tokens each window covers. That broadcast is lossy for any model whose tokens are narrower than the window, which is why the token column beside it exists.
ΔMASE (token)The same measurement with no window pooling: every raw token is encoded and decoded on its own. This is the column to read as dictionary quality -- it has no architecture confound in it.MASE(reconstructed) - MASE(real), reconstructing each token independently.
ΔMASE (token, held out)Token-granularity forecast damage measured on series the dictionary was never fitted on.Same difference of MASEs, evaluated on the held-out series split.
granularity gapThe distance between the two ΔMASE columns. It measures an ARCHITECTURE difference, not a difference in dictionary quality: it is exactly 0 for a model whose token width equals the alignment window (nothing is broadcast, so the two are the same computation) and grows with the mismatch.|ΔMASE (window) - ΔMASE (token)|. A large value says the window number is inflated by pooling loss and should not be read as dictionary damage.
ΔMASE vs own floorWhether the forecast damage is larger than the amount this model's forecast moves between two identical runs. A model that samples its forecast has a floor above zero; a deterministic one has a floor of exactly zero, so any nonzero damage clears it by arithmetic and the comparison says nothing.|ΔMASE (token)| divided by that model's measured repeat-run MASE spread. Reads `no floor (deterministic)` when the model's repeat spread is exactly zero, rather than reporting a division by it.
ΔMASE signWhether the SIGN of the forecast damage survives retraining the dictionary at a different random seed. Training an SAE is stochastic; if refitting it moves ΔMASE by more than ΔMASE itself, then 'the reconstruction made the forecast better' and 'worse' are the same measurement and neither should be quoted.The dictionary is retrained at several seeds against a FROZEN activation store (so seed is the only thing that varies) and the standard deviation of ΔMASE across those seeds is recorded. `resolvable` means |ΔMASE| exceeds that spread; `NOT resolvable` means it does not. The spread and the seed count are printed in the cell.
alignment mean abs rhoHow strongly this dictionary's features correspond to real, labelled properties of the input series -- the closest thing here to 'are these features interpretable'. It is a different question from reconstruction fidelity, and the two can disagree: a dictionary can rebuild a layer almost perfectly while none of its features corresponds to anything nameable, and the whole point of the section is reading features, not rebuilding layers.Each probed feature's activation is correlated (Spearman, across series) against every candidate ground-truth field; the feature keeps its single best |ρ|; the column is the MEAN of those best |ρ| over all matched features. Because each feature keeps its best of many candidates, this number is inflated above zero by the search alone -- which is exactly why it is never read against zero, only against the permutation null beside it.
permutation null p95How large the alignment number gets by pure chance, for THIS dictionary, at this feature count, under this same best-of-many search. It is the reference the measured alignment has to beat.The ground-truth labels are shuffled across series and the entire matching procedure is re-run many times; this column is the 95th percentile of the resulting mean |ρ|. Every ingredient except the label-to-series correspondence is held fixed, so the difference between the two columns is the part the labels explain.
alignment vs nullThe signed margin of the measured alignment over this target's own permutation null, with the verdict it implies.`alignment mean abs rho` - `permutation null p95`. Positive means the feature names carry signal the same search on shuffled labels would not have produced; zero or negative means they do not.

The figure draws 4 of these 14 numbers -- the three that are comparisons ACROSS dictionaries, plus the null each alignment is read against. The collapsed table above carries all of them, and is the only place the rule behind each verdict is printed.

What does this mean?

How to read it
Worst dictionary first, sorted by dead-feature rate, because a dead dictionary invalidates every feature read off it where low fidelity only weakens them. Read the dead rate and the alignment verdict TOGETHER: a dictionary can be almost entirely alive and still align to labelled properties no better than a mostly-dead one, so neither column alone answers whether a target is worth reading. The alignment column is referenced against each target's own label-permutation null, never against zero, because every feature is matched to its best of many candidate fields and that search inflates the mean even on shuffled labels. `granularity gap` is the distance between the two forecast-preservation numbers: it is exactly 0 for a model whose token width equals the alignment window and grows with the mismatch, so it measures an architecture difference rather than a difference in reconstruction quality.

Limitations
Every column is a property of one dictionary, so nothing here is a cross-model comparison: two targets differ in the model, the layer, and the dictionary that was trained on them at once. A passing dead-rate gate is a floor, not a finding.

585 of 1326 rendered ablation panels (44.1%) have a forecast sd below 10% of their context sd — read as measured before it is read as a defect.

Flat share by archetype and model

archetype n Chronos-2 Chronos-Bolt Sundial TimesFM
anomaly_heavy 39 94.4% 66.7% 38.5% 20.0%
intermittent_bursts 57 91.7% 100.0% 22.7% 50.0%
unknown 763 66.7% 86.4% 63.8% 35.8%
random_walk_drift 23 80.0% 28.6% 50.0%
ar_colored_noise 70 84.6% 78.6% 24.0% 44.4%
regime_switching 17 45.5% 0.0% 50.0%
noisy_chaotic 72 53.3% 55.6% 10.0% 6.9%
trend_dominant 30 0.0% 0.0% 0.0% 15.4%
amplitude_modulated 39 0.0% 0.0% 0.0% 0.0%
clean_low_noise 116 0.0% 0.0% 0.0% 0.0%
multi_seasonal_complex 15 0.0% 0.0% 0.0% 0.0%
nonsinusoidal_seasonal 25 0.0% 0.0% 0.0%
seasonal_dominant 60 0.0% 0.0% 0.0% 0.0%

Share of rendered ablation panels that are flat (forecast sd < 10% of context sd), one row per archetype the corpus recorded, ordered worst first.

What does this table mean?

How to read it
Structured archetypes (a real trend or seasonal component) should show 0% regardless of model; a noise-like archetype (no autocorrelation to extrapolate) flattening for every model is the MMSE-optimal response, not a defect. A row where one model flattens and another does not, on the SAME archetype, is the behavioral difference Item H4 below controls for.

Limitations
Archetype is a property of the CORPUS the run was built against, not of the model — a run whose corpus carries no archetype label contributes only an "unknown" row.

Does the SAE flatten the forecast, or does the model?

Each model's own raw forecast (bar) against the SAE's full reconstruction of it (diamond) — both as median forecast sd over context sd, across every rendered ablation panel. A short segment says the dictionary changes little; the per-model spread itself is what the bars carry.

model raw model (median sd ratio) SAE reconstruction (median sd ratio) raw % flat recon % flat
Chronos-Bolt 0.077 0.050 58.7% 69.0%
Chronos-2 0.084 0.070 54.7% 59.0%
Sundial 0.125 0.123 44.8% 45.2%
TimesFM 0.371 0.327 20.9% 23.9%

Whether the ~6x per-model spread in flatness is a property of each model's own forecast, or an artifact of the SAE reconstructing it.

What does this figure mean?

How to read it
The raw (unpatched) and reconstructed columns are close for every model, and the spread across models is present in the RAW column before any dictionary touches the forecast — so the spread is a model property, safe to render as one, not a reconstruction artifact.

Limitations
This is Item H4(ii): the `unpatched` forecast was already in every ablation artifact at zero extra forward passes. It does not control for a confound correlated with reconstruction FIDELITY across targets (H4(i), not computed here) — a real but smaller, partial check this one does not replace.

What each model accounts for that the others don't

Unit: correlational structural-property coverage of individual SAE features (not the causal, cross-model atlas CONCEPTS -- see Model comparison § What is shared? for that unit).

model properties covered strongest only this model shared with all
Chronos-2 4 ar_coeff_sum (52%) none ar_coeff_sum, seasonal_period_dominant, n_seasonalities
Sundial 4 seasonal_period_dominant (54%) none seasonal_period_dominant, ar_coeff_sum, n_seasonalities
Chronos-Bolt 5 seasonal_period_dominant (44%) none seasonal_period_dominant, n_changepoints, ar_coeff_sum
TimesFM 7 n_seasonalities (74%) ar_order (10%), noise_scale (6%) n_seasonalities, seasonal_period_dominant, ar_coeff_sum

One row per model, pooled over all of that model's analyzed layers. A property counts as covered when at least 5% of a layer's ground-truth-matched features track it at that layer — a maximum over layers, not an average, so a property a model represents at one depth and nowhere else still counts as covered. only this model is the direct answer to "what does this model account for that the others don't".

Share of each model's ground-truth-matched SAE features that track each property, at the layer where that model tracks it most. Columns are ordered by how many models reach the property: left of the black line are the 4 properties all 4 models account for, right of it are those only some do. A blank cell means no layer of that model devoted 5% of its matched features to that property.

The cross-model summary of the SAE section: which properties of the benchmark each model's sparse features organize around, pooled over that model's layers, and whether each property is common to every model or specific to one.

How to read this comparison

How to read it
Read the black line first. Properties to its left are the shared vocabulary — every model in this run devotes features to them, which is the closest thing this pipeline offers to 'these models learned the same thing'. Properties to its right are where the dictionaries diverge. A high share is not a quality claim: it says a large fraction of that layer's interpretable features track this property, not that the model forecasts it well. Cross-check a unique property against the models' CKA in the geometry section — two models with near-identical geometry having no unique properties is a consistent picture, and one with unique properties despite high CKA is worth a second look.

Limitations
Coverage is computed over features that matched a ground-truth field at all, so it describes the interpretable slice of each dictionary, not the whole of it — a model whose features are real but do not correspond to any field this benchmark labels will look like it covers less. The fields are the benchmark's own generator parameters, so a property the corpus does not vary cannot appear here for any model. 'Unique' is relative to the models in THIS run and to the 5% threshold; a model just under it at every layer reads as not covering the property. Correlational throughout — a feature tracking a property is not evidence the model uses it, which is what the causal channel battery exists to test.

What each dictionary's features track

One row per analyzed layer, one column per STRUCTURAL property of the input series (corpus provenance regressed out first, so no column here is a fact about how the benchmark was built). Colour is the share of that dictionary's matched features tracking that property; the number in the cell is how many. Read DOWN a model's own layers for a depth trend and ACROSS models for a difference in what they organize around.

Which properties of the data each layer's sparse features latch onto, and whether the models differ.

What does this heatmap mean?

How to read it
A column that is dark for one model and pale for another is the interesting case: it says the two dictionaries decompose the same corpus around different properties. Within one model, a property that strengthens or fades down the rows is a depth trend in what that model represents. Fields are ordered by total matches across the whole run, so the leftmost columns are the properties this corpus actually exercises -- a pale column on the right may simply be a property few series in this corpus have.

Limitations
Correlational, and only that: a cell says a feature's activation covaries with a labelled property after provenance is regressed out, not that the feature causally carries it. The causal claim is the channel battery in the roles block below, which has been run on a subset of targets. Each feature is also matched to its BEST candidate field, so a feature whose two best fields are nearly tied is assigned to one of them arbitrarily.

Within that picture, the single strongest feature per model and layer is one click away below: the one whose activation best correlates with a structural property of the input series, after regressing out which generator produced it.

Strongest structural feature at each of the 29 analyzed layers
model layer feature structural correlate ρ n series
TimesFM stacked_xf.10 #712 Seasonal component count 0.281 555
TimesFM stacked_xf.18 #408 Seasonal component count -0.231 555
TimesFM stacked_xf.6 #3921 Seasonal component count 0.312 555
TimesFM stacked_xf.16 #712 Seasonal component count 0.297 555
TimesFM stacked_xf.2 #4664 Dominant period -0.309 443
TimesFM stacked_xf.14 #712 Seasonal component count 0.281 555
TimesFM stacked_xf.4 #574 Dominant period -0.299 443
TimesFM stacked_xf.0 #2996 Dominant period -0.263 443
TimesFM stacked_xf.8 #1192 Seasonal component count 0.277 555
TimesFM stacked_xf.12 #712 Seasonal component count 0.272 555
Chronos-2 encoder.block.8 #1209 Autocorrelation strength 0.293 374
Chronos-2 encoder.block.10 #4020 Autocorrelation strength 0.300 374
Chronos-2 encoder.block.11 #561 Seasonal component count 0.356 555
Chronos-2 encoder.block.7 #2278 Dominant period -0.282 443
Chronos-2 encoder.block.9 #4680 Autocorrelation strength -0.248 374
Chronos-2 encoder.block.6 #3087 Seasonal component count -0.308 555
Chronos-2 encoder.block.5 #3168 Autocorrelation strength 0.281 374
Sundial model.layers.3 #2033 Dominant period -0.317 443
Sundial model.layers.10 #5065 Dominant period 0.271 443
Sundial model.layers.11 #2763 Dominant period 0.313 443
Sundial model.layers.9 #5065 Dominant period 0.277 443
Sundial model.layers.6 #5065 Dominant period 0.380 443
Sundial model.layers.7 #5065 Dominant period 0.382 443
Sundial model.layers.5 #2033 Dominant period -0.319 443
Sundial model.layers.4 #2033 Dominant period -0.335 443
Sundial model.layers.8 #1679 Seasonal component count -0.272 555
Chronos-Bolt encoder.block.4 #4325 Dominant period -0.273 443
Chronos-Bolt encoder.block.5 #1866 Changepoint count -0.266 555
Chronos-Bolt encoder.block.3 #4586 Dominant period 0.291 443
TimesFM/stacked_xf.10 — individual features and the series they fire on

Of 6144 probed features, 661 correlate with a structural property of the series and 1042 with a corpus bookkeeping label (mean |ρ| 0.079 vs 0.142). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#712This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=+0.28, n=555removing it moves no channel past its own null
parametric
parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.551 (69% of context sd)
with · without · Δ 0.565 (72% of context sd)
with · without · Δ 0.459 (53% of context sd)
parametric (generator) ρ=+0.53
#4370This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=+0.28, n=555not a candidate
random_parametric
block_bootstrap
block_bootstrap
not measuredparametric (generator) ρ=+0.36
#5638This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=+0.25, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.487 (36% of context sd)
with · without · Δ 0.219 (29% of context sd)
with · without · Δ 0.292 (39% of context sd)
parametric (generator) ρ=+0.36
#1136This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
random_parametric
parametric
not measuredparametric (generator) ρ=+0.38
#5702This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555not a candidate
random_parametric
mixture
mixture
not measuredparametric (generator) ρ=+0.34
#453This feature moves the forecast's seasonal magnitude on the series it fires on (1.17 times the random-direction null), and also moves its spectral centroid, strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555removing it lowers seasonal strength (1.2x its null)
random_parametric
parametric
parametric
n=8
with · without · Δ 1.5 (1.1e+02% of context sd)
with · without · Δ 1.2 (1.4e+02% of context sd)
with · without · Δ 0.943 (1.2e+02% of context sd)
parametric (generator) ρ=+0.49
#3751This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555removing it moves no channel past its own null
random_parametric
block_bootstrap
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 1.17 (87% of context sd)
with · without · Δ 0.0199 (95% of context sd)
with · without · Δ 0.606 (82% of context sd)
parametric (generator) ρ=+0.41
#3320This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=+0.23, n=555removing it moves no channel past its own null
random_parametric
parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.314 (42% of context sd)
with · without · Δ 0.32 (42% of context sd)
with · without · Δ 0.209 (27% of context sd)
parametric (generator) ρ=+0.54

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means
In the dataNameWhat it measuresWhat a high value means
dispersionSpreadHow much the forecast varies within itself (its standard deviation).Feature makes the forecast swing more from step to step.
flatnessFlatnessHow close the forecast is to a constant line.Feature makes the forecast closer to a flat, constant line.
horizon_shape_farFar horizonShape of the late part of the forecast -- its furthest-out steps.Feature changes the long-range forecast's shape by a larger amount.
horizon_shape_nearNear horizonShape of the first part of the forecast -- the steps just after the context ends.Feature changes the near-term forecast's shape by a larger amount.
levelLevelMean value of the forecast -- its overall height.Feature raises the whole forecast.
maseAccuracy (MASE)Forecast error against the true continuation, scaled by a naive baseline.Feature makes the forecast WORSE (higher error).
seasonalSeasonal strengthEnergy in the forecast concentrated at the series' own dominant repeating rhythm.Feature makes the forecast more strongly periodic.
spectral_centroidFrequency balanceCentre of mass of the forecast's frequency spectrum -- low means the forecast is dominated by slow, smooth movement, high means by fast wiggles.Feature shifts the forecast toward higher-frequency, choppier movement.
trendTrendSlope of the forecast -- whether it rises or falls as it continues forward.Feature pushes the forecast to slope upward more steeply.
TimesFM/stacked_xf.18 — individual features and the series they fire on

Of 1536 probed features, 265 correlate with a structural property of the series and 344 with a corpus bookkeeping label (mean |ρ| 0.089 vs 0.191). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#408This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=-0.23, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.45
#1456This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.22, n 443).Dominant period ρ=+0.22, n=443not a candidate
mixture
mixture
mixture
not measuredrandom parametric (generator) ρ=+0.26
#8This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.22, n 555).Seasonal component count ρ=+0.22, n=555not a candidate
random_parametric
random_parametric
parametric
not measurednonsinusoidal seasonal (archetype) ρ=+0.32
#593This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.19, n 555).Seasonal component count ρ=+0.19, n=555not a candidate
random_parametric
parametric
parametric
not measuredparametric (generator) ρ=+0.40
#1212This feature increases the forecast's overall level on the series it fires on (1.27 times the random-direction null), and also decreases forecast error, strongest on series with a larger number of seasonal components (rho 0.19, n 555).Seasonal component count ρ=+0.19, n=555removing it lowers level (1.3x its null)
random_parametric
parametric
parametric
n=8
with · without · Δ 1.06 (69% of context sd)
with · without · Δ 0.789 (70% of context sd)
with · without · Δ 0.53 (54% of context sd)
parametric (generator) ρ=+0.42
#1061This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.18, n 555).Seasonal component count ρ=+0.18, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.40
#582This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.18, n 555).Seasonal component count ρ=+0.18, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measurednonsinusoidal seasonal (archetype) ρ=+0.25
#1201This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.18, n 555).Seasonal component count ρ=+0.18, n=555not a candidate
random_parametric
parametric
random_parametric
not measuredparametric (generator) ρ=+0.46

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.6 — individual features and the series they fire on

Of 6144 probed features, 752 correlate with a structural property of the series and 1199 with a corpus bookkeeping label (mean |ρ| 0.078 vs 0.143). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#3921This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.31, n 555).Seasonal component count ρ=+0.31, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.00693 (0.91% of context sd)
with · without · Δ 0.00195 (0.61% of context sd)
with · without · Δ 0.00512 (2.2% of context sd)
mixture (generator) ρ=-0.30
#4664This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0412 (15% of context sd)
with · without · Δ 0.215 (28% of context sd)
with · without · Δ 0.0621 (15% of context sd)
realism stress (tier) ρ=-0.59
#453This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555removing it moves no channel past its own null
random_parametric
random_parametric
sequential_par
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.703 (50% of context sd)
with · without · Δ 0.37 (39% of context sd)
with · without · Δ 86.7 (51% of context sd)
realism stress (tier) ρ=-0.48
#137This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.22, n 443).Dominant period ρ=-0.22, n=443removing it moves no channel past its own null
random_parametric
random_parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0933 (26% of context sd)
with · without · Δ 0.0774 (24% of context sd)
with · without · Δ 0.249 (29% of context sd)
realism stress (tier) ρ=-0.52
#2106This feature moves the near horizon of the forecast on the series it fires on (1.32 times the random-direction null), and also decreases its trend slope, strongest on series with a smaller dominant seasonal period (rho 0.22, n 443).Dominant period ρ=-0.22, n=443removing it reshapes near horizon (1.3x its null)
block_bootstrap
block_bootstrap
block_bootstrap
n=8
with · without · Δ 0.0574 (1.2e+02% of context sd)
with · without · Δ 0.0305 (96% of context sd)
with · without · Δ 0.0391 (97% of context sd)
random parametric (generator) ρ=-0.38
#3751This feature decreases the forecast's spectral centroid on the series it fires on (1.42 times the random-direction null), and also moves the near horizon of the forecast, strongest on series with a smaller dominant seasonal period (rho 0.21, n 443).Dominant period ρ=-0.21, n=443removing it raises frequency balance (1.8x its null)
block_bootstrap
block_bootstrap
block_bootstrap
n=8
with · without · Δ 0.0396 (1.3e+02% of context sd)
with · without · Δ 0.0383 (95% of context sd)
with · without · Δ 0.0277 (1.3e+02% of context sd)
ar colored noise (archetype) ρ=+0.29
#3038This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.21, n 555).Seasonal component count ρ=+0.21, n=555removing it moves no channel past its own null
mixture
parametric
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.162 (37% of context sd)
with · without · Δ 0.502 (51% of context sd)
with · without · Δ 0.45 (70% of context sd)
parametric (generator) ρ=+0.51
#5638This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.21, n 443).Dominant period ρ=-0.21, n=443removing it moves no channel past its own null
mixture
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.05 (13% of context sd)
with · without · Δ 0.0208 (66% of context sd)
with · without · Δ 0.0107 (23% of context sd)
intermittent bursts (archetype) ρ=+0.30

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.16 — individual features and the series they fire on

Of 6144 probed features, 410 correlate with a structural property of the series and 555 with a corpus bookkeeping label (mean |ρ| 0.086 vs 0.167). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#712This feature decreases the forecast's overall level on the series it fires on (1.06 times the random-direction null), strongest on series with a larger number of seasonal components (rho 0.30, n 555).Seasonal component count ρ=+0.30, n=555removing it raises level (1.1x its null)
random_parametric
random_parametric
parametric
n=8
with · without · Δ 0.813 (47% of context sd)
with · without · Δ 1.02 (66% of context sd)
with · without · Δ 0.644 (52% of context sd)
parametric (generator) ρ=+0.51
#3320This feature moves the near horizon of the forecast on the series it fires on (1.02 times the random-direction null), strongest on series with a larger number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=+0.27, n=555removing it reshapes near horizon (1.0x its null)
parametric
parametric
parametric
n=8
with · without · Δ 0.546 (57% of context sd)
with · without · Δ 0.586 (48% of context sd)
with · without · Δ 0.453 (50% of context sd)
parametric (generator) ρ=+0.54
#3302This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=+0.26, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.32
#5143This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=+0.25, n=555removing it moves no channel past its own null
random_parametric
parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.75 (43% of context sd)
with · without · Δ 0.372 (41% of context sd)
with · without · Δ 0.377 (40% of context sd)
parametric (generator) ρ=+0.54
#301This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=+0.25, n=555not a candidate
random_parametric
random_parametric
parametric
not measuredparametric (generator) ρ=+0.50
#3751This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=+0.25, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 1.39 (91% of context sd)
with · without · Δ 1.03 (77% of context sd)
with · without · Δ 1.09 (63% of context sd)
parametric (generator) ρ=+0.51
#5638This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.32 (24% of context sd)
with · without · Δ 0.594 (39% of context sd)
with · without · Δ 0.496 (29% of context sd)
parametric (generator) ρ=+0.48
#2468This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555not a candidate
parametric
parametric
parametric
not measuredparametric (generator) ρ=+0.50

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.2 — individual features and the series they fire on

Of 6144 probed features, 446 correlate with a structural property of the series and 662 with a corpus bookkeeping label (mean |ρ| 0.091 vs 0.160). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#4664This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.31, n 443).Dominant period ρ=-0.31, n=443removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0518 (14% of context sd)
with · without · Δ 0.154 (27% of context sd)
with · without · Δ 0.214 (41% of context sd)
parametric (generator) ρ=+0.31
#3751This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.30, n 443).Dominant period ρ=-0.30, n=443not a candidate
mixture
mixture
mixture
not measuredintermittent bursts (archetype) ρ=+0.31
#1568This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
block_bootstrap
random_parametric
mixture
not measuredintermittent bursts (archetype) ρ=+0.35
#5638This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443removing it moves no channel past its own null
mixture
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0541 (9.1% of context sd)
with · without · Δ 0.0649 (11% of context sd)
with · without · Δ 0.0302 (10% of context sd)
intermittent bursts (archetype) ρ=+0.41
#1742This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443removing it moves no channel past its own null
mixture
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0833 (22% of context sd)
with · without · Δ 0.102 (17% of context sd)
with · without · Δ 0.0614 (13% of context sd)
intermittent bursts (archetype) ρ=+0.39
#301This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
mixture
mixture
block_bootstrap
not measuredclean low noise (archetype) ρ=-0.32
#1136This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.26, n 443).Dominant period ρ=-0.26, n=443not a candidate
mixture
sequential_par
random_parametric
not measuredintermittent bursts (archetype) ρ=+0.28
#3534This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.26, n 443).Dominant period ρ=-0.26, n=443removing it moves no channel past its own null
mixture
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.251 (42% of context sd)
with · without · Δ 0.101 (26% of context sd)
with · without · Δ 0.117 (41% of context sd)
intermittent bursts (archetype) ρ=+0.33

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.8 — individual features and the series they fire on

Of 6144 probed features, 3064 correlate with a structural property of the series and 4353 with a corpus bookkeeping label (mean |ρ| 0.084 vs 0.167). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#1209This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.29, n 374).Autocorrelation strength ρ=+0.29, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.33
#2594This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.26, n 374).Autocorrelation strength ρ=-0.26, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.41
#5513This feature moves the near horizon of the forecast on the series it fires on (2.63 times the random-direction null), and also moves its overall level, strongest on series with a smaller number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=-0.26, n=555removing it reshapes near horizon (2.6x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.0156 (4% of context sd)
with · without · Δ 0.0195 (4.4% of context sd)
with · without · Δ 0.00781 (4% of context sd)
trend dominant (archetype) ρ=+0.45
#587This feature moves the far horizon of the forecast on the series it fires on (2.26 times the random-direction null), and also increases its overall level, strongest on series with a larger AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=+0.23, n=374removing it raises spread (2.3x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.0537 (9.4% of context sd)
with · without · Δ 0.0127 (4.1% of context sd)
with · without · Δ 0.0312 (6.6% of context sd)
noisy chaotic (archetype) ρ=+0.25
#3440This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.22, n 443).Dominant period ρ=-0.22, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.16
#2360This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.22, n 443).Dominant period ρ=-0.22, n=443not a candidate
random_parametric
random_parametric
sequential_par
not measuredanomaly heavy (archetype) ρ=+0.21
#5523This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.21, n 374).Autocorrelation strength ρ=+0.21, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.18
#100This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.21, n 374).Autocorrelation strength ρ=+0.21, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.38

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.10 — individual features and the series they fire on

Of 6144 probed features, 3327 correlate with a structural property of the series and 4594 with a corpus bookkeeping label (mean |ρ| 0.081 vs 0.166). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#4020This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.30, n 374).Autocorrelation strength ρ=+0.30, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.27
#1119This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=-0.27, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredtrend dominant (archetype) ρ=+0.39
#4928This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.26, n 374).Autocorrelation strength ρ=-0.26, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.28
#2727This feature decreases the forecast's seasonal magnitude on the series it fires on (4.87 times the random-direction null), and also decreases its spread, strongest on series with a smaller number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=-0.25, n=555removing it raises seasonal strength (4.9x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.0234 (4.1% of context sd)
with · without · Δ 0.0166 (5.4% of context sd)
with · without · Δ 0.00293 (2.5% of context sd)
ar colored noise (archetype) ρ=+0.28
#2522This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=+0.24, n=374not a candidate
sequential_par
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.14
#5264This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=+0.24, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.24
#1941This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.22, n 555).Seasonal component count ρ=-0.22, n=555removing it moves no channel past its own null
block_bootstrap
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.041 (1% of context sd)
with · without · Δ 0.0354 (1% of context sd)
with · without · Δ 0.0469 (1% of context sd)
realism stress (tier) ρ=+0.48
#490This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.21, n 443).Dominant period ρ=+0.21, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.22

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.11 — individual features and the series they fire on

Of 768 probed features, 353 correlate with a structural property of the series and 447 with a corpus bookkeeping label (mean |ρ| 0.109 vs 0.239). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateTop-activating series (click to enlarge)Corpus label
#561This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.36, n 555).Seasonal component count ρ=+0.36, n=555
random_parametric
random_parametric
random_parametric
random_parametric
random parametric (generator) ρ=+0.34
#585This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.30, n 374).Autocorrelation strength ρ=+0.30, n=374
random_parametric
random_parametric
random_parametric
random_parametric
ar colored noise (archetype) ρ=+0.18
#15This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.28, n 443).Dominant period ρ=+0.28, n=443
block_bootstrap
block_bootstrap
block_bootstrap
block_bootstrap
realism stress (tier) ρ=+0.37
#106This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.28, n 443).Dominant period ρ=+0.28, n=443
random_parametric
random_parametric
random_parametric
random_parametric
multi seasonal complex (archetype) ρ=+0.46
#82This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.26, n 443).Dominant period ρ=+0.26, n=443
sequential_par
mixture
sequential_par
sequential_par
sequential par (generator) ρ=+0.30
#67This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443
random_parametric
random_parametric
random_parametric
random_parametric
clean low noise (archetype) ρ=+0.26
#422This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.24, n 555).Changepoint count ρ=-0.24, n=555
random_parametric
random_parametric
random_parametric
random_parametric
random parametric (generator) ρ=+0.36
#198This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=-0.24, n=555
random_parametric
mixture
random_parametric
block_bootstrap
sequential par (generator) ρ=+0.29

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation.

Sundial/model.layers.3 — individual features and the series they fire on

Of 6144 probed features, 2131 correlate with a structural property of the series and 3458 with a corpus bookkeeping label (mean |ρ| 0.091 vs 0.159). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#2033This feature increases the forecast's overall level on the series it fires on (1.87 times the random-direction null), and also moves the near horizon of the forecast, strongest on series with a smaller dominant seasonal period (rho 0.32, n 443).Dominant period ρ=-0.32, n=443removing it lowers level (1.9x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.595 (45% of context sd)
with · without · Δ 0.388 (42% of context sd)
with · without · Δ 0.538 (60% of context sd)
parametric (generator) ρ=+0.45
#2518This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.30, n 443).Dominant period ρ=+0.30, n=443not a candidate
mixture
mixture
mixture
not measuredclean low noise (archetype) ρ=+0.24
#5767This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.30, n 443).Dominant period ρ=-0.30, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredamplitude modulated (archetype) ρ=+0.18
#5747This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.29, n 443).Dominant period ρ=+0.29, n=443not a candidate
random_parametric
mixture
random_parametric
not measuredrandom walk drift (archetype) ρ=+0.37
#2394This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of changepoints (rho 0.27, n 555).Changepoint count ρ=+0.27, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.031 (4.2% of context sd)
with · without · Δ 0.247 (19% of context sd)
with · without · Δ 0.0863 (14% of context sd)
random walk drift (archetype) ρ=+0.41
#1284This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.26, n 443).Dominant period ρ=-0.26, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.13
#1679This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=-0.25, n=555removing it moves no channel past its own null
block_bootstrap
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.35 (6.5% of context sd)
with · without · Δ 0.0524 (6.6% of context sd)
with · without · Δ 0.0955 (10% of context sd)
realism stress (tier) ρ=+0.42
#5085This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.15

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.10 — individual features and the series they fire on

Of 6144 probed features, 3137 correlate with a structural property of the series and 4821 with a corpus bookkeeping label (mean |ρ| 0.088 vs 0.164). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#5065This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.27, n 443).Dominant period ρ=+0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.25
#5998This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.27, n 374).Autocorrelation strength ρ=+0.27, n=374not a candidate
sequential_par
sequential_par
sequential_par
not measuredsequential par (generator) ρ=+0.25
#4717This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.26, n 374).Autocorrelation strength ρ=-0.26, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.20
#3637This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=+0.23, n=374not a candidate
sequential_par
sequential_par
sequential_par
not measuredintermittent bursts (archetype) ρ=+0.32
#4076This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=-0.23, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.29
#3288This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.23, n 555).Changepoint count ρ=+0.23, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredregime switching (archetype) ρ=+0.42
#2420This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.22, n 555).Seasonal component count ρ=-0.22, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.00985 (8.5% of context sd)
with · without · Δ 0.00855 (4.7% of context sd)
with · without · Δ 0.0132 (5.2% of context sd)
intermittent bursts (archetype) ρ=+0.36
#2287This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.22, n 374).Autocorrelation strength ρ=+0.22, n=374not a candidate
random_parametric
random_parametric
sequential_par
not measuredar colored noise (archetype) ρ=+0.37

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.11 — individual features and the series they fire on

Of 6144 probed features, 2926 correlate with a structural property of the series and 4240 with a corpus bookkeeping label (mean |ρ| 0.087 vs 0.163). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#2763This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.31, n 443).Dominant period ρ=+0.31, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.32
#4578This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=-0.28, n=555removing it moves no channel past its own null
block_bootstrap
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.358 (9.1% of context sd)
with · without · Δ 0.368 (9.1% of context sd)
with · without · Δ 0.299 (9.2% of context sd)
intermittent bursts (archetype) ρ=+0.56
#4502This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.27, n 374).Autocorrelation strength ρ=+0.27, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.36
#1201This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.26, n 443).Dominant period ρ=+0.26, n=443not a candidate
random_parametric
mixture
random_parametric
not measuredclean low noise (archetype) ρ=+0.22
#5006This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.26, n 555).Changepoint count ρ=+0.26, n=555not a candidate
mixture
mixture
mixture
not measuredrandom parametric (generator) ρ=-0.36
#2287This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.26, n 374).Autocorrelation strength ρ=+0.26, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.32
#2775This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443not a candidate
sequential_par
block_bootstrap
sequential_par
not measuredrealism stress (tier) ρ=+0.29
#5561This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.25, n 374).Autocorrelation strength ρ=-0.25, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.26

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-Bolt/encoder.block.4 — individual features and the series they fire on

Of 6144 probed features, 913 correlate with a structural property of the series and 1293 with a corpus bookkeeping label (mean |ρ| 0.097 vs 0.185). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#4325This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.17
#1732This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.26, n 374).Autocorrelation strength ρ=-0.26, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.25
#1593This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.25, n 555).Changepoint count ρ=-0.25, n=555not a candidate
mixture
mixture
mixture
not measuredrealism stress (tier) ρ=-0.32
#6017This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.25, n 555).Changepoint count ρ=+0.25, n=555not a candidate
mixture
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.23
#5244This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.32
#2978This feature decreases the forecast's seasonal magnitude on the series it fires on (4.09 times the random-direction null), and also moves forecast error, strongest on series with a smaller number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=-0.24, n=555removing it raises seasonal strength (4.1x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.00684 (6.1% of context sd)
with · without · Δ 0.00757 (4.7% of context sd)
with · without · Δ 0.00781 (5.8% of context sd)
ar colored noise (archetype) ρ=+0.31
#6004This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443not a candidate
mixture
block_bootstrap
sequential_par
not measuredseasonal dominant (archetype) ρ=+0.23
#1905This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443not a candidate
mixture
random_parametric
block_bootstrap
not measuredseasonal dominant (archetype) ρ=+0.26

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-Bolt/encoder.block.5 — individual features and the series they fire on

Of 6144 probed features, 861 correlate with a structural property of the series and 1203 with a corpus bookkeeping label (mean |ρ| 0.094 vs 0.175). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#1866This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.27, n 555).Changepoint count ρ=-0.27, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.25
#5560This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.25, n 374).Autocorrelation strength ρ=-0.25, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.23
#3471This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredblock bootstrap (generator) ρ=+0.31
#4771This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.25, n 555).Changepoint count ρ=-0.25, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredintermittent bursts (archetype) ρ=+0.31
#474This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.23, n 555).Changepoint count ρ=+0.23, n=555not a candidate
mixture
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.16
#5693This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of changepoints (rho 0.23, n 555).Changepoint count ρ=-0.23, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.00391 (1.7% of context sd)
with · without · Δ 0.00342 (2% of context sd)
with · without · Δ 0.0029 (2% of context sd)
mixture (generator) ρ=-0.35
#5566This feature moves forecast error on the series it fires on (2.75 times the random-direction null), and also increases its spread and its seasonal magnitude, strongest on series with a smaller dominant seasonal period (rho 0.22, n 443).Dominant period ρ=-0.22, n=443removing it lowers accuracy (mase) (2.7x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.212 (40% of context sd)
with · without · Δ 0.559 (47% of context sd)
with · without · Δ 0.739 (62% of context sd)
block bootstrap (generator) ρ=+0.31
#2176This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.22, n 555).Changepoint count ρ=+0.22, n=555not a candidate
random_parametric
random_parametric
sequential_par
not measuredseasonal dominant (archetype) ρ=-0.09

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.14 — individual features and the series they fire on

Of 6144 probed features, 460 correlate with a structural property of the series and 674 with a corpus bookkeeping label (mean |ρ| 0.084 vs 0.155). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#712This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=+0.28, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.843 (63% of context sd)
with · without · Δ 0.987 (64% of context sd)
with · without · Δ 0.743 (43% of context sd)
parametric (generator) ρ=+0.54
#5702This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=+0.27, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.47
#3320This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=+0.26, n=555removing it moves no channel past its own null
parametric
parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.193 (22% of context sd)
with · without · Δ 0.766 (71% of context sd)
with · without · Δ 0.63 (68% of context sd)
parametric (generator) ρ=+0.56
#301This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=+0.26, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.50
#5638This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=+0.26, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.608 (45% of context sd)
with · without · Δ 0.41 (24% of context sd)
with · without · Δ 0.756 (49% of context sd)
parametric (generator) ρ=+0.46
#4370This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=+0.26, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.39
#1136This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=+0.25, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.48
#1568This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=+0.25, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.47

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.4 — individual features and the series they fire on

Of 6144 probed features, 722 correlate with a structural property of the series and 1131 with a corpus bookkeeping label (mean |ρ| 0.080 vs 0.146). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#574This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.30, n 443).Dominant period ρ=-0.30, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.23
#3751This feature decreases forecast error on the series it fires on (1.44 times the random-direction null), strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443removing it raises accuracy (mase) (1.5x its null)
block_bootstrap
random_parametric
random_parametric
n=8
with · without · Δ 0.0393 (97% of context sd)
with · without · Δ 0.45 (1.4e+02% of context sd)
with · without · Δ 0.172 (68% of context sd)
mixture (generator) ρ=-0.32
#956This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443removing it moves no channel past its own null
block_bootstrap
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.00857 (20% of context sd)
with · without · Δ 0.0241 (40% of context sd)
with · without · Δ 0.0132 (19% of context sd)
realism stress (tier) ρ=+0.35
#2106This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443removing it moves no channel past its own null
block_bootstrap
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0406 (74% of context sd)
with · without · Δ 0.0228 (57% of context sd)
with · without · Δ 0.0482 (1e+02% of context sd)
random parametric (generator) ρ=-0.27
#1742This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
mixture
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.32
#5638This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.30
#1136This feature moves the forecast's spectral centroid on the series it fires on (1.62 times the random-direction null), and also moves its seasonal magnitude, strongest on series with a larger number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=+0.23, n=555removing it raises frequency balance (1.6x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.0821 (26% of context sd)
with · without · Δ 0.365 (65% of context sd)
with · without · Δ 1.06 (50% of context sd)
realism stress (tier) ρ=-0.30
#3038This feature decreases forecast error on the series it fires on (2.77 times the random-direction null), and also increases its spread and moves its trend slope, strongest on series with a smaller dominant seasonal period (rho 0.22, n 443).Dominant period ρ=-0.22, n=443removing it raises accuracy (mase) (2.8x its null)
mixture
block_bootstrap
mixture
n=8
with · without · Δ 1.67 (1.5e+02% of context sd)
with · without · Δ 0.00615 (19% of context sd)
with · without · Δ 0.347 (79% of context sd)
parametric (generator) ρ=+0.31

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.0 — individual features and the series they fire on

Of 6144 probed features, 439 correlate with a structural property of the series and 564 with a corpus bookkeeping label (mean |ρ| 0.098 vs 0.165). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#2996This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.26, n 443).Dominant period ρ=-0.26, n=443not a candidate
mixture
mixture
mixture
not measuredintermittent bursts (archetype) ρ=+0.34
#964This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.26, n 443).Dominant period ρ=-0.26, n=443not a candidate
random_parametric
mixture
random_parametric
not measuredrandom parametric (generator) ρ=-0.17
#286This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
mixture
random_parametric
random_parametric
not measuredtrend dominant (archetype) ρ=-0.21
#5258This feature moves the forecast's spread on the series it fires on (2.01 times the random-direction null), and also moves its trend slope, strongest on series with a larger dominant seasonal period (rho 0.24, n 443).Dominant period ρ=+0.24, n=443removing it lowers seasonal strength (2.9x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.201 (27% of context sd)
with · without · Δ 0.0118 (9.9% of context sd)
with · without · Δ 0.129 (32% of context sd)
random parametric (generator) ρ=+0.30
#6042This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.31
#5822This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443not a candidate
random_parametric
mixture
mixture
not measuredintermittent bursts (archetype) ρ=+0.36
#3458This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.23, n 443).Dominant period ρ=+0.23, n=443not a candidate
random_parametric
mixture
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.28
#4537This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of changepoints (rho 0.22, n 555).Changepoint count ρ=+0.22, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.15

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.8 — individual features and the series they fire on

Of 6144 probed features, 634 correlate with a structural property of the series and 979 with a corpus bookkeeping label (mean |ρ| 0.081 vs 0.144). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#1192This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=+0.28, n=555not a candidate
mixture
mixture
random_parametric
not measuredparametric (generator) ρ=+0.30
#3534This feature moves forecast error on the series it fires on (1.09 times the random-direction null), strongest on series with a larger number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=+0.28, n=555removing it raises accuracy (mase) (1.1x its null)
mixture
random_parametric
random_parametric
n=8
with · without · Δ 0.164 (62% of context sd)
with · without · Δ 0.604 (37% of context sd)
with · without · Δ 0.554 (41% of context sd)
realism stress (tier) ρ=-0.42
#574This feature increases the forecast's overall level on the series it fires on (1.13 times the random-direction null), and also decreases its spectral centroid, strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443removing it lowers level (1.1x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.464 (61% of context sd)
with · without · Δ 0.615 (46% of context sd)
with · without · Δ 0.441 (60% of context sd)
parametric (generator) ρ=+0.40
#2106This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
block_bootstrap
parametric
block_bootstrap
not measuredrandom parametric (generator) ρ=-0.45
#5247This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.35
#712This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555not a candidate
mixture
random_parametric
mixture
not measuredrandom walk drift (archetype) ρ=-0.31
#4664This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller dominant seasonal period (rho 0.23, n 443).Dominant period ρ=-0.23, n=443removing it moves no channel past its own null
parametric
random_parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.284 (35% of context sd)
with · without · Δ 0.206 (27% of context sd)
with · without · Δ 0.183 (24% of context sd)
realism stress (tier) ρ=-0.53
#453This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=+0.23, n=555removing it moves no channel past its own null
random_parametric
random_parametric
random_parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.684 (48% of context sd)
with · without · Δ 0.133 (47% of context sd)
with · without · Δ 0.295 (40% of context sd)
realism stress (tier) ρ=-0.52

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.7 — individual features and the series they fire on

Of 6144 probed features, 2760 correlate with a structural property of the series and 4042 with a corpus bookkeeping label (mean |ρ| 0.084 vs 0.166). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#2278This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.28, n 443).Dominant period ρ=-0.28, n=443not a candidate
block_bootstrap
block_bootstrap
block_bootstrap
not measuredblock bootstrap (generator) ρ=+0.23
#3134This feature moves forecast error on the series it fires on (2.44 times the random-direction null), and also decreases its spectral centroid and increases its trend slope, strongest on series with a larger AR coefficient sum (rho 0.26, n 374).Autocorrelation strength ρ=+0.26, n=374removing it lowers accuracy (mase) (2.4x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.0283 (4.9% of context sd)
with · without · Δ 0.014 (4.5% of context sd)
with · without · Δ 0.00657 (3.2% of context sd)
intermittent bursts (archetype) ρ=+0.22
#3440This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.14
#3224This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555not a candidate
mixture
random_parametric
random_parametric
not measuredrealism stress (tier) ρ=-0.41
#4426This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=-0.23, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredanomaly heavy (archetype) ρ=+0.38
#5513This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=-0.23, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredtrend dominant (archetype) ρ=+0.42
#5716This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=-0.23, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.19
#3868This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.22, n 443).Dominant period ρ=+0.22, n=443not a candidate
sequential_par
random_parametric
sequential_par
not measuredseasonal dominant (archetype) ρ=-0.25

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.9 — individual features and the series they fire on

Of 6144 probed features, 3362 correlate with a structural property of the series and 4553 with a corpus bookkeeping label (mean |ρ| 0.082 vs 0.169). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#4680This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.25, n 374).Autocorrelation strength ρ=-0.25, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.36
#4051This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=-0.24, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.37
#2727This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=+0.23, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.24
#3432This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=-0.23, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredanomaly heavy (archetype) ρ=+0.41
#4077This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=-0.23, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.22
#1138This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=+0.23, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.19
#1310This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=+0.23, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.25
#5639This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.23, n 555).Changepoint count ρ=-0.23, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredanomaly heavy (archetype) ρ=+0.18

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.9 — individual features and the series they fire on

Of 6144 probed features, 3085 correlate with a structural property of the series and 4792 with a corpus bookkeeping label (mean |ρ| 0.087 vs 0.162). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#5065This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.28, n 443).Dominant period ρ=+0.28, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.28
#1679This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=-0.27, n=555removing it moves no channel past its own null
block_bootstrap
block_bootstrap
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.19 (6.4% of context sd)
with · without · Δ 0.181 (3.2% of context sd)
with · without · Δ 0.0706 (7.9% of context sd)
realism stress (tier) ρ=+0.41
#3027This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.25, n 374).Autocorrelation strength ρ=-0.25, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.21
#2535This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.25, n 374).Autocorrelation strength ρ=-0.25, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.26
#352This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=+0.24, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredintermittent bursts (archetype) ρ=+0.27
#1425This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.23, n 443).Dominant period ρ=+0.23, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.33
#2953This feature moves the far horizon of the forecast on the series it fires on (1.11 times the random-direction null), strongest on series with a smaller number of seasonal components (rho 0.23, n 555).Seasonal component count ρ=-0.23, n=555removing it reshapes far horizon (1.1x its null)
mixture
block_bootstrap
block_bootstrap
n=8
with · without · Δ 0.0337 (3.8% of context sd)
with · without · Δ 0.0884 (3% of context sd)
with · without · Δ 0.103 (2.6% of context sd)
realism stress (tier) ρ=+0.44
#1285This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.22, n 374).Autocorrelation strength ρ=+0.22, n=374not a candidate
sequential_par
sequential_par
random_parametric
not measuredsequential par (generator) ρ=+0.21

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.6 — individual features and the series they fire on

Of 6144 probed features, 2438 correlate with a structural property of the series and 4073 with a corpus bookkeeping label (mean |ρ| 0.089 vs 0.157). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#5065This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.38, n 443).Dominant period ρ=+0.38, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.26
#2033This feature moves the near horizon of the forecast on the series it fires on (2.57 times the random-direction null), strongest on series with a smaller dominant seasonal period (rho 0.30, n 443).Dominant period ρ=-0.30, n=443removing it reshapes near horizon (2.6x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.402 (27% of context sd)
with · without · Δ 0.303 (20% of context sd)
with · without · Δ 0.602 (46% of context sd)
parametric (generator) ρ=+0.47
#2336This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.26, n 374).Autocorrelation strength ρ=-0.26, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.22
#4672This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.26, n 443).Dominant period ρ=+0.26, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.34
#5686This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443not a candidate
random_parametric
random_parametric
mixture
not measuredclean low noise (archetype) ρ=+0.39
#1284This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.15
#5318This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=+0.24, n=374not a candidate
mixture
mixture
mixture
not measuredrealism stress (tier) ρ=+0.37
#4902This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=-0.24, n=555removing it moves no channel past its own null
mixture
mixture
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0085 (1.6% of context sd)
with · without · Δ 0.00838 (0.83% of context sd)
with · without · Δ 0.00634 (0.95% of context sd)
intermittent bursts (archetype) ρ=+0.33

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.7 — individual features and the series they fire on

Of 6144 probed features, 2646 correlate with a structural property of the series and 4425 with a corpus bookkeeping label (mean |ρ| 0.089 vs 0.158). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#5065This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.38, n 443).Dominant period ρ=+0.38, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.31
#2354This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.32, n 555).Seasonal component count ρ=-0.32, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredsequential par (generator) ρ=+0.41
#2033This feature moves the near horizon of the forecast on the series it fires on (3.36 times the random-direction null), and also increases its trend slope, strongest on series with a smaller dominant seasonal period (rho 0.31, n 443).Dominant period ρ=-0.31, n=443removing it reshapes near horizon (3.4x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.512 (34% of context sd)
with · without · Δ 0.33 (22% of context sd)
with · without · Δ 0.528 (39% of context sd)
parametric (generator) ρ=+0.46
#1284This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.18
#1300This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.47
#2146This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.25, n 374).Autocorrelation strength ρ=-0.25, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.24
#3912This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredseasonal dominant (archetype) ρ=+0.16
#5413This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=+0.23, n=374not a candidate
sequential_par
sequential_par
random_parametric
not measuredsequential par (generator) ρ=+0.30

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-Bolt/encoder.block.3 — individual features and the series they fire on

Of 6144 probed features, 952 correlate with a structural property of the series and 1351 with a corpus bookkeeping label (mean |ρ| 0.096 vs 0.182). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#4586This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger dominant seasonal period (rho 0.29, n 443).Dominant period ρ=+0.29, n=443removing it moves no channel past its own null
mixture
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.00684 (1% of context sd)
with · without · Δ 0.0352 (0.78% of context sd)
with · without · Δ 0.0254 (0.79% of context sd)
realism stress (tier) ρ=+0.39
#5068This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.16
#2365This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
mixture
random_parametric
not measuredparametric (generator) ρ=+0.47
#259This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.26, n 443).Dominant period ρ=+0.26, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom walk drift (archetype) ρ=+0.27
#4027This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443not a candidate
random_parametric
mixture
mixture
not measuredrandom parametric (generator) ρ=+0.23
#4140This feature increases the forecast's trend slope on the series it fires on (1.25 times the random-direction null), and also moves the near horizon of the forecast, strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443removing it lowers trend (1.3x its null)
random_parametric
block_bootstrap
block_bootstrap
n=8
with · without · Δ 0.0586 (11% of context sd)
with · without · Δ 0.0022 (12% of context sd)
with · without · Δ 0.00171 (15% of context sd)
amplitude modulated (archetype) ρ=+0.27
#3111This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.23, n 443).Dominant period ρ=+0.23, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.36
#2514This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.23, n 443).Dominant period ρ=+0.23, n=443not a candidate
mixture
mixture
mixture
not measuredmixture (generator) ρ=+0.21

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

TimesFM/stacked_xf.12 — individual features and the series they fire on

Of 6144 probed features, 636 correlate with a structural property of the series and 955 with a corpus bookkeeping label (mean |ρ| 0.080 vs 0.148). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#712This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=+0.27, n=555not a candidate
random_parametric
parametric
random_parametric
not measuredparametric (generator) ρ=+0.48
#5702This feature decreases the forecast's overall level on the series it fires on (2.03 times the random-direction null), strongest on series with a larger number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=+0.27, n=555removing it raises level (2.0x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.769 (1e+02% of context sd)
with · without · Δ 0.552 (73% of context sd)
with · without · Δ 1.5 (1.1e+02% of context sd)
parametric (generator) ρ=+0.39
#137This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.26, n 555).Seasonal component count ρ=+0.26, n=555removing it moves no channel past its own null
parametric
parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.251 (29% of context sd)
with · without · Δ 0.34 (38% of context sd)
with · without · Δ 0.334 (42% of context sd)
parametric (generator) ρ=+0.55
#574This feature decreases forecast error on the series it fires on (1.29 times the random-direction null), and also decreases its spectral centroid and increases its overall level, strongest on series with a smaller dominant seasonal period (rho 0.26, n 443).Dominant period ρ=-0.26, n=443removing it raises accuracy (mase) (1.3x its null)
random_parametric
parametric
parametric
n=8
with · without · Δ 0.724 (54% of context sd)
with · without · Δ 0.745 (86% of context sd)
with · without · Δ 0.438 (56% of context sd)
parametric (generator) ρ=+0.49
#3534This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a larger number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=+0.25, n=555removing it moves no channel past its own null
random_parametric
parametric
parametric
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.616 (46% of context sd)
with · without · Δ 0.362 (44% of context sd)
with · without · Δ 0.408 (48% of context sd)
parametric (generator) ρ=+0.49
#533This feature increases the forecast's trend slope on the series it fires on (1.44 times the random-direction null), strongest on series with a larger number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=+0.25, n=555removing it lowers trend (1.4x its null)
random_parametric
mixture
random_parametric
n=8
with · without · Δ 1.63 (1.2e+02% of context sd)
with · without · Δ 0.135 (51% of context sd)
with · without · Δ 1.48 (86% of context sd)
parametric (generator) ρ=+0.55
#1136This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
mixture
random_parametric
not measuredparametric (generator) ρ=+0.30
#453This feature was not tested for an effect on the forecast; it is strongest on series with a larger number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=+0.24, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.42

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.6 — individual features and the series they fire on

Of 6144 probed features, 1926 correlate with a structural property of the series and 2868 with a corpus bookkeeping label (mean |ρ| 0.088 vs 0.171). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#3087This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.31, n 555).Seasonal component count ρ=-0.31, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredtrend dominant (archetype) ρ=+0.36
#652This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.29, n 374).Autocorrelation strength ρ=-0.29, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.41
#2346This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.28, n 374).Autocorrelation strength ρ=+0.28, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom walk drift (archetype) ρ=+0.34
#3585This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.27, n 443).Dominant period ρ=+0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredparametric (generator) ρ=+0.53
#3404This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.25, n 374).Autocorrelation strength ρ=-0.25, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.34
#1575This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=-0.24, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.41
#3440This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.13
#623This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.23, n 443).Dominant period ρ=+0.23, n=443not a candidate
random_parametric
sequential_par
random_parametric
not measuredrandom walk drift (archetype) ρ=+0.46

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real.

What each channel means: see the first target's legend above (same nine channels every target).

Chronos-2/encoder.block.5 — individual features and the series they fire on

Of 6144 probed features, 1635 correlate with a structural property of the series and 2481 with a corpus bookkeeping label (mean |ρ| 0.091 vs 0.170). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#3168This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.28, n 374).Autocorrelation strength ρ=+0.28, n=374not a candidate
random_parametric
random_parametric
sequential_par
not measurednoisy chaotic (archetype) ρ=+0.30
#3087This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=-0.28, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredtrend dominant (archetype) ρ=+0.40
#4297This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.27, n 374).Autocorrelation strength ρ=+0.27, n=374not a candidate
random_parametric
random_parametric
sequential_par
not measurednonsinusoidal seasonal (archetype) ρ=+0.33
#426This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443not a candidate
mixture
mixture
mixture
not measuredmulti seasonal complex (archetype) ρ=+0.40
#5488This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.13
#2917This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of changepoints (rho 0.24, n 555).Changepoint count ρ=-0.24, n=555not a candidate
random_parametric
mixture
sequential_par
not measuredintermittent bursts (archetype) ρ=+0.34
#5793This feature increases the forecast's spread on the series it fires on (5.24 times the random-direction null), and also moves the near horizon of the forecast, strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443removing it lowers spread (5.2x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.301 (29% of context sd)
with · without · Δ 0.211 (50% of context sd)
with · without · Δ 0.305 (27% of context sd)
multi seasonal complex (archetype) ρ=+0.19
#5003This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.13

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.5 — individual features and the series they fire on

Of 6144 probed features, 2258 correlate with a structural property of the series and 3716 with a corpus bookkeeping label (mean |ρ| 0.091 vs 0.155). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#2033This feature moves the forecast's overall level on the series it fires on (3.11 times the random-direction null), and also moves the near horizon of the forecast, strongest on series with a smaller dominant seasonal period (rho 0.32, n 443).Dominant period ρ=-0.32, n=443removing it raises level (3.1x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.533 (39% of context sd)
with · without · Δ 0.226 (32% of context sd)
with · without · Δ 0.316 (40% of context sd)
parametric (generator) ρ=+0.43
#5065This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.32, n 443).Dominant period ρ=+0.32, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.14
#4902This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.28, n 555).Seasonal component count ρ=-0.28, n=555removing it moves no channel past its own null
mixture
random_parametric
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.00709 (1.3% of context sd)
with · without · Δ 0.073 (7.1% of context sd)
with · without · Δ 0.0284 (5.1% of context sd)
sequential par (generator) ρ=+0.35
#1284This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.15
#853This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.40
#5486This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=-0.25, n=555removing it moves no channel past its own null
mixture
random_parametric
mixture
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.0033 (0.63% of context sd)
with · without · Δ 0.0896 (8.7% of context sd)
with · without · Δ 0.00867 (1.6% of context sd)
ar colored noise (archetype) ρ=+0.27
#4148This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.24, n 443).Dominant period ρ=-0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.18
#1679This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.23, n 374).Autocorrelation strength ρ=+0.23, n=374not a candidate
mixture
mixture
mixture
not measuredrandom walk drift (archetype) ρ=+0.27

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.4 — individual features and the series they fire on

Of 6144 probed features, 2134 correlate with a structural property of the series and 3584 with a corpus bookkeeping label (mean |ρ| 0.090 vs 0.156). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#2033This feature increases the forecast's overall level on the series it fires on (2.90 times the random-direction null), and also moves the near horizon of the forecast, strongest on series with a smaller dominant seasonal period (rho 0.34, n 443).Dominant period ρ=-0.34, n=443removing it lowers level (2.9x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.289 (43% of context sd)
with · without · Δ 0.57 (72% of context sd)
with · without · Δ 0.365 (45% of context sd)
parametric (generator) ρ=+0.45
#5065This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.32, n 443).Dominant period ρ=+0.32, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.35
#5486This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.29, n 555).Seasonal component count ρ=-0.29, n=555not a candidate
random_parametric
mixture
mixture
not measuredsequential par (generator) ρ=+0.24
#5318This feature was not tested for an effect on the forecast; it is strongest on series with a larger AR coefficient sum (rho 0.28, n 374).Autocorrelation strength ρ=+0.28, n=374not a candidate
random_parametric
mixture
mixture
not measuredparametric (generator) ρ=-0.32
#1284This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.27, n 443).Dominant period ρ=-0.27, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.13
#1626This feature moves the near horizon of the forecast on the series it fires on (1.75 times the random-direction null), and also decreases its spread, strongest on series with a larger number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=+0.27, n=555removing it reshapes near horizon (1.8x its null)
random_parametric
random_parametric
random_parametric
n=8
with · without · Δ 0.0437 (15% of context sd)
with · without · Δ 0.138 (12% of context sd)
with · without · Δ 0.287 (21% of context sd)
realism stress (tier) ρ=-0.61
#2354This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=-0.25, n=555not a candidate
random_parametric
random_parametric
random_parametric
not measuredrandom parametric (generator) ρ=+0.30
#4148This feature was not tested for an effect on the forecast; it is strongest on series with a smaller dominant seasonal period (rho 0.25, n 443).Dominant period ρ=-0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.14

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

Sundial/model.layers.8 — individual features and the series they fire on

Of 6144 probed features, 2898 correlate with a structural property of the series and 4601 with a corpus bookkeeping label (mean |ρ| 0.087 vs 0.161). Only the structural column is a statement about the model.

FeatureWhat it looks like it doesStructural correlateWhat removing it doesTop-activating series (click to enlarge)Forecast with · without (click to enlarge)Corpus label
#1679This feature changed nothing above the random-direction null when removed from the series it fires on; it is strongest on series with a smaller number of seasonal components (rho 0.27, n 555).Seasonal component count ρ=-0.27, n=555removing it moves no channel past its own null
block_bootstrap
block_bootstrap
block_bootstrap
1 feature whose ablation did not move any channel past its own null — click to view its forecasts anywayn=8
with · without · Δ 0.166 (2.9% of context sd)
with · without · Δ 0.161 (4.5% of context sd)
with · without · Δ 0.393 (7% of context sd)
intermittent bursts (archetype) ρ=+0.47
#4495This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.26, n 443).Dominant period ρ=+0.26, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.45
#2354This feature moves the near horizon of the forecast on the series it fires on (2.11 times the random-direction null), and also decreases its overall level, strongest on series with a smaller number of seasonal components (rho 0.25, n 555).Seasonal component count ρ=-0.25, n=555removing it lowers frequency balance (2.1x its null)
mixture
block_bootstrap
block_bootstrap
n=8
with · without · Δ 0.0395 (4.4% of context sd)
with · without · Δ 0.145 (4.9% of context sd)
with · without · Δ 0.196 (3.9% of context sd)
intermittent bursts (archetype) ρ=+0.44
#5065This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.25, n 443).Dominant period ρ=+0.25, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredmulti seasonal complex (archetype) ρ=+0.20
#3318This feature was not tested for an effect on the forecast; it is strongest on series with a larger dominant seasonal period (rho 0.24, n 443).Dominant period ρ=+0.24, n=443not a candidate
random_parametric
random_parametric
random_parametric
not measuredclean low noise (archetype) ρ=+0.37
#4807This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=-0.24, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measurednoisy chaotic (archetype) ρ=+0.23
#5362This feature was not tested for an effect on the forecast; it is strongest on series with a smaller AR coefficient sum (rho 0.24, n 374).Autocorrelation strength ρ=-0.24, n=374not a candidate
random_parametric
random_parametric
random_parametric
not measuredar colored noise (archetype) ρ=+0.23
#4902This feature was not tested for an effect on the forecast; it is strongest on series with a smaller number of seasonal components (rho 0.24, n 555).Seasonal component count ρ=-0.24, n=555not a candidate
mixture
mixture
mixture
not measuredsequential par (generator) ρ=+0.30

One row per sparse feature, strongest structural correlate first. Each thumbnail is a series this feature fires hardest on -- grey is the context the model saw, dark the true continuation. The last two columns are causal rather than correlational: the feature is zeroed out of the reconstruction on the series it fires hardest on, and the paired forecasts show what its removal changes. The baseline there is the SAE's own full reconstruction, so the gap between the two lines is this feature's contribution and not the dictionary's; the third, muted trace is the RAW model forecast with no SAE reconstruction at all, so the gap between it and the baseline is the dictionary's own reconstruction cost, drawn on the same axes. The narrow strip BELOW each chart is that same gap (with the feature minus without it) drawn on its own scale, so a small effect is still visible even when it is too small to see as two overlapping lines above; the dotted line through it is zero, i.e. no difference. A channel is only counted as ‘cleared’ when the feature's own effect exceeds what removing that much of an ARBITRARY random direction does -- not simply whether the forecast moved. A candidate whose battery cleared nothing is collapsed below (still fully present in the DOM), since the measurement, not the picture, is what says whether an effect is real. The two series columns are the same series in the same order, so a thumbnail and the overlay beside it describe one series seen twice.

What each channel means: see the first target's legend above (same nine channels every target).

For each SAE target, the series-level ground-truth feature-alignment score is computed for every dictionary feature; this table shows, for the top few features with a significant ground-truth match, the exemplar series that feature fires hardest on -- the field it matches, that match's Spearman ρ, and (`field_value`) that exemplar series' own actual value of the matched field, so a reader can eyeball whether the correlation the number claims is real.

What does this table mean?

How to read it
A high |ρ| with `field_value` varying sensibly across the listed exemplars (e.g. activation tracking a seasonal period or trend order up and down) is a genuine, ground-truth-verified interpretable feature. `activation` is that feature's own encoded value for the listed series, not comparable in scale across different features or models.

Limitations
Illustrative evidence only, same class as the Exemplars section -- a feature firing here is not a causal claim about the forecast. A feature-level ablation/steering battery exists and has real-checkpoint numbers on record, but is off by default and not shown in this table. Only the small alive fraction of the dictionary can ever appear here (dead-feature rate is typically 90%+, shown above per target); real-derived-tier series carry no ground truth and never appear as exemplars regardless of how hard a feature fires on them. Separately, the 'ground-truth alignment' line's mean |ρ| above picks, per feature, the best of many candidate ground-truth fields -- a real inflation above zero from that search alone, even on pure noise, since the max of many weak correlations is not itself weak. The label-permutation null next to it reruns the identical search with each feature's series correspondence shuffled, so it shows how large that same number gets by chance; only a mean |ρ| clearly above the null's p95 supports reading the dictionary's alignment as real structure rather than search inflation.

Seed-to-seed noise floor

3 of 29 targets' forecast-preservation ΔMASE is larger than 2× its own seed-to-seed spread. Each cell in the table below is the mean across seeds ± its spread; the two ΔMASE columns are IDENTICAL by construction for a model whose token width equals the alignment window, so where they differ the gap is the window-broadcast confound rather than a second opinion. 🔴 The frozen-store control FAILED at TimesFM/stacked_xf.10 (mase_clean_window sd 0.00596), TimesFM/stacked_xf.10 (mase_clean_token sd 0.00596), TimesFM/stacked_xf.18 (mase_clean_window sd 0.00596), TimesFM/stacked_xf.18 (mase_clean_token sd 0.00596), TimesFM/stacked_xf.6 (mase_clean_window sd 0.00596), TimesFM/stacked_xf.6 (mase_clean_token sd 0.00596), TimesFM/stacked_xf.16 (mase_clean_window sd 0.00596), TimesFM/stacked_xf.16 (mase_clean_token sd 0.00596), TimesFM/stacked_xf.2 (mase_clean_window sd 0.00596), TimesFM/stacked_xf.2 (mase_clean_token sd 0.00596), Chronos-2/encoder.block.8 (mase_clean_window sd 0.0959), Chronos-2/encoder.block.8 (mase_clean_token sd 0.0959), Chronos-2/encoder.block.10 (mase_clean_window sd 0.0959), Chronos-2/encoder.block.10 (mase_clean_token sd 0.0959), Chronos-2/encoder.block.11 (mase_clean_window sd 0.0959), Chronos-2/encoder.block.11 (mase_clean_token sd 0.0959), Sundial/model.layers.3 (mase_clean_window sd 0.378), Sundial/model.layers.3 (mase_clean_token sd 0.378), Sundial/model.layers.10 (mase_clean_window sd 0.378), Sundial/model.layers.10 (mase_clean_token sd 0.378), Sundial/model.layers.11 (mase_clean_window sd 0.378), Sundial/model.layers.11 (mase_clean_token sd 0.378), Chronos-Bolt/encoder.block.4 (mase_clean_window sd 0.105), Chronos-Bolt/encoder.block.4 (mase_clean_token sd 0.105), Chronos-Bolt/encoder.block.5 (mase_clean_window sd 0.105), Chronos-Bolt/encoder.block.5 (mase_clean_token sd 0.105), TimesFM/stacked_xf.14 (mase_clean_window sd 0.00596), TimesFM/stacked_xf.14 (mase_clean_token sd 0.00596), TimesFM/stacked_xf.4 (mase_clean_window sd 0.00596), TimesFM/stacked_xf.4 (mase_clean_token sd 0.00596), TimesFM/stacked_xf.0 (mase_clean_window sd 0.00596), TimesFM/stacked_xf.0 (mase_clean_token sd 0.00596), TimesFM/stacked_xf.8 (mase_clean_window sd 0.00596), TimesFM/stacked_xf.8 (mase_clean_token sd 0.00596), Chronos-2/encoder.block.7 (mase_clean_window sd 0.0959), Chronos-2/encoder.block.7 (mase_clean_token sd 0.0959), Chronos-2/encoder.block.9 (mase_clean_window sd 0.0959), Chronos-2/encoder.block.9 (mase_clean_token sd 0.0959), Sundial/model.layers.9 (mase_clean_window sd 0.378), Sundial/model.layers.9 (mase_clean_token sd 0.378), Sundial/model.layers.6 (mase_clean_window sd 0.378), Sundial/model.layers.6 (mase_clean_token sd 0.378), Sundial/model.layers.7 (mase_clean_window sd 0.378), Sundial/model.layers.7 (mase_clean_token sd 0.378), Chronos-Bolt/encoder.block.3 (mase_clean_window sd 0.105), Chronos-Bolt/encoder.block.3 (mase_clean_token sd 0.105), TimesFM/stacked_xf.12 (mase_clean_window sd 0.00596), TimesFM/stacked_xf.12 (mase_clean_token sd 0.00596), Chronos-2/encoder.block.6 (mase_clean_window sd 0.0959), Chronos-2/encoder.block.6 (mase_clean_token sd 0.0959), Chronos-2/encoder.block.5 (mase_clean_window sd 0.0959), Chronos-2/encoder.block.5 (mase_clean_token sd 0.0959), Sundial/model.layers.5 (mase_clean_window sd 0.378), Sundial/model.layers.5 (mase_clean_token sd 0.378), Sundial/model.layers.4 (mase_clean_window sd 0.378), Sundial/model.layers.4 (mase_clean_token sd 0.378), Sundial/model.layers.8 (mase_clean_window sd 0.378), Sundial/model.layers.8 (mase_clean_token sd 0.378) — the unpatched forecast moved between seeds, so something other than the SAE seed varied and every spread above is suspect.

Per-seed spread at each of the 29 analyzed layers
target seeds reconstruction fidelity dead-feature rate ΔMASE (token) ΔMASE (window) is that ΔMASE resolvable at one seed?
TimesFM/stacked_xf.10 3 0.880 ± 0.004 0.219 ± 0.042 -0.059 ± 0.088 -0.059 ± 0.088 NOT resolvable — 0.7× its own seed spread (bar is 2×)
TimesFM/stacked_xf.18 3 0.904 ± 0.005 0.143 ± 0.029 0.030 ± 0.079 0.030 ± 0.079 NOT resolvable — 0.4× its own seed spread (bar is 2×)
TimesFM/stacked_xf.6 3 0.899 ± 0.003 0.176 ± 0.012 -0.101 ± 0.127 -0.101 ± 0.127 NOT resolvable — 0.8× its own seed spread (bar is 2×)
TimesFM/stacked_xf.16 3 0.900 ± 0.010 0.142 ± 0.045 0.075 ± 0.093 0.075 ± 0.093 NOT resolvable — 0.8× its own seed spread (bar is 2×)
TimesFM/stacked_xf.2 3 0.933 ± 0.004 0.181 ± 0.010 -0.085 ± 0.075 -0.085 ± 0.075 NOT resolvable — 1.1× its own seed spread (bar is 2×)
Chronos-2/encoder.block.8 3 0.916 ± 0.001 0.003 ± 0.001 0.012 ± 0.054 0.107 ± 0.095 NOT resolvable — 0.2× its own seed spread (bar is 2×)
Chronos-2/encoder.block.10 3 0.926 ± 0.001 0.005 ± 0.001 0.008 ± 0.016 0.023 ± 0.017 NOT resolvable — 0.5× its own seed spread (bar is 2×)
Chronos-2/encoder.block.11 3 0.889 ± 0.048 0.113 ± 0.107 0.000 ± 0.000 0.000 ± 0.000 no effect and no spread — nothing to resolve
Sundial/model.layers.3 3 0.962 ± 0.000 0.008 ± 0.000 0.003 ± 0.014 0.423 ± 0.252 NOT resolvable — 0.2× its own seed spread (bar is 2×)
Sundial/model.layers.10 3 0.947 ± 0.000 0.020 ± 0.001 0.077 ± 0.075 0.414 ± 0.270 NOT resolvable — 1.0× its own seed spread (bar is 2×)
Sundial/model.layers.11 3 0.961 ± 0.000 0.036 ± 0.003 0.111 ± 0.098 0.503 ± 0.371 NOT resolvable — 1.1× its own seed spread (bar is 2×)
Chronos-Bolt/encoder.block.4 3 0.958 ± 0.001 0.007 ± 0.003 0.032 ± 0.050 0.438 ± 0.209 NOT resolvable — 0.6× its own seed spread (bar is 2×)
Chronos-Bolt/encoder.block.5 3 0.960 ± 0.001 0.007 ± 0.001 -0.015 ± 0.063 0.338 ± 0.155 NOT resolvable — 0.2× its own seed spread (bar is 2×)
TimesFM/stacked_xf.14 3 0.856 ± 0.022 0.264 ± 0.011 0.065 ± 0.009 0.065 ± 0.009 resolvable — 7.2× its own seed spread (bar is 2×)
TimesFM/stacked_xf.4 3 0.913 ± 0.004 0.222 ± 0.016 -0.078 ± 0.086 -0.078 ± 0.086 NOT resolvable — 0.9× its own seed spread (bar is 2×)
TimesFM/stacked_xf.0 3 0.965 ± 0.003 0.199 ± 0.009 -0.024 ± 0.168 -0.024 ± 0.168 NOT resolvable — 0.1× its own seed spread (bar is 2×)
TimesFM/stacked_xf.8 3 0.885 ± 0.007 0.189 ± 0.043 -0.073 ± 0.062 -0.073 ± 0.062 NOT resolvable — 1.2× its own seed spread (bar is 2×)
Chronos-2/encoder.block.7 3 0.914 ± 0.000 0.001 ± 0.001 -0.030 ± 0.030 0.153 ± 0.149 NOT resolvable — 1.0× its own seed spread (bar is 2×)
Chronos-2/encoder.block.9 3 0.920 ± 0.000 0.004 ± 0.000 -0.011 ± 0.016 0.076 ± 0.071 NOT resolvable — 0.7× its own seed spread (bar is 2×)
Sundial/model.layers.9 3 0.943 ± 0.000 0.011 ± 0.001 0.104 ± 0.080 0.458 ± 0.254 NOT resolvable — 1.3× its own seed spread (bar is 2×)
Sundial/model.layers.6 3 0.951 ± 0.000 0.005 ± 0.001 0.044 ± 0.066 0.455 ± 0.228 NOT resolvable — 0.7× its own seed spread (bar is 2×)
Sundial/model.layers.7 3 0.947 ± 0.000 0.006 ± 0.000 0.147 ± 0.073 0.464 ± 0.258 resolvable — 2.0× its own seed spread (bar is 2×)
Chronos-Bolt/encoder.block.3 3 0.952 ± 0.004 0.012 ± 0.004 -0.030 ± 0.065 0.234 ± 0.097 NOT resolvable — 0.5× its own seed spread (bar is 2×)
TimesFM/stacked_xf.12 3 0.884 ± 0.008 0.185 ± 0.017 -0.011 ± 0.043 -0.011 ± 0.043 NOT resolvable — 0.3× its own seed spread (bar is 2×)
Chronos-2/encoder.block.6 3 0.907 ± 0.000 0.003 ± 0.000 -0.038 ± 0.045 0.140 ± 0.091 NOT resolvable — 0.8× its own seed spread (bar is 2×)
Chronos-2/encoder.block.5 3 0.912 ± 0.001 0.004 ± 0.001 -0.052 ± 0.021 0.270 ± 0.106 resolvable — 2.5× its own seed spread (bar is 2×)
Sundial/model.layers.5 3 0.956 ± 0.000 0.006 ± 0.000 0.098 ± 0.098 0.522 ± 0.292 NOT resolvable — 1.0× its own seed spread (bar is 2×)
Sundial/model.layers.4 3 0.963 ± 0.001 0.006 ± 0.001 -0.031 ± 0.081 0.418 ± 0.246 NOT resolvable — 0.4× its own seed spread (bar is 2×)
Sundial/model.layers.8 3 0.945 ± 0.000 0.010 ± 0.001 0.134 ± 0.101 0.456 ± 0.277 NOT resolvable — 1.3× its own seed spread (bar is 2×)

Every column, in words, with its arithmetic.

ColumnWhat it means, and why it mattersHow it is calculated
targetOne trained dictionary: a model and the single layer of it this dictionary was fitted on. Every other column is a property of that one dictionary, so two rows differ in the model, the layer and the fit at once.Named `model/layer` exactly as the `sae` stage resolved it.
seedsHow many times this dictionary was retrained from scratch, varying nothing but the random seed, to size the spread every other number in this table carries.Retrained against a FROZEN activation store, so the model, the layer and the rows are bit-identical across seeds and training stochasticity is the only variable.
reconstruction fidelityHow faithfully the sparse dictionary can rebuild the layer's own activations from a handful of active features. This is the FLOOR on everything below it: a dictionary that cannot reproduce the layer is not describing the layer.1 - (sum of squared reconstruction error / sum of squared error of predicting the mean activation), over the activations the dictionary was fitted on. 1.0 is exact; 0.0 is no better than predicting the mean; negative is worse than that.
dead-feature rateSame quantity as `dead rate` in the dictionary-health table above, here as a mean across seeds with its spread.(features that never activate) / (dictionary size), averaged over the retrained seeds.
ΔMASE (token)The same measurement with no window pooling: every raw token is encoded and decoded on its own. This is the column to read as dictionary quality -- it has no architecture confound in it.MASE(reconstructed) - MASE(real), reconstructing each token independently.
ΔMASE (window)How much the model's forecast error changes when the layer's real activations are replaced by the dictionary's reconstruction of them. Near zero means the dictionary is a faithful enough stand-in that the model still forecasts the same way; large positive means the reconstruction threw away something the forecast needed.MASE(forecast from the reconstructed activations) - MASE(forecast from the real activations), with the reconstruction done on the pooled WINDOW axis and then broadcast back over the tokens each window covers. That broadcast is lossy for any model whose tokens are narrower than the window, which is why the token column beside it exists.
is that ΔMASE resolvable at one seed?Same question as `ΔMASE sign` in the dictionary-health table above: whether the forecast damage is larger than the amount retraining the dictionary moves it. Where it is not, 'the reconstruction made the forecast better' and 'worse' are the same measurement.|mean ΔMASE across seeds| compared against the standard deviation of ΔMASE across those same seeds.

The same SAE target retrained at several training seeds against the identical, already-frozen activations. Nothing upstream varies — same store, same rows, same checkpoint — so the spread here is SAE-training stochasticity alone, and it is the floor every headline number in this section has to be read against.

What does this floor mean?

How to read it
The ± is what a ΔMASE must exceed before its sign means anything: a delta smaller than twice it is one draw from a distribution that contains both signs, which is what the last column decides and says. The unpatched forecast is a CONTROL, not a result — it cannot depend on the SAE seed, so its spread must be exactly zero, and that verdict is stated once beneath the table rather than repeated as a row of zeros per target; a failure there means something other than the seed varied and every spread above it is suspect. Dead-feature rate and reconstruction fidelity are usually far more stable across seeds than the forecast deltas are.

Limitations
This floor is measured for this run's own targets and settings only; it does not transfer to a different layer, corpus, dictionary size, or k. It is also not the behavioral repeat-run floor shown elsewhere — that one measures the model's own forecast nondeterminism, this one measures the SAE's. A ΔMASE has to clear both to be a result.

Concepts

Cross-model concepts

Which of each model's causal features cluster into named concepts, whether another model groups the same series the same way, and how similar every model pair is overall -- the evidence behind the compact answer boxes in “At a glance”.

What this stage tells you

Question
Which features does each model's dictionary actually use when it forecasts, do they group into named concepts, and does another model group the same series the same way?

How
For every trained dictionary, zeroes each candidate feature out of the model's own reconstruction on the series where that feature fires hardest, and measures nine properties of the forecast against a random-direction null. Features that move something are clustered by what they move into concepts (or the dictionary is declared non-modular when no clean grouping exists). Each concept's top series are then checked in every other model: does some feature there separate the same series better than random series of the same kind would, and does that feature's own top series come back the other way? Finally every concept is described in a sentence composed only from what was measured. Separately, every causal feature across every model is also pooled into one shared space and clustered directly against each other, so a group there can span several models even when a dictionary's own per-target clustering above found no clean grouping within it.

Good vs. bad result
Good: features whose removal moves the forecast well above the null, concepts with several members each, and transfers that clear the matched null in both directions. Bad: most targets declared non-modular (the dictionary's causal features do not group), or transfer rates that are high only because the matched null is weak for that kind of series.

What it cannot tell you
A transfer that clears its null says another model separates the same series, not that it uses the feature the same way causally. The rates are uncorrected for the many tests made, and nothing yet says how often a concept would transfer to a second dictionary trained on the SAME model, so a rate cannot be read as high or low on its own. Everything here is measured on the development corpus only.

A concept family groups SAE features -- from any model in this run -- whose removal changes the forecast in a similar way; features land in the same family purely by the similarity of their own measured 9-channel causal-ablation effect, never by which model, layer or SAE dictionary they came from. This run has 9 families, covering 288 of 293 causal features (98.3%); 9 of 9 span more than one model. A column-permuted null (destroying each feature's own channel-to-channel structure, then re-clustering) produces about as many families and about as much coverage on its own (p_n_families=1.0000, p_frac_assigned=0.9851): the models' features do not fall into sharp, separated groups here -- these 9 families are a readable way to divide a continuum, not discovered clusters. Evidence class: descriptive. Every family draws member features from all 4 models in this run, but within each family, membership leans toward one model more than a model-label-shuffled null would (p_purity_above=0.0199) -- read this as "segregated by model", not as "each family belongs to one model": a family spanning every model and a family whose members lean toward one model are BOTH true at once, about different questions (how many models touch a family vs. how evenly they are mixed inside it).

Family overview

Level lowerers

These features steer the first third of the forecast (removing them moves it), and steer the last third of the forecast (removing them moves it). Found in 4 models (Chronos-2, Chronos-Bolt, Sundial, TimesFM). Its features fire most often on real weather/ETT-derived mixtures.

80 feature(s) across 4 model(s); fires on: real weather/ETT-derived mixtures (9) (source-driven: a real-derived generator name -- enrichment is measured relative to the corpus's own base rate for it, not an independent structural property); resampled real weather series (6) (source-driven: a real-derived generator name -- enrichment is measured relative to the corpus's own base rate for it, not an independent structural property); synthetic parametric series (trend, seasonality and noise, exact ground truth) (4).

Chronos-2: 24 (27% of its causal features)Chronos-Bolt: 5 (18% of its causal features)Sundial: 32 (27% of its causal features)TimesFM: 19 (32% of its causal features)
L3 — shared: same effect, same inputs, reproducible
Trend slope+0.10
Seasonal magnitude+0.04
Spectral centroid-0.20
Overall level-1.98
Spread-0.39
Near horizon of the forecast-2.20
Far horizon of the forecast-2.12
Forecast error-0.41
Flatness+0.04
Level raisers & Accuracy improvers

These features steer the last third of the forecast (removing them moves it), and steer the first third of the forecast (removing them moves it). Found in 4 models (Chronos-2, Chronos-Bolt, Sundial, TimesFM). Its features fire most often on real weather/ETT-derived mixtures.

61 feature(s) across 4 model(s); fires on: real weather/ETT-derived mixtures (8) (source-driven: a real-derived generator name -- enrichment is measured relative to the corpus's own base rate for it, not an independent structural property); strongly seasonal series (5); series with frequent anomalies (3).

Chronos-2: 22 (25% of its causal features)Chronos-Bolt: 1 (4% of its causal features)Sundial: 16 (14% of its causal features)TimesFM: 22 (37% of its causal features)
L3 — shared: same effect, same inputs, reproducible
Trend slope+0.25
Seasonal magnitude+0.17
Spectral centroid+0.20
Overall level+2.45
Spread+0.30
Near horizon of the forecast-2.57
Far horizon of the forecast-2.68
Forecast error-2.18
Flatness-0.00
Trend dampeners

These features decrease the forecast's trend slope. Found in 4 models (Chronos-2, Chronos-Bolt, Sundial, TimesFM). Its features fire most often on real weather/ETT-derived mixtures.

18 feature(s) across 4 model(s); fires on: real weather/ETT-derived mixtures (3) (source-driven: a real-derived generator name -- enrichment is measured relative to the corpus's own base rate for it, not an independent structural property); sequential-PAR real-derived series (1) (source-driven: a real-derived generator name -- enrichment is measured relative to the corpus's own base rate for it, not an independent structural property).

Chronos-2: 8 (9% of its causal features)Chronos-Bolt: 3 (11% of its causal features)Sundial: 5 (4% of its causal features)TimesFM: 2 (3% of its causal features)
L1 — not reproducible across SAE seeds
Trend slope-3.13
Seasonal magnitude+0.25
Spectral centroid+0.92
Overall level-0.67
Spread+0.84
Near horizon of the forecast-1.88
Far horizon of the forecast-2.48
Forecast error+0.69
Flatness+0.06
Seasonality amplifiers

These features increase the forecast's seasonal magnitude. Found in 4 models (Chronos-2, Chronos-Bolt, Sundial, TimesFM).

17 feature(s) across 4 model(s); fires on: no enrichment label survived its own permutation null for any member.

Chronos-2: 5 (6% of its causal features)Chronos-Bolt: 1 (4% of its causal features)Sundial: 6 (5% of its causal features)TimesFM: 5 (8% of its causal features)
no tight concept inside
Trend slope+0.45
Seasonal magnitude+2.12
Spectral centroid-0.20
Overall level+0.19
Spread-0.01
Near horizon of the forecast-1.11
Far horizon of the forecast-1.17
Forecast error-0.52
Flatness-0.05
Trend boosters & Volatility amplifiers

These features increase the forecast's trend slope, and increase the forecast's spread. Found in 4 models (Chronos-2, Chronos-Bolt, Sundial, TimesFM).

12 feature(s) across 4 model(s); fires on: no enrichment label survived its own permutation null for any member.

Chronos-2: 3 (3% of its causal features)Chronos-Bolt: 2 (7% of its causal features)Sundial: 4 (3% of its causal features)TimesFM: 3 (5% of its causal features)
no tight concept inside
Trend slope+7.28
Seasonal magnitude+3.71
Spectral centroid+1.18
Overall level-1.43
Spread+4.88
Near horizon of the forecast-3.87
Far horizon of the forecast-2.82
Forecast error-0.08
Flatness-0.22
Volatility dampeners

These features decrease the forecast's spread. Found in 3 models (Chronos-2, Chronos-Bolt, Sundial). Its features fire most often on resampled real weather series.

48 feature(s) across 3 model(s); fires on: resampled real weather series (5) (source-driven: a real-derived generator name -- enrichment is measured relative to the corpus's own base rate for it, not an independent structural property); strongly seasonal series (3); noisy autocorrelated series (2).

Chronos-2: 10 (11% of its causal features)Chronos-Bolt: 16 (57% of its causal features)Sundial: 22 (19% of its causal features)
L3 — model-specific, reproducible
Trend slope-0.47
Seasonal magnitude-1.81
Spectral centroid-0.25
Overall level+0.56
Spread-2.19
Near horizon of the forecast-1.52
Far horizon of the forecast-1.50
Forecast error-0.09
Flatness+0.08
Trend boosters & Accuracy improvers

These features increase the forecast's trend slope, and steer the last third of the forecast (removing them moves it). Found in 3 models (Chronos-2, Sundial, TimesFM).

23 feature(s) across 3 model(s); fires on: no enrichment label survived its own permutation null for any member.

Chronos-2: 11 (12% of its causal features)Sundial: 8 (7% of its causal features)TimesFM: 4 (7% of its causal features)
no tight concept inside
Trend slope+4.93
Seasonal magnitude-0.20
Spectral centroid-1.06
Overall level+0.46
Spread-1.73
Near horizon of the forecast-2.49
Far horizon of the forecast-2.64
Forecast error-1.89
Flatness+0.31
High-frequency shifters

These features steer the first third of the forecast (removing them moves it), and shift the forecast toward higher frequencies (a rougher, less smooth shape). Found in 3 models (Chronos-2, Sundial, TimesFM).

11 feature(s) across 3 model(s); fires on: no enrichment label survived its own permutation null for any member.

Chronos-2: 1 (1% of its causal features)Sundial: 9 (8% of its causal features)TimesFM: 1 (2% of its causal features)
no tight concept inside
Trend slope+0.47
Seasonal magnitude-1.50
Spectral centroid+4.58
Overall level-2.89
Spread-1.44
Near horizon of the forecast-4.91
Far horizon of the forecast-2.72
Forecast error+3.04
Flatness+0.18
Level raisers & Trend boosters

These features steer the last third of the forecast (removing them moves it), and increase the forecast's overall level. Found in 2 models (Chronos-2, Sundial).

18 feature(s) across 2 model(s); fires on: no enrichment label survived its own permutation null for any member.

Chronos-2: 4 (5% of its causal features)Sundial: 14 (12% of its causal features)
L1 — shared effect, different inputs (convergent)
Trend slope+2.31
Seasonal magnitude-0.79
Spectral centroid+0.81
Overall level+2.36
Spread+1.47
Near horizon of the forecast-1.90
Far horizon of the forecast-3.07
Forecast error+1.84
Flatness+0.08

How many causal features from each model land in each family, and what share of that MODEL's own causal features that is.

What does this mean?

How to read it
The number in each cell is a raw feature count; the colour is that count divided by the total number of causal features this model contributed to the whole pool (never by the family's own size), so a dark cell means a large share of one model's own vocabulary, not necessarily a large family.

Limitations
Descriptive: a shared family does not mean a shared INPUT -- see the drill-down below for each tight concept's own input-agreement test.

Each family's mean causal-ablation effect, one column per channel, in the direction the feature's PRESENCE moves the forecast (never the raw ablation direction) -- all nine channels are in the SAME units (multiples of a random-direction null), so one shared diverging colour scale is honest here.

What does this mean?

How to read it
Red/blue is sign; the number in each cell is the size in null units. A blank-looking (near-white) cell is a channel this family does not move.

Limitations
This is the family's own MEAN over its members -- individual members can vary; the per-family drill-down below shows each member tight concept's own profile.

Concept map

Every pooled causal feature, coloured by its FAMILY (grey = idiosyncratic, assigned to no family); a black-outlined marker is also a member of some atlas TIGHT concept (hover for which one).

Why can two close points be in different families?

How to read it
Coordinates are a linear PCA fit once across the whole pooled 9-channel space (a UMAP toggle is offered above the plot when available, purely as an alternative layout).

Limitations
Family membership is decided in the FULL 9-dimensional ablation-effect space, never in this 2-D projection -- two points drawn close together here can belong to different families (and two points far apart can belong to the same one) whenever the dimensions this projection does not show are where they actually differ. Read this map for the overall shape of the space, not for a single point's own family assignment.

Per-family drill-down

Level lowerers — 80 feature(s)

These features steer the first third of the forecast (removing them moves it), and steer the last third of the forecast (removing them moves it). Found in 4 models (Chronos-2, Chronos-Bolt, Sundial, TimesFM). Its features fire most often on real weather/ETT-derived mixtures.

Level lowerers & Accuracy improvers & Near-term steerers — model-specific, reproducible (TimesFM)

internal name: mild raises level (concept 2)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
TimesFM/stacked_xf.12ar_order (raw ρ=0.432, resid ρ=0.432, n=555); seasonal_period_dominant (raw ρ=-0.356, resid ρ=-0.356, n=443); n_seasonalities (raw ρ=0.352, resid ρ=0.352, n=555)0.0010noisy_chaotic (5.22x, q=0.0457); block_bootstrap (3.45x, q=0.0458)no
TimesFM/stacked_xf.16trend_order (raw ρ=0.520, resid ρ=0.520, n=555); n_seasonalities (raw ρ=0.518, resid ρ=0.518, n=555); ar_coeff_sum (raw ρ=0.517, resid ρ=0.517, n=374)0.0010parametric (6.68x, q=0.0000)no
TimesFM/stacked_xf.8ar_order (raw ρ=0.443, resid ρ=0.443, n=555); seasonal_period_dominant (raw ρ=-0.437, resid ρ=-0.437, n=443); ar_coeff_sum (raw ρ=0.377, resid ρ=0.377, n=374)0.0010block_bootstrap (8.27x, q=0.0000)no
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for TimesFM/stacked_xf.12 (series 76e969cfc135b283, noisy_chaotic).

Exemplar for TimesFM/stacked_xf.16 (series 9eb788e5ff96b221, parametric).

Exemplar for TimesFM/stacked_xf.8 (series f59121696d9f590e, block_bootstrap).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 2, level only: 2, no specific agreement: 8, not scorable: 37)). L6: not measured: no registered concept_transfer claim for this concept.

Level lowerers & Trend boosters — shared effect, different inputs (convergent) (Chronos-2, Sundial)

internal name: strong raises horizon_shape_near · unusually lowers mase (concept 4)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.10has_random_walk (raw ρ=0.295, resid ρ=0.295, n=555); seasonal_period_dominant (raw ρ=0.161, resid ρ=0.161, n=443); seasonal_amplitude_max (raw ρ=-0.155, resid ρ=-0.155, n=443)0.0010random_walk_drift (13.04x, q=0.0000); noisy_chaotic (5.22x, q=0.0171)no
Sundial/model.layers.8ar_coeff_sum (raw ρ=0.612, resid ρ=0.612, n=374); seasonal_period_dominant (raw ρ=-0.548, resid ρ=-0.548, n=443); trend_order (raw ρ=0.528, resid ρ=0.528, n=555)0.0010parametric (7.42x, q=0.0000)no
Sundial/model.layers.9ar_coeff_sum (raw ρ=0.597, resid ρ=0.597, n=374); seasonal_period_dominant (raw ρ=-0.519, resid ρ=-0.519, n=443); trend_order (raw ρ=0.487, resid ρ=0.487, n=555)0.0010parametric (7.05x, q=0.0000)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2Sundial00.411.0000nono0.010
Chronos-2Sundial00.411.0000nono0.029
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.10 (series 1fa94d4b0ea3fe57, noisy_chaotic).

Exemplar for Sundial/model.layers.8 (series 9721b6a6f8cbd81b, parametric).

Exemplar for Sundial/model.layers.9 (series 8d858ceaa74180a7, parametric).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 2, no specific agreement: 9, not scorable: 9)). L6: not measured: no registered concept_transfer claim for this concept.

Level lowerers & Smoothing features — partially shared (Chronos-2, Sundial, TimesFM)

internal name: strong raises level · unusually lowers trend (concept 10)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.6n_seasonalities (raw ρ=-0.414, resid ρ=-0.414, n=555); ar_order (raw ρ=0.362, resid ρ=0.362, n=555); seasonal_amplitude_max (raw ρ=-0.355, resid ρ=-0.355, n=443)0.0010ar_colored_noise (18.88x, q=0.0000)no
Sundial/model.layers.10ar_coeff_sum (raw ρ=0.535, resid ρ=0.535, n=374); seasonal_period_dominant (raw ρ=-0.434, resid ρ=-0.434, n=443); n_seasonalities (raw ρ=0.433, resid ρ=0.433, n=555)0.0010parametric (4.45x, q=0.0000); amplitude_modulated (4.39x, q=0.0160)no
TimesFM/stacked_xf.10nonen/ablock_bootstrap (13.79x, q=0.0000)YES -- block_bootstrap (100%)
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2Sundial00.411.0000nono-0.114
Chronos-2TimesFM00.411.0000nono-0.033
SundialTimesFM40.410.0016yesyes0.252
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.6 (series 5a8f637dcde26a0e, ar_colored_noise).

Exemplar for Sundial/model.layers.10 (series 8d858ceaa74180a7, parametric).

Exemplar for TimesFM/stacked_xf.10 (series cd1d99d261870797, block_bootstrap).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 2, level only: 1, no specific agreement: 9, not scorable: 32)). L6: not measured: no registered concept_transfer claim for this concept.

Level lowerers & Accuracy improvers & Volatility dampeners — shared effect, different inputs (convergent) (Chronos-2, Sundial)

internal name: strong raises level · unusually raises dispersion (concept 12)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.7n_seasonalities (raw ρ=-0.323, resid ρ=-0.323, n=555); has_intermittency (raw ρ=0.194, resid ρ=0.194, n=555); ar_coeff_sum (raw ρ=-0.144, resid ρ=-0.144, n=374)0.0010sequential_par (19.30x, q=0.0000)YES -- sequential_par (100%)
Sundial/model.layers.10trend_order (raw ρ=0.074, resid ρ=0.074, n=555); ar_coeff_sum (raw ρ=0.069, resid ρ=0.069, n=374); n_changepoints (raw ρ=0.066, resid ρ=0.066, n=555)0.7532mixture (2.83x, q=0.0000)YES -- mixture (85%)
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2Sundial00.411.0000nono-0.047
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.7 (series c9d483b254222c32, mixture).

Exemplar for Sundial/model.layers.10 (series e787501623adbf8b, mixture).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: partial (neither same-effect nor acts-differently on shared inputs (no specific agreement: 7, not scorable: 29)). L6: not measured: no registered concept_transfer claim for this concept.

Level lowerers & Accuracy degraders — not reproducible across SAE seeds (Chronos-2, Sundial)

internal name: dominant raises horizon_shape_near (concept 14)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.7has_intermittency (raw ρ=0.249, resid ρ=0.249, n=555); trend_scale (raw ρ=-0.084, resid ρ=-0.084, n=555); ar_order (raw ρ=-0.081, resid ρ=-0.081, n=555)0.0010sequential_par (11.58x, q=0.0000)no
Chronos-2/encoder.block.8ar_coeff_sum (raw ρ=0.217, resid ρ=0.217, n=374); seasonal_period_dominant (raw ρ=-0.213, resid ρ=-0.213, n=443); noise_scale (raw ρ=0.150, resid ρ=0.150, n=555)0.0010noisy_chaotic (6.52x, q=0.0051)no
Sundial/model.layers.6has_random_walk (raw ρ=0.216, resid ρ=0.216, n=555); seasonal_amplitude_max (raw ρ=-0.100, resid ρ=-0.100, n=443); n_seasonalities (raw ρ=-0.087, resid ρ=-0.087, n=555)0.0010random_walk_drift (7.82x, q=0.0005)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2Sundial10.410.6900nono-0.017
Chronos-2Sundial00.411.0000nono-0.007
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.7 (series 2f89e898a893a0be, intermittent_bursts).

Exemplar for Chronos-2/encoder.block.8 (series f969d7f4e643e063, noisy_chaotic).

Exemplar for Sundial/model.layers.6 (series b422f4cfbbe2a2ae, random_walk_drift).

How sure: L3 reproducible: not reached (the concept's grouping did NOT survive an independent replicate SAE). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: partial (neither same-effect nor acts-differently on shared inputs (no specific agreement: 2, not scorable: 15)). L6: not measured: no registered concept_transfer claim for this concept.

Level lowerers & Near-term steerers — shared effect, different inputs (convergent) (Chronos-2, Chronos-Bolt)

internal name: strong raises horizon_shape_near · unusually raises level (concept 16)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.9has_random_walk (raw ρ=0.680, resid ρ=0.680, n=555); seasonal_amplitude_max (raw ρ=-0.276, resid ρ=-0.276, n=443); n_seasonalities (raw ρ=-0.216, resid ρ=-0.216, n=555)0.0010block_bootstrap (11.72x, q=0.0000); random_walk_drift (3.91x, q=0.0377)YES -- block_bootstrap (85%)
Chronos-Bolt/encoder.block.4n_seasonalities (raw ρ=-0.360, resid ρ=-0.360, n=555); seasonal_amplitude_max (raw ρ=-0.263, resid ρ=-0.263, n=443); trend_order (raw ρ=-0.218, resid ρ=-0.218, n=555)0.0010sequential_par (19.30x, q=0.0000)YES -- sequential_par (100%)
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2Chronos-Bolt00.411.0000nono0.399
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.9 (series 25933fdb1371a64c, block_bootstrap).

Exemplar for Chronos-Bolt/encoder.block.4 (series 5ea6c60d50ed412f, sequential_par).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 4, level only: 2, no specific agreement: 15, not scorable: 26, shape only: 1)). L6: not measured: no registered concept_transfer claim for this concept.

Accuracy improvers & Level lowerers & Trend dampeners — shared: same effect, same inputs, reproducible (Chronos-Bolt, TimesFM)

internal name: strong raises mase (concept 18)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-Bolt/encoder.block.5seasonal_period_dominant (raw ρ=0.247, resid ρ=0.247, n=443); has_random_walk (raw ρ=0.153, resid ρ=0.153, n=555); seasonal_amplitude_max (raw ρ=-0.150, resid ρ=-0.150, n=443)0.0010trend_dominant (30.16x, q=0.0000)no
TimesFM/stacked_xf.0n_changepoints (raw ρ=0.366, resid ρ=0.366, n=555); trend_scale (raw ρ=0.311, resid ρ=0.311, n=555); trend_order (raw ρ=0.258, resid ρ=0.258, n=555)0.0010trend_dominant (24.13x, q=0.0000); random_walk_drift (9.13x, q=0.0000); regime_switching (4.67x, q=0.0394)no
TimesFM/stacked_xf.2has_random_walk (raw ρ=0.294, resid ρ=0.294, n=555); seasonal_amplitude_max (raw ρ=-0.290, resid ρ=-0.290, n=443); n_seasonalities (raw ρ=-0.259, resid ρ=-0.259, n=555)0.0010trend_dominant (24.13x, q=0.0000); random_walk_drift (9.13x, q=0.0000); regime_switching (4.67x, q=0.0394)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-BoltTimesFM130.410.0000yesyes0.524
Chronos-BoltTimesFM130.410.0000yesyes0.435
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-Bolt/encoder.block.5 (series 71c3bb97dcf523c2, trend_dominant).

Exemplar for TimesFM/stacked_xf.0 (series 278475b2a2dea6a7, trend_dominant).

Exemplar for TimesFM/stacked_xf.2 (series 30b6a99249a5e9ff, trend_dominant).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: reached (same causal effect on shared inputs (level only: 3, no specific agreement: 6, not scorable: 48, same causal effect: 1)). L6: not measured: no registered concept_transfer claim for this concept.

Volatility dampeners & Near-term steerers — shared effect, different inputs (convergent) (Sundial, TimesFM)

internal name: mild raises dispersion (concept 20)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Sundial/model.layers.10ar_coeff_sum (raw ρ=0.504, resid ρ=0.504, n=374); n_seasonalities (raw ρ=0.429, resid ρ=0.429, n=555); trend_order (raw ρ=0.374, resid ρ=0.374, n=555)0.0010mixture (3.33x, q=0.0000)YES -- mixture (100%)
Sundial/model.layers.8ar_coeff_sum (raw ρ=0.337, resid ρ=0.337, n=374); n_changepoints (raw ρ=0.303, resid ρ=0.303, n=555); seasonal_period_dominant (raw ρ=-0.287, resid ρ=-0.287, n=443)0.0010mixture (3.33x, q=0.0000)YES -- mixture (100%)
TimesFM/stacked_xf.14ar_order (raw ρ=0.478, resid ρ=0.478, n=555); n_seasonalities (raw ρ=0.405, resid ρ=0.405, n=555); seasonal_period_dominant (raw ρ=-0.402, resid ρ=-0.402, n=443)0.0010noisy_chaotic (5.22x, q=0.0228); clean_low_noise (4.83x, q=0.0228)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
SundialTimesFM00.411.0000nono0.214
SundialTimesFM00.411.0000nono0.105
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Sundial/model.layers.10 (series e7e084c61bf0ebc4, mixture).

Exemplar for Sundial/model.layers.8 (series 353e89dc472b97da, mixture).

Exemplar for TimesFM/stacked_xf.14 (series c7c2f35cd9505889, clean_low_noise).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 6, level only: 2, no specific agreement: 16, not scorable: 34)). L6: not measured: no registered concept_transfer claim for this concept.

Level lowerers & Accuracy improvers & Smoothing features — model-specific, reproducible (Sundial)

internal name: strong raises horizon_shape_far · unusually raises mase (concept 21)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Sundial/model.layers.4n_seasonalities (raw ρ=0.619, resid ρ=0.619, n=555); ar_coeff_sum (raw ρ=0.617, resid ρ=0.617, n=374); seasonal_period_dominant (raw ρ=-0.601, resid ρ=-0.601, n=443)0.0010mixture (2.16x, q=0.0035)no
Sundial/model.layers.7ar_coeff_sum (raw ρ=0.410, resid ρ=0.410, n=374); n_changepoints (raw ρ=0.341, resid ρ=0.341, n=555); trend_order (raw ρ=0.337, resid ρ=0.337, n=555)0.0010mixture (3.33x, q=0.0000)YES -- mixture (100%)
Sundial/model.layers.9ar_coeff_sum (raw ρ=0.072, resid ρ=0.072, n=374); seasonal_amplitude_max (raw ρ=0.061, resid ρ=0.061, n=443); trend_order (raw ρ=0.039, resid ρ=0.039, n=555)0.7343mixture (3.33x, q=0.0000)YES -- mixture (100%)
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Sundial/model.layers.4 (series a6cc538c81861ce3, mixture).

Exemplar for Sundial/model.layers.7 (series 5483841f5c4c4f0e, mixture).

Exemplar for Sundial/model.layers.9 (series 5483841f5c4c4f0e, mixture).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 1, level only: 7, no specific agreement: 27, not scorable: 23, shape only: 1)). L6: not measured: no registered concept_transfer claim for this concept.

Long-range steerers — model-specific, reproducible (Sundial)

internal name: strong raises horizon_shape_far · unusually raises horizon_shape_near (concept 22)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Sundial/model.layers.4ar_coeff_sum (raw ρ=0.139, resid ρ=0.139, n=374); trend_order (raw ρ=0.133, resid ρ=0.133, n=555); n_seasonalities (raw ρ=0.131, resid ρ=0.131, n=555)0.0260mixture (2.50x, q=0.0001)no
Sundial/model.layers.5n_seasonalities (raw ρ=-0.567, resid ρ=-0.567, n=555); has_intermittency (raw ρ=0.445, resid ρ=0.445, n=555); seasonal_amplitude_max (raw ρ=-0.423, resid ρ=-0.423, n=443)0.0010intermittent_bursts (13.16x, q=0.0000); ar_colored_noise (8.39x, q=0.0000)no
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Sundial/model.layers.4 (series 17329d907c46fd70, mixture).

Exemplar for Sundial/model.layers.5 (series a6c63d16b1997799, sequential_par).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM). L5 same causal effect on the same inputs: partial (neither same-effect nor acts-differently on shared inputs (level only: 1, no specific agreement: 4, not scorable: 27)). L6: not measured: no registered concept_transfer claim for this concept.

Near-term steerers — shared effect, different inputs (convergent) (Sundial, TimesFM)

internal name: mild raises horizon_shape_near · unusually raises horizon_shape_far (concept 23)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Sundial/model.layers.5ar_coeff_sum (raw ρ=0.611, resid ρ=0.611, n=374); seasonal_period_dominant (raw ρ=-0.607, resid ρ=-0.607, n=443); n_seasonalities (raw ρ=0.538, resid ρ=0.538, n=555)0.0010mixture (3.16x, q=0.0000)YES -- mixture (95%)
TimesFM/stacked_xf.4noise_scale (raw ρ=0.382, resid ρ=0.382, n=555); has_intermittency (raw ρ=0.324, resid ρ=0.324, n=555); seasonal_period_dominant (raw ρ=-0.305, resid ρ=-0.305, n=443)0.0010block_bootstrap (4.14x, q=0.0020); mixture (2.33x, q=0.0005)no
TimesFM/stacked_xf.6seasonal_period_dominant (raw ρ=-0.452, resid ρ=-0.452, n=443); ar_order (raw ρ=0.373, resid ρ=0.373, n=555); noise_scale (raw ρ=0.310, resid ρ=0.310, n=555)0.0010mixture (2.50x, q=0.0001)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
SundialTimesFM00.411.0000nono-0.152
SundialTimesFM00.411.0000nono-0.054
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Sundial/model.layers.5 (series 98140d409191002e, mixture).

Exemplar for TimesFM/stacked_xf.4 (series 0455fcd12e1372d6, mixture).

Exemplar for TimesFM/stacked_xf.6 (series 0455fcd12e1372d6, mixture).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: partial (neither same-effect nor acts-differently on shared inputs (level only: 9, no specific agreement: 11, not scorable: 36)). L6: not measured: no registered concept_transfer claim for this concept.

Volatility dampeners & Near-term steerers II — not reproducible across SAE seeds (Sundial, TimesFM)

internal name: mild raises horizon_shape_near · unusually raises dispersion (concept 24)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Sundial/model.layers.5nonen/asequential_par (14.48x, q=0.0000)no
Sundial/model.layers.6has_intermittency (raw ρ=0.340, resid ρ=0.340, n=555); n_seasonalities (raw ρ=-0.326, resid ρ=-0.326, n=555); ar_coeff_sum (raw ρ=-0.202, resid ρ=-0.202, n=374)0.0010block_bootstrap (11.72x, q=0.0000)YES -- block_bootstrap (85%)
TimesFM/stacked_xf.12seasonal_period_dominant (raw ρ=-0.393, resid ρ=-0.393, n=443); ar_order (raw ρ=0.375, resid ρ=0.375, n=555); trend_order (raw ρ=0.312, resid ρ=0.312, n=555)0.0010block_bootstrap (4.14x, q=0.0020); mixture (2.33x, q=0.0005)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
SundialTimesFM20.410.1241nono0.085
SundialTimesFM00.411.0000nono0.384
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Sundial/model.layers.5 (series ae89d4a89f8aa7b0, mixture).

Exemplar for Sundial/model.layers.6 (series 5e25859ea56891a3, block_bootstrap).

Exemplar for TimesFM/stacked_xf.12 (series 0455fcd12e1372d6, mixture).

How sure: L3 reproducible: not reached (the concept's grouping did NOT survive an independent replicate SAE). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: partial (neither same-effect nor acts-differently on shared inputs (level only: 1, no specific agreement: 2, not scorable: 32)). L6: not measured: no registered concept_transfer claim for this concept.

45 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.10: 3; Chronos-2/encoder.block.5: 4; Chronos-2/encoder.block.6: 3; Chronos-2/encoder.block.7: 2; Chronos-2/encoder.block.8: 3; Chronos-2/encoder.block.9: 2; Chronos-Bolt/encoder.block.3: 1; Chronos-Bolt/encoder.block.5: 2; Sundial/model.layers.10: 2; Sundial/model.layers.11: 1; Sundial/model.layers.3: 1; Sundial/model.layers.4: 1; Sundial/model.layers.5: 4; Sundial/model.layers.6: 3; Sundial/model.layers.9: 4; TimesFM/stacked_xf.0: 1; TimesFM/stacked_xf.12: 1; TimesFM/stacked_xf.16: 2; TimesFM/stacked_xf.2: 2; TimesFM/stacked_xf.4: 1; TimesFM/stacked_xf.6: 1; TimesFM/stacked_xf.8: 1.

Level raisers & Accuracy improvers — 61 feature(s)

These features steer the last third of the forecast (removing them moves it), and steer the first third of the forecast (removing them moves it). Found in 4 models (Chronos-2, Chronos-Bolt, Sundial, TimesFM). Its features fire most often on real weather/ETT-derived mixtures.

Level raisers & Accuracy improvers & Near-term steerers — shared effect, different inputs (convergent) (Chronos-2, TimesFM)

internal name: strong lowers level · unusually raises mase (concept 0)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.6n_seasonalities (raw ρ=-0.374, resid ρ=-0.374, n=555); ar_coeff_sum (raw ρ=-0.249, resid ρ=-0.249, n=374); seasonal_amplitude_max (raw ρ=-0.209, resid ρ=-0.209, n=443)0.0010anomaly_heavy (8.04x, q=0.0000); ar_colored_noise (6.29x, q=0.0005); intermittent_bursts (4.39x, q=0.0466)no
Chronos-2/encoder.block.7n_seasonalities (raw ρ=-0.443, resid ρ=-0.443, n=555); seasonal_amplitude_max (raw ρ=-0.336, resid ρ=-0.336, n=443); ar_coeff_sum (raw ρ=-0.267, resid ρ=-0.267, n=374)0.0010anomaly_heavy (9.19x, q=0.0000); intermittent_bursts (7.31x, q=0.0005); ar_colored_noise (6.29x, q=0.0004)no
Chronos-2/encoder.block.8n_seasonalities (raw ρ=-0.363, resid ρ=-0.363, n=555); has_intermittency (raw ρ=0.340, resid ρ=0.340, n=555); seasonal_amplitude_max (raw ρ=-0.268, resid ρ=-0.268, n=443)0.0010anomaly_heavy (10.34x, q=0.0000); intermittent_bursts (7.31x, q=0.0007); ar_colored_noise (5.24x, q=0.0024)no
TimesFM/stacked_xf.0n_seasonalities (raw ρ=0.267, resid ρ=0.267, n=555); n_changepoints (raw ρ=0.242, resid ρ=0.242, n=555); seasonal_period_dominant (raw ρ=0.208, resid ρ=0.208, n=443)0.0010mixture (2.50x, q=0.0002)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2TimesFM00.411.0000nono-0.165
Chronos-2TimesFM00.411.0000nono-0.179
Chronos-2TimesFM00.411.0000nono-0.178
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.6 (series dcff4d0836b27966, anomaly_heavy).

Exemplar for Chronos-2/encoder.block.7 (series 6b2ef8df8667ca5f, intermittent_bursts).

Exemplar for Chronos-2/encoder.block.8 (series 6b2ef8df8667ca5f, intermittent_bursts).

Exemplar for TimesFM/stacked_xf.0 (series 83cd32aa19606afd, random_walk_drift).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: partial (neither same-effect nor acts-differently on shared inputs (level only: 3, no specific agreement: 7, not scorable: 66, shape only: 1)). L6: confirmed on private data (16/16 registered claim(s); by mode -- search: 16/16).

Accuracy improvers & Near-term steerers — model-specific, reproducible (TimesFM)

internal name: mild raises horizon_shape_near · unusually raises mase (concept 3)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
TimesFM/stacked_xf.14n_seasonalities (raw ρ=0.492, resid ρ=0.492, n=555); ar_coeff_sum (raw ρ=0.492, resid ρ=0.492, n=374); seasonal_period_dominant (raw ρ=-0.466, resid ρ=-0.466, n=443)0.0010parametric (5.94x, q=0.0000)no
TimesFM/stacked_xf.16ar_coeff_sum (raw ρ=0.498, resid ρ=0.498, n=374); n_seasonalities (raw ρ=0.473, resid ρ=0.473, n=555); trend_order (raw ρ=0.422, resid ρ=0.422, n=555)0.0010parametric (4.08x, q=0.0001)no
TimesFM/stacked_xf.8n_seasonalities (raw ρ=0.446, resid ρ=0.446, n=555); ar_order (raw ρ=0.400, resid ρ=0.400, n=555); seasonal_period_dominant (raw ρ=-0.388, resid ρ=-0.388, n=443)0.0010none survive BHno
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for TimesFM/stacked_xf.14 (series c7c2f35cd9505889, clean_low_noise).

Exemplar for TimesFM/stacked_xf.16 (series 9721b6a6f8cbd81b, parametric).

Exemplar for TimesFM/stacked_xf.8 (series e7e084c61bf0ebc4, mixture).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 1, level only: 1, no specific agreement: 9, not scorable: 34, shape only: 1)). L6: not measured: no registered concept_transfer claim for this concept.

Level raisers & Volatility dampeners & Seasonality dampeners — shared effect, different inputs (convergent) (Chronos-2, Sundial)

internal name: strong raises horizon_shape_near · unusually lowers level · unusually raises dispersion (concept 6)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.5has_intermittency (raw ρ=0.616, resid ρ=0.616, n=555); seasonal_amplitude_max (raw ρ=-0.194, resid ρ=-0.194, n=443); trend_scale (raw ρ=-0.175, resid ρ=-0.175, n=555)0.0010intermittent_bursts (20.47x, q=0.0000)no
Sundial/model.layers.11seasonal_period_dominant (raw ρ=0.255, resid ρ=0.255, n=443); noise_scale (raw ρ=-0.137, resid ρ=-0.137, n=555); n_seasonalities (raw ρ=0.111, resid ρ=0.111, n=555)0.0010multi_seasonal_complex (9.65x, q=0.0000); clean_low_noise (6.03x, q=0.0037)no
Sundial/model.layers.6seasonal_period_dominant (raw ρ=-0.622, resid ρ=-0.622, n=443); n_seasonalities (raw ρ=0.580, resid ρ=0.580, n=555); ar_coeff_sum (raw ρ=0.465, resid ρ=0.465, n=374)0.0010seasonal_dominant (23.16x, q=0.0000)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2Sundial00.411.0000nono-0.027
Chronos-2Sundial00.411.0000nono-0.037
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.5 (series 34bcce27204d29b6, intermittent_bursts).

Exemplar for Sundial/model.layers.11 (series de30d28d501e8d84, multi_seasonal_complex).

Exemplar for Sundial/model.layers.6 (series d00646f6d923bc78, seasonal_dominant).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: partial (neither same-effect nor acts-differently on shared inputs (level only: 2, no specific agreement: 16, not scorable: 23)). L6: not measured: no registered concept_transfer claim for this concept.

Level raisers & Accuracy improvers & Trend dampeners — not reproducible across SAE seeds (Chronos-2)

internal name: strong raises horizon_shape_near · unusually lowers level · unusually raises trend (concept 7)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.5n_seasonalities (raw ρ=-0.286, resid ρ=-0.286, n=555); has_intermittency (raw ρ=0.260, resid ρ=0.260, n=555); trend_order (raw ρ=-0.183, resid ρ=-0.183, n=555)0.0010intermittent_bursts (5.85x, q=0.0149); anomaly_heavy (5.74x, q=0.0094)no
Chronos-2/encoder.block.8has_random_walk (raw ρ=0.335, resid ρ=0.335, n=555); ar_coeff_sum (raw ρ=0.158, resid ρ=0.158, n=374); seasonal_amplitude_max (raw ρ=-0.147, resid ρ=-0.147, n=443)0.0010mixture (3.33x, q=0.0000)YES -- mixture (100%)
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Chronos-2/encoder.block.5 (series f969d7f4e643e063, noisy_chaotic).

Exemplar for Chronos-2/encoder.block.8 (series b755375351d8f0a4, mixture).

How sure: L3 reproducible: not reached (the concept's grouping did NOT survive an independent replicate SAE). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 2, level only: 4, no specific agreement: 4, not scorable: 17)). L6: not measured: no registered concept_transfer claim for this concept.

Level raisers & High-frequency shifters — not reproducible across SAE seeds (Chronos-2, Sundial)

internal name: strong lowers level · unusually lowers spectral_centroid (concept 8)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.6has_intermittency (raw ρ=0.701, resid ρ=0.701, n=555); trend_scale (raw ρ=-0.224, resid ρ=-0.224, n=555); n_seasonalities (raw ρ=-0.211, resid ρ=-0.211, n=555)0.0010intermittent_bursts (24.86x, q=0.0000)no
Chronos-2/encoder.block.9noise_scale (raw ρ=-0.080, resid ρ=-0.080, n=555); seasonal_period_dominant (raw ρ=0.080, resid ρ=0.080, n=443); n_changepoints (raw ρ=-0.072, resid ρ=-0.072, n=555)0.6054sequential_par (11.58x, q=0.0000)no
Sundial/model.layers.4seasonal_period_dominant (raw ρ=-0.612, resid ρ=-0.612, n=443); n_seasonalities (raw ρ=0.590, resid ρ=0.590, n=555); ar_coeff_sum (raw ρ=0.461, resid ρ=0.461, n=374)0.0010seasonal_dominant (15.44x, q=0.0000); amplitude_modulated (4.39x, q=0.0320)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2Sundial00.411.0000nono-0.068
Chronos-2Sundial00.411.0000nono0.058
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.6 (series c2dc73ec3f9aee41, intermittent_bursts).

Exemplar for Chronos-2/encoder.block.9 (series f3e083aa9a6c25c8, nonsinusoidal_seasonal).

Exemplar for Sundial/model.layers.4 (series 2b494e83341632a3, anomaly_heavy).

How sure: L3 reproducible: not reached (the concept's grouping did NOT survive an independent replicate SAE). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: partial (neither same-effect nor acts-differently on shared inputs (level only: 1, no specific agreement: 3, not scorable: 17, shape only: 1)). L6: not measured: no registered concept_transfer claim for this concept.

Volatility amplifiers & Smoothing features — shared: same effect, same inputs, reproducible (Chronos-2, Sundial)

internal name: strong raises horizon_shape_far · unusually raises spectral_centroid (concept 9)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.6ar_coeff_sum (raw ρ=0.310, resid ρ=0.310, n=374); n_changepoints (raw ρ=0.270, resid ρ=0.270, n=555); trend_order (raw ρ=0.256, resid ρ=0.256, n=555)0.0010mixture (3.33x, q=0.0000)YES -- mixture (100%)
Sundial/model.layers.3seasonal_period_dominant (raw ρ=-0.240, resid ρ=-0.240, n=443); trend_order (raw ρ=0.192, resid ρ=0.192, n=555); ar_coeff_sum (raw ρ=0.187, resid ρ=0.187, n=374)0.0010mixture (3.16x, q=0.0000)YES -- mixture (95%)
Sundial/model.layers.5seasonal_period_dominant (raw ρ=-0.460, resid ρ=-0.460, n=443); ar_coeff_sum (raw ρ=0.432, resid ρ=0.432, n=374); trend_order (raw ρ=0.408, resid ρ=0.408, n=555)0.0010parametric (5.57x, q=0.0000)no
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2Sundial70.410.0000yesyes0.490
Chronos-2Sundial00.411.0000nono0.013
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.6 (series dbe5f63c1d5d63b1, mixture).

Exemplar for Sundial/model.layers.3 (series cbaf63803c12dbeb, mixture).

Exemplar for Sundial/model.layers.5 (series a985ce27879bd636, parametric).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: reached (same causal effect on shared inputs (level only: 4, no specific agreement: 27, not scorable: 24, same causal effect: 1, shape only: 5)). L6: confirmed on private data (4/4 registered claim(s); by mode -- search: 4/4).

Volatility amplifiers & Level raisers & Long-range steerers — model-specific, reproducible (Chronos-2)

internal name: strong lowers dispersion (concept 11)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.7seasonal_period_dominant (raw ρ=-0.128, resid ρ=-0.128, n=443); seasonal_amplitude_max (raw ρ=0.070, resid ρ=0.070, n=443); n_anomalies (raw ρ=0.062, resid ρ=0.062, n=555)0.0490mixture (3.33x, q=0.0000)YES -- mixture (100%)
Chronos-2/encoder.block.8seasonal_period_dominant (raw ρ=-0.154, resid ρ=-0.154, n=443); noise_scale (raw ρ=-0.090, resid ρ=-0.090, n=555); seasonal_amplitude_max (raw ρ=0.069, resid ρ=0.069, n=443)0.0160mixture (3.33x, q=0.0000)YES -- mixture (100%)
Chronos-2/encoder.block.9seasonal_period_dominant (raw ρ=-0.214, resid ρ=-0.214, n=443); n_changepoints (raw ρ=0.092, resid ρ=0.092, n=555); seasonal_amplitude_max (raw ρ=0.092, resid ρ=0.092, n=443)0.0010mixture (3.33x, q=0.0000)YES -- mixture (100%)
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Chronos-2/encoder.block.7 (series 1aa8494bfac43c6c, mixture).

Exemplar for Chronos-2/encoder.block.8 (series e7bd1a28391e112a, mixture).

Exemplar for Chronos-2/encoder.block.9 (series e7bd1a28391e112a, mixture).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 5, level only: 2, no specific agreement: 27, not scorable: 12, same causal effect: 8, shape only: 12)). L6: not measured: no registered concept_transfer claim for this concept.

Level raisers & Volatility amplifiers & Seasonality amplifiers — model-specific, reproducible (Chronos-2)

internal name: strong lowers level · unusually lowers seasonal (concept 13)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.7noise_scale (raw ρ=-0.371, resid ρ=-0.371, n=555); ar_order (raw ρ=-0.306, resid ρ=-0.306, n=555); n_changepoints (raw ρ=-0.304, resid ρ=-0.304, n=555)0.0010seasonal_dominant (27.02x, q=0.0000)no
Chronos-2/encoder.block.8noise_scale (raw ρ=-0.343, resid ρ=-0.343, n=555); seasonal_amplitude_max (raw ρ=0.301, resid ρ=0.301, n=443); n_changepoints (raw ρ=-0.294, resid ρ=-0.294, n=555)0.0010seasonal_dominant (23.16x, q=0.0000); clean_low_noise (4.83x, q=0.0190)no
Chronos-2/encoder.block.9n_changepoints (raw ρ=-0.353, resid ρ=-0.353, n=555); noise_scale (raw ρ=-0.319, resid ρ=-0.319, n=555); ar_order (raw ρ=-0.288, resid ρ=-0.288, n=555)0.0010seasonal_dominant (25.09x, q=0.0000)no
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Chronos-2/encoder.block.7 (series 001115a9c567f964, seasonal_dominant).

Exemplar for Chronos-2/encoder.block.8 (series 001115a9c567f964, seasonal_dominant).

Exemplar for Chronos-2/encoder.block.9 (series a0c3fa63d848d60b, seasonal_dominant).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 6, level only: 1, no specific agreement: 12, not scorable: 17)). L6: not measured: no registered concept_transfer claim for this concept.

Level shifters — model-specific, reproducible (TimesFM)

internal name: shifts the level (concept 26)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
TimesFM/stacked_xf.18ar_coeff_sum (raw ρ=0.490, resid ρ=0.490, n=374); n_seasonalities (raw ρ=0.383, resid ρ=0.383, n=555); trend_order (raw ρ=0.376, resid ρ=0.376, n=555)0.0010clean_low_noise (4.83x, q=0.0233); parametric (2.60x, q=0.0233)no
TimesFM/stacked_xf.6noise_scale (raw ρ=0.307, resid ρ=0.307, n=555); has_intermittency (raw ρ=0.300, resid ρ=0.300, n=555); seasonal_period_dominant (raw ρ=-0.289, resid ρ=-0.289, n=443)0.0010mixture (2.99x, q=0.0000)YES -- mixture (90%)
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for TimesFM/stacked_xf.18 (series 9721b6a6f8cbd81b, parametric).

Exemplar for TimesFM/stacked_xf.6 (series 0455fcd12e1372d6, mixture).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 7, level only: 1, no specific agreement: 4, not scorable: 24)). L6: not measured: no registered concept_transfer claim for this concept.

32 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.10: 1; Chronos-2/encoder.block.5: 1; Chronos-2/encoder.block.6: 2; Chronos-2/encoder.block.9: 1; Chronos-Bolt/encoder.block.4: 1; Sundial/model.layers.10: 3; Sundial/model.layers.3: 2; Sundial/model.layers.4: 3; Sundial/model.layers.7: 1; Sundial/model.layers.8: 3; TimesFM/stacked_xf.0: 2; TimesFM/stacked_xf.10: 3; TimesFM/stacked_xf.12: 2; TimesFM/stacked_xf.16: 1; TimesFM/stacked_xf.4: 3; TimesFM/stacked_xf.6: 2; TimesFM/stacked_xf.8: 1.

Trend dampeners — 18 feature(s)

These features decrease the forecast's trend slope. Found in 4 models (Chronos-2, Chronos-Bolt, Sundial, TimesFM). Its features fire most often on real weather/ETT-derived mixtures.

Trend dampeners — not reproducible across SAE seeds (Chronos-2, TimesFM)

internal name: strong raises trend (concept 1)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.7has_random_walk (raw ρ=0.118, resid ρ=0.118, n=555); trend_scale (raw ρ=0.079, resid ρ=0.079, n=555); ar_order (raw ρ=-0.046, resid ρ=-0.046, n=555)0.1039mixture (3.33x, q=0.0000)YES -- mixture (100%)
Chronos-2/encoder.block.8ar_coeff_sum (raw ρ=0.198, resid ρ=0.198, n=374); trend_order (raw ρ=0.182, resid ρ=0.182, n=555); n_changepoints (raw ρ=0.171, resid ρ=0.171, n=555)0.0010mixture (3.33x, q=0.0000)YES -- mixture (100%)
Chronos-2/encoder.block.9ar_coeff_sum (raw ρ=0.168, resid ρ=0.168, n=374); trend_order (raw ρ=0.136, resid ρ=0.136, n=555); trend_scale (raw ρ=0.119, resid ρ=0.119, n=555)0.0050mixture (3.33x, q=0.0000)YES -- mixture (100%)
TimesFM/stacked_xf.14has_random_walk (raw ρ=0.104, resid ρ=0.104, n=555); seasonal_amplitude_max (raw ρ=-0.081, resid ρ=-0.081, n=443); trend_scale (raw ρ=0.064, resid ρ=0.064, n=555)0.2737sequential_par (15.44x, q=0.0000)YES -- sequential_par (80%)
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2TimesFM00.411.0000nono-0.011
Chronos-2TimesFM00.411.0000nono-0.012
Chronos-2TimesFM00.411.0000nono-0.011
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.7 (series 67fab51c30b778c2, mixture).

Exemplar for Chronos-2/encoder.block.8 (series 6e36767df6e007e0, mixture).

Exemplar for Chronos-2/encoder.block.9 (series 67fab51c30b778c2, mixture).

Exemplar for TimesFM/stacked_xf.14 (series fee9a16335fd7551, trend_dominant).

How sure: L3 reproducible: not reached (the concept's grouping did NOT survive an independent replicate SAE). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: partial (neither same-effect nor acts-differently on shared inputs (level only: 2, no specific agreement: 4, not scorable: 59, shape only: 1)). L6: not measured: no registered concept_transfer claim for this concept.

14 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.8: 2; Chronos-2/encoder.block.9: 3; Chronos-Bolt/encoder.block.4: 1; Chronos-Bolt/encoder.block.5: 2; Sundial/model.layers.10: 1; Sundial/model.layers.11: 1; Sundial/model.layers.3: 1; Sundial/model.layers.8: 2; TimesFM/stacked_xf.12: 1.

Seasonality amplifiers — 17 feature(s)

These features increase the forecast's seasonal magnitude. Found in 4 models (Chronos-2, Chronos-Bolt, Sundial, TimesFM).

17 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.10: 1; Chronos-2/encoder.block.5: 2; Chronos-2/encoder.block.7: 1; Chronos-2/encoder.block.8: 1; Chronos-Bolt/encoder.block.3: 1; Sundial/model.layers.11: 1; Sundial/model.layers.3: 1; Sundial/model.layers.5: 1; Sundial/model.layers.6: 1; Sundial/model.layers.8: 1; Sundial/model.layers.9: 1; TimesFM/stacked_xf.0: 3; TimesFM/stacked_xf.12: 1; TimesFM/stacked_xf.2: 1.

Trend boosters & Volatility amplifiers — 12 feature(s)

These features increase the forecast's trend slope, and increase the forecast's spread. Found in 4 models (Chronos-2, Chronos-Bolt, Sundial, TimesFM).

12 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.5: 1; Chronos-2/encoder.block.7: 2; Chronos-Bolt/encoder.block.3: 2; Sundial/model.layers.10: 1; Sundial/model.layers.4: 1; Sundial/model.layers.8: 2; TimesFM/stacked_xf.12: 1; TimesFM/stacked_xf.16: 1; TimesFM/stacked_xf.6: 1.

Volatility dampeners — 48 feature(s)

These features decrease the forecast's spread. Found in 3 models (Chronos-2, Chronos-Bolt, Sundial). Its features fire most often on resampled real weather series.

Volatility dampeners & Level raisers & Near-term steerers — model-specific, reproducible (Chronos-2)

internal name: strong raises dispersion · unusually raises horizon_shape_far (concept 5)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.5has_intermittency (raw ρ=0.374, resid ρ=0.374, n=555); n_seasonalities (raw ρ=-0.372, resid ρ=-0.372, n=555); seasonal_amplitude_max (raw ρ=-0.222, resid ρ=-0.222, n=443)0.0010block_bootstrap (8.96x, q=0.0000); anomaly_heavy (5.74x, q=0.0018)no
Chronos-2/encoder.block.8has_intermittency (raw ρ=0.539, resid ρ=0.539, n=555); n_seasonalities (raw ρ=-0.347, resid ρ=-0.347, n=555); seasonal_amplitude_max (raw ρ=-0.207, resid ρ=-0.207, n=443)0.0010block_bootstrap (13.10x, q=0.0000)YES -- block_bootstrap (95%)
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Chronos-2/encoder.block.5 (series 25933fdb1371a64c, block_bootstrap).

Exemplar for Chronos-2/encoder.block.8 (series fafdfe79ce7ac32a, block_bootstrap).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 3, level only: 1, no specific agreement: 3, not scorable: 36, shape only: 1)). L6: not measured: no registered concept_transfer claim for this concept.

Seasonality dampeners — shared effect, different inputs (convergent) (Chronos-Bolt, Sundial)

internal name: strong raises seasonal (concept 17)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-Bolt/encoder.block.4n_seasonalities (raw ρ=-0.500, resid ρ=-0.500, n=555); seasonal_amplitude_max (raw ρ=-0.423, resid ρ=-0.423, n=443); ar_coeff_sum (raw ρ=-0.331, resid ρ=-0.331, n=374)0.0010ar_colored_noise (11.54x, q=0.0000); noisy_chaotic (10.43x, q=0.0000)no
Chronos-Bolt/encoder.block.5n_seasonalities (raw ρ=-0.586, resid ρ=-0.586, n=555); seasonal_amplitude_max (raw ρ=-0.493, resid ρ=-0.493, n=443); ar_coeff_sum (raw ρ=-0.377, resid ρ=-0.377, n=374)0.0010ar_colored_noise (10.49x, q=0.0000); noisy_chaotic (9.13x, q=0.0000)no
Sundial/model.layers.10n_changepoints (raw ρ=0.594, resid ρ=0.594, n=555); ar_coeff_sum (raw ρ=0.583, resid ρ=0.583, n=374); trend_order (raw ρ=0.501, resid ρ=0.501, n=555)0.0010mixture (2.99x, q=0.0000)YES -- mixture (90%)
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-BoltSundial00.411.0000nono-0.327
Chronos-BoltSundial00.411.0000nono-0.391
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-Bolt/encoder.block.4 (series 284a6df63a6f77f8, noisy_chaotic).

Exemplar for Chronos-Bolt/encoder.block.5 (series 5a8f637dcde26a0e, ar_colored_noise).

Exemplar for Sundial/model.layers.10 (series dbe5f63c1d5d63b1, mixture).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 4, level only: 1, no specific agreement: 13, not scorable: 37, shape only: 1)). L6: not measured: no registered concept_transfer claim for this concept.

Volatility dampeners & Smoothing features — model-specific, reproducible (Sundial)

internal name: strong raises dispersion · unusually raises spectral_centroid (concept 19)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Sundial/model.layers.10n_seasonalities (raw ρ=-0.621, resid ρ=-0.621, n=555); seasonal_amplitude_max (raw ρ=-0.464, resid ρ=-0.464, n=443); has_intermittency (raw ρ=0.338, resid ρ=0.338, n=555)0.0010block_bootstrap (11.03x, q=0.0000)YES -- block_bootstrap (80%)
Sundial/model.layers.4has_intermittency (raw ρ=0.318, resid ρ=0.318, n=555); n_seasonalities (raw ρ=-0.226, resid ρ=-0.226, n=555); seasonal_amplitude_max (raw ρ=-0.187, resid ρ=-0.187, n=443)0.0010block_bootstrap (11.72x, q=0.0000)YES -- block_bootstrap (85%)
Sundial/model.layers.6has_intermittency (raw ρ=0.340, resid ρ=0.340, n=555); n_seasonalities (raw ρ=-0.243, resid ρ=-0.243, n=555); n_anomalies (raw ρ=0.187, resid ρ=0.187, n=555)0.0010block_bootstrap (11.72x, q=0.0000)YES -- block_bootstrap (85%)
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Sundial/model.layers.10 (series c87cdfe6df1cf96f, block_bootstrap).

Exemplar for Sundial/model.layers.4 (series 9be4b438cd59dddf, block_bootstrap).

Exemplar for Sundial/model.layers.6 (series 9be4b438cd59dddf, block_bootstrap).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM). L5 same causal effect on the same inputs: partial (neither same-effect nor acts-differently on shared inputs (no specific agreement: 2, not scorable: 56, shape only: 2)). L6: not measured: no registered concept_transfer claim for this concept.

Volatility dampeners & Seasonality dampeners & Accuracy degraders — model-specific, reproducible (Sundial)

internal name: strong raises dispersion · unusually raises seasonal (concept 25)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Sundial/model.layers.7n_changepoints (raw ρ=-0.215, resid ρ=-0.215, n=555); n_seasonalities (raw ρ=0.194, resid ρ=0.194, n=555); has_heteroskedastic (raw ρ=0.192, resid ρ=0.192, n=555)0.0010seasonal_dominant (23.16x, q=0.0000); anomaly_heavy (4.60x, q=0.0271)no
Sundial/model.layers.8n_changepoints (raw ρ=-0.287, resid ρ=-0.287, n=555); n_seasonalities (raw ρ=0.266, resid ρ=0.266, n=555); ar_order (raw ρ=-0.226, resid ρ=-0.226, n=555)0.0010seasonal_dominant (21.23x, q=0.0000); anomaly_heavy (4.60x, q=0.0271)no
Sundial/model.layers.9n_changepoints (raw ρ=-0.277, resid ρ=-0.277, n=555); ar_order (raw ρ=-0.241, resid ρ=-0.241, n=555); has_heteroskedastic (raw ρ=0.200, resid ρ=0.200, n=555)0.0010seasonal_dominant (23.16x, q=0.0000); anomaly_heavy (5.74x, q=0.0029)no
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Sundial/model.layers.7 (series a0c3fa63d848d60b, seasonal_dominant).

Exemplar for Sundial/model.layers.8 (series cd06d6d060abfecf, seasonal_dominant).

Exemplar for Sundial/model.layers.9 (series 653ee2385d9dc03c, seasonal_dominant).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 18, no specific agreement: 11, not scorable: 20, shape only: 1)). L6: not measured: no registered concept_transfer claim for this concept.

35 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.10: 1; Chronos-2/encoder.block.5: 1; Chronos-2/encoder.block.6: 1; Chronos-2/encoder.block.7: 1; Chronos-2/encoder.block.8: 2; Chronos-2/encoder.block.9: 1; Chronos-Bolt/encoder.block.3: 4; Chronos-Bolt/encoder.block.4: 7; Chronos-Bolt/encoder.block.5: 3; Sundial/model.layers.10: 1; Sundial/model.layers.11: 2; Sundial/model.layers.3: 3; Sundial/model.layers.4: 2; Sundial/model.layers.5: 1; Sundial/model.layers.7: 1; Sundial/model.layers.8: 2; Sundial/model.layers.9: 2.

Trend boosters & Accuracy improvers — 23 feature(s)

These features increase the forecast's trend slope, and steer the last third of the forecast (removing them moves it). Found in 3 models (Chronos-2, Sundial, TimesFM).

22 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.10: 1; Chronos-2/encoder.block.5: 2; Chronos-2/encoder.block.6: 3; Chronos-2/encoder.block.7: 3; Chronos-2/encoder.block.8: 2; Sundial/model.layers.10: 1; Sundial/model.layers.3: 2; Sundial/model.layers.4: 1; Sundial/model.layers.7: 3; Sundial/model.layers.8: 1; TimesFM/stacked_xf.2: 2; TimesFM/stacked_xf.4: 1.

High-frequency shifters — 11 feature(s)

These features steer the first third of the forecast (removing them moves it), and shift the forecast toward higher frequencies (a rougher, less smooth shape). Found in 3 models (Chronos-2, Sundial, TimesFM).

10 feature(s) in this family without a tight (atlas) concept of their own -- Sundial/model.layers.10: 1; Sundial/model.layers.11: 1; Sundial/model.layers.5: 1; Sundial/model.layers.6: 1; Sundial/model.layers.7: 2; Sundial/model.layers.8: 1; Sundial/model.layers.9: 2; TimesFM/stacked_xf.6: 1.

Level raisers & Trend boosters — 18 feature(s)

These features steer the last third of the forecast (removing them moves it), and increase the forecast's overall level. Found in 2 models (Chronos-2, Sundial).

Accuracy degraders — shared effect, different inputs (convergent) (Chronos-2, Sundial)

internal name: strong lowers mase (concept 15)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.8has_random_walk (raw ρ=0.133, resid ρ=0.133, n=555); has_heteroskedastic (raw ρ=0.081, resid ρ=0.081, n=555); trend_scale (raw ρ=-0.079, resid ρ=-0.079, n=555)0.0420none survive BHno
Sundial/model.layers.9n_seasonalities (raw ρ=0.168, resid ρ=0.168, n=555); trend_order (raw ρ=0.149, resid ρ=0.149, n=555); seasonal_amplitude_max (raw ρ=0.126, resid ρ=0.126, n=443)0.0050none survive BHno
Input agreement between parts
Model AModel BShared top-k seriesExpected by chancep (BH)Beyond archetype?Agreesρ over all series (descriptive)
Chronos-2Sundial00.411.0000nono0.181
Two parts agree on inputs when their top-firing series overlap more than two random sets of the same size would (exact hypergeometric test, Benjamini-Hochberg within this concept). 'Beyond archetype' asks whether the overlap also beats random sets drawn with the same mix of archetypes, i.e. whether the parts share more than a preference for one kind of series. The correlation over all series is shown for context only: it measures broad co-variation and can be high with no shared top series.

Exemplar for Chronos-2/encoder.block.8 (series 83cd32aa19606afd, random_walk_drift).

Exemplar for Sundial/model.layers.9 (series 8618a145be2ad181, seasonal_dominant).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 1, level only: 1, no specific agreement: 6, not scorable: 13, same causal effect: 1, shape only: 1)). L6: not measured: no registered concept_transfer claim for this concept.

15 feature(s) in this family without a tight (atlas) concept of their own -- Chronos-2/encoder.block.10: 1; Chronos-2/encoder.block.6: 1; Chronos-2/encoder.block.7: 1; Sundial/model.layers.10: 2; Sundial/model.layers.11: 2; Sundial/model.layers.4: 1; Sundial/model.layers.6: 2; Sundial/model.layers.7: 2; Sundial/model.layers.9: 3.

What is unique to each model, and why?

TimesFM -- 3 reproducible model-specific concept(s)
Level lowerers & Accuracy improvers & Near-term steerers — model-specific, reproducible (TimesFM)

internal name: mild raises level (concept 2)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
TimesFM/stacked_xf.12ar_order (raw ρ=0.432, resid ρ=0.432, n=555); seasonal_period_dominant (raw ρ=-0.356, resid ρ=-0.356, n=443); n_seasonalities (raw ρ=0.352, resid ρ=0.352, n=555)0.0010noisy_chaotic (5.22x, q=0.0457); block_bootstrap (3.45x, q=0.0458)no
TimesFM/stacked_xf.16trend_order (raw ρ=0.520, resid ρ=0.520, n=555); n_seasonalities (raw ρ=0.518, resid ρ=0.518, n=555); ar_coeff_sum (raw ρ=0.517, resid ρ=0.517, n=374)0.0010parametric (6.68x, q=0.0000)no
TimesFM/stacked_xf.8ar_order (raw ρ=0.443, resid ρ=0.443, n=555); seasonal_period_dominant (raw ρ=-0.437, resid ρ=-0.437, n=443); ar_coeff_sum (raw ρ=0.377, resid ρ=0.377, n=374)0.0010block_bootstrap (8.27x, q=0.0000)no
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for TimesFM/stacked_xf.12 (series 76e969cfc135b283, noisy_chaotic).

Exemplar for TimesFM/stacked_xf.16 (series 9eb788e5ff96b221, parametric).

Exemplar for TimesFM/stacked_xf.8 (series f59121696d9f590e, block_bootstrap).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 2, level only: 2, no specific agreement: 8, not scorable: 37)). L6: not measured: no registered concept_transfer claim for this concept.

Why panel for 'Level lowerers & Accuracy improvers & Near-term steerers': behavioral gap on this concept's own top-firing series vs. each other model, beside its own ablation MASE effect. why: no model is clearly better or worse than this one on these series; removing it worsens this model's MASE (1.880x the null's 95th percentile)

Absent elsewhere, or just not found? reached: other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial. Relative to the layers and dictionaries this run actually analyzed, not to every layer these models have.

Accuracy improvers & Near-term steerers — model-specific, reproducible (TimesFM)

internal name: mild raises horizon_shape_near · unusually raises mase (concept 3)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
TimesFM/stacked_xf.14n_seasonalities (raw ρ=0.492, resid ρ=0.492, n=555); ar_coeff_sum (raw ρ=0.492, resid ρ=0.492, n=374); seasonal_period_dominant (raw ρ=-0.466, resid ρ=-0.466, n=443)0.0010parametric (5.94x, q=0.0000)no
TimesFM/stacked_xf.16ar_coeff_sum (raw ρ=0.498, resid ρ=0.498, n=374); n_seasonalities (raw ρ=0.473, resid ρ=0.473, n=555); trend_order (raw ρ=0.422, resid ρ=0.422, n=555)0.0010parametric (4.08x, q=0.0001)no
TimesFM/stacked_xf.8n_seasonalities (raw ρ=0.446, resid ρ=0.446, n=555); ar_order (raw ρ=0.400, resid ρ=0.400, n=555); seasonal_period_dominant (raw ρ=-0.388, resid ρ=-0.388, n=443)0.0010none survive BHno
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for TimesFM/stacked_xf.14 (series c7c2f35cd9505889, clean_low_noise).

Exemplar for TimesFM/stacked_xf.16 (series 9721b6a6f8cbd81b, parametric).

Exemplar for TimesFM/stacked_xf.8 (series e7e084c61bf0ebc4, mixture).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 1, level only: 1, no specific agreement: 9, not scorable: 34, shape only: 1)). L6: not measured: no registered concept_transfer claim for this concept.

Why panel for 'Accuracy improvers & Near-term steerers': behavioral gap on this concept's own top-firing series vs. each other model, beside its own ablation MASE effect. why: no model is clearly better or worse than this one on these series; removing it worsens this model's MASE (1.025x the null's 95th percentile)

Absent elsewhere, or just not found? reached: other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial. Relative to the layers and dictionaries this run actually analyzed, not to every layer these models have.

Level shifters — model-specific, reproducible (TimesFM)

internal name: shifts the level (concept 26)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
TimesFM/stacked_xf.18ar_coeff_sum (raw ρ=0.490, resid ρ=0.490, n=374); n_seasonalities (raw ρ=0.383, resid ρ=0.383, n=555); trend_order (raw ρ=0.376, resid ρ=0.376, n=555)0.0010clean_low_noise (4.83x, q=0.0233); parametric (2.60x, q=0.0233)no
TimesFM/stacked_xf.6noise_scale (raw ρ=0.307, resid ρ=0.307, n=555); has_intermittency (raw ρ=0.300, resid ρ=0.300, n=555); seasonal_period_dominant (raw ρ=-0.289, resid ρ=-0.289, n=443)0.0010mixture (2.99x, q=0.0000)YES -- mixture (90%)
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for TimesFM/stacked_xf.18 (series 9721b6a6f8cbd81b, parametric).

Exemplar for TimesFM/stacked_xf.6 (series 0455fcd12e1372d6, mixture).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 7, level only: 1, no specific agreement: 4, not scorable: 24)). L6: not measured: no registered concept_transfer claim for this concept.

Why panel for 'Level shifters': behavioral gap on this concept's own top-firing series vs. each other model, beside its own ablation MASE effect. why: this model is worse than 2 model(s) on these series; removing it worsens this model's MASE (1.244x the null's 95th percentile)

Absent elsewhere, or just not found? reached: other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial. Relative to the layers and dictionaries this run actually analyzed, not to every layer these models have.

Strengths vs. unique inputs
archetype TimesFM median MASE next-best median MASE coincides with a unique concept's inputs
intermittent_bursts 1.020 1.024 no
regime_switching 1.905 1.980 no
seasonal_dominant 0.328 0.337 no
trend_dominant 0.744 0.754 no

Archetypes where this model has the lowest median MASE, beside whether that archetype is also an enriched input trigger of one of this model's own unique concepts above. A 'no' here is exactly as informative as a 'yes' -- it says this model's advantage on that archetype is not traced to any of its unique concepts' own input triggers.

Chronos-2 -- 3 reproducible model-specific concept(s)
Volatility dampeners & Level raisers & Near-term steerers — model-specific, reproducible (Chronos-2)

internal name: strong raises dispersion · unusually raises horizon_shape_far (concept 5)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.5has_intermittency (raw ρ=0.374, resid ρ=0.374, n=555); n_seasonalities (raw ρ=-0.372, resid ρ=-0.372, n=555); seasonal_amplitude_max (raw ρ=-0.222, resid ρ=-0.222, n=443)0.0010block_bootstrap (8.96x, q=0.0000); anomaly_heavy (5.74x, q=0.0018)no
Chronos-2/encoder.block.8has_intermittency (raw ρ=0.539, resid ρ=0.539, n=555); n_seasonalities (raw ρ=-0.347, resid ρ=-0.347, n=555); seasonal_amplitude_max (raw ρ=-0.207, resid ρ=-0.207, n=443)0.0010block_bootstrap (13.10x, q=0.0000)YES -- block_bootstrap (95%)
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Chronos-2/encoder.block.5 (series 25933fdb1371a64c, block_bootstrap).

Exemplar for Chronos-2/encoder.block.8 (series fafdfe79ce7ac32a, block_bootstrap).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 3, level only: 1, no specific agreement: 3, not scorable: 36, shape only: 1)). L6: not measured: no registered concept_transfer claim for this concept.

Why panel for 'Volatility dampeners & Level raisers & Near-term steerers': behavioral gap on this concept's own top-firing series vs. each other model, beside its own ablation MASE effect. why: no model is clearly better or worse than this one on these series; removing it does not move this model's MASE beyond the random-direction null (0.403x)

Absent elsewhere, or just not found? reached: other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM. Relative to the layers and dictionaries this run actually analyzed, not to every layer these models have.

Volatility amplifiers & Level raisers & Long-range steerers — model-specific, reproducible (Chronos-2)

internal name: strong lowers dispersion (concept 11)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.7seasonal_period_dominant (raw ρ=-0.128, resid ρ=-0.128, n=443); seasonal_amplitude_max (raw ρ=0.070, resid ρ=0.070, n=443); n_anomalies (raw ρ=0.062, resid ρ=0.062, n=555)0.0490mixture (3.33x, q=0.0000)YES -- mixture (100%)
Chronos-2/encoder.block.8seasonal_period_dominant (raw ρ=-0.154, resid ρ=-0.154, n=443); noise_scale (raw ρ=-0.090, resid ρ=-0.090, n=555); seasonal_amplitude_max (raw ρ=0.069, resid ρ=0.069, n=443)0.0160mixture (3.33x, q=0.0000)YES -- mixture (100%)
Chronos-2/encoder.block.9seasonal_period_dominant (raw ρ=-0.214, resid ρ=-0.214, n=443); n_changepoints (raw ρ=0.092, resid ρ=0.092, n=555); seasonal_amplitude_max (raw ρ=0.092, resid ρ=0.092, n=443)0.0010mixture (3.33x, q=0.0000)YES -- mixture (100%)
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Chronos-2/encoder.block.7 (series 1aa8494bfac43c6c, mixture).

Exemplar for Chronos-2/encoder.block.8 (series e7bd1a28391e112a, mixture).

Exemplar for Chronos-2/encoder.block.9 (series e7bd1a28391e112a, mixture).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 5, level only: 2, no specific agreement: 27, not scorable: 12, same causal effect: 8, shape only: 12)). L6: not measured: no registered concept_transfer claim for this concept.

Why panel for 'Volatility amplifiers & Level raisers & Long-range steerers': behavioral gap on this concept's own top-firing series vs. each other model, beside its own ablation MASE effect. why: this model beats every other on these series, but removing the concept does not worsen its MASE; removing it does not move this model's MASE beyond the random-direction null (0.576x)

Absent elsewhere, or just not found? reached: other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM. Relative to the layers and dictionaries this run actually analyzed, not to every layer these models have.

Level raisers & Volatility amplifiers & Seasonality amplifiers — model-specific, reproducible (Chronos-2)

internal name: strong lowers level · unusually lowers seasonal (concept 13)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Chronos-2/encoder.block.7noise_scale (raw ρ=-0.371, resid ρ=-0.371, n=555); ar_order (raw ρ=-0.306, resid ρ=-0.306, n=555); n_changepoints (raw ρ=-0.304, resid ρ=-0.304, n=555)0.0010seasonal_dominant (27.02x, q=0.0000)no
Chronos-2/encoder.block.8noise_scale (raw ρ=-0.343, resid ρ=-0.343, n=555); seasonal_amplitude_max (raw ρ=0.301, resid ρ=0.301, n=443); n_changepoints (raw ρ=-0.294, resid ρ=-0.294, n=555)0.0010seasonal_dominant (23.16x, q=0.0000); clean_low_noise (4.83x, q=0.0190)no
Chronos-2/encoder.block.9n_changepoints (raw ρ=-0.353, resid ρ=-0.353, n=555); noise_scale (raw ρ=-0.319, resid ρ=-0.319, n=555); ar_order (raw ρ=-0.288, resid ρ=-0.288, n=555)0.0010seasonal_dominant (25.09x, q=0.0000)no
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Chronos-2/encoder.block.7 (series 001115a9c567f964, seasonal_dominant).

Exemplar for Chronos-2/encoder.block.8 (series 001115a9c567f964, seasonal_dominant).

Exemplar for Chronos-2/encoder.block.9 (series a0c3fa63d848d60b, seasonal_dominant).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 6, level only: 1, no specific agreement: 12, not scorable: 17)). L6: not measured: no registered concept_transfer claim for this concept.

Why panel for 'Level raisers & Volatility amplifiers & Seasonality amplifiers': behavioral gap on this concept's own top-firing series vs. each other model, beside its own ablation MASE effect. why: no model is clearly better or worse than this one on these series; removing it worsens this model's MASE (1.378x the null's 95th percentile)

Absent elsewhere, or just not found? reached: other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM. Relative to the layers and dictionaries this run actually analyzed, not to every layer these models have.

Strengths vs. unique inputs
archetype Chronos-2 median MASE next-best median MASE coincides with a unique concept's inputs
amplitude_modulated 1.817 1.884 no
anomaly_heavy 0.687 0.721 yes
ar_colored_noise 0.751 0.765 no
clean_low_noise 2.031 2.240 no
multi_seasonal_complex 0.931 1.063 no
nonsinusoidal_seasonal 2.743 3.033 no
random_walk_drift 2.068 2.258 no

Archetypes where this model has the lowest median MASE, beside whether that archetype is also an enriched input trigger of one of this model's own unique concepts above. A 'no' here is exactly as informative as a 'yes' -- it says this model's advantage on that archetype is not traced to any of its unique concepts' own input triggers.

Sundial -- 4 reproducible model-specific concept(s)
Volatility dampeners & Smoothing features — model-specific, reproducible (Sundial)

internal name: strong raises dispersion · unusually raises spectral_centroid (concept 19)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Sundial/model.layers.10n_seasonalities (raw ρ=-0.621, resid ρ=-0.621, n=555); seasonal_amplitude_max (raw ρ=-0.464, resid ρ=-0.464, n=443); has_intermittency (raw ρ=0.338, resid ρ=0.338, n=555)0.0010block_bootstrap (11.03x, q=0.0000)YES -- block_bootstrap (80%)
Sundial/model.layers.4has_intermittency (raw ρ=0.318, resid ρ=0.318, n=555); n_seasonalities (raw ρ=-0.226, resid ρ=-0.226, n=555); seasonal_amplitude_max (raw ρ=-0.187, resid ρ=-0.187, n=443)0.0010block_bootstrap (11.72x, q=0.0000)YES -- block_bootstrap (85%)
Sundial/model.layers.6has_intermittency (raw ρ=0.340, resid ρ=0.340, n=555); n_seasonalities (raw ρ=-0.243, resid ρ=-0.243, n=555); n_anomalies (raw ρ=0.187, resid ρ=0.187, n=555)0.0010block_bootstrap (11.72x, q=0.0000)YES -- block_bootstrap (85%)
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Sundial/model.layers.10 (series c87cdfe6df1cf96f, block_bootstrap).

Exemplar for Sundial/model.layers.4 (series 9be4b438cd59dddf, block_bootstrap).

Exemplar for Sundial/model.layers.6 (series 9be4b438cd59dddf, block_bootstrap).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM). L5 same causal effect on the same inputs: partial (neither same-effect nor acts-differently on shared inputs (no specific agreement: 2, not scorable: 56, shape only: 2)). L6: not measured: no registered concept_transfer claim for this concept.

Why panel for 'Volatility dampeners & Smoothing features': behavioral gap on this concept's own top-firing series vs. each other model, beside its own ablation MASE effect. why: this model is worse than 3 model(s) on these series; removing it does not move this model's MASE beyond the random-direction null (0.285x)

Absent elsewhere, or just not found? reached: other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM. Relative to the layers and dictionaries this run actually analyzed, not to every layer these models have.

Level lowerers & Accuracy improvers & Smoothing features — model-specific, reproducible (Sundial)

internal name: strong raises horizon_shape_far · unusually raises mase (concept 21)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Sundial/model.layers.4n_seasonalities (raw ρ=0.619, resid ρ=0.619, n=555); ar_coeff_sum (raw ρ=0.617, resid ρ=0.617, n=374); seasonal_period_dominant (raw ρ=-0.601, resid ρ=-0.601, n=443)0.0010mixture (2.16x, q=0.0035)no
Sundial/model.layers.7ar_coeff_sum (raw ρ=0.410, resid ρ=0.410, n=374); n_changepoints (raw ρ=0.341, resid ρ=0.341, n=555); trend_order (raw ρ=0.337, resid ρ=0.337, n=555)0.0010mixture (3.33x, q=0.0000)YES -- mixture (100%)
Sundial/model.layers.9ar_coeff_sum (raw ρ=0.072, resid ρ=0.072, n=374); seasonal_amplitude_max (raw ρ=0.061, resid ρ=0.061, n=443); trend_order (raw ρ=0.039, resid ρ=0.039, n=555)0.7343mixture (3.33x, q=0.0000)YES -- mixture (100%)
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Sundial/model.layers.4 (series a6cc538c81861ce3, mixture).

Exemplar for Sundial/model.layers.7 (series 5483841f5c4c4f0e, mixture).

Exemplar for Sundial/model.layers.9 (series 5483841f5c4c4f0e, mixture).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 1, level only: 7, no specific agreement: 27, not scorable: 23, shape only: 1)). L6: not measured: no registered concept_transfer claim for this concept.

Why panel for 'Level lowerers & Accuracy improvers & Smoothing features': behavioral gap on this concept's own top-firing series vs. each other model, beside its own ablation MASE effect. why: this model is worse than 1 model(s) on these series; removing it does not move this model's MASE beyond the random-direction null (0.672x)

Absent elsewhere, or just not found? reached: other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM. Relative to the layers and dictionaries this run actually analyzed, not to every layer these models have.

Long-range steerers — model-specific, reproducible (Sundial)

internal name: strong raises horizon_shape_far · unusually raises horizon_shape_near (concept 22)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Sundial/model.layers.4ar_coeff_sum (raw ρ=0.139, resid ρ=0.139, n=374); trend_order (raw ρ=0.133, resid ρ=0.133, n=555); n_seasonalities (raw ρ=0.131, resid ρ=0.131, n=555)0.0260mixture (2.50x, q=0.0001)no
Sundial/model.layers.5n_seasonalities (raw ρ=-0.567, resid ρ=-0.567, n=555); has_intermittency (raw ρ=0.445, resid ρ=0.445, n=555); seasonal_amplitude_max (raw ρ=-0.423, resid ρ=-0.423, n=443)0.0010intermittent_bursts (13.16x, q=0.0000); ar_colored_noise (8.39x, q=0.0000)no
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Sundial/model.layers.4 (series 17329d907c46fd70, mixture).

Exemplar for Sundial/model.layers.5 (series a6c63d16b1997799, sequential_par).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM). L5 same causal effect on the same inputs: partial (neither same-effect nor acts-differently on shared inputs (level only: 1, no specific agreement: 4, not scorable: 27)). L6: not measured: no registered concept_transfer claim for this concept.

Why panel for 'Long-range steerers': behavioral gap on this concept's own top-firing series vs. each other model, beside its own ablation MASE effect. why: this model is worse than 2 model(s) on these series; removing it improves this model's MASE (0.068x the null's 95th percentile)

Absent elsewhere, or just not found? reached: other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM. Relative to the layers and dictionaries this run actually analyzed, not to every layer these models have.

Volatility dampeners & Seasonality dampeners & Accuracy degraders — model-specific, reproducible (Sundial)

internal name: strong raises dispersion · unusually raises seasonal (concept 25)

Each part's mean 9-channel ablation effect, in multiples of its own random-direction null (dotted lines at ±1).

Input profile per part
PartTop structural field(s)p (max |ρ|, search-corrected)Enriched labels (BH q≤0.05)Provenance-driven?
Sundial/model.layers.7n_changepoints (raw ρ=-0.215, resid ρ=-0.215, n=555); n_seasonalities (raw ρ=0.194, resid ρ=0.194, n=555); has_heteroskedastic (raw ρ=0.192, resid ρ=0.192, n=555)0.0010seasonal_dominant (23.16x, q=0.0000); anomaly_heavy (4.60x, q=0.0271)no
Sundial/model.layers.8n_changepoints (raw ρ=-0.287, resid ρ=-0.287, n=555); n_seasonalities (raw ρ=0.266, resid ρ=0.266, n=555); ar_order (raw ρ=-0.226, resid ρ=-0.226, n=555)0.0010seasonal_dominant (21.23x, q=0.0000); anomaly_heavy (4.60x, q=0.0271)no
Sundial/model.layers.9n_changepoints (raw ρ=-0.277, resid ρ=-0.277, n=555); ar_order (raw ρ=-0.241, resid ρ=-0.241, n=555); has_heteroskedastic (raw ρ=0.200, resid ρ=0.200, n=555)0.0010seasonal_dominant (23.16x, q=0.0000); anomaly_heavy (5.74x, q=0.0029)no
Input agreement between parts

No cross-model part pair to compare (single-model concept, or no scoreable part).

Exemplar for Sundial/model.layers.7 (series a0c3fa63d848d60b, seasonal_dominant).

Exemplar for Sundial/model.layers.8 (series cd06d6d060abfecf, seasonal_dominant).

Exemplar for Sundial/model.layers.9 (series 653ee2385d9dc03c, seasonal_dominant).

How sure: L3 reproducible: reached (the concept's grouping survives an independent replicate SAE at the same target(s)). L4 other dictionaries select the same inputs: reached (other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM). L5 same causal effect on the same inputs: not reached (acts differently on at least one shared-input test (acts differently: 18, no specific agreement: 11, not scorable: 20, shape only: 1)). L6: not measured: no registered concept_transfer claim for this concept.

Why panel for 'Volatility dampeners & Seasonality dampeners & Accuracy degraders': behavioral gap on this concept's own top-firing series vs. each other model, beside its own ablation MASE effect. why: this model is worse than 2 model(s) on these series; removing it improves this model's MASE (2.873x the null's 95th percentile)

Absent elsewhere, or just not found? reached: other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM. Relative to the layers and dictionaries this run actually analyzed, not to every layer these models have.

Strengths vs. unique inputs
archetype Sundial median MASE next-best median MASE coincides with a unique concept's inputs
noisy_chaotic 0.827 0.903 no

Archetypes where this model has the lowest median MASE, beside whether that archetype is also an enriched input trigger of one of this model's own unique concepts above. A 'no' here is exactly as informative as a 'yes' -- it says this model's advantage on that archetype is not traced to any of its unique concepts' own input triggers.

Chronos-Bolt -- 0 model-specific concepts (reproducible or not yet measured)
Statistical detail

Verdict for every tight concept

Conceptn modelssame forecast effectsame inputsreproducibleother dictionaries select the same inputssame causal effect on the same inputsconfirmed on private dataVerdictHighest rung
strong raises horizon_shape_far · unusually raises spectral_centroid2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
reached
every model in this concept agrees, pairwise, on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM
reached
same causal effect on shared inputs (level only: 4, no specific agreement: 27, not scorable: 24, same causal effect: 1, shape only: 5)
reached
confirmed on private data (4/4 registered claim(s); by mode -- search: 4/4)
shared: same effect, same inputs, reproducibleL3
strong raises mase2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
reached
every model in this concept agrees, pairwise, on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM
reached
same causal effect on shared inputs (level only: 3, no specific agreement: 6, not scorable: 48, same causal effect: 1)
not measured
not measured: no registered concept_transfer claim for this concept
shared: same effect, same inputs, reproducibleL3
mild raises level1reached
1 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not applicable
only one model holds this concept
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial
not reached
acts differently on at least one shared-input test (acts differently: 2, level only: 2, no specific agreement: 8, not scorable: 37)
not measured
not measured: no registered concept_transfer claim for this concept
model-specific, reproducibleL3
mild raises horizon_shape_near · unusually raises mase1reached
1 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not applicable
only one model holds this concept
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial
not reached
acts differently on at least one shared-input test (acts differently: 1, level only: 1, no specific agreement: 9, not scorable: 34, shape only: 1)
not measured
not measured: no registered concept_transfer claim for this concept
model-specific, reproducibleL3
strong raises dispersion · unusually raises horizon_shape_far1reached
1 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not applicable
only one model holds this concept
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 3, level only: 1, no specific agreement: 3, not scorable: 36, shape only: 1)
not measured
not measured: no registered concept_transfer claim for this concept
model-specific, reproducibleL3
strong lowers dispersion1reached
1 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not applicable
only one model holds this concept
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 5, level only: 2, no specific agreement: 27, not scorable: 12, same causal effect: 8, shape only: 12)
not measured
not measured: no registered concept_transfer claim for this concept
model-specific, reproducibleL3
strong lowers level · unusually lowers seasonal1reached
1 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not applicable
only one model holds this concept
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 6, level only: 1, no specific agreement: 12, not scorable: 17)
not measured
not measured: no registered concept_transfer claim for this concept
model-specific, reproducibleL3
strong raises dispersion · unusually raises spectral_centroid1reached
1 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not applicable
only one model holds this concept
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM
partial
neither same-effect nor acts-differently on shared inputs (no specific agreement: 2, not scorable: 56, shape only: 2)
not measured
not measured: no registered concept_transfer claim for this concept
model-specific, reproducibleL3
strong raises horizon_shape_far · unusually raises mase1reached
1 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not applicable
only one model holds this concept
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 1, level only: 7, no specific agreement: 27, not scorable: 23, shape only: 1)
not measured
not measured: no registered concept_transfer claim for this concept
model-specific, reproducibleL3
strong raises horizon_shape_far · unusually raises horizon_shape_near1reached
1 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not applicable
only one model holds this concept
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM
partial
neither same-effect nor acts-differently on shared inputs (level only: 1, no specific agreement: 4, not scorable: 27)
not measured
not measured: no registered concept_transfer claim for this concept
model-specific, reproducibleL3
strong raises dispersion · unusually raises seasonal1reached
1 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not applicable
only one model holds this concept
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 18, no specific agreement: 11, not scorable: 20, shape only: 1)
not measured
not measured: no registered concept_transfer claim for this concept
model-specific, reproducibleL3
shifts the level1reached
1 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not applicable
only one model holds this concept
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial
not reached
acts differently on at least one shared-input test (acts differently: 7, level only: 1, no specific agreement: 4, not scorable: 24)
not measured
not measured: no registered concept_transfer claim for this concept
model-specific, reproducibleL3
strong raises level · unusually lowers trend3reached
3 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
partial
some but not every cross-model pair in this concept agrees on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 2, level only: 1, no specific agreement: 9, not scorable: 32)
not measured
not measured: no registered concept_transfer claim for this concept
partially sharedL2
strong lowers level · unusually raises mase2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM
partial
neither same-effect nor acts-differently on shared inputs (level only: 3, no specific agreement: 7, not scorable: 66, shape only: 1)
reached
confirmed on private data (16/16 registered claim(s); by mode -- search: 16/16)
shared effect, different inputs (convergent)L1
strong raises trend2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
not reached
the concept's grouping did NOT survive an independent replicate SAE
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM
partial
neither same-effect nor acts-differently on shared inputs (level only: 2, no specific agreement: 4, not scorable: 59, shape only: 1)
not measured
not measured: no registered concept_transfer claim for this concept
not reproducible across SAE seedsL1
strong raises horizon_shape_near · unusually lowers mase2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 2, no specific agreement: 9, not scorable: 9)
not measured
not measured: no registered concept_transfer claim for this concept
shared effect, different inputs (convergent)L1
strong raises horizon_shape_near · unusually lowers level · unusually raises dispersion2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM
partial
neither same-effect nor acts-differently on shared inputs (level only: 2, no specific agreement: 16, not scorable: 23)
not measured
not measured: no registered concept_transfer claim for this concept
shared effect, different inputs (convergent)L1
strong lowers level · unusually lowers spectral_centroid2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
not reached
the concept's grouping did NOT survive an independent replicate SAE
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM
partial
neither same-effect nor acts-differently on shared inputs (level only: 1, no specific agreement: 3, not scorable: 17, shape only: 1)
not measured
not measured: no registered concept_transfer claim for this concept
not reproducible across SAE seedsL1
strong raises level · unusually raises dispersion2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM
partial
neither same-effect nor acts-differently on shared inputs (no specific agreement: 7, not scorable: 29)
not measured
not measured: no registered concept_transfer claim for this concept
shared effect, different inputs (convergent)L1
dominant raises horizon_shape_near2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
not reached
the concept's grouping did NOT survive an independent replicate SAE
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM
partial
neither same-effect nor acts-differently on shared inputs (no specific agreement: 2, not scorable: 15)
not measured
not measured: no registered concept_transfer claim for this concept
not reproducible across SAE seedsL1
strong lowers mase2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 1, level only: 1, no specific agreement: 6, not scorable: 13, same causal effect: 1, shape only: 1)
not measured
not measured: no registered concept_transfer claim for this concept
shared effect, different inputs (convergent)L1
strong raises horizon_shape_near · unusually raises level2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 4, level only: 2, no specific agreement: 15, not scorable: 26, shape only: 1)
not measured
not measured: no registered concept_transfer claim for this concept
shared effect, different inputs (convergent)L1
strong raises seasonal2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 4, level only: 1, no specific agreement: 13, not scorable: 37, shape only: 1)
not measured
not measured: no registered concept_transfer claim for this concept
shared effect, different inputs (convergent)L1
mild raises dispersion2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 6, level only: 2, no specific agreement: 16, not scorable: 34)
not measured
not measured: no registered concept_transfer claim for this concept
shared effect, different inputs (convergent)L1
mild raises horizon_shape_near · unusually raises horizon_shape_far2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
reached
the concept's grouping survives an independent replicate SAE at the same target(s)
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM
partial
neither same-effect nor acts-differently on shared inputs (level only: 9, no specific agreement: 11, not scorable: 36)
not measured
not measured: no registered concept_transfer claim for this concept
shared effect, different inputs (convergent)L1
mild raises horizon_shape_near · unusually raises dispersion2reached
2 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not reached
no cross-model pair in this concept agrees on which series drive it
not reached
the concept's grouping did NOT survive an independent replicate SAE
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-2, Chronos-Bolt, Sundial, TimesFM
partial
neither same-effect nor acts-differently on shared inputs (level only: 1, no specific agreement: 2, not scorable: 32)
not measured
not measured: no registered concept_transfer claim for this concept
not reproducible across SAE seedsL1
strong raises horizon_shape_near · unusually lowers level · unusually raises trend1reached
1 model(s) share this concept's causal effect profile (atlas membership, within-model causal)
not applicable
only one model holds this concept
not reached
the concept's grouping did NOT survive an independent replicate SAE
reached
other model(s)' own dictionaries also select this concept's inputs under FDR: Chronos-Bolt, Sundial, TimesFM
not reached
acts differently on at least one shared-input test (acts differently: 2, level only: 4, no specific agreement: 4, not scorable: 17)
not measured
not measured: no registered concept_transfer claim for this concept
not reproducible across SAE seedsL1

verdict = f(sharing_class, stable): sharing_class == 'shared (same effect, same inputs)' and stable is True -> 'shared: same effect, same inputs, reproducible'; that sharing_class with stable is False -> 'not reproducible across SAE seeds'; that sharing_class with stable unmeasured -> 'not measured: L3 reproducibility <reason>'; sharing_class == 'convergent (same effect, different inputs)' -> 'shared effect, different inputs (convergent)' unless stable is False; sharing_class == 'partially shared' -> 'partially shared' unless stable is False; either of those with stable is False -> 'not reproducible across SAE seeds'; sharing_class == 'single-model' and stable is True -> 'model-specific, reproducible'; that sharing_class with stable is False -> 'not reproducible across SAE seeds'; that sharing_class with stable unmeasured -> 'not measured: L3 reproducibility <reason>'.

Shared-input causal agreement, per model pair

Cross-model causal agreement, per ordered model pair, on the SAME shared series -- every FDR-surviving reciprocal atlas-transfer test's verdict.

What does this mean?

How to read it
Each cell counts (concept, source target, destination target) tests scored 'source→destination'. A test is scored only when both sides' ablation clears its own within-model null on the shared series; otherwise it is 'not scorable'.

Limitations
Evidence class: causal WITHIN each model (each side's ablation must clear its own random-direction null on the shared series to be scorable; the agreement statistics must beat the 95th percentile of both models' activation-matched random-feature-set floors, and 'acts differently' requires falling below both floors' 5th percentile), compared ACROSS models only on the same corpus inputs -- never a transplant of one model's activation into another (invariant 5). A pair's counts are not symmetric: source and destination are the ordered roles the transfer test itself assigned.

Model pair (source→destination)same causal effectlevel onlyshape onlyacts differentlyno specific agreementnot scorableTotal
Chronos-2->Chronos-Bolt131395067
Chronos-2->Sundial3631332133190
Chronos-2->TimesFM661333393154
Chronos-Bolt->Chronos-2110031823
Chronos-Bolt->Sundial021142735
Chronos-Bolt->TimesFM0001101425
Sundial->Chronos-2044643102159
Sundial->Chronos-Bolt0305293875
Sundial->TimesFM01352165115219
TimesFM->Chronos-20712137598
TimesFM->Chronos-Bolt040323544
TimesFM->Sundial031621103134

Transfer, FDR-controlled

Cross-model transfer — significance and FDR control
Per-target concept transfer, by ordered model pair
source model destination model tests uncorrected reciprocal FDR reciprocal
Chronos-2 Chronos-Bolt 12 12 12
Chronos-2 Sundial 36 34 34
Chronos-2 TimesFM 40 34 33
Chronos-Bolt Chronos-2 12 12 12
Chronos-Bolt Sundial 18 18 18
Chronos-Bolt TimesFM 20 20 20
Sundial Chronos-2 18 18 18
Sundial Chronos-Bolt 9 9 8
Sundial TimesFM 30 26 26

For each ordered (source, destination) model pair, how many per-target concept transfer tests ran, how many cleared the raw p95 null in both directions ("uncorrected reciprocal"), and how many still clear once each leg is Benjamini-Hochberg corrected within its own (pair, leg) family at q=0.05 ("FDR reciprocal").

What does this mean?

How to read it
A test's exact permutation p is floored at 1/201. p_method='exact' leaves floor-hitting tests AT that floor: BH then passes them only as a batch, so a lone strong transfer in a large family can be missed (see the multiplicity ledger's 'min. batch to survive' column).

Limitations
FDR reciprocal is always <= uncorrected reciprocal: BH can only remove survivors relative to the raw p95 comparison, never add them. Read this table beside the multiplicity ledger, which records each (pair, leg) as its own correction family rather than pooling them.

Concept-atlas transfer, by ordered model pair
source model destination model tests uncorrected reciprocal FDR reciprocal
Chronos-2 Chronos-Bolt 81 68 67
Chronos-2 Sundial 243 193 190
Chronos-2 TimesFM 270 166 154
Chronos-Bolt Chronos-2 28 23 23
Chronos-Bolt Sundial 36 35 35
Chronos-Bolt TimesFM 40 25 25
Sundial Chronos-2 196 162 159
Sundial Chronos-Bolt 84 75 75
Sundial TimesFM 280 224 219
TimesFM Chronos-2 119 100 98
TimesFM Chronos-Bolt 51 45 44
TimesFM Sundial 153 135 134

The same transfer test, over the cross-model ATLAS's own concepts instead of each target's own per-target clusters: for every atlas concept's part at one model, does another model's dictionary select the same top-firing series.

What does this mean?

How to read it
Built from the identical draw-building and scoring path as the per-target table above (`sae/transfer.py::transfer_one`), just over a different source unit -- an atlas concept's part at one target, rather than that target's own concept.

Limitations
A concept with only one model's worth of members contributes no row here at all (there is no other model to test against); read `sae/atlas_transfer.json::concept_summary` for which concepts were skipped for that reason.

Effect space vs. input space
cell count
spans effect space, transfers (input space) 35
spans effect space, does not transfer 1
does not span effect space, transfers 92
does not span effect space, does not transfer 4

For every (atlas concept, ordered model pair) cell that was actually tested: does the concept span both models in EFFECT space (both hold >=1 member of the same causal-profile concept), and does it also transfer in INPUT space (FDR-reciprocal at some tested target pair)?

What does this mean?

How to read it
Of the 36 cell(s) that span both models in effect space, 35 also transfer in input space and 1 do not -- a concept's shared causal profile does not by itself guarantee its members were selected by similar inputs.

Limitations
Every cell here was TESTED; a (concept, pair) combination with no persisted features at one of the two models contributes to neither axis rather than counting as a measured "No" -- so these four counts do not sum to every concept times every pair, only to every pair actually examined.

Family structure null (real vs. permuted control)

statistic value null mean null p95 p p (more segregated)
n_families (real) 9.000 14.330 16.000 1.000 NaN
frac_assigned (real) 0.983 0.996 1.000 0.985 NaN
final-partition silhouette (real) 0.283 0.375 NaN 1.000 NaN
n_multi_model (real) 9.000 9.000 NaN 1.000 NaN
mean_purity (real) 0.492 0.440 NaN NaN 0.020

descriptive, not a significance test of separation: the final-partition silhouette is flat across the whole grid on every run measured so far (~0.31-0.34), so a real silhouette near or below the null mean does not mean the families are arbitrary -- p_n_families/p_frac_assigned are the tests that carry the 'is there more structure than chance' claim; p_silhouette only says whether the CHOSEN (coarsest, tolerance-matched) cut happens to also be tighter than chance, which it need not be by construction

Misfits — members whose own fingerprint diverges from their concept

28 target(s) checked; 5 misfit(s) found.

Chronos-2: 3 misfit(s)

Chronos-2/encoder.block.6 concept 0, feature 3987: cosine to centroid +0.325 vs concept's own mean member-to-centroid cosine +0.663 (threshold +0.363, centroid_cosine_mean minus a gap of 0.3).
own fingerprint: mase +1.33x null
concept's fingerprint: horizon_shape_far +1.79x null; horizon_shape_near +1.40x null

Chronos-2/encoder.block.8 concept 1, feature 4005: cosine to centroid +0.122 vs concept's own mean member-to-centroid cosine +0.617 (threshold +0.317, centroid_cosine_mean minus a gap of 0.3).
own fingerprint: trend +2.18x null; dispersion -1.98x null; horizon_shape_far +1.73x null; mase -1.16x null; level +1.13x null
concept's fingerprint: horizon_shape_far +1.63x null; horizon_shape_near +1.39x null

Chronos-2/encoder.block.8 concept 1, feature 5700: cosine to centroid +0.262 vs concept's own mean member-to-centroid cosine +0.617 (threshold +0.317, centroid_cosine_mean minus a gap of 0.3).
own fingerprint: trend +1.40x null
concept's fingerprint: horizon_shape_far +1.63x null; horizon_shape_near +1.39x null

Chronos-Bolt: 1 misfit(s)

Chronos-Bolt/encoder.block.4 concept 0, feature 4479: cosine to centroid +0.282 vs concept's own mean member-to-centroid cosine +0.788 (threshold +0.488, centroid_cosine_mean minus a gap of 0.3).
own fingerprint: level -2.32x null; horizon_shape_far +2.19x null; horizon_shape_near +1.86x null; dispersion -1.58x null; mase +1.29x null
concept's fingerprint: seasonal +3.27x null; dispersion +2.36x null; horizon_shape_far +1.80x null; horizon_shape_near +1.73x null; trend +1.06x null

Sundial: 1 misfit(s)

Sundial/model.layers.5 concept 1, feature 3355: cosine to centroid +0.128 vs concept's own mean member-to-centroid cosine +0.609 (threshold +0.309, centroid_cosine_mean minus a gap of 0.3).
own fingerprint: seasonal +1.05x null
concept's fingerprint: no channel worth naming

Earlier concept units (superseded by the families above)

Concept universality

Concept universality
bucket n_concepts
universal 9
partial 0
model-specific 0

For each source model's concepts, the fraction whose top-firing series are grouped the same way by the destination model's own SAE dictionary -- reciprocally, in both directions.

What does this heatmap mean?

How to read it
A cell near 1.0 means that source's concepts transfer to the destination almost universally; a low cell means most concepts are specific to the source. The diagonal is blank -- a model's transfer rate against itself is not a comparison.

Limitations
Transfer is a statistical (AUC-based) test against a matched-stratum null (k_top_series=20, n_null_draws=200, stratified by archetype|family), not a causal claim -- it says the two dictionaries GROUP series alike, not that either model's forecast depends on the other's feature.

Per-target concepts (earlier unit; families above supersede it)
Concept cards — top 9 of 9 by interest

interest = 0.50×causal_strength + 0.30×transfer_informative + 0.20×(members clearing any channel / members). Grouped by universality bucket, deepest interest first within each.

universal (9)

These 3 features move the near horizon of the forecast (4.42 times the random-direction null), and also move the far horizon of the forecast, decrease its overall level and increase forecast error and its spread. (composed from the measurements)

strong raises horizon_shape_near · unusually raises mase — Chronos-2/encoder.block.6, concept 1

chart shows 1 representative member (feature 4571) of this concept's 3; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.00659 (4.6% of context sd)
with · without · Δ 0.0148 (8.1% of context sd)
with · without · Δ 0.00919 (5.1% of context sd)
the numbers behind this

3 member(s), 3 clearing at least one channel's own null; interest 2.53.
profile: horizon_shape_near +4.42x null (3 members); horizon_shape_far +4.28x null (3 members); level -3.21x null (3 members); mase +2.82x null (3 members); dispersion +2.04x null (2 members)
transfer: reciprocally reaches Chronos-Bolt, Sundial, TimesFM

These 8 features increase the forecast's seasonal magnitude (3.27 times the random-direction null), and also increase its spread and move the far horizon of the forecast, strongest on series with a smaller dominant seasonal period (rho 0.01, n 2). (composed from the measurements)

strong raises seasonal — Chronos-Bolt/encoder.block.4, concept 0

chart shows 1 representative member (feature 4679) of this concept's 8; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.158 (4.9% of context sd)
with · without · Δ 0.23 (5.1% of context sd)
with · without · Δ 0.364 (7.4% of context sd)
the numbers behind this

8 member(s), 8 clearing at least one channel's own null; interest 1.95.
profile: seasonal +3.27x null (5 members); dispersion +2.36x null (8 members); horizon_shape_far +1.80x null (8 members); horizon_shape_near +1.73x null (7 members); trend +1.06x null (8 members)
transfer: reciprocally reaches Chronos-2, Sundial, TimesFM

These 4 features move the far horizon of the forecast (3.20 times the random-direction null), and also move the near horizon of the forecast, increase its trend slope and decrease its spread and its seasonal magnitude. (composed from the measurements)

strong raises horizon_shape_far · unusually raises trend — Chronos-2/encoder.block.8, concept 0

chart shows 1 representative member (feature 2884) of this concept's 4; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.0195 (4.8% of context sd)
with · without · Δ 0.0156 (4.8% of context sd)
with · without · Δ 0.0273 (5.2% of context sd)
the numbers behind this

4 member(s), 4 clearing at least one channel's own null; interest 1.92.
profile: horizon_shape_far +3.20x null (4 members); horizon_shape_near +3.10x null (3 members); trend +2.31x null (3 members); dispersion -1.52x null (4 members); seasonal -1.21x null (2 members)
transfer: reciprocally reaches Chronos-Bolt, Sundial, TimesFM

These 3 features move the far horizon of the forecast (3.04 times the random-direction null), and also move the near horizon of the forecast, increase its overall level and decrease its spectral centroid. (composed from the measurements)

strong raises horizon_shape_far · unusually lowers spectral_centroid — Chronos-Bolt/encoder.block.4, concept 1

chart shows 1 representative member (feature 1691) of this concept's 3; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.82 (20% of context sd)
with · without · Δ 0.594 (19% of context sd)
with · without · Δ 0.547 (16% of context sd)
the numbers behind this

3 member(s), 3 clearing at least one channel's own null; interest 1.84.
profile: horizon_shape_far +3.04x null (3 members); horizon_shape_near +2.88x null (3 members); level +1.99x null (3 members); spectral_centroid -1.13x null (3 members)
transfer: reciprocally reaches Chronos-2, Sundial, TimesFM

These 3 features move the near horizon of the forecast (2.29 times the random-direction null), and also move the far horizon of the forecast. (composed from the measurements)

strong raises horizon_shape_near · unusually raises horizon_shape_far — Sundial/model.layers.5, concept 2

chart shows 1 representative member (feature 2033) of this concept's 3; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.533 (39% of context sd)
with · without · Δ 0.226 (32% of context sd)
with · without · Δ 0.316 (40% of context sd)
the numbers behind this

3 member(s), 3 clearing at least one channel's own null; interest 1.46.
profile: horizon_shape_near +2.29x null (3 members); horizon_shape_far +1.53x null (3 members)
transfer: reciprocally reaches Chronos-2, Chronos-Bolt, TimesFM

These 11 features move the far horizon of the forecast (1.79 times the random-direction null), and also move the near horizon of the forecast. (composed from the measurements)

mild raises horizon_shape_far · unusually raises horizon_shape_near — Chronos-2/encoder.block.6, concept 0

chart shows 1 representative member (feature 1714) of this concept's 11; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.0198 (0.61% of context sd)
with · without · Δ 0.0462 (1% of context sd)
with · without · Δ 0.0573 (1% of context sd)
the numbers behind this

11 member(s), 11 clearing at least one channel's own null; interest 1.21.
profile: horizon_shape_far +1.79x null (8 members); horizon_shape_near +1.40x null (6 members)
transfer: reciprocally reaches Chronos-Bolt, Sundial, TimesFM

These 15 features move the far horizon of the forecast (1.63 times the random-direction null), and also move the near horizon of the forecast, strongest on series with a smaller number of seasonal components (rho 0.22, n 3). (composed from the measurements)

mild raises horizon_shape_far · unusually raises horizon_shape_near — Chronos-2/encoder.block.8, concept 1

chart shows 1 representative member (feature 3327) of this concept's 15; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.194 (4% of context sd)
with · without · Δ 0.0913 (1.6% of context sd)
with · without · Δ 0.295 (3.5% of context sd)
the numbers behind this

15 member(s), 15 clearing at least one channel's own null; interest 1.14.
profile: horizon_shape_far +1.63x null (13 members); horizon_shape_near +1.39x null (9 members)
transfer: reciprocally reaches Chronos-Bolt, Sundial, TimesFM

These 4 features move the far horizon of the forecast (1.18 times the random-direction null), and also move the near horizon of the forecast. (composed from the measurements)

mild raises horizon_shape_far · unusually raises horizon_shape_near — Sundial/model.layers.5, concept 0

chart shows 1 representative member (feature 5918) of this concept's 4; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.121 (17% of context sd)
with · without · Δ 0.199 (26% of context sd)
with · without · Δ 0.108 (19% of context sd)
the numbers behind this

4 member(s), 4 clearing at least one channel's own null; interest 0.91.
profile: horizon_shape_far +1.18x null (3 members); horizon_shape_near +1.03x null (2 members)
transfer: reciprocally reaches Chronos-2, Chronos-Bolt, TimesFM

These 5 features were not tested for an effect on the forecast and have no structural correlate. (composed from the measurements)

moves horizon_shape_near — Sundial/model.layers.5, concept 1

chart shows 1 representative member (feature 3355) of this concept's 5; the profile above is the AVERAGE over all of them.

n=8
with · without · Δ 0.00336 (0.64% of context sd)
with · without · Δ 0.00683 (1.2% of context sd)
with · without · Δ 0.0874 (8.4% of context sd)
the numbers behind this

5 member(s), 5 clearing at least one channel's own null; interest 0.32.
profile: no channel cleared 1.0 null units
transfer: reciprocally reaches Chronos-2, Chronos-Bolt, TimesFM

Causally interesting individual features — top 15 of 293

Every SAE feature across this run's targets whose own ablation battery cleared at least one channel's null — independent of whether it landed in a concept above — ranked by the average of two percentile ranks: how far it moved the mase channel in null units, and its overall causal fingerprint magnitude across all nine channels (sae/matching.py::causal_fingerprint). This is the per-feature view the concept cards cannot give: a target whose causally-alive features never clustered into a group of three or more still has its strongest individual features shown here.

Sundial/model.layers.7, feature 4993 — not part of any formed concept

n=1
with · without · Δ 0.225 (64% of context sd)

fires on only 1 series in this sample — every number in this row is an n-of-1.

the numbers behind this

overall fingerprint magnitude 62.98, 7 of 9 channels clearing; mase channel +29.02x null.
top channels: horizon_shape_far +32.77x null; level -31.68x null; mase +29.02x null; horizon_shape_near +25.64x null; trend -14.02x null; spectral_centroid -13.81x null; dispersion +1.65x null

Sundial/model.layers.10, feature 5217 — not part of any formed concept

n=1
with · without · Δ 0.108 (10% of context sd)

fires on only 1 series in this sample — every number in this row is an n-of-1.

the numbers behind this

overall fingerprint magnitude 52.03, 8 of 9 channels clearing; mase channel -26.07x null.
top channels: mase -26.07x null; level +25.08x null; horizon_shape_near +24.14x null; spectral_centroid -20.54x null; seasonal +10.98x null; horizon_shape_far +10.17x null; dispersion +10.14x null; trend -8.17x null

Sundial/model.layers.6, feature 461 — not part of any formed concept

n=1
with · without · Δ 0.0167 (5.3% of context sd)

fires on only 1 series in this sample — every number in this row is an n-of-1.

the numbers behind this

overall fingerprint magnitude 32.29, 5 of 9 channels clearing; mase channel -16.21x null.
top channels: horizon_shape_near +17.01x null; mase -16.21x null; level +15.44x null; horizon_shape_far +15.38x null; spectral_centroid +3.76x null

Sundial/model.layers.10, feature 4993 — not part of any formed concept

n=1
with · without · Δ 0.197 (29% of context sd)

fires on only 1 series in this sample — every number in this row is an n-of-1.

the numbers behind this

overall fingerprint magnitude 39.57, 7 of 9 channels clearing; mase channel +14.46x null.
top channels: trend -30.72x null; horizon_shape_near +15.92x null; mase +14.46x null; horizon_shape_far +11.77x null; spectral_centroid +3.15x null; dispersion -2.45x null; level +2.28x null

Chronos-2/encoder.block.7, feature 5215 — not part of any formed concept

n=1
with · without · Δ 0.0312 (4.2% of context sd)

fires on only 1 series in this sample — every number in this row is an n-of-1.

the numbers behind this

overall fingerprint magnitude 46.61, 8 of 9 channels clearing; mase channel +12.00x null.
top channels: trend -32.60x null; dispersion +22.20x null; horizon_shape_far +16.00x null; level -12.38x null; mase +12.00x null; horizon_shape_near +5.65x null; spectral_centroid +4.75x null; flatness -3.00x null

Sundial/model.layers.10, feature 3132 — not part of any formed concept

n=1
with · without · Δ 0.0758 (7.3% of context sd)

fires on only 1 series in this sample — every number in this row is an n-of-1.

the numbers behind this

overall fingerprint magnitude 29.67, 7 of 9 channels clearing; mase channel +15.49x null.
top channels: mase +15.49x null; horizon_shape_far +13.63x null; level -12.72x null; horizon_shape_near +11.74x null; trend -9.46x null; dispersion +7.87x null; spectral_centroid +1.99x null

Sundial/model.layers.6, feature 1888 — not part of any formed concept

n=1
with · without · Δ 0.0122 (2.9% of context sd)

fires on only 1 series in this sample — every number in this row is an n-of-1.

the numbers behind this

overall fingerprint magnitude 19.96, 7 of 9 channels clearing; mase channel -7.00x null.
top channels: dispersion -9.89x null; spectral_centroid -9.17x null; horizon_shape_far +7.14x null; level -7.09x null; mase -7.00x null; horizon_shape_near +5.76x null; trend -5.76x null

Chronos-2/encoder.block.7, feature 102 — not part of any formed concept

n=5
with · without · Δ 0.0898 (11% of context sd)
with · without · Δ 0.00391 (0.47% of context sd)
with · without · Δ 0.2 (40% of context sd)
the numbers behind this

overall fingerprint magnitude 16.51, 7 of 9 channels clearing; mase channel +8.98x null.
top channels: mase +8.98x null; level +8.44x null; horizon_shape_far +7.55x null; dispersion -5.26x null; horizon_shape_near +5.11x null; trend -2.88x null; spectral_centroid -1.21x null

Sundial/model.layers.10, feature 3903 — not part of any formed concept

n=1
with · without · Δ 0.0674 (4.9% of context sd)

fires on only 1 series in this sample — every number in this row is an n-of-1.

the numbers behind this

overall fingerprint magnitude 16.01, 8 of 9 channels clearing; mase channel +7.43x null.
top channels: mase +7.43x null; level -7.29x null; horizon_shape_far +6.88x null; spectral_centroid -5.02x null; trend -4.48x null; horizon_shape_near +4.45x null; dispersion +4.41x null; flatness +4.00x null

Sundial/model.layers.8, feature 1883 — not part of any formed concept

n=1
with · without · Δ 0.0878 (16% of context sd)

fires on only 1 series in this sample — every number in this row is an n-of-1.

the numbers behind this

overall fingerprint magnitude 24.58, 7 of 9 channels clearing; mase channel -3.94x null.
top channels: horizon_shape_far +13.24x null; trend +12.01x null; horizon_shape_near +11.25x null; spectral_centroid -11.13x null; mase -3.94x null; level +3.69x null; dispersion +2.30x null

Sundial/model.layers.10, feature 1082 — not part of any formed concept

n=1
with · without · Δ 0.087 (6.7% of context sd)

fires on only 1 series in this sample — every number in this row is an n-of-1.

the numbers behind this

overall fingerprint magnitude 13.49, 6 of 9 channels clearing; mase channel +5.78x null.
top channels: level +7.58x null; horizon_shape_far +6.63x null; mase +5.78x null; dispersion +4.67x null; horizon_shape_near +3.93x null; trend +3.16x null

TimesFM/stacked_xf.0, feature 1377 — not part of any formed concept

n=8
with · without · Δ 1.09 (1.1e+02% of context sd)
with · without · Δ 0.821 (2.1e+02% of context sd)
with · without · Δ 1.55 (2.5e+02% of context sd)
the numbers behind this

overall fingerprint magnitude 10.17, 9 of 9 channels clearing; mase channel +5.99x null.
top channels: mase +5.99x null; horizon_shape_far +4.17x null; horizon_shape_near +4.09x null; level +3.89x null; trend +3.69x null; seasonal -1.44x null; spectral_centroid -1.40x null; flatness -0.80x null; dispersion -0.02x null

Chronos-2/encoder.block.5, feature 462 — not part of any formed concept

n=1
with · without · Δ 0.135 (15% of context sd)

fires on only 1 series in this sample — every number in this row is an n-of-1.

the numbers behind this

overall fingerprint magnitude 19.83, 7 of 9 channels clearing; mase channel +3.53x null.
top channels: level +11.98x null; horizon_shape_near +9.84x null; dispersion +8.16x null; trend -6.01x null; horizon_shape_far +4.42x null; spectral_centroid -4.20x null; mase +3.53x null

Sundial/model.layers.9, feature 1654 — not part of any formed concept

n=1
with · without · Δ 0.0216 (0.54% of context sd)

fires on only 1 series in this sample — every number in this row is an n-of-1.

the numbers behind this

overall fingerprint magnitude 11.34, 6 of 9 channels clearing; mase channel -3.88x null.
top channels: trend -7.82x null; horizon_shape_far +5.09x null; mase -3.88x null; level -3.67x null; spectral_centroid +3.00x null; horizon_shape_near +1.95x null

Sundial/model.layers.4, feature 5609 — not part of any formed concept

n=1
with · without · Δ 0.0373 (9.2% of context sd)

fires on only 1 series in this sample — every number in this row is an n-of-1.

the numbers behind this

overall fingerprint magnitude 9.90, 6 of 9 channels clearing; mase channel +4.90x null.
top channels: horizon_shape_near +7.46x null; mase +4.90x null; horizon_shape_far +2.76x null; level -2.29x null; dispersion +1.78x null; trend +1.12x null

Exemplars

Exemplar case studies

A few concrete series per family, told end to end: both forecasts, where each model's answer forms in depth, and where it looks in the context.

What this stage tells you

Question
What does an aggregate difference between models actually look like on one real series?

How
Picks a handful of concrete series per data family — specifically ones where the models' forecasts disagree the most — and shows each one's context, true continuation, both forecasts, per-layer lens curves, and pooled attention pattern side by side.

Good vs. bad result
Good: a case that makes an aggregate statistic from an earlier section tangible — you can see exactly where one model's forecast goes wrong on a concrete series. Bad: a case that reads as an ordinary, unremarkable series despite being flagged as the most divergent — worth treating skeptically rather than trusting the selection blindly.

What it cannot tell you
These series are deliberately chosen for maximal disagreement, not for being typical or representative — this stage cannot tell you how often such a disagreement happens, only that it can happen and roughly what it looks like when it does. It is illustrative evidence only, the same evidence class as a hand-picked example in a paper, not a statistical claim.

Every selected series

series_id family archetype TimesFM Chronos-2 Sundial Chronos-Bolt spread gap_in_floor_units selection
e0e62c64763accb6 random_parametric clean_low_noise 5.647 3.043 10.357 21.057 18.014 101.912 largest disagreement in family
158f5be4cf67c4eb random_parametric clean_low_noise 9.269 8.998 8.292 8.953 0.977 5.529 mid-range disagreement
6267d62d43bbfd46 random_parametric noisy_chaotic 0.835 0.704 0.768 0.941 0.237 1.339 closest agreement in family
b2c5b36dc464e55b parametric None 5.260 2.872 6.919 4.244 4.047 22.895 largest disagreement in family
00133b4a9ec3cc86 parametric None 2.942 2.744 2.692 3.754 1.062 6.008 mid-range disagreement
800da3ed9db57fd5 parametric None 3.705 3.132 3.646 3.010 0.695 3.931 closest agreement in family
0a5ed637377ce927 mixture None 8.543 7.109 11.028 5.572 5.456 30.865 largest disagreement in family
e139a4dfcddad25a mixture None 0.739 0.888 0.871 0.815 0.149 0.843 mid-range disagreement
9f8f3bcb3d31b714 mixture None 1.082 1.083 1.164 1.078 0.086 0.484 closest agreement in family
8697b8960fa94656 block_bootstrap None 1.398 1.416 1.762 3.285 1.886 10.672 largest disagreement in family
2c3cf1b55d32a21d block_bootstrap None 2.050 1.935 2.075 1.872 0.203 1.147 mid-range disagreement
9be4b438cd59dddf block_bootstrap None 0.431 0.425 0.552 0.430 0.127 0.719 closest agreement in family
160159a3e79b2528 sequential_par None 3.646 5.206 3.270 3.375 1.936 10.951 largest disagreement in family
5ea6c60d50ed412f sequential_par None 0.817 0.819 0.880 0.806 0.074 0.416 mid-range disagreement
bc0edf79ff20e952 sequential_par None 0.826 0.811 0.845 0.808 0.037 0.208 closest agreement in family

All 15 series this run selected as case studies, with each model's own MASE on that series, the gap between them, and how large that gap is in units of the noisiest model's own repeat-run variation.

What does this mean?

How to read it
`selection` is derived from where each series sits in its own family's gap distribution, not assigned by hand: the family's largest and smallest absolute gaps are labelled as such and everything between them is mid-range. `gap_in_floor_units` divides the absolute gap by the largest per-model repeat-run MASE variation measured in this run (the Behavioral profile section's noise floor) -- a value near or below 1 means the two models' forecasts for that series differ by no more than the same model differs from itself between calls.

Limitations
Selection is deliberately not random: `_select_exemplars` takes each family's largest-gap series plus interior quantiles of the gap distribution, so this set over-represents disagreement by construction and cannot be used to estimate how often models disagree. The per-family tables in the Behavioral profile section are for that. `gap_in_floor_units` is absent for a run where every model is deterministic, since there is no floor to divide by.

random_parametric — 3 cases

e0e62c64763accb6 · archetype clean_low_noise · largest disagreement in family

Series e0e62c64763accb6 (random_parametric · archetype clean_low_noise): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 5.647 4.408 0.421
Chronos-2 3.043 3.054 0.000
Sundial 10.357 5.911 0.909
Chronos-Bolt 21.057 16.673 0.000

TimesFM, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

Chronos-2, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

One card per selected series: left, the raw context tail, what actually happened next, and each model's forecast; right, the same series' skip-lens MASE at every captured layer, which is where that model's forecast for this series stops changing.

What does this mean?

How to read it
The table under each card gives that series' per-model final MASE, its best (lowest) skip-lens MASE and the relative depth where that minimum occurs, so a case where a model's forecast is already settled early is distinguishable from one where the last layers are still doing work. Where an attention map is shown it is the same series, at that model's L1 peak-CKA layer, pooled onto windows and averaged over heads.

Limitations
A single series is noisy: a feature of one card that does not appear in the aggregate curves of the Forecast lens and Attention sections is a property of this series, not of the model. Attention maps are computed only for the first series of each family, so most cards legitimately have none.

158f5be4cf67c4eb · archetype clean_low_noise · mid-range disagreement

Series 158f5be4cf67c4eb (random_parametric · archetype clean_low_noise): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 9.269 8.578 0.105
Chronos-2 8.998 8.993 0.000
Sundial 8.292 8.147 0.000
Chronos-Bolt 8.953 8.474 0.000
6267d62d43bbfd46 · archetype noisy_chaotic · closest agreement in family

Series 6267d62d43bbfd46 (random_parametric · archetype noisy_chaotic): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 0.835 0.802 0.947
Chronos-2 0.704 0.703 0.000
Sundial 0.768 0.749 1.000
Chronos-Bolt 0.941 0.819 0.182

parametric — 3 cases

b2c5b36dc464e55b · largest disagreement in family

Series b2c5b36dc464e55b (parametric): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 5.260 3.734 0.105
Chronos-2 2.872 2.854 0.000
Sundial 6.919 2.716 0.000
Chronos-Bolt 4.244 4.228 0.364

TimesFM, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

Chronos-2, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

00133b4a9ec3cc86 · mid-range disagreement

Series 00133b4a9ec3cc86 (parametric): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 2.942 2.663 0.842
Chronos-2 2.744 2.749 0.000
Sundial 2.692 2.630 1.000
Chronos-Bolt 3.754 3.101 0.000
800da3ed9db57fd5 · closest agreement in family

Series 800da3ed9db57fd5 (parametric): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 3.705 3.300 0.947
Chronos-2 3.132 3.131 0.000
Sundial 3.646 3.488 1.000
Chronos-Bolt 3.010 3.012 0.455

mixture — 3 cases

0a5ed637377ce927 · largest disagreement in family

Series 0a5ed637377ce927 (mixture): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 8.543 5.039 0.105
Chronos-2 7.109 7.090 0.000
Sundial 11.028 3.833 0.182
Chronos-Bolt 5.572 4.691 0.364

TimesFM, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

Chronos-2, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

e139a4dfcddad25a · mid-range disagreement

Series e139a4dfcddad25a (mixture): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 0.739 0.509 0.947
Chronos-2 0.888 0.889 0.000
Sundial 0.871 0.692 0.909
Chronos-Bolt 0.815 0.817 0.455
9f8f3bcb3d31b714 · closest agreement in family

Series 9f8f3bcb3d31b714 (mixture): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 1.082 1.093 0.947
Chronos-2 1.083 1.083 0.000
Sundial 1.164 1.110 0.273
Chronos-Bolt 1.078 1.079 0.455

block_bootstrap — 3 cases

8697b8960fa94656 · largest disagreement in family

Series 8697b8960fa94656 (block_bootstrap): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 1.398 1.538 0.947
Chronos-2 1.416 1.416 0.000
Sundial 1.762 1.610 0.909
Chronos-Bolt 3.285 1.668 0.182

TimesFM, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

Chronos-2, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

2c3cf1b55d32a21d · mid-range disagreement

Series 2c3cf1b55d32a21d (block_bootstrap): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 2.050 2.002 0.947
Chronos-2 1.935 1.936 0.000
Sundial 2.075 2.007 1.000
Chronos-Bolt 1.872 1.834 0.364
9be4b438cd59dddf · closest agreement in family

Series 9be4b438cd59dddf (block_bootstrap): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 0.431 0.496 0.947
Chronos-2 0.425 0.425 0.000
Sundial 0.552 0.546 1.000
Chronos-Bolt 0.430 0.430 0.273

sequential_par — 3 cases

160159a3e79b2528 · largest disagreement in family

Series 160159a3e79b2528 (sequential_par): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 3.646 3.610 0.947
Chronos-2 5.206 5.201 0.000
Sundial 3.270 3.284 1.000
Chronos-Bolt 3.375 3.373 0.455

TimesFM, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

Chronos-2, this same series: window-pooled, head-averaged attention at its L1 peak-CKA layer — which part of the context this layer reads while forming the forecast above.

5ea6c60d50ed412f · mid-range disagreement

Series 5ea6c60d50ed412f (sequential_par): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 0.817 0.807 0.947
Chronos-2 0.819 0.819 0.000
Sundial 0.880 0.816 0.182
Chronos-Bolt 0.806 0.806 0.455
bc0edf79ff20e952 · closest agreement in family

Series bc0edf79ff20e952 (sequential_par): each model's forecast against what actually happened, and where in depth each model's answer for this series settles.

model final MASE best skip-lens MASE at relative depth
TimesFM 0.826 0.841 0.737
Chronos-2 0.811 0.811 0.000
Sundial 0.845 0.873 0.000
Chronos-Bolt 0.808 0.797 0.364

Part 7 — Robustness and held-out confirmation

How much of the above depends on one analysis-knob choice, and the one-shot confirmatory test on the sealed private corpus.

↑ contents
Confirm

Private benchmark confirmation

One-shot confirmatory tests of the dev findings on a sealed held-out corpus. This is the gold standard: exploration above, evidence here.

What this stage tells you

Question
Which of the exploratory dev-corpus findings are actually real, rather than an artifact of looking at many comparisons?

How
Re-runs exactly the pre-registered hypotheses, exactly once, on a sealed corpus that no exploratory analysis in this run has ever seen, and reports which ones hold up.

Good vs. bad result
Good: a hypothesis that replicates on the private corpus with the same direction and a confidence interval excluding zero after correction — the strongest evidence this pipeline can produce. Bad: a dev finding that fails to replicate (a real and expected outcome some of the time, since dev findings are exploratory by construction), or a hypothesis marked 'untestable' because this stage doesn't yet re-test that kind of claim on private data.

What it cannot tell you
This section is the actual evidence, but only for the specific hypotheses that were pre-registered — it says nothing about any exploratory finding that wasn't registered. It also cannot be re-run: if the private corpus is ever peeked at, this evidence is spent and a fresh held-out corpus is required. A 'not confirmed' verdict does not mean the dev finding was wrong, only that it didn't survive being tested exactly once, out of sample.

Held-out private corpus: 800 series, tested once at α=0.05 (Holm-corrected across hypotheses). Everything above this section is exploratory; this is the confirmatory evidence.

Private corpus: visibility private, epoch 0, digest aadeca94760b6136. Leakage audit: measured.

What held up (11 of 11)

Every re-test this stage ran, by kind. Each row is an independent replication on the same held-out series, so a row that fails does not undermine the others — it narrows what this run supports. The detailed tables for each row follow below.

what was re-tested evidence class held up did not not testable what a failure would mean
Accuracy differences (per family) behavioral 1 0 0 the accuracy gap was specific to the exploratory data, not to the models
Where in depth models react to corruption causal within model 9 0 0 the depth agreement was a property of those particular series, not of the models
Strongest representational similarity geometric 1 0 0 the peak similarity was a coincidence of the exploratory sample

Multiplicity ledger

121 exploratory finding(s) examined → 47 hypotheses registered (31 replicable by this stage today) → 1 confirmed. The registry (hypotheses.json, sha256 18557c2e52d9) pins exactly which dev claims this stage tests, plus the exact content hash of the dev artifact each was derived from — confirm refuses to run at all if any of those hashes no longer match, which is what makes "tested exactly once" an enforced fact rather than a convention. "Exploratory findings examined" is every finding text this report generated before this section ran — a real but approximate multiplicity count, not a formal comparison tally.

Registered but not yet replicated (16)

Counted in the ledger above (they were real dev comparisons), but this stage does not yet re-test them on private data — a stated gap, not a silent one. Grouped by reason, since the reason belongs to the stage rather than to the individual claim.

stage(s) claims why not replicated on private data
l2 12 L2 replication (re-fitting stitching probes on private data) not yet implemented.
l0_archetype 3 archetype-level replication not yet implemented; private corpora don't guarantee the same archetype composition as dev.
clustering 1 Clustering replication (re-fitting cluster labels on private data) not yet implemented.
The individual claims not replicated
stage claim
l0_archetype Chronos-2 is significantly stronger than its comparison partner on archetype 'intermittent_bursts'.
l0_archetype Chronos-2 is significantly stronger than its comparison partner on archetype 'mixture'.
l0_archetype Chronos-2 is significantly stronger than its comparison partner on archetype 'nonsinusoidal_seasonal'.
l2 L2 stitching gain over the input-feature baseline (TimesFM->Chronos-2) = 0.707.
l2 L2 stitching gain over the input-feature baseline (Chronos-2->TimesFM) = 0.611.
l2 L2 stitching gain over the input-feature baseline (TimesFM->Sundial) = 0.681.
l2 L2 stitching gain over the input-feature baseline (Sundial->TimesFM) = 0.609.
l2 L2 stitching gain over the input-feature baseline (TimesFM->Chronos-Bolt) = 0.649.
l2 L2 stitching gain over the input-feature baseline (Chronos-Bolt->TimesFM) = 0.580.
l2 L2 stitching gain over the input-feature baseline (Chronos-2->Sundial) = 0.891.
l2 L2 stitching gain over the input-feature baseline (Sundial->Chronos-2) = 0.911.
l2 L2 stitching gain over the input-feature baseline (Chronos-2->Chronos-Bolt) = 0.893.
l2 L2 stitching gain over the input-feature baseline (Chronos-Bolt->Chronos-2) = 0.908.
l2 L2 stitching gain over the input-feature baseline (Sundial->Chronos-Bolt) = 0.878.
l2 L2 stitching gain over the input-feature baseline (Chronos-Bolt->Sundial) = 0.865.
clustering Cross-model clustering AMI = 0.601.

Dev hypotheses on private data

Of 1 registered accuracy claim, held up on mixture. A claim counts as confirmed only when its Holm-corrected p clears α and its interval excludes zero — a direction that merely repeats is not enough.

family dev favored dev ratio private ΔMASE lo hi p (Holm) verdict private MDE
mixture Chronos-2 1.105 0.307 0.209 0.413 0.001 CONFIRMED No difference detected. A true difference of >= 0.155 MASE would have been detected 80% of the time at this n.

`private MDE`: the smallest true effect this claim's private-split sample size could have caught, computed BEFORE this test spent the private data — the pre-registration half of the power question.

What does this mean?

How to read it
A claim marked 'not confirmed' beside a large or 'not testable' MDE was never in a position to confirm, regardless of how the test came out — the private split simply wasn't big enough (or the Holm correction across this many claims too strict) to detect an effect of that size. That is a different, weaker kind of non-confirmation than one with a small MDE.

Limitations
Computed independently of `dev ratio` — a claim can have a large dev effect and still carry a large private MDE if the private split has far fewer series in that family than dev did.

Overall paired ΔMASE on private data

-0.15 [-0.21, -0.09] (p=0.001 (n_boot=2000, p floored at 1/n_boot=0.0005); positive favors TimesFM).

Perturbation replication (9 of 9 replicate)

The whole corruption battery re-run on 800 private series — same corruptions at the same strengths, same fingerprint, same paired cluster bootstrap — and each registered per-corruption depth agreement between TimesFM and Chronos-2 re-tested. A dev value counts as replicated when it falls inside the private interval, the same rule the representational replication below uses.

corruption dev ρ private ρ (95% CI) verdict
noise -0.738 -0.74 [-0.76, -0.73] replicates
detrend +0.330 0.33 [0.28, 0.49] replicates
deseasonalize +0.259 0.26 [0.23, 0.31] replicates
frequency_shift +0.222 0.25 [0.10, 0.38] replicates
level_shift +0.040 0.05 [-0.05, 0.09] replicates
spike -0.787 -0.78 [-0.79, -0.77] replicates
smooth -0.418 -0.47 [-0.56, -0.38] replicates
warp -0.640 -0.66 [-0.69, -0.62] replicates
dropout +0.498 0.49 [0.46, 0.52] replicates

Representational replication

Dev peak CKA 0.43 at L4 ↔ L7; private estimate 0.43 [0.42, 0.44] — dev value replicates within the private CI.

Concept transfer replication (20 of 20 tested confirmed, 20 registered)

The top 20 reciprocal-FDR, seed-stable atlas-transfer tests by dev AUC margin, re-tested on private strata with the SAME saved SAE checkpoint (never retrained). Combined per-claim p = max(forward p, reverse p) (both legs must hold), Holm-corrected across the 20 registered claims (n_null=2000).

concept mode src → dst feature dev AUC dev margin private AUC p (Holm) verdict
0 search TimesFM L0 → Chronos-2 L11 509 → 662 0.993 0.286 0.986 0.010 confirmed
0 search TimesFM L0 → Sundial L5 6070 → 1610 0.989 0.281 0.986 0.010 confirmed
0 search TimesFM L0 → Sundial L3 2779 → 4936 0.987 0.279 0.987 0.010 confirmed
0 search TimesFM L0 → Sundial L4 5652 → 5825 0.984 0.277 0.986 0.010 confirmed
9 search Chronos-2 L6 → TimesFM L14 630 → 630 0.992 0.274 0.971 0.010 confirmed
0 search TimesFM L0 → Chronos-Bolt L5 6013 → 6013 0.996 0.274 0.993 0.010 confirmed
0 search TimesFM L0 → Chronos-Bolt L3 2071 → 4430 0.996 0.268 0.988 0.010 confirmed
0 search TimesFM L0 → Sundial L6 5652 → 2879 0.981 0.266 0.988 0.010 confirmed
9 search Chronos-2 L6 → TimesFM L16 2331 → 5711 0.977 0.266 0.986 0.010 confirmed
0 search TimesFM L0 → Chronos-2 L6 384 → 384 0.987 0.266 0.982 0.010 confirmed
0 search TimesFM L0 → Chronos-2 L9 2005 → 1166 0.985 0.264 0.980 0.010 confirmed
0 search TimesFM L0 → Chronos-2 L5 4706 → 384 0.992 0.264 0.986 0.010 confirmed
0 search TimesFM L0 → Chronos-Bolt L4 5278 → 6013 0.994 0.258 0.991 0.010 confirmed
0 search TimesFM L0 → Sundial L7 5652 → 2898 0.979 0.258 0.990 0.010 confirmed
0 search TimesFM L0 → Sundial L8 5652 → 5652 0.976 0.255 0.975 0.010 confirmed
9 search Chronos-2 L6 → TimesFM L6 3531 → 4728 0.990 0.253 0.995 0.010 confirmed
0 search TimesFM L0 → Chronos-2 L7 362 → 2548 0.976 0.249 0.971 0.010 confirmed
9 search Chronos-2 L6 → TimesFM L18 859 → 859 0.989 0.249 0.991 0.010 confirmed
0 search TimesFM L0 → Chronos-2 L8 5844 → 2548 0.965 0.245 0.985 0.010 confirmed
0 search TimesFM L0 → Sundial L10 1096 → 1096 0.972 0.243 0.975 0.010 confirmed

Concept multiplicity ledger

family m n_null alpha min_attainable_p_holm satisfiable note
concept_transfer 20 2000.000 0.050 0.010 True NaN
concept_knob 0 NaN NaN NaN None empty by design: the P6a found no (concept, knob) response surviving BH on dev (0/98 go/no-go, 0/151 registered retry), so no dev claim exists to freeze and no private counterfactual path is built.

Held-out confirmation of a correlational transfer claim: does the source model's concept and the destination model's dictionary still select the SAME series on data neither the SAE nor the concept atlas ever saw.

What does this mean?

How to read it
'Confirmed' means the two dictionaries still group the same series at a Holm-corrected significance on fresh data — it is NOT evidence the concept causes the same forecast behavior in both models (that is L5's shared-input causal agreement, an entirely separate, dev-only measurement). 'search' mode confirms only that the destination dictionary has SOME feature that selects the source concept's series (private data re-searches the whole dictionary); 'frozen' mode confirms the sharper claim that THIS SPECIFIC dev feature pair does, since it is scored with no search and no max-over-features null.

Limitations
The concept_knob family is empty: the P6a found no dev (concept, knob) response surviving BH correction, so no knob claim was registered and no private counterfactual path is built.

Appendix

Findings — 126 claims, grouped by stage

The findings below are a summary — each is backed by the data, tables, and figures in the sections further up this report. Expand to read them.

Compare

  • No learned concept clears the full bar (same effect, same inputs, reproducible) across every model in this comparison.

    [exploratory — not pre-registered] Model comparison -- 0 of 27 atlas concept(s) are shared (same effect, same inputs, reproducible) by all 4 models in this run.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Different ways of measuring how similar two models are do NOT agree on which pair is closest.

    [exploratory — not pre-registered] Model comparison -- cross-metric agreement on which pair is most similar: Kendall's W=0.2815 (p=0.0700) across 7 metric(s).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Grouping every model's causal SAE features by what they DO to the forecast (not by which model they came from) gives 9 readable families covering nearly all of them.

    [exploratory — not pre-registered] Concept families -- 9 families cover 288 of 293 causal features (98.3%); 9 of 9 span more than one model.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • These families are a readable tiling of a continuum, not a set of naturally separated clusters -- a column-permuted control produces about as many families and as much coverage on its own.

    [exploratory — not pre-registered] Concept families -- structure null: p_n_families=1.0000, p_frac_assigned=0.9851 (does not clear its own permutation null)

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

Corpus

  • No series here is a copy of a real reference series (68 of 2000 candidates rejected): above.

    [exploratory — not pre-registered] Corpus trust — No series here is a copy of a real reference series (68 of 2000 candidates rejected): 0.352 distance vs. gate threshold (dtw) (0.350 distance) — above.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • No two series within a split are near-duplicates of each other: does not clear.

    [exploratory — not pre-registered] Corpus trust — No two series within a split are near-duplicates of each other: 7 pairs vs. 0 within-split near-duplicate pairs (0 pairs) — does not clear.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • The dev and private splits share no series: does not clear.

    [exploratory — not pre-registered] Corpus trust — The dev and private splits share no series: 14 pairs vs. 0 cross-split near-duplicate pairs (0 pairs) — does not clear.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • The private split looks like the dev split: inconclusive.

    [exploratory — not pre-registered] Corpus trust — The private split looks like the dev split: not measured vs. a declared equivalence margin (not measured) — inconclusive.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • A model cannot do well here by memorizing one shape (effective dimensionality): meets.

    [exploratory — not pre-registered] Corpus trust — A model cannot do well here by memorizing one shape (effective dimensionality): 5.294 vs. benchmark_validation's default min_effective_dimensionality (gates.py) -- not read from this report's own config (2) — meets.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Series here vary in more than one way (7 distinct per-group dominant features of 7 groups): meets.

    [exploratory — not pre-registered] Corpus trust — Series here vary in more than one way (7 distinct per-group dominant features of 7 groups): 7 vs. at least 2 distinct dominant features across groups (2) — meets.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • The models being compared were not trained on this data: not_verifiable.

    [exploratory — not pre-registered] Corpus trust — The models being compared were not trained on this data: not measured vs. a checkpoint's own training corpus (not measured) — not_verifiable.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

L0 — forecast accuracy

  • TimesFM gives the exact same forecast every time you ask it twice, so any change in its accuracy elsewhere in this report is a real effect, not random noise.

    [exploratory — not pre-registered] Noise floor — TimesFM is deterministic (repeat calls identical); any ΔMASE for this model is real signal, not repeat-run noise.

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    2 more of the same kind
    • Chronos-2 gives the exact same forecast every time you ask it twice, so any change in its accuracy elsewhere in this report is a real effect, not random noise.

      [exploratory — not pre-registered] Noise floor — Chronos-2 is deterministic (repeat calls identical); any ΔMASE for this model is real signal, not repeat-run noise.

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Chronos-Bolt gives the exact same forecast every time you ask it twice, so any change in its accuracy elsewhere in this report is a real effect, not random noise.

      [exploratory — not pre-registered] Noise floor — Chronos-Bolt is deterministic (repeat calls identical); any ΔMASE for this model is real signal, not repeat-run noise.

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Sundial gives a slightly different forecast every time you ask it twice, so small accuracy changes for this model elsewhere in this report could just be that randomness, not a real difference.

    [exploratory — not pre-registered] Noise floor — Sundial: repeat-run MASE varies by 0.1768 on average (p95 0.6380); ΔMASE figures for this model smaller than this are not distinguishable from repeat-run noise.

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • 116 of 3860 test series were too flat or erratic to score fairly, so they were left out of the main accuracy numbers rather than distorting them.

    [exploratory — not pre-registered] L0 — 116/3860 series excluded from MASE aggregates as unreliable (scale='mean_abs_diff', min_scale_frac=0.05).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Chronos-2 forecasts intermittent_bursts, mixture, nonsinusoidal_seasonal-style data clearly better than the other model, and this held up under a randomization check, not just eyeballing.

    [exploratory — not pre-registered] L0 — Chronos-2 is significantly stronger on archetype(s): intermittent_bursts, mixture, nonsinusoidal_seasonal (paired bootstrap, Holm-corrected α=0.05).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • TimesFM's stated confidence ranges are well calibrated — its forecast intervals cover the true value about as often as claimed. It also produces occasional self-contradictory forecast ranges.

    [exploratory — not pre-registered] L0 calibration — TimesFM: max reliability-curve gap 0.016, outer-interval coverage 0.795 (nominal 0.800), quantile-crossing rate 0.000.

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    1 more of the same kind
    • Chronos-2's stated confidence ranges are well calibrated — its forecast intervals cover the true value about as often as claimed. It also produces occasional self-contradictory forecast ranges.

      [exploratory — not pre-registered] L0 calibration — Chronos-2: max reliability-curve gap 0.023, outer-interval coverage 0.772 (nominal 0.800), quantile-crossing rate 0.000.

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Sundial's stated confidence ranges are poorly calibrated — its forecast intervals cover the true value noticeably less often than claimed (37% vs 80% nominal). Its uncertainty ranges are internally consistent.

    [exploratory — not pre-registered] L0 calibration — Sundial: max reliability-curve gap 0.243, outer-interval coverage 0.369 (nominal 0.800), quantile-crossing rate 0.000.

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Chronos-Bolt's stated confidence ranges are well calibrated — its forecast intervals cover the true value about as often as claimed. Its uncertainty ranges are internally consistent.

    [exploratory — not pre-registered] L0 calibration — Chronos-Bolt: max reliability-curve gap 0.026, outer-interval coverage 0.749 (nominal 0.800), quantile-crossing rate 0.000.

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • When TimesFM reports a wider uncertainty range for a series, that series really does tend to have a bigger forecast error — its own confidence band is a useful, free signal.

    [exploratory — not pre-registered] L0 reliability — TimesFM's own quantile width predicts its error at Spearman 0.842 (own-width-vs-error, equal-count deciles).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    3 more of the same kind
    • When Chronos-2 reports a wider uncertainty range for a series, that series really does tend to have a bigger forecast error — its own confidence band is a useful, free signal.

      [exploratory — not pre-registered] L0 reliability — Chronos-2's own quantile width predicts its error at Spearman 0.818 (own-width-vs-error, equal-count deciles).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • When Sundial reports a wider uncertainty range for a series, that series really does tend to have a bigger forecast error — its own confidence band is a useful, free signal.

      [exploratory — not pre-registered] L0 reliability — Sundial's own quantile width predicts its error at Spearman 0.840 (own-width-vs-error, equal-count deciles).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • When Chronos-Bolt reports a wider uncertainty range for a series, that series really does tend to have a bigger forecast error — its own confidence band is a useful, free signal.

      [exploratory — not pre-registered] L0 reliability — Chronos-Bolt's own quantile width predicts its error at Spearman 0.794 (own-width-vs-error, equal-count deciles).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • TimesFM's forecasts get noticeably less accurate the further ahead it predicts, which is the normal, expected pattern for a forecasting model.

    [exploratory — not pre-registered] L0 horizon profile — TimesFM: MASE 0.679 at h=1 vs 1.941 at h=64 (ratio 2.86x).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    3 more of the same kind
    • Chronos-2's forecasts get noticeably less accurate the further ahead it predicts, which is the normal, expected pattern for a forecasting model.

      [exploratory — not pre-registered] L0 horizon profile — Chronos-2: MASE 0.666 at h=1 vs 1.877 at h=64 (ratio 2.82x).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Sundial's forecasts get noticeably less accurate the further ahead it predicts, which is the normal, expected pattern for a forecasting model.

      [exploratory — not pre-registered] L0 horizon profile — Sundial: MASE 0.694 at h=1 vs 2.406 at h=64 (ratio 3.47x).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Chronos-Bolt's forecasts get noticeably less accurate the further ahead it predicts, which is the normal, expected pattern for a forecasting model.

      [exploratory — not pre-registered] L0 horizon profile — Chronos-Bolt: MASE 0.779 at h=1 vs 2.455 at h=64 (ratio 3.15x).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Chronos-2 clearly forecasts these kinds of data better than the other model: mixture.

    [exploratory — not pre-registered] L0 — Chronos-2 is significantly stronger on: mixture (paired bootstrap, Holm-corrected α=0.05).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Averaged across the whole test set, Chronos-2 forecasts a bit better than the other model, and that gap looks like a real effect rather than chance.

    [exploratory — not pre-registered] L0 — overall paired ΔMASE -0.07 [-0.11, -0.02] (positive favors the first model, p=0.002 (n_boot=2000, p floored at 1/n_boot=0.0005)).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. No repeat-run noise floor was checked against this specific number, so it is not yet established whether it exceeds ordinary run-to-run noise. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • TimesFM clearly forecasts these kinds of data better than Sundial: random_parametric, mixture, block_bootstrap.

    [exploratory — not pre-registered] L0 — TimesFM is significantly stronger than Sundial on: random_parametric, mixture, block_bootstrap (paired bootstrap, Holm-corrected across all 6 model pairs) — within the captured surface only; ~57% of TimesFM's forward computation is unobserved; ~78% of Sundial's forward computation is unobserved.

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim. Within the captured surface only (~57% of TimesFM's forward computation is unobserved; ~78% of Sundial's forward computation is unobserved) -- the coverage qualifier.

  • TimesFM clearly forecasts these kinds of data better than Chronos-Bolt: random_parametric.

    [exploratory — not pre-registered] L0 — TimesFM is significantly stronger than Chronos-Bolt on: random_parametric (paired bootstrap, Holm-corrected across all 6 model pairs).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    2 more of the same kind
    • Chronos-2 clearly forecasts these kinds of data better than Chronos-Bolt: random_parametric.

      [exploratory — not pre-registered] L0 — Chronos-2 is significantly stronger than Chronos-Bolt on: random_parametric (paired bootstrap, Holm-corrected across all 6 model pairs).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    • Sundial clearly forecasts these kinds of data better than Chronos-Bolt: random_parametric.

      [exploratory — not pre-registered] L0 — Sundial is significantly stronger than Chronos-Bolt on: random_parametric (paired bootstrap, Holm-corrected across all 6 model pairs).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Chronos-Bolt clearly forecasts these kinds of data better than TimesFM: mixture.

    [exploratory — not pre-registered] L0 — Chronos-Bolt is significantly stronger than TimesFM on: mixture (paired bootstrap, Holm-corrected across all 6 model pairs).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

    1 more of the same kind
    • Chronos-Bolt clearly forecasts these kinds of data better than Sundial: mixture.

      [exploratory — not pre-registered] L0 — Chronos-Bolt is significantly stronger than Sundial on: mixture (paired bootstrap, Holm-corrected across all 6 model pairs).

      Caveats

      This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • Chronos-2 clearly forecasts these kinds of data better than Sundial: block_bootstrap, mixture, parametric, random_parametric.

    [exploratory — not pre-registered] L0 — Chronos-2 is significantly stronger than Sundial on: block_bootstrap, mixture, parametric, random_parametric (paired bootstrap, Holm-corrected across all 6 model pairs) — within the captured surface only; ~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim. Within the captured surface only (~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

  • We ran 3599 statistical comparisons in this report, and corrected for having run several at once.

    [exploratory — not pre-registered] L0 — this report made 3599 corrected comparisons across 45 independent correction families (L0 per-family paired tests: 30; L0 per-archetype paired tests: 16; Confirm — pre-registered hypotheses (private corpus): 1; Transfer — Chronos-2 → Chronos-Bolt (forward leg, exact): 12; Transfer — Chronos-2 → Chronos-Bolt (reverse leg, exact): 12; Transfer — Chronos-2 → Sundial (forward leg, exact): 36; Transfer — Chronos-2 → Sundial (reverse leg, exact): 36; Transfer — Chronos-2 → TimesFM (forward leg, exact): 40; Transfer — Chronos-2 → TimesFM (reverse leg, exact): 40; Transfer — Chronos-Bolt → Chronos-2 (forward leg, exact): 12; Transfer — Chronos-Bolt → Chronos-2 (reverse leg, exact): 12; Transfer — Chronos-Bolt → Sundial (forward leg, exact): 18; Transfer — Chronos-Bolt → Sundial (reverse leg, exact): 18; Transfer — Chronos-Bolt → TimesFM (forward leg, exact): 20; Transfer — Chronos-Bolt → TimesFM (reverse leg, exact): 20; Transfer — Sundial → Chronos-2 (forward leg, exact): 18; Transfer — Sundial → Chronos-2 (reverse leg, exact): 18; Transfer — Sundial → Chronos-Bolt (forward leg, exact): 9; Transfer — Sundial → Chronos-Bolt (reverse leg, exact): 9; Transfer — Sundial → TimesFM (forward leg, exact): 30; Transfer — Sundial → TimesFM (reverse leg, exact): 30; Atlas Transfer — Chronos-2 → Chronos-Bolt (forward leg, exact): 81; Atlas Transfer — Chronos-2 → Chronos-Bolt (reverse leg, exact): 81; Atlas Transfer — Chronos-2 → Sundial (forward leg, exact): 243; Atlas Transfer — Chronos-2 → Sundial (reverse leg, exact): 243; Atlas Transfer — Chronos-2 → TimesFM (forward leg, exact): 270; Atlas Transfer — Chronos-2 → TimesFM (reverse leg, exact): 270; Atlas Transfer — Chronos-Bolt → Chronos-2 (forward leg, exact): 28; Atlas Transfer — Chronos-Bolt → Chronos-2 (reverse leg, exact): 28; Atlas Transfer — Chronos-Bolt → Sundial (forward leg, exact): 36; Atlas Transfer — Chronos-Bolt → Sundial (reverse leg, exact): 36; Atlas Transfer — Chronos-Bolt → TimesFM (forward leg, exact): 40; Atlas Transfer — Chronos-Bolt → TimesFM (reverse leg, exact): 40; Atlas Transfer — Sundial → Chronos-2 (forward leg, exact): 196; Atlas Transfer — Sundial → Chronos-2 (reverse leg, exact): 196; Atlas Transfer — Sundial → Chronos-Bolt (forward leg, exact): 84; Atlas Transfer — Sundial → Chronos-Bolt (reverse leg, exact): 84; Atlas Transfer — Sundial → TimesFM (forward leg, exact): 280; Atlas Transfer — Sundial → TimesFM (reverse leg, exact): 280; Atlas Transfer — TimesFM → Chronos-2 (forward leg, exact): 119; Atlas Transfer — TimesFM → Chronos-2 (reverse leg, exact): 119; Atlas Transfer — TimesFM → Chronos-Bolt (forward leg, exact): 51; Atlas Transfer — TimesFM → Chronos-Bolt (reverse leg, exact): 51; Atlas Transfer — TimesFM → Sundial (forward leg, exact): 153; Atlas Transfer — TimesFM → Sundial (reverse leg, exact): 153).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

Cost and capacity

  • Chronos-2 is more accurate than Chronos-Bolt, but it also costs 5.4 times more compute to run — so some of that accuracy edge may simply be buying more compute, not a better model.

    [exploratory — not pre-registered] Cost — Chronos-2 wins on accuracy (MASE 1.69 vs 2.15) while costing 5.4× the compute of Chronos-Bolt (8.65 GFLOPs vs 1.59 GFLOPs per series), so every cross-model comparison in this report is size-confounded in its favor.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • TimesFM has 231 million parameters and takes about 38 milliseconds to forecast one series in this run's setup.

    [exploratory — not pre-registered] Cost — TimesFM: 231.29M parameters, 7.42 GFLOPs/series forward, 38 ms median forward at batch 8.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    3 more of the same kind
    • Chronos-2 has 119 million parameters and takes about 21 milliseconds to forecast one series in this run's setup.

      [exploratory — not pre-registered] Cost — Chronos-2: 119.48M parameters, 8.65 GFLOPs/series forward, 21 ms median forward at batch 8.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Sundial has 128 million parameters and takes about 7 milliseconds to forecast one series in this run's setup.

      [exploratory — not pre-registered] Cost — Sundial: 128.33M parameters, 7.44 GFLOPs/series forward, 7 ms median forward at batch 8.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-Bolt has 48 million parameters and takes about 14 milliseconds to forecast one series in this run's setup.

      [exploratory — not pre-registered] Cost — Chronos-Bolt: 47.72M parameters, 1.59 GFLOPs/series forward, 14 ms median forward at batch 8.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

Input front-end diagnostics

  • Scaling TimesFM's input up or down and unscaling the forecast back reproduces the original forecast essentially exactly (worst mismatch 2.0e-06 times the series' own typical step size, at a 0.001× scale change).

    [exploratory — not pre-registered] Frontend — TimesFM's worst scale-equivariance residual across tested factors is 0.0000 context-scale units, at scale factor 0.001 (95% CI [0.0000, 0.0000]).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Scaling Chronos-2's input up or down and unscaling the forecast back doesn't perfectly reproduce the original forecast — the worst mismatch measured was about 0.009 times the series' own typical step size, at a 0.001× scale change.

    [exploratory — not pre-registered] Frontend — Chronos-2's worst scale-equivariance residual across tested factors is 0.0093 context-scale units, at scale factor 0.001 (95% CI [0.0065, 0.0123]).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    2 more of the same kind
    • Scaling Sundial's input up or down and unscaling the forecast back doesn't perfectly reproduce the original forecast — the worst mismatch measured was about 0.033 times the series' own typical step size, at a 0.001× scale change.

      [exploratory — not pre-registered] Frontend — Sundial's worst scale-equivariance residual across tested factors is 0.0332 context-scale units, at scale factor 0.001 (95% CI [0.0236, 0.0443]).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Scaling Chronos-Bolt's input up or down and unscaling the forecast back doesn't perfectly reproduce the original forecast — the worst mismatch measured was about 0.009 times the series' own typical step size, at a 0.001× scale change.

      [exploratory — not pre-registered] Frontend — Chronos-Bolt's worst scale-equivariance residual across tested factors is 0.0087 context-scale units, at scale factor 0.001 (95% CI [0.0062, 0.0112]).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • When TimesFM is missing its most recent context (a data-staleness scenario, not just a shorter history), its accuracy degrades gradually rather than the other way around.

    [exploratory — not pre-registered] Frontend — TimesFM's accuracy degrades in a 'graceful' shape as the most recent context is withheld: MASE 0.963 at full context vs. 3.567 at the shortest tested available length (64 of 512 points).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    3 more of the same kind
    • When Chronos-2 is missing its most recent context (a data-staleness scenario, not just a shorter history), its accuracy degrades gradually rather than the other way around.

      [exploratory — not pre-registered] Frontend — Chronos-2's accuracy degrades in a 'graceful' shape as the most recent context is withheld: MASE 0.980 at full context vs. 3.739 at the shortest tested available length (64 of 512 points).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • When Sundial is missing its most recent context (a data-staleness scenario, not just a shorter history), its accuracy degrades gradually rather than the other way around.

      [exploratory — not pre-registered] Frontend — Sundial's accuracy degrades in a 'graceful' shape as the most recent context is withheld: MASE 1.281 at full context vs. 3.770 at the shortest tested available length (64 of 512 points).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • When Chronos-Bolt is missing its most recent context (a data-staleness scenario, not just a shorter history), its accuracy degrades gradually rather than the other way around.

      [exploratory — not pre-registered] Frontend — Chronos-Bolt's accuracy degrades in a 'graceful' shape as the most recent context is withheld: MASE 1.289 at full context vs. 3.952 at the shortest tested available length (64 of 512 points).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • TimesFM silently turns a missing context value into a broken (non-finite) forecast, with no error to flag it.

    [exploratory — not pre-registered] Frontend — TimesFM's NaN-handling verdict is 'propagates' across 3 injection scenarios (front/middle/back of context): 0 raised an error, 3 silently produced a non-finite forecast, 0 handled it cleanly.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    1 more of the same kind
    • Sundial silently turns a missing context value into a broken (non-finite) forecast, with no error to flag it.

      [exploratory — not pre-registered] Frontend — Sundial's NaN-handling verdict is 'propagates' across 3 injection scenarios (front/middle/back of context): 0 raised an error, 3 silently produced a non-finite forecast, 0 handled it cleanly.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Chronos-2 produces a normal, finite forecast even when a context value is missing.

    [exploratory — not pre-registered] Frontend — Chronos-2's NaN-handling verdict is 'handled' across 3 injection scenarios (front/middle/back of context): 0 raised an error, 0 silently produced a non-finite forecast, 3 handled it cleanly.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    1 more of the same kind
    • Chronos-Bolt produces a normal, finite forecast even when a context value is missing.

      [exploratory — not pre-registered] Frontend — Chronos-Bolt's NaN-handling verdict is 'handled' across 3 injection scenarios (front/middle/back of context): 0 raised an error, 0 silently produced a non-finite forecast, 3 handled it cleanly.

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

Layer screen

  • For TimesFM, the cheap pre-screen flagged L9, L10, L15, L18, L19 as the layer(s) most worth spending expensive analysis on.

    [exploratory — not pre-registered] Layer screen — TimesFM: work_bend selected L9, L10, L15, L18, L19 of 20 screened layers — within the captured surface only; ~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2)) -- the coverage qualifier.

  • For Chronos-2, the cheap pre-screen flagged L8, L10, L11 as the layer(s) most worth spending expensive analysis on.

    [exploratory — not pre-registered] Layer screen — Chronos-2: work_bend selected L8, L10, L11 of 12 screened layers.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

    1 more of the same kind
    • For Sundial, the cheap pre-screen flagged L3, L10, L11 as the layer(s) most worth spending expensive analysis on.

      [exploratory — not pre-registered] Layer screen — Sundial: work_bend selected L3, L10, L11 of 12 screened layers — within the captured surface only; ~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

  • For Chronos-Bolt, the cheap pre-screen flagged L4, L5 as the layer(s) most worth spending expensive analysis on.

    [exploratory — not pre-registered] Layer screen — Chronos-Bolt: work_bend selected L4, L5 of 6 screened layers — within the captured surface only; ~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched)) -- the coverage qualifier.

Profile — what is in each model

  • Chronos-2 most clearly 'knows' what kind of data it's looking at around layer L9 of its network.

    [exploratory — not pre-registered] Profile — Chronos-2: family information peaks at L9 (probe 0.96 [0.95, 0.98] vs chance 0.43, permutation-null p95 0.44 (5 reshuffles)).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    3 more of the same kind
    • Chronos-Bolt most clearly 'knows' what kind of data it's looking at around layer L4 of its network.

      [exploratory — not pre-registered] Profile — Chronos-Bolt: family information peaks at L4 (probe 0.83 [0.80, 0.86] vs chance 0.43, permutation-null p95 0.46 (5 reshuffles)).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Sundial most clearly 'knows' what kind of data it's looking at around layer L6 of its network.

      [exploratory — not pre-registered] Profile — Sundial: family information peaks at L6 (probe 0.94 [0.93, 0.96] vs chance 0.43, permutation-null p95 0.45 (5 reshuffles)).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • TimesFM most clearly 'knows' what kind of data it's looking at around layer L12 of its network.

      [exploratory — not pre-registered] Profile — TimesFM: family information peaks at L12 (probe 0.94 [0.92, 0.95] vs chance 0.43, permutation-null p95 0.44 (5 reshuffles)).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

Lens — where the forecast forms

  • TimesFM never fully settles on its forecast early — it keeps revising it all the way through its layers.

    [exploratory — not pre-registered] Lens — TimesFM: forecast crystallizes at never (within tolerance) (within 10% of final MASE 1.96) — within the captured surface only; ~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2)) -- the coverage qualifier.

  • Sundial settles on its forecast only in its last layers (at 100% of its depth) — earlier layers do not yet carry it.

    [exploratory — not pre-registered] Lens — Sundial: forecast crystallizes at 1.00 of depth (within 10% of final MASE 2.45) — within the captured surface only; ~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

  • Chronos-Bolt has essentially settled on its forecast by 27% of the way through its layers — the rest of the network only refines it.

    [exploratory — not pre-registered] Lens — Chronos-Bolt: forecast crystallizes at 0.27 of depth (within 10% of final MASE 3.17) — within the captured surface only; ~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched)) -- the coverage qualifier.

  • Sundial commits to its near-term and far-future forecasts at about the same point in its layers.

    [exploratory — not pre-registered] Lens horizon-resolved crystallization — Sundial: horizon step 1 crystallizes at 1.00 relative depth vs. 0.91 at the final step (64) — within the captured surface only; ~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

    1 more of the same kind
    • Chronos-Bolt commits to its near-term and far-future forecasts at about the same point in its layers.

      [exploratory — not pre-registered] Lens horizon-resolved crystallization — Chronos-Bolt: horizon step 1 crystallizes at 0.27 relative depth vs. 0.00 at the final step (64) — within the captured surface only; ~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched)) -- the coverage qualifier.

L1 — shared geometry

  • At their most similar layers, TimesFM and Chronos-2 organize the data somewhat alike.

    [exploratory — not pre-registered] L1 — peak similarity CKA=0.43 (95% CI [0.42, 0.44], series bootstrap) at TimesFM L4 ↔ Chronos-2 L7 (relative depths 0.21 / 0.64, block axis); shuffled-series null ≈0.04 — within the captured surface only; ~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2).

    Caveats

    This is a geometric similarity measure between two models' representations (do they organize the data alike), not evidence that the models compute anything the same way. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2)) -- the coverage qualifier.

  • The two models organize 'parametric'-type data the most differently of any data type tested.

    [exploratory — not pre-registered] L1 — representational agreement is weakest on family 'parametric' (best CKA 0.64 [0.61, 0.71]).

    Caveats

    This is a geometric similarity measure between two models' representations (do they organize the data alike), not evidence that the models compute anything the same way. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Even after squeezing each model down to a sparse, human-legible feature dictionary, TimesFM and Chronos-2 still agree on which series look alike.

    [exploratory — not pre-registered] L1 (SAE feature space) — TimesFM × Chronos-2: best feature-space CKA 0.59 [0.56, 0.63] at stacked_xf.8 ↔ encoder.block.11 (n=965 series) — within the captured surface only; ~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2).

    Caveats

    This is a geometric similarity measure between two models' representations (do they organize the data alike), not evidence that the models compute anything the same way. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2)) -- the coverage qualifier.

L2 — linear translatability

  • You can predict what Chronos-2 is doing from what TimesFM is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

    [exploratory — not pre-registered] L2 — TimesFM→Chronos-2: best stitching gain 0.71 [0.68, 0.73] R² above the input baseline at L2→L0 (CI excludes zero).

    Caveats

    This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    11 more of the same kind
    • You can predict what TimesFM is doing from what Chronos-2 is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-2→TimesFM: best stitching gain 0.61 [0.59, 0.63] R² above the input baseline at L1→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Sundial is doing from what TimesFM is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — TimesFM→Sundial: best stitching gain 0.68 [0.67, 0.70] R² above the input baseline at L4→L4 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what TimesFM is doing from what Sundial is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Sundial→TimesFM: best stitching gain 0.61 [0.58, 0.64] R² above the input baseline at L10→L18 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-Bolt is doing from what TimesFM is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — TimesFM→Chronos-Bolt: best stitching gain 0.65 [0.63, 0.67] R² above the input baseline at L2→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what TimesFM is doing from what Chronos-Bolt is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-Bolt→TimesFM: best stitching gain 0.58 [0.56, 0.60] R² above the input baseline at L2→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Sundial is doing from what Chronos-2 is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-2→Sundial: best stitching gain 0.89 [0.88, 0.90] R² above the input baseline at L0→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-2 is doing from what Sundial is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Sundial→Chronos-2: best stitching gain 0.91 [0.90, 0.92] R² above the input baseline at L1→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-Bolt is doing from what Chronos-2 is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-2→Chronos-Bolt: best stitching gain 0.89 [0.88, 0.91] R² above the input baseline at L0→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-2 is doing from what Chronos-Bolt is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-Bolt→Chronos-2: best stitching gain 0.91 [0.90, 0.92] R² above the input baseline at L1→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Chronos-Bolt is doing from what Sundial is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Sundial→Chronos-Bolt: best stitching gain 0.88 [0.86, 0.89] R² above the input baseline at L1→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • You can predict what Sundial is doing from what Chronos-Bolt is doing better than you could from the raw input alone — real shared structure, not just both models seeing the same data.

      [exploratory — not pre-registered] L2 — Chronos-Bolt→Sundial: best stitching gain 0.87 [0.85, 0.88] R² above the input baseline at L0→L0 (CI excludes zero).

      Caveats

      This is a linear-translatability measure -- scored as a gain over an input-only baseline specifically so it isn't just "both models saw the same data" -- not a causal or mechanistic claim. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

Clustering

  • The two models group the data into largely the same clusters.

    [exploratory — not pre-registered] Clusters — partition agreement AMI=0.60 [0.57, 0.63]; 1.0 means both models carve the benchmark identically, 0 means unrelated groupings.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

L3 — causal structure

  • Of the ways this run damaged the input, 'level_shift' moved the forecasts most and 'dropout' least — but the two also alter different amounts of the series, which the breakdown table shows alongside.

    [exploratory — not pre-registered] L3 — strongest corruption by model-averaged forecast change is level_shift (Δ=11.33, altering 38% of the input); weakest is dropout (Δ=0.76, altering 8%).

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • TimesFM and Chronos-2 react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'spike'-style corruption.

    [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.51 [0.50, 0.53]; most divergent corruption: spike (ρ=-0.79 [-0.80, -0.78]).

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    5 more of the same kind
    • TimesFM and Sundial react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'spike'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.50 [0.49, 0.52]; most divergent corruption: spike (ρ=-0.97 [-0.98, -0.96]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • TimesFM and Chronos-Bolt react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'detrend'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.52 [0.50, 0.53]; most divergent corruption: detrend (ρ=-0.87 [-0.90, -0.83]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-2 and Sundial react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'level_shift'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.81 [0.79, 0.82]; most divergent corruption: level_shift (ρ=-0.21 [-0.25, -0.17]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-2 and Chronos-Bolt react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'noise'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.90 [0.89, 0.91]; most divergent corruption: noise (ρ=-0.85 [-0.92, -0.79]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Sundial and Chronos-Bolt react to data-corrupting changes at similar points in their depth overall, but they disagree most about where they notice 'noise'-style corruption.

      [exploratory — not pre-registered] L3 — fingerprint agreement ρ=0.92 [0.92, 0.93]; most divergent corruption: noise (ρ=-0.55 [-0.58, -0.50]).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • TimesFM's forecasts barely change when data is corrupted with 'dropout', but change the most under 'level_shift' — though these corruptions weren't all made equally strong, so that comparison is only rough.

    [exploratory — not pre-registered] L3 — TimesFM: least behaviorally-sensitive corruption is dropout (0.78), most is level_shift (11.43) — not necessarily comparable, since corruption strengths are not calibrated to match.

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    2 more of the same kind
    • Sundial's forecasts barely change when data is corrupted with 'dropout', but change the most under 'level_shift' — though these corruptions weren't all made equally strong, so that comparison is only rough.

      [exploratory — not pre-registered] L3 — Sundial: least behaviorally-sensitive corruption is dropout (0.82), most is level_shift (10.76) — not necessarily comparable, since corruption strengths are not calibrated to match.

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

    • Chronos-Bolt's forecasts barely change when data is corrupted with 'dropout', but change the most under 'level_shift' — though these corruptions weren't all made equally strong, so that comparison is only rough.

      [exploratory — not pre-registered] L3 — Chronos-Bolt: least behaviorally-sensitive corruption is dropout (0.70), most is level_shift (11.52) — not necessarily comparable, since corruption strengths are not calibrated to match.

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Chronos-2's forecasts barely change when data is corrupted with 'spike', but change the most under 'level_shift' — though these corruptions weren't all made equally strong, so that comparison is only rough.

    [exploratory — not pre-registered] L3 — Chronos-2: least behaviorally-sensitive corruption is spike (0.49), most is level_shift (11.59) — not necessarily comparable, since corruption strengths are not calibrated to match.

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • In TimesFM, 5 of 6 corruption types are repaired by a different part of the network near-term than far-future.

    [exploratory — not pre-registered] L3 horizon-resolved patching — TimesFM: the layer best restoring horizon step 1 differs from the layer best restoring the final step for: deseasonalize, dropout, level_shift, spike, warp. The remaining 1 share one depth — within the captured surface only; ~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2).

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2)) -- the coverage qualifier.

    3 more of the same kind
    • In Chronos-2, 3 of 6 corruption types are repaired by a different part of the network near-term than far-future.

      [exploratory — not pre-registered] L3 horizon-resolved patching — Chronos-2: the layer best restoring horizon step 1 differs from the layer best restoring the final step for: dropout, noise, warp. The remaining 3 share one depth.

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

    • In Sundial, 4 of 6 corruption types are repaired by a different part of the network near-term than far-future.

      [exploratory — not pre-registered] L3 horizon-resolved patching — Sundial: the layer best restoring horizon step 1 differs from the layer best restoring the final step for: deseasonalize, dropout, noise, spike. The remaining 2 share one depth — within the captured surface only; ~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

    • In Chronos-Bolt, 2 of 6 corruption types are repaired by a different part of the network near-term than far-future.

      [exploratory — not pre-registered] L3 horizon-resolved patching — Chronos-Bolt: the layer best restoring horizon step 1 differs from the layer best restoring the final step for: deseasonalize, dropout. The remaining 4 share one depth — within the captured surface only; ~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched)) -- the coverage qualifier.

Attention

  • TimesFM has a specific attention head that specializes in looking back exactly one season for 'block_bootstrap'-type data — a seasonality detector.

    [exploratory — not pre-registered] Attention — TimesFM: strongest periodicity head L1·h8 (excess seasonal mass 0.04, family block_bootstrap) — within the captured surface only; ~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2)) -- the coverage qualifier.

    1 more of the same kind
    • Chronos-2 has a specific attention head that specializes in looking back exactly one season for 'block_bootstrap'-type data — a seasonality detector.

      [exploratory — not pre-registered] Attention — Chronos-2: strongest periodicity head L3·h5 (excess seasonal mass 0.41, family block_bootstrap).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

  • TimesFM's forecast depends noticeably on one specific attention head (L0·h11) — disabling it measurably hurts accuracy.

    [exploratory — not pre-registered] Attention — TimesFM: most load-bearing head L0·h11 (ΔMASE +0.198 (this model is deterministic; the delta is real signal) when ablated).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The effect exceeds this model's own repeat-run noise floor, so it is not explained by ordinary call-to-call variation alone.

    2 more of the same kind
    • Chronos-2's forecast depends noticeably on one specific attention head (L11·h7) — disabling it measurably hurts accuracy.

      [exploratory — not pre-registered] Attention — Chronos-2: most load-bearing head L11·h7 (ΔMASE +0.055 (this model is deterministic; the delta is real signal) when ablated).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The effect exceeds this model's own repeat-run noise floor, so it is not explained by ordinary call-to-call variation alone.

    • Chronos-Bolt's forecast depends noticeably on one specific attention head (L5·h7) — disabling it measurably hurts accuracy.

      [exploratory — not pre-registered] Attention — Chronos-Bolt: most load-bearing head L5·h7 (ΔMASE +0.157 (this model is deterministic; the delta is real signal) when ablated).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The effect exceeds this model's own repeat-run noise floor, so it is not explained by ordinary call-to-call variation alone.

  • Judged on the coarser model's own timescale, Chronos-2's most seasonal attention head is L3·h5.

    [exploratory — not pre-registered] Attention — Chronos-2: at the resolution-matched 32-step lag axis, the strongest periodicity head is L3·h5 (excess seasonal mass 0.06, family block_bootstrap). This, not the native ranking, is the number a cross-model claim may cite — binning to the coarsest model's token width discards finer periodicity by construction, which is the cost of making the two comparable.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

SAE features

  • Of 29 sparse dictionaries trained, 29 have enough live features to read from.

    [exploratory — not pre-registered] SAE dictionary health: 29 of 29 targets pass their dead-feature bar; 0 of 29 fail to align to labelled properties above their own permutation null.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • In TimesFM, learned internal features track 2 real properties of the input series: seasonal component count, dominant period.

    [exploratory — not pre-registered] SAE — TimesFM: across 10 analyzed layers the strongest STRUCTURAL correlates (provenance regressed out) are n_seasonalities, seasonal_period_dominant; strongest is feature 3921 at stacked_xf.6 matching n_seasonalities (ρ=0.31, n=555) — within the captured surface only; ~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~57% of TimesFM's forward computation is unobserved (34.6M parameters (15%) lie outside the 20 blocks this run's layer regex matched; 10 of 20 matched blocks are skipped by capture_layer_stride=2)) -- the coverage qualifier.

    1 more of the same kind
    • In Sundial, learned internal features track 2 real properties of the input series: seasonal component count, dominant period.

      [exploratory — not pre-registered] SAE — Sundial: across 9 analyzed layers the strongest STRUCTURAL correlates (provenance regressed out) are n_seasonalities, seasonal_period_dominant; strongest is feature 5065 at model.layers.7 matching seasonal_period_dominant (ρ=0.38, n=443) — within the captured surface only; ~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

      Caveats

      This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

  • In Chronos-2, learned internal features track 3 real properties of the input series: autocorrelation strength, seasonal component count, dominant period.

    [exploratory — not pre-registered] SAE — Chronos-2: across 7 analyzed layers the strongest STRUCTURAL correlates (provenance regressed out) are ar_coeff_sum, n_seasonalities, seasonal_period_dominant; strongest is feature 561 at encoder.block.11 matching n_seasonalities (ρ=0.36, n=555).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

  • In Chronos-Bolt, learned internal features track 2 real properties of the input series: changepoint count, dominant period.

    [exploratory — not pre-registered] SAE — Chronos-Bolt: across 3 analyzed layers the strongest STRUCTURAL correlates (provenance regressed out) are n_changepoints, seasonal_period_dominant; strongest is feature 4586 at encoder.block.3 matching seasonal_period_dominant (ρ=0.29, n=443) — within the captured surface only; ~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched)) -- the coverage qualifier.

  • 44% of ablation panels show a near-flat forecast.

    [exploratory — not pre-registered] Ablation panel flatness: 585 of 1326 panels (44.1%) have forecast sd < 10% of context sd. Noise-like contexts (lag-1 autocorrelation < 0.2, n=399) are flat 90.7% of the time; smooth contexts (lag-1 > 0.8, n=597) are flat 9.9% of the time. Flat panels score better on MASE (median 0.819 vs 1.625 for non-flat panels).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • All 4 models build features for the same 4 basic properties of the data, but TimesFM is alone in devoting a large share of its features to ar order.

    [exploratory — not pre-registered] SAE — 4 of 10 structural properties are accounted for by all 4 models (ar_coeff_sum, n_changepoints, n_seasonalities, seasonal_period_dominant); the largest model-specific coverage is TimesFM on ar_order (10% of its matched features at TimesFM/stacked_xf.6), which no other model reaches.

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • Of 9 sparse-feature concepts found across this run's models, 9 are universal, 0 are partial, 0 are model-specific when checked against every other model's own dictionary.

    [exploratory — not pre-registered] SAE concept universality: of 9 concepts across 4 analyzed target(s), 9 universal, 0 partial, 0 model-specific (checked against 3 other model(s) per target).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • In Chronos-2/encoder.block.6, a cluster of 3 sparse features named 'strong raises horizon_shape_near · unusually raises mase' causally moves the forecast beyond what random steering of the same size does.

    [exploratory — not pre-registered] SAE concepts — Chronos-2/encoder.block.6 (universal): 2 concept(s) in this run's top 9 by interest; strongest is 'strong raises horizon_shape_near · unusually raises mase' (3 members), dominant profile effect 4.42x its own null.

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

    2 more of the same kind
    • In Chronos-2/encoder.block.8, a cluster of 4 sparse features named 'strong raises horizon_shape_far · unusually raises trend' causally moves the forecast beyond what random steering of the same size does.

      [exploratory — not pre-registered] SAE concepts — Chronos-2/encoder.block.8 (universal): 2 concept(s) in this run's top 9 by interest; strongest is 'strong raises horizon_shape_far · unusually raises trend' (4 members), dominant profile effect 3.20x its own null.

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

    • In Chronos-Bolt/encoder.block.4, a cluster of 8 sparse features named 'strong raises seasonal' causally moves the forecast beyond what random steering of the same size does.

      [exploratory — not pre-registered] SAE concepts — Chronos-Bolt/encoder.block.4 (universal): 2 concept(s) in this run's top 9 by interest; strongest is 'strong raises seasonal' (8 members), dominant profile effect 3.27x its own null — within the captured surface only; ~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched).

      Caveats

      This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~21% of Chronos-Bolt's forward computation is unobserved (28.8M parameters (60%) lie outside the 6 blocks this run's layer regex matched)) -- the coverage qualifier.

  • In Sundial/model.layers.5, a cluster of 3 sparse features named 'strong raises horizon_shape_near · unusually raises horizon_shape_far' causally moves the forecast beyond what random steering of the same size does.

    [exploratory — not pre-registered] SAE concepts — Sundial/model.layers.5 (universal): 3 concept(s) in this run's top 9 by interest; strongest is 'strong raises horizon_shape_near · unusually raises horizon_shape_far' (3 members), dominant profile effect 2.29x its own null — within the captured surface only; ~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

  • Of 293 individual SAE features measured across this run, feature 4993 in Sundial/model.layers.7 moves the forecast most convincingly when ablated.

    [exploratory — not pre-registered] SAE causally interesting individual features: 293 feature(s) across 9 target(s) clear at least one channel's null in the ablation battery; strongest is Sundial/model.layers.7 feature 4993 (7 of 9 channels clearing, fingerprint magnitude 62.98) — within the captured surface only; ~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved).

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. Within the captured surface only (~78% of Sundial's forward computation is unobserved (15.0M parameters (12%) lie outside the 12 blocks this run's layer regex matched; the captured forward pass performs only 23% of the FLOPs of a full forecast at this run's decode settings; the remainder (a decoder, or repeated sampled decode steps) runs unobserved)) -- the coverage qualifier.

Exemplars

  • This report shows 15 worked examples across 5 kinds of data, chosen to span the range from the biggest to the smallest disagreement within each kind.

    [exploratory — not pre-registered] Exemplars — 15 case studies rendered across 5 families; selection spans each family's own MASE-gap distribution.

    Caveats

    This is a single illustrative example chosen to make an aggregate pattern concrete, not a statistical claim on its own. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it.

  • 5 of the 15 worked examples show a difference between the models no bigger than the variation one model shows against itself when run twice.

    [exploratory — not pre-registered] Exemplars — 5/15 selected series have a cross-model MASE gap below one repeat-run noise floor.

    Caveats

    This is a single illustrative example chosen to make an aggregate pattern concrete, not a statistical claim on its own. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. The effect exceeds this model's own repeat-run noise floor, so it is not explained by ordinary call-to-call variation alone.

Confirm — held-out test

  • 1 of 1 accuracy differences spotted earlier in this report held up when re-tested on fresh, never-before-seen data.

    CONFIRM — 1/1 dev family hypotheses confirmed on the private benchmark (paired bootstrap, Holm α=0.05).

    Caveats

    This is a purely behavioral (input-to-output) comparison and needs no interpretability machinery to be trusted on its own terms. Pre-registered on the sealed private corpus and tested exactly once -- this is confirmatory evidence, the gold standard this report's evidence ladder builds toward. The two models are not matched in size or compute (Parameters: 1.94×; FLOPs per forward (per series): 1.17×) -- the fairness card treats parameter/FLOPs asymmetry as qualifying every quality claim.

  • 9 of 9 claims about where in depth the two models react to a given kind of data corruption held up on fresh, never-before-seen data.

    CONFIRM — L3 fingerprint agreement: 9/9 registered per-corruption values replicate on private data (overall ρ=0.51 [0.49, 0.53]).

    Caveats

    This is a causal measurement made separately within each model; comparing the two models' curves is a comparison of two within-model causal results, not a causal claim that spans architectures. Pre-registered on the sealed private corpus and tested exactly once -- this is confirmatory evidence, the gold standard this report's evidence ladder builds toward.

  • The strongest similarity found earlier between the two models' internal representations held up on fresh data.

    CONFIRM — peak-CKA layer pair replicates on private data (0.43 [0.42, 0.44]).

    Caveats

    This is a geometric similarity measure between two models' representations (do they organize the data alike), not evidence that the models compute anything the same way. Pre-registered on the sealed private corpus and tested exactly once -- this is confirmatory evidence, the gold standard this report's evidence ladder builds toward. The two models' depth axes only partially overlap (94.7% overlap) -- depth comparisons are only valid within that shared range.

  • 20 of 20 claims that two models' dictionaries select the same series for a shared concept held up on fresh, never-before-seen data.

    CONFIRM — concept transfer: 20/20 registered concept_transfer claims confirmed on private data (Holm α=0.05).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Pre-registered on the sealed private corpus and tested exactly once -- this is confirmatory evidence, the gold standard this report's evidence ladder builds toward.

Report-level checks

  • 1 of this report's accuracy-change numbers are small enough that they could just be random noise from calling a model twice, not a real effect.

    Noise floor — 1 of 4 ΔMASE values in this report fall at or below their own model's repeat-run noise floor; findings suppressed as uninterpretable: Attention head ranking (Sundial).

    Caveats

    This is a descriptive measurement of what is present, not a claim about which model is better or why. Exploratory: found by looking at the dev corpus, where many comparisons were tried, so treat it as a hypothesis rather than an established result unless the Confirm section replicates it. This fell at or below the model's own repeat-run noise floor and should not be read as a real effect.

Before the numbers

How to read this report

Each section below answers a progressively stronger question, and each one exists because of a specific limitation in the question before it. Read a number's strength according to which rung it sits on, not by how confident its chart looks:

  • Geometric (Representational geometry) — do two models' layers organize the benchmark similarly at all? Correlational; the models seeing the same input inflates this on its own.
  • Linearly-translatable (Stitching probes) — can one model's layer be linearly mapped to the other's, beyond what a plain input-feature probe already achieves? Stronger than geometry, still not causal.
  • Causal, within one model (Perturbation & patching, head/MLP ablation) — does intervening on this model's own activations actually change its own forecast? The strongest evidence short of confirmation, but never compared across models by transplanting activations between them (only the resulting within-model curves are compared).
  • Descriptive (Model internals, Activation clusters) — how does a model organize its own representations, on its own terms? No cross-model or causal claim at all.
  • Illustrative (Exemplar case studies) — concrete series chosen because they show a difference clearly, not because they're typical; useful for intuition, not for estimating how often something happens.
  • Confirmatory (Private benchmark confirmation) — the one section tested exactly once, on held-out data no exploration above ever touched. Treat it as the actual evidence; treat everything above it as hypothesis-generation, however significant it looks.

Two terms recur in almost every chart below. A window is a pooled ~32-timestep interval (`alignment.window`), not one raw model timestep — every model's tokens are pooled onto this same axis specifically so an architecture reading one timestep per token and one reading many become comparable at all. Relative depth rescales each layer's position to 0–1 so models with different layer counts sit on a shared axis — a convention that makes comparison possible, not a claim that the same relative depth means the same computational stage in both architectures. Sign conventions (whether a positive Δ means better or worse) differ section to section and are restated locally in each chart's own note — check before comparing a ΔMASE bar to a ΔR² heatmap.

Glossary — the terms that recur below

Activation patching
Writing a model's own cached clean activations back into its corrupted forward pass, one layer (and optionally one window) at a time, so that recovered forecast quality localizes where a property is causally carried; always within one model, never transplanted between models. Where it appears: Perturbation & patching's restoration curves and layer × window heatmaps.

AMI (adjusted mutual information)
How much two clusterings of the same series agree, corrected for the agreement expected by chance, used to ask whether two models carve the benchmark into similar groups without requiring their cluster labels to correspond. Where it appears: Activation clusters.

Captured FLOP fraction (coverage)
The share of a model's real per-forecast computation that the captured layers actually perform, measured rather than assumed — an encoder-only capture surface or a strided capture leaves the rest unobserved, and any depth-located claim about a model below 90% carries that qualifier automatically. Where it appears: The fairness card; Cost and capacity; auto-appended to depth-located findings.

catch22 (feature space)
The 22 (or 24, adding mean/std) general-purpose time-series features `benchmark_validation` computes per series and robustly scales (with winsorization against outlier swamping) before computing diversity, effective dimensionality, or near-collisions on them — the space every diversity number in this report is measured in, never the UMAP coordinates used only for the companion plot. Where it appears: The corpus card's diversity and feature-space-map figures.

Concept
A group of SAE features from one model's dictionary whose removal moves the forecast in the same way (the same channels, the same direction), found by clustering each feature's ablation fingerprint and admitted only when every group has at least a minimum number of members, so a dictionary whose causal features do not group is reported as non-modular rather than forced into concepts. Where it appears: The SAE section's concept cards; produced by the concepts stage.

Concept atlas
A grouping of causal SAE features pooled across every model and clustered by ablation-fingerprint similarity, so that every pair inside a group clears a minimum cosine, groups below the minimum size stay unassigned, and a group can span several models (unlike a plain 'concept', which stays within one model's dictionary). Where it appears: The SAE section's concept atlas figure and table; produced by the concepts stage.

Convergent concept
An atlas concept whose member models share the same causal EFFECT on the forecast but fire on different, unrelated INPUTS per model — a measured finding about this run's own data, not a weaker or failed version of a fully shared concept. Where it appears: Model comparison — sharing-class column and Q1's answer box.

Corruption sensitivity fingerprint
A layers × corruptions matrix of how much each layer's activations move when a specific structural property is destroyed in the input, forming a per-model signature whose *shape across depth* is what gets compared across models — never the raw magnitudes, which are not calibrated between corruptions. Where it appears: Perturbation & patching's sensitivity heatmap and cross-model agreement.

Crystallization depth
The shallowest relative depth at which the skip-lens forecast is already within a set tolerance (10% by default) of the model's final forecast quality — where the answer is essentially settled, not where computation stops. Where it appears: Forecast lens.

Dead feature
A dictionary atom in a trained sparse autoencoder that never activates on any evaluation row, so it contributes nothing and inflates any statistic computed over "all features"; the dead rate is reported because a mostly-dead dictionary can otherwise look like a healthy one. Where it appears: Sparse features (SAE) — dictionary health, next to reconstruction fidelity.

Depth axis (`index` / `block` / `compute`)
Which definition of "how deep" a figure uses: `index` counts only the layers this run captured, `block` (the default) counts every block in the whole stack including surfaces never captured, and `compute` uses cumulative measured FLOPs; an encoder-only capture surface therefore caps well below 1.0 on `block` rather than misleadingly reaching it. Where it appears: The fairness card's "Depth axis" row, and every depth-plotted figure's own note.

Diagonal-hit fraction (alignment)
The share of probe windows where injecting an impulse at window *w* perturbs aligned window *w* most, verifying empirically that the token-to-time mapping an adapter declares is true for the installed library version; below 1.0 at late layers is normal, near zero anywhere is a broken mapping. Where it appears: The Alignment & Provenance panel; run by a gate at extraction time.

Effective dimensionality
The participation ratio of a representation's PCA spectrum — roughly, how many directions actually carry variance — used as a descriptive profile of where a model expands or compresses, not as a quality score. Where it appears: Model internals' per-layer depth profile.

Epoch (corpus)
A fresh, non-overlapping seed range used to mint a brand-new private split when an existing one is suspected of having leaked, so a peeked-at private corpus is regenerated rather than reused. Where it appears: The corpus card's header line; private benchmark confirmation.

Evidence class
The rung a claim sits on — geometric, linearly-translatable, causal-within-model, descriptive, illustrative, or confirmatory — stated for every finding so that a confident-looking chart cannot be read as stronger evidence than its method supports. Where it appears: "How to read this report", and the caveat under every finding.

Evidence ladder
The six rungs a cross-model concept claim climbs, from weakest to strongest: same forecast effect, same driving inputs, reproducible across an independent SAE seed, other models' own dictionaries select the same inputs, the same causal effect measured on the same inputs, and confirmed on a sealed private corpus — a concept's verdict names the highest rung it actually reaches, and a rung nothing in this run measures renders 'not measured', never a failed rung. Where it appears: Model comparison — the verdict table; produced by `report/derived.py::concept_verdicts`.

Family and archetype
Two levels of benchmark grouping: the *family* is which generator produced a series (`parametric`, `random_parametric`, `mixture`, …) and the *archetype* is the structural recipe drawn within it (`seasonal_dominant`, `intermittent_bursts`, …); per-family statistics are the unit multiple-comparison correction is applied across. Where it appears: Behavioral profile, Representational geometry's per-family CKA, Activation clusters.

Far horizon
Shape of the late part of the forecast -- its furthest-out steps -- a higher value changes the long-range forecast's shape by a larger amount. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Flatness
How close the forecast is to a constant line -- a higher value makes the forecast closer to a flat, constant line. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Frequency balance
Centre of mass of the forecast's frequency spectrum -- low means the forecast is dominated by slow, smooth movement, high means by fast wiggles -- a higher value shifts the forecast toward higher-frequency, choppier movement. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Ground-truth feature alignment
The correlation between a learned sparse feature's activation and a known generator parameter (a seasonal period, a trend order, an anomaly flag), which is this repo's substitute for the subjective max-activating-example judgment usual in SAE work; because each feature is matched to its *best* of many candidate fields, it is read against a label-permutation null. Where it appears: Sparse features (SAE).

Holm correction
The multiple-comparison adjustment applied across families so that testing several groups at once does not manufacture a significant result; a claimed strength needs both a corrected p below alpha and a confidence interval excluding zero. Where it appears: Behavioral profile; Private benchmark confirmation.

Input-feature baseline
A deliberately simple probe (raw window values, FFT magnitudes, summary statistics) predicting the same targets the stitching map does, whose whole job is to absorb the part of the agreement that follows from shared input rather than shared learned structure. Where it appears: Stitching probes; the quantity every reported gain is measured against.

Leakage (instance-level vs. distributional)
Two different failures a benchmark can have: instance-level leakage is the exact series having been seen in a model's training data, which the leakage gate audits directly against real reference series; distributional leakage is only *that kind* of data having been seen, which is carried by construction for every `real_derived`-tier sample and cannot be audited by this or any other check. Where it appears: The corpus card's leakage-gate figure and trust ladder.

Level
Mean value of the forecast -- its overall height -- a higher value raises the whole forecast. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Linear CKA
A 0–1 similarity between two models' representations of the same series at a chosen layer pair, computed on the shared window axis and bootstrapped with the series as the resampling unit; it is correlational, and both models seeing the same input inflates it on its own. Where it appears: Representational geometry (the layer-pair heatmap and its depth curve).

MASE
Mean absolute error divided by the error of a naive same-scale baseline on the same series, so that 1.0 means "no better than naive" and series of wildly different amplitudes can be averaged together; series whose scale denominator is too small to be reliable are excluded and counted, not silently kept. Where it appears: Behavioral profile (the primary forecast-quality metric), and every ΔMASE elsewhere.

Mean ablation (head / MLP)
Replacing one attention head's or MLP's output with its average over the batch and measuring the forecast damage, which ranks components by how load-bearing they are without needing to know what they compute. Where it appears: Attention analysis' head and MLP ΔMASE rankings.

Minimal sufficient set
The smallest set of a model's own attention heads found by a greedy search whose patching restores most of a corruption's damage — sufficient because patching it works, but never proven the unique or provably smallest such set, since a greedy search only ever finds *a* small set, not *the* smallest. Where it appears: The seasonality circuit.

Near horizon
Shape of the first part of the forecast -- the steps just after the context ends -- a higher value changes the near-term forecast's shape by a larger amount. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Near-collision fraction
In the catch22 feature space — never on UMAP coordinates — the fraction of series whose nearest neighbor sits closer than a fixed threshold; a distinct diversity signal from the shape-matching redundancy fraction, since the two are computed on different representations and never merged until the report. Where it appears: The corpus card's diversity figure.

Necessity
Whether ablating a candidate head set on an otherwise-clean forecast damages it toward the fully-corrupted level — the complement of sufficiency, and required alongside it because either alone is a weaker claim than both together. Where it appears: The seasonality circuit.

Noise floor
How much a model's own metric moves between two identical repeat runs (nonzero for a sampled decoder, zero for a deterministic one), measured so that a delta can be reported as a multiple of it rather than against an implied zero — a ΔMASE under about 2× its own floor is not interpretable. Where it appears: The fairness card's determinism row; every ΔMASE in ablation, patching and SAE sections.

Path patching
Decomposing one head's total causal effect into a direct part (measured with every other head in the found set frozen at its clean value) plus a part routed through each other head individually, then checking whether the parts sum back to the total — a check that can fail even for a correctly-implemented decomposition, if the heads genuinely interact nonlinearly rather than contributing independent, additive paths. Where it appears: The seasonality circuit.

Periodicity head
An attention head that puts more mass than a uniform-baseline share at multiples of a series' dominant seasonal lag — the time-series analogue of an induction head, identified by lag profile rather than by what it is named. Where it appears: Attention analysis' head taxonomy.

Probe decodability
The held-out accuracy of a simple linear classifier reading a property (family, seasonality, trend) straight off a layer's activations, which establishes that the information is linearly *present* there and nothing more — never that the model uses it. Where it appears: Model internals; the SAE section's ground-truth alignment.

Provenance-driven
Said of a concept's part when what best explains which series it fires on is a fact about how the benchmark was BUILT (which tier or generator produced a series) rather than a structural property of the time series itself, so 'fires on sequential_par series' is read as a property of the corpus, not of time series in general. Where it appears: Model comparison — every input-profile table; produced by `sae/concept_profiles.py`.

Random-direction null
The same causal channel battery re-run on directions drawn at random from the same activation space instead of a trained SAE feature's decoder direction, so a channel response is only quotable once it is compared against how large a response chance alone produces, not against zero. Where it appears: SAE causal channel testing (Component A).

Reach
Whether a patched-in intervention (a feature direction, a layer's activations) actually changes anything the forecast head reads, checked before any effect is trusted — confirmed by two controls: patching a layer into itself must move the forecast by exactly 0.0, and patching an earlier layer into a later read must move it by something nonzero; a clean, flat, entirely plausible-looking curve can still mean the intervention never reached anywhere the model reads. Where it appears: SAE causal channel testing (Component A).

Redundancy fraction
The share of all pairwise series comparisons — by cross-correlation or banded DTW shape matching, after z-normalization — that fall below a near-duplicate distance threshold; a high value can be a true finding rather than a defect, e.g. many pure-seasonal series sharing one period and differing only in noise. Where it appears: The corpus card's diversity figure, read alongside effective dimensionality.

Registered hypothesis
A dev-corpus finding written down *before* the private corpus is opened; only registered hypotheses can be confirmed, and a finding discovered afterwards cannot be rescued by the confirmation stage no matter how strong it looks. Where it appears: Private benchmark confirmation; the "[exploratory]" prefix marks everything that is not one.

Relative depth
A layer's position rescaled to 0–1 so models with different layer counts share one axis — a convention that makes the comparison drawable, not a claim that the same fraction is the same computational stage in two architectures. Where it appears: Model internals, Forecast lens, Representational geometry, Perturbation — any curve plotted against depth.

Response fingerprint
A feature's or role's vector of null-normalized responses across the causal channel battery, used as the primary signal for matching one model's roles against another's by cosine similarity — a match rate computed this way is never rendered without its own untrained-twin floor beside it, because two architecturally similar but never-jointly-trained models can already look substantially 'matched' by chance. Where it appears: Cross-model role correspondence table (Component C).

Role
A cluster of a single model's SAE features that share a similar structural signature and causal response profile, named from its dominant response channel and its best-matching ground-truth field — a description of that model's own feature space, not a claim that any other model has an equivalent role until cross-model matching (see response fingerprint) has actually checked. Where it appears: Superseded by concept clustering (2026-09-11) -- see the concept cards and concept universality table instead; the roles table/role cards this pointer named are no longer rendered.

RSA (representational similarity analysis)
The rank-correlation companion to CKA: instead of comparing representations directly it compares each model's *matrix of series-to-series distances*, so it survives any monotone rescaling CKA would not. Where it appears: Representational geometry, reported alongside CKA.

Sealed corpus (public dev / private test)
A corpus written with per-sample hashes and a manifest, split into a public dev half used for all exploration and a private test half drawn from a disjoint seed range that is opened exactly once; the private half is a consumable, and a peeked one is replaced rather than reused. Where it appears: Private benchmark confirmation; the run header's dataset line.

Seasonal strength
Energy in the forecast concentrated at the series' own dominant repeating rhythm -- a higher value makes the forecast more strongly periodic. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Sharing class
Whether an atlas concept's models also agree on the INPUTS that drive it, not just its effect: 'shared' when every model in it is connected through agreeing cross-model input pairs, 'partially shared' when only some pairs agree, 'convergent' when none do, and 'single-model' when only one model holds the concept at all. Where it appears: Model comparison — the sharing map and every concept card; produced by `sae/concept_profiles.py`.

Skip lens and tuned lens
Two ways to ask what forecast a middle layer already implies: the skip lens patches that layer's states in as the final block's output and lets the model's own head decode them, while the tuned lens fits a held-out ridge probe instead, correcting the skip lens's miscalibration at early layers. Where it appears: Forecast lens.

sMAPE and pinball loss
The two companion forecast metrics: sMAPE is a symmetric percentage error (scale-free but unstable near zero), and pinball loss scores the predicted *quantiles* rather than the point forecast, which is the only one of the three sensitive to whether a model's uncertainty is honest. Where it appears: Behavioral profile's per-family metric table.

Spread
How much the forecast varies within itself (its standard deviation) -- a higher value makes the forecast swing more from step to step. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Stitching gain
The extra held-out R² a ridge map from one model's layer to the other's achieves *above* a hand-crafted input-feature probe on the same targets — the gain, never the raw R², is the evidence, because the models read the same input and a raw R² is therefore partly trivial. Where it appears: Stitching probes (both directions, A→B and B→A, reported separately).

Sufficiency
Whether patching a candidate head set's clean values into an otherwise-corrupted forecast restores it toward the clean level — the complement of necessity. Where it appears: The seasonality circuit.

The series as the resampling unit
Every bootstrap and every train/test split in this repo resamples whole series, never windows, because windows within one series are strongly dependent and every model scores the same series — splitting on windows would make every interval far too narrow. Where it appears: Every confidence interval and p-value in the report.

Tier (`synthetic` / `real_derived`)
Whether a benchmark series touched real data at all: `synthetic` series are generated from scratch and carry exact ground truth with no distributional leakage, while `real_derived` series are built from real corpora and inherit their distribution even though every instance still passes the leakage audit. Where it appears: The corpus this run reads; recorded per sample in the sealed manifest.

Token width
How many timesteps one of a model's tokens covers (about 32 for a patch tokenizer, 1 for a per-timestep quantizer), which sets the finest lag that model's attention can express and is multiplied into every plotted lag axis so a lag of 300 means the same 300 timesteps for every model. Where it appears: Attention analysis' lag axes; the fairness card's finest-resolvable-lag row.

Transfer
Whether another model separates the same series a concept fires hardest on, scored as the best of that model's features against random series sets drawn with the same mix of series kinds, and called reciprocal only when that feature's own top series are in turn separated by the original concept. Where it appears: The SAE section's concept universality table; produced by the concepts stage.

Trend
Slope of the forecast -- whether it rises or falls as it continues forward -- a higher value pushes the forecast to slope upward more steeply. Where it appears: Sparse features (SAE) -- the causal channel battery's evidence columns, and every channel name rendered from it.

Untrained-twin floor
The same measurement run against a randomly-initialized copy of a model's own architecture, giving the level any two networks of that shape reach before either has learned anything; a similarity that fails to clear it is architecture, not learning. Where it appears: Null-baseline comparisons for CKA and stitching gain.

Window
A pooled fixed-length interval of real time (32 timesteps by default, `alignment.window`) that every model's own tokens are mapped onto, so an architecture reading one timestep per token and one reading thirty-two become comparable at all; it is a unit of time, never a unit of any one model's tokenization. Where it appears: Every cross-model section — the shared [series, window, dim] axis all of them operate on.

Methods appendix — estimator details for reviewers

Linear CKA and RSA (L1 representational geometry) Source: tsfm_lens/analysis/l1_geometry.py's own module docstring
L1 — representational geometry. Linear CKA between every selected layer pair, computed in feature space on the accelerator: with column-centered X and Y, CKA = ||Y'X||_F^2 / (||X'X||_F ||Y'Y||_F), which equals Gram-based linear CKA exactly while never materializing an N x N matrix. Global similarity uses window-level rows for statistical power; family-conditioned similarity uses series-level embeddings so "on which data regimes do these models agree" gets a direct answer. RSA (Spearman-correlated representational dissimilarity matrices) is an optional second opinion that is invariant to linear transforms in a different way than CKA. CKA is correlational: it evidences shared geometry, not shared mechanism. L2 and L3 exist to push past that limitation.

Ridge stitching (L2 cross-model probes) Source: tsfm_lens/analysis/l2_stitching.py's own module docstring
L2 — cross-model stitching probes. For strided layer pairs and both directions, a closed-form ridge regression maps one model's window states onto the other's, evaluated as R^2 on a held-out series split. The critical control: both models saw the same input, so predictability alone can reflect shared input structure rather than shared computation. An input-feature baseline (raw window values, FFT magnitudes, summary statistics) predicts the same targets, and only the gain above that baseline is reported as evidence of shared learned structure. Splits are by series, never by window, to prevent leakage between highly correlated windows of one series.

Forecast lens -- skip lens and tuned ridge lens Source: tsfm_lens/analysis/lens.py's own module docstring
Forecast lens — the logit-lens analog for forecasting models. Answers "where in depth does each model's forecast crystallize?", the missing bridge between the behavioral level (L0) and every representation-level analysis. Two complementary lenses per layer: 1. Skip lens: layer-l token states are patched in as the final block's output and the model's own head produces a forecast from them -- "head" meaning whatever that architecture actually uses, which for an encoder-decoder is its entire decoder. This is the direct logit-lens translation — it uses the model's real output pathway and needs no access to head internals, only the existing `token_patch` primitive. Like classic logit lens it can be miscalibrated at early layers, which is exactly what the second lens corrects for. 2. Tuned lens: a held-out ridge probe from each layer's stored window states to (a) the model's own final forecast and (b) the true targets. High R^2 against the final forecast at layer l means the forecast is already linearly readable there even if the raw head cannot decode it. Every model in a run gets both lenses, so a claim of the form "this one front-loads then compresses, that one accumulates" becomes a testable statement about where forecast quality appears in depth, not just where family information does. The shapes are named from the measured curves; no architecture is described here in advance, since this docstring is rendered verbatim into the report's methods appendix and would otherwise assert something about models the run may not contain. The skip lens inherits L3 patching's constraints: one batch per call (contexts capped at the model batch size) and a forecasting path that calls the backbone once per prediction.

MASE / sMAPE / pinball (L0 behavioral profiling) Source: tsfm_lens/analysis/l0_behavioral.py's own module docstring
L0 — behavioral profiling. Answers the purely behavioral questions ("is one model better on high-frequency data?") before any internals are touched, and generates the family-level hypotheses the mechanistic levels then try to explain. Metrics are computed per series and aggregated per family: MASE against the naive one-step scale of each context, sMAPE, and mean pinball loss over the configured quantiles.

Bootstrap designs -- paired, cluster, percentile Source: tsfm_lens/analysis/stats.py's own module docstring
Shared statistical machinery for every stage. The resampling unit is always the series. Windows within a series are strongly dependent, both models score the same series, and corruptions are applied to the same series — so cluster (series-level) bootstrap and paired designs are the honest defaults throughout. Family-level comparisons are Holm-corrected because a benchmark with a dozen families is a dozen hypotheses. Bootstrap p-values are approximate by construction and floored at 1/n_boot; they are decision aids, not precision instruments.

Adjusted mutual information (L4 activation clustering) Source: tsfm_lens/analysis/clustering.py's own module docstring
Activation clustering with approximate "what does this activate for" labels. Series-level embeddings at a chosen layer (by default, each model's side of the L1 peak-CKA pair) are clustered, and each cluster is labeled two ways: by benchmark ground truth (majority family and purity) and by interpretable signal statistics of its member series (dominant frequency, trend, noise level, spectral entropy, autocorrelation) expressed as z-scores against the corpus. The cross-model question "do these models carve the data the same way" is answered by adjusted mutual information between the two partitions plus a contingency matrix, which is robust to arbitrary cluster relabeling.

SAE fidelity and dead-feature rate
Reconstruction fidelity is fraction-of-variance-explained (`sae/eval.py::reconstruction_fidelity`) computed over held-out window rows at the store's own train/eval split; dead-feature rate is the fraction of dictionary atoms with zero activation above a threshold over the same rows. Neither carries a bootstrap CI in the current implementation -- both are point estimates over one already-large row sample, not a series-resampled statistic, so read them as descriptive rather than as having a stated uncertainty. The known, already-measured failure mode is severe: every SAE number recorded in this repo before the Stage 0 gate was measured on a dictionary **94.5-97.3% dead**, which the same subsystem later proved is not intrinsic -- an AuxK auxiliary loss the production `sae` stage still leaves off by default reaches 3.2% dead on the same checkpoints. A second, orthogonal failure mode: `forecast_preservation`'s original window-pooled broadcast approximation is exact for a patch-tokenizing model (TimesFM) but badly lossy for a per-timestep one (Chronos-T5), producing a ΔMASE of +3.9 that a token-granularity re-measurement of the identical trained SAE resolves to +0.25 -- **the invalidating assumption is that every captured model tokenizes at the same granularity as the pooling window**, which is false by construction for any model whose token width differs from `alignment.window`.

relative_decoder_norm (crosscoder shared/specific split)
`||dec_a[f]|| / (||dec_a[f]|| + ||dec_b[f]||)` per feature, on a **jointly** decoder-normalized crosscoder dictionary -- 0.5 reads as shared, 0 or 1 as source-specific. It is not resampled or bootstrapped in the current implementation, and its point value is provably sensitive to something orthogonal to the shared/specific question it is meant to answer: on a mostly-**dead** dictionary, dead atoms sit near a symmetric norm split by construction, which inflated the shared-fraction reading to roughly 98% before the Stage 0 gate produced a mostly-alive dictionary to measure it on properly. Even on that alive dictionary, a same-shape untrained-twin control read as *more* shared with itself than the real cross-model pair, and that control's own value proved **seed-fragile** (0.696-0.856 across 3 seeds) -- so **the invalidating assumption is that a single point estimate, or even a single-seed floor, is informative on its own**; this repo's own recorded practice is to never quote it without both an untrained-twin floor computed at multiple seeds and the dictionary's own alive-fraction stated alongside it.

Specification curve (analysis-knob robustness) Source: tsfm_lens/analysis/spec_curve.py's own module docstring
Specification curve over the analysis knobs. Every analysis knob in this repo is individually defended, and the defences are good -- but none is swept, and this repo's own history is evidence that matters: the layer-screen row records selector verdicts *flipping* when the gold ranking changed, and the L1/L2 untrained-weights null work records a verdict flipping depending on which layer of the null run it was read against. Knob sensitivity is a demonstrated property of this pipeline, not a hypothetical this module has to argue for. This is **not a pipeline stage** -- a standalone reducer over one already- completed run directory, exactly the shape of `report/meta_report.py` and `analysis/error_fingerprint.py`. It re-derives the corpus deterministically from the run's own `config_resolved.yaml` (contexts are not persisted in the activation store) and reads everything else -- predictions, lens curves, layer-screen scores, attention head tables, per-block FLOPs -- from artifacts already on disk. **No model is loaded and no forward pass is run.** Scope, per A2.1: only knobs that need no re-extraction. Six are swept: alignment.depth_axis index | block | compute | functional attention.resolution_mode native | matched l0.scale mean_abs_diff | seasonal_naive stats.n_boot configured value | 4x corpus_subsample_seed 3 seeds, 80% stratified draw layer_screen.method work_bend | coverage | factor_emergence Four claim families, one per group of `report/findings.json` claim_ids that actually depends on one of the six knobs above -- everything else in a run's findings is recorded as excluded, with the specific reason, rather than silently left out of the denominator (A2's own stated failure mode: "Silently sweeping a subset and reporting '11 of 11 robust' is the failure this bullet exists to prevent"): l0_strength_set which families a model is significantly stronger on (matches the `l0.*` "is significantly stronger on/ than" findings). Applicable: l0.scale, stats.n_boot, corpus_subsample_seed. lens_crystallization whether a model's forecast crystallizes within tolerance at all (matches `lens.*`). Applicable: alignment.depth_axis only -- the VALUE of a crystallization depth is axis-dependent by definition (the same layer gets a different coordinate under `index` vs `block`), so the only fair thing to compare across axes is the qualitative state (crystallizes / never crystallizes within the configured tolerance), not the raw number. layer_screen_selection which layers a selector method picks (matches `layer_screen.*`). Applicable: layer_screen.method only. Recomputed against the run's own MAIN store (already on disk), not a fresh stride-1 screening extraction -- the premise that this knob is "free" turned out to be wrong as literally stated (the dedicated screening store is deleted after selection by default, `layer_screen.keep_store: false`); re-running `coverage`/`factor_emergence` the way the pipeline stage does would need a second extraction pass, which A2.1 rules out of scope. What IS free is re-scoring the SAME three selectors against the main store's already-captured (possibly strided) layers -- exactly what `run_layer_screen` itself falls back to when `require_full_capture: false`. Every cell here is therefore marked `fair_to_all_layers: false`, an honest, stated deviation from the production selection's own fairness guarantee -- see this module's own Findings for the corrected premise. attention_periodicity which head is the strongest periodicity head (matches `attention.*`). Applicable: attention.resolution_mode only. Both resolutions are *always* computed and persisted in `attention/meta.json`, so this one needs no recomputation at all -- just reading two keys that are already on disk. A2.3: never render the best cell, only the fraction. A claim's `robust_frac` is computed over its *applicable* cells only -- a `not_applicable` cell is excluded from the denominator, never counted as robust (A2's own failure-mode bullet). `evidence_class` for every claim here is `descriptive`: this module answers "how much does the reported conclusion depend on an analysis choice", never "is this difference real" -- reading a specification curve as a significance test is the specific misuse A2 warns against.

Run coverage — 19 rendered, 2 skipped
SectionStatusDetail
At a glance — Model comparison — at a glance rendered
Fairness — The fairness card rendered
Corpus — The corpus card rendered
L0 — Behavioral profile rendered
Cost — Cost and capacity rendered
Frontend — Input front-end diagnostics rendered
Screen — Layer screening rendered
Profile — Model internals rendered
Lens — Forecast lens rendered
L1 — Representational geometry rendered
L2 — Stitching probes rendered
L4 — Activation clusters rendered
Similarity — Pair similarity across metrics rendered
L3 — Perturbation & patching rendered
Attention — Attention structure & head causality rendered
Circuit — The seasonality circuit skippedbuilder returned no content
SAE — Sparse feature dictionary rendered
Concepts — Cross-model concepts rendered
Exemplars — Exemplar case studies rendered
Spec curve — Analysis-knob robustness skippedbuilder returned no content
Confirm — Private benchmark confirmation rendered

family_key = auto → 5 family/families (block_bootstrap: 70, mixture: 290, parametric: 130, random_parametric: 425, sequential_par: 50).

Resolved configuration
run:
 name: concept_atlas_v2
 out_dir: runs
 device: [redacted]
 dtype: bfloat16
 seed: 0
 keep_models_loaded: false
data:
 source: sealed
 path:../../benchmark_large_v2/public_dev
 context_len: 512
 horizon: 64
 max_series: null
 family_key: auto
 smoke_series_per_family: 20
models:
- name: TimesFM
 adapter: timesfm
 checkpoint: google/timesfm-2.5-200m-pytorch
 layer_regex: ''
 batch_size: 32
 capture_layer_stride: 2
 kwargs: {}
 random_init: false
- name: Chronos-2
 adapter: chronos2
 checkpoint: amazon/chronos-2
 layer_regex: ''
 batch_size: 24
 capture_layer_stride: 1
 kwargs: {}
 random_init: false
- name: Sundial
 adapter: sundial
 checkpoint: thuml/sundial-base-128m
 layer_regex: ''
 batch_size: 16
 capture_layer_stride: 1
 kwargs: {}
 random_init: false
- name: Chronos-Bolt
 adapter: chronos_bolt
 checkpoint: amazon/chronos-bolt-small
 layer_regex: ''
 batch_size: 32
 capture_layer_stride: 1
 kwargs: {}
 random_init: false
alignment:
 window: 32
 sanity_check: true
 min_diagonal_frac: 0.5
 on_failure: warn
 calibrate_amplitude: true
 depth_axis: block
extraction:
 enabled: true
 store_dtype: float16
l0:
 enabled: true
 quantiles:
 - 0.1
 - 0.5
 - 0.9
 scale: mean_abs_diff
 min_scale_frac: 0.05
 noise_floor_repeats: 3
 noise_floor_series: 16
 calibration: true
 horizon_resolved: true
l1:
 enabled: true
 layer_stride: 1
 max_rows: 20000
 family_conditioned: true
 min_family_series: 15
 rsa: true
 rsa_max_series: 800
l2:
 enabled: true
 layer_stride: 1
 lambdas:
 - 0.001
 - 0.01
 - 0.1
 - 1.0
 val_frac: 0.25
 max_rows: 40000
 input_baseline: true
l3:
 enabled: true
 corruptions:
 noise:
 snr_db: 0.0
 detrend: {}
 deseasonalize:
 top_k: 2
 frequency_shift:
 factor: 2.0
 level_shift:
 position_frac: 0.6
 scale: 3.0
 spike:
 count: 8
 scale: 10.0
 smooth:
 kernel: 9
 warp:
 strength: 0.15
 dropout:
 frac: 0.15
 n_blocks: 3
 max_series: 800
 patching:
 enabled: true
 layer_stride: 2
 corruptions:
 - deseasonalize
 - noise
 - level_shift
 - spike
 - warp
 - dropout
 max_series: 16
 num_samples: 8
 per_window: true
 window_stride: 1
 horizon_resolved: true
 calibrate: none
lens:
 enabled: true
 layer_stride: 1
 max_series: 16
 tuned: true
 tuned_max_series: 800
 val_frac: 0.25
 lambdas:
 - 0.001
 - 0.01
 - 0.1
 - 1.0
 crystallization_tol: 0.1
 horizon_resolved: true
attention:
 enabled: true
 patterns: true
 max_series: 400
 batch_series: 16
 max_lag_tokens: 128
 ablation: true
 ablation_max_series: 16
 head_layer_stride: 1
 top_k: 5
 resolution_mode: matched
exemplars:
 enabled: true
 per_family: 3
 max_families: 5
stats:
 enabled: true
 n_boot: 2000
 n_boot_heavy: 200
 ci: 0.95
 alpha: 0.05
 min_series: 8
internals:
 enabled: true
 layer_stride: 1
 max_rows: 40000
 probe_pca_dim: 50
 probe_permutation_repeats: 5
 probe_max_iter: 2000
confirm:
 enabled: true
 source: sealed
 path:../../benchmark_large_v2/private_test
 max_series: 800
 require_seal: true
 alpha: 0.05
 concept_transfer_n_null: 2000
clustering:
 enabled: true
 layer: auto
 k: auto
 pca_dim: 50
 max_series: 800
 use_umap: true
layer_screen:
 enabled: true
 method: work_bend
 budget_frac: 0.25
 min_budget: 2
 max_series: 100000
 use_curvature: true
 min_gap: 1
 seed: null
 stride: 1
 require_full_capture: true
 keep_store: false
budget:
 enabled: true
 batch: 8
 repeats: 5
 warmup: 2
 measure_predict: true
 predict_repeats: 3
frontend:
 enabled: true
 max_series: 64
 quantization_resolution: true
 scale_equivariance: true
 scale_factors:
 - 1000.0
 - 0.001
 context_truncation: true
 context_truncation_n_points: 5
 context_truncation_min_frac: 0.125
 nan_handling: true
 nan_frac: 0.05
 nan_series: 8
sae:
 enabled: true
 checkpoints: {}
 targets: []
 dict_size_mult: 8
 k: 32
 lr: 0.001
 epochs: 60
 batch_size: 4096
 resample_dead_every_epochs: 5
 aux_k: 64
 aux_coef: 0.03125
 aux_dead_steps: 20
 min_train_steps: 720
 aux_dead_steps_frac: 0.028
 dict_size_policy: search
 dict_size_ladder:
 - 192
 - 384
 - 768
 - 1536
 - 3072
 - 6144
 max_dead_rate: 0.3
 min_fidelity: 0.5
 dict_size_search_seeds: 2
 dict_size_search_margin: 0.03
 n_seeds: 3
 holdout_frac: 0.2
 min_fidelity_gate: 0.85
 max_abs_delta_mase: 0.25
 layer_substitution_attempts: 2
 forecast_preservation_max_series: 16
 ground_truth_max_series: 2000
 ground_truth_permutation_repeats: 3
 ground_truth_permutation_max_features: 2000
 real_data_enabled: true
 real_data_source: Monash-University/monash_tsf
 real_data_n_windows: 4000
 real_data_pool_limit: 500
 feature_ablation_enabled: false
 feature_ablation_top_k: 8
 feature_ablation_max_series: 64
 feature_steering_enabled: false
 feature_steering_top_k: 8
 feature_steering_max_series: 64
 feature_steering_strength_sigma: 2.0
 persist_features: true
 role_k: auto
 role_min_silhouette: 0.1
 role_matching_untrained_twin_runs: {}
 role_matching_cosine_threshold: 0.5
 role_matching_depth_tolerance: 0.15
 describe_from_exemplars: true
 concepts_enabled: true
 concept_causal_only: true
 concept_k: auto
 concept_min_silhouette: 0.1
 concept_min_members: 3
 concept_misfit_cosine_gap: 0.3
 concept_cards_max: 24
 transfer_enabled: true
 transfer_top_k: 20
 transfer_n_null: 200
 transfer_seed: 0
 interest_weights:
 - 0.5
 - 0.3
 - 0.2
report:
 enabled: true
 title: "Concept Atlas \u2014 TimesFM 2.5, Chronos-2, Sundial, Chronos-Bolt"
 verbose: true
 verbose_series: 2
 allow_partial: false
corpus:
 enabled: true
 validation_report:../../validation_large/validation_report.json
concepts:
 enabled: true
 top_k_series: 8
 n_null_directions: 16
 max_series: 64
 keep_forecasts: 3
 n_features_per_rule: 12
 describe: true
 describe_top_features: 8
 atlas_enabled: true
 atlas_min_cosine: 0.9
 atlas_min_members: 3
 atlas_n_null: 200
 atlas_family_min_members: 5
 atlas_family_assign_min: 0.5
 atlas_family_sil_tol: 0.02
 n_sae_seeds: 3
 transfer_p_method: exact
 transfer_fdr_q: 0.05
 transfer_max_redraw: 5000
 profiles_enabled: true
 profile_n_perm: 1000
 min_relative_reach: 0.001
 level_share_threshold: 0.9
 shared_input_enabled: true
 shared_input_n_null: 50
 cf_enabled: false
 cf_max_series: 64
 cf_doses:
 - 0.0
 - 0.5
 - 1.0
 - 1.5
 - 2.0
 cf_n_null: 2000
 cf_encode_min_spearman: 0.98
 n_registered: 20
 transfer_claim_mode: search