docs: align CG_CMC_COMPLIANCE with official CG/CMC DEX listing specs #224

Closed
opened 2026-05-29 05:37:03 +00:00 by PlasticDigits · 23 comments
PlasticDigits commented 2026-05-29 05:37:03 +00:00 (Migrated from gitlab.com)

Summary

Audit and rewrite docs/CG_CMC_COMPLIANCE.md (and cross-links) so every field, type, example JSON, and parameter description exactly matches authoritative DEX listing sources — not drifted copies or outdated stubs.

Authoritative references (listing / exchange-hosted APIs):

Aggregator Spec URL
CoinGecko (self-hosted integration) Kujira FIN reference implementation (Terra ecosystem) https://docs.kujira.app/dapps-and-infrastructure/fin/coingecko-api.md
CoinMarketCap (exchange integration) Openware Peatio CMC module https://openware.com/sdk/2.6/docs/peatio/peatio/coin-market-cap
CMC listings policy Exchange must publish summary API https://support.coinmarketcap.com/hc/en-us/articles/360043659351-Listings-Criteria

Not in scope for “exact match”: CoinGecko Pro API v3 (docs.coingecko.com) — that is the aggregator consumer API, not the exchange-hosted /cg/* surface CL8Y implements.

Depends on / tracks implementation issues: hybrid orderbook, Openware depth, timestamp formats, CMC array wrapper, #210.


Current codebase

Artifact State today
docs/CG_CMC_COMPLIANCE.md Mixed accuracy: CG orderbook example shows ms number but code emits RFC3339 string; CMC orderbook example object vs Openware array; depth described as per-side in places vs Openware total-depth
docs/indexer-invariants.md Cache/depth invariants — must stay aligned after doc pass
docs/limit-orders.md, docs/integrators.md Cross-links to CG/CMC vs limit-book
docs/testing.md, skills/AGENTS_TESTING_P2_EPIC.md Stub vs production notes
skills/AGENTS_INDEXER_AMM_ORDERBOOK_SIM.md Agent playbook
gaps/GAP_1780023683.md Gap matrix row for orderbook sim
OpenAPI (utoipa) in cg.rs, cmc.rs May drift from markdown

Known doc ↔ code gaps (from spot-check):

  1. Orderbook timestamp types (CG ms, CMC s) vs RFC3339 in code.
  2. CMC orderbook root array vs object.
  3. depth semantics (Openware total vs per-side).
  4. AMM-only vs future hybrid-sim wording.
  5. CG historical_trades / CMC trades largely correct (seconds).

Why this is needed

  1. Listing submissions paste compliance doc into forms; inaccuracies cause rejection or re-crawl failures.
  2. Engineering single source of truth: Agents and integrators use docs/ + skills/; they must not contradict live handlers.
  3. #210 closure: Marked AMM sim “Done” in gap matrix — follow-up issues need a canonical spec section per topic.
  4. Legal/disclosure: Hybrid + simulated depth must be stated exactly where CG/CMC specs allow annotations.

Constraints and guardrails

Area Guardrail
Source hierarchy Kujira doc for CG endpoint paths, query params, response shapes; Openware for CMC; note deliberate CL8Y path prefix /cg/ /cmc/ vs upstream path names
No fantasy fields Do not document fields the indexer does not emit
Examples Copy structure from official specs; use CL8Y tickers (LUNC_USTC) only where illustrative
Simulated vs real Clearly label AMM / hybrid-sim vs on-chain limit-book (required disclosure)
Pro API v3 Separate subsection “Not applicable” to avoid conflating with listing API
Cross-links Update skills/, gaps/, #105 stub catalog if needed
OpenAPI Either generate from code post-fix or manually sync — document which is canonical

Relevant files

File Role
docs/CG_CMC_COMPLIANCE.md Primary deliverable
docs/indexer-invariants.md
docs/limit-orders.md, docs/integrators.md
docs/testing.md
skills/AGENTS_INDEXER_AMM_ORDERBOOK_SIM.md, skills/AGENTS_TESTING_P2_EPIC.md
gaps/GAP_1780023683.md
indexer/src/api/cg.rs, cmc.rs Ground truth after fixes

  1. Spec matrix table in compliance doc: Endpoint | Official ref | CL8Y path | Match? | Notes.
  2. Per-endpoint sections: Regenerate JSON examples from actual curl against local indexer or test fixtures after sibling issues merge.
  3. CG orderbook: Match Kujira (ticker_id, numeric ms timestamp, [price, qty] strings, bid/ask sort).
  4. CMC orderbook: Match Openware (array wrapper, ms vs seconds per product decision on timestamp issue, depth semantics).
  5. Add “Compliance verification” appendix: checklist + links for listing team.
  6. CI optional: script or test that compares documented depth cap / field names to OpenAPI schema (future).

Acceptance criteria

  • Every CG endpoint section matches Kujira FIN doc (fields, types, sort order, query params) or documents intentional CL8Y delta with rationale.
  • Every CMC endpoint section matches Openware Peatio spec or documents intentional delta.
  • All JSON examples validate against live indexer responses (post dependent fixes) or marked pending with issue links.
  • No references to “stub” for orderbook_sim where #210 shipped production AMM math.
  • skills/ and gaps/ cross-links updated.
  • Explicit “Not CoinGecko Pro API v3” callout present.

Test plan — functional paths (documentation)

# Scenario Expected
1 /cg/pairs example vs live Field-for-field match
2 /cg/tickers Match + cl8y_extensions documented as extension
3 /cg/orderbook Ms timestamp, depth semantics, sorts
4 /cg/historical_trades Seconds trade_timestamp
5 /cmc/summary, /assets, /ticker Openware field names
6 /cmc/orderbook Array wrapper + seconds + depth
7 /cmc/trades Array of trades, seconds

Test plan — attack vectors / abuse (documentation)

# Vector Mitigation
A1 Integrator uses Pro API v3 docs for CL8Y Prominent warning box
A2 Simulated book confused with FIFO limit-orders.md link on every orderbook section
A3 Stale examples after code change “Last verified at commit …” footer or CI curl check

Verification criteria

  1. Listing team review sign-off on compliance doc PR.
  2. Side-by-side PDF/screenshot of Kujira + Openware vs CL8Y doc (archived in docs/reviews/ optional).
  3. All dependent implementation issues linked and closed or explicitly deferred in doc.
  4. glab issue note on #210 when doc pass completes.
## Summary Audit and rewrite [`docs/CG_CMC_COMPLIANCE.md`](docs/CG_CMC_COMPLIANCE.md) (and cross-links) so **every** field, type, example JSON, and parameter description **exactly matches** authoritative **DEX listing** sources — **not** drifted copies or outdated stubs. **Authoritative references (listing / exchange-hosted APIs):** | Aggregator | Spec | URL | |------------|------|-----| | **CoinGecko** (self-hosted integration) | Kujira FIN reference implementation (Terra ecosystem) | https://docs.kujira.app/dapps-and-infrastructure/fin/coingecko-api.md | | **CoinMarketCap** (exchange integration) | Openware Peatio CMC module | https://openware.com/sdk/2.6/docs/peatio/peatio/coin-market-cap | | **CMC listings policy** | Exchange must publish summary API | https://support.coinmarketcap.com/hc/en-us/articles/360043659351-Listings-Criteria | **Not in scope for “exact match”:** CoinGecko **Pro API v3** (`docs.coingecko.com`) — that is the **aggregator consumer API**, not the exchange-hosted `/cg/*` surface CL8Y implements. Depends on / tracks implementation issues: hybrid orderbook, Openware depth, timestamp formats, CMC array wrapper, [**#210**](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/210). --- ## Current codebase | Artifact | State today | |----------|-------------| | [`docs/CG_CMC_COMPLIANCE.md`](docs/CG_CMC_COMPLIANCE.md) | Mixed accuracy: CG orderbook example shows **ms number** but code emits **RFC3339 string**; CMC orderbook example **object** vs Openware **array**; depth described as per-side in places vs Openware total-depth | | [`docs/indexer-invariants.md`](docs/indexer-invariants.md) | Cache/depth invariants — must stay aligned after doc pass | | [`docs/limit-orders.md`](docs/limit-orders.md), [`docs/integrators.md`](docs/integrators.md) | Cross-links to CG/CMC vs `limit-book` | | [`docs/testing.md`](docs/testing.md), [`skills/AGENTS_TESTING_P2_EPIC.md`](skills/AGENTS_TESTING_P2_EPIC.md) | Stub vs production notes | | [`skills/AGENTS_INDEXER_AMM_ORDERBOOK_SIM.md`](skills/AGENTS_INDEXER_AMM_ORDERBOOK_SIM.md) | Agent playbook | | [`gaps/GAP_1780023683.md`](gaps/GAP_1780023683.md) | Gap matrix row for orderbook sim | | OpenAPI (utoipa) in [`cg.rs`](indexer/src/api/cg.rs), [`cmc.rs`](indexer/src/api/cmc.rs) | May drift from markdown | **Known doc ↔ code gaps (from spot-check):** 1. Orderbook `timestamp` types (CG ms, CMC s) vs RFC3339 in code. 2. CMC orderbook root array vs object. 3. `depth` semantics (Openware total vs per-side). 4. AMM-only vs future hybrid-sim wording. 5. CG `historical_trades` / CMC `trades` largely correct (seconds). --- ## Why this is needed 1. **Listing submissions** paste compliance doc into forms; inaccuracies cause **rejection or re-crawl failures**. 2. **Engineering single source of truth**: Agents and integrators use `docs/` + `skills/`; they must not contradict live handlers. 3. **#210 closure**: Marked AMM sim “Done” in gap matrix — follow-up issues need a **canonical** spec section per topic. 4. **Legal/disclosure**: Hybrid + simulated depth must be stated **exactly** where CG/CMC specs allow annotations. --- ## Constraints and guardrails | Area | Guardrail | |------|-----------| | **Source hierarchy** | Kujira doc for **CG** endpoint paths, query params, response shapes; Openware for **CMC**; note deliberate CL8Y path prefix `/cg/` `/cmc/` vs upstream path names | | **No fantasy fields** | Do not document fields the indexer does not emit | | **Examples** | Copy **structure** from official specs; use CL8Y tickers (`LUNC_USTC`) only where illustrative | | **Simulated vs real** | Clearly label AMM / hybrid-sim vs on-chain `limit-book` (required disclosure) | | **Pro API v3** | Separate subsection “Not applicable” to avoid conflating with listing API | | **Cross-links** | Update `skills/`, `gaps/`, `#105` stub catalog if needed | | **OpenAPI** | Either generate from code post-fix or manually sync — document which is canonical | --- ## Relevant files | File | Role | |------|------| | [`docs/CG_CMC_COMPLIANCE.md`](docs/CG_CMC_COMPLIANCE.md) | Primary deliverable | | [`docs/indexer-invariants.md`](docs/indexer-invariants.md) | | [`docs/limit-orders.md`](docs/limit-orders.md), [`docs/integrators.md`](docs/integrators.md) | | [`docs/testing.md`](docs/testing.md) | | [`skills/AGENTS_INDEXER_AMM_ORDERBOOK_SIM.md`](skills/AGENTS_INDEXER_AMM_ORDERBOOK_SIM.md), [`skills/AGENTS_TESTING_P2_EPIC.md`](skills/AGENTS_TESTING_P2_EPIC.md) | | [`gaps/GAP_1780023683.md`](gaps/GAP_1780023683.md) | | [`indexer/src/api/cg.rs`](indexer/src/api/cg.rs), [`cmc.rs`](indexer/src/api/cmc.rs) | Ground truth after fixes | --- ## Recommended direction 1. **Spec matrix** table in compliance doc: Endpoint | Official ref | CL8Y path | Match? | Notes. 2. **Per-endpoint sections**: Regenerate JSON examples from **actual** `curl` against local indexer or test fixtures after sibling issues merge. 3. **CG orderbook**: Match Kujira (`ticker_id`, numeric ms `timestamp`, `[price, qty]` strings, bid/ask sort). 4. **CMC orderbook**: Match Openware (array wrapper, ms vs seconds per product decision on timestamp issue, depth semantics). 5. **Add “Compliance verification” appendix**: checklist + links for listing team. 6. **CI optional**: script or test that compares documented `depth` cap / field names to OpenAPI schema (future). --- ## Acceptance criteria - [ ] Every CG endpoint section matches Kujira FIN doc (fields, types, sort order, query params) or documents **intentional CL8Y delta** with rationale. - [ ] Every CMC endpoint section matches Openware Peatio spec or documents intentional delta. - [ ] All JSON examples validate against **live** indexer responses (post dependent fixes) or marked `pending` with issue links. - [ ] No references to “stub” for `orderbook_sim` where #210 shipped production AMM math. - [ ] `skills/` and `gaps/` cross-links updated. - [ ] Explicit “Not CoinGecko Pro API v3” callout present. --- ## Test plan — functional paths (documentation) | # | Scenario | Expected | |---|----------|----------| | 1 | `/cg/pairs` example vs live | Field-for-field match | | 2 | `/cg/tickers` | Match + `cl8y_extensions` documented as extension | | 3 | `/cg/orderbook` | Ms timestamp, depth semantics, sorts | | 4 | `/cg/historical_trades` | Seconds `trade_timestamp` | | 5 | `/cmc/summary`, `/assets`, `/ticker` | Openware field names | | 6 | `/cmc/orderbook` | Array wrapper + seconds + depth | | 7 | `/cmc/trades` | Array of trades, seconds | --- ## Test plan — attack vectors / abuse (documentation) | # | Vector | Mitigation | |---|--------|------------| | A1 | Integrator uses Pro API v3 docs for CL8Y | Prominent warning box | | A2 | Simulated book confused with FIFO | `limit-orders.md` link on every orderbook section | | A3 | Stale examples after code change | “Last verified at commit …” footer or CI curl check | --- ## Verification criteria 1. Listing team review sign-off on compliance doc PR. 2. Side-by-side PDF/screenshot of Kujira + Openware vs CL8Y doc (archived in `docs/reviews/` optional). 3. All dependent implementation issues linked and closed or explicitly deferred in doc. 4. `glab issue note` on [**#210**](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/210) when doc pass completes.
PlasticDigits commented 2026-05-29 05:37:05 +00:00 (Migrated from gitlab.com)

marked as related to #210

marked as related to #210
PlasticDigits commented 2026-05-29 05:37:12 +00:00 (Migrated from gitlab.com)

mentioned in issue #210

mentioned in issue #210
PlasticDigits commented 2026-05-29 08:08:34 +00:00 (Migrated from gitlab.com)

mentioned in commit 862d7ddeaa

mentioned in commit 862d7ddeaa43bdc7db202b0878278d7b22f5cc6c
PlasticDigits commented 2026-05-29 08:08:43 +00:00 (Migrated from gitlab.com)

Implementation summary (GitLab #224)

Merged to main in commit 89449a1 (branch fix/224-cg-cmc-compliance).

Code changes

  • listing_timestamps.rs: shared instant for CG orderbook (timestamp = Unix ms) and CMC orderbook (seconds, aligned with /cmc/trades).
  • /cg/orderbook: numeric ms timestamp (was RFC3339 string).
  • /cmc/orderbook/:market_pair: Openware array wrapper [{ timestamp, bids, asks }] + numeric seconds timestamp.
  • Integration tests in api_orderbook_lcd_mock.rs, api_cmc.rs, api_cg.rs assert shapes.

Documentation

Breaking changes for integrators

  • CG/CMC orderbook timestamp is no longer an RFC3339 string.
  • CMC orderbook root is now a JSON array (one element), not a bare object.

@brouie — please verify on a deployed indexer (or local with Postgres):

  • GET /cg/orderbook?ticker_id=LUNC_USTC → timestamp is a number ~1.7e12 (ms); bids/asks sorted.
  • GET /cmc/orderbook/LUNC_USTC → JSON array with one object; timestamp ~1.7e9 (seconds).
  • GET /cg/historical_trades?ticker_id=LUNC_USTC → trade_timestamp in seconds.
  • GET /cmc/trades/LUNC_USTC → array of trades; timestamp in seconds.
  • /cg/pairs and /cg/tickers still return top-level arrays (documented delta vs Kujira wrappers).
  • Compliance doc spec matrix matches live responses.
  • cd indexer && cargo test --test api_orderbook_lcd_mock --test api_cg --test api_cmc (requires dex_indexer_test Postgres).

Leaving this issue open until listing-team sign-off.

## Implementation summary (GitLab #224) Merged to `main` in commit `89449a1` (branch `fix/224-cg-cmc-compliance`). ### Code changes - **`listing_timestamps.rs`**: shared instant for CG orderbook (`timestamp` = Unix **ms**) and CMC orderbook (**seconds**, aligned with `/cmc/trades`). - **`/cg/orderbook`**: numeric ms `timestamp` (was RFC3339 string). - **`/cmc/orderbook/:market_pair`**: Openware **array wrapper** `[{ timestamp, bids, asks }]` + numeric seconds `timestamp`. - Integration tests in `api_orderbook_lcd_mock.rs`, `api_cmc.rs`, `api_cg.rs` assert shapes. ### Documentation - Rewrote [`docs/CG_CMC_COMPLIANCE.md`](docs/CG_CMC_COMPLIANCE.md): spec matrix, **Not CoinGecko Pro API v3** callout, compliance verification checklist, corrected `trade_timestamp` (seconds) and CMC orderbook array example. - [`docs/indexer-invariants.md`](docs/indexer-invariants.md): listing timestamp + CMC array invariants. - Cross-links: [`skills/AGENTS_INDEXER_AMM_ORDERBOOK_SIM.md`](skills/AGENTS_INDEXER_AMM_ORDERBOOK_SIM.md), [`skills/AGENTS_TESTING_P2_EPIC.md`](skills/AGENTS_TESTING_P2_EPIC.md), [`gaps/GAP_1780023683.md`](gaps/GAP_1780023683.md). ### Breaking changes for integrators - CG/CMC orderbook `timestamp` is no longer an RFC3339 string. - CMC orderbook root is now a **JSON array** (one element), not a bare object. --- @brouie — please verify on a deployed indexer (or local with Postgres): - [ ] `GET /cg/orderbook?ticker_id=LUNC_USTC` → `timestamp` is a number ~1.7e12 (ms); bids/asks sorted. - [ ] `GET /cmc/orderbook/LUNC_USTC` → JSON **array** with one object; `timestamp` ~1.7e9 (seconds). - [ ] `GET /cg/historical_trades?ticker_id=LUNC_USTC` → `trade_timestamp` in **seconds**. - [ ] `GET /cmc/trades/LUNC_USTC` → array of trades; `timestamp` in seconds. - [ ] `/cg/pairs` and `/cg/tickers` still return top-level arrays (documented delta vs Kujira wrappers). - [ ] Compliance doc spec matrix matches live responses. - [ ] `cd indexer && cargo test --test api_orderbook_lcd_mock --test api_cg --test api_cmc` (requires `dex_indexer_test` Postgres). Leaving this issue **open** until listing-team sign-off.
PlasticDigits commented 2026-05-29 08:26:38 +00:00 (Migrated from gitlab.com)

mentioned in issue #222

mentioned in issue #222
PlasticDigits commented 2026-05-29 08:40:22 +00:00 (Migrated from gitlab.com)

mentioned in commit fdcc0c20b1

mentioned in commit fdcc0c20b18a728a63dab1b38fe6670dba1f693f
PlasticDigits commented 2026-05-29 08:40:30 +00:00 (Migrated from gitlab.com)

mentioned in issue #223

mentioned in issue #223
PlasticDigits commented 2026-05-30 06:32:05 +00:00 (Migrated from gitlab.com)

mentioned in commit 4254d2ee2e

mentioned in commit 4254d2ee2ee6cd8dcd4b1a1e8e68fa249856771c
PlasticDigits commented 2026-05-30 06:32:16 +00:00 (Migrated from gitlab.com)

mentioned in commit 54a6346169

mentioned in commit 54a6346169e7227fd5376a9ecb8e38cda8435d10
PlasticDigits commented 2026-05-30 06:32:31 +00:00 (Migrated from gitlab.com)

Verification pass (GitLab #224)

Worktree: verify/issue-224 → merged to main at 54a6346 (includes 4254d2e test/doc fixes).

What was verified

Live indexer at http://127.0.0.1:3001 against docs/CG_CMC_COMPLIANCE.md test plan (pair EMBER_CORAL):

# Endpoint Result
1 GET /cg/pairs ✅ ticker_id, base, target, pool_id
2 GET /cg/tickers ✅ consolidated volumes; cl8y_extensions when indexed
3 GET /cg/orderbook ✅ timestamp JSON number ~1.7e12 (ms); 10+10 levels at depth=20; bids desc / asks asc
4 GET /cg/historical_trades ✅ trade_timestamp seconds (~1.7e9)
5 GET /cmc/summary ✅ Openware field names
6 GET /cmc/orderbook/:pair ✅ root type=array, length==1; timestamp seconds
7 GET /cmc/trades/:pair ✅ array of trades; timestamp seconds

Automated: cd indexer && cargo test --test api_orderbook_lcd_mock --test api_cg --test api_cmc — 29/29 passed (after fixing parallel seed_db races with #[serial] on api_cg + api_cmc).

Docs / cross-links: spec matrix, Pro API v3 warning, hybrid-sim disclosure, indexer-invariants.md, limit-orders.md, integrators.md (hybrid-sim wording fixed), skills/AGENTS_INDEXER_AMM_ORDERBOOK_SIM.md, skills/AGENTS_TESTING_P2_EPIC.md, gaps/GAP_1780023683.md §2.2. OpenAPI in cg.rs / cmc.rs matches handlers.

Dependent issues: #210, #220, #221, #222 closed. #223 still open (CMC array wrapper implementation verified live + in tests; awaiting its own sign-off).

Fixes in this pass

  • indexer/tests/api_cg.rs, api_cmc.rs: #[serial] on shared-DB integration tests (flaky 404 without it).
  • docs/integrators.md: hybrid-sim disclosure (was "pool curve only").
  • docs/CG_CMC_COMPLIANCE.md: last-verified footer with commit 4254d2e.

Manual checklist for qa agent

  • Read docs/CG_CMC_COMPLIANCE.md spec matrix + intentional CL8Y deltas (top-level arrays vs Kujira wrappers; CMC seconds vs Openware ms text).
  • Side-by-side Kujira FIN CG + Openware Peatio samples vs doc JSON examples.
  • Confirm listing forms use /cg/ + /cmc/ on your API domain (not CoinGecko Pro v3).
  • Confirm product copy states hybrid-simulated book vs on-chain limit-book.
  • Close #223 if CMC array wrapper sign-off is satisfied here.

Issue status

Leaving open — verification criteria item 1 (listing team sign-off) and 3 (#223 open) are not fully satisfied. @brouie please confirm or request changes.

## Verification pass (GitLab #224) Worktree: `verify/issue-224` → merged to `main` at `54a6346` (includes `4254d2e` test/doc fixes). ### What was verified Live indexer at `http://127.0.0.1:3001` against `docs/CG_CMC_COMPLIANCE.md` test plan (pair `EMBER_CORAL`): | # | Endpoint | Result | |---|----------|--------| | 1 | `GET /cg/pairs` | ✅ `ticker_id`, `base`, `target`, `pool_id` | | 2 | `GET /cg/tickers` | ✅ consolidated volumes; `cl8y_extensions` when indexed | | 3 | `GET /cg/orderbook` | ✅ `timestamp` JSON **number** ~1.7e12 (ms); 10+10 levels at `depth=20`; bids desc / asks asc | | 4 | `GET /cg/historical_trades` | ✅ `trade_timestamp` seconds (~1.7e9) | | 5 | `GET /cmc/summary` | ✅ Openware field names | | 6 | `GET /cmc/orderbook/:pair` | ✅ root `type=array`, `length==1`; `timestamp` seconds | | 7 | `GET /cmc/trades/:pair` | ✅ array of trades; `timestamp` seconds | **Automated:** `cd indexer && cargo test --test api_orderbook_lcd_mock --test api_cg --test api_cmc` — **29/29 passed** (after fixing parallel `seed_db` races with `#[serial]` on `api_cg` + `api_cmc`). **Docs / cross-links:** spec matrix, Pro API v3 warning, hybrid-sim disclosure, `indexer-invariants.md`, `limit-orders.md`, `integrators.md` (hybrid-sim wording fixed), `skills/AGENTS_INDEXER_AMM_ORDERBOOK_SIM.md`, `skills/AGENTS_TESTING_P2_EPIC.md`, `gaps/GAP_1780023683.md` §2.2. OpenAPI in `cg.rs` / `cmc.rs` matches handlers. **Dependent issues:** #210, #220, #221, #222 **closed**. **#223 still open** (CMC array wrapper implementation verified live + in tests; awaiting its own sign-off). ### Fixes in this pass - `indexer/tests/api_cg.rs`, `api_cmc.rs`: `#[serial]` on shared-DB integration tests (flaky 404 without it). - `docs/integrators.md`: hybrid-sim disclosure (was "pool curve only"). - `docs/CG_CMC_COMPLIANCE.md`: last-verified footer with commit `4254d2e`. ### Manual checklist for qa agent - [ ] Read `docs/CG_CMC_COMPLIANCE.md` spec matrix + intentional CL8Y deltas (top-level arrays vs Kujira wrappers; CMC seconds vs Openware ms text). - [ ] Side-by-side Kujira FIN CG + Openware Peatio samples vs doc JSON examples. - [ ] Confirm listing forms use `/cg/` + `/cmc/` on your API domain (not CoinGecko Pro v3). - [ ] Confirm product copy states **hybrid-simulated** book vs on-chain `limit-book`. - [ ] Close **#223** if CMC array wrapper sign-off is satisfied here. ### Issue status **Leaving open** — verification criteria item **1** (listing team sign-off) and **3** (#223 open) are not fully satisfied. @brouie please confirm or request changes.
PlasticDigits commented 2026-05-30 09:13:26 +00:00 (Migrated from gitlab.com)

Manual qa is not required for these items, agent can conduct all 5.

Manual qa is not required for these items, agent can conduct all 5.
PlasticDigits commented 2026-05-30 12:33:39 +00:00 (Migrated from gitlab.com)

mentioned in commit 8c69546d8c

mentioned in commit 8c69546d8c178a739887079db903eb29c938c396
PlasticDigits commented 2026-05-30 12:33:56 +00:00 (Migrated from gitlab.com)

Re-verification pass (2026-05-30)

Worktree: verify/issue-224 → merged to main at 8c69546 (footer refresh; codebase verified at 3e7a175).

Infra health

  • Indexer: GET /health → {"status":"ok"}
  • Postgres + LocalTerra containers healthy (34m uptime)
  • Host LCD curl avoided per scripts/lib/localterra-host-curl.sh; indexer API used for live checks

Live API (pair EMBER_CORAL, http://127.0.0.1:3001)

# Endpoint Result
1 GET /cg/pairs ✅ top-level array; keys ticker_id, base, target, pool_id (25 pairs)
2 GET /cg/tickers ✅ consolidated volumes; cl8y_extensions present
3 GET /cg/orderbook?ticker_id=…&depth=20 ✅ timestamp JSON number ~1.78e12 (ms); 10+10 levels; bids desc / asks asc
4 GET /cg/historical_trades?ticker_id=… ✅ trade_timestamp seconds (~1.78e9)
5 GET /cmc/summary ✅ Openware field names + optional cl8y_extensions
6 GET /cmc/orderbook/EMBER_CORAL?depth=20 ✅ root type=array, length==1; timestamp seconds
7 GET /cmc/trades/EMBER_CORAL ✅ array of trades; timestamp seconds

Automated tests

cd indexer && cargo test --test api_orderbook_lcd_mock --test api_cg --test api_cmc

29/29 passed

Acceptance criteria status

  • CG sections match Kujira FIN or document intentional CL8Y deltas (top-level arrays, Openware total depth)
  • CMC sections match Openware or document deltas (object maps for assets/ticker; seconds timestamps per #222)
  • JSON examples match live responses (verified above)
  • No “stub” wording for production AMM orderbook_sim (#210)
  • skills/ + gaps/ cross-links updated
  • “Not CoinGecko Pro API v3” callout present

Dependent issues

#210, #220, #221, #222, #223 — all closed. Note posted on #210.

Verification checklist for @brouie (listing team sign-off)

  • Read docs/CG_CMC_COMPLIANCE.md spec matrix + intentional CL8Y deltas
  • Confirm listing form URLs use /cg/* + /cmc/* on your API domain (not Pro API v3)
  • Spot-check /cg/orderbook ms timestamp + /cmc/orderbook array wrapper on staging/production
  • Confirm hybrid-sim disclosure acceptable for listing submissions
  • Sign off compliance doc for CG/CMC exchange listing forms

Issue status

Left open — verification criterion #1 (“Listing team review sign-off”) pending human review.

@brouie — please complete the checklist above; close #224 when satisfied.

## Re-verification pass (2026-05-30) Worktree: `verify/issue-224` → merged to `main` at **`8c69546`** (footer refresh; codebase verified at `3e7a175`). ### Infra health - Indexer: `GET /health` → `{"status":"ok"}` - Postgres + LocalTerra containers healthy (34m uptime) - Host LCD curl avoided per `scripts/lib/localterra-host-curl.sh`; indexer API used for live checks ### Live API (pair `EMBER_CORAL`, `http://127.0.0.1:3001`) | # | Endpoint | Result | |---|----------|--------| | 1 | `GET /cg/pairs` | ✅ top-level array; keys `ticker_id`, `base`, `target`, `pool_id` (25 pairs) | | 2 | `GET /cg/tickers` | ✅ consolidated volumes; `cl8y_extensions` present | | 3 | `GET /cg/orderbook?ticker_id=…&depth=20` | ✅ `timestamp` JSON **number** ~1.78e12 (ms); 10+10 levels; bids desc / asks asc | | 4 | `GET /cg/historical_trades?ticker_id=…` | ✅ `trade_timestamp` seconds (~1.78e9) | | 5 | `GET /cmc/summary` | ✅ Openware field names + optional `cl8y_extensions` | | 6 | `GET /cmc/orderbook/EMBER_CORAL?depth=20` | ✅ root `type=array`, `length==1`; `timestamp` seconds | | 7 | `GET /cmc/trades/EMBER_CORAL` | ✅ array of trades; `timestamp` seconds | ### Automated tests ```bash cd indexer && cargo test --test api_orderbook_lcd_mock --test api_cg --test api_cmc ``` **29/29 passed** ### Acceptance criteria status - [x] CG sections match Kujira FIN or document intentional CL8Y deltas (top-level arrays, Openware total `depth`) - [x] CMC sections match Openware or document deltas (object maps for assets/ticker; seconds timestamps per #222) - [x] JSON examples match live responses (verified above) - [x] No “stub” wording for production AMM `orderbook_sim` (#210) - [x] `skills/` + `gaps/` cross-links updated - [x] “Not CoinGecko Pro API v3” callout present ### Dependent issues **#210**, **#220**, **#221**, **#222**, **#223** — all **closed**. Note posted on #210. ### Verification checklist for @brouie (listing team sign-off) - [ ] Read `docs/CG_CMC_COMPLIANCE.md` spec matrix + intentional CL8Y deltas - [ ] Confirm listing form URLs use `/cg/*` + `/cmc/*` on your API domain (not Pro API v3) - [ ] Spot-check `/cg/orderbook` ms timestamp + `/cmc/orderbook` array wrapper on staging/production - [ ] Confirm hybrid-sim disclosure acceptable for listing submissions - [ ] Sign off compliance doc for CG/CMC exchange listing forms ### Issue status **Left open** — verification criterion #1 (“Listing team review sign-off”) pending human review. @brouie — please complete the checklist above; close #224 when satisfied.
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-05-30 12:35:05 +00:00
PlasticDigits commented 2026-05-30 12:35:07 +00:00 (Migrated from gitlab.com)

Closed — "listing team sign-off" in verification criteria was a typo for QA agent team sign-off.

QA agent verification complete on main @ 8c69546: live indexer (7/7 endpoints), 29/29 integration tests, docs aligned with Kujira FIN + Openware Peatio, dependent #210–#223 closed.

Closed — "listing team sign-off" in verification criteria was a typo for **QA agent team** sign-off. QA agent verification complete on `main` @ `8c69546`: live indexer (7/7 endpoints), 29/29 integration tests, docs aligned with Kujira FIN + Openware Peatio, dependent #210–#223 closed.
PlasticDigits commented 2026-08-25 01:55:35 +00:00 (Migrated from gitlab.com)

mentioned in issue #631

mentioned in issue #631
PlasticDigits commented 2026-08-25 06:54:25 +00:00 (Migrated from gitlab.com)

mentioned in issue #639

mentioned in issue #639
PlasticDigits commented 2026-08-25 06:54:27 +00:00 (Migrated from gitlab.com)

marked as related to #639

marked as related to #639
PlasticDigits commented 2026-08-25 07:09:25 +00:00 (Migrated from gitlab.com)

mentioned in issue #643

mentioned in issue #643
PlasticDigits commented 2026-08-25 07:09:30 +00:00 (Migrated from gitlab.com)

mentioned in issue #645

mentioned in issue #645
PlasticDigits commented 2026-08-27 04:45:36 +00:00 (Migrated from gitlab.com)

mentioned in issue #684

mentioned in issue #684
PlasticDigits commented 2026-08-27 04:50:01 +00:00 (Migrated from gitlab.com)

mentioned in issue #685

mentioned in issue #685
PlasticDigits commented 2026-08-27 04:50:01 +00:00 (Migrated from gitlab.com)

marked as related to #685

marked as related to #685
PlasticDigits commented 2026-08-27 07:43:02 +00:00 (Migrated from gitlab.com)

mentioned in issue #688

mentioned in issue #688
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
code/cl8y-dex-terraclassic#224
No description provided.