Research note, retrospective calibration. This article documents what an hourly substrate observation grid records on the Ethereum L1 and Polygon PoS L1 chains, together with the Circle Cross-Chain Transfer Protocol Version 2 corridor between them, over calendar year 2025. The grid is the production v2.0 API contract, reconstructed retrospectively from public on-chain data via BigQuery. The full data, methodology, hashes and Ed25519 signatures are published in the agentnorthstar/calibration audit repository.
Three claims are not made and should not be read into the text. The article is not a hack detector: smart contract bugs, governance compromises and exchange breaches are out of scope by design. The article is not a forecaster: the regime classification qualifies the substrate state at a given hour, it does not predict the next hour. The article is not a verdict on RWA criticality: it identifies hours where the substrate diverges from its 30-day nominal, with cross-referencing against Tier A documented events for the year.
The CCTP V2 corridor between Ethereum and Polygon PoS is the first L1-to-L1 deployment of Circle's two-mode cross-chain settlement protocol. Polygon PoS CCTP V2 contracts were created on 2025-06-09, making the effective corridor window 2025-06-09 to 2025-12-31 plus residual Ethereum-side V2 activity from 2025-03-11 onward.
CCTP V2 introduces two physically distinct transit categories:
minFinalityThreshold ≤ 1000): off-chain Circle attestation, nominal transit 8 to 30 seconds.minFinalityThreshold == 2000): destination-chain hard finality plus attestation, nominal transit 13 to 30 minutes.Per-message cryptographic identification by nonce, the matching key applied in CCTP V1 corpora, is not available in V2: the message nonce is assigned off-chain by Circle's attestation service after MessageSent emission, and the empirical observation across all 266,263 MessageSent V2 events in the 2025 corpus confirms a nonce field of bytes32(0) at the source side. End-to-end transit reconstruction therefore proceeds via greedy proximity-window matching per (source_domain, destination_domain, mode_requested) bucket, with mode-specific plausibility windows (2 hours for Fast, 48 hours for Standard), documented in the corpus methodology and reproducible byte-for-byte from the locked Step 2 parquets.
The analysis uses an hourly journal covering 2025 that records, side by side, the state of Ethereum (the base chain), Polygon PoS (a settlement L1 connected by CCTP V2), and the bidirectional CCTP V2 corridor. Each row of the journal is one UTC hour. The corpus covers 8,760 hours; 7,272 hours fall outside the extended event windows and constitute the baseline reference.
The corpus is published in three sequentially locked steps, each Ed25519-signed before the next begins:
1b0ef577…, three Ed25519 signatures plus OpenTimestamps Bitcoin anchor.11e776d0…, Ed25519 signed.Five hourly metrics per chain compose the substrate matrix: rhythm_ratio (median inter-block interval over protocol target), continuity_ratio (fraction of expected blocks present in the hour), sigma_demand (gas variance coefficient of variation versus its 30-day EMA), size_demand (average transactions per block versus EMA), tx_demand (total hourly transaction throughput versus EMA). Each metric is paired with a signed shift, with EMA versions used to compute axis-level drift composites and one of twelve signed regime codes per chain per hour (S1D1, S1D2+, S1D2-, S1D2±, S2+D1, S2-D1, S2+D2+, S2+D2-, S2+D2±, S2-D2+, S2-D2-, S2-D2±), via production-calibrated thresholds applied without recalibration.
Sixteen CCTP V2 corridor latency observables are computed per hour, one set of four percentile metrics per (direction, mode) channel: messages_observed_1h, p50, p90, p99 attestation latency in seconds. The four channels are eth_to_pol_fast, eth_to_pol_standard, pol_to_eth_fast, pol_to_eth_standard.
Twelve events of 2025 qualify under Tier A inclusion criteria (academic, institutional, or primary source per the methodology contract). Their listing and hot windows are recorded in INCIDENTS_2025.md, locked at Step 1. The hot windows range from 1 hour (Heimdall V2 hard fork) to approximately 30 days (Polygon CCTP V2 deployment month).
For each event, the matrix capture is read as the fraction of hours in the hot window where the chain regime is non-S1D1 (any of the eleven non-nominal codes). The reference comparison is the baseline non-S1D1 firing rate over the 7,272 hours outside extended event windows: 39.2% on Ethereum, 34.1% on Polygon. A hot-window firing rate above this baseline indicates substrate divergence above the year-long ambient level; a rate at or below indicates the matrix did not register the event above ambient noise.
| Event | Scope | Hot duration | ETH non-S1D1 | POL non-S1D1 | Capture |
|---|---|---|---|---|---|
CCTP_V2_MAINNET_LAUNCH_2025_03_11 | CCTP V2 corridor | 24h | 16.7% | 4.2% | Correctly silent (protocol launch, POL V2 not yet active) |
ETH_PECTRA_MAINNET_2025_05_07 | ETH | 8h | 50.0% | 25.0% | Captured ETH |
CCTP_V2_POLYGON_DEPLOYMENT_2025_06 | CCTP V2 corridor | 30d | 31.9% | 29.6% | Correctly silent (progressive deployment, no acute substrate stress) |
POL_HEIMDALL_CONSENSUS_2025_07_30 | POL | 2h | 100% | 50.0% | Captured POL |
ETH_KILN_MASS_VALIDATOR_EXIT_2025_09_09 | ETH | 18d | 30.1% | 39.1% | Not captured on ETH (validator-set event, outside block-level matrix scope) |
ETH_SSV_MASS_SLASHING_2025_09_10 | ETH | 24h | 29.2% | 62.5% | Not captured on ETH (validator slashing, outside block-level matrix scope) |
POL_HEIMDALL_MILESTONE_2025_09_10 | POL | 12h | 41.7% | 58.3% | Captured POL |
POL_HEIMDALL_V2_HARD_FORK_2025_09_16 | POL | 1h | 100% | 100% | Captured POL (and ETH cross-chain) |
USDE_DEPEG_CASCADE_2025_10_10 | ETH+POL+CCTP | 10h | 50.0% | 70.0% | Captured both chains |
ETH_FUSAKA_MAINNET_2025_12_03 | ETH | 8h | 62.5% | 62.5% | Captured ETH (and POL cross-chain) |
ETH_BPO1_MAINNET_2025_12_09 | ETH | 8h | 37.5% | 62.5% | Marginal on ETH (at baseline), captured cross-chain on POL |
POL_BOR_RPC_2025_12 | POL | 7d | 65.5% | 56.0% | Captured POL (and ETH cross-chain) |
Bolded values indicate firing rates materially above the baseline on the chain documented as the event scope.
Aggregate reading: seven events are captured at materially elevated rates on the chain documented as the event scope (Pectra, Heimdall consensus, Heimdall milestone, Heimdall V2 fork, USDe, Fusaka, Bor RPC). Two events are correctly silent: the protocol launches and deployment windows (March mainnet launch and June Polygon deployment) are operational milestones rather than substrate stress events, and the matrix legitimately does not fire above baseline. One event (BPO1) shows a marginal signal on the expected chain at baseline level. Two events fail to fire on the expected chain: Kiln mass validator exit and SSV mass slashing. Both are validator-set events documented by their primary sources as observable via "exit queue dynamics, churn rate, and beacon participation rate"; none of these three metrics is in the Step 3 matrix, which operates exclusively on block-level data. The Step 3 matrix is therefore structurally insensitive to validator-level perturbations of this magnitude.
The 7-of-12 capture on expected chain corresponds to 10-of-12 mechanically coherent readings when the two "correctly silent" non-stress events are included: the matrix returns the expected response, whether elevated or flat, for ten of the twelve sourced events. The two failures are bounded by the documented scope of the matrix (substrate mechanics) and indicate a known limitation, not a measurement defect.
A finer breakdown of the regime codes observed during the twelve hot windows reveals a uniform pattern. Non-nominal hours fall almost exclusively on the demand axis (S1D2 variants: S1D2+, S1D2-, S1D2±), while the structural axis (S2 variants, indicating rhythm anomaly relative to the calibrated thresholds) remains essentially silent across the corpus. The per-event counts of S1D2-any, S2-any, and S2D2-combined hours are reported below.
Production thresholds applied: Ethereum rhythm S2 = 1.12, sigma D2 = 1.10, size D2 = 1.20, tx D2 = 1.10 (D2 triggers when at least 2 of 3 demand axes cross their threshold). Polygon rhythm S2 = 1.04, sigma D2 = 1.14, size D2 = 1.18, tx D2 = 1.23 (same 2-of-3 rule). Source: l1_thresholds Postgres table, production calibration of 2026-04-29 (calibration log entry #017).
| Event | Hot hours | ETH S1D2 any | ETH S2 any | ETH S2D2 | POL S1D2 any | POL S2 any | POL S2D2 |
|---|---|---|---|---|---|---|---|
CCTP_V2_MAINNET_LAUNCH_2025_03_11 | 24 | 4 | 0 | 0 | 1 | 0 | 0 |
ETH_PECTRA_MAINNET_2025_05_07 | 8 | 4 | 0 | 0 | 2 | 0 | 0 |
CCTP_V2_POLYGON_DEPLOYMENT_2025_06 | 720 | 230 | 0 | 0 | 213 | 0 | 0 |
POL_HEIMDALL_CONSENSUS_2025_07_30 | 2 | 2 | 0 | 0 | 1 | 0 | 0 |
ETH_KILN_MASS_VALIDATOR_EXIT_2025_09_09 | 432 | 130 | 0 | 0 | 169 | 0 | 0 |
ETH_SSV_MASS_SLASHING_2025_09_10 | 24 | 7 | 0 | 0 | 15 | 0 | 0 |
POL_HEIMDALL_MILESTONE_2025_09_10 | 12 | 5 | 0 | 0 | 7 | 0 | 0 |
POL_HEIMDALL_V2_HARD_FORK_2025_09_16 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
USDE_DEPEG_CASCADE_2025_10_10 | 10 | 5 | 0 | 0 | 7 | 0 | 0 |
ETH_FUSAKA_MAINNET_2025_12_03 | 8 | 5 | 0 | 0 | 5 | 0 | 0 |
ETH_BPO1_MAINNET_2025_12_09 | 8 | 3 | 0 | 0 | 5 | 0 | 0 |
POL_BOR_RPC_2025_12 | 168 | 110 | 0 | 0 | 93 | 1 | 1 |
| Total across 12 events | 1,417 | 506 | 0 | 0 | 519 | 1 | 1 |
Out of twenty-four event-chain pairs across all twelve hot windows totalling 1,417 hours, exactly one hour exhibits an S2 code (the December Polygon Bor RPC degradation, one hour on Polygon out of 168 hot hours; that hour is simultaneously S2 and D2, yielding the only S2D2 reading in the entire event-window inventory). The Ethereum structural axis stays calibration-nominal across all twelve events. The Polygon structural axis stays calibration-nominal across eleven of twelve events.
The reading is direct. The 2025 ETH-POL CCTP V2 sourced events register on the demand axis (S1D2 variants), not on the structural axis. Hard forks, validator-set events, depeg cascades, and consensus bugs of the magnitude documented in the inventory translate into transaction-throughput, gas-variance, and block-size deviations large enough to cross the calibrated D2 thresholds, but they do not translate into rhythm-ratio deviations large enough to cross the calibrated S2 thresholds (1.12 on Ethereum, 1.04 on Polygon) at hourly granularity.
The implication for any descriptive criterion tying "critical" to the combined S2D2 regime code is direct: under that strict criterion, zero of twelve sourced events qualifies on Ethereum, and one of twelve qualifies for one hour on Polygon. An independent year-scan with the S2D2 criterion would surface effectively zero critical hours on the 2025 corpus. The S2D2 criterion is mechanically defensible but not informative on this corpus. The appropriate sensitivity level for descriptive matrix reading on 2025 ETH-POL is therefore the broader S1D2-or-above non-nominal envelope, which is what the firing rates in the previous table report.
Extending the regime-code reading from the twelve hot windows to the full 8,760 hours of 2025 provides a year-wide reference. The distribution per chain is reported below, with hours categorised into the four canonical regime classes: S1D1 (nominal), S1D2 (demand axis stressed, structural axis nominal), S2D1 (structural axis stressed, demand axis nominal), and S2D2 (both axes stressed). Production thresholds apply as documented in Section 2.1.
| Regime class | ETH hours | ETH share | POL hours | POL share |
|---|---|---|---|---|
| S1D1 (nominal) | 5,370 | 61.30% | 5,740 | 65.53% |
| S1D2 (demand stressed) | 3,390 | 38.70% | 3,008 | 34.34% |
| S2D1 (structural stressed) | 0 | 0.00% | 1 | 0.01% |
| S2D2 (both stressed) | 0 | 0.00% | 11 | 0.13% |
| Total | 8,760 | 100% | 8,760 | 100% |
The year-wide reading sharpens the hot-window finding of Section 2.1. Ethereum does not cross the calibrated rhythm-ratio S2 threshold (1.12) at hourly granularity at any point in 2025: zero hours in S2D1 and zero hours in S2D2 across the full year. Polygon crosses S2 twelve times in the year (one hour S2D1 and eleven hours S2D2). The remaining 35 to 39 percent of non-nominal hours on each chain are in the S1D2 envelope, consistent with the demand-axis dominance documented inside hot windows.
The temporal distribution of the twelve Polygon S2 hours is concentrated: eleven of the twelve fall in a single consecutive cluster between 2025-07-10 16:00 UTC and 2025-07-11 02:00 UTC (one hour S2+D1, ten hours S2+D2± or S2+D2+), and one isolated hour falls on 2025-12-17 23:00 UTC inside the documented Bor RPC degradation window. The July 10-11 cluster of eleven consecutive S2 hours on Polygon is the strongest year-wide substrate signal on the chain. It is not in the Tier A documented inventory of Step 1. Two readings are compatible: an undocumented Polygon substrate perturbation that did not pass the institutional materiality threshold of the academic literature reviewed at Step 1, or a non-event ambient excursion of the matrix on Polygon. Distinguishing the two requires cross-referencing with sources outside the academic literature considered in this work, which is left open.
Cross-chain co-occurrence is the next observable. An hour where both chains are simultaneously non-S1D1 is the joint state in which an agent routing through the corridor would face stress signals on both endpoints. The counts are reported below.
| Joint regime state (ETH, POL) | Hours | Share of year |
|---|---|---|
| Only ETH non-S1D1 (POL nominal) | 2,189 | 24.99% |
| Only POL non-S1D1 (ETH nominal) | 1,819 | 20.76% |
| Both chains non-S1D1 simultaneously | 1,201 | 13.71% |
| of which (ETH S1D2, POL S1D2) | 1,196 | 13.65% |
| of which (ETH S1D2, POL S2D2) | 4 | 0.05% |
| of which (ETH S1D2, POL S2D1) | 1 | 0.01% |
| Both chains nominal | 3,551 | 40.54% |
1,201 hours of joint cross-chain stress over the year represent 13.71 percent of 2025. Clustering these joint-stressed hours by a 48-hour gap tolerance produces 28 distinct windows. The five longest windows by span are reported below, with the count of joint-stressed hours inside each window.
| Window start (UTC) | Window end (UTC) | Span | Joint-stressed hours | Documented events inside |
|---|---|---|---|---|
| 2025-10-15 10:00 | 2025-12-31 13:00 | 1,852h | 414 | Fusaka, BPO1, Bor RPC |
| 2025-07-20 18:00 | 2025-08-15 16:00 | 623h | 143 | none in inventory |
| 2025-04-11 19:00 | 2025-05-07 14:00 | 620h | 103 | terminates at Pectra activation |
| 2025-06-23 10:00 | 2025-07-11 18:00 | 441h | 85 | none in inventory |
| 2025-09-06 21:00 | 2025-09-23 13:00 | 401h | 61 | Kiln, SSV, Heimdall milestone, Heimdall V2 fork |
| 2025-09-27 19:00 | 2025-10-12 08:00 | 350h | 44 | USDe depeg cascade |
The 48-hour clustering interval merges the entire fourth quarter into a single 1,852-hour super-window, which absorbs Fusaka, BPO1 and Bor RPC into one cluster and limits the discriminative power of the inventory. A tighter clustering interval would produce more separable windows; the 48-hour choice is retained here for direct comparability with the methodology applied in published companion analyses. Two long windows on the year carry no Tier A documented event in the inventory (July-August 623h, June-July 441h). Their interpretation is left open: either undocumented substrate variation outside the scope of the academic literature reviewed at Step 1, or extended ambient conditions that did not meet the institutional materiality threshold for tokenized assets.
The year-wide reference of Section 2.2 establishes that 13.71 percent of 2025 hours show both chains simultaneously non-S1D1. Reading the same joint-stress decomposition inside each of the twelve hot windows produces a per-event signature. For each event, the four mutually exclusive joint states are counted: both chains stressed, only Ethereum stressed (Polygon nominal), only Polygon stressed (Ethereum nominal), both chains nominal. The proportion of "both stressed" hours within the hot window is the per-event joint-stress rate and is reported below alongside the documented chain scope.
| Event | Documented scope | Hot N | Both stressed | ETH only | POL only | Both nominal | Joint-stress rate |
|---|---|---|---|---|---|---|---|
POL_HEIMDALL_V2_HARD_FORK_2025_09_16 | POL | 1 | 1 | 0 | 0 | 0 | 100.0% |
USDE_DEPEG_CASCADE_2025_10_10 | ETH+POL+CCTP | 10 | 5 | 0 | 2 | 3 | 50.0% |
POL_HEIMDALL_CONSENSUS_2025_07_30 | POL | 2 | 1 | 1 | 0 | 0 | 50.0% |
ETH_BPO1_MAINNET_2025_12_09 | ETH | 8 | 3 | 0 | 2 | 3 | 37.5% |
POL_BOR_RPC_2025_12 | POL | 168 | 57 | 53 | 37 | 21 | 33.9% |
ETH_FUSAKA_MAINNET_2025_12_03 | ETH | 8 | 2 | 3 | 3 | 0 | 25.0% |
ETH_PECTRA_MAINNET_2025_05_07 | ETH | 8 | 2 | 2 | 0 | 4 | 25.0% |
POL_HEIMDALL_MILESTONE_2025_09_10 | POL | 12 | 2 | 3 | 5 | 2 | 16.7% |
ETH_SSV_MASS_SLASHING_2025_09_10 | ETH | 24 | 4 | 3 | 11 | 6 | 16.7% |
ETH_KILN_MASS_VALIDATOR_EXIT_2025_09_09 | ETH | 432 | 54 | 76 | 115 | 187 | 12.5% |
CCTP_V2_POLYGON_DEPLOYMENT_2025_06 | CCTP corridor | 720 | 78 | 152 | 135 | 355 | 10.8% |
CCTP_V2_MAINNET_LAUNCH_2025_03_11 | CCTP corridor | 24 | 0 | 4 | 1 | 19 | 0.0% |
| Total / weighted average | — | 1,417 | 209 | 297 | 311 | 600 | 14.7% |
The aggregate joint-stress rate over the 1,417 hot-window hours, 14.7 percent, is statistically indistinguishable from the year-wide baseline of 13.71 percent. At the aggregate level the matrix does not show that being inside a sourced event window materially raises the probability of joint cross-chain stress. The averaging hides a strongly heterogeneous per-event distribution, however, with three clearly separable tiers.
Tier 1, joint-stress dominant (50 percent and above). Three events show joint cross-chain stress on at least half of their hot-window hours: the Polygon Heimdall V2 hard fork (1 hour, 100 percent joint), the USDe depeg cascade documented as cross-chain in its primary source (50 percent joint), and the July Polygon Heimdall consensus halt (50 percent joint on 2 hours). The USDe case is the only event of the twelve with an explicit cross-chain scope declared at Step 1 in the inventory; the empirical joint-stress signature matches the documentation. The two Heimdall cases are documented as Polygon-only events, but the matrix records significant Ethereum activity in lock-step.
Tier 2, moderate joint stress (25 to 40 percent). Four events sit between one quarter and one third joint cross-chain stress: BPO1 (37.5 percent), Bor RPC degradation (33.9 percent), Fusaka activation (25 percent), Pectra activation (25 percent). Three of the four are Ethereum events triggering measurable Polygon co-firing; one is a Polygon event (Bor RPC) triggering Ethereum co-firing. Joint-stress rates two to three times the year-wide baseline are observed across both directions of propagation.
Tier 3, single-chain dominant or near-baseline (below 25 percent). Five events stay near or below the year-wide baseline of 13.71 percent joint stress: Heimdall milestone (16.7 percent), SSV slashing (16.7 percent), Kiln validator exit (12.5 percent), Polygon CCTP V2 deployment month (10.8 percent), and the March CCTP V2 mainnet launch (0 percent). The two CCTP corridor events at the low end are operational protocol milestones rather than substrate stress events, and the matrix legitimately does not surface joint cross-chain firing on them. Kiln and SSV are the two events that fail to register on the expected chain at Section 2; their joint-stress rates are correspondingly weak, consistent with the validator-set scope being outside the block-level matrix.
Two readings are compatible with this distribution. Either the corridor itself (USDC settlement flows, cross-chain demand spillover, attestation pipeline coupling) mechanically transmits substrate stress between the two chains during certain event categories, in which case Tier 1 and Tier 2 events expose corridor coupling and Tier 3 events expose its absence. Or the joint-stress signature reflects ambient market conditions that co-occur with documented events of a certain type without a direct on-chain mechanism, in which case the tier structure reflects the typology of the underlying market regimes more than substrate causality. The data presented here cannot decide between the two readings. The asymmetry of certain responses (the Heimdall V2 fork propagates with 100 percent Ethereum firing during a single one-hour Polygon window) suggests the corridor channel carries some of the signal, but a formal attribution would require either an exogenous instrument or a longer corpus with multiple repetitions of each event type.
Methodological note on bridge state classification. The Step 3 methodology of this corpus explicitly excludes any threshold-based bridge state classification on CCTP V2 latency. METHODOLOGY.md §3 Step 3 states verbatim: "No threshold-based classification (BS1, BS2, or any equivalent) is computed at this step. A BS classification would require fitting a calibration window to the latency observable itself, which would put a derived state in the same row as the observable from which it is derived. That co-presence creates a tautological dependence between the predictor and the outcome and is therefore excluded by construction." Consequently, this article reports raw latency observables (counts, p50, p90, p99 per direction and per mode), not a BS1/BS2 attribution per hour. The absolute thresholds used later for the precursor outcomes (Section 5, 5 minutes for Fast and 1 hour for Standard) are pre-engaged for that downstream analysis only and do not constitute a bridge state classification of the corridor.
Production calibration status. In the production v2.0 API, BS1/BS2 calibration on CCTP routes is documented as Phase 2B collection with calibration window post 2026-05-20 on a P97 14-day rolling on attestation latency. CCTP V2 is additionally not yet instrumented in the production collector, which captures CCTP V1 routes only at the time of this article. Any BS1/BS2 reading exposed by the production panel for the ETH-POL corridor would derive from a future extension of the collector to V2 and a subsequent calibration pass not yet completed. The latency observables in this article are therefore a research reconstruction from BigQuery, distinct from any production BS attestation surface.
The proximity-window matching produces 6,548 message pairs from the 6,583 messages observed in the ETH-POL corridor across 2025, a 99.5% pairing coverage. The breakdown:
| Direction | Mode | Sent | Paired | Unpaired |
|---|---|---|---|---|
| eth_to_pol | Fast | 2,063 | 2,056 | 7 |
| eth_to_pol | Standard | 2,063 | 2,060 | 3 |
| pol_to_eth | Fast | 1,358 | 1,336 | 22 |
| pol_to_eth | Standard | 1,099 | 1,096 | 3 |
Unpaired Sent rows correspond predominantly to messages emitted late in 2025 whose Received counterpart lands in 2026, outside the corpus window.
Baseline latency medians computed over the 7,272 hours outside extended event windows, restricted to hours with at least one observed message in the relevant channel:
| Direction | Mode | Median p50 latency | Mean p50 latency | Mechanical reference |
|---|---|---|---|---|
| eth_to_pol | Fast | 43 s | 249 s | 8-30 s Circle nominal Fast |
| eth_to_pol | Standard | 17 min | 43 min | ~13-17 min Ethereum 2-epoch finality plus attestation |
| pol_to_eth | Fast | 46 s | 140 s | 8-30 s Circle nominal Fast |
| pol_to_eth | Standard | 114 min | 280 min | ~30-60 min Polygon Heimdall checkpoint plus Ethereum finality plus attestation |
The three first medians fall within the published Circle nominal ranges. The pol_to_eth Standard median at 114 minutes is plausibly explained by Polygon Heimdall checkpointing latency to Ethereum (30 to 60 minutes), Ethereum 2-epoch finality (~13 minutes), and Circle attestation. A residual contribution from cross-mode pairing in the proximity-window method (Fast-requested messages that Circle executed in Standard finality picked up by the Standard window) cannot be ruled out and is documented as a limitation. The mean-to-median ratio of 2 to 6 across all four channels is consistent with a right-tailed distribution dominated by sporadic stress events, the empirical signature this analysis seeks to attribute.
The matrix capture in Section 2 is a concurrent observation: the regime classification qualifies the substrate state at the same hour as the documented event. A separate question, addressed in this section, is whether substrate shift dynamics in the hours preceding a corridor latency excursion carry a precursor signal. This question is addressed by a pre-engaged 1,376-configuration exploration on V2-anchored outcomes.
The intuitive starting point for an agent-orientation signal would be the composite drift block exposed in the production v2.0 API (drift.structural, drift.demand, and their _magnitude_delta companions). On prior corpora, that composite tested against an aggregate cross-chain stress outcome did not produce statistically validated lift under strict placebo permutation and Benjamini-Hochberg FDR correction. A simple replication of the same logic on the 2025 ETH-POL CCTP V2 corpus returns the same negative result: averaging the absolute demand-axis shifts and reading their hour-to-hour change does not anticipate the regime transitions S1D1 to non-S1D1 with usable lift. The transitions are too frequent on the calibrated thresholds (approximately 948 entries and 949 exits on Ethereum over the post-January 2025 window) and the aggregated magnitude trend too noisy to serve as a directional indicator at hourly granularity.
The signal that survives strict statistical correction is concentrated in narrower configurations: single-axis predictors targeting direction-specific or mode-specific outcomes, sustained over K consecutive hours, evaluated at a specific lead window, calibrated per chain. This is the per-chain precursor family that the v3 API design exposes through an explicit precursors[] array, replacing the composite drift block. The current production migration migration_delta_precursors_v3.sql seeds the calibration table with 7 validated precursors derived from prior CCTP V1 corpora published in the research note of 2026-05-20: six on the Arbitrum corridor and one on the Optimism corridor, each surviving combined FDR alpha = 0.05 with lift greater than or equal to 1.5 times on its own corpus, and each documented with cross_chain_status indicating non-transferability to other chains.
The pre-engagement of this article applies the same statistical machinery on ETH-POL CCTP V2: single-axis grid, multi-axis grouped predictors, cross-chain configurations, BH FDR alpha = 0.05 within family and combined across all configurations, lift threshold of 1.5 times, 500 placebo permutations per configuration. Two scope-specific adaptations are declared explicitly in the pre-engagement document (Section 5.1 below): four mode-direction outcomes pre-declared in place of one composite outcome (because CCTP V2 exposes two physically distinct transit modes), and absolute-time thresholds anchored on the V2 protocol's nominal categories instead of ratios to monthly medians (because the V1 ratio formulation is calibrated on a single-mode distribution and does not transfer to the V2 two-mode regime). The pre-engagement is Ed25519 signed at SHA-256 b6c64efc... before the protocol is executed against the panel.
The 19 surviving configurations reported in Section 6 are the empirical output of this protocol on the 2025 ETH-POL CCTP V2 corpus. They are research-stage candidates, not exposed in the production v3 API at the time of writing. Production exposure would require either a subsequent migration to seed the calibration table with the V2 corridor precursors, or a cross-corridor validation pass (currently not feasible in 2025 in the absence of a sibling L1-to-L1 CCTP V2 corridor). The numerical comparison of survivors across corpora is also bounded by methodological differences: the configuration grid here is 1,376 against 648 on the prior CCTP V1 corpora; the outcomes are V2-specific (four mode-direction outcomes against one aggregate stress outcome); the underlying protocol differs (CCTP V2 versus V1). The count of 19 versus 7 is therefore a difference of test space and outcome structure, not a direct quality comparison across corpora.
The pre-engagement is a written document (analysis/PREENGAGEMENT_V2.md) fixing all parameters before the analysis is executed, Ed25519-signed under namespace invarians_preengagement_eth_pol_cctp_v2_delta_v1 at SHA-256 b6c64efc…. No parameter is tuned after results are observed. Negative outcomes are reported with the same rigor as positive outcomes. The discipline is documented in agentnorthstar/calibration.
Outcomes. Four mode-direction outcomes, defined on absolute latency thresholds anchored on the V2 protocol's nominal transit categories rather than on ratios to monthly medians (the latter being calibrated for the single-mode V1 distribution and not transferable to V2's two-mode regime):
| Outcome | Definition | Anchor | Positive hours | % of corpus |
|---|---|---|---|---|
fast_eth_to_pol_stressed | p90 latency > 300 s AND n ≥ 1 | ~10x nominal Fast (300s = 5 min) | 392 | 4.475% |
fast_pol_to_eth_stressed | p90 latency > 300 s AND n ≥ 1 | Same | 53 | 0.605% |
standard_eth_to_pol_stressed | p90 latency > 3600 s AND n ≥ 1 | ~3.5x nominal Standard (3600s = 1h) | 78 | 0.890% |
standard_pol_to_eth_stressed | p90 latency > 3600 s AND n ≥ 1 | Same | 424 | 4.840% |
Predictors. Ten substrate shift axes produced by the locked Step 3 matrix: five on Ethereum (rhythm_ratio_shift, continuity_ratio_shift, sigma_demand_shift, size_demand_shift, tx_demand_shift) and five symmetrical axes on Polygon. For each axis at each hour t, the shift-magnitude delta smd(t) = |shift(t)| - |shift(t-1)| is computed; an instant alert triggers when smd(t) exceeds a per-axis quantile (pctl in {0.85, 0.90, 0.95}) of the non-January distribution; a sustained alert requires K consecutive instant alerts (K in {1, 2}).
Lead window. The predictor is evaluated against the OR of the outcome label over the next L hours, with L in {3, 6, 12, 24}.
Statistical machinery. Each configuration is evaluated for true positives, false positives, true negatives, false negatives, precision, recall, base rate, alert rate, and lift (precision divided by base rate). A 500-permutation placebo test shuffles the outcome label sequence and recomputes lift under random label assignment to derive an empirical p-value. Benjamini-Hochberg FDR correction at alpha = 0.05 is applied within each strategy family and across all 1,376 configurations combined. The survival criterion is combined FDR p-adjusted < 0.05 AND lift ≥ 1.5x.
Strategy families. Three families are retained:
Two families are dropped with stated rationale: F2 (alternative outcomes) is redundant since the four outcomes are already declared per (direction, mode); F3 (logistic regression) is dropped because the per-outcome positive sample size on a sparse V2 corridor is insufficient for stable training across an H1/H2 temporal split.
Eligibility. Hours in January 2025 are excluded (EMA warmup). Hours currently in the outcome state are excluded for that outcome's test (focus on lead-time prediction, not concurrent detection).
| Family | Configs | Raw p < 0.05 | FDR survives within family | FDR + lift ≥ 1.5x |
|---|---|---|---|---|
| F0 single-axis | 960 | 139 | 40 | 15 |
| F1 multi-axis | 256 | 18 | 6 | 1 |
| F4 cross-chain | 160 | 27 | 7 | 3 |
| Total | 1,376 | 184 | 53 | 19 |
Nineteen configurations survive the combined-FDR plus lift criterion. The complete list, ranked by lift:
| Family | Axis | K | Pctl | Lead | Outcome | Lift | Precision | Alert rate |
|---|---|---|---|---|---|---|---|---|
| F0 | eth_size_demand_shift | 2 | 0.95 | 24h | fast_pol_to_eth | 4.22 | 43.5% | 0.29% |
| F0 | eth_tx_demand_shift | 2 | 0.95 | 24h | fast_pol_to_eth | 4.22 | 43.5% | 0.29% |
| F0 | pol_continuity_ratio_shift | 2 | 0.95 | 24h | standard_eth_to_pol | 4.01 | 14.8% | 0.68% |
| F0 | eth_tx_demand_shift | 2 | 0.9 | 24h | fast_pol_to_eth | 2.81 | 28.9% | 1.04% |
| F0 | eth_tx_demand_shift | 2 | 0.9 | 12h | fast_pol_to_eth | 2.68 | 15.7% | 1.04% |
| F0 | eth_size_demand_shift | 2 | 0.9 | 24h | fast_pol_to_eth | 2.66 | 27.4% | 0.92% |
| F0 | eth_tx_demand_shift | 2 | 0.85 | 24h | fast_pol_to_eth | 2.03 | 20.9% | 2.29% |
| F0 | eth_size_demand_shift | 2 | 0.85 | 24h | fast_pol_to_eth | 1.98 | 20.4% | 2.21% |
| F0 | eth_tx_demand_shift | 2 | 0.85 | 12h | fast_pol_to_eth | 1.98 | 11.5% | 2.29% |
| F0 | eth_tx_demand_shift | 2 | 0.9 | 6h | fast_eth_to_pol | 1.87 | 37.3% | 0.98% |
| F4 | eth_tx_demand_shift (ETH→eth_to_pol) | 2 | 0.9 | 6h | fast_eth_to_pol | 1.87 | 37.3% | 0.98% |
| F0 | eth_tx_demand_shift | 2 | 0.85 | 3h | fast_eth_to_pol | 1.77 | 20.3% | 2.26% |
| F0 | eth_sigma_demand_shift | 2 | 0.9 | 24h | fast_eth_to_pol | 1.68 | 69.0% | 0.38% |
| F4 | eth_sigma_demand_shift (ETH→eth_to_pol) | 2 | 0.9 | 24h | fast_eth_to_pol | 1.68 | 69.0% | 0.38% |
| F0 | pol_tx_demand_shift | 2 | 0.85 | 3h | standard_pol_to_eth | 1.64 | 18.1% | 2.25% |
| F0 | eth_tx_demand_shift | 2 | 0.85 | 6h | fast_eth_to_pol | 1.63 | 32.6% | 2.26% |
| F0 | eth_tx_demand_shift | 2 | 0.9 | 12h | fast_eth_to_pol | 1.57 | 49.3% | 0.98% |
| F4 | eth_tx_demand_shift (ETH→eth_to_pol) | 2 | 0.9 | 12h | fast_eth_to_pol | 1.57 | 49.3% | 0.98% |
| F1 | demand_only_union | 2 | 0.9 | 24h | fast_pol_to_eth | 1.53 | 15.8% | 3.42% |
Three structural readings emerge.
Demand axes dominate. All nineteen survivors are on demand-side axes (sigma_demand, size_demand, tx_demand) or on continuity (one configuration). No survivor is on a pure rhythm axis. The mechanical reading is that corridor latency stress on this corpus correlates with economic demand pressure on the substrate, not with block-cadence anomalies. eth_tx_demand_shift alone accounts for eight survivors, the single most prolific axis.
Asymmetric prediction. The fast_pol_to_eth_stressed outcome is the most predictable channel, attracting eight survivors with lifts up to 4.22x. The cross-chain F4 family contributes three survivors, all in the ETH-predicts-eth_to_pol direction; the symmetric POL-predicts-pol_to_eth direction yields zero F4 survivors. The asymmetry suggests Ethereum substrate demand is informative about both directions of the corridor, while Polygon substrate demand is informative primarily about the same-chain origin direction.
Lead time of 24 hours is over-represented in the highest lifts. The six highest-lift survivors all use a 24-hour lead window. Shorter leads (3h, 6h, 12h) survive at lower lifts. Two readings are compatible. Either the predictive signal is genuinely a slow drift accumulating over a day, in which case the matrix carries information about settlement timing one trading day in advance. Or the longer lead window mechanically inflates the lead-shifted outcome (OR over a wider window increases the positive rate), which would weaken the operational meaning of the lift even though the FDR-corrected p-value remains significant. The two cannot be distinguished without an out-of-sample replication, addressed in Section 7 below.
Five limitations must be kept in mind.
First, out-of-sample cross-corridor validation is not performed. Polygon PoS is the first L1 to deploy CCTP V2 outside Ethereum itself; no second L1-to-L1 CCTP V2 corridor exists in the 2025 corpus universe against which the nineteen surviving configurations can be tested for transferability. The surviving configurations are per-corridor candidates, statistically significant on this corpus under the pre-engaged protocol, but not validated cross-chain precursors. Validation would require either an additional L1-to-L1 CCTP V2 corridor (none deployed in 2025) or a temporal split replication on an extended 2026 corpus.
Second, the proximity-window matching is not a cryptographic byte-exact identity assignment. CCTP V2 makes byte-exact identification structurally infeasible from on-chain state alone, since the message nonce is assigned off-chain by Circle's attestation service after MessageSent emission. The method retained is a documented heuristic with explicit mode-specific plausibility windows (2 hours Fast, 48 hours Standard), reproducible byte-for-byte from the Step 2 parquets. Aggregate latency percentiles are accurate to within the empirical bounds of this pairing; per-message attribution carries residual uncertainty.
Third, the Step 3 matrix operates on block-level data and is structurally insensitive to validator-set events that do not perturb block production cadence. The Kiln mass validator exit and SSV mass slashing events of September 2025 are documented by their primary sources as substrate-observable via exit queue dynamics, churn rate, and beacon participation, none of which are in the matrix. This is a known scope limitation, not a measurement defect.
Fourth, no bridge state classification (BS1/BS2) is produced on the ETH-POL CCTP V2 corridor in this work. The corpus methodology excludes threshold-based bridge state classification at Step 3 (the exclusion rationale is documented in Section 4 above). The production v2.0 API does expose BS1/BS2 on CCTP V1 routes calibrated on a P97 14-day rolling on attestation latency, but the CCTP V2 collector and the corresponding V2 BS calibration are pending in the production roadmap and not used in this article. Any operational decision an agent might make on the basis of the latency observables reported here therefore relies on the raw percentile metrics, not on a derived binary state attestation. The latency observables themselves are honest measurements; their conversion into an actionable defer-or-act signal requires a separate calibration step that is outside the scope of this corpus.
Fifth, the 2025 ETH-POL CCTP V2 corpus carries a short observation window: corridor activity effectively begins on 2025-06-09 with Polygon CCTP V2 contract creation, leaving approximately seven months of bidirectional corridor data. Per-direction-mode positive rates range from 0.6% to 4.8%. Statistical power for cross-validation against an independent replication is therefore moderate; extending the corpus to 2026 is the natural next step for validation.
The substrate observation grid built from Ethereum L1, Polygon PoS L1, and the CCTP V2 corridor records, in 2025, a substrate-mechanics response on the chain documented by the primary source for ten of the twelve Tier A sourced events (seven actively elevated, two correctly silent on operational launches, one marginal). Two events fail to register on the expected chain by structural scope limitation (validator-set perturbations outside block-level matrix coverage). A cross-chain propagation pattern is observed across five of the same-chain events: the opposite chain registers substrate firing materially above its own baseline during the documented event, suggesting either direct corridor coupling or co-occurring market regime, with the asymmetry of the response favoring partial corridor coupling but not establishing it definitively.
Under a pre-engaged 1,376-configuration delta exploration on V2-anchored outcomes (absolute latency thresholds at 5 minutes Fast and 1 hour Standard, four mode-direction outcomes, BH FDR alpha = 0.05, lift threshold 1.5x), nineteen surviving precursor candidates are identified. Demand-side substrate axes on Ethereum dominate the surviving set, with eth_tx_demand_shift being the most prolific single axis. The fast_pol_to_eth_stressed outcome is the most predictable channel. Lead times of 24 hours are over-represented in the highest lifts.
The nineteen candidates are not presented as validated cross-chain precursors. Out-of-sample cross-corridor replication is required and is not feasible on the 2025 corpus universe in the absence of a second L1-to-L1 CCTP V2 corridor. The result is a published, signed, statistically pre-engaged measurement of substrate-shift behavior on the first L1-to-L1 CCTP V2 corridor of record. The reading of this measurement is bounded by its stated limitations and is offered as a building block for subsequent calibration work, not as a deployment-ready signal set.
The full pre-engagement document, the execution script, the 1,376-configuration JSON output, the locked Step 3 corpus (methodology, conventions, incident inventory, three raw parquets, twelve per-event sheets, baseline parquet, narrative report), the Ed25519 signatures and OpenTimestamps Bitcoin anchors are all published in the agentnorthstar/calibration audit repository. Verification commands and per-step hash chains are documented in the corpus MANIFEST.md. The proximity-window matching algorithm for CCTP V2 latency reconstruction is specified byte-for-byte in METHODOLOGY_STEP3_CONVENTIONS.md Section 6.1. Reproducibility of the analysis requires Python with pandas, numpy, scikit-learn (for the dropped F3 family check), pycryptodome and eth-abi (for the Step 2 decoding stage); all input parquets are deterministic outputs of public BigQuery extractions documented in publiable/bigquery/queries.md.