Indexer: catalog and API for community tax tokens by code_id #594

Closed
opened 2026-08-22 10:59:14 +00:00 by PlasticDigits · 30 comments
PlasticDigits commented 2026-08-22 10:59:14 +00:00 (Migrated from gitlab.com)

Parent

Depends on #592 (launcher events, code_id, GetConfig). Sibling: dApp create/manage.

Problem statement

The indexer discovers CW20s only as pair legs (assets upsert from factory pairs / swaps). It does not watch a token launcher, does not store code_id / manager / tax bps / SKUs, and cannot list “tokens created with this template.” The dApp and integrators need a read API: catalog by code_id, detail (taxes, features, admin attestation), and events (create, SKU enable, tax updates, mint, skim).

Current codebase

Why needed

Launcher-created tokens must be reportable before or without a DEX pair (leaders will share a link). Swap/Trade need code_id + tax preview metadata. Ops need to see rogue instantiations (admin ≠ CMM) vs launcher-attested. Without indexer support the dApp would LCD-poll every token (slow, easy to DoS the LCD).

Constraints / guardrails

  1. Do not treat indexer listing as a substitute for F6 / whitelist (same as #585).
  2. Filter catalog default: code_id = COMMUNITY_TAX_CODE_ID and (recommended) wasm_admin = CMM and launcher_tx present. Query flags: ?include_unattested=1 for ops (not retail dApp).
  3. Ingest instantiate of that code_id and launcher execute events (do not rely only on pair discovery).
  4. LCD code_id / admin are source of truth; DB columns are a cache. Re-probe on a slow loop (similar to F6 60s) so migrate-off-template flips attested / freeze-adjacent flags.
  5. No new public POST that writes user data. Indexer stays read-only HTTP (+ existing route/solve POST).
  6. Pagination/clamp identical to tokens list; unknown sort → 400.
  7. Do not log DATABASE_URL or LCD bodies at INFO (#433).
  8. Env: COMMUNITY_TAX_CODE_ID, COMMUNITY_TOKEN_LAUNCHER, CMM_GOVERNANCE_ADDR — unset → endpoints 404 or empty list with configured: false (pick one; document; prefer empty list + configured: false on list, 404 on detail of non-catalog addr).
  9. Do not index every CW20 on chain (LCD amplification). Only: launcher txs, instantiate with target code_id (from those txs or wasm events), and optional “first seen as pair leg with matching code_id”.
  10. OpenAPI / utoipa tags; make test-indexer-integration with Postgres.

Relevant files

Area Paths
API indexer/src/api/tokens.rs, indexer/src/api/mod.rs (router)
DB indexer/migrations/, indexer/src/db/queries/assets.rs
Ingest indexer/src/indexer/parser.rs (or new community_token.rs), poller.rs
LCD indexer/src/lcd/mod.rs (get_contract_code_id already exists)
Tests indexer/tests/api_*.rs, new api_community_tokens.rs
Docs docs/indexer-invariants.md, docs/integrators.md (optional)
  1. Table community_tokens (or columns on assets plus a side table — prefer side table to avoid bloating every LUNC/CW20 row):
    • contract_address PK
    • code_id, wasm_admin, manager, launcher_address
    • buy_bps, sell_bps, transfer_bps
    • features JSONB / bitflags
    • treasury, attested_cmm bool
    • created_at_block, instantiate_tx
    • updated_at
  2. Ingest: parse launcher create_token / enable_feature / token update_tax / mint / revoke_mint wasm events (stable action= attrs — coordinate with contracts issue).
  3. API (names TBD):
    • GET /api/v1/community-tokens?manager=&limit=&offset=
    • GET /api/v1/community-tokens/{addr} — config snapshot + attested_cmm + code_id + pairs (reuse pair join)
    • Optional GET /api/v1/community-tokens/{addr}/events
  4. Extend GET /api/v1/tokens/{addr} with optional community_tax: null | { ... } so Swap can branch without a second round-trip (keep payload small).
  5. Config endpoint or list envelope { configured, code_id, items: [...] }.

Acceptance criteria

  • Launcher create on LocalTerra appears in list without requiring a pair.
  • Default list omits admin ≠ CMM (or attested_cmm=false); ops flag includes them.
  • Detail returns bps, SKUs, manager, treasury, code_id, admin.
  • SKU enable / tax update / mint revoke reflected after ingest (next poll).
  • Pagination/clamp/400 rules; OpenAPI; sanitized errors.
  • Unset env does not panic; no full-chain CW20 scrape.
  • docs/indexer-invariants.md row; make verify-issue-NNN.
  • Tests: sqlx integration --test-threads=1.

Test plan (all paths)

  • Empty DB → [] / configured true.
  • Insert attested vs unattested → default list vs include_unattested.
  • manager= filter case-insensitive bech32 (document canonical lower/normalize).
  • Unknown addr → 404.
  • limit=-1/0 clamp to 1; huge offset → 400.
  • Pair join: token with pair shows in /pairs; token without pair still in community list.
  • Event parser: fixture txs for create, enable SKU, update bps, revoke mint.
  • LCD admin probe: flip admin ≠ CMM → attested_cmm false on next loop (mock LCD).
  • GET /tokens/{addr} includes community_tax only for matching code_id.
  • Rate limit: list is not LCD-heavy (no extra governor required unless it queries LCD per item — must not).

Attack / abuse / hack test plan

  • SQL injection on manager, addr, sort.
  • LCD amplification: handler must not ContractInfo per list row on the request path (cache/probe loop only).
  • Event spoof: wasm events from a non-launcher contract with similar attrs must not mark launcher_tx attested.
  • Code_id spoof in event: trust LCD ContractInfo.code_id, not event field alone.
  • CSV/formula if events export added.
  • IDOR: no private manager data (all on-chain anyway); still do not echo LCD error strings (#379).
  • Pagination abuse: offset max.
  • Symbol XSS stored then served — API JSON only; frontend issue owns render.
  • Fake attested: wasm_admin must match env CMM exactly (full bech32).
  • Reorg: follow existing indexer reorg policy; no double unique instantiate_tx panic (upsert).

Verification criteria

  • make setup-indexer-postgres then make test-indexer-integration (or targeted cargo test --test api_community_tokens -- --test-threads=1).
  • make verify-issue-NNN.
  • LocalTerra: create via launcher → list shows token before CreatePair; after pair, /tokens/{addr}/pairs non-empty.

Labels / owner / priority

backend enhancement · Owner: indexer · Priority: P2 · Blocked by: launcher event schema from contracts issue

## Parent Depends on [**#592**](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/592) (launcher events, code_id, `GetConfig`). Sibling: dApp create/manage. ## Problem statement The indexer discovers CW20s only as **pair legs** (`assets` upsert from factory pairs / swaps). It does not watch a token **launcher**, does not store `code_id` / manager / tax bps / SKUs, and cannot list “tokens created with this template.” The dApp and integrators need a read API: catalog by code_id, detail (taxes, features, admin attestation), and events (create, SKU enable, tax updates, mint, skim). ## Current codebase - **Assets:** [`indexer/migrations/20260310000001_initial_schema.sql`](indexer/migrations/20260310000001_initial_schema.sql) `assets` — address, denom, name, symbol, decimals, logos — **no `code_id`**, no manager, no tax fields. - **Ingest:** pair discovery [`indexer/src/indexer/pair_discovery.rs`](indexer/src/indexer/pair_discovery.rs) + asset resolver. Tokens without a factory pair never appear. - **API:** `GET /api/v1/tokens`, `GET /api/v1/tokens/{addr}`, `GET /api/v1/tokens/{addr}/pairs` — [`indexer/src/api/tokens.rs`](indexer/src/api/tokens.rs). Pagination caps (`limit` ≤ 500, `offset` ≤ 10_000) per [`docs/indexer-invariants.md`](docs/indexer-invariants.md). - **code_id today:** LCD `ContractInfo` used for **F6 freeze** on **pairs** ([`asset_code_id_freeze.rs`](indexer/src/indexer/asset_code_id_freeze.rs)), not as a token catalog dimension. - **Hooks API:** `GET /api/v1/hooks` — swap hook events, not token SKU events. - **Security:** parameterized SQL, `internal_err` sanitization, rate limits, no SQL in sort strings. CSV formula injection rules if any CSV is added ([#432](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/432)). ## Why needed Launcher-created tokens must be **reportable before or without** a DEX pair (leaders will share a link). Swap/Trade need `code_id` + tax preview metadata. Ops need to see rogue instantiations (`admin ≠ CMM`) vs launcher-attested. Without indexer support the dApp would LCD-poll every token (slow, easy to DoS the LCD). ## Constraints / guardrails 1. **Do not** treat indexer listing as a substitute for F6 / whitelist (same as [#585](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/585)). 2. Filter catalog default: `code_id = COMMUNITY_TAX_CODE_ID` **and** (recommended) `wasm_admin = CMM` **and** `launcher_tx` present. Query flags: `?include_unattested=1` for ops (not retail dApp). 3. Ingest **instantiate** of that code_id **and** launcher execute events (do not rely only on pair discovery). 4. LCD `code_id` / `admin` are source of truth; DB columns are a cache. Re-probe on a slow loop (similar to F6 60s) so migrate-off-template flips `attested` / freeze-adjacent flags. 5. **No new public POST** that writes user data. Indexer stays read-only HTTP (+ existing route/solve POST). 6. Pagination/clamp identical to tokens list; unknown `sort` → 400. 7. Do not log `DATABASE_URL` or LCD bodies at INFO ([#433](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/433)). 8. Env: `COMMUNITY_TAX_CODE_ID`, `COMMUNITY_TOKEN_LAUNCHER`, `CMM_GOVERNANCE_ADDR` — unset → endpoints **404** or empty list with `configured: false` (pick one; document; prefer **empty list + `configured: false`** on list, **404** on detail of non-catalog addr). 9. Do not index every CW20 on chain (LCD amplification). Only: launcher txs, instantiate with target code_id (from those txs or wasm events), and optional “first seen as pair leg with matching code_id”. 10. OpenAPI / utoipa tags; `make test-indexer-integration` with Postgres. ## Relevant files | Area | Paths | |------|-------| | API | `indexer/src/api/tokens.rs`, `indexer/src/api/mod.rs` (router) | | DB | `indexer/migrations/`, `indexer/src/db/queries/assets.rs` | | Ingest | `indexer/src/indexer/parser.rs` (or new `community_token.rs`), `poller.rs` | | LCD | `indexer/src/lcd/mod.rs` (`get_contract_code_id` already exists) | | Tests | `indexer/tests/api_*.rs`, new `api_community_tokens.rs` | | Docs | `docs/indexer-invariants.md`, `docs/integrators.md` (optional) | ## Recommended direction 1. Table `community_tokens` (or columns on `assets` **plus** a side table — prefer **side table** to avoid bloating every LUNC/CW20 row): - `contract_address` PK - `code_id`, `wasm_admin`, `manager`, `launcher_address` - `buy_bps`, `sell_bps`, `transfer_bps` - `features` JSONB / bitflags - `treasury`, `attested_cmm` bool - `created_at_block`, `instantiate_tx` - `updated_at` 2. Ingest: parse launcher `create_token` / `enable_feature` / token `update_tax` / `mint` / `revoke_mint` wasm events (stable `action=` attrs — coordinate with contracts issue). 3. API (names TBD): - `GET /api/v1/community-tokens?manager=&limit=&offset=` - `GET /api/v1/community-tokens/{addr}` — config snapshot + `attested_cmm` + `code_id` + pairs (reuse pair join) - Optional `GET /api/v1/community-tokens/{addr}/events` 4. Extend `GET /api/v1/tokens/{addr}` with **optional** `community_tax: null | { ... }` so Swap can branch without a second round-trip (keep payload small). 5. Config endpoint or list envelope `{ configured, code_id, items: [...] }`. ## Acceptance criteria - [ ] Launcher create on LocalTerra appears in list **without** requiring a pair. - [ ] Default list omits `admin ≠ CMM` (or `attested_cmm=false`); ops flag includes them. - [ ] Detail returns bps, SKUs, manager, treasury, code_id, admin. - [ ] SKU enable / tax update / mint revoke reflected after ingest (next poll). - [ ] Pagination/clamp/400 rules; OpenAPI; sanitized errors. - [ ] Unset env does not panic; no full-chain CW20 scrape. - [ ] `docs/indexer-invariants.md` row; `make verify-issue-NNN`. - [ ] Tests: sqlx integration `--test-threads=1`. ## Test plan (all paths) - Empty DB → `[]` / configured true. - Insert attested vs unattested → default list vs `include_unattested`. - `manager=` filter case-insensitive bech32 (document canonical lower/normalize). - Unknown addr → 404. - `limit=-1/0` clamp to 1; huge offset → 400. - Pair join: token with pair shows in ` /pairs`; token without pair still in community list. - Event parser: fixture txs for create, enable SKU, update bps, revoke mint. - LCD admin probe: flip admin ≠ CMM → `attested_cmm` false on next loop (mock LCD). - `GET /tokens/{addr}` includes `community_tax` only for matching code_id. - Rate limit: list is not LCD-heavy (no extra governor required unless it queries LCD per item — **must not**). ## Attack / abuse / hack test plan - **SQL injection** on `manager`, `addr`, `sort`. - **LCD amplification:** handler must not `ContractInfo` per list row on the request path (cache/probe loop only). - **Event spoof:** wasm events from a **non-launcher** contract with similar attrs must not mark `launcher_tx` attested. - **Code_id spoof in event:** trust LCD `ContractInfo.code_id`, not event field alone. - **CSV/formula** if events export added. - **IDOR:** no private manager data (all on-chain anyway); still do not echo LCD error strings ([#379](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/379)). - **Pagination abuse:** offset max. - **Symbol XSS** stored then served — API JSON only; frontend issue owns render. - **Fake attested:** `wasm_admin` must match env CMM exactly (full bech32). - **Reorg:** follow existing indexer reorg policy; no double unique instantiate_tx panic (upsert). ## Verification criteria - `make setup-indexer-postgres` then `make test-indexer-integration` (or targeted `cargo test --test api_community_tokens -- --test-threads=1`). - `make verify-issue-NNN`. - LocalTerra: create via launcher → list shows token before CreatePair; after pair, `/tokens/{addr}/pairs` non-empty. ## Labels / owner / priority `backend` `enhancement` · Owner: indexer · Priority: **P2** · Blocked by: launcher event schema from contracts issue
PlasticDigits commented 2026-08-22 10:59:15 +00:00 (Migrated from gitlab.com)

marked as related to #592

marked as related to #592
PlasticDigits commented 2026-08-22 10:59:21 +00:00 (Migrated from gitlab.com)

marked as related to #593

marked as related to #593
PlasticDigits commented 2026-08-22 10:59:22 +00:00 (Migrated from gitlab.com)

mentioned in issue #592

mentioned in issue #592
PlasticDigits commented 2026-08-22 11:05:07 +00:00 (Migrated from gitlab.com)

When ingesting community-token events, index settings-fee txs (50 UST1 × N) separately from SKU unlocks so the dApp can show a paid-settings history. Coordinate action attrs with #592.

When ingesting community-token events, index **settings-fee** txs (50 UST1 × N) separately from SKU unlocks so the dApp can show a paid-settings history. Coordinate action attrs with #592.
PlasticDigits commented 2026-08-22 12:26:36 +00:00 (Migrated from gitlab.com)

mentioned in issue #597

mentioned in issue #597
PlasticDigits commented 2026-08-22 12:26:48 +00:00 (Migrated from gitlab.com)

marked as related to #597

marked as related to #597
PlasticDigits commented 2026-08-23 03:50:24 +00:00 (Migrated from gitlab.com)

mentioned in merge request !1119

mentioned in merge request !1119
PlasticDigits commented 2026-08-23 03:53:49 +00:00 (Migrated from gitlab.com)

mentioned in issue #601

mentioned in issue #601
PlasticDigits commented 2026-08-23 04:15:13 +00:00 (Migrated from gitlab.com)

Columbus-5 pins (from #601, 2026-08-23)

Ingest 11611 only as the community-tax template. Launcher address is unset until code 11612 is instantiated (0 contracts on that id today). Prefer empty list + configured: false until COMMUNITY_TOKEN_LAUNCHER is set.

Env / field Value Notes
COMMUNITY_TAX_CODE_ID 11611 Pin 9D33BF2539A9A5B2F13FD4B321CDBD0B0FD86D936D5D6BD6681955FA30210EC2. Trust LCD ContractInfo.code_id, not event fields
COMMUNITY_TOKEN_LAUNCHER TBD — instantiate 11612 Attest launcher_tx only from this contract once it exists
AutoLP template (optional bind / events) 11613 Not a factory whitelist id
CMM_GOVERNANCE_ADDR (attested wasm admin) terra16j5u6ey7a84g40sr3gd94nzg5w5fm45046k9s2347qhfpwm5fr6sem3lr2 Launcher stamps token --admin from cmm_governance. Default catalog: code_id=11611 and wasm_admin=CMM and launcher tx present
Factory (pair join / F6) terra1ejpgvv7g3hj0u6fpcnxhflqp84g0w3cnaskqkg5733ygwlmf963sfchsea Listed ids [6036, 8266, 10184, 11611] as of height 30071160
UST1 (settings / SKU fee token) terra1f0eqgy9w7e5e7up97vjudqwx38tesf8ylx75x2lv3nwm0clry0pqmgfy72 Index settings-fee txs separately from SKU unlocks

Do not scrape every CW20. Do not treat 11612/11613 instantiates as catalog tokens. ALPHA 8654 stays off.

## Columbus-5 pins (from [#601](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/work_items/601), 2026-08-23) Ingest **11611** only as the community-tax template. Launcher address is **unset** until code **11612** is instantiated (0 contracts on that id today). Prefer empty list + `configured: false` until `COMMUNITY_TOKEN_LAUNCHER` is set. | Env / field | Value | Notes | |-------------|--------|--------| | `COMMUNITY_TAX_CODE_ID` | **11611** | Pin `9D33BF2539A9A5B2F13FD4B321CDBD0B0FD86D936D5D6BD6681955FA30210EC2`. Trust LCD `ContractInfo.code_id`, not event fields | | `COMMUNITY_TOKEN_LAUNCHER` | *TBD — instantiate 11612* | Attest `launcher_tx` only from this contract once it exists | | AutoLP template (optional bind / events) | **11613** | Not a factory whitelist id | | `CMM_GOVERNANCE_ADDR` (attested wasm admin) | `terra16j5u6ey7a84g40sr3gd94nzg5w5fm45046k9s2347qhfpwm5fr6sem3lr2` | Launcher stamps token `--admin` from `cmm_governance`. Default catalog: `code_id=11611` **and** `wasm_admin=CMM` **and** launcher tx present | | Factory (pair join / F6) | `terra1ejpgvv7g3hj0u6fpcnxhflqp84g0w3cnaskqkg5733ygwlmf963sfchsea` | Listed ids `[6036, 8266, 10184, 11611]` as of height **30071160** | | UST1 (settings / SKU fee token) | `terra1f0eqgy9w7e5e7up97vjudqwx38tesf8ylx75x2lv3nwm0clry0pqmgfy72` | Index settings-fee txs separately from SKU unlocks | Do not scrape every CW20. Do not treat 11612/11613 instantiates as catalog tokens. ALPHA **8654** stays off.
PlasticDigits commented 2026-08-23 04:19:28 +00:00 (Migrated from gitlab.com)

Launcher address (columbus-5)

COMMUNITY_TOKEN_LAUNCHER=terra1af9xm63mev4hnf4z0nmmcsnd9f4lpac2vs205rmaeg3kdqlqudhq894lyz

Env Value
COMMUNITY_TAX_CODE_ID 11611
COMMUNITY_TOKEN_LAUNCHER terra1af9xm63mev4hnf4z0nmmcsnd9f4lpac2vs205rmaeg3kdqlqudhq894lyz
CMM_GOVERNANCE_ADDR terra16j5u6ey7a84g40sr3gd94nzg5w5fm45046k9s2347qhfpwm5fr6sem3lr2

Attest launcher_tx only from this contract. Instantiate F7FCF13FB59148832AFA717FE3889830C19ACA33B18BFFB0122FB237BBDC2317 height 30071219. List can flip configured: true once Coolify/indexer env is set.

## Launcher address (columbus-5) `COMMUNITY_TOKEN_LAUNCHER=terra1af9xm63mev4hnf4z0nmmcsnd9f4lpac2vs205rmaeg3kdqlqudhq894lyz` | Env | Value | |-----|--------| | `COMMUNITY_TAX_CODE_ID` | **11611** | | `COMMUNITY_TOKEN_LAUNCHER` | `terra1af9xm63mev4hnf4z0nmmcsnd9f4lpac2vs205rmaeg3kdqlqudhq894lyz` | | `CMM_GOVERNANCE_ADDR` | `terra16j5u6ey7a84g40sr3gd94nzg5w5fm45046k9s2347qhfpwm5fr6sem3lr2` | Attest `launcher_tx` only from this contract. Instantiate [`F7FCF13FB59148832AFA717FE3889830C19ACA33B18BFFB0122FB237BBDC2317`](https://finder.terraclassic.community/columbus-5/tx/F7FCF13FB59148832AFA717FE3889830C19ACA33B18BFFB0122FB237BBDC2317) height **30071219**. List can flip `configured: true` once Coolify/indexer env is set.
PlasticDigits commented 2026-08-23 04:21:51 +00:00 (Migrated from gitlab.com)

mentioned in commit 4ed227a4b1

mentioned in commit 4ed227a4b162f0942f97b1bf9138ea7b56c453ad
PlasticDigits commented 2026-08-23 04:45:15 +00:00 (Migrated from gitlab.com)

mentioned in commit 6916d274b8

mentioned in commit 6916d274b8bf16265b2d4be34333524430f263a5
PlasticDigits commented 2026-08-23 04:45:17 +00:00 (Migrated from gitlab.com)

mentioned in merge request !1120

mentioned in merge request !1120
PlasticDigits commented 2026-08-23 04:55:32 +00:00 (Migrated from gitlab.com)

mentioned in commit 5acbe574f5

mentioned in commit 5acbe574f5a241570adfd0ef1894e7aa9705d0e4
PlasticDigits commented 2026-08-23 04:55:40 +00:00 (Migrated from gitlab.com)

mentioned in commit e2b098ab72

mentioned in commit e2b098ab72e3552d89339f475624610730fafd38
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-08-23 04:55:41 +00:00
PlasticDigits commented 2026-08-23 04:56:11 +00:00 (Migrated from gitlab.com)

mentioned in issue #593

mentioned in issue #593
PlasticDigits commented 2026-08-23 04:56:12 +00:00 (Migrated from gitlab.com)

!1120 merge note (conflicts + AC)

!1120 is merged. Conflicts vs main (#601) were docs/Makefile/launcher only; indexer catalog files auto-merged. Did not wait for CI.

Automated AC re-run after the merge commit (5acbe574):

  • make verify-issue-594 — PASS (3/3): I594 docs, no request-path LCD in community_tokens.rs, api_community_tokens 9/9 sqlx

Still open (not merge blockers — do not reopen this issue):

  1. Coolify/indexer env unset → list stays { configured: false, items: [] } (I594-1). Need COMMUNITY_TAX_CODE_ID=11611, COMMUNITY_TOKEN_LAUNCHER=terra1af9xm63mev4hnf4z0nmmcsnd9f4lpac2vs205rmaeg3kdqlqudhq894lyz, CMM_GOVERNANCE_ADDR=terra16j5u6ey7a84g40sr3gd94nzg5w5fm45046k9s2347qhfpwm5fr6sem3lr2.
  2. Live ingest (launcher create appears without a pair; settings_fee vs sku_unlock; LCD probe flips attested_cmm) was not run against columbus-5 or a redeployed LocalTerra in this merge.
  3. Columbus-5 11612 still lacks free-create execute — indexer can still catalog paid-create / existing tokens; free-create txs will not exist until launcher migrate/re-store.

Tracking: follow-up issue after this comment.

## !1120 merge note (conflicts + AC) [ !1120 ](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/merge_requests/402) is merged. Conflicts vs `main` (#601) were docs/Makefile/launcher only; indexer catalog files auto-merged. Did **not** wait for CI. **Automated AC re-run after the merge commit (`5acbe574`):** - `make verify-issue-594` — PASS (3/3): I594 docs, no request-path LCD in `community_tokens.rs`, `api_community_tokens` 9/9 sqlx **Still open (not merge blockers — do not reopen this issue):** 1. Coolify/indexer env unset → list stays `{ configured: false, items: [] }` (**I594-1**). Need `COMMUNITY_TAX_CODE_ID=11611`, `COMMUNITY_TOKEN_LAUNCHER=terra1af9xm63mev4hnf4z0nmmcsnd9f4lpac2vs205rmaeg3kdqlqudhq894lyz`, `CMM_GOVERNANCE_ADDR=terra16j5u6ey7a84g40sr3gd94nzg5w5fm45046k9s2347qhfpwm5fr6sem3lr2`. 2. Live ingest (launcher create appears without a pair; settings_fee vs sku_unlock; LCD probe flips `attested_cmm`) was not run against columbus-5 or a redeployed LocalTerra in this merge. 3. Columbus-5 **11612** still lacks free-create execute — indexer can still catalog paid-create / existing tokens; free-create txs will not exist until launcher migrate/re-store. Tracking: follow-up issue after this comment.
PlasticDigits commented 2026-08-23 04:56:22 +00:00 (Migrated from gitlab.com)

mentioned in issue #602

mentioned in issue #602
PlasticDigits commented 2026-08-23 04:56:23 +00:00 (Migrated from gitlab.com)

marked as related to #602

marked as related to #602
PlasticDigits commented 2026-08-23 04:56:28 +00:00 (Migrated from gitlab.com)

Post-merge leftovers tracked in #602 (do not reopen this issue).

Post-merge leftovers tracked in #602 (do not reopen this issue).
PlasticDigits commented 2026-08-23 04:56:37 +00:00 (Migrated from gitlab.com)

Post-merge leftovers tracked in #602 (do not reopen this issue).

Post-merge leftovers tracked in #602 (do not reopen this issue).
PlasticDigits commented 2026-08-23 11:49:55 +00:00 (Migrated from gitlab.com)

mentioned in issue #609

mentioned in issue #609
PlasticDigits commented 2026-08-23 12:03:35 +00:00 (Migrated from gitlab.com)

mentioned in merge request !1124

mentioned in merge request !1124
PlasticDigits commented 2026-08-23 12:41:00 +00:00 (Migrated from gitlab.com)

mentioned in issue #611

mentioned in issue #611
PlasticDigits commented 2026-08-24 00:35:17 +00:00 (Migrated from gitlab.com)

mentioned in issue #615

mentioned in issue #615
PlasticDigits commented 2026-08-24 00:35:19 +00:00 (Migrated from gitlab.com)

marked as related to #615

marked as related to #615
PlasticDigits commented 2026-08-24 05:54:02 +00:00 (Migrated from gitlab.com)

marked as related to #620

marked as related to #620
PlasticDigits commented 2026-08-24 06:19:37 +00:00 (Migrated from gitlab.com)

mentioned in issue #624

mentioned in issue #624
PlasticDigits commented 2026-08-24 11:49:44 +00:00 (Migrated from gitlab.com)

mentioned in issue #626

mentioned in issue #626
PlasticDigits commented 2026-08-24 11:49:46 +00:00 (Migrated from gitlab.com)

marked as related to #626

marked as related to #626
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#594
No description provided.