feat(frontend): pin CL8Y/cUSTC LP so /treasury assets and CR include CMM’s position #20

Closed
opened 2026-08-26 03:03:15 +00:00 by PlasticDigits · 9 comments
PlasticDigits commented 2026-08-26 03:03:15 +00:00 (Migrated from gitlab.com)

Summary

CMM treasury now holds a CL8Y DEX CL8Y/cUSTC LP. Production ust1cmm.com/treasury does not show that position in Treasury Assets and does not include the CL8Y (other-leg) NAV in CR.

#14 / tokenlist 1.3.2 already allowlists UST1-USTR, UST1-cUSTC, and UST1-SpaceUSD. This pair was created and seeded after that pin. #18 leftover §3 asked to pin new CL8Y LPs once addresses are known — they are known now.

Live pins (columbus-5, 2026-08-26)

Role Address
CMM treasury terra16j5u6ey7a84g40sr3gd94nzg5w5fm45046k9s2347qhfpwm5fr6sem3lr2
Pair terra1tz5vwrungh6drd9nt95qym3k892vs3as8nqmu7sg4ypek7wxvv4qm89upc
LP CW20 (CL8Y-CUST-LP, 18 dec) terra1u277xxcknv2r37d7xa5mnyxu3q26fyu9e9uexmyu2u99g3qfx62q2jen2c
CL8Y terra16wtml2q66g82fdkx66tap0qjkahqwp4lwq3ngtygacg5q0kzycgqvhpax3
cUSTC terra1nap4dxh9tv35v0ynd9m4k6zt6c0dq6weszc4j5m564kjls56hu7qcr56ch
Seed provide 46BB4C3AB4613A2F1EDC469312300C206012ADE7D4FD74BD173373755A65EC00

At check time: CMM LP balance 1435215951426122 = 100% of circulating supply (1000 MINIMUM_LIQUIDITY burned). Pool ~142.80 CL8Y + 14,425.14 cUSTC. More LP may be minted to CMM on a follow-up Garuda withdraw (--rest); do not hardcode the share, re-query.

Current production

Live https://ust1cmm.com/assets/tokenlist.json v1.3.2 has no type: "lp" row for this pair / LP address. /treasury only iterates that allowlist (useTreasury / #14), so the position is invisible and CR omits the CL8Y leg.

Ask

  1. Add an allowlisted type: "lp" tokenlist row (symbol e.g. CL8Y-cUSTC, dex: "cl8y", pair + both asset pins above, 18 decimals).
  2. Display full reserve NAV (CL8Y + cUSTC) on the asset row, same as other LPs.
  3. CR — keep #14 / #16 haircut: cUSTC wrap leg is not extra collateral (native USTC already counted; wrap receipts stay out of the numerator). CL8Y other-leg NAV is in CR.
  4. Available-supply cards: cUSTC LP claim reduces cUSTC available (informational); do not treat cUSTC as UST1 collateral.
  5. Optional ops: treasury AddCw20 this LP so AllBalances / a future on-chain CR stay consistent (governance checklist, not a contract change here).
  6. Do not factory-paginate or invent other CL8Y pairs.

Acceptance

  • Production /treasury shows a CL8Y/cUSTC LP row when CMM balance > 0.
  • Row USD = share × (CL8Y reserve × CL8Y USD + cUSTC reserve × USTC USD).
  • CR numerator includes only the CL8Y leg (plus existing non-protocol spots / other-leg NAV). Incomplete banner lists CL8Y if unpriced.
  • Independent LCD check of CMM LP + pair pool matches the row after Coolify deploy.

Out of scope

On-chain CR contract. Garuda CL8Y/USTC (native) — CMM does not hold that LP.

## Summary CMM treasury now holds a **CL8Y DEX CL8Y/cUSTC** LP. Production [`ust1cmm.com/treasury`](https://ust1cmm.com/treasury) does **not** show that position in **Treasury Assets** and does **not** include the CL8Y (other-leg) NAV in **CR**. `#14` / tokenlist **1.3.2** already allowlists `UST1-USTR`, `UST1-cUSTC`, and `UST1-SpaceUSD`. This pair was created and seeded after that pin. `#18` leftover §3 asked to pin new CL8Y LPs once addresses are known — they are known now. ## Live pins (columbus-5, 2026-08-26) | Role | Address | |------|---------| | CMM treasury | `terra16j5u6ey7a84g40sr3gd94nzg5w5fm45046k9s2347qhfpwm5fr6sem3lr2` | | Pair | `terra1tz5vwrungh6drd9nt95qym3k892vs3as8nqmu7sg4ypek7wxvv4qm89upc` | | LP CW20 (`CL8Y-CUST-LP`, 18 dec) | `terra1u277xxcknv2r37d7xa5mnyxu3q26fyu9e9uexmyu2u99g3qfx62q2jen2c` | | CL8Y | `terra16wtml2q66g82fdkx66tap0qjkahqwp4lwq3ngtygacg5q0kzycgqvhpax3` | | cUSTC | `terra1nap4dxh9tv35v0ynd9m4k6zt6c0dq6weszc4j5m564kjls56hu7qcr56ch` | | Seed provide | [`46BB4C3AB4613A2F1EDC469312300C206012ADE7D4FD74BD173373755A65EC00`](https://finder.terraclassic.community/columbus-5/tx/46BB4C3AB4613A2F1EDC469312300C206012ADE7D4FD74BD173373755A65EC00) | At check time: CMM LP balance `1435215951426122` = 100% of circulating supply (1000 MINIMUM_LIQUIDITY burned). Pool ~**142.80 CL8Y + 14,425.14 cUSTC**. More LP may be minted to CMM on a follow-up Garuda withdraw (`--rest`); do not hardcode the share, re-query. ## Current production Live `https://ust1cmm.com/assets/tokenlist.json` **v1.3.2** has no `type: "lp"` row for this pair / LP address. `/treasury` only iterates that allowlist (`useTreasury` / `#14`), so the position is invisible and CR omits the CL8Y leg. ## Ask 1. Add an allowlisted `type: "lp"` tokenlist row (`symbol` e.g. `CL8Y-cUSTC`, `dex: "cl8y"`, pair + both asset pins above, 18 decimals). 2. **Display** full reserve NAV (CL8Y + cUSTC) on the asset row, same as other LPs. 3. **CR** — keep `#14` / `#16` haircut: **cUSTC wrap leg is not extra collateral** (native USTC already counted; wrap receipts stay out of the numerator). **CL8Y other-leg NAV is in CR**. 4. Available-supply cards: cUSTC LP claim reduces cUSTC available (informational); do not treat cUSTC as UST1 collateral. 5. Optional ops: treasury `AddCw20` this LP so `AllBalances` / a future on-chain CR stay consistent (governance checklist, not a contract change here). 6. Do not factory-paginate or invent other CL8Y pairs. ## Acceptance - [ ] Production `/treasury` shows a CL8Y/cUSTC LP row when CMM `balance > 0`. - [ ] Row USD = share × (CL8Y reserve × CL8Y USD + cUSTC reserve × USTC USD). - [ ] CR numerator includes only the CL8Y leg (plus existing non-protocol spots / other-leg NAV). Incomplete banner lists CL8Y if unpriced. - [ ] Independent LCD check of CMM LP + pair `pool` matches the row after Coolify deploy. ## Out of scope On-chain CR contract. Garuda CL8Y/USTC (native) — CMM does not hold that LP.
PlasticDigits commented 2026-08-26 03:03:16 +00:00 (Migrated from gitlab.com)

marked as related to #18

marked as related to #18
PlasticDigits commented 2026-08-27 00:36:35 +00:00 (Migrated from gitlab.com)

mentioned in issue #21

mentioned in issue #21
PlasticDigits commented 2026-08-27 10:22:12 +00:00 (Migrated from gitlab.com)

mentioned in commit e0ca57c317

mentioned in commit e0ca57c3173194f3ca851e1ecdd40b80a9890b3d
PlasticDigits commented 2026-08-27 10:22:14 +00:00 (Migrated from gitlab.com)

mentioned in merge request !39

mentioned in merge request !39
PlasticDigits commented 2026-08-27 10:29:46 +00:00 (Migrated from gitlab.com)

mentioned in commit ff98806a1b

mentioned in commit ff98806a1b6504bbf7f61cacb3397a17dfed4c1f
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-08-27 10:29:53 +00:00
PlasticDigits commented 2026-08-27 10:45:36 +00:00 (Migrated from gitlab.com)

Merged via !39 into master @ ff98806 (combined tree with !40 @ 476d992). Did not use auto-merge; did not wait for CI/Coolify.

Code-level acceptance (local): met.

  • Tokenlist 1.3.3 pins CL8Y-cb/cUSTC (terra1tz5vw…89upc / terra1u277x…jen2c). Local /treasury shows LP CL8Y-cb/cUSTC, 100% of pool, display NAV both legs, CR $… · cUSTC omitted (CL8Y other-leg only).
  • node scripts/verify-treasury-cr.mjs: CL8Y-cb priced via LCD { pool: {} }; CR BLUE ~12858%.
  • node scripts/discover-cl8y-holdings.mjs: heldUnpinned empty; CL8Y-cb/cUSTC in heldPinned.
  • Conflict with !40: kept iPad layout; ported NAV incomplete · ${missingPriceLegs} (break-words, no truncate).

Problems / still open (do not treat this issue as done in prod):

  1. GitLab auto-closed this issue on merge, but close criterion 4 is not done: production ust1cmm.com/treasury still serves tokenlist 1.3.2 and has no CL8Y-cb/cUSTC row. Coolify has not picked up 476d992.
  2. Optional ops: governance AddCw20 for the new LP CW20s (Cw20Whitelist still empty).
  3. Independent LCD vs UI CR can differ by live ticks (local UI ~12882% vs script ~12858% seconds apart) — not a merge defect; re-check both after Coolify on the same prices.

Follow-up tracked in a new post-merge issue (and leftover Trust/prod QA remains on #18).

Merged via !39 into `master` @ `ff98806` (combined tree with !40 @ `476d992`). Did not use auto-merge; did not wait for CI/Coolify. **Code-level acceptance (local):** met. - Tokenlist `1.3.3` pins CL8Y-cb/cUSTC (`terra1tz5vw…89upc` / `terra1u277x…jen2c`). Local `/treasury` shows `LP CL8Y-cb/cUSTC`, `100% of pool`, display NAV both legs, `CR $… · cUSTC omitted` (CL8Y other-leg only). - `node scripts/verify-treasury-cr.mjs`: CL8Y-cb priced via LCD `{ pool: {} }`; CR BLUE ~12858%. - `node scripts/discover-cl8y-holdings.mjs`: `heldUnpinned` empty; CL8Y-cb/cUSTC in `heldPinned`. - Conflict with !40: kept iPad layout; ported `NAV incomplete · ${missingPriceLegs}` (break-words, no truncate). **Problems / still open (do not treat this issue as done in prod):** 1. GitLab auto-closed this issue on merge, but close criterion 4 is **not** done: production `ust1cmm.com/treasury` still serves tokenlist **1.3.2** and has **no** CL8Y-cb/cUSTC row. Coolify has not picked up `476d992`. 2. Optional ops: governance `AddCw20` for the new LP CW20s (`Cw20Whitelist` still empty). 3. Independent LCD vs UI CR can differ by live ticks (local UI ~12882% vs script ~12858% seconds apart) — not a merge defect; re-check both after Coolify on the same prices. Follow-up tracked in a new post-merge issue (and leftover Trust/prod QA remains on #18).
PlasticDigits commented 2026-08-27 10:46:27 +00:00 (Migrated from gitlab.com)

mentioned in issue #18

mentioned in issue #18
PlasticDigits commented 2026-08-27 10:46:29 +00:00 (Migrated from gitlab.com)

mentioned in issue #22

mentioned in issue #22
PlasticDigits commented 2026-08-27 10:46:30 +00:00 (Migrated from gitlab.com)

marked as related to #22

marked as related to #22
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/ustr-cmm#20
No description provided.