Skip to content

test(0120): endpoint conformance suite for 20 major assets - #226

Merged
stkrolikiewicz merged 10 commits into
developfrom
test/0120_endpoint-conformance-20-major-assets
Aug 20, 2026
Merged

test(0120): endpoint conformance suite for 20 major assets#226
stkrolikiewicz merged 10 commits into
developfrom
test/0120_endpoint-conformance-20-major-assets

Conversation

@stkrolikiewicz

Copy link
Copy Markdown
Collaborator

Summary

  • Fix the 20-asset conformance list (tools/scripts/conformance-assets.json) — §9 six majors + top-volume fill from the store, all three identifier forms covered; USDT excluded per 0172. Shared with 0121/0123/0127/0128.
  • Add the re-runnable acceptance suite tools/scripts/conformance-0120.mjs (npm run conformance:0120): exercises all 7 route groups per asset against production, validates every response (errors included) against the live /api-docs-json spec (ajv, JSON Schema 2020-12), then layers sanity assertions the schema cannot express — sentinels, OHLCV invariants, exhaustive pagination walk, batch-vs-single agreement. Paced ≤1 rps for the free usage plan.
  • Production run 2026-08-19: 752 pass / 55 fail, zero schema failures — the whole route surface is schema-valid; every failure is a data defect.
  • Spawn defect tasks 0207–0211 covering all failure classes (price_usd stub for AMM-only assets; canonical USDC unlisted/unpriced; volume without vwap/sources/candles; empty soroban asset_code; undocumented inclusive OHLCV window bounds).
  • Update task 0120: fixed list documented in-task, run results recorded; the stub/sentinel AC stays open until 0207–0209 land — re-run the suite and cite the green report in 0128.

Derived from production volume ranking plus the six s9 majors; covers
all three identifier forms. USDT excluded (bug 0172). Records four
preliminary findings from the derivation probes for the suite run to
verify.
Validates all 7 route groups for the fixed 20-asset list against the
live OpenAPI spec plus sanity assertions the schema cannot express.
Run 2026-08-19: 752 pass, 55 fail, zero schema failures - every
failure is a data defect, spawned as tasks 0207-0211.
The conformance run's USDC failures confirm what okarcz already
diagnosed at the store level: 0178 (current_prices groups on the base
leg) and 0170 (/ohlcv self-pair). Cross-references updated; 0207/0209
now point at the enrichment-family neighbours as diagnostic starts.
…every failure class

Cross-check against the backlog showed all four conformance failure
classes are okarcz's tasks with decided contracts or deeper diagnoses.
Probed on prod: the 'empty OHLCV windows' are 0170's blast radius, not
missing data - all five assets return real buckets in XLM mode. Fresh
run evidence appended to 0135 and 0170 histories.
Three crash paths left a run with no report at all: a failed spec fetch
passed null to ajv.addSchema, and the pagination walk both validated
against a possibly-null $ref and iterated a data array whose shape it
had just rejected. Every early exit now goes through the report writer.

volume_24h_usd is parse-only (a tracked asset can go a day without a
trade) and updated_at tolerates 5 min of producer clock skew - both
would otherwise flake on the 0128 re-run.
Re-running the committed suite via the npm entry point 16 minutes after
the previous run moved the fail count 54 -> 42. The membership churns in
both directions: the sources-empty set lost five assets and gained XRP.

0170 and 0178's counts held exactly stable across all three runs while
0135's three classes moved, which corroborates the root-cause split from
the outside. Corrects an earlier claim that counts drift by one or two.
Develop independently allocated 0207-0209 to unrelated tasks after this
branch retired its own spawns under those ids. References in 0120, 0135
and 0170 now describe the retired spawns without bare ids so they cannot
be read as pointing at the new tasks. 0210/0211 remain the next free ids
on the shared sequence.
@stkrolikiewicz
stkrolikiewicz merged commit 97f95c9 into develop Aug 20, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant