Invarians

GLOSSARY

Canonical definitions for all Invarians concepts. The reference for all documentation, integrations, and publications.

On-Chain Execution Context

An on-chain execution context is a cryptographically signed attestation of the structural regime of blockchain infrastructure at a given time. It is produced by Invarians and consumed by AI agents before executing on-chain operations.

The question it answers
Is this chain operating within its normal structural parameters?
panel.l1[].regime
Structural regime of each L1 chain, S1D1 · S1D2 · S2D1 · S2D2
panel.l2[].regime
Structural regime of each L2 chain, S1D1 · S1D2 · S2D1 · S2D2
panel.bridges[].state
Unified operational state of each bridge: BS1 (nominal) or BS2 (degraded). The type field distinguishes the protocol (ccip, cctp).
oracle_status
Global panel status: OK · DEGRADED (DEGRADED when any item has STALE or UNAVAILABLE; UNCALIBRATED does not trigger DEGRADED)
signed_execution_context
HMAC-SHA256 canonical JSON signature of the panel, with payload_hash, signature, key_id, anchor

An execution context attestation is not a recommendation. Invarians certifies a state. The agent applies its own execution policy.

Structural Regime SxDx

A structural regime describes the operating state of a blockchain over a structural time window (~1 hour). It is not an event. It is a certified state of the infrastructure substrate, derived from two independent axes: τ (structural rhythm) and π (demand pressure).

S1D1
τ normal · π normal
Nominal. Infrastructure operating within structural baseline. ~95% of observed Ethereum time.
S1D2
τ normal · π elevated
Demand surge. Chain structure is healthy, absorbing elevated economic pressure.
S2D1
τ degraded · π normal
Structural stress without economic signature. Invisible to gas monitors. The most operationally significant regime for AI agents.
S2D2
τ degraded · π elevated
Systemic congestion. All layers under load simultaneously. ~0.2% of observed Ethereum time.

The regime is measured over a calibrated structural window with multi-confirmation hysteresis. A regime change takes ~3 hours to confirm. MEV, arbitrage, and short-term fee spikes do not create false regime changes.

Limit: the regime describes substrate dynamics under observation, not absence of substrate. The regime classification is computed on the blocks observed during each hour. A sequencer downtime that suppresses block production leaves no blocks to classify on the affected hour, so the matrix produces no regime signal for that hour (the regime stays at S1D1 by construction, since there is nothing to qualify as structural divergence). Downtime detection is the responsibility of the per-entry status field on each panel entry (OK, STALE, UNAVAILABLE, UNCALIBRATED), which is orthogonal to the regime code. An agent reading the panel inspects both: status for substrate availability, regime for substrate dynamics conditional on availability.

S2D1 The invisible failure mode

S2D1 is the most operationally significant regime for AI agents. It describes structural degradation (S2) with no apparent demand pressure (D1). No gas spike. No mempool congestion. No fee monitor alert. The chain appears calm at the surface.

Why S2D1 exists

Post-EIP-4844, L1 basefee is structurally decoupled from L2 activity. Sequencer incidents, finalization anomalies, and structural stress can occur with no gas signature. Every conventional monitor stays silent. Invarians detects S2D1 through structural invariant measurement, not fee observation.

S2D1 has been observed during:

Sep 2022
Ethereum Merge, structural transition, no demand signal
Apr 2023
Ethereum Shanghai upgrade
Multiple
Solana outage events, sequencer-level structural stress

An AI agent acting during S2D1 without a certified execution context is acting on incomplete information.

Infrastructure-Aware Agent

An infrastructure-aware agent is an autonomous on-chain agent that consumes a certified execution context before deciding to execute, defer, or reroute. It does not rely solely on gas price or mempool depth. It reads the structural regime of the infrastructure it operates on.

# v3 design preview: per-chain precursors[] replaces the v2.0 composite drift block. # See /developers#consume-precursors for the full pattern. panel = client.get_panel_v2(include="diagnostic") eth = panel.l1_by_chain("ethereum") arb = panel.l2_by_chain("arbitrum") bridge = panel.bridge_by_id("arbitrum-ethereum/cctp") # The agent applies its own policy on regime + bridge state + precursors. if eth.regime.startswith("S2") or arb.regime.startswith("S2"): agent.defer(reason="structural stress detected") elif any(p.is_firing and p.baseline_lift >= 1.5 for p in arb.precursors): agent.defer(reason="calibrated precursor fired on arbitrum") elif bridge.state == "BS2": agent.reroute() else: agent.proceed()
Bridge State BSx

The operational state of a cross-chain bridge, measured independently from the L1/L2 structural regime. Bridge state is measured on a shorter window (5–15 min polling) because bridges can transition from healthy to congested faster than a structural regime change.

BS1
Operational, relay latency and message backlog within nominal range
BS2
Degraded, latency or backlog exceeding baseline thresholds
capability_level

A semantic enum on each bridge entry that tells consumers the depth of signal captured for this bridge type. Added 2026-05-11 alongside the CCTP per-message attestation upgrade.

aggregate
Counts and operational flags only (event counts per cycle, RMN safety boolean). Reserved for bridge surfaces where per-message capture is not yet implemented. Both CCTP and CCIP have moved past this state as of 2026-05-12.
per_message_attested
Each message is tracked individually; latency P90/P99 and success rate are computed on per-message latencies. Applies to CCTP routes (Circle ECDSA per message) and CCIP lanes (source-to-execute matched by bytes32 messageId). The cryptographic anchor differs by protocol: circle_ecdsa for CCTP today, null for CCIP (no per-message cryptographic anchor captured yet).
per_message_crypto_anchored
Reserved for the future state in which per-message multi-sig attestations are captured alongside the latency. CCIP will reach this level once DON threshold-signed CommitReport events and per-message Merkle inclusion proofs are captured.
Circle ECDSA attestation

For each CCTP message that completes attestation through the Circle Iris service, a 65-byte ECDSA secp256k1 signature is emitted by Circle's attester. The Invarians CCTP collector captures this signature per message (since 2026-05-11) and stores it in ans_cctp_message_attestations. The signature is independently verifiable against Circle's published attester public key, providing a cryptographic chain of trust distinct from the Invarians HMAC envelope.

Exposed in the bridge entry as crypto.anchor = "circle_ecdsa" plus a retrieval pointer crypto.verifiable_via. The signature itself is retrievable via GET /v2/cctp/attestation/{message_hash} to keep the panel payload lean.

Pending queue (CCTP)

A queue of CCTP messages observed on the source chain but whose Iris attestation has not yet been issued at poll time. Handles the asymmetry between collector cycle (10 min) and source-chain finality (~13-19 min on Ethereum-anchored chains).

Each new CCTP message observed is inserted with attestation_signature = NULL. At every subsequent cycle, all NULL-signature rows of the route are re-polled against the Circle Iris API. When the attestation becomes available, the row is UPDATEd with the signature, the observed timestamp, and the latency in ms. Expiry is 2 h: messages whose signature does not arrive within that window are presumed rejected by Circle and not re-polled.

CCIP messageId

A bytes32 identifier unique to each CCIP message, present in the CCIPSendRequested event emitted by the source OnRamp and repeated in the ExecutionStateChanged event emitted by the destination OffRamp upon execution. The Invarians CCIP collector uses this messageId as the join key to match source send with destination execute, deriving real send-to-execute latency per lane per direction.

The full row is retrievable via GET /v2/ccip/message/{message_id}: source send metadata (sender, receiver, sequence_number, nonce, gas_limit, fee_token, source_tx_hash, source_block_*) and, when executed, destination metadata (dest_tx_hash, dest_block_*, execution_state). A status field reads "pending" or "executed". crypto_anchor is null today; will become "don_threshold_sig" once CCIP CommitReport DON multi-sig and Merkle inclusion proofs are captured.

Pending queue (CCIP)

A queue of CCIP messages observed on the source OnRamp but not yet matched against a destination ExecutionStateChanged event at poll time. Analogous to the CCTP pending queue, it handles the asymmetry between collector cycle (10 min) and CCIP end-to-end latency (typically a few minutes to tens of minutes depending on the lane and source-chain finality).

Each new CCIPSendRequested observed is inserted with dest_tx_hash = NULL. At every subsequent cycle, destination OffRamp logs are scanned for ExecutionStateChanged events matching pending messageIds. When matched, the row is UPDATEd with the destination tx hash, destination block number, destination block timestamp, and the execution state (0 Untouched, 1 InProgress, 2 Success, 3 Failure). Expiry is 2 h: messages still NULL beyond that window are assumed lost (lane misconfigured, RMN cursed, or out-of-scan) and are not retried.

Stale Policy

A panel item becomes stale when Invarians has not refreshed the underlying data within its expected window (1h for L1/L2, 10m for bridges). Staleness is per-item: each entry in panel.l1[], panel.l2[], panel.bridges[] carries its own status. The global oracle_status flips to DEGRADED whenever any item is STALE or UNAVAILABLE (UNCALIBRATED does not trigger it).

item status Age vs. window oracle_status impact Recommended behavior
OK within window OK Proceed normally
STALE beyond window DEGRADED Use with awareness, inspect computed_at / observed_at
UNAVAILABLE collector down DEGRADED Do not act on this item
UNCALIBRATED pre-calibration phase OK Raw signal exposed; threshold-based state not yet certified
Pattern Reference

The Pattern Reference is a historical record of all 32 possible execution contexts (4 L1 regimes × 4 L2 regimes × 2 bridge states), with observed frequencies and documented events for each combination. It is non-prescriptive — the agent reads the execution context, consults the Pattern Reference, and applies its own policy.

S1D1
95.4% of observed Ethereum time, baseline
S2D1
3.0%, ETH Merge, Shanghai upgrade, SOL outages
S1D2
1.7%, DeFi Summer, NFT Mania, ETF demand March 2024
S2D2
0.2%, Maximum systemic congestion
Nominal

The current expected behavior of a chain or a bridge under no exceptional condition, measured along structural rhythm, demand pressure, and posting continuity. The nominal is not a fixed number. It evolves with the chain itself: protocol upgrades, application mix changes, and rising agentic load all reshape the underlying distribution. Invarians qualifies the nominal per chain, per layer and per bridge, through continuous calibration on a rolling baseline, and exposes the current state relative to that nominal.

Delta Primitive 3 — the set of exposed delta signals

The third primitive of the v2.0 API. Delta is the umbrella for every signal that measures how the current state of a chain or a bridge departs from its 30-day baseline. Two layers compose Delta. The per-metric layer exposes shift (signed deviation versus the 30-day baseline), shift_delta (change in the signed deviation between consecutive observations), and shift_magnitude_delta (change in the absolute deviation). The composite layer exposes axis-level drift aggregates (drift.structural, drift.demand) plus their own _magnitude_delta counterparts. Sign and magnitude are preserved at every level so an agent can read both the direction of the deviation and whether the deviation is amplifying or reverting. Drift and shift are themselves not primitives; they are observables that compose Delta. The primitive name is the umbrella.

Chain-type-exclusive calibration. Two corpora were tested in 2025 (ETH-ARB-CCTP and ETH-OP-CCTP) with a 648-configuration grid and Benjamini-Hochberg FDR correction. Each corpus produces its own validated precursors (six on ARB with lift 1.53 to 2.36x; one on OP with lift 3.72x), and the two sets are disjoint. Configurations do not transfer across corpora. The v3 redesign replaces the composite Delta block with an explicit precursors[] array scoped per chain. Documented in the research note.

Precursor v3 candidate, sub-element of Primitive 3 (Delta)

A precursor is a named, calibrated boolean flag exposed on an L1 or L2 panel entry that fires when a specific substrate shift axis enters an amplifying mode statistically validated as anticipating a specific bridge layer outcome at a documented lead time. Each precursor carries explicit calibration metadata: the axis it reads (e.g. structural.sequencer_publish_latency), the threshold on shift_magnitude_delta, the K consecutive hours required, the lead window in hours, the predicted outcome, the validated lift, precision, and alert rate from the calibrating corpus, and the cross-chain status. Precursors are scoped per chain: six configurations were validated on ETH-ARB-CCTP 2025 with combined Benjamini-Hochberg FDR at alpha=0.05 and lift 1.53 to 2.36x; one configuration was validated on ETH-OP-CCTP 2025 with lift 3.72x. Configurations validated on one corpus do not transfer to the other (Delta calibration is chain-type-exclusive). Documented in the research note.

Drift (nominal drift) Sub-element of the Delta primitive (Primitive 3)

The change of a chain's nominal over time. Distinct from a short-term deviation, where the chain temporarily falls outside its window and returns. Drift is structural: the window itself moves. Ethereum's nominal post-Dencun is statistically different from its nominal pre-Dencun. Drift is intrinsic to evolving systems and must be tracked, not assumed away. Invarians measures drift on rolling windows so an agent's reference frame stays current with the chain it acts on. In the v2.0 API, drift was exposed as a composite per axis (drift.structural, drift.demand) inside the Delta primitive. The v2.0 composite did not pass independent validation on the 2025 corpora; v3 replaces it with explicit per-chain precursors carrying their calibration metadata.

Divergence

A measurement showing the current state of a chain or a bridge falls outside its calibrated nominal window. Divergence may be statistical, expressing how unlikely the present state is under the rolling distribution, or event-based, matching the present state to a documented historical incident with known failure mode. Invarians qualifies divergence. The agent owns the decision on what to do with it. The agent's policy determines whether a given divergence is operationally critical.

Calibration

The continuous process by which Invarians defines the nominal window for each chain, each layer and each bridge, on a rolling 30-day baseline updated hour by hour. Distinct from a static threshold. The calibration tracks the nominal as it drifts. Calibration is what allows divergence to be qualified meaningfully against the chain's present distribution rather than against an arbitrary fixed value. Reproducible methodology and historical backtests are published at github.com/agentnorthstar/calibration.

Threshold Calibrated bound separating nominal from divergence

The numerical bound, per chain and per measurement axis, above or below which a signal is considered to have left its nominal window. Thresholds are not arbitrary constants. They are the output of the continuous calibration process, derived statistically from the rolling 30-day distribution of each observable (P97 by default, percentile-based to remain robust to outliers). Each chain has its own thresholds because each chain has its own nominal: Ethereum's nominal rhythm differs from Polygon's, Arbitrum's batch posting cadence differs from Optimism's. Thresholds are recalibrated on a rolling basis so the bound moves with the chain's drift, not against it. Both upper and lower bounds may be calibrated for two-sided signals (rhythm, sigma, size, tx, beacon participation), enabling the signed regime classification (S2+ / S2- and D2+ / D2- codes, see Polarity). Threshold values per chain and per axis are stored in dedicated tables and re-published with each calibration cycle. Reproducible methodology at github.com/agentnorthstar/calibration.

Short and long EMA Two timescales of nominal

Each ratio reported by Invarians is computed against two exponentially weighted moving averages of the chain's history. The short EMA uses a memory of approximately ten hours and tracks the local pulse. The long EMA uses a memory of approximately thirty days and captures the structural baseline. Both are produced continuously per chain. The short ratio answers is the chain off its recent rhythm right now. The long ratio answers is the chain off its monthly baseline. The two together allow Invarians to separate transient deviations from sustained drift.

Shift Drift between short and long baselines

The signed difference between the short EMA ratio and the long EMA ratio for a given measurement axis. shift = ratio - ratio_long. A positive shift means the chain is currently above its 30-day baseline; a negative shift means it has dropped below or has converged toward the long baseline; a near-zero shift means the chain is following its historical pace. Shift is exposed per metric in the API v2.0 panel response (MetricBlock), in ?include=diagnostic mode and above. Shift is the empirical demonstration of the nominal not fixed thesis. Where the regime classification answers is the chain stressed right now, shift answers is the chain drifting out of its 30-day window.

Polarity Signed direction of a deviation relative to the nominal

The direction of a deviation relative to the calibrated nominal. A signal can deviate in two opposite ways: above the upper threshold (positive polarity, noted +) or below the lower threshold (negative polarity, noted -). Polarity makes this distinction explicit in the signed regime classification: S2+ means the structural axis is stressed in the direction where rhythm is elongated (sequencer slowdown, validator delays), S2- means the structural axis is stressed in the opposite direction where rhythm is too short (sequencer overproducing, validator overactivity). Similarly for the demand axis: D2+ = demand surge above the upper threshold, D2- = demand starvation below the lower threshold, D2± = composition split (at least one demand ratio above and one below).

Polarity is operationally critical: a sequencer slowing down and a sequencer overproducing share a label without it (both are simply non-nominal), but they have opposite root causes and an AI agent's policy must distinguish them. The signed classification produces 12 codes per chain (instead of 4) and is the form currently emitted by the panel API v2.0 for chains where calibration of both bounds is committed.

MetricBlock Per-metric data block in the panel API v2.0

The self-contained block exposed for each classifying observable in the panel API v2.0 response. In ?include=core mode, the block contains only ratio (plus auxiliary fields like epoch for beacon or seconds for sequencer publish latency). In ?include=diagnostic mode and above, the block extends to ratio, ratio_long, shift, shift_delta, and shift_magnitude_delta. The MetricBlock answers three questions in one structure: where is the value now, how far from the long-term baseline, and is the deviation amplifying or shrinking. The new structural observables (Beacon Chain participation on Ethereum, sequencer publish latency on L2 chains) emit shift_available: false during their slow-EMA stabilization period.

shift_delta Direction of value movement between cycles

shift_delta = shift_now - shift_prev. The raw difference between the current shift and the shift at the previous measurement cycle. Tells the agent the direction in which the value moved: positive = up, negative = down, near-zero = stable. This signal is a complement to shift_magnitude_delta: they typically agree, except when shift crosses zero between cycles (the chain transitions through a nominal state). Exposed per metric in ?include=diagnostic mode and above.

shift_magnitude_delta Whether the deviation amplifies or shrinks

shift_magnitude_delta = |shift_now| - |shift_prev|. The change in the absolute deviation magnitude between cycles. Positive means the deviation is widening (regime persists or worsens). Negative means the deviation is shrinking (chain is reverting toward the nominal baseline, regime exit likely). Near-zero means the deviation is stable. Together with shift_delta, this signal answers the agent's fitness-for-action question: is the regime sticky or about to flip back to nominal? Exposed per metric in ?include=diagnostic mode and above.

drift, drift_index v2.0 composite Delta per axis (legacy, replaced in v3)

A composite summary of the trend signal per axis (structural / demand) exposed in the v2.0 payload. The drift object on each panel entry contains six fields: structural (max of |shift| over structural observables), structural_delta, structural_magnitude_delta, demand, demand_delta, demand_magnitude_delta. An initial heuristic mapped magnitudes to reading bands (below 0.005 stable, 0.005 to 0.02 mild, 0.02 to 0.05 active, above 0.05 imminent transition probable). The 2025 empirical campaign on ETH-ARB-CCTP and ETH-OP-CCTP showed that this composite aggregation does not carry a validated agent-orientation signal across 648 pre-engaged configurations with combined Benjamini-Hochberg FDR. The v3 redesign replaces the composite block with an explicit per-chain precursors array, each precursor carrying its calibration metadata and cross-chain status. Drift remains exposed in v2.0 for backward compatibility, flagged deprecated_unvalidated in v3.

beacon_participation Beacon Chain validator participation rate (Ethereum-only)

The fraction of active Ethereum validators that successfully attested during a given Beacon Chain epoch. Measured per epoch (~6.4 minutes), exposed as a structural axis observable on Ethereum since API v2.0. A drop below the calibrated lower threshold triggers S2- on the structural axis. Documented historical drops include April 2023 (Geth attestation cascade), May 2023 (finality stall), and various Lido / Coinbase staking node operator outages in 2024. Exposed in the panel as panel.l1[].structural.beacon_participation with ratio, epoch, and (after slow-EMA stabilization) ratio_long + shift + trend fields.

sequencer_publish_latency L2 sequencer batch posting latency (third structural axis on rollups)

The delay between two consecutive L2 batches inscribed on L1 by the rollup sequencer. Measured in seconds, observed from L1 events. A spike above the calibrated upper threshold triggers S2+ on the L2 structural axis. Documented historical events include the Arbitrum sequencer halt of 2024-12-21 (~1h30 outage), the Optimism sequencer halt of 2025-09-14, and Base sequencer issues of November 2024. sequencer_publish_latency is the third structural observable on L2 chains (alongside rhythm and continuity), unlocking real S2 detection on rollups where rhythm and continuity are architecturally compressed by the sequencer's fixed cadence. Exposed since API v2.0 as panel.l2[].structural.sequencer_publish_latency.

Signed regime codes Extension of the SxDx grid with direction suffixes

The legacy 4-state grid (S1D1, S1D2, S2D1, S2D2) classifies only deviations above the calibrated nominal window. Adding lower bounds on each axis, in addition to the upper bounds, produces a set of signed regime codes: 12 codes on L1 and 12 codes on L2 (since v2.0, L2 reaches S2 thanks to sequencer_publish_latency). Each extended code carries an explicit direction suffix (+, -, ±) on the affected axis. Activated chain by chain since 2026-04-29: ETH, POL on L1; ARB, BASE, OP on L2. SOL and AVAX scheduled for July 2026.

The signed grid captures signatures invisible to the legacy 4-state model: cascading liquidations (composition asymmetric, D2±), sequencer halts (rhythm slowed, demand depressed, S2+D2-), censorship of transaction classes (selective tx exclusion, D2-), agentic bundle dominance (size up, tx down, D2±). The first such pattern observed on Invarians was the rsETH cascade of 2026-04-18 on Ethereum: with signed codes active, the panel would have emitted S1D2- at 14h UTC (tx_ratio dropping to 0.74 below baseline) instead of the legacy S1D1.

D2+, D2-, D2± Demand axis directions with signed codes active

The demand axis (π) has four states once signed codes are active. D1 means all demand ratios are within their nominal bounds. D2+ (legacy D2 alias) means at least one ratio is above its high threshold and none is below — the chain is in elevated demand (DeFi season, ETF events, liquidations spread evenly). D2- means at least one ratio is below its low threshold and none is above — the chain is in depressed demand (sequencer halt, censorship of small transfers, mempool gel). D2± means at least one ratio is above and at least one is below — composition asymmetry, the chain is processing fewer but larger (or larger but fewer) transactions than baseline. This is the canonical signature of agentic concentration: bots dominating the user-operation flow with bundled, complex transactions while regular user activity drops.

S2+, S2- Structure axis directions with signed codes active

The structure axis (τ) has three states once signed codes are active. S1 means rhythm and continuity are within nominal bounds. S2+ (legacy S2 alias) means rhythm slows abnormally (blocks taking longer than baseline) — sequencer drift, validator outages, congestion- induced delays. S2- means rhythm accelerates abnormally (blocks coming faster than the historical baseline) — possible client optimisations, infrastructure migration, or shifts in the slot-timing distribution. S2- on L1 is rare but informative: it captures structural changes that fee monitors and gas trackers do not see. On L2 rollups, the rhythm distribution is intrinsically tight ("τ dormant") and S2- detection is generally disabled (rhythm_threshold_low = NULL) to avoid sub-percent noise.

τ and π The two measurement axes

The SxDx regime is derived from two independent axes, measured separately and combined to produce a four-state classification.

τ (tau)
Structural rhythm. Block production cadence and continuity. Measures whether the chain is producing blocks at its expected rate with expected finalization patterns. τ is not gas price. A degraded τ can occur with no visible economic signature.
π (pi)
Demand pressure. Economic load on the chain, transaction volume, fee pressure, and demand relative to calibrated baseline. π can be elevated while τ remains healthy (typical demand surge scenario).
Technical Reference, API & Code

Internal field names and identifiers used in the Invarians API, SDK, and backend services. These names are stable and will not change in the API contract. They differ deliberately from the public product terminology, this section explains why.

API field

The JSON field in the Invarians API response that carries the HMAC signature and digest of the panel.

This is not a consensus mechanism. The name does not refer to Proof of Work, Proof of Stake, or any blockchain consensus protocol. In Invarians v1.0.0 the field is signed_execution_context (renamed from the former proof_of_execution_context): the panel is serialised canonically, hashed, and signed HMAC-SHA256. The anchor sub-field is currently null and will be populated with an on-chain Merkle root from May 2026 onward.

Public term
Signed execution context
API field
signed_execution_context — contains payload_hash, signature, key_id, anchor
SDK access
panel.signed_execution_context.signature · .payload_hash · .anchor
API field

An Invarians API field indicating the freshness state of the attestation at the moment of response.

This is not a blockchain oracle. Invarians does not operate as a decentralized oracle network (such as Chainlink or Band Protocol, which relay off-chain data on-chain). Invarians reads on-chain data via RPC and delivers certified attestations to off-chain agents. The term "oracle" in oracle_status is an internal Invarians denomination referring to the data collection and attestation service, not a decentralized oracle node.

"OK"
All panel items are fresh and available within their windows (1h for L1/L2, 10m for bridges). UNCALIBRATED items do not degrade this status.
"DEGRADED"
At least one panel item is STALE or UNAVAILABLE. Agents should inspect panel.l1[] / panel.l2[] / panel.bridges[] to identify the affected entries before acting.
vs

Two distinct technical terms for two distinct measurement types in Invarians.

regime
Applies to L1 and L2 chains. Measured over ~1 hour window. Derived from τ × π. 12 signed codes per chain on both L1 and L2 (S1, S2+, S2- × D1, D2+, D2-, D2±). The legacy 4-state codes (S1D1 · S1D2 · S2D1 · S2D2) remain valid as aliases. Fields: panel.l1[].regime, panel.l2[].regime.
state
Applies to bridges only. Measured over a 10 min window (faster transitions). Values: BS1 (nominal) or BS2 (degraded). Unified across all variable-latency bridge types (CCIP, CCTP). The type field distinguishes the protocol. Field: panel.bridges[].state.

The terminology is intentional: bridges transition faster than structural regimes. Using different words reflects different measurement scales.

API object

The complete signed payload delivered by the Invarians API (v2.0.0). A panel is the broadest container: it encompasses all L1 entries, L2 entries, bridge entries (each with axis-grouped structural + demand objects, per-metric MetricBlock, and a composite drift object per axis), and the signed_execution_context.

Contains
panel.l1[] · panel.l2[] · panel.bridges[] · oracle_status · coverage · issued_at · signed_execution_context
Per-item freshness
Each entry carries its own status (OK · STALE · UNAVAILABLE · UNCALIBRATED) and timestamp (computed_at for L1/L2, observed_at for bridges).
Verify
Panels are independently verifiable via POST /v2/verify, with body { payload, signature }.
Backend service

The internal name of the Invarians backend service responsible for collecting on-chain data, computing structural regimes, and delivering signed attestations via the API.

Not a decentralized oracle network. The term "oracle" here refers to the Invarians data collection and attestation service, a centralized backend (Hetzner VPS + Supabase) that reads public on-chain data via RPC and certifies the structural state it observes. Decentralization via Chainlink Functions is on the roadmap for Q4 2026.