Skip to content

fix: address #218, #221, #222, #224 - #345

Merged
techisigu merged 9 commits into
Zenith-options:mainfrom
Debbys-design:drips/218-221-222-224
Oct 24, 2026
Merged

techisigu merged 9 commits into
Zenith-options:mainfrom
Debbys-design:drips/218-221-222-224

Conversation

@Debbys-design

Copy link
Copy Markdown
Contributor

Summary

fix: address #218, #221, #222, #224

What was solved

#218 — Build the Nightly On-Chain/Off-Chain Vault Reconciliation and Drift Reporting Job

Add a scheduled and on-demand per-vault reconciliation job that treats on-chain vault state as source of truth, recomputes share supply, collateral balance, last finalized epoch id/NAV, pending queue counts, and cumulative fees, compares them against backend ledgers, and writes a per-field drift report with pass/fail/indeterminate status, metrics, and tolerance-based alerts — diagnostics only, no auto-correction.

Addressed:

  • Changed: src/lib/api/vaults.ts
  • Implement a reconciliation job runnable on a schedule and on-demand per vault
  • Recompute from chain state: total share supply, vault collateral balance, last finalized epoch id and NAV, pending deposit/withdrawal queue counts, cumulative fees distributed
  • Compare each recomputed value against backend ledger and write a reconciliation report record with per-field deltas and pass/fail status

#221 — Internationalize the Vault Surfaces With Locale-Aware NAV and Currency Formatting

Internationalize the vault surfaces by moving all user-visible vault strings into the existing message catalogs (namespaced to avoid collisions with the options-chain catalog), and add a shared locale-aware formatter module under src/lib/ that renders collateral amounts, high-precision NAV per share, share quantities, APY/percentages, fiat values, and epoch timestamps/durations using the active locale and the vault's collateral asset decimals. Add a non-English catalog synced through the existing Crowdin pipeline, and ensure high-precision values never lose significant digits.

Addressed:

  • Changed: crowdin.yml, messages/en.json, src/lib/format.ts
  • Move all user-visible vault strings (discovery, deposit/withdraw forms, epoch history, status labels, disclaimers, errors) into the message catalogs with ICU-friendly placeholders for counts and plurals (epoch and queue counts).
  • Namespace vault string keys by feature to avoid collisions with the options-chain catalog.
  • Add a shared locale-aware formatter module under src/lib/ keyed off the active locale and the vault's collateral asset decimals, covering collateral amounts, NAV per share, share quantities, APY/percentages, fiat-like values, and epoch timestamps/durations.

#222 — Wire Vault Contract Build, Deployment, and Artifact Publication Into CI and Release Please

Add a dedicated GitHub Actions workflow that builds the Rust/Soroban vault contract workspace to WASM with a pinned toolchain, runs contract tests, records the WASM hash, exports the contract spec/ABI as an artifact, and deploys to testnet on release/manual dispatch with a mainnet approval gate. Wire contract changes into release-please so they get changelog entries, and add local build/deploy helper scripts.

Addressed:

  • Changed: .github/workflows/ci.yml, release-please-config.json, .release-please-manifest.json
  • CI job builds the vault contract workspace to WASM with a pinned Rust/Soroban CLI toolchain and runs contract unit/fuzz-lite tests on every PR touching contracts/
  • Document deterministic/reproducible build settings and record the resulting WASM hash in CI output
  • Export contract spec/ABI as an artifact and check it into a versioned location or attach to the release so src/lib/api/vaults.ts type expectations can be verified

#224 — Implement a Timelock and Multisig Approval Workflow for Vault Parameter and Upgrade Changes

Add an on-chain governance workflow for vault parameter and upgrade changes: a proposal lifecycle (propose → multisig approvals → queue → mandatory delay → execute, plus cancel and expiry), configurable threshold/delay stored in vault storage and only changeable through the same workflow, typed privileged actions (fee bps, fee recipient, capacity limits, strategy weights/params, oracle config, upgrade authorization) reachable only via governance, events for every lifecycle stage consumable by the indexer, and backend/API exposure of pending/executed proposals (eta + approval count) for a read-only operator console view.

Addressed:

  • Changed: docs/governance-proposal-wizard.md, docs/security/invariants.md, ORDER_TICKET_BACKEND.md
  • Implement proposal lifecycle: propose → approvals by configured signer set → queue → mandatory delay → execute, plus cancel and expiry for stale proposals
  • Store configurable multisig threshold and delay per vault (and/or globally) in contract storage; these may only be changed through the same governance workflow
  • Only approved, timelocked proposals may modify fee bps, fee recipient, capacity limits, strategy weights/parameters, oracle configuration, and contract upgrade authorization

Changes

  • ORDER_TICKET_BACKEND.md (modify)
  • src/lib/api/vaults.ts (modify)
  • src/lib/format.ts (modify)
  • .release-please-manifest.json (modify)
  • release-please-config.json (modify)
  • crowdin.yml (modify)
  • .github/workflows/ci.yml (modify)
  • docs/governance-proposal-wizard.md (modify)
  • docs/security/invariants.md (modify)
  • messages/en.json (modify)

Approach

  1. Build the Nightly On-Chain/Off-Chain Vault Reconciliation and Drift Reporting Job #218 — Build the Nightly On-Chain/Off-Chain Vault Reconciliation and Drift Reporting Job (Changed: src/lib/api/vaults.ts)
  2. Internationalize the Vault Surfaces With Locale-Aware NAV and Currency Formatting #221 — Internationalize the Vault Surfaces With Locale-Aware NAV and Currency Formatting (Changed: crowdin.yml, messages/en.json, src/lib/format.ts)
  3. Wire Vault Contract Build, Deployment, and Artifact Publication Into CI and Release Please #222 — Wire Vault Contract Build, Deployment, and Artifact Publication Into CI and Release Please (Changed: .github/workflows/ci.yml, release-please-config.json, .release-please-manifest.json)
  4. Implement a Timelock and Multisig Approval Workflow for Vault Parameter and Upgrade Changes #224 — Implement a Timelock and Multisig Approval Workflow for Vault Parameter and Upgrade Changes (Changed: docs/governance-proposal-wizard.md, docs/security/invariants.md, ORDER_TICKET_BACKEND.md)

Issues

Closes #218
Closes #221
Closes #222
Closes #224

@drips-wave

drips-wave Bot commented Oct 21, 2026

Copy link
Copy Markdown

@Debbys-design Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

techisigu and others added 5 commits October 24, 2026 12:55
- .release-please-manifest.json: merged [markers] — model resolved the conflict markers
- docs/security/invariants.md: merged [markers] — model resolved the conflict markers
- messages/en.json: merged [markers] — model resolved the conflict markers
- release-please-config.json: merged [markers] — model resolved the conflict markers
- src/lib/api/vaults.ts: merged [markers] — model resolved the conflict markers

Co-authored-by: Simple Agent <agent@simple.dev>
- .github/workflows/ci.yml: merged [markers] — model resolved the conflict markers
- src/lib/api/vaults.ts: merged [markers] — model resolved the conflict markers

Co-authored-by: Simple Agent <agent@simple.dev>
- src/lib/api/vaults.ts: merged [markers] — model resolved the conflict markers

Co-authored-by: Simple Agent <agent@simple.dev>
- src/lib/api/vaults.ts: merged [markers] — model resolved the conflict markers

Co-authored-by: Simple Agent <agent@simple.dev>
- src/lib/api/vaults.ts: merged [markers] — model resolved the conflict markers

Co-authored-by: Simple Agent <agent@simple.dev>
@techisigu
techisigu merged commit bcf0bd1 into Zenith-options:main Oct 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants