feat: audit hardening bundle — M-2/M-3/M-8/M-12–14/M-19 + L-8–10/L-16/L-20/L-21 #25

Closed
opened 2026-08-08 04:40:23 +00:00 by PlasticDigits · 14 comments
PlasticDigits commented 2026-08-08 04:40:23 +00:00 (Migrated from gitlab.com)

Summary

Implement the recommended fixes for the following items from audits/INTERNAL_KIMIK3_1786162831.md, bundled as one delivery track:

ID Short title
M-2 Dust withdraw: revert when v_out == 0
M-3 Dust deposit: revert when ust1_out == 0
M-8 cw20-mintable fork: UpdateMinter(None) must delete MINTERS map entry
M-12 BSC provider + tick-level timeouts
M-13 Terra account JSON: fail hard on missing/unparseable sequence / account_number
M-14 Adaptive gas price (query node min; max(configured, network))
M-19 Oracle-service network-path tests + listed coverage backfills
L-8 .gitignore .env.*; gitleaks allowlist hygiene
L-9 Liveness mutex: avoid .expect("poisoned") abort
L-10 Graceful shutdown on SIGTERM
L-16 Add /healthz or fix README that implies HTTP health checks
L-20 Strengthen ust1-common proptest/fuzz / u128::MAX-scale edges
L-21 Instantiate guard: bridged vFDUSD decimals ≥ UST1 decimals for 10^(D-U) math

Current codebase

Window dust (M-2 / M-3)

  • contracts/ust1-window/src/contract.rs deposit / withdraw compute outputs via ust1_common::math and proceed without a zero-output guard.
  • Withdraw has min_vfdusd_out (may be 0); deposit has no min-out (H-1 separate).
  • Forked cw20-mintable removed zero-amount guards ⇒ Mint(0) / Transfer(0) can succeed while user loses principal or burns UST1 for nothing.

Minter bookkeeping (M-8)

  • Dependency: git cw20-mintable @ pinned rev (Cargo.lock).
  • Upstream deletes minter map entry on UpdateMinter(None); fork leaves stale MINTERS metadata.

Oracle service hardening (M-12 / M-13 / M-14 / L-9 / L-10 / L-16)

  • oracle-service/src/bsc.rs: Alloy HTTP provider without explicit timeouts; no tokio::time::timeout around run_once.
  • terra_tx.rs: sequence / account_number fall back to 0 via unwrap_or; fixed DEFAULT_GAS_PRICE 0.015 uluna/gas.
  • main.rs: liveness.lock().expect("poisoned"); infinite loop, no tokio::signal handler despite feature availability.
  • README claims structured logs / liveness alerts; implies HTTP health at lines discussing health — no /healthz listener today.

Hygiene & tests (L-8 / M-19 / L-20 / L-21)

  • .gitignore lists .env only (not .env.*).
  • Oracle-service terra_tx / evm_rpc / bsc lack automated HTTP tests (M-19 / TEST-18); window governance / withdraw stale+rolling edges thin (TEST-6/7/11).
  • ust1-common has some proptest; audit asks more differential / u128::MAX edges (L-20).
  • Window instantiate does not assert token decimal relationship for math scaling (L-21). Note: mainnet Terra vFDUSD and UST1 are both 6 decimals per DEPLOYMENT — guard should still encode the invariant for future misconfig.

Why this is needed

  1. M-2/M-3: Dust paths turn successful txs into silent fund destruction given the mintable fork’s zero-amount behavior.
  2. M-8: Stale minter metadata breaks the “drop governance self-mint after bootstrap” story (H-2 follow-on) and diverges from upstream safety.
  3. M-12–M-14: Hung RPCs, silent bad account parses, and rigid gas price cause false ticks / stuck operators — same reliability class as C-3.
  4. M-19/L-20: Critical off-chain and math edges are under-tested relative to contract multitests.
  5. L-8/L-9/L-10/L-16: Ops hygiene — secret file patterns, crash-on-poison, unclean SIGTERM, missing or misdocumented health endpoint.
  6. L-21: Decimal inversion would break deposit/withdraw scaling assumptions; cheap instantiate assert.

Constraints / guardrails

  1. Zero-output guards must revert the whole cw20 receive (no partial treasury forward / burn).
  2. M-8 fix may require a cw20-mintable fork PR + rev bump in this repo — do not vendor a second copy ad hoc.
  3. Timeouts: fail the tick, do not panic the process; keep HTTPS-only and redaction habits.
  4. Account parse: fail hard with operator-visible error; support BaseAccount / common vesting wrappers explicitly if present on columbus-5.
  5. Gas: never pay below network minimum; allow configured floor via env; document.
  6. /healthz if added: liveness-oriented (process up); do not claim on-chain freshness unless C-3 confirmation is wired — or expose separate ready semantics carefully.
  7. L-21: reject instantiate (or migrate) when decimal invariant fails; do not silently scale wrong.
  8. No scope creep into H-1 (min_ust1_out / fee cap), C-1/C-2/C-3, or H-3 defaults (tracked elsewhere) except shared test helpers.
  9. Keep changes minimal and reviewed per area; prefer one MR with clear commits or stacked MRs if size demands.

Relevant files

  • contracts/ust1-window/src/contract.rs, error.rs, multitest.rs
  • cw20-mintable fork repo (external) + Cargo.lock pin
  • oracle-service/src/{bsc,terra_tx,main,config,liveness,evm_rpc}.rs
  • oracle-service test modules / wiremock fixtures
  • smartcontracts-terraclassic/packages/ust1-common/src/math.rs (+ tests)
  • .gitignore, gitleaks config / allowlist if present
  • README.md, docs/DEPLOYMENT.md

  1. M-2/M-3: After math, if v_out.is_zero() / ust1_out.is_zero() { return Err(...) } before state mutation / messages; multitest dust cases.
  2. M-8: Port upstream delete-on-None; add fork test; bump git rev.
  3. M-12: Set transport timeouts on Alloy/reqwest; wrap run_once in tokio::time::timeout.
  4. M-13: Replace unwrap_or(0) with errors; parse known account type shapes.
  5. M-14: Query LCD/node min gas price (or parameterized env with network probe); max(configured, network).
  6. L-9: lock().unwrap_or_else(|p| p.into_inner()) or parking_lot::Mutex.
  7. L-10: tokio::select! on SIGTERM/SIGINT vs sleep/tick; finish or abort in-flight tick with log.
  8. L-16: Prefer small axum/hyper /healthz → 200 when process is running; update README accurately. If HTTP is rejected product-wise, remove README implication instead — pick one, do not leave the contradiction.
  9. L-8: Ignore .env.*; fix gitleaks FPs via allowlist for public docs addresses / generated target paths.
  10. M-19: wiremock tests for broadcast confirm hooks (share with C-3 if overlapping), consensus HTTP, bsc call; backfill window stale-oracle withdraw + rolling edge + governance msg tests as listed in audit.
  11. L-20: Add proptest/fuzz cases at extreme magnitudes; document any intentional rejects.
  12. L-21: Query CW20 token info decimals at instantiate (and migrate if applicable); require vfdusd_decimals >= ust1_decimals (or the exact invariant ust1_common math assumes).

Acceptance criteria

  • M-2/M-3: dust deposit/withdraw revert; multitests green.
  • M-8: UpdateMinter(addr, None) removes map entry; rev bumped; test in fork or integration.
  • M-12: hung RPC cannot block past configured tick timeout.
  • M-13: malformed account JSON fails with clear error (no sequence=0 surprise).
  • M-14: gas fee uses at least network minimum when probe available; fallback documented.
  • M-19: automated tests exist for previously untested oracle-service network modules; named window gaps backfilled or explicitly filed as follow-ups with tests landed for the ones claimed done.
  • L-8: .env.* ignored; gitleaks clean on intentional scan path.
  • L-9: poisoned mutex does not abort via expect.
  • L-10: SIGTERM exits gracefully in manual/automated test.
  • L-16: /healthz shipped or docs fixed — no false HTTP health claim.
  • L-20: new property/edge tests merged.
  • L-21: instantiate rejects decimal inversion; happy path with 6/6 still works.

Test plan (all paths)

Contracts

  1. Deposit dust → err; balances unchanged.
  2. Withdraw dust (v_out==0, min_out==0) → err; no burn.
  3. Normal deposit/withdraw unchanged.
  4. Instantiate decimals OK vs fail (L-21).
  5. Governance/pause/stale/rolling edge backfills (M-19 subset).

Fork (M-8)

  1. Add minter → remove via UpdateMinter None → query/map shows absent.
  2. Re-add works.

Oracle service

  1. M-12: mock hang → timeout error; loop continues.
  2. M-13: missing sequence → Err; valid BaseAccount → Ok.
  3. M-14: network min > configured → higher fee used; network lower → configured used.
  4. L-9: force poison in test → into_inner path survives.
  5. L-10: signal → process exits 0 after cleanup log.
  6. L-16: GET /healthz → 200 (if implemented).
  7. M-19: wiremock consensus + broadcast paths.

Common (L-20)

  1. proptest invariants at max-ish inputs; known overflow rejects.

Repo hygiene (L-8)

  1. git check-ignore -v .env.local; gitleaks on docs without FP noise.

Test plan (attack / hack / abuse vectors)

  1. Dust grief (M-2/M-3): attacker crafts tiny amounts expecting successful zero mint/burn — must revert; no treasury free deposit credit without mint; no UST1 burn without vFDUSD out.
  2. Minter resurrection confusion (M-8): remove minter then rely on stale map for auth — auth must use real minter rules; metadata must not imply rights.
  3. RPC hang DoS (M-12): one bad URL stalls forever — tick timeout + consensus fail-closed.
  4. Account parse to zero (M-13): malicious/weird LCD JSON yielding sequence 0 → rejected signatures / wrong account — fail hard instead.
  5. Gas underpay (M-14): network bumps min gas → every tick fails — adaptive price prevents permanent silent failure mode.
  6. Health wash (L-16): /healthz must not report OK for “on-chain rate fresh” unless truly checked (avoid C-3-class lie); process-up only is OK if documented.
  7. Env secret commit (L-8): .env.production accidentally added — ignored by git.
  8. Decimal inversion (L-21): deploy with UST1 decimals > vFDUSD decimals → instantiate fails before TVL.
  9. Mutex poison kill (L-9): panic in one lock path taking down the oracle loop — mitigated.
  10. SIGTERM mid-broadcast (L-10): unclean kill leaving unclear liveness — graceful shutdown logs; C-3 still owns confirmation truth.

Verification criteria

  • All listed IDs have a merged code or docs change with tests where applicable.
  • cargo test / clippy / pre-commit green.
  • DEPLOYMENT/README updated for healthz, timeouts, gas env, decimal invariant.
  • Bundle closable when checklist above is complete; leftover M-19 items must be explicitly split if deferred.
## Summary Implement the recommended fixes for the following items from [`audits/INTERNAL_KIMIK3_1786162831.md`](../audits/INTERNAL_KIMIK3_1786162831.md), bundled as one delivery track: | ID | Short title | |----|-------------| | **M-2** | Dust withdraw: revert when `v_out == 0` | | **M-3** | Dust deposit: revert when `ust1_out == 0` | | **M-8** | `cw20-mintable` fork: `UpdateMinter(None)` must delete `MINTERS` map entry | | **M-12** | BSC provider + tick-level timeouts | | **M-13** | Terra account JSON: fail hard on missing/unparseable sequence / account_number | | **M-14** | Adaptive gas price (query node min; `max(configured, network)`) | | **M-19** | Oracle-service network-path tests + listed coverage backfills | | **L-8** | `.gitignore` `.env.*`; gitleaks allowlist hygiene | | **L-9** | Liveness mutex: avoid `.expect("poisoned")` abort | | **L-10** | Graceful shutdown on SIGTERM | | **L-16** | Add `/healthz` **or** fix README that implies HTTP health checks | | **L-20** | Strengthen `ust1-common` proptest/fuzz / `u128::MAX`-scale edges | | **L-21** | Instantiate guard: bridged vFDUSD decimals ≥ UST1 decimals for `10^(D-U)` math | --- ## Current codebase ### Window dust (M-2 / M-3) - `contracts/ust1-window/src/contract.rs` `deposit` / `withdraw` compute outputs via `ust1_common::math` and proceed without a zero-output guard. - Withdraw has `min_vfdusd_out` (may be 0); deposit has no min-out (H-1 separate). - Forked `cw20-mintable` removed zero-amount guards ⇒ `Mint(0)` / `Transfer(0)` can succeed while user loses principal or burns UST1 for nothing. ### Minter bookkeeping (M-8) - Dependency: git `cw20-mintable` @ pinned rev (`Cargo.lock`). - Upstream deletes minter map entry on `UpdateMinter(None)`; fork leaves stale `MINTERS` metadata. ### Oracle service hardening (M-12 / M-13 / M-14 / L-9 / L-10 / L-16) - `oracle-service/src/bsc.rs`: Alloy HTTP provider without explicit timeouts; no `tokio::time::timeout` around `run_once`. - `terra_tx.rs`: `sequence` / `account_number` fall back to `0` via `unwrap_or`; fixed `DEFAULT_GAS_PRICE` `0.015` uluna/gas. - `main.rs`: `liveness.lock().expect("poisoned")`; infinite loop, no `tokio::signal` handler despite feature availability. - README claims structured logs / liveness alerts; implies HTTP health at lines discussing health — **no `/healthz` listener** today. ### Hygiene & tests (L-8 / M-19 / L-20 / L-21) - `.gitignore` lists `.env` only (not `.env.*`). - Oracle-service `terra_tx` / `evm_rpc` / `bsc` lack automated HTTP tests (M-19 / TEST-18); window governance / withdraw stale+rolling edges thin (TEST-6/7/11). - `ust1-common` has some proptest; audit asks more differential / `u128::MAX` edges (L-20). - Window instantiate does not assert token decimal relationship for math scaling (L-21). **Note:** mainnet Terra vFDUSD and UST1 are both 6 decimals per DEPLOYMENT — guard should still encode the invariant for future misconfig. --- ## Why this is needed 1. **M-2/M-3:** Dust paths turn successful txs into silent fund destruction given the mintable fork’s zero-amount behavior. 2. **M-8:** Stale minter metadata breaks the “drop governance self-mint after bootstrap” story (H-2 follow-on) and diverges from upstream safety. 3. **M-12–M-14:** Hung RPCs, silent bad account parses, and rigid gas price cause false ticks / stuck operators — same reliability class as C-3. 4. **M-19/L-20:** Critical off-chain and math edges are under-tested relative to contract multitests. 5. **L-8/L-9/L-10/L-16:** Ops hygiene — secret file patterns, crash-on-poison, unclean SIGTERM, missing or misdocumented health endpoint. 6. **L-21:** Decimal inversion would break deposit/withdraw scaling assumptions; cheap instantiate assert. --- ## Constraints / guardrails 1. Zero-output guards must **revert** the whole cw20 receive (no partial treasury forward / burn). 2. M-8 fix may require a **cw20-mintable fork PR + rev bump** in this repo — do not vendor a second copy ad hoc. 3. Timeouts: fail the tick, do not panic the process; keep HTTPS-only and redaction habits. 4. Account parse: fail hard with operator-visible error; support BaseAccount / common vesting wrappers explicitly if present on columbus-5. 5. Gas: never pay below network minimum; allow configured floor via env; document. 6. `/healthz` if added: **liveness-oriented** (process up); do not claim on-chain freshness unless C-3 confirmation is wired — or expose separate ready semantics carefully. 7. L-21: reject instantiate (or migrate) when decimal invariant fails; do not silently scale wrong. 8. No scope creep into H-1 (`min_ust1_out` / fee cap), C-1/C-2/C-3, or H-3 defaults (tracked elsewhere) except shared test helpers. 9. Keep changes minimal and reviewed per area; prefer one MR with clear commits or stacked MRs if size demands. --- ## Relevant files - `contracts/ust1-window/src/contract.rs`, `error.rs`, `multitest.rs` - `cw20-mintable` fork repo (external) + `Cargo.lock` pin - `oracle-service/src/{bsc,terra_tx,main,config,liveness,evm_rpc}.rs` - `oracle-service` test modules / wiremock fixtures - `smartcontracts-terraclassic/packages/ust1-common/src/math.rs` (+ tests) - `.gitignore`, gitleaks config / allowlist if present - `README.md`, `docs/DEPLOYMENT.md` --- ## Recommended direction 1. **M-2/M-3:** After math, `if v_out.is_zero() / ust1_out.is_zero() { return Err(...) }` before state mutation / messages; multitest dust cases. 2. **M-8:** Port upstream delete-on-None; add fork test; bump git rev. 3. **M-12:** Set transport timeouts on Alloy/reqwest; wrap `run_once` in `tokio::time::timeout`. 4. **M-13:** Replace `unwrap_or(0)` with errors; parse known account type shapes. 5. **M-14:** Query LCD/node min gas price (or parameterized env with network probe); `max(configured, network)`. 6. **L-9:** `lock().unwrap_or_else(|p| p.into_inner())` or `parking_lot::Mutex`. 7. **L-10:** `tokio::select!` on SIGTERM/SIGINT vs sleep/tick; finish or abort in-flight tick with log. 8. **L-16:** Prefer small axum/hyper `/healthz` → 200 when process is running; update README accurately. If HTTP is rejected product-wise, **remove** README implication instead — pick one, do not leave the contradiction. 9. **L-8:** Ignore `.env.*`; fix gitleaks FPs via allowlist for public docs addresses / generated target paths. 10. **M-19:** wiremock tests for broadcast confirm hooks (share with C-3 if overlapping), consensus HTTP, bsc call; backfill window stale-oracle withdraw + rolling edge + governance msg tests as listed in audit. 11. **L-20:** Add proptest/fuzz cases at extreme magnitudes; document any intentional rejects. 12. **L-21:** Query CW20 token info decimals at instantiate (and migrate if applicable); require `vfdusd_decimals >= ust1_decimals` (or the exact invariant `ust1_common` math assumes). --- ## Acceptance criteria - [ ] M-2/M-3: dust deposit/withdraw revert; multitests green. - [ ] M-8: `UpdateMinter(addr, None)` removes map entry; rev bumped; test in fork or integration. - [ ] M-12: hung RPC cannot block past configured tick timeout. - [ ] M-13: malformed account JSON fails with clear error (no sequence=0 surprise). - [ ] M-14: gas fee uses at least network minimum when probe available; fallback documented. - [ ] M-19: automated tests exist for previously untested oracle-service network modules; named window gaps backfilled or explicitly filed as follow-ups with tests landed for the ones claimed done. - [ ] L-8: `.env.*` ignored; gitleaks clean on intentional scan path. - [ ] L-9: poisoned mutex does not abort via expect. - [ ] L-10: SIGTERM exits gracefully in manual/automated test. - [ ] L-16: `/healthz` shipped **or** docs fixed — no false HTTP health claim. - [ ] L-20: new property/edge tests merged. - [ ] L-21: instantiate rejects decimal inversion; happy path with 6/6 still works. --- ## Test plan (all paths) ### Contracts 1. Deposit dust → err; balances unchanged. 2. Withdraw dust (`v_out==0`, `min_out==0`) → err; no burn. 3. Normal deposit/withdraw unchanged. 4. Instantiate decimals OK vs fail (L-21). 5. Governance/pause/stale/rolling edge backfills (M-19 subset). ### Fork (M-8) 1. Add minter → remove via UpdateMinter None → query/map shows absent. 2. Re-add works. ### Oracle service 1. M-12: mock hang → timeout error; loop continues. 2. M-13: missing sequence → Err; valid BaseAccount → Ok. 3. M-14: network min > configured → higher fee used; network lower → configured used. 4. L-9: force poison in test → into_inner path survives. 5. L-10: signal → process exits 0 after cleanup log. 6. L-16: GET `/healthz` → 200 (if implemented). 7. M-19: wiremock consensus + broadcast paths. ### Common (L-20) 1. proptest invariants at max-ish inputs; known overflow rejects. ### Repo hygiene (L-8) 1. `git check-ignore -v .env.local`; gitleaks on docs without FP noise. --- ## Test plan (attack / hack / abuse vectors) 1. **Dust grief (M-2/M-3):** attacker crafts tiny amounts expecting successful zero mint/burn — must revert; no treasury free deposit credit without mint; no UST1 burn without vFDUSD out. 2. **Minter resurrection confusion (M-8):** remove minter then rely on stale map for auth — auth must use real minter rules; metadata must not imply rights. 3. **RPC hang DoS (M-12):** one bad URL stalls forever — tick timeout + consensus fail-closed. 4. **Account parse to zero (M-13):** malicious/weird LCD JSON yielding sequence 0 → rejected signatures / wrong account — fail hard instead. 5. **Gas underpay (M-14):** network bumps min gas → every tick fails — adaptive price prevents permanent silent failure mode. 6. **Health wash (L-16):** `/healthz` must not report OK for “on-chain rate fresh” unless truly checked (avoid C-3-class lie); process-up only is OK if documented. 7. **Env secret commit (L-8):** `.env.production` accidentally added — ignored by git. 8. **Decimal inversion (L-21):** deploy with UST1 decimals > vFDUSD decimals → instantiate fails before TVL. 9. **Mutex poison kill (L-9):** panic in one lock path taking down the oracle loop — mitigated. 10. **SIGTERM mid-broadcast (L-10):** unclean kill leaving unclear liveness — graceful shutdown logs; C-3 still owns confirmation truth. --- ## Verification criteria - All listed IDs have a merged code or docs change with tests where applicable. - `cargo test` / clippy / pre-commit green. - DEPLOYMENT/README updated for healthz, timeouts, gas env, decimal invariant. - Bundle closable when checklist above is complete; leftover M-19 items must be explicitly split if deferred.
PlasticDigits commented 2026-08-08 04:57:08 +00:00 (Migrated from gitlab.com)

mentioned in commit af2f3ddac8

mentioned in commit af2f3ddac8cfd9ba7246ef235190846ec191b0d9
PlasticDigits commented 2026-08-08 04:57:36 +00:00 (Migrated from gitlab.com)

mentioned in merge request !41

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

mentioned in merge request !44

mentioned in merge request !44
PlasticDigits commented 2026-08-08 05:10:49 +00:00 (Migrated from gitlab.com)

MR verification (issue #25 / !41 + !44)

Verdict: PASS_WITH_NOTES — duplicate MRs !41 and !44 both tip 1ee515a; merging !41 and closing !44 as duplicate.

Local tests (tip 1ee515a)

  • cargo test -p ust1-window --lib — 20/20 ✅
  • cargo test -p ust1-common --lib — 22/22 ✅
  • cargo test -p ust1-oracle-service — 30/30 ✅
  • cargo clippy -p ust1-window -p ust1-common -p ust1-oracle-service -- -D warnings — ✅
  • git check-ignore -v .env.local — ✅

Problems / gaps before fully closing

  1. M-8: cw20-mintable rev bumped to 8a50c36 but no in-repo test for UpdateMinter(None) deleting MINTERS (AC: "fork or integration").
  2. M-19: bsc.rs has transport timeouts but no dedicated wiremock/hang test (terra_tx + evm_rpc covered).
  3. L-10: SIGTERM handler implemented; manual probe + automated test still outstanding.
  4. CI: Historical GitLab pipeline on these branches ran secret_detection only (full rust job arrives via !43).
  5. Expect rebase conflicts when stacking onto other oracle/window MRs (!35/!37/!40/!43).
## MR verification (issue #25 / !41 + !44) **Verdict: PASS_WITH_NOTES** — duplicate MRs !41 and !44 both tip `1ee515a`; merging **!41** and closing **!44** as duplicate. ### Local tests (tip `1ee515a`) - `cargo test -p ust1-window --lib` — 20/20 ✅ - `cargo test -p ust1-common --lib` — 22/22 ✅ - `cargo test -p ust1-oracle-service` — 30/30 ✅ - `cargo clippy -p ust1-window -p ust1-common -p ust1-oracle-service -- -D warnings` — ✅ - `git check-ignore -v .env.local` — ✅ ### Problems / gaps before fully closing 1. **M-8:** `cw20-mintable` rev bumped to `8a50c36` but no in-repo test for `UpdateMinter(None)` deleting `MINTERS` (AC: "fork or integration"). 2. **M-19:** `bsc.rs` has transport timeouts but no dedicated wiremock/hang test (terra_tx + evm_rpc covered). 3. **L-10:** SIGTERM handler implemented; manual probe + automated test still outstanding. 4. **CI:** Historical GitLab pipeline on these branches ran `secret_detection` only (full `rust` job arrives via !43). 5. Expect rebase conflicts when stacking onto other oracle/window MRs (!35/!37/!40/!43).
PlasticDigits commented 2026-08-08 05:17:26 +00:00 (Migrated from gitlab.com)

mentioned in commit 4cf6e4515892159c5a1b09d956e4fafa9f8f7826

mentioned in commit 4cf6e4515892159c5a1b09d956e4fafa9f8f7826
PlasticDigits commented 2026-08-08 05:20:11 +00:00 (Migrated from gitlab.com)

mentioned in commit 4903c83ba3

mentioned in commit 4903c83ba36afdc11f813eb86a0db5c5b306e4aa
PlasticDigits commented 2026-08-08 05:21:41 +00:00 (Migrated from gitlab.com)

mentioned in commit 9acb26818f

mentioned in commit 9acb26818f793ad0db8ccb45be2f2f9f7d934670
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-08-08 05:21:42 +00:00
PlasticDigits commented 2026-08-08 05:21:49 +00:00 (Migrated from gitlab.com)

MR !41 rebased onto main after !35 (C-3 ConfirmTx) merge and merged. Duplicate MR !44 closed.

MR !41 rebased onto main after !35 (C-3 ConfirmTx) merge and merged. Duplicate MR !44 closed.
PlasticDigits commented 2026-08-08 06:01:02 +00:00 (Migrated from gitlab.com)

mentioned in issue #26

mentioned in issue #26
PlasticDigits commented 2026-08-08 06:01:02 +00:00 (Migrated from gitlab.com)

marked as related to #26

marked as related to #26
PlasticDigits commented 2026-08-08 06:01:53 +00:00 (Migrated from gitlab.com)

mentioned in issue #28

mentioned in issue #28
PlasticDigits commented 2026-08-08 06:01:54 +00:00 (Migrated from gitlab.com)

marked as related to #28

marked as related to #28
PlasticDigits commented 2026-08-08 09:58:25 +00:00 (Migrated from gitlab.com)

mentioned in commit 695e577065

mentioned in commit 695e57706584abbdd69ad0fe01c934ddcfe8092c
PlasticDigits commented 2026-08-08 09:58:36 +00:00 (Migrated from gitlab.com)

mentioned in merge request !45

mentioned in merge request !45
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/ust1-window#25
No description provided.