{"service":"x402pulse","methodologyVersion":"xp-1.2.0","published":"2026-11-02T03:42:05.435Z","principle":"This service measures whether somebody else's x402 endpoint answered, how fast, and whether its 402 offer was well formed. It states what it checked, over what window, and what the answer does not establish. No LLM inference anywhere: every response is a deterministic computation over recorded observations or a live read.","whatAProbeIs":{"method":"Every tracked endpoint is requested on a fixed interval. The response status, latency, and — where a 402 is returned — the structure of the payment offer are recorded. Nothing is purchased and nothing is settled.","redirects":"From the 3 October 2026 hardening release, probes report the initial redirect without following it. Connection-time DNS and literal addresses must be public unicast. This changes observation behaviour within that day; canonical record format is unchanged.","interval":"Every 10 minutes per endpoint, subject to the scheduler running.","measures":["reachability","latency","whether the endpoint spoke x402 at all","whether the 402 offer parsed and carried a usable price, asset, network and payTo"],"doesNotMeasure":["whether the data behind the endpoint is correct","whether the seller is solvent, honest, or will still exist next week","whether a payment would actually settle — no payment is attempted","anything about the endpoint from a vantage point other than this server"]},"evidenceModel":{"assurance":"Assurance is an ordinal label describing HOW an answer was produced (observed / deterministic / structural). It is deliberately NOT a numeric score, because a number implies a calibration that has never been performed. A grade is a summary of measurements, not a probability that a seller is trustworthy.","freshness":"A verdict describes the observations held at request time. An endpoint observed five minutes ago and an endpoint observed once a week ago can carry the same grade shape; the record count and window are returned so the difference is visible.","absenceOfHistory":"Absence of history is NOT evidence of unreliability. A newly listed endpoint has a short record because it is new, not because it failed. Endpoint history explicitly says so rather than letting a thin record read as a bad one.","signature":"The ordinary verdict JSON is unsigned. /v1/attest returns an Ed25519-signed attestation token; public keys are at /.well-known/x402pulse.json and /.well-known/signing-key.json. Daily archive checkpoints are separate signed commitments. A valid signature proves the response came from this service unaltered. It does not prove the measurement is correct. A signed wrong answer is still wrong.","selfObservation":"Some tracked endpoints are operated by the same person who runs this observatory. Records from those hosts carry \"self\": 1 in the archive. They are tagged rather than removed, because an observatory that observes itself without saying so is the same defect as a self-reported ecosystem dashboard."},"streakCorrection":{"released":"2026-10-17","method":"Missing UTC days break consecutive observation streaks without counting as failed observations. Zero-probe days do not count as observed. since is the start of the current streak; observedSince is the first observed day. throughDay and scope disclose that the latest day may be partial or stale.","historicalLimit":"Earlier derived streaks could count across missing days. Original observations, archive commitments and previously issued tokens are not rewritten. Signature validity does not correct an old calculation."},"collectionMethod":{"document":"/collection-method.html","canonicalFormat":"x402pulse.dataset.v1; canonical record bytes unchanged by the persistence repair","eras":[{"through":"2026-10-01","status":"legacy_unverifiable","note":"56 committed days mismatch retained records. Original commitments remain preserved."},{"from":"2026-10-02","through":"2026-10-02","status":"mixed_repair_transition","note":"Excluded by the reference checker even if a root matches."},{"from":"2026-10-03","through":"2026-10-03","status":"collector_incident","note":"Runtime network-client incompatibility produced false network failures. Original records retained; this day is excluded from usable evidence."},{"from":"2026-10-04","status":"repaired_candidate","note":"Sequence-numbered journal and checkpoint replay. Each completed day still requires independent record, issuer, chain and timestamp checks."}],"selection":"Seed endpoints plus up to 150 selected resources per hourly Bazaar refresh. Priced resources are preferred in returned catalogue order. The panel can change and is neither random nor representative; historical endpointsTracked is not the current sweep size.","protocolBoundary":"Scheduled probes are unpaid GET requests. POST-only endpoints can answer differently. Passive x401 draft 0.2.0 envelope summaries are recent-probe metadata only, not canonical archive records or credential verification.","vector":"/integration/canonical-vector.json"},"archive":{"knownDamage":"56 days from 2026-08-07 through 2026-10-01 remain unverifiable. Read /v1/archive/integrity for current mismatches; do not treat an anchor or a successful restore as repaired history.","referenceChecker":"/evidence.html","what":"One rollup record per endpoint per UTC day is retained without automatic expiry on the current disk. Raw probes are capped; daily rollups remain available separately. Disk persistence and backups are operational responsibilities, not a guarantee of permanent availability.","canonicalForm":"One definition of a record, shared by the anchor and the published export. Two definitions would drift, and a drifted proof stops matching the data it claims to cover without anything failing.","anchoring":"Each day a Merkle root is built over that day's canonical records, chained to the previous day's root, and submitted to OpenTimestamps calendars which aggregate into Bitcoin.","pendingVsAttested":"A calendar's first answer is a PENDING attestation — a promise to include the digest, not a block. The Bitcoin attestation is collected later by upgrading the proof. Until a proof is upgraded it rests on the calendars' own records, which is weaker. /v1/archive/anchors publishes how many proofs are in each state; do not read \"anchored\" as \"Bitcoin-attested\" without checking.","backfill":"An anchor made in arrears proves the records existed no later than the anchoring time. It does NOT prove they existed on the date they describe — nothing can establish that retroactively. Backfilled entries are labelled and counted.","continuity":"Continuity between anchored days is NOT established. The service redeploys, and each restart resets the scheduler. A day that is anchored says what was held that day; it does not prove uninterrupted observation between days.","cadence":"The dataset manifest enumerates expected days against present days, because an anchor can only attest what was committed — it cannot reveal a day that was never committed. A gap is stated rather than being invisible.","verifyWithoutTrustingUs":["Take a day's records exactly as served, one JSON object per line.","sha256 each line to get the leaves, in the order given.","Build a binary Merkle tree, promoting an odd node rather than duplicating it.","That root must equal merkleRoot for the day in /v1/archive/anchors.","sha256(prevChained || merkleRoot) must equal that day's chained value.","Verify that value against its OpenTimestamps proof with the standard `ots` client, and check the block it names against any block explorer. Nothing in that last step is ours."]},"endpoints":[{"path":"/v1/verdict","price":"$0.03","decision":"endpoint_quality","checks":["availability over the held window","latency percentiles","402 offer conformance","price drift","payTo stability"],"assurance":{"level":"observed","basis":"direct measurement from this server; no payment attempted"},"limitations":["Describes observations from one vantage point.","Says nothing about the correctness or value of the data sold.","A high grade is the absence of measured faults, not an endorsement."]},{"path":"/v1/rankings","price":"$0.07","decision":"comparative_quality","checks":["the same measurements, ordered across tracked endpoints"],"assurance":{"level":"observed","basis":"ordering of measured values"},"limitations":["Only endpoints tracked here are ranked; the ranking is not of the ecosystem.","Endpoints with short histories are ranked on less evidence, which the record count shows."]},{"path":"/v1/attest","price":"$0.12","decision":"signed_snapshot","checks":["a verdict, signed, with a 24h validity window"],"assurance":{"level":"observed","basis":"the signature covers the measurement, not its truth"},"limitations":["An attestation proves what this service measured and when. It is not a warranty to any third party."]},{"path":"/v1/feed","price":"$0.15","decision":"bulk_quality","checks":["every tracked endpoint in one response, for routers and aggregators"],"assurance":{"level":"observed","basis":"the same measurements in bulk"},"limitations":["A snapshot. Anything acting on it should re-read rather than cache indefinitely."]},{"path":"/v1/archive/full","price":"$0.50","decision":"historical_record","checks":["every day held, with its Merkle root and timestamp proof"],"assurance":{"level":"deterministic","basis":"the records are the records; the roots are recomputable by the buyer"},"limitations":["Coverage begins at observingSince and no earlier.","Backfilled days carry a weaker claim, and say so.","Continuity between days is not established."]}],"free":["/v1/methodology — this document","/v1/datasets/manifest — what the archive holds, its cadence, and how to verify it","/v1/datasets/day/{day} — the most recent 7 days, exactly as served","/v1/archive/anchors — every root, its chain link, and its timestamp proof state","/v1/selfcheck — what is currently broken, including things broken about this service"],"globalLimitations":["Measurements are informational signals for routing and diligence. They are not a rating, a certification, or advice.","Absence of a measured fault is not a positive assurance about a seller.","This service observes from one host, on one network path, at one cadence. A different vantage point may see different results."],"state":{"observingSince":"2026-08-07","endpointsTracked":433,"daysAnchored":87,"proofsBitcoinAttested":257,"proofsPending":3,"timestampStatus":"Partly upgraded. Some proofs carry a Bitcoin attestation; others are still pending."},"corrections":"Errors can be reported to contact@chainverdict.xyz. Material changes increment methodologyVersion and are reflected here."}