- Stressnet stable for 4 consecutive weeks (Phase 7.7)
- Prerequisite of stressnet ENTRY:
K_COVERsealed (§14.4-derived value landed,k_cover_provisionalcleared —docs/design/ARCHIVAL_REWARD_GATE_M1.md§4 seal-before-stressnet pin). While provisional the M1 gate runs as identity, so only a post-seal stressnet exercises the activation boundary live; sealing after stressnet entry would leave mainnet genesis as the boundary's first live execution. - All stressnet acceptance criteria met (see
tests/stressnet/README.md) - Zero tree root divergences for full 4-week run
- Block validation p95 < 500ms sustained
- Verification cache hit rate > 95% sustained
- Stressnet summary report archived
- Stressnet artifact links recorded in release notes (metrics dashboards, logs, and report commit hash)
- Prerequisite of stressnet ENTRY:
- 4-scalar leaf circuit audit completed (Phase 9)
- Audit engagement initiated after stressnet gate
- No critical or high findings in final report
- All findings remediated and re-verified
- Written security assessment report archived (see
docs/AUDIT_SCOPE.md) - Audit artifact links recorded in release notes (report URL or digest, remediation PRs)
- Security audit
- Code audit
- PQC specification frozen
-
docs/POST_QUANTUM_CRYPTOGRAPHY.mdmatches implementation - canonical transaction/signature serialization documented
- signed payload definition documented
- V4 PQC Privacy Roadmap published
-
- PQC crypto review
- hybrid sign/verify implementation reviewed (external audit pending)
- FFI ownership / zeroization reviewed (external audit pending)
- test vectors generated and archived (4 vectors: 1 positive, 3 negative)
- PQC interoperability verification
- wallet sign/daemon verify path tested
- malformed hybrid signature rejection tested (3 negative vector integration tests)
- encoded transaction size impact measured (~5,385 bytes per user tx)
- payload limit guidance documented in V3_ROLLOUT.md
- Ledger integration (deferred to v1.1)
- FCMP++ device abstraction stubs in place (
device_ledger.cpp) - Ledger app updated with FCMP++ proof generation support
- Ledger Shekyl app (or Monero-compatible app) update available
- FCMP++ device abstraction stubs in place (
- Trezor integration (deferred to v1.1)
- FCMP++ device abstraction defaults inherited (unsupported, returns false)
- Trezor cold-signing protocol updated for FCMP++ transactions
- Trezor firmware update available (if needed)
Software wallets only for v1.0 launch. Hardware support (Ledger/Trezor) targeted for v1.1.
The device abstraction layer (device.hpp) exposes fcmp_prepare, fcmp_proof_start,
and fcmp_proof_add_input so that hardware wallet implementations can be added without
further changes to the interface.
- Fork height set (rebooted chain: all features at HF 1 from genesis)
- Shekyl announcement mailer / notice
- Twitter announcement
- Reddit announcement
- Project website announcement
- Notify wallets (placeholder -- replace with actual Shekyl-compatible wallets pre-launch)
- Shekyl GUI Wallet (first-party)
- Shekyl CLI (first-party)
- (third-party wallet integrations TBD)
- Notify exchanges (placeholder -- replace with actual exchange partners pre-launch)
- (exchange integrations TBD)
- Notify 3rd party payment processors (placeholder)
- (payment gateway integrations TBD)
- Notify mining pools (placeholder)
- (mining pool partnerships TBD)
- Release tagged
- Update src/version.cpp.in with new version AND new name (if necessary)
- Update Gitian YML files in contrib/gitian/ to the new version number
- Update README.md with new fork table entry (or recommended Shekyl version)
- Update contrib/gitian/README.md so that the instructions reflect the current version
- Update src/checkpoints/checkpoints.cpp with a recent hardcoded checkpoint
- Update src/blocks/checkpoints.dat with ./shekyl-blockchain-export (or equivalent) --output-file checkpoints.dat --block-stop <recent block height> --blocksdat
- Update expected_block_hashes_hash in src/cryptonote_core/blockchain.cpp with checkpoints.dat sha256 hash
- Testnet forked
- Testnet testing/verification
- Run deterministic tuple check across seed nodes:
python3 scripts/check_testnet_genesis_consensus.py --rpc http://SEED_EAST:12029 --rpc http://SEED_WEST:12029 --rpc http://SEED_EU:12029 --check-economy
- Follow rehearsal runbook:
shekyl-dev/docs/TESTNET_MINER.md - Follow rehearsal gates:
shekyl-dev/docs/TESTNET_REHEARSAL_CHECKLIST.md - Ledger
- Trezor
- Release-specific testing
- RPC testing/update RPC documentation
- PQC transaction validation testing
- PQC wallet send/receive testing
- PQC multisig group creation (2-of-3, 3-of-5)
- PQC multisig signing flow (export request, partial sign, import, broadcast)
- PQC multisig scheme downgrade rejection verified
- PQC multisig fuzz targets run (5 harnesses, 10M iterations each)
- PQC multisig test vectors validated against docs/PQC_TEST_VECTOR_002_MULTISIG.json
- FCMP++ proof verification tested (prove/verify round-trip)
- Curve tree operations tested (grow/trim/root/path)
- FCMP++/staking/PQC fuzz targets run (11 harnesses total, 10M iterations each)
- CI fuzz smoke gate passed (required harness inventory check in
.github/workflows/build.yml) - Per-output PQC key derivation tested
- Bech32m address encoding/decoding tested
- Transaction pruning mode tested (
--prune-blockchain) - Block header
curve_tree_rootcommitment validated - RPC consumer regression testing for larger transactions
- Run deterministic tuple check across seed nodes:
- CLI reproducible builds validated
- Rust/PQC reproducible build inputs documented
- Bundled Tor pin current (2d-2 archival firewall, SP-T0c —
rust/shekyl-tor/src/binary.rs)- The wallet's managed tor launch is hash-pin gated (
binary.rsmints theVerifiedTorBinarywitness a launch requires); a stale or unverified pin is a mission-#1 (security-precondition) gap, so this is a recurring duty, not a one-time step. - Watch https://www.torproject.org/download/tor/ for a new stable Tor Expert Bundle or a security advisory since the recorded pin.
- Ensure the signing key is in your keyring (fresh machine):
gpg --auto-key-locate nodefault,wkd --locate-keys [email protected], then confirm the primary fingerprint isEF6E286DDA85EA2A4BA7DE684E2C6E8793298290(TOR_SIGNING_KEY_FPRinbinary.rs). - On a new stable / advisory, per supported target: download the Expert Bundle tarball and its
.asc, thengpg --verify <file>.asc <file>— require a Good signature whose primary key is that fingerprint (the durable pin is this key, not any single hash). - Extract and record
sha256sumof the extractedtorbinary (not the tarball) intoCURRENT_PINfor each targetcfgarm (hex!("…")— paste the digest verbatim). - Update the other two pin records so no copy drifts: the "Current pin" paragraph in
docs/design/ARCHIVAL_BOND_2D2_SP_T0_TOR.md(move the old pin to its "Superseded pin" note with its tarball hash) and the "Current pin" line below. - Re-verify: run
SHEKYL_TEST_PINNED_TOR_BINARY=<new extracted tor> cargo test -p shekyl-tor --lib binary -- --ignored—bundled_tor_matches_recorded_pinmust pass against the new binary. (The test is notcfg-gated: on a target missing its pin arm it fails loudly instead of reporting a vacuous 0-test green.) Thetor-pin-verifyworkflow (.github/workflows/tor-pin-verify.yml, manual dispatch) runs the same download → GPG-verify → re-verify chain in CI, and against that one verified binary also runs the SP-T0--liblive lifecycle tests (actor + supervisor) — dispatch it after a bump. - Current pin: Expert Bundle 15.0.17 (tor 0.4.9.11), recorded 2026-07-01 (see
CURRENT_PINfor the gate value — code is canonical; this line is a pointer, not a second source of truth).
- The wallet's managed tor launch is hash-pin gated (
- CLI released
- Project downloads page updated
- Update hashes.txt on website
- Update downloads.yml on website
- Update auto-update DNS records on all 5 TLDs (see
shekyl-dev/docs/DNS_CONFIG.md) - Update redirects on downloads box
- Update seed nodes
- GUI released (if applicable)
- Project downloads page updated
- Update hashes.txt on website
- Update hashes.txt.sig on website
- Update downloads.yml on website
- Update auto-update DNS records on all 5 TLDs (see
shekyl-dev/docs/DNS_CONFIG.md) - Update redirects on downloads box
- Release Announcements
- Shekyl announcement mailer notice
- Twitter announcement
- Reddit announcement
- Project website announcement