aeml-x402.zeabur.app

https://aeml-x402.zeabur.app/shadow/signal-plus

Shares a payout wallet with 66 other endpoints — its adoption is attributed from that shared wallet's traffic, not earned exclusively.

[SIGNAL+PROOF+CHATTER] One official signal record with its offline-recomputable proof, PLUS the unverified public-channel chatter for a topic from the last 48h - delivered as two separate top-level keys that are never merged. The unverified half lives in its own database with an engine-level trigger forbidding updates, and contributes nothing to the official hash. Nothing posted in the window -> 422 no_charge, not billed (check GET /shadow/catalog first, free).

62
reliability

Reliability & health

Uptime and response time from our own unpaid probes, plus the reliability score built from them.

Uptime

91.0% avg
0% 50% 100% Thu 4 PMSun 12 AMTue 6 AMThu 2 PM

Response time

p50 232ms · p95 234ms
0ms 300ms 600ms Thu 4 PMSun 12 AMTue 6 AMThu 2 PM
Data table
Reliability history per time bucket over the last 7 days (hourly).
Bucket Uptime Probes Response time
8/13/2026, 4:00:00 PM 100% 1 224ms
8/13/2026, 5:00:00 PM 100% 1 232ms
8/13/2026, 6:00:00 PM 100% 1 233ms
8/13/2026, 8:00:00 PM 100% 1 233ms
8/13/2026, 9:00:00 PM 100% 1 231ms
8/13/2026, 10:00:00 PM 100% 1 233ms
8/13/2026, 11:00:00 PM 100% 1 233ms
8/14/2026, 12:00:00 AM 100% 1 232ms
8/14/2026, 1:00:00 AM 100% 1 225ms
8/14/2026, 3:00:00 AM 100% 1 224ms
8/14/2026, 4:00:00 AM 100% 1 224ms
8/14/2026, 5:00:00 AM 100% 1 233ms
8/14/2026, 6:00:00 AM 100% 1 232ms
8/14/2026, 7:00:00 AM 100% 1 225ms
8/14/2026, 8:00:00 AM 100% 1 224ms
8/14/2026, 10:00:00 AM 100% 1 232ms
8/14/2026, 11:00:00 AM 100% 1 232ms
8/14/2026, 12:00:00 PM 100% 1 231ms
8/14/2026, 1:00:00 PM 100% 1 225ms
8/14/2026, 2:00:00 PM 100% 1 233ms
8/14/2026, 4:00:00 PM 100% 1 232ms
8/14/2026, 5:00:00 PM 100% 1 226ms
8/14/2026, 6:00:00 PM 100% 1 225ms
8/14/2026, 7:00:00 PM 100% 1 232ms
8/14/2026, 8:00:00 PM 100% 1 225ms
8/14/2026, 9:00:00 PM 100% 1 231ms
8/14/2026, 10:00:00 PM 100% 1 235ms
8/15/2026, 12:00:00 AM 100% 1 231ms
8/15/2026, 1:00:00 AM 100% 1 232ms
8/15/2026, 2:00:00 AM 100% 1 233ms
8/15/2026, 3:00:00 AM 100% 1 232ms
8/15/2026, 4:00:00 AM 100% 1 231ms
8/15/2026, 5:00:00 AM 100% 1 232ms
8/15/2026, 6:00:00 AM 100% 1 233ms
8/15/2026, 7:00:00 AM 100% 1 233ms
8/15/2026, 9:00:00 AM 100% 1 232ms
8/15/2026, 10:00:00 AM 100% 1 230ms
8/15/2026, 11:00:00 AM 100% 1 232ms
8/15/2026, 12:00:00 PM 100% 1 230ms
8/15/2026, 1:00:00 PM 100% 1 231ms
8/15/2026, 2:00:00 PM 100% 1 232ms
8/15/2026, 3:00:00 PM 100% 1 224ms
8/15/2026, 5:00:00 PM 100% 1 232ms
8/15/2026, 6:00:00 PM 100% 1 230ms
8/15/2026, 7:00:00 PM 100% 1 224ms
8/15/2026, 8:00:00 PM 100% 1 232ms
8/15/2026, 9:00:00 PM 100% 1 231ms
8/15/2026, 10:00:00 PM 100% 1 231ms
8/16/2026, 12:00:00 AM 100% 1 231ms
8/16/2026, 1:00:00 AM 100% 1 231ms
8/16/2026, 2:00:00 AM 100% 1 234ms
8/16/2026, 3:00:00 AM 100% 1 230ms
8/16/2026, 4:00:00 AM 100% 1 232ms
8/16/2026, 5:00:00 AM 100% 1 232ms
8/16/2026, 7:00:00 AM 100% 1 225ms
8/16/2026, 8:00:00 AM 100% 1 223ms
8/16/2026, 9:00:00 AM 100% 1 231ms
8/16/2026, 10:00:00 AM 100% 1 232ms
8/16/2026, 11:00:00 AM 100% 1 233ms
8/16/2026, 12:00:00 PM 100% 1 232ms
8/16/2026, 2:00:00 PM 100% 1 226ms
8/16/2026, 3:00:00 PM 100% 1 232ms
8/16/2026, 4:00:00 PM 100% 1 233ms
8/16/2026, 5:00:00 PM 100% 1 231ms
8/16/2026, 6:00:00 PM 100% 1 231ms
8/16/2026, 7:00:00 PM 100% 1 226ms
8/16/2026, 8:00:00 PM 100% 1 232ms
8/16/2026, 10:00:00 PM 100% 1 233ms
8/16/2026, 11:00:00 PM 100% 1 224ms
8/17/2026, 12:00:00 AM 100% 1 231ms
8/17/2026, 1:00:00 AM 100% 1 231ms
8/17/2026, 2:00:00 AM 100% 1 233ms
8/17/2026, 3:00:00 AM 100% 1 233ms
8/17/2026, 5:00:00 AM 100% 1 233ms
8/17/2026, 6:00:00 AM 100% 1 233ms
8/17/2026, 7:00:00 AM 100% 1 232ms
8/17/2026, 8:00:00 AM 100% 1 232ms
8/17/2026, 9:00:00 AM 100% 1 232ms
8/17/2026, 10:00:00 AM 100% 1 232ms
8/17/2026, 12:00:00 PM 0% 1
8/17/2026, 1:00:00 PM 0% 1
8/17/2026, 2:00:00 PM 0% 1
8/17/2026, 3:00:00 PM 0% 1
8/17/2026, 4:00:00 PM 0% 1
8/17/2026, 5:00:00 PM 0% 1
8/17/2026, 7:00:00 PM 0% 1
8/17/2026, 8:00:00 PM 0% 1
8/17/2026, 9:00:00 PM 0% 1
8/17/2026, 10:00:00 PM 0% 1
8/17/2026, 11:00:00 PM 0% 1
8/18/2026, 12:00:00 AM 0% 1
8/18/2026, 2:00:00 AM 0% 1
8/18/2026, 3:00:00 AM 100% 1 232ms
8/18/2026, 4:00:00 AM 100% 1 226ms
8/18/2026, 5:00:00 AM 100% 1 232ms
8/18/2026, 6:00:00 AM 100% 1 232ms
8/18/2026, 7:00:00 AM 100% 1 233ms
8/18/2026, 9:00:00 AM 100% 1 232ms
8/18/2026, 10:00:00 AM 100% 1 233ms
8/18/2026, 11:00:00 AM 100% 1 225ms
8/18/2026, 12:00:00 PM 100% 1 232ms
8/18/2026, 1:00:00 PM 100% 1 232ms
8/18/2026, 2:00:00 PM 100% 1 233ms
8/18/2026, 3:00:00 PM 100% 1 234ms
8/18/2026, 5:00:00 PM 100% 1 231ms
8/18/2026, 6:00:00 PM 100% 1 232ms
8/18/2026, 7:00:00 PM 100% 1 231ms
8/18/2026, 8:00:00 PM 100% 1 231ms
8/18/2026, 9:00:00 PM 100% 1 231ms
8/18/2026, 10:00:00 PM 100% 1 225ms
8/19/2026, 12:00:00 AM 100% 1 224ms
8/19/2026, 1:00:00 AM 100% 1 231ms
8/19/2026, 2:00:00 AM 100% 1 227ms
8/19/2026, 3:00:00 AM 100% 1 226ms
8/19/2026, 4:00:00 AM 100% 1 224ms
8/19/2026, 5:00:00 AM 100% 1 231ms
8/19/2026, 7:00:00 AM 100% 1 225ms
8/19/2026, 8:00:00 AM 100% 1 233ms
8/19/2026, 9:00:00 AM 100% 1 225ms
8/19/2026, 10:00:00 AM 100% 1 234ms
8/19/2026, 11:00:00 AM 100% 1 295ms
8/19/2026, 12:00:00 PM 100% 1 231ms
8/19/2026, 2:00:00 PM 100% 1 235ms
8/19/2026, 3:00:00 PM 100% 1 232ms
8/19/2026, 4:00:00 PM 100% 1 240ms
8/19/2026, 5:00:00 PM 100% 1 232ms
8/19/2026, 6:00:00 PM 100% 1 232ms
8/19/2026, 7:00:00 PM 100% 1 233ms
8/19/2026, 8:00:00 PM 100% 1 232ms
8/19/2026, 9:00:00 PM 100% 1 232ms
8/19/2026, 11:00:00 PM 100% 1 232ms
8/20/2026, 12:00:00 AM 100% 1 232ms
8/20/2026, 1:00:00 AM 100% 1 238ms
8/20/2026, 2:00:00 AM 100% 1 233ms
8/20/2026, 3:00:00 AM 100% 1 233ms
8/20/2026, 4:00:00 AM 100% 1 233ms
8/20/2026, 6:00:00 AM 100% 1 225ms
8/20/2026, 7:00:00 AM 100% 1 534ms
8/20/2026, 8:00:00 AM 100% 1 231ms
8/20/2026, 9:00:00 AM 100% 1 233ms
8/20/2026, 10:00:00 AM 100% 1 225ms
8/20/2026, 11:00:00 AM 100% 1 231ms
8/20/2026, 1:00:00 PM 100% 1 234ms
8/20/2026, 2:00:00 PM 100% 1 233ms
62
Composite reliability — the weighted average of the dimensions below, on a 0–100 scale.
Availability
98

How often it was reachable when we probed it (weight 35%).

Latency
100

How quickly it answers when it is up — fast scores high (weight 20%).

Security
100

Whether it serves over working TLS / https (weight 15%).

Transparency
67

Whether the operator disclosed what it does — description, schema, identity (weight 15%).

Activity
4

Observed on-chain payments to this endpoint's wallet — transactions, volume, and distinct paying wallets over the last month (weight 15%; not yet measured when we have not seen its wallet settle).

Confidence 100% — how much probe evidence backs this score. A thin history is flagged, not hidden.

See the scoring methodology for exactly how each number is computed.

Payment

Currencies
USDC
Networks
base, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
Facilitator
unknown
SDK
x402-express

Operator

Company
inferred — unknown
Jurisdiction
Registrar
GoDaddy.com, LLC
Domain registered
2022-09-27
Hosting network
ACEVILLEPTELTD-SG
Hosting country
SG

Operator context is derived from public RDAP/TLS records and unverified. Company and country are only available for endpoints that publish them (an OV/EV TLS certificate or a non-redacted domain record); most endpoints are CDN-fronted and disclose neither.

On-chain activity (base)

2,558
payments (30d)
604.05
USD volume (30d)
5
paying wallets (30d)

Payments per day

last payment 8/20/2026
0 350 700 Jul 22Jul 28Aug 15Aug 20
Data table
Settled payments per day.
Day Payments Volume (USD) Paying wallets
7/22/2026 2 0.02 1
7/24/2026 4 0.04 2
7/25/2026 200 12.11 1
7/26/2026 555 193.52 1
7/27/2026 215 83.92 1
7/28/2026 639 121.95 1
7/29/2026 317 55.27 1
7/30/2026 79 20.45 1
8/11/2026 1 0.01 1
8/15/2026 60 19.61 1
8/16/2026 441 67.38 1
8/17/2026 30 21.23 1
8/18/2026 4 8.01 1
8/19/2026 10 0.54 1
8/20/2026 1 0.01 1

This payout wallet is shared: figures cover all 67 endpoints paid at it, since payments cannot be attributed to one of them. Only payments settled on chains and facilitators we index.

Linked by wallet — likely same operator

On-chain agent identity and the x402 endpoint that shares its settlement wallet.

https://aeml-x402.zeabur.app/gauge/chokepoint-region x402 endpoint https://aeml-x402.zeabur.app/gauge/stablecoin-region x402 endpoint https://aeml-x402.zeabur.app/gauge/depin-region x402 endpoint https://aeml-x402.zeabur.app/gauge/smallsat-region x402 endpoint https://aeml-x402.zeabur.app/stable/graveyard x402 endpoint https://aeml-x402.zeabur.app/gauge/lrt-region x402 endpoint https://aeml-x402.zeabur.app/shadow/region-plus x402 endpoint https://api.truthbear.co/gauge/region x402 endpoint https://aeml-x402.zeabur.app/gauge x402 endpoint https://aeml-x402.zeabur.app/resolve/proposer x402 endpoint https://aeml-x402.zeabur.app/trust/precheck x402 endpoint https://aeml-x402.zeabur.app/gauge/history-series x402 endpoint https://aeml-x402.zeabur.app/gauge/census x402 endpoint https://aeml-x402.zeabur.app/mcp/server x402 endpoint https://aeml-x402.zeabur.app/gauge/grid-region x402 endpoint https://aeml-x402.zeabur.app/gauge/tool-region x402 endpoint https://aeml-x402.zeabur.app/gauge/esgfund-region x402 endpoint https://aeml-x402.zeabur.app/gauge/tariff-region x402 endpoint https://aeml-x402.zeabur.app/gauge/history x402 endpoint https://aeml-x402.zeabur.app/gauge/air x402 endpoint https://aeml-x402.zeabur.app/gauge/aidataset-region x402 endpoint https://aeml-x402.zeabur.app/gauge/carbon-region x402 endpoint https://aeml-x402.zeabur.app/resolve x402 endpoint https://aeml-x402.zeabur.app/gauge/earthquake-region x402 endpoint https://aeml-x402.zeabur.app/gauge/hurricane-region x402 endpoint https://aeml-x402.zeabur.app/stablecoin-deaths x402 endpoint https://aeml-x402.zeabur.app/gauge/ruler x402 endpoint https://aeml-x402.zeabur.app/gauge/japan-region x402 endpoint https://aeml-x402.zeabur.app/gauge/promise-region x402 endpoint https://aeml-x402.zeabur.app/gauge/drug-shortage-region x402 endpoint https://aeml-x402.zeabur.app/gauge/macro-reconcile-full x402 endpoint https://aeml-x402.zeabur.app/gauge/calibrated x402 endpoint https://aeml-x402.zeabur.app/gauge/aicompute-region x402 endpoint https://aeml-x402.zeabur.app/gauge/subscribe x402 endpoint https://aeml-x402.zeabur.app/gauge/drought-region x402 endpoint https://aeml-x402.zeabur.app/gauge/nas-region x402 endpoint https://api.truthbear.co/gauge/grid-reliability-region x402 endpoint https://aeml-x402.zeabur.app/mcp/census x402 endpoint https://aeml-x402.zeabur.app/pay/tier3 x402 endpoint https://aeml-x402.zeabur.app/gauge/strata x402 endpoint https://aeml-x402.zeabur.app/pay/tier2 x402 endpoint https://aeml-x402.zeabur.app/gauge/policy-region x402 endpoint https://aeml-x402.zeabur.app/gauge/precip x402 endpoint https://aeml-x402.zeabur.app/gauge/defilending-region x402 endpoint https://aeml-x402.zeabur.app/trust/scorecard x402 endpoint https://aeml-x402.zeabur.app/gauge/taiwan-region x402 endpoint https://aeml-x402.zeabur.app/gauge/wildfire-region x402 endpoint https://aeml-x402.zeabur.app/gauge/region x402 endpoint https://aeml-x402.zeabur.app/gauge/shipping-region x402 endpoint https://aeml-x402.zeabur.app/gauge/lifecycle x402 endpoint
Response schema
{
  "properties": {
    "official": {
      "additionalProperties": true,
      "conditionalProperties": {
        "decision_points": {
          "description": "Swappable decision points for this entity, attached centrally: {count, points:[{tag,current,swappable,how}], note}. Present only when the entity has at least one swappable tag in the index, so bundles for entities without one omit it",
          "type": [
            "object",
            "null"
          ]
        },
        "last_fact": {
          "description": "Most recent qualifying fact for this line and entity, attached centrally (may be absent when the line has no qualifying fact yet)",
          "type": [
            "object",
            "null"
          ]
        },
        "leg_availability": {
          "description": "Per-leg degradation disclosure: which legs are present, which are degraded and why. Present only when at least one leg is degraded",
          "type": [
            "object",
            "null"
          ]
        },
        "record_hash_verifiable": {
          "description": "Whether this response can recompute its own record_hash offline. Present only when the payload carries a top-level record_hash; may be absent on list-shaped deliveries where verifiability is stated per row instead",
          "type": [
            "object",
            "null"
          ]
        }
      },
      "properties": {
        "_citation": {
          "description": "Offline-verifiable citation: {statement_type, not_advice:bool, claim, fact, source, record_hash, signature(Ed25519), key_id, issuer_DID(did:key), verify_url} - the trust root for zero-trust self-verification",
          "type": [
            "object",
            "null"
          ]
        },
        "change": {
          "description": "Change, nested per metric: change.<metric> = {delta, direction, direction_reason?}, plus the scalar change.period (e.g. \"vs_previous\"). direction is one of rising/falling/stable/unknown - unknown means the direction CANNOT BE DETERMINED, it does not mean stable; in that case direction_reason carries a machine-readable cause: no-previous-record / metric-absent-in-previous / metric-absent-in-current / non-numeric-value",
          "type": [
            "object",
            "null"
          ]
        },
        "current": {
          "description": "Current reading. The inner metric structure varies by signal (crypto -> {price_usd, volume_24h, ...}; shipping -> {wind_kmh, wave_height_m, ...}). Units are carried in the field-name suffix; see also standard_ruler.unit",
          "type": [
            "object",
            "null"
          ]
        },
        "data_age_hours": {
          "description": "Age frozen at collection time (0 = same hour), for reference only - if a collector stalls this field stops moving. For freshness always use provenance.age_hours_now (computed at request time) and provenance.freshness; the threshold basis is in provenance.freshness_basis",
          "type": [
            "number",
            "null"
          ]
        },
        "decision_points": {
          "description": "{count, points:[{tag,current,swappable,how}], note} - decision points you can re-run with a swapped tag (one swapped tag = one call); leave it alone and the original context is the default, at no extra charge",
          "type": [
            "object",
            "null"
          ]
        },
        "entity": {
          "description": "Monitored object id (e.g. btc / us / hormuz); full list at free /gauge/catalog or /gauge/preview",
          "type": "string"
        },
        "entity_name": {
          "description": "Human-readable name of the object",
          "type": [
            "string",
            "null"
          ]
        },
        "grade": {
          "description": "Honest data-grade disclosure (e.g. \"screening-level, not decision-grade\")",
          "type": [
            "string",
            "null"
          ]
        },
        "hash_core_version": {
          "description": "Core-contract version of record_hash (currently 3); use it to pick the right core composition when recomputing offline",
          "type": [
            "integer",
            "null"
          ]
        },
        "lifecycle": {
          "description": "Lifecycle block (state / birth_at / end_at / death_type / context). Part of the record_hash v3 core, so offline recomputation must include it; null for non-lifecycle lines",
          "type": [
            "object",
            "null"
          ]
        },
        "nature": {
          "description": "Neutrality statement: GAUGE supplies observations and trend description only - no judgement, no prediction, no recommendation",
          "type": "string"
        },
        "observed_at": {
          "description": "Actual observation time of the data, ISO-8601",
          "type": "string"
        },
        "ots_status": {
          "description": "RETIRED FIELD - always \"pending\" or null; this field is no longer updated and is kept only for older parsers. Anchoring itself resumed on 2026-08-15 as a daily Merkle root stamped via OpenTimestamps - it proves the day set existed no later than the stamp time, and is exposed at free /gauge/anchor (not here). For per-record self-verification use record_hash (canonical sha256, recomputable offline) plus free /gauge/verify",
          "type": [
            "string",
            "null"
          ]
        },
        "previous": {
          "description": "Previous-period reading (a subset of the metrics in current; or {note} explaining that there is no previous value)",
          "type": [
            "object",
            "null"
          ]
        },
        "provenance": {
          "description": "Data lineage: {served_from, data_as_of, oldest_leg_as_of, data_age_hours (frozen age, reference only), age_hours_now (age computed at request time - the real basis for freshness), freshness(fresh|recent|stale), freshness_basis (the cadence and threshold used for this row, as a string), dead_source (optional: upstream frozen or discontinued), data_lineage:[{signal,traceable_to,uncertainty,record_hash,...}], validation_status}. Freshness is cadence-aware, so monthly/quarterly/annual official lines are not misjudged against a 24h rule; the same basis is used by free /gauge/coverage. Buyers can trace back to the official source",
          "type": [
            "object",
            "null"
          ]
        },
        "record_hash": {
          "description": "sha256:<64hex> (contract A v3, binds the values plus provenance)",
          "type": [
            "string",
            "null"
          ]
        },
        "record_hash_verifiable": {
          "description": "{mode:offline|via-endpoint, note}",
          "type": [
            "object",
            "null"
          ]
        },
        "scope": {
          "description": "Honest statement of scope and limits: monitoring is not forecasting, intelligence is not instruction, and the boundary of what is verifiable",
          "type": [
            "string",
            "null"
          ]
        },
        "signal_id": {
          "description": "Signal id in genus.species ASCII binomial form (e.g. crypto.spot / macro.unemployment / shipping.route-disruption); full list at free /gauge/catalog",
          "type": "string"
        },
        "snapshot_date": {
          "description": "ISO-8601 date-time in UTC (e.g. 2026-07-24T00:00:00.000Z; aligned to midnight of that day)",
          "type": "string"
        },
        "source_agreement_cv": {
          "description": "Multi-source agreement, coefficient of variation (smaller = closer agreement). Present ONLY when two or more CONFIRMED-INDEPENDENT sources measure the same fact at the same time - see sources[].independent. Same source relayed through two channels does not count as independent, and two different time bases (daily mean vs spot) do not count as agreement. Single-source / unconfirmed independence / not applicable -> null",
          "type": [
            "number",
            "null"
          ]
        },
        "source_ref": {
          "description": "Official source URL (provenance)",
          "type": [
            "string",
            "null"
          ]
        },
        "source_tier": {
          "description": "Source tier: T1 (first-hand official) / T2 or T2-<subtype, e.g. T2-exchange> (observable, curated) / screen-viewpoint; null = untiered (see unverified)",
          "type": [
            "string",
            "null"
          ]
        },
        "sources": {
          "description": "Source list [{name, value, weight, as_of, role, independent, relay_of?}]. independent:true = confirmed independent source; false = confirmed relay channel of another source (relay_of names the origin); null = independence unconfirmed (neither denied nor claimed). name/weight/independent/relay_of are record_hash core fields, so tampering with an independence claim breaks self-verification; as_of/value/role drift easily and are not hashed",
          "items": {
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "standard_ruler": {
          "description": "Official standard ruler (band / thresholds / normalized_index / pct_to_action, with unit and provenance); null when the line has no official ruler. Inner structure varies by signal",
          "type": [
            "object",
            "null"
          ]
        },
        "stat_ruler": {
          "description": "Statistical ruler: empirical percentile position across the last 5 same-season years; null when there are no statistics",
          "type": [
            "object",
            "null"
          ]
        },
        "strata": {
          "description": "Statistical strata: share of each official band over the last 5 same-season years plus the band the current value falls in; null when there are no statistics",
          "type": [
            "object",
            "null"
          ]
        },
        "summary_zh": {
          "description": "Human-readable one-line summary, IN CHINESE (zh-TW): reading + where it sits on the official ruler + statistical position. English-only consumers should ignore this field and read current/standard_ruler/stat_ruler instead",
          "type": [
            "string",
            "null"
          ]
        },
        "tier": {
          "description": "Marker for the main single-point or history-series response (full / history-series); mutually exclusive with dim/addon",
          "type": "string"
        },
        "trend_7d": {
          "description": "Array of the last 7 trend points; [] means this signal has no series yet or the series does not apply - it is not an error",
          "items": {
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "unverified": {
          "description": "true = the source is untiered (source_tier is null); buyers and agents can filter on this",
          "type": "boolean"
        },
        "update_status": {
          "description": "Did the OFFICIAL source keep its own declared publication cadence? Separate dimension from freshness: a record can be freshness=recent and update_status=overdue at the same time. state: on_schedule | overdue | not_published | unknown",
          "properties": {
            "official_cadence": {
              "description": "The cadence the official source declares for this line (hourly/daily/weekly/monthly/quarterly/yearly/as-events)",
              "type": [
                "string",
                "null"
              ]
            },
            "overdue_days": {
              "description": "How many days past that cadence; null when it cannot be determined",
              "type": [
                "integer",
                "null"
              ]
            },
            "state": {
              "description": "on_schedule | overdue | not_published | unknown",
              "type": "string"
            },
            "text": {
              "description": "One-line human-readable form of the same fact",
              "type": "string"
            }
          },
          "type": "object"
        }
      },
      "required": [
        "nature"
      ],
      "type": "object"
    },
    "separation": {
      "description": "{rule, why} - machine-readable statement of the isolation guarantee, so a buyer never has to infer it from prose",
      "type": "object"
    },
    "unverified": {
      "description": "UNVERIFIED half, structurally separated: public-channel chatter from the last 48h plus a non-reproducible LLM trend summary. Never merged into the authoritative half and never part of its hash",
      "type": "object"
    }
  },
  "required": [
    "official",
    "unverified",
    "separation"
  ],
  "type": "object"
}