test: LocalTerra community-tax seed + AutoLP + Mint/Transfer funding + indexer env #620

Closed
opened 2026-08-24 05:53:58 +00:00 by PlasticDigits · 21 comments
PlasticDigits commented 2026-08-24 05:53:58 +00:00 (Migrated from gitlab.com)

Parent / siblings

Follow-up to community tax on-chain work (#592, #601, #605, #610, #615). This issue is the LocalTerra stack wiring so later swarm / Playwright / tax-on harness issues can see a real listed tax market. Do not reopen those tickets unless an invariant is wrong.

Sibling implementation issues (open with this one): tax-aware swarm, Playwright e2e-tx matrix, named tax-on Layer B suite.

Current codebase

scripts/deploy-dex-local.sh stores mintable CW20s and seeds factory pairs for gems (EMBER, CORAL, JADE, ONYX, RUBY, TOPAZ, OPAL, COBALT, SLATE, AMBER, plus later IRON/NEON), wrap CW20s (cLUNC/cUSTC), and TCL8Y. It does not store cl8y_community_tax_token, cl8y_community_token_launcher, or cl8y_community_tax_autolp. It does not instantiate a launcher, create a tax token, CreatePair, or RegisterListedPair. .env.local never gets VITE_COMMUNITY_TAX_CODE_ID / VITE_COMMUNITY_TOKEN_LAUNCHER / a tax token address. There is no local UST1.

Downstream funding assumes every factory CW20 (except wraps) can Mint:

  • scripts/e2e-provision-dev-wallet.sh — paginate factory pairs, {"mint":{…}} when balance < floor; skip only VITE_LUNC_C_TOKEN_ADDRESS / VITE_USTC_C_TOKEN_ADDRESS.
  • packages/localnet-trading-swarm/src/funding.ts — same Mint over all factory CW20s (no wrap skip).

Indexer local .env from deploy does not set COMMUNITY_TAX_CODE_ID / COMMUNITY_TOKEN_LAUNCHER / CMM_GOVERNANCE_ADDR / COMMUNITY_TAX_OPTION2_*. Catalog API stays configured: false.

#601 smoke (scripts/qa/localterra-community-tax-smoke.sh) already stores current token+launcher, creates a throwaway mintable UST1, free-profile CreateToken, pair vs EMBER, RegisterListedPair, extra-debit/outbound, invoices. It is ephemeral: nothing is written to .env.local, AutoLP is autolp_code_id: null, and the pair is not reused by E2E/swarm.

Launcher AutoLP today: paid Sku::AutoV2Lp instantiate+binds at create with pair: None; manager/UpdateConfig sets the factory-listed tax pair later (#610 M610-1). Token BindAutolp is launcher-only.

Why this is needed

Gems “just work” in infra E2E and swarm because deploy puts them on the factory and funding Mints them. The community tax template is listed on columbus-5 (11611/11619) and crate-tested, but LocalTerra QA never sees a registered tax pair. Adding the pair without a funding fork will break make test-e2e / swarm startup (Mint on a free-profile token fails). Without indexer env, #594 / #615 stay unit-only. AutoLP skim vs a live factory pair is an O601-7 residual; #601 smoke does not bind AutoLP.

Constraints / guardrails

  • Whitelist only the LocalTerra store id. Never AddWhitelistedCodeId columbus-5 11611/11619 from this evidence. Never whitelist launcher / AutoLP / ALPHA 8654.
  • Do not add pair/router FoT math (H-01). Inbound to pair/router/AutoLP stays 1:1.
  • Do not enable MintControl on the default QA tax token just to reuse gem Mint funding. Top up with Transfer from test1 (large initial_balances).
  • QA launch-guard profile: trading_enabled=true, cooldown_blocks=0, high/null max_wallet. A “safe launch” preset will brick swarm/E2E.
  • AutoLP: store local AutoLP code, set launcher autolp_code_id, paid create (50 UST1 stand-in) or Enable Feature after free create. After CreatePair+RegisterListedPair, UpdateConfig AutoLP pair via factory lookup. SkimToLp is permissionless and never called from token Transfer/Send (T592-10 / M610-5). Floor max_spread default 100 bps, cap 200 (M610-3).
  • Local UST1 is a mintable stand-in for invoices only. Do not treat it as columbus-5 UST1 / window.
  • CMM stand-in on LocalTerra is test1 (wasm admin + catalog). Document that this is not columbus-5 CMM terra16j5u6….
  • Optional skip flag (e.g. DEPLOY_SKIP_COMMUNITY_TAX=1) for wasm-less / fast gem-only deploys.
  • make reset / --fresh must recreate the tax market; do not rely on stale .qa-deploy-stamp alone (#325).

Relevant files

Path Role
scripts/deploy-dex-local.sh Store/instantiate gems today; add tax phase + env writes
scripts/e2e-provision-dev-wallet.sh Factory Mint; add tax/wrap-style Transfer skip
packages/localnet-trading-swarm/src/funding.ts Swarm Mint; same fork
scripts/qa/localterra-community-tax-smoke.sh Prior art for store/create/register/invoice
cw20-codeid-audits/scripts/lib-layer-lt.sh terrad/LCD helpers
frontend-dapp/.env.example VITE_COMMUNITY_TAX_* empty today
frontend-dapp/src/utils/constants.ts COMMUNITY_TAX_CODE_ID / COMMUNITY_TOKEN_LAUNCHER
indexer env from deploy COMMUNITY_TAX_*, CMM_GOVERNANCE_ADDR, COMMUNITY_TAX_OPTION2_*
skills/AGENTS_COMMUNITY_TAX_CW20.md T592 / O601
skills/AGENTS_COMMUNITY_TAX_AUTOLP.md M610
skills/AGENTS_INDEXER_COMMUNITY_TOKENS.md I594
skills/AGENTS_LOCAL_POSTGRES_DEV.md Indexer .env
  1. Extract a scripts/lib/deploy-community-tax-local.sh (or phase in deploy-dex-local.sh) called after factory + EMBER exist:
    • Store current artifacts (cl8y_community_tax_token, launcher, AutoLP). Fail if wasm missing (or build via existing optimize path).
    • Instantiate mintable SmokeUST1 (same shape as #601); write VITE_UST1_TOKEN_ADDRESS for local only if unset.
    • Instantiate launcher: token_code_id = local store, autolp_code_id = local AutoLP, ust1 = stand-in, factory/router from deploy, CMM = test1.
    • AddWhitelistedCodeId local token id only.
    • Paid create with features: ["auto_v2_lp"] (exact SKU name as crate) + large initial_balances to test1, buy/sell 500 bps, QA launch guards. Invoice 50 UST1 to launcher.
    • CreatePair tax vs EMBER (pay factory fee), RegisterListedPair.
    • Seed LP to swarm floors (≥ 10M raw / side, align liquidityGuards.ts / BOTS_MIN_RESERVE_PER_SIDE).
    • AutoLP UpdateConfig { pair } after factory listing; optional small Transfer to AutoLP + one SkimToLp in deploy smoke (or leave skim to the tax-on suite).
  2. Write .env.local + indexer/.env: local VITE_COMMUNITY_TAX_CODE_ID (store id), VITE_COMMUNITY_TOKEN_LAUNCHER, VITE_TOKEN_COMMUNITY_TAX_ADDRESS, VITE_PAIR_COMMUNITY_TAX_EMBER, indexer COMMUNITY_TAX_CODE_ID / COMMUNITY_TOKEN_LAUNCHER / CMM_GOVERNANCE_ADDR=test1 / COMMUNITY_TAX_OPTION2_CODE_IDS=<local token code>.
  3. Funding helper: if token has GetLauncherOrigin or matches VITE_TOKEN_COMMUNITY_TAX_ADDRESS, Transfer from test1 to deficit addresses; never Mint. Keep wrap Mint skip. TCL8Y stays Mint.
  4. Docs: docs/local-development.md, docs/testing.md, AGENTS_COMMUNITY_TAX_CW20.md — QA token is not a license to whitelist other tax wasm.

Acceptance criteria

  • make deploy-local (default) produces a factory-listed tax/EMBER pair with RegisterListedPair done and reserves ≥ swarm floor.
  • AutoLP is instantiated, bound on the token, and GetConfig.pair is the factory pair (or documented follow-up UpdateConfig in the same deploy).
  • .env.local and indexer/.env contain community-tax + local UST1 pins; Create Token page is available without baking columbus-5 11611.
  • e2e-provision-dev-wallet.sh and TS swarm funding succeed (no Mint on the tax token); test1 and bots can be topped up by Transfer.
  • Indexer with those env vars: GET /api/v1/community-tokens is configured: true and lists the QA token as attested_cmm after ingest/probe.
  • GET /api/v1/tokens/{tax} may embed community_tax; route/solve can see buy_bps/sell_bps for ranking (R615).
  • DEPLOY_SKIP_COMMUNITY_TAX=1 still deploys gems only.
  • Factory GetWhitelistedCodeIds on LocalTerra includes the local token code only (not 11611 from this script).
  • #601 smoke and make verify-issue-592 / 610 / 594 stay green.

Test plan (all paths)

  1. Fresh make reset && make deploy-local — tax phase runs; env files set; LCD GetConfig / GetLauncherOrigin / factory Pair / AutoLP pair match.
  2. Re-run deploy without --fresh — idempotent skip or safe no-op (no second pair, no double whitelist panic).
  3. DEPLOY_SKIP_COMMUNITY_TAX=1 — no tax store; provision/swarm unchanged.
  4. Provision: tax balance below floor → Transfer; already funded → no tx; wrap tokens still skip Mint; TCL8Y still Mints.
  5. TS swarm --dry-run after deploy — funding path does not Mint tax token.
  6. Indexer start: list configured: true; rogue --admin instantiate (if present) not catalogued (O601-4).
  7. Paid AutoLP path: launcher/token hold 0 UST1 after invoice; CMM stand-in receives 50 UST1 (T592-4 / T606-6).
  8. Provide after register still 1:1 (T592-1).
  9. Optional: SkimToLp once at deploy depth; floor revert if spread too tight (M610-3/4).

Test plan (attack / hack / abuse)

Vector Expect
Script or docs tell ops to whitelist columbus-5 11611/11612/11621/8654 from LocalTerra Fail review / rg guard like verify-issue-601
Funding falls back to Mint when Transfer fails Must fail closed; do not add MintControl to the QA token
AutoLP UpdateConfig pointed at a non-factory or wrong-token contract Reject (M610-1/7); deploy must not leave a fake pair
Manager/directory or launch-guard profile disables trading QA profile must keep swaps live; do not ship trading_enabled=false
Catalog promotes a rogue --admin instantiate GetLauncherOrigin.launcher == null → not attested_cmm
SkimToLp invoked from token Send/Transfer Must not be wired (T592-10)
Indexer COMMUNITY_TAX_CODE_ID set to columbus-5 11619 while instances are local store Probe/attestation fail-closed; env must be the local id
Invoice Send to token instead of launcher for Enable Feature Do not use that shortcut in deploy (T606-7)

Verification

make deploy-local   # or make setup-cloud-localterra
# LCD: factory pair + RegisterListedPair + AutoLP pair set
# grep VITE_COMMUNITY VITE_UST1 frontend-dapp/.env.local
# grep COMMUNITY_TAX indexer/.env
bash scripts/e2e-provision-dev-wallet.sh   # must not Mint tax token
cd packages/localnet-trading-swarm && npm run start -- --dry-run
# indexer: GET /api/v1/community-tokens → configured + attested item
make verify-issue-601   # still ephemeral smoke
make verify-issue-594
make verify-issue-610

Close only when sibling swarm/E2E issues can run against this deploy without extra manual instantiate.

## Parent / siblings Follow-up to community tax on-chain work ([#592](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/592), [#601](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/601), [#605](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/605), [#610](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/610), [#615](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/615)). This issue is the **LocalTerra stack wiring** so later swarm / Playwright / tax-on harness issues can see a real listed tax market. Do **not** reopen those tickets unless an invariant is wrong. Sibling implementation issues (open with this one): tax-aware swarm, Playwright `e2e-tx` matrix, named tax-on Layer B suite. ## Current codebase `scripts/deploy-dex-local.sh` stores **mintable** CW20s and seeds factory pairs for gems (`EMBER`, `CORAL`, `JADE`, `ONYX`, `RUBY`, `TOPAZ`, `OPAL`, `COBALT`, `SLATE`, `AMBER`, plus later `IRON`/`NEON`), wrap CW20s (`cLUNC`/`cUSTC`), and `TCL8Y`. It does **not** store `cl8y_community_tax_token`, `cl8y_community_token_launcher`, or `cl8y_community_tax_autolp`. It does not instantiate a launcher, create a tax token, `CreatePair`, or `RegisterListedPair`. `.env.local` never gets `VITE_COMMUNITY_TAX_CODE_ID` / `VITE_COMMUNITY_TOKEN_LAUNCHER` / a tax token address. There is **no local UST1**. Downstream funding assumes every factory CW20 (except wraps) can `Mint`: - `scripts/e2e-provision-dev-wallet.sh` — paginate factory `pairs`, `{"mint":{…}}` when balance &lt; floor; skip only `VITE_LUNC_C_TOKEN_ADDRESS` / `VITE_USTC_C_TOKEN_ADDRESS`. - `packages/localnet-trading-swarm/src/funding.ts` — same Mint over **all** factory CW20s (no wrap skip). Indexer local `.env` from deploy does not set `COMMUNITY_TAX_CODE_ID` / `COMMUNITY_TOKEN_LAUNCHER` / `CMM_GOVERNANCE_ADDR` / `COMMUNITY_TAX_OPTION2_*`. Catalog API stays `configured: false`. `#601` smoke (`scripts/qa/localterra-community-tax-smoke.sh`) already stores current token+launcher, creates a throwaway mintable UST1, free-profile `CreateToken`, pair vs EMBER, `RegisterListedPair`, extra-debit/outbound, invoices. It is **ephemeral**: nothing is written to `.env.local`, AutoLP is `autolp_code_id: null`, and the pair is not reused by E2E/swarm. Launcher AutoLP today: paid `Sku::AutoV2Lp` instantiate+binds at create with **`pair: None`**; manager/`UpdateConfig` sets the factory-listed tax pair later ([#610](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/610) **M610-1**). Token `BindAutolp` is launcher-only. ## Why this is needed Gems “just work” in infra E2E and swarm because deploy puts them on the factory and funding Mints them. The community tax template is listed on columbus-5 (`11611`/`11619`) and crate-tested, but LocalTerra QA never sees a registered tax pair. Adding the pair **without** a funding fork will break `make test-e2e` / swarm startup (`Mint` on a free-profile token fails). Without indexer env, `#594` / `#615` stay unit-only. AutoLP skim vs a live factory pair is an **O601-7** residual; `#601` smoke does not bind AutoLP. ## Constraints / guardrails - Whitelist **only the LocalTerra store id**. Never `AddWhitelistedCodeId` columbus-5 `11611`/`11619` from this evidence. Never whitelist launcher / AutoLP / ALPHA **8654**. - Do **not** add pair/router FoT math (**H-01**). Inbound to pair/router/AutoLP stays 1:1. - Do **not** enable `MintControl` on the default QA tax token just to reuse gem Mint funding. Top up with `Transfer` from `test1` (large `initial_balances`). - QA launch-guard profile: `trading_enabled=true`, `cooldown_blocks=0`, high/null `max_wallet`. A “safe launch” preset will brick swarm/E2E. - AutoLP: store local AutoLP code, set launcher `autolp_code_id`, paid create (50 UST1 stand-in) **or** Enable Feature after free create. After `CreatePair`+`RegisterListedPair`, `UpdateConfig` AutoLP `pair` via factory lookup. `SkimToLp` is permissionless and **never** called from token `Transfer`/`Send` (**T592-10** / **M610-5**). Floor `max_spread` default 100 bps, cap 200 (**M610-3**). - Local UST1 is a **mintable stand-in** for invoices only. Do not treat it as columbus-5 UST1 / window. - CMM stand-in on LocalTerra is `test1` (wasm admin + catalog). Document that this is not columbus-5 CMM `terra16j5u6…`. - Optional skip flag (e.g. `DEPLOY_SKIP_COMMUNITY_TAX=1`) for wasm-less / fast gem-only deploys. - `make reset` / `--fresh` must recreate the tax market; do not rely on stale `.qa-deploy-stamp` alone ([#325](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/325)). ## Relevant files | Path | Role | |------|------| | `scripts/deploy-dex-local.sh` | Store/instantiate gems today; add tax phase + env writes | | `scripts/e2e-provision-dev-wallet.sh` | Factory Mint; add tax/wrap-style Transfer skip | | `packages/localnet-trading-swarm/src/funding.ts` | Swarm Mint; same fork | | `scripts/qa/localterra-community-tax-smoke.sh` | Prior art for store/create/register/invoice | | `cw20-codeid-audits/scripts/lib-layer-lt.sh` | terrad/LCD helpers | | `frontend-dapp/.env.example` | `VITE_COMMUNITY_TAX_*` empty today | | `frontend-dapp/src/utils/constants.ts` | `COMMUNITY_TAX_CODE_ID` / `COMMUNITY_TOKEN_LAUNCHER` | | `indexer` env from deploy | `COMMUNITY_TAX_*`, `CMM_GOVERNANCE_ADDR`, `COMMUNITY_TAX_OPTION2_*` | | `skills/AGENTS_COMMUNITY_TAX_CW20.md` | T592 / O601 | | `skills/AGENTS_COMMUNITY_TAX_AUTOLP.md` | M610 | | `skills/AGENTS_INDEXER_COMMUNITY_TOKENS.md` | I594 | | `skills/AGENTS_LOCAL_POSTGRES_DEV.md` | Indexer `.env` | ## Recommended direction 1. Extract a `scripts/lib/deploy-community-tax-local.sh` (or phase in `deploy-dex-local.sh`) called after factory + EMBER exist: - Store current artifacts (`cl8y_community_tax_token`, launcher, AutoLP). Fail if wasm missing (or build via existing optimize path). - Instantiate mintable **SmokeUST1** (same shape as `#601`); write `VITE_UST1_TOKEN_ADDRESS` for local only if unset. - Instantiate launcher: `token_code_id` = local store, `autolp_code_id` = local AutoLP, `ust1` = stand-in, `factory`/`router` from deploy, CMM = `test1`. - `AddWhitelistedCodeId` local token id only. - Paid create with `features: ["auto_v2_lp"]` (exact SKU name as crate) + large `initial_balances` to `test1`, buy/sell **500 bps**, QA launch guards. Invoice 50 UST1 to launcher. - `CreatePair` tax vs EMBER (pay factory fee), `RegisterListedPair`. - Seed LP to swarm floors (`≥ 10M` raw / side, align `liquidityGuards.ts` / `BOTS_MIN_RESERVE_PER_SIDE`). - AutoLP `UpdateConfig { pair }` after factory listing; optional small Transfer to AutoLP + one `SkimToLp` in deploy smoke (or leave skim to the tax-on suite). 2. Write `.env.local` + `indexer/.env`: local `VITE_COMMUNITY_TAX_CODE_ID` (store id), `VITE_COMMUNITY_TOKEN_LAUNCHER`, `VITE_TOKEN_COMMUNITY_TAX_ADDRESS`, `VITE_PAIR_COMMUNITY_TAX_EMBER`, indexer `COMMUNITY_TAX_CODE_ID` / `COMMUNITY_TOKEN_LAUNCHER` / `CMM_GOVERNANCE_ADDR=test1` / `COMMUNITY_TAX_OPTION2_CODE_IDS=<local token code>`. 3. Funding helper: if token has `GetLauncherOrigin` or matches `VITE_TOKEN_COMMUNITY_TAX_ADDRESS`, **Transfer** from `test1` to deficit addresses; never Mint. Keep wrap Mint skip. TCL8Y stays Mint. 4. Docs: `docs/local-development.md`, `docs/testing.md`, `AGENTS_COMMUNITY_TAX_CW20.md` — QA token is not a license to whitelist other tax wasm. ## Acceptance criteria - [ ] `make deploy-local` (default) produces a factory-listed tax/EMBER pair with `RegisterListedPair` done and reserves ≥ swarm floor. - [ ] AutoLP is instantiated, bound on the token, and `GetConfig.pair` is the factory pair (or documented follow-up `UpdateConfig` in the same deploy). - [ ] `.env.local` and `indexer/.env` contain community-tax + local UST1 pins; Create Token page is available without baking columbus-5 `11611`. - [ ] `e2e-provision-dev-wallet.sh` and TS swarm funding succeed (no Mint on the tax token); `test1` and bots can be topped up by Transfer. - [ ] Indexer with those env vars: `GET /api/v1/community-tokens` is `configured: true` and lists the QA token as `attested_cmm` after ingest/probe. - [ ] `GET /api/v1/tokens/{tax}` may embed `community_tax`; `route/solve` can see `buy_bps`/`sell_bps` for ranking (**R615**). - [ ] `DEPLOY_SKIP_COMMUNITY_TAX=1` still deploys gems only. - [ ] Factory `GetWhitelistedCodeIds` on LocalTerra includes the **local** token code only (not 11611 from this script). - [ ] `#601` smoke and `make verify-issue-592` / `610` / `594` stay green. ## Test plan (all paths) 1. Fresh `make reset && make deploy-local` — tax phase runs; env files set; LCD `GetConfig` / `GetLauncherOrigin` / factory `Pair` / AutoLP `pair` match. 2. Re-run deploy without `--fresh` — idempotent skip or safe no-op (no second pair, no double whitelist panic). 3. `DEPLOY_SKIP_COMMUNITY_TAX=1` — no tax store; provision/swarm unchanged. 4. Provision: tax balance below floor → Transfer; already funded → no tx; wrap tokens still skip Mint; TCL8Y still Mints. 5. TS swarm `--dry-run` after deploy — funding path does not Mint tax token. 6. Indexer start: list `configured: true`; rogue `--admin` instantiate (if present) not catalogued (**O601-4**). 7. Paid AutoLP path: launcher/token hold 0 UST1 after invoice; CMM stand-in receives 50 UST1 (**T592-4** / **T606-6**). 8. Provide after register still 1:1 (**T592-1**). 9. Optional: `SkimToLp` once at deploy depth; floor revert if spread too tight (**M610-3/4**). ## Test plan (attack / hack / abuse) | Vector | Expect | |--------|--------| | Script or docs tell ops to whitelist columbus-5 `11611`/`11612`/`11621`/`8654` from LocalTerra | Fail review / `rg` guard like `verify-issue-601` | | Funding falls back to `Mint` when Transfer fails | Must fail closed; do not add MintControl to the QA token | | AutoLP `UpdateConfig` pointed at a non-factory or wrong-token contract | Reject (**M610-1/7**); deploy must not leave a fake pair | | Manager/directory or launch-guard profile disables trading | QA profile must keep swaps live; do not ship `trading_enabled=false` | | Catalog promotes a rogue `--admin` instantiate | `GetLauncherOrigin.launcher == null` → not `attested_cmm` | | `SkimToLp` invoked from token `Send`/`Transfer` | Must not be wired (**T592-10**) | | Indexer `COMMUNITY_TAX_CODE_ID` set to columbus-5 `11619` while instances are local store | Probe/attestation fail-closed; env must be the **local** id | | Invoice Send to token instead of launcher for Enable Feature | Do not use that shortcut in deploy (**T606-7**) | ## Verification ```bash make deploy-local # or make setup-cloud-localterra # LCD: factory pair + RegisterListedPair + AutoLP pair set # grep VITE_COMMUNITY VITE_UST1 frontend-dapp/.env.local # grep COMMUNITY_TAX indexer/.env bash scripts/e2e-provision-dev-wallet.sh # must not Mint tax token cd packages/localnet-trading-swarm && npm run start -- --dry-run # indexer: GET /api/v1/community-tokens → configured + attested item make verify-issue-601 # still ephemeral smoke make verify-issue-594 make verify-issue-610 ``` Close only when sibling swarm/E2E issues can run against this deploy without extra manual instantiate.
PlasticDigits commented 2026-08-24 05:53:59 +00:00 (Migrated from gitlab.com)

marked as related to #592

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

marked as related to #601

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

marked as related to #610

marked as related to #610
PlasticDigits commented 2026-08-24 05:54:02 +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 #594

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

marked as related to #621

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

marked as related to #622

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

marked as related to #623

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

Implementation split (opened together)

Foundation (this issue) unblocks the three dependents:

IID Bundle
#621 Tax-aware swarm (TS + Python)
#622 Playwright e2e-tx matrix
#623 Named tax-on Layer B suite (B-lt stays tax-off)

Implement #620 first. Do not merge a tax pair into factory enumeration until Mint vs Transfer funding is in the same MR.

## Implementation split (opened together) Foundation (this issue) unblocks the three dependents: | IID | Bundle | |-----|--------| | #621 | Tax-aware swarm (TS + Python) | | #622 | Playwright `e2e-tx` matrix | | #623 | Named tax-on Layer B suite (B-lt stays tax-off) | Implement **#620 first**. Do not merge a tax pair into factory enumeration until Mint vs Transfer funding is in the same MR.
PlasticDigits commented 2026-08-24 06:12:43 +00:00 (Migrated from gitlab.com)

mentioned in merge request !1132

mentioned in merge request !1132
PlasticDigits commented 2026-08-24 06:18:46 +00:00 (Migrated from gitlab.com)

mentioned in commit f85a8e408b

mentioned in commit f85a8e408b007681840a342f1e4076ac2fd981e9
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-08-24 06:18:48 +00:00
PlasticDigits commented 2026-08-24 06:19:24 +00:00 (Migrated from gitlab.com)

Merge !1132 — verification (no CI wait)

Merged !1132 at 994e5bf5 → main f85a8e40. GitLab reported mergeable / no conflicts; local git merge-tree was a clean tree (53a99637…). Did not use auto-merge. Did not wait for CI.

What passed (this pass)

  • make verify-issue-620: 8/8 (docs L620, deploy hooks + bash -n, no columbus-5 whitelist, bash classify unit, swarm funding.test.ts 7/7, live LCD, retest).
  • Live LCD on the existing LocalTerra volume: factory tax/EMBER pair + AutoLP GetConfig.pair + local store id whitelisted, columbus-5 11611 / 11619 / 11612 / 11621 / 8654 not whitelisted.
  • Pins on that volume: VITE_COMMUNITY_TAX_CODE_ID=77, launcher / QA tax / pair / SmokeUST1 / VITE_CMM_GOVERNANCE_ADDR=test1 (terra1x46rq…).
  • Code review vs L620-1–L620-8: local-id-only whitelist + collision abort; Transfer fail-closed (no MintControl / no Mint fallback); paid auto_v2_lp; AutoLP UpdateConfig { pair } after RegisterListedPair; env pins + DEPLOY_SKIP_COMMUNITY_TAX=1; LP seed 100_000_000_000 raw/side; stand-in UST1 + CMM=test1. RegisterListedPair is idempotent on-chain (already=true).

Problems / leftovers (not merge blockers)

  1. GitLab CI on !1132 failed immediately with ci_quota_exceeded (all jobs). Not a code defect. Project does not require a green pipeline to merge.
  2. Fresh make reset && make deploy-local was not re-run on a clean volume. Live LCD used a prior seed (.qa-deploy-stamp git_sha=7fdc3a44, not 994e5bf5 / f85a8e40).
  3. Indexer catalog AC not verified. No indexer/.env tax pins in this checkout; nothing listening on :3001. GET /api/v1/community-tokens configured: true + attested_cmm is still open.
  4. Swarm --dry-run does not exercise Transfer. startSwarm skips fundBotWallets when dryRun is true, so npm run start -- --dry-run cannot prove the tax token is not Minted.
  5. Phase 4d is not itself idempotent if someone re-runs make deploy-local without the stamp skip: it always stores new wasm and paid-creates a new QA token. Pair lookup is only for that new token. Intended skip is .qa-deploy-stamp in setup-cloud-agent-localterra / start-qa (#325), not an in-script no-op.
  6. Sibling green checks not re-run on the merge tip: make verify-issue-601 / 592 / 610 / 594. No contract changes in !1132; still unchecked live.

Siblings #621 / #622 / #623 stay open. Post-merge leftover tracker will be filed separately (same pattern as #616).

## Merge !1132 — verification (no CI wait) Merged [`!1132`](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/merge_requests/414) at `994e5bf5` → `main` `f85a8e40`. GitLab reported **mergeable / no conflicts**; local `git merge-tree` was a clean tree (`53a99637…`). Did **not** use auto-merge. Did **not** wait for CI. ### What passed (this pass) - `make verify-issue-620`: **8/8** (docs L620, deploy hooks + `bash -n`, no columbus-5 whitelist, bash classify unit, swarm `funding.test.ts` 7/7, live LCD, retest). - Live LCD on the existing LocalTerra volume: factory tax/EMBER pair + AutoLP `GetConfig.pair` + local store id **whitelisted**, columbus-5 **11611 / 11619 / 11612 / 11621 / 8654** not whitelisted. - Pins on that volume: `VITE_COMMUNITY_TAX_CODE_ID=77`, launcher / QA tax / pair / SmokeUST1 / `VITE_CMM_GOVERNANCE_ADDR=test1` (`terra1x46rq…`). - Code review vs **L620-1–L620-8**: local-id-only whitelist + collision abort; Transfer fail-closed (no MintControl / no Mint fallback); paid `auto_v2_lp`; AutoLP `UpdateConfig { pair }` after `RegisterListedPair`; env pins + `DEPLOY_SKIP_COMMUNITY_TAX=1`; LP seed `100_000_000_000` raw/side; stand-in UST1 + CMM=`test1`. `RegisterListedPair` is idempotent on-chain (`already=true`). ### Problems / leftovers (not merge blockers) 1. **GitLab CI** on !1132 failed immediately with `ci_quota_exceeded` (all jobs). Not a code defect. Project does **not** require a green pipeline to merge. 2. **Fresh `make reset && make deploy-local`** was **not** re-run on a clean volume. Live LCD used a **prior** seed (`.qa-deploy-stamp` `git_sha=7fdc3a44`, not `994e5bf5` / `f85a8e40`). 3. **Indexer catalog AC not verified.** No `indexer/.env` tax pins in this checkout; nothing listening on `:3001`. `GET /api/v1/community-tokens` `configured: true` + `attested_cmm` is still open. 4. **Swarm `--dry-run` does not exercise Transfer.** `startSwarm` skips `fundBotWallets` when `dryRun` is true, so `npm run start -- --dry-run` cannot prove the tax token is not Minted. 5. **Phase 4d is not itself idempotent** if someone re-runs `make deploy-local` without the stamp skip: it always stores new wasm and paid-creates a new QA token. Pair lookup is only for that new token. Intended skip is `.qa-deploy-stamp` in `setup-cloud-agent-localterra` / `start-qa` ([#325](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/325)), not an in-script no-op. 6. **Sibling green checks not re-run** on the merge tip: `make verify-issue-601` / `592` / `610` / `594`. No contract changes in !1132; still unchecked live. Siblings [#621](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/621) / [#622](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/622) / [#623](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/623) stay open. Post-merge leftover tracker will be filed separately (same pattern as #616).
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 06:19:37 +00:00 (Migrated from gitlab.com)

marked as related to #624

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

Post-merge leftovers tracked on #624 (ops: post-merge !1132 LocalTerra community-tax seed leftovers).

Post-merge leftovers tracked on [#624](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/624) (`ops: post-merge !1132 LocalTerra community-tax seed leftovers`).
PlasticDigits commented 2026-08-24 06:31:43 +00:00 (Migrated from gitlab.com)

mentioned in merge request !1133

mentioned in merge request !1133
PlasticDigits commented 2026-08-24 06:55:15 +00:00 (Migrated from gitlab.com)

mentioned in merge request !1135

mentioned in merge request !1135
PlasticDigits commented 2026-08-24 07:02:07 +00:00 (Migrated from gitlab.com)

mentioned in issue #621

mentioned in issue #621
PlasticDigits commented 2026-08-24 07:02:09 +00:00 (Migrated from gitlab.com)

mentioned in issue #623

mentioned in issue #623
PlasticDigits commented 2026-08-24 07:02:37 +00:00 (Migrated from gitlab.com)

mentioned in issue #625

mentioned in issue #625
PlasticDigits commented 2026-08-25 02:04:15 +00:00 (Migrated from gitlab.com)

mentioned in issue #633

mentioned in issue #633
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#620
No description provided.