deviant/Parameters/project-context.md
Local Dev 6130c0cab1 feat(asm): Potidaea swap-relay + tally refresh to 52,998
Prove the Potidaea platform-fee revenue model live on chipnet with two
end-to-end swap-relay tests, then sweep the cumulative chipnet-swap tally
from "17,000+" to the exact figure 52,998 across every referencing doc.

Snapshot 0239 (four revisions) captures the full arc — GMX Potidaea
(9,296 swaps · 5.47 M platform bits) → OpenMint Potidaea (26,599 swaps ·
15.02 M platform bits · 30.03 M founder bits · 44 swaps/sec peak · 2:1
founder/platform ratio matching ADR-0053 spec exactly). Client-added
platform-fee output at tx.outputs[3] — no covenant change required.

Ships the multi-source connectivity layer used throughout:
scripts/lib/chipnet-multisource.mjs (race local Fulcrum + BCHN RPC +
public electrums, chipnet-only endpoint list, wrong-network tip-guard,
belt-and-braces broadcast) and scripts/lib/chipnet-keystore.mjs (single
Keys/chipnet-keystore.json for all wallets, legacy per-file fallback).
Keys/ added to .gitignore.

Also: GMX/Game.X zero-bet-fee policy — chipnet-gmx-game-loop-test.mjs
now returns 0n from escrowFee() by default (feeAmount=0 on the escrow
covenant; already covered by the "if feeAmount > 0" gate at
GamePoolEscrowFlat.cash:54, no covenant change needed). Old formula
kept behind ARBITER_FEE_LEGACY=1 env flag.

Canonical tally table lives in
Parameters/ASM_Native/ASM-single-asset-throughput.md §4a; update it
first when the next throughput runs land, then grep-replace the exact
number across dependent files.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-14 01:39:41 +02:00

139 lines
23 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Here is the project context document. Use it as reference for our session.
> Synthesized from all 135 snapshot files in `snapshots/` (read oldest-first by modification date, `0001-init` → `0132-modest-...arithmetic-vote`). This is a condensed master reference — for primary detail consult the individual snapshot, `wiki/decisions.md` (ADRs), and `deviant_technical_spec_v2.7.md`.
---
## 1. Project overview and goals
**Deviant** is a non-custodial Bitcoin Cash (BCH) wallet plus an on-chain asset protocol (issuance, backing, and permissionless exchange) built on CashTokens and CashScript covenants. The author/owner is **Deviant** (a Bitcoin Cash, big-blocker / on-chain-scaling–aligned project). The thesis: Deviant's core distinction is *what it introduces* — **MBA** (assets with intrinsic, consensus-enforced BCH backing, unilaterally redeemable with no counterparty) and the **counterparty-free ASM** (permissionless swaps with no DEX/AMM/oracle/operator) — built *directly on Layer 1*, **eliminating trusted third parties wherever the chain can enforce a rule itself**. BCH's design — a UTXO model with native CashTokens and covenant introspection, proof-of-work, and large-block on-chain scaling — is the *enabling substrate* that makes these consensus-enforced *and* economical at scale; it is not itself the differentiator (other chains also run financial primitives on-chain, on different models, and it is unclear any other UTXO/PoW chain matches what CashScript enables here). The differentiator is the backing (MBA) and the counterparty-free exchange (ASM) Deviant adds on top.
The recurring design principle, stated explicitly in the voting work and applied throughout: **"What the chain CAN enforce, the chain SHOULD enforce."** A UI is a *reporter* of consensus facts, never an *authority*.
Core product pillars:
- **ASM (Automated Swap Mechanism)** — permissionless, BCH-backed asset swaps with no DEX/AMM/oracle/operator. Every asset UTXO is *self-backed* (carries its own BCH inside at a fixed rate); swaps are atomic single transactions enforced by consensus, not by coupled covenants. The protocol-as-immutable-liquidity-provider layer is branded **Poseidon** (deep as an ocean — always available, unlimited liquidity).
- **MBA (Minted Backed Asset)** — the backed-asset family. Each unit carries an intrinsic, consensus-enforced BCH backing redeemable unilaterally by the holder (no counterparty, oracle, or market needed). Sub-types: DEA (Direct Emission Asset / hard-backed), PLA (commodity), MCA (bond), MTA (tranche). *Naming runs dual-register, in parallel: technical docs use these expansions (Minted Backed Asset / Direct Emission Asset); broad-audience material uses Mathematically Backed Asset / Deviant Equilibrium Asset.*
- **NBA (Non-Backed Asset)** — assets with no per-unit consensus invariant: game currency (PTU), mineable coins (PTL), meme/tokens (MTU), NFT/collectibles (MTL). CDP-style stablecoins (DAI-shape) classify as **PTU** — *collateral backs the debt, not the token*.
- **DRA (Dynamic-Rate Asset)** — MBA whose backing rate is a transparent, published, deterministic function of contract state (bonding curve, escalating/decreasing fee, exponential/step/arithmetic ladders).
- **Event/prediction markets** — pari-mutuel "totes," oracle-settled bilateral escrows, and "Family D" collateralized binary-share markets (Polymarket-shape, CLOB + AMM).
- **On-chain governance — Athena (Athenae)** (goddess of wisdom and protection) — a bicameral-sortition voting system with anti-plutocracy economics, implemented as a stack of covenants (CitizenToken, ApplicationCovenant, RegistryState, BallotCovenant, EndorsementCovenant, ElderFreezeAction, ComplaintCovenant). The Tier-4 Elders are **Themis (Themidae)** (goddess of divine law/justice/order); documents use **Athenian Democracy** terminology (sortition, citizens, chambers) as accompanying synonyms.
- **The CosmoGenesis wallet shell** (*cosmo* = world/universe + *genesis* = birth) — a Capacitor + React app running the wallet core client-side in-WebView (non-custodial), with a four-tab IA: Main / Assets / **Avalanche** (create/mint) / **Apps** (dApp connectors + **Agora**, the asset launchpad, discovery, and swap/exchange marketplace — the space where users meet and trade). (**Orbital** = the asset listing / explorer — a market-cap-style index of all assets and their data, cf. coinmarketcap / cashtokensmarketcap.)
Process conventions: staged validation **regtest → chipnet → mainnet**; every milestone recorded as a numbered `snapshots/NNNN-*.md`; architectural decisions recorded as ADRs in `wiki/decisions.md`. The protocol's first end-to-end swap was validated on chipnet at snapshot 0008; 52,998 swaps have run since with zero exploits (canonical count: `ASM_Native/ASM-single-asset-throughput.md` §4a).
---
## 2. Key architectural decisions (chronological)
Early foundational pivots (snapshots 0001–0020):
- **0001–0003** — TS + CashScript SDK stack; OP_RETURN-tagged token design; regtest harness via `MockNetworkProvider` (no Docker).
- **0004 (ADR-0006)** — *Pivot to CashTokens.* OP_RETURN tagging abandoned; CashTokens FT becomes the consensus primitive, BCMR for metadata, rate floor raised to 1000 bits/unit. ADR-0004 superseded.
- **0007–0008** — *Self-backed UTXO model + reservoir model.* Each FT UTXO carries `tokenAmount × backingRateSats` of BCH inside it; redemption is a plain P2PKH spend (contract-free). Full FT supply (up to 2⁶³−1) is pre-minted at genesis into a contract "reservoir"; `claim()` drains it at the protocol rate. **Q4 answered YES on chipnet** (0008): a single tx can atomically redeem one token and mint another — atomicity is BCH-level, not covenant-coupled. Category bytes use consensus LE ordering (`txidToConsensusBytes = hexToBin(hex).reverse()`).
- **0009** — Open-mint validated cross-wallet: anyone can reconstruct a contract from public params and claim; no founder approval needed when `founderFeeBps=0`.
- **0011–0012, 0017–0020** — *Threat model established.* The **rate-peg check** (`output[recipient].value == amount × rate`) is the single load-bearing security invariant; without it a contract is trivially drained (V-002). Other threats: V-001 rogue minting NFT (mitigated by output-cap / picker filter on `nft.amount > 0`); T-001 non-canonical "backdoor" contract issuing underbacked FTs (mitigated by D-1 + D-2); T-002 B-model definition poisoning (irreducible; mitigated by wallet friction D-4..D-8).
The verify/defense layer (snapshots 0022, 0031):
- **D-1 — canonical contract verification:** reconstruct the canonical template with published params, compare P2SH32 address *and* byte-exact redeem script on chain (0031 removed the collision-resistance caveat). Pinned bytecode hash is the third independent layer (ADR-0008 Decision A: embedded canonical artifact, not a signed manifest).
- **D-2 — per-UTXO backing check:** `expected = units × rate`; flag UNDERBACKED and exclude from redeemable balance.
- **D-3 — verification source:** canonical artifacts embedded as JSON imports (0052) so the core bundles for browser with no `fs`/`path`.
Mid-arc taxonomy and asset-class ADRs:
- **ADR-0015 (0027/0037)** — Dynamic-Rate Asset (DRA) recognized; transparency of the curve is mandatory (a masked single rate is a T-003 masquerade attack). Multi-template D-1.
- **ADR-0025 (0044/0049)** — obligor-free MBA (backing intrinsic + present, not a third party's promise) + denomination schedule (display decimals scale with order of magnitude; BCH's 8 decimals is the ceiling).
- **ADR-0026 (0053)** — CosmoGenesis four-tab UI + glossary (ASM = **Automated** Swap Mechanism).
- **ADR-0027 (0054)** — NBA = Non-Backed Assets family (replaces "Token" label).
- **ADR-0028 (0055)** — per-class real-world peer labels; stablecoins (USDT/USDC) reclassified MTU; consensus-backing test for MBA membership.
- **ADR-0029 (0058/0059)** — stepped founder fee accepted; **supply trigger** is canonical (`feeBps = min(base + (issued/step)·feeStep, maxFee)`); decreasing-fee sibling promoted; block-height trigger rejected (`tx.time` not readable as an arithmetic value, only a CLTV lower bound).
- **ADR-0030 (0060)** — Family D collateralized binary share market (Polymarket model): fixed-terminal-value shares, `split`/`merge` invariant `1 collateral → 1 YES + 1 NO`, oracle-settled, no pro-rata residual.
- **ADR-0031 (0065/0075)** — oracle-priced vault / synthetic-USD hedge leg. Amendment named two rejected dynamic-rate-MBA "stablecoin" variants (minting price ≠ a maintained peg).
- **ADR-0032 (0066)** — ExpiringMBA: time-boxed self-backed instrument; "automatic expiry" = consensus time gate (CLTV) + permissionless conversion to a fixed owner. Nothing is truly automatic on UTXO (no scheduler).
- **ADR-0033 (0067–0073)** — CDP stablecoin taxonomy, 9 decisions. Headline: *collateral backs the debt, not the token*; CDP token is PTU (unbacked). "Secured ≠ backed." The **volatility paradox** (Decision 7): the asset marketed as safe is the one whose advertised property fails under stress; an MBA promises nothing it cannot keep. Value-flow asymmetry (Decision 9): upside always flows *past* the stablecoin holder.
- **ADR-0034 (0069)** — buyer-funded PoS cashback is a wallet tx-construction feature, **not a covenant** (a locking script runs only when its own UTXO is spent, never on receipt).
- **ADR-0035 (0075)** — BCH as a self-custodied USD rail; four-option matrix (raw BCH+ASM / synthetic-USD hedge / custodial USD-on-BCH / oracle-stamped transit receipt); Deviant's contribution is the *assembly*, not the primitives.
- **ADR-0036 (0080, 0085, 0092)** — on-ramp providers in Apps→Discover; ranking = **transparency, not endorsement** (three never-merged signals: objective facts, external plural reputation via kycnot.me, device-local user rating). External link-outs; Tier-3 transactional API deferred (later narrowly admitted for SideShift in 0103).
- **ADR-0037 (0087)** — supply semantics: (A) seed reservoir at 2⁶³−1 so "depletion" is a non-event for circulating MBAs; (B) Token-family supply is not scarcity.
- **ADR-0039 (0101, refined 0104)** — **MBA divisible by default.** Atomic floor pinned at dust-safe 1000 bits; decimals carry value. Refined to a uniform 2-decimal default (clamping only when the whole-unit rate isn't cleanly divisible). New creations only — deployed artifacts are immutable.
- **ADR-0040 (0107, + Addenda)** — voting systems: three primitives (PollCovenant allowlist / TallyState trustless tally / StakeVoteTote stake-weighted); sybil resistance lives upstream (issuer allowlist or sortition); co-spend-as-oracle idiom; bicameral sortition + adaptive bootstrap + Elder/founder tiers; removal-bond and per-vote-fee economics.
Shell / platform decisions:
- **ADR-0022 (0041)** — embed `nodejs-mobile` for the mobile shell → **SUPERSEDED same-era**.
- **ADR-0023 (0042)** — *crypto shim:* replace libauth WASM with `@noble` at build time, proven byte-for-byte, so one in-process core runs in any JS engine. This is the **current** crypto backend.
- **0043–0044** — mobile shell reopened; **Capacitor spike → GO.** Core runs client-side in the WebView with no `nodejs-mobile` and no IPC; converges mobile/desktop/web onto one in-WebView core.
---
## 3. Important code patterns and mechanisms worth preserving
- **Self-backed UTXO / reservoir / claim:** the heart of the protocol. `claim(amount, recipientLockingBytecode)` mints from the reservoir and the contract enforces output shapes: `[0]` reservoir back, `[1]` FT to recipient backed at rate, `[2]` optional founder fee. Output count is capped and trailing outputs checked for zero `tokenCategory` (V-001 fix).
- **The rate peg** — the one invariant that must never be removed: `require(tx.outputs[i].value == tokenAmount × backingRateSats)`. Pegged tokens cost ~10²¹ bits to drain (impossible); unpegged cost ~675 bits (free). 18 orders of magnitude.
- **Atomic swap** — two inputs (source FT P2PKH spend + target reservoir/minting NFT), one tx. The source side releases whatever BCH its UTXO carries; the target `claim()` mints at whatever rate *it* computes. ASM is rate-function-agnostic. A 1% fee produces a consensus-enforced ~2% round-trip bid/ask spread.
- **Carried-rate trick (DRA / escalating NFTs):** store the current rate/price in a **mutable NFT commitment** at the contract address; read it via `int()` (CashScriptNum round-trips cleanly), enforce payout, then ratchet the commitment (×multiplier, +increment, etc.). Un-resettable because the position UTXO returns to the contract address. CashScript has no `pow`/loops, so escalation is done by reading carried state, and batch buys use **bounded unroll** (fixed N: `claim3()`, `claimBatch(k ≤ remainingInTier)`) rather than a variable `claimMany(n)`.
- **Co-spend-as-oracle:** one covenant attests by reading another covenant's NFT-commitment state in the same transaction (no signer, no external oracle). General idiom used in totes, Family D, and the voting tally primitives. Pin layout by fixed `tx.inputs[i]`, **not** `this.activeInputIndex`, to avoid re-execution at input 1.
- **`checkDataSig` oracle settlement:** 16-byte message, all uint32 LE (`timestamp, sequence, contentSequence, price`). Same format used by AnyHedge and Paryon PriceContract. Verifies *that* a key signed, not the *truth* of the claim.
- **Two-phase plan/execute:** every mutating wallet op splits into `plan*` (pure, previewable) and `execute*` (signs + broadcasts). Reifies D-5 friction (BCH magnitude shown before consent). Pre-broadcast audit gate refuses txs implying illicit minting. CLI is preview-only unless `--yes`.
- **Contract-free batch burns:** `redeem-all` (all MBAs → BCH at peg), `sweep-tokens` (non-MBA categories → raw bits), `swap-all <target>` (redeem-all then claim, non-atomic with a first-class resume path). All are P2PKH spends — work on any registered MBA regardless of contract type. Only `claim` (covenant mint) needs per-template integration.
- **Dependency-injected chain layer:** the pure core (`src/`) is tested with no network; `runtime.ts` provides `ElectrumUtxoSource`, broadcaster, and `connectWallet()`. Barrel `index.ts` excludes runtime so pure consumers avoid cashscript/mainnet-js.
- **Dust facts:** CashToken FT outputs need **675 bits** minimum (vs 546 P2PKH) due to the ~42-byte token prefix. Sub-dust FT remainder is folded into the burned amount rather than left unsendable. Founder fee output must clear 546 bits.
- **KeyStore contract** (`src/wallet/keystore.ts`): platform-agnostic key-custody seam; each shell implements once (WebKeyStore AES-GCM/PBKDF2; CapacitorKeyStore Keychain/EncryptedSharedPreferences + biometric). R-017 fix (0100): `create()` and `restore()` must both derive at the canonical BCH path so funds are visible to standard wallets.
---
## 4. What was tried and abandoned (and why)
- **OP_RETURN-tagged token architecture** (0001–0003) → replaced by CashTokens FT (ADR-0006); the consensus primitive made it obsolete.
- **Mutable post-genesis FT supply** (assumed pre-0008) → CashTokens fixes supply at genesis; adopted the reservoir model instead.
- **`nodejs-mobile` embedded runtime** (ADR-0022) → superseded by the noble crypto shim (ADR-0023); replacing WASM at build time let the same core run in any JS engine, with no IPC.
- **Block-height fee-escalation trigger** (0058) → rejected; `tx.time` is only a CLTV lower bound, not adversarially enforceable as an arithmetic value. Supply trigger is canonical.
- **Tier-2 NFT-free tote first** then **NFTs ruled out** (0047) → reversed by ADR-0024 Addendum 2 (0048): NFTs permitted as *covenant machinery*, not collectibles — enabling covenant-enforced double-claim guards.
- **Two dynamic-rate "stablecoin" MBA variants** (ADR-0031 amendment, 0075) → rejected: a minting price is not a maintained peg; funding recalibration either does nothing or collapses into the already-covered hedge model.
- **Pool-funded / circular cashback** (0069) → rejected as circular; cashback is buyer-funded.
- **Two-slider founder-fee (feeRate + maxFeeRate) UI fiction** (0082) → removed; covenant bytecode is immutable, so a single flat slider with a lock icon is honest.
- **Off-chain pre-gate endorsement counting** (0120) → abandoned (0124, user correction): an off-chain attestation reintroduces a trusted verifier — the exact manipulation surface the design exists to remove. Replaced by on-chain `EndorsementCovenant`. The "too expensive on-chain" argument was also shown false (~$0.15/day at 100 admissions/day).
- **Dead-man's switch (founder mitigation Layer 6)** (0112) → removed; conflicts with the founder's hands-off reserve role. Replaced by elevated multi-chamber demotion paths.
- **Two-chamber interim governance** (0111) → dropped; a candidate-controlled "friend" chamber was a capture weakness. Replaced by three-stage gating (independent pre-gate + two sortitioned chambers).
- **Escalating-backing anti-plutocracy vote asset** (0125) → corrected (0126): backing must be *fixed and always-redeemable*; only the non-recoverable fee escalates. A voter must never hold more than `baseBacking` recoverable per vote.
- **Variable-N batch claim `claimMany(n)`** (0129) → impossible without `pow` (final commitment `r·mⁿ` + geometric sum); replaced by fixed-N bounded unroll. Sequential `claim()` is economically identical with no cap and is the default UX.
- **Deviant-hosted aggregate on-ramp ratings** (0080) → rejected; no accounts ⇒ no sybil resistance. Device-local ratings only.
---
## 5. Current state and what's left to do
**Wallet core (`src/`) — feature-complete and live-validated on chipnet.** ~445 tests passing — the majority exercising MBAs across use cases, configurations, and adversarial / vulnerability scenarios (the early 129+ atomic swaps were the foundational proof the mechanism works; 0 exploits / 100% peg integrity throughout). Operations proven on live chipnet: balance, claim (incl. decreasing-fee `DeviantDescFeeSupply` covenant), swap, tier-A send, tier-B send, redeem, redeem-all, sweep-tokens, swap-all (both directions). D-1/D-2/D-3 verify layer in place. SQLite + LocalStorage registries. CLI (`deviant …`) and a local web UI both wired over the same `runCommand` seam.
**Assets validated on chipnet:** ASM/ASM2 (fixed-rate), metal MBAs GLD/SLV/CUP (decreasing-fee, max-reservoir) plus divisible variants GLDd/SLVd/CUPd. Route B made `DeviantDescFeeSupply` a first-class wallet asset (genesis → verify → claim → display, with founder fee correctly accruing).
**Shell (CosmoGenesis, Capacitor + React) — UI-complete, runs core client-side non-custodial.** All four tabs + Settings; live balance/class derivation; swap flow with live rates + route detection + two-phase broadcast; on-ramp Discover (provider cards, KYC/reputation chips, jurisdiction gating, SideShift Tier-3 in-wallet shift); seed-sweep; QR (qrcode.react); activity history; token import; code-split bundle (~315 kB app). Loading splash + manifesto UX. **PWA beta deployed live at `testchipnet.duckdns.org`** (chipnet + testnet4 only, mainnet structurally absent, non-dismissible beta banner, Let's Encrypt TLS).
**Event/prediction + Family D — chipnet-validated spikes.** Totes (binary, K=4, MBA-denominated, operator rake, refund/sweep); Family D configs 1–3 (BCH CLOB, MBA CLOB, fungible two-category), resting limit orders, SharePairAMM, oracle-priced vault, ExpiringMBA.
**AnyHedge / ParyonUSD integration track (multi-turn, ~6–9 turns).** Turn 0 compat validated (all 11 critical contracts compile under cashc 0.12.1, repos pinned). Turn 1 (AnyHedge half) chipnet-validated: maturity settlement + liquidation paths match the BCH-frame simulation exactly. Turn 2 (Paryon half — bootstrap 7 contracts, borrow/liquidate/redeem) is scoped and pending. Turn 3 (composition + triggers) and the `DeviantHedgePair` tradeable-FT design (Turns 4–6) follow.
**On-chain governance (ADR-0040) — Phases A–F + EndorsementCovenant complete on chipnet.** CitizenToken, ApplicationCovenant A→E (single-chamber → bicameral → anti-grinding cap/fail-fast → paid-regardless escrow → commit-reveal secret ballot), RegistryState (adaptive threshold), BallotCovenant, EndorsementCovenant (on-chain pre-gate), ElderFreezeAction, ComplaintCovenant. A full spectrum of anti-plutocracy DRA curves proven on chipnet (linear/arithmetic, exponential ×2/×10, step/tiered, super-exponential `(r·3.14)³`, dual-ladder). **Phase G remains:** canonical templates + wallet UI + regulatory pass; plus RemovalBondEscrow/TreasuryVault wiring and lazy-voter instrumentation.
**Remaining / deferred across the project:**
- Native device builds (Android Studio / Xcode) — runbook ready, needs the SDKs; iOS WKWebView + biometric/camera plugins unproven on-device.
- Mainnet validation + per-jurisdiction availability gating + regulatory counsel (R-016 blocking for any real-money pilot).
- Live re-verification of on-ramp Tier-2/kycnot.me API shapes before mainnet.
- Wallet-side genesis of DRA/descfee/escalating MBAs (claim already works; genesis UI builds only the canonical contract today).
- Spec amendment for the max-reservoir recommendation (ADR-0037 A).
- `scripts/snapshot.mjs` numbering bug (uses `length+1` not `max+1`) — repeatedly flagged, manually worked around (note the duplicate-numbered snapshots in the history).
---
## 6. Open questions and unresolved issues
- **Oracle price-freshness binding** — load-bearing and production-blocking for every price-triggered instrument (ADR-0031 hedge, ADR-0033 CDP analog, OraclePricedVault). Covenants can verify *that* an oracle key signed but not *when*; no freshness bound is enforced yet.
- **MBA-floored meta-stable / basket-stable** (usd-rail §4.4) — design candidates needing pressure-testing on governance, rebalancing triggers, eligibility, maturity rollover, and regulatory bucket before any ADR.
- **B-model definition poisoning (T-002)** — irreducible by design; only mitigated by wallet friction and ecosystem plurality (D-4..D-8). B-model is restricted to closed, trusted groups; surfaced as "Drafts / Labels," not real tokens.
- **Founder permanence** in the governance design — retained against the usual sunset recommendation ("look what happened to Bitcoin without Satoshi"); flagged for a possible dedicated ADR if it becomes contentious.
- **CDP round-trip without triggers** — the killer scenario in the BCH-frame simulation (−37.7% BCH): the CDP loss is permanent while the hedge BCH gain reverses. Trigger-based defenses recover it but assume idealized timing and add an oracle-trust assumption.
- **Family D / tote multi-outcome (K>2)** — Approach #1 (fixed K=4 inline totals) is validated; per-outcome sub-pool and merkle-accumulator approaches for arbitrary K are still open.
- **CashConnect co-sign payload mapping** — `WcTransactionObject → SignTransactionV0Params[]` differs from WalletConnect; device validation of CashConnect/WizardConnect handshakes deferred.
- **Governance hardening still on paper** — CLTV announcement delays, strict 3/3 unanimous Elder freeze (MVP uses 2), elevated demotion path on-chain, per-complainer fee ramp, treasury-routing of bonds/fees, lazy-voter detection.
- **Knowledgebase corpus drift** — older HTML overview files retain pre-ADR-0027/0033 framing ("soft-backed," old taxonomy); intentionally left until a full corpus repaint.