feat: surface F6 code-id freeze on dApp + indexer route/solve #585

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

Gate

P1 before #581 relies on live F6. Out of scope for #584 / !1108 (ops script + runbook) and #582 / !1107 (on-chain pin).

On-chain: pair write paths fail closed on AssetCodeIdDrift / AssetCodeIdNotWhitelisted / AssetCodeIdGuardUnavailable. Queries (Simulation / HybridSimulation) stay ungated, so a frozen pair can still quote.

MR: !1111 (feat/585-f6-code-id-freeze).

Problem

After factory 1.9.0 + pair 1.15.0 are live, a listed CW20 wasm migrate (or whitelist removal) freezes swaps / LP / limit place+fill / cancel / claim. Today:

  • Indexer route/solve can still offer that pair.
  • dApp shows a raw CosmWasm error instead of “this market is frozen (token code changed)”.
  • Charts / pool / trade do not mark the pair as F6-frozen.

Internal audit F389-01 / F389-02. #584 explicitly deferred this.

Acceptance

  • Indexer: exclude or flag pairs whose live ContractInfo.code_id ≠ pin or is not factory-whitelisted, so route/solve does not treat them as executable.
  • dApp: humanize F6 execute errors on Swap / Trade / Pool (not a generic failed tx).
  • Pair surfaces (/trade, /charts, /pool) show a freeze state when known (indexer field or LCD), and copy that quotes can still appear while execute is blocked.
  • Tests / make verify-issue-* for the new issue number.
  • Does not un-gate on-chain exits or add FoT math (H-01).

Out of scope

Columbus-5 migrate itself (#584). 8266 listing (#581). Wasm-admin-at-listing policy (C).

## Gate **P1 before #581 relies on live F6.** Out of scope for [#584](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/584) / [!1108](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/merge_requests/390) (ops script + runbook) and [#582](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/582) / [!1107](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/merge_requests/389) (on-chain pin). On-chain: pair write paths fail closed on `AssetCodeIdDrift` / `AssetCodeIdNotWhitelisted` / `AssetCodeIdGuardUnavailable`. Queries (`Simulation` / `HybridSimulation`) stay **ungated**, so a frozen pair can still quote. MR: [!1111](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/merge_requests/393) (`feat/585-f6-code-id-freeze`). ## Problem After factory **1.9.0** + pair **1.15.0** are live, a listed CW20 wasm migrate (or whitelist removal) freezes swaps / LP / limit place+fill / cancel / claim. Today: - Indexer `route/solve` can still offer that pair. - dApp shows a raw CosmWasm error instead of “this market is frozen (token code changed)”. - Charts / pool / trade do not mark the pair as F6-frozen. Internal audit F389-01 / F389-02. #584 explicitly deferred this. ## Acceptance - [x] Indexer: exclude or flag pairs whose live `ContractInfo.code_id` ≠ pin or is not factory-whitelisted, so `route/solve` does not treat them as executable. - [x] dApp: humanize F6 execute errors on Swap / Trade / Pool (not a generic failed tx). - [x] Pair surfaces (`/trade`, `/charts`, `/pool`) show a freeze state when known (indexer field or LCD), and copy that quotes can still appear while execute is blocked. - [x] Tests / `make verify-issue-*` for the new issue number. - [x] Does **not** un-gate on-chain exits or add FoT math (H-01). ## Out of scope Columbus-5 migrate itself (#584). 8266 listing (#581). Wasm-admin-at-listing policy (C).
PlasticDigits commented 2026-08-21 00:16:25 +00:00 (Migrated from gitlab.com)

marked as related to #582

marked as related to #582
PlasticDigits commented 2026-08-21 00:16:26 +00:00 (Migrated from gitlab.com)

marked as related to #584

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

mentioned in issue #582

mentioned in issue #582
PlasticDigits commented 2026-08-21 00:17:23 +00:00 (Migrated from gitlab.com)

mentioned in issue #584

mentioned in issue #584
PlasticDigits commented 2026-08-21 01:15:48 +00:00 (Migrated from gitlab.com)

mentioned in merge request !1110

mentioned in merge request !1110
PlasticDigits commented 2026-08-21 01:25:11 +00:00 (Migrated from gitlab.com)

mentioned in issue #581

mentioned in issue #581
PlasticDigits commented 2026-08-21 03:42:23 +00:00 (Migrated from gitlab.com)

mentioned in merge request !1111

mentioned in merge request !1111
PlasticDigits commented 2026-08-21 03:43:04 +00:00 (Migrated from gitlab.com)

marked the checklist item Indexer: exclude or flag pairs whose live ContractInfo.code_id ≠ pin or is not factory-whitelisted, so route/solve does not treat them as executable. as completed

marked the checklist item **Indexer: exclude or flag pairs whose live ContractInfo\.code\_id ≠ pin or is not factory\-whitelisted, so route/solve does not treat them as executable\.** as completed
PlasticDigits commented 2026-08-21 03:43:04 +00:00 (Migrated from gitlab.com)

marked the checklist item dApp: humanize F6 execute errors on Swap / Trade / Pool (not a generic failed tx). as completed

marked the checklist item **dApp: humanize F6 execute errors on Swap / Trade / Pool \(not a generic failed tx\)\.** as completed
PlasticDigits commented 2026-08-21 03:43:04 +00:00 (Migrated from gitlab.com)

marked the checklist item Pair surfaces /trade, /charts, /pool show a freeze state when known indexer field or LCD, and copy that quotes can still appear while execute is blocked. as completed

marked the checklist item **Pair surfaces \(/trade, /charts, /pool\) show a freeze state when known \(indexer field or LCD\), and copy that quotes can still appear while execute is blocked\.** as completed
PlasticDigits commented 2026-08-21 03:43:04 +00:00 (Migrated from gitlab.com)

marked the checklist item Tests / make verify-issue-* for the new issue number. as completed

marked the checklist item **Tests / make verify\-issue\-\* for the new issue number\.** as completed
PlasticDigits commented 2026-08-21 03:43:04 +00:00 (Migrated from gitlab.com)

marked the checklist item Does not un-gate on-chain exits or add FoT math (H-01). as completed

marked the checklist item **Does not un\-gate on\-chain exits or add FoT math \(H\-01\)\.** as completed
PlasticDigits commented 2026-08-21 03:43:06 +00:00 (Migrated from gitlab.com)

Implementation is on feat/585-f6-code-id-freeze and ready for review in !1111.

Acceptance criteria are all checked in the description. make verify-issue-585 passed 8/8 (first pass + retest): indexer freeze eval + code_id_frozen / route/solve exclude, 267 frontend tests (Swap/Trade/Pool/Charts/Limits + humanize), docs/skills F585-1–F585-8.

This is visibility only. On-chain F6 write-path fail-closed is still #582/#584. Queries stay ungated, so a quote can still appear while execute is blocked. Does not un-gate cancel/claim/withdraw and does not add FoT math. Does not unblock #581 / 8266.

Playbook: skills/AGENTS_FRONTEND_CODE_ID_FREEZE.md. Invariants: docs/frontend.md § code-id freeze.

Implementation is on `feat/585-f6-code-id-freeze` and ready for review in !1111. Acceptance criteria are all checked in the description. `make verify-issue-585` passed 8/8 (first pass + retest): indexer freeze eval + `code_id_frozen` / `route/solve` exclude, 267 frontend tests (Swap/Trade/Pool/Charts/Limits + humanize), docs/skills F585-1–F585-8. This is **visibility only**. On-chain F6 write-path fail-closed is still #582/#584. Queries stay ungated, so a quote can still appear while execute is blocked. Does **not** un-gate cancel/claim/withdraw and does **not** add FoT math. Does **not** unblock #581 / 8266. Playbook: `skills/AGENTS_FRONTEND_CODE_ID_FREEZE.md`. Invariants: `docs/frontend.md` § code-id freeze.
PlasticDigits commented 2026-08-21 11:23:47 +00:00 (Migrated from gitlab.com)

mentioned in commit 048c2dd965

mentioned in commit 048c2dd965637ccd58f7bac9dca380da804500d1
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-08-21 11:23:47 +00:00
PlasticDigits commented 2026-08-22 10:59:15 +00:00 (Migrated from gitlab.com)

mentioned in issue #594

mentioned in issue #594
PlasticDigits commented 2026-08-22 11:02:34 +00:00 (Migrated from gitlab.com)

mentioned in issue #595

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

mentioned in issue #597

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

mentioned in issue #633

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

mentioned in issue #634

mentioned in issue #634
PlasticDigits commented 2026-08-26 04:11:20 +00:00 (Migrated from gitlab.com)

mentioned in issue #660

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

mentioned in issue #685

mentioned in issue #685
PlasticDigits commented 2026-08-27 11:52:20 +00:00 (Migrated from gitlab.com)

mentioned in issue #690

mentioned in issue #690
PlasticDigits commented 2026-09-01 08:14:38 +00:00 (Migrated from gitlab.com)

mentioned in issue #717

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