design(community-tax): router protocol-exempt vs buy/sell tax — three options (C-2) #607

Closed
opened 2026-08-23 11:49:49 +00:00 by PlasticDigits · 34 comments
PlasticDigits commented 2026-08-23 11:49:49 +00:00 (Migrated from gitlab.com)

Audit INTERNAL_KIMIK3_1787468843 C-2. Template #592 (T592-1, T592-2, T592-3, H-01). Router multi-hop was explicitly not a #601 close gate (O601-7). Hybrid always-on #596. PoC: poc_router_exemption_full_tax_bypass (classification only — address named "router", not router wasm).

This ticket is design only. Do not implement a tax/router change until one option is written into T592 and accepted here.


Current codebase

Instantiate stamps PROTOCOL_EXEMPT on config.router when set. Columbus-5 launcher does set the official router (terra1e7s0h9…rsrw).

Classification in community-tax-token/src/tax.rs:

  • Sell — Send + Cw20HookMsg::Swap to a listed pair and !is_protocol_exempt(from).
  • Buy — from is a listed pair and !is_protocol_exempt(to).
  • Listed pairs and the router are protocol-exempt (T592-1 inbound 1:1).

A router hop is: user → router (honest inbound) → router Send+Swap to pair (sell skipped because from=router) → pair Transfer to router (buy skipped because to=router) → router Transfer to user (wallet↔wallet; transfer tax SKU only, default off).

Actually untaxed today: official multi-hop (swapOpsRequireRouter ⇔ ops.length >= 2), hybrid ops that execute on the router, permissionless 1-op execute_swap_operations, invoice wrap-routes via the router.

Still taxed: official single-hop pair Send+Swap (and some Trade pair-direct paths). Do not claim “every official Swap.”

If the router were not exempt, it would pay sell extra-debit and typically fail InsufficientForSellTax (it only holds amount). That is why the exemption exists — and why it also deletes the tax.

Pair and router wasm are unchanged on purpose (H-01).


Why this is needed

Advertised buy/sell bps are not collected on the path the dApp uses for best-execution multi-hop. Direct pair swaps still tax — two economic regimes. Sophisticated flow (router, bots, invoice wraps) is cheaper than the retail pair button. Sinks / AutoLP stay empty on the router path.

This is the product’s central contradiction: inbound 1:1 + unchanged router wasm vs router hops pay tax. There is no one-liner. O601-7 deferred it; it must be decided before the first community token has liquidity.


Constraints / guardrails

  1. Do not add pair/router FoT balance-delta math unless H-01 is explicitly reopened (option that teaches the router to size extra-debit is rejected unless that happens).
  2. Inbound credits to pair / router / escrow / AutoLP stay 1:1 (T592-1).
  3. Do not implement until this issue records a chosen option and T592 is updated.
  4. dApp-force pair-only execute for code_id 11611 does not stop off-dApp router use — not a complete option 1 substitute.
  5. Live 11611 already listed — a classify change is a token migrate; a disclose-only option 1 is docs + dApp.

Relevant files

  • smartcontracts/contracts/community-tax-token/src/tax.rs (classify, is_protocol_exempt)
  • smartcontracts/contracts/community-tax-token/src/contract.rs (router stamped PROTOCOL_EXEMPT)
  • smartcontracts/contracts/router/src/contract.rs (execute_swap_operations)
  • frontend-dapp Swap / Trade (swapOpsRequireRouter, quoteCw20ViaRouteSolve)
  • skills/AGENTS_COMMUNITY_TAX_CW20.md (T592, O601-7)
  • skills/AGENTS_HYBRID_QUOTING.md / AGENTS_FRONTEND_HYBRID_ALWAYS_ON.md
  • smartcontracts/contracts/community-token-launcher/tests/audit_poc.rs (poc_router_exemption_full_tax_bypass)

Options and tradeoffs (pick one)

Option 1 — Accept router hops as untaxed (disclose)

What: Write into T592: buy/sell apply to pair-direct Send+Swap / pair→EOA only. Router hops are Honest. Swap / Trade copy says so.

Keeps: H-01, inbound 1:1, hybrid / #596, no token migrate strictly required (docs + UI).

Costs: Advertised bps do not apply to official multi-hop or any 1-op router Send. Sinks fill only from pair-direct flow. Bots remain cheaper.

Option 2 — Tax the original trader even if from is protocol-exempt

What: Classify Send+Swap to a listed pair as Sell even when from is the router. Extra-debit the original trader (trusted trader field — pair already has this for fee discount). Buy: when pair pays the router, tax the final non-exempt recipient (or skip buy on the hop and tax router→user if that is classified).

Keeps: Router wasm unchanged; extra-debit stays on the user, not the router’s amount.

Costs: Token classify change → 11611 migrate. Need a trusted trader on every router hop (pair trader / router must pass it). Wrong trader field is an abuse vector (see below). Hybrid quotes must include extra-debit. Hardest to specify for buy (pair→router→user).

Option 3 — Do not exempt the router; pair-only sells for this template

What: Stop stamping the router PROTOCOL_EXEMPT (or ignore it for Sell). Users Send the tax token to the pair only. dApp forces pair-only execute for code_id 11611.

Keeps: Simple classify. Extra-debit works on the path that already works.

Costs: Official hybrid / multi-hop / #596 breaks for this template unless those routes are forbidden. Invoice wrap-routes that hop this token via the router revert or underpay. Integrators who execute_swap_operations 1-op fail InsufficientForSellTax unless they pre-fund the router (they will not). Product cut: “this token is pair-only.”


Record the choice in this issue, then a follow-up implement ticket. Default lean if product wants “bps mean bps on official Swap”: option 2 with an explicit buy-leg spec. Default lean if product wants to keep H-01 + hybrid: option 1 plus honest Swap copy. Do not ship option 3 without accepting a pair-only tax token.


Acceptance criteria (design close)

  • One option is chosen in a comment on this issue (not “maybe later”).
  • T592 (and C593 sell/buy copy) updated to match.
  • Implement follow-up opened or explicitly waived (option 1 disclose-only can close here after docs/UI).
  • #603 importer stays blocked until this choice is written.

Test plan — all paths (after a choice; not this ticket)

  1. Pair-direct sell / buy (must still match T592-2 / T592-3).
  2. Official single-hop vs multi-hop vs hybrid execute.
  3. Permissionless 1-op router execute_swap_operations.
  4. Invoice wrap-route that hops the tax token.
  5. TransferTax SKU wallet↔wallet (unchanged).
  6. Router not holding extra-debit amount (option 2 must not brick the hop).

Test plan — attack / abuse (after a choice)

  1. Tax evasion: 1-op router Send vs pair Send — must match the chosen invariant.
  2. Option 2 trader spoof: hop sets trader to a victim / exempt address to shift or skip extra-debit. Must be authenticated (pair already-trusted trader rules).
  3. Option 2 buy skip: pair→router untaxed then router→user also untaxed — specify which hop is Buy.
  4. Option 3 residual: off-dApp router still used — if router stays exempt on old instances, migrate + pin (F6) story.
  5. Quote/execute divergence: indexer route/solve vs on-chain tax after the choice.
  6. Do not create pair insolvency: inbound to pair stays 1:1 regardless of option.

Verification

  • Design close = written option + T592 diff, not a passing PoC.
  • Implementation follow-up must invert or replace poc_router_exemption_full_tax_bypass to match the chosen option (option 1 may keep the PoC as a documented property with a rename).
## Parent / related Audit [`INTERNAL_KIMIK3_1787468843`](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/blob/main/audits/INTERNAL_KIMIK3_1787468843.md) **C-2**. Template [#592](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/592) (**T592-1**, **T592-2**, **T592-3**, **H-01**). Router multi-hop was explicitly **not** a #601 close gate (**O601-7**). Hybrid always-on [#596](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/596). PoC: `poc_router_exemption_full_tax_bypass` (classification only — address named `"router"`, **not** router wasm). This ticket is **design only**. Do **not** implement a tax/router change until one option is written into T592 and accepted here. --- ## Current codebase Instantiate stamps `PROTOCOL_EXEMPT` on `config.router` when set. Columbus-5 launcher **does** set the official router (`terra1e7s0h9…rsrw`). Classification in [`community-tax-token/src/tax.rs`](smartcontracts/contracts/community-tax-token/src/tax.rs): - **Sell** — `Send` + `Cw20HookMsg::Swap` to a listed pair **and** `!is_protocol_exempt(from)`. - **Buy** — `from` is a listed pair **and** `!is_protocol_exempt(to)`. - Listed pairs and the router are protocol-exempt (**T592-1** inbound 1:1). A router hop is: user → router (honest inbound) → router `Send+Swap` to pair (sell skipped because `from=router`) → pair `Transfer` to router (buy skipped because `to=router`) → router `Transfer` to user (wallet↔wallet; transfer tax SKU only, default off). **Actually untaxed today:** official **multi-hop** (`swapOpsRequireRouter` ⇔ `ops.length >= 2`), hybrid ops that execute on the router, permissionless **1-op** `execute_swap_operations`, invoice wrap-routes via the router. **Still taxed:** official **single-hop pair** `Send+Swap` (and some Trade pair-direct paths). Do not claim “every official Swap.” If the router were **not** exempt, it would pay sell extra-debit and typically fail `InsufficientForSellTax` (it only holds `amount`). That is why the exemption exists — and why it also deletes the tax. Pair and router wasm are unchanged on purpose (**H-01**). --- ## Why this is needed Advertised buy/sell bps are not collected on the path the dApp uses for best-execution multi-hop. Direct pair swaps still tax — two economic regimes. Sophisticated flow (router, bots, invoice wraps) is cheaper than the retail pair button. Sinks / AutoLP stay empty on the router path. This is the product’s central contradiction: **inbound 1:1 + unchanged router wasm** vs **router hops pay tax**. There is no one-liner. **O601-7** deferred it; it must be decided **before** the first community token has liquidity. --- ## Constraints / guardrails 1. Do not add pair/router FoT balance-delta math unless **H-01** is explicitly reopened (option that teaches the router to size extra-debit is **rejected** unless that happens). 2. Inbound credits to pair / router / escrow / AutoLP stay 1:1 (**T592-1**). 3. Do not implement until this issue records a chosen option and T592 is updated. 4. dApp-force pair-only execute for `code_id` 11611 does **not** stop off-dApp router use — not a complete option 1 substitute. 5. Live **11611** already listed — a classify change is a token migrate; a disclose-only option 1 is docs + dApp. --- ## Relevant files - `smartcontracts/contracts/community-tax-token/src/tax.rs` (`classify`, `is_protocol_exempt`) - `smartcontracts/contracts/community-tax-token/src/contract.rs` (router stamped `PROTOCOL_EXEMPT`) - `smartcontracts/contracts/router/src/contract.rs` (`execute_swap_operations`) - `frontend-dapp` Swap / Trade (`swapOpsRequireRouter`, `quoteCw20ViaRouteSolve`) - `skills/AGENTS_COMMUNITY_TAX_CW20.md` (T592, O601-7) - `skills/AGENTS_HYBRID_QUOTING.md` / `AGENTS_FRONTEND_HYBRID_ALWAYS_ON.md` - `smartcontracts/contracts/community-token-launcher/tests/audit_poc.rs` (`poc_router_exemption_full_tax_bypass`) --- ## Options and tradeoffs (pick one) ### Option 1 — Accept router hops as untaxed (disclose) **What:** Write into T592: buy/sell apply to **pair-direct** `Send+Swap` / pair→EOA only. Router hops are Honest. Swap / Trade copy says so. **Keeps:** H-01, inbound 1:1, hybrid / #596, no token migrate strictly required (docs + UI). **Costs:** Advertised bps do not apply to official multi-hop or any 1-op router Send. Sinks fill only from pair-direct flow. Bots remain cheaper. ### Option 2 — Tax the original trader even if `from` is protocol-exempt **What:** Classify `Send+Swap` to a listed pair as **Sell** even when `from` is the router. Extra-debit the **original trader** (trusted `trader` field — pair already has this for fee discount). Buy: when pair pays the router, tax the **final** non-exempt recipient (or skip buy on the hop and tax router→user if that is classified). **Keeps:** Router wasm unchanged; extra-debit stays on the user, not the router’s `amount`. **Costs:** Token classify change → **11611 migrate**. Need a trusted trader on every router hop (pair `trader` / router must pass it). Wrong trader field is an abuse vector (see below). Hybrid quotes must include extra-debit. Hardest to specify for buy (pair→router→user). ### Option 3 — Do not exempt the router; pair-only sells for this template **What:** Stop stamping the router `PROTOCOL_EXEMPT` (or ignore it for Sell). Users `Send` the tax token to the **pair** only. dApp forces pair-only execute for `code_id` 11611. **Keeps:** Simple classify. Extra-debit works on the path that already works. **Costs:** Official hybrid / multi-hop / #596 **breaks** for this template unless those routes are forbidden. Invoice wrap-routes that hop this token via the router revert or underpay. Integrators who `execute_swap_operations` 1-op fail `InsufficientForSellTax` unless they pre-fund the router (they will not). Product cut: “this token is pair-only.” --- ## Recommended direction Record the choice in this issue, then a follow-up implement ticket. Default lean if product wants “bps mean bps on official Swap”: **option 2** with an explicit buy-leg spec. Default lean if product wants to keep H-01 + hybrid: **option 1** plus honest Swap copy. Do not ship option 3 without accepting a pair-only tax token. --- ## Acceptance criteria (design close) - [ ] One option is chosen in a comment on this issue (not “maybe later”). - [ ] T592 (and C593 sell/buy copy) updated to match. - [ ] Implement follow-up opened **or** explicitly waived (option 1 disclose-only can close here after docs/UI). - [ ] #603 importer stays blocked until this choice is written. --- ## Test plan — all paths (after a choice; not this ticket) 1. Pair-direct sell / buy (must still match T592-2 / T592-3). 2. Official single-hop vs multi-hop vs hybrid execute. 3. Permissionless 1-op router `execute_swap_operations`. 4. Invoice wrap-route that hops the tax token. 5. TransferTax SKU wallet↔wallet (unchanged). 6. Router not holding extra-debit `amount` (option 2 must not brick the hop). --- ## Test plan — attack / abuse (after a choice) 1. **Tax evasion:** 1-op router Send vs pair Send — must match the chosen invariant. 2. **Option 2 trader spoof:** hop sets `trader` to a victim / exempt address to shift or skip extra-debit. Must be authenticated (pair already-trusted trader rules). 3. **Option 2 buy skip:** pair→router untaxed then router→user also untaxed — specify which hop is Buy. 4. **Option 3 residual:** off-dApp router still used — if router stays exempt on old instances, migrate + pin (F6) story. 5. **Quote/execute divergence:** indexer `route/solve` vs on-chain tax after the choice. 6. **Do not** create pair insolvency: inbound to pair stays 1:1 regardless of option. --- ## Verification - Design close = written option + T592 diff, not a passing PoC. - Implementation follow-up must invert or replace `poc_router_exemption_full_tax_bypass` to match the chosen option (option 1 may **keep** the PoC as a documented property with a rename).
PlasticDigits commented 2026-08-23 11:49:50 +00:00 (Migrated from gitlab.com)

marked as related to #592

marked as related to #592
PlasticDigits commented 2026-08-23 11:49:50 +00:00 (Migrated from gitlab.com)

marked as related to #596

marked as related to #596
PlasticDigits commented 2026-08-23 11:49:51 +00:00 (Migrated from gitlab.com)

marked as related to #601

marked as related to #601
PlasticDigits commented 2026-08-23 12:55:20 +00:00 (Migrated from gitlab.com)

mentioned in merge request !1126

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

Choice: option 1 — accept router hops as untaxed and disclose.

Not “maybe later.” Written as T592-13 / C593-14 / R607-1–R607-8.

  • Pair-direct Send+Swap / pair→non-exempt EOA still pay buy/sell (T592-2 / T592-3).
  • Official multi-hop, hybrid-on-router, permissionless 1-op execute_swap_operations, and invoice wrap-routes via the router are Honest.
  • H-01 + #596 held. No classify / pair / router wasm change. Live 11611 does not need a migrate for this close.
  • Contract implement follow-up waived (disclose-only). poc_router_exemption_full_tax_bypass stays as a documented property.
  • #603 is no longer blocked by an unwritten C-2 choice. Any importer must keep T592-13 (do not promise “bps on every official Swap”).

MR: !1126 · playbook: skills/AGENTS_COMMUNITY_TAX_ROUTER.md · make verify-issue-607

**Choice: option 1 — accept router hops as untaxed and disclose.** Not “maybe later.” Written as **T592-13** / **C593-14** / **R607-1–R607-8**. - Pair-direct `Send+Swap` / pair→non-exempt EOA still pay buy/sell (**T592-2** / **T592-3**). - Official multi-hop, hybrid-on-router, permissionless 1-op `execute_swap_operations`, and invoice wrap-routes via the router are **Honest**. - H-01 + #596 held. No classify / pair / router wasm change. Live 11611 does not need a migrate for this close. - Contract implement follow-up **waived** (disclose-only). `poc_router_exemption_full_tax_bypass` stays as a documented property. - [#603](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/603) is no longer blocked by an unwritten C-2 choice. Any importer must keep T592-13 (do not promise “bps on every official Swap”). MR: !1126 · playbook: `skills/AGENTS_COMMUNITY_TAX_ROUTER.md` · `make verify-issue-607`
PlasticDigits commented 2026-08-23 12:55:29 +00:00 (Migrated from gitlab.com)

mentioned in issue #603

mentioned in issue #603
PlasticDigits commented 2026-08-23 12:59:26 +00:00 (Migrated from gitlab.com)

mentioned in commit 5557f839e9

mentioned in commit 5557f839e98fd83d5a17c8bc5a8b9b8e1bd3dd0f
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-08-23 12:59:27 +00:00
PlasticDigits commented 2026-08-23 13:05:03 +00:00 (Migrated from gitlab.com)

Sanity check of !1126 (merged) vs design-close acceptance.

Acceptance: met. Option 1 is recorded on this issue. T592-13 / C593-14 / R607 written. Implement follow-up waived. No pair/router wasm change (tax.rs comments only). make verify-issue-607 6/6.

Problem found and fixed after merge: SwapPage.tsx declared communityTaxHint twice (identical blocks). verify-issue-607 does not run tsc -b, so it stayed green. Pre-commit tsc --noEmit uses the empty root tsconfig.json and also missed it. Fixed on !1125 (fix(frontend): drop duplicate communityTaxHint on Swap).

Still unchecked (manual):

  • Create/Manage pair-direct copy visible
  • Swap pair-direct sell of a 11611 token: Sell tax extra + Max leaves room for extra-debit
  • Swap multi-hop: Route skips buy/sell tax + Max is full CW20
  • Trade market pair-direct vs router-ops hints match

#603 importer is not blocked by an unwritten C-2 choice; importers must keep T592-13.

Sanity check of !1126 (merged) vs design-close acceptance. **Acceptance:** met. Option 1 is recorded on this issue. T592-13 / C593-14 / R607 written. Implement follow-up waived. No pair/router wasm change (`tax.rs` comments only). `make verify-issue-607` **6/6**. **Problem found and fixed after merge:** `SwapPage.tsx` declared `communityTaxHint` twice (identical blocks). `verify-issue-607` does not run `tsc -b`, so it stayed green. Pre-commit `tsc --noEmit` uses the empty root `tsconfig.json` and also missed it. Fixed on !1125 (`fix(frontend): drop duplicate communityTaxHint on Swap`). **Still unchecked (manual):** - Create/Manage pair-direct copy visible - Swap pair-direct sell of a 11611 token: `Sell tax extra` + Max leaves room for extra-debit - Swap multi-hop: `Route skips buy/sell tax` + Max is full CW20 - Trade market pair-direct vs router-ops hints match #603 importer is not blocked by an unwritten C-2 choice; importers must keep T592-13.
PlasticDigits commented 2026-08-23 13:05:05 +00:00 (Migrated from gitlab.com)

mentioned in commit 666e985db3

mentioned in commit 666e985db32b6105780c6d2d3d4e61300d87ca4d
PlasticDigits commented 2026-08-23 13:05:30 +00:00 (Migrated from gitlab.com)

mentioned in issue #612

mentioned in issue #612
PlasticDigits commented 2026-08-23 13:05:32 +00:00 (Migrated from gitlab.com)

marked as related to #612

marked as related to #612
PlasticDigits (Migrated from gitlab.com) reopened this issue 2026-08-24 00:16:44 +00:00
PlasticDigits commented 2026-08-24 00:16:45 +00:00 (Migrated from gitlab.com)

Option 1 is not acceptable. All swaps that go through a buy/sell pair including hybrid and multihop must charge the tax. Investigate an improved version of Option 2.

Option 1 is not acceptable. All swaps that go through a buy/sell pair including hybrid and multihop must charge the tax. Investigate an improved version of Option 2.
PlasticDigits commented 2026-08-24 00:28:58 +00:00 (Migrated from gitlab.com)

mentioned in commit 816ae9afdf

mentioned in commit 816ae9afdf34370aab1a5e0f936b8d47e8b5e77d
PlasticDigits commented 2026-08-24 00:29:00 +00:00 (Migrated from gitlab.com)

mentioned in merge request !1127

mentioned in merge request !1127
PlasticDigits commented 2026-08-24 00:29:13 +00:00 (Migrated from gitlab.com)

Choice (supersedes option 1): improved option 2 — tax the original trader on official-router hops.

Not “maybe later.” Written as T592-13 / C593-14 / R607-1–R607-8.

What “improved” means vs the issue’s raw option 2:

  • Honor Cw20HookMsg::Swap.trader only when from is the stamped config.router. Pair-direct extra-debits from and ignores a spoofed victim trader. Missing / protocol-exempt / self trader → RouterTraderRequired (fail closed). Official router wasm already sets trader for fee discount — no router FoT math, no hop InsufficientForSellTax.
  • Buy-leg specified: pair→router stays 1:1 (T592-1); official router→non-exempt is buy outbound split.
  • Hybrid / #596 stays on. H-01 held (no pair/router swap-math change).

Implement: !1127 · playbook: skills/AGENTS_COMMUNITY_TAX_ROUTER.md · make verify-issue-607 8/8.

Live columbus-5 11611 still runs pre-option-2 wasm until CMM store + migrate. #603 importers may promise “bps on every official Swap” only after that wasm.

**Choice (supersedes option 1): improved option 2 — tax the original trader on official-router hops.** Not “maybe later.” Written as **T592-13** / **C593-14** / **R607-1–R607-8**. What “improved” means vs the issue’s raw option 2: - Honor `Cw20HookMsg::Swap.trader` **only** when `from` is the stamped `config.router`. Pair-direct extra-debits `from` and ignores a spoofed victim `trader`. Missing / protocol-exempt / self trader → `RouterTraderRequired` (fail closed). Official router wasm already sets `trader` for fee discount — no router FoT math, no hop `InsufficientForSellTax`. - Buy-leg specified: pair→router stays 1:1 (**T592-1**); official router→non-exempt is buy outbound split. - Hybrid / #596 stays on. H-01 held (no pair/router swap-math change). Implement: !1127 · playbook: `skills/AGENTS_COMMUNITY_TAX_ROUTER.md` · `make verify-issue-607` **8/8**. Live columbus-5 **11611** still runs pre-option-2 wasm until CMM store + migrate. #603 importers may promise “bps on every official Swap” only after that wasm.
PlasticDigits commented 2026-08-24 00:35:16 +00:00 (Migrated from gitlab.com)

mentioned in issue #615

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

marked as related to #615

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

mentioned in merge request !1131

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

mentioned in commit cb174fbba1

mentioned in commit cb174fbba1f60d6b6bf40522dcdbe9a14b2763a7
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-08-24 02:42:00 +00:00
PlasticDigits commented 2026-08-24 02:44:23 +00:00 (Migrated from gitlab.com)

mentioned in commit aa8991cf02

mentioned in commit aa8991cf025a6e90947b8aab0bc85be987ad2080
PlasticDigits commented 2026-08-24 02:45:16 +00:00 (Migrated from gitlab.com)

mentioned in commit 574793b4ef

mentioned in commit 574793b4efcce6069c85b07e63a93d7b0a0c647b
PlasticDigits commented 2026-08-24 03:01:15 +00:00 (Migrated from gitlab.com)

marked as related to #616

marked as related to #616
PlasticDigits commented 2026-08-24 03:01:15 +00:00 (Migrated from gitlab.com)

mentioned in issue #616

mentioned in issue #616
PlasticDigits commented 2026-08-24 03:01:42 +00:00 (Migrated from gitlab.com)

Merge sanity (!1127 landed on main; CI not waited).

Automated: make verify-issue-607 8/8 on the integrated tip (docs T592-13 / R607 option 2, extra-debit Max + Create/Manage copy, token hop classify + extra-debit, inverted PoC). make verify-issue-615 also re-ran #607 and passed.

Acceptance vs live

  • In-repo classify honors Swap.trader only when from == config.router; pair-direct ignores spoofed trader; missing / protocol-exempt trader fail-closes (RouterTraderRequired). Buy: pair→router 1:1; official router→user outbound split. Hybrid stays on. H-01 held.
  • Columbus-5 11611 still runs pre-option-2 wasm until CMM store + migrate. Advertised “bps on every official Swap” is not live until that migrate.
  • Manual Swap/Trade/Create QA from the issue test plan was not run here.

Post-merge ops (migrate + manual option-2 copy, not disclose): #616. #612 still describes option-1 Route skips buy/sell tax — that copy is stale after !1127.

**Merge sanity (!1127 landed on `main`; CI not waited).** Automated: `make verify-issue-607` **8/8** on the integrated tip (docs T592-13 / R607 option 2, extra-debit Max + Create/Manage copy, token hop classify + extra-debit, inverted PoC). `make verify-issue-615` also re-ran #607 and passed. **Acceptance vs live** - In-repo classify honors `Swap.trader` only when `from == config.router`; pair-direct ignores spoofed `trader`; missing / protocol-exempt trader fail-closes (`RouterTraderRequired`). Buy: pair→router 1:1; official router→user outbound split. Hybrid stays on. H-01 held. - Columbus-5 **11611** still runs pre-option-2 wasm until CMM store + migrate. Advertised “bps on every official Swap” is not live until that migrate. - Manual Swap/Trade/Create QA from the issue test plan was **not** run here. Post-merge ops (migrate + manual option-2 copy, not disclose): [#616](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/616). [#612](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/issues/612) still describes option-1 `Route skips buy/sell tax` — that copy is stale after !1127.
PlasticDigits commented 2026-08-24 05:54:09 +00:00 (Migrated from gitlab.com)

mentioned in issue #621

mentioned in issue #621
PlasticDigits commented 2026-08-24 05:54:11 +00:00 (Migrated from gitlab.com)

marked as related to #621

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

mentioned in issue #622

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

marked as related to #622

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

marked as related to #623

marked as related to #623
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:48 +00:00 (Migrated from gitlab.com)

marked as related to #626

marked as related to #626
PlasticDigits commented 2026-08-25 02:04:15 +00:00 (Migrated from gitlab.com)

mentioned in issue #633

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

mentioned in issue #690

mentioned in issue #690
PlasticDigits commented 2026-08-30 10:20:11 +00:00 (Migrated from gitlab.com)

mentioned in issue #710

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