Skip to content

test(wallet): certify the native Zinder backend - #185

Open
gustavovalverde wants to merge 11 commits into
mainfrom
feat/zinder-regtest-tracer
Open

test(wallet): certify the native Zinder backend#185
gustavovalverde wants to merge 11 commits into
mainfrom
feat/zinder-regtest-tracer

Conversation

@gustavovalverde

@gustavovalverde gustavovalverde commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Closes #184.

Companion consumer change: zcash/zallet#701.

Why

The native Zinder backend crosses process, storage, and chain-view boundaries that adapter tests cannot certify. These scenarios exercise exact Zebra, Zinder, and Zallet binaries through the wallet launcher and RPC surface while retaining enough identity and runtime evidence to attribute failures.

What changes

  • Adds a bounded-scan scenario covering capability preflight, full-block retention, shielded tree and subtree data through Ironwood, paginated reads, restart persistence, and forced epoch reacquisition.
  • Adds a current-wallet scenario covering account creation, import and rescan, restart and resume, transparent receive and spend recovery, transaction submission, mempool observation, mining, and replacement-branch reorganization.
  • Preserves and explicitly rebroadcasts a transaction from a disconnected block when Zebra resets its mempool during the shallow-reorg fixture.
  • Extends the shared wallet launcher helper with explicit Zinder backend configuration while preserving the existing default.
  • Pins the current-wallet scenario to Zinder v0.6.0 commit 9b9e7040453f66e847302f186f95d95b297e6705, Zallet commit 0f54455721e819378ab34f5c5fab29016c723377, and Zebra commit 7121c82ba6795a151523d5b308a19743f4a1ade7.

Reviewer map

  • qa/rpc-tests/zinder_bounded_scan.py owns the retained bounded-scan and epoch-rotation contract.
  • qa/rpc-tests/wallet_zinder_recovery.py owns current-wallet lifecycle, transparent, submission, and reorganization certification.
  • qa/rpc-tests/test_framework/util.py contains the small shared backend-selection seam.

Runtime evidence

The full real-process scenario passed with scope P2a expiry recovery plus P2b transparent recovery plus P2c submit lifecycle. It covered account creation, viewing-key import, restart and resume, quiet mempool follow, cross-page history recovery, steady-state expiry recovery, transaction submission through zallet-zinder, mempool restart, mining, explicit post-disconnect rebroadcast, replacement-branch scanning, and stale-block identity removal. All owned processes exited with status 0.

  • Test head: c89e02612e34fe4b5c2eaa2aa01a215a5d0a4683
  • Evidence manifest SHA-256: b1bc116e0109886910484a28a1bb33a115eb85b376bacf94f29c35a2f2a61dc6
  • Artifact manifest SHA-256: 9765195a210908cb446f0f012d9d423b210049fff98938207d79dd0a86feac84
  • Expiry-recovery evidence SHA-256: 23841bc13a57b069cf2cee12c8eddc73ee437cff177442ef94c8996a4159b0d8
  • Transparent lifecycle evidence SHA-256: d5cc36a7ca28268bda586387aee9ee1adea938eb94574fa15b26e7a887c65e48

pyflakes qa, python3 -m py_compile qa/rpc-tests/wallet_zinder_recovery.py, ./test/lint/lint-whitespace.sh, and git diff --check pass locally.

gustavovalverde and others added 8 commits July 28, 2026 02:48
Exercise capability preflight, complete bounded scans, fresh-process persistence, and forced epoch reacquisition against real Zinder and Zallet boundaries.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
Co-Authored-By: OpenAI Codex <noreply@openai.com>
Launch a fresh NU6.3 Zebra, all-retention native Zinder composition, and co-staged Zallet launcher/backend with pinned inputs. Record runtime evidence while keeping the scenario separate from full P2a certification.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
Replace offline-created wallet accounts with two live z_getnewaccount calls so the real launcher, selected Zinder backend, sync recovery wake, and restart path certify the public account-creation contract.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
Align the bounded-scan rotation harness with the backend's exact-request pause contract and retain record-only range evidence for non-rotation runs.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
Exercise history and steady-state chain-view expiry through exact production-shaped binaries. Pin the interrupt to the requested range start, prove the allowed SQLite mutation boundary, and verify retry under a newly published serving pair.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
Exercise transparent receive, spend, restart, and historical rescan against the current native Zinder backend with a separately staged Zebra-backed producer.

Preserve exact artifact identity, capability admission, mined transaction heights, state parity, and backend isolation in retained evidence.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
Exercise a wallet-created transaction through the staged Zinder backend from submission and mempool observation through restart, mining, and a replacement-branch reorg.

Retain exact artifact identity, backend isolation, outgoing state transitions, and persisted canonical replacement hashes in the certification evidence.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
Run the current-wallet certification harness against Zinder v0.5.0 and the rebased Zallet backend commit that consumes its published crates.

Co-Authored-By: OpenAI Codex <noreply@openai.com>
@gustavovalverde
gustavovalverde force-pushed the feat/zinder-regtest-tracer branch from 99e2c50 to 9c35b9b Compare July 29, 2026 21:59
Run the certification harness against the Zallet commit that closes the saturated-pool recovery deadlock and post-scan enhancement wake race found by the backend matrix.

Co-Authored-By: OpenAI Codex <codex@openai.com>
@gustavovalverde
gustavovalverde force-pushed the feat/zinder-regtest-tracer branch from c742c41 to b568344 Compare July 29, 2026 23:55
Pin the native wallet smoke to Zinder 0.6.0 and the matching Zallet fixes, allow the bounded historical recovery window to complete, and preserve the disconnected transaction explicitly when exercising the replacement branch.

Co-Authored-By: OpenAI Codex <codex@openai.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Certify the native Zinder wallet backend on Regtest

1 participant