{"version":"v0","service":"nocksperimental","subject":"nocksperimental.com","canonicalUrl":"https://nocksperimental.com/api/nockchain/rust-source","generatedAt":"2026-06-06T08:50:00.000Z","upstream":{"repository":"nockchain/nockchain","commit":{"shortSha":"33ba97b1e206","sha":"33ba97b1e206dd89b15c61b72b7802caf2136c18","committedAt":"2026-06-05T23:46:59Z","message":"bridge: add end-to-end withdrawal execution (#127)"},"release":{"tag":"build-33ba97b1e206dd89b15c61b72b7802caf2136c18","name":"Build 33ba97b1e206dd89b15c61b72b7802caf2136c18","publishedAt":"2026-06-06T00:17:53Z","url":"https://github.com/nockchain/nockchain/releases/tag/build-33ba97b1e206dd89b15c61b72b7802caf2136c18"},"protocol":{"draft":{"sequence":"014","codename":"Aletheia","version":"0.1.14","status":"draft","activationHeight":65500},"next":{"sequence":"013","codename":"Nous","version":"1.0.0","status":"final","activationTarget":"2026-Q2","activationHeight":0,"activationMode":"rollout-gated"},"previous":{"sequence":"012","codename":"Bythos","version":"0.1.11","status":"final","activationHeight":54000}},"docs":["START_HERE.md","PROTOCOL.md","ARCHITECTURE.md","WORKFLOWS.md","DECISIONS/README.md"]},"sourceDomains":[{"id":"node-runtime","label":"Node runtime","crateNames":["nockchain"],"nocksperimentalUse":"Anchor local fakenet readiness, process command provenance, data-dir policy, and node startup assumptions."},{"id":"mining-runtime","label":"Mining runtime","crateNames":["nockchain"],"nocksperimentalUse":"Tie miner receipts to key configuration, public key hash context, mining data, and block-commitment diagnostics."},{"id":"p2p-sync-gossip","label":"P2P sync and gossip","crateNames":["nockchain-libp2p-io"],"nocksperimentalUse":"Explain empty routing tables, no peers, quiet tx gossip, and wrong-commitment symptoms through catch-up state."},{"id":"nockapp-runtime","label":"NockApp runtime","crateNames":["nockapp"],"nocksperimentalUse":"Ground poke, peek, effects, event-log, and NockApp lab evidence in current Rust runtime boundaries."},{"id":"pma-durability","label":"PMA durability","crateNames":["nockvm","nockapp"],"nocksperimentalUse":"Keep PMA/state-jam/checkpoint evidence metadata-only while recording runtime durability and recovery context."},{"id":"runtime-stack-safety","label":"Runtime stack safety","crateNames":["nockvm"],"nocksperimentalUse":"Track issue #121 and any stack-frame safety changes that can affect replay or PMA-backed runtime evidence."},{"id":"wallet-cli","label":"Wallet CLI","crateNames":["nockchain-wallet"],"nocksperimentalUse":"Pin wallet commands, endpoint mode, balance checks, transaction creation, and operator-facing evidence fields."},{"id":"wallet-transaction-builder","label":"Wallet transaction builder","crateNames":["wallet-tx-builder"],"nocksperimentalUse":"Anchor create-tx and withdrawal planning, fee behavior, and bridge settlement assumptions."},{"id":"public-api-grpc","label":"Public API and gRPC","crateNames":["nockchain-api","nockapp-grpc"],"nocksperimentalUse":"Separate hosted public API evidence from local/private gRPC probes and wire conversion receipts."},{"id":"bridge-withdrawal","label":"Bridge withdrawal","crateNames":["bridge"],"nocksperimentalUse":"Trace withdrawal runtime and kernel port evidence without storing raw transaction jams or bridge secrets."},{"id":"bridge-sequencer","label":"Bridge sequencer","crateNames":["nockchain-bridge-sequencer"],"nocksperimentalUse":"Explain sequencer journals, submission state, and VESL bridge evidence while excluding signing keys."},{"id":"bridge-dev-scenarios","label":"Bridge-dev scenarios","crateNames":["bridge-dev"],"nocksperimentalUse":"Use opt-in bridge development scenarios as implementation fixtures while keeping Tenderly, R2, and signing secrets out of public receipts."},{"id":"nockup-scaffold","label":"Nockup scaffold","crateNames":["nockup"],"nocksperimentalUse":"Connect scaffold build/run receipts to the upstream nockup entrypoint and template UX."}],"sourceAnchors":[{"id":"nockchain-node-main","domainId":"node-runtime","crateName":"nockchain","sourcePath":"crates/nockchain/src/main.rs","symbol":"main","lineRange":"L20-L80","cargoGate":"cargo check -p nockchain","receiptFields":["nodeCommand","dataDir","networkId","nockchainCommit","nockchainBuild"],"forbiddenFields":["rawPmaSlab","rawStateJam","walletSeedPhrase"],"targetSurfaces":["localFakenetReadiness","nockchainOperationsAtlas","nockchainWatch"],"interpretation":"Node startup is the first source boundary for fakenet and operator evidence; receipts need command, network, data-dir, and build provenance.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/nockchain/src/main.rs#L20-L80","watchRefs":[]},{"id":"mining-key-config","domainId":"mining-runtime","crateName":"nockchain","sourcePath":"crates/nockchain/src/mining.rs","symbol":"MiningKeyConfig / MiningPkhConfig","lineRange":"L53-L130","cargoGate":"cargo check -p nockchain","receiptFields":["miningPublicKey","miningPkh","blockCommitment","miningMode"],"forbiddenFields":["walletSeedPhrase","privateSpendKey","rawPmaSlab"],"targetSurfaces":["nockchainOperationsAtlas","localFakenetEvidence"],"interpretation":"Mining output must carry public key context and block-commitment evidence without exposing spend keys or state artifacts.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/nockchain/src/mining.rs#L53-L130","watchRefs":[]},{"id":"libp2p-catch-up-signal","domainId":"p2p-sync-gossip","crateName":"nockchain-libp2p-io","sourcePath":"crates/nockchain-libp2p-io/src/catch_up.rs","symbol":"CatchUpSignal::is_catching_up","lineRange":"L77-L160","cargoGate":"cargo check -p nockchain-libp2p-io","receiptFields":["syncMode","tipHeight","peerCount","routeTableSize"],"forbiddenFields":["rawPmaSlab","rawStateJam"],"targetSurfaces":["nockchainSyncGossipTrace","localFakenetDiagnostics"],"interpretation":"Behind-tip state can make missing gossip intentional; receipts need sync mode before interpreting quiet peers as network failure.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/nockchain-libp2p-io/src/catch_up.rs#L77-L160","watchRefs":[]},{"id":"libp2p-gossip-suppression","domainId":"p2p-sync-gossip","crateName":"nockchain-libp2p-io","sourcePath":"crates/nockchain-libp2p-io/src/p2p_state.rs","symbol":"P2PState::should_suppress_outgoing_gossip","lineRange":"L2518-L2525","cargoGate":"cargo check -p nockchain-libp2p-io","receiptFields":["gossipSuppressedBehindTip","syncMode","peerCount","routeTableSize"],"forbiddenFields":["rawPmaSlab","rawStateJam"],"targetSurfaces":["nockchainSyncGossipTrace","nockchainOperationsAtlas"],"interpretation":"This is the source anchor for interpreting tx gossip silence while the node catches up.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/nockchain-libp2p-io/src/p2p_state.rs#L2518-L2525","watchRefs":[]},{"id":"libp2p-driver-gossip-metric","domainId":"p2p-sync-gossip","crateName":"nockchain-libp2p-io","sourcePath":"crates/nockchain-libp2p-io/src/driver.rs","symbol":"gossip_suppressed_behind_tip_total","lineRange":"L1221-L1236","cargoGate":"cargo check -p nockchain-libp2p-io","receiptFields":["gossipSuppressedBehindTip","suppressionMetric"],"forbiddenFields":["rawPmaSlab","rawStateJam"],"targetSurfaces":["nockchainSyncGossipTrace"],"interpretation":"Metric increments are useful support-bundle evidence when mining or tx propagation looks stalled.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/nockchain-libp2p-io/src/driver.rs#L1221-L1236","watchRefs":[]},{"id":"nockapp-poke-peek","domainId":"nockapp-runtime","crateName":"nockapp","sourcePath":"crates/nockapp/src/nockapp/mod.rs","symbol":"NockApp::poke / NockApp::peek","lineRange":"L278-L355","cargoGate":"cargo check -p nockapp","receiptFields":["pokeOrPeek","kernelIdentity","effectSummary","stateBoundary"],"forbiddenFields":["rawEventLog","rawPmaSlab","rawStateJam"],"targetSurfaces":["nockchainNockAppSourceTrace","generatedLabReports"],"interpretation":"NockApp receipts should distinguish read-only peeks from state-changing pokes and summarize effects without storing raw logs.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/nockapp/src/nockapp/mod.rs#L278-L355","watchRefs":[]},{"id":"nockapp-snapshot-safety","domainId":"pma-durability","crateName":"nockapp","sourcePath":"crates/nockapp/src/snapshot.rs","symbol":"verify_snapshot / create_ready_snapshot","lineRange":"L291-L628","cargoGate":"cargo check -p nockapp","receiptFields":["snapshotBoundary","stateJamFingerprint","checkpointHeight","producerBuild"],"forbiddenFields":["rawEventLog","rawPmaSlab","rawStateJam"],"targetSurfaces":["stateJamRegistry","nockchainNockAppSourceTrace"],"interpretation":"Snapshot and checkpoint evidence must be metadata-only and tied to the producing build and boundary.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/nockapp/src/snapshot.rs#L291-L628","watchRefs":[]},{"id":"pma-open-growth","domainId":"pma-durability","crateName":"nockvm","sourcePath":"crates/nockvm/rust/nockvm/src/pma.rs","symbol":"Pma::open","lineRange":"L617-L640","cargoGate":"cargo check -p nockvm","receiptFields":["pmaMetadata","pmaMinimumWords","pmaOpenMode","stateJamFingerprint"],"forbiddenFields":["rawPmaSlab","rawStateJam","rawEventLog"],"targetSurfaces":["stateJamRegistry","nockchainNockAppAtlas"],"interpretation":"PMA open/growth behavior is implementation evidence for memory and durability claims, not a portable state artifact.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/nockvm/rust/nockvm/src/pma.rs#L617-L640","watchRefs":[]},{"id":"nockstack-frame-safety","domainId":"runtime-stack-safety","crateName":"nockvm","sourcePath":"crates/nockvm/rust/nockvm/src/mem.rs","symbol":"NockStack::is_in_frame","lineRange":"L1338-L1356","cargoGate":"cargo check -p nockvm","receiptFields":["runtimeStackFrameCheck","nockvmCommit","stackSafetyIssue"],"forbiddenFields":["rawPmaSlab","rawStateJam"],"targetSurfaces":["nockchainPrRadar","nockchainWatch"],"watchRefs":["issue #121"],"interpretation":"Stack-frame safety remains a high-signal runtime watch item because it can affect replay reliability and PMA-backed execution.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/nockvm/rust/nockvm/src/mem.rs#L1338-L1356"},{"id":"wallet-cli-commands","domainId":"wallet-cli","crateName":"nockchain-wallet","sourcePath":"crates/nockchain-wallet/src/command.rs","symbol":"Commands","lineRange":"L306-L650","cargoGate":"cargo check -p nockchain-wallet","receiptFields":["walletCommand","walletAddress","walletEndpointMode","nockchainBuild"],"forbiddenFields":["walletSeedPhrase","privateSpendKey","rawGrpcPayload"],"targetSurfaces":["nockchainWalletAtlas","localFakenetEvidence"],"interpretation":"Wallet receipts should cite the command variant and endpoint mode while keeping seed material and private keys out of evidence.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/nockchain-wallet/src/command.rs#L306-L650","watchRefs":[]},{"id":"wallet-create-tx-with-planner","domainId":"wallet-cli","crateName":"nockchain-wallet","sourcePath":"crates/nockchain-wallet/src/create_tx.rs","symbol":"Wallet::create_tx_with_planner","lineRange":"L1064-L1125","cargoGate":"cargo check -p nockchain-wallet","receiptFields":["walletTransactionPlan","inputNotesHash","feeSummary","endpointMode"],"forbiddenFields":["walletSeedPhrase","privateSpendKey","rawTransactionJam"],"targetSurfaces":["nockchainWalletAtlas","nockchainBridgeSourceTrace"],"interpretation":"Transaction creation evidence should hash inputs and summarize planning without exposing raw transaction jams.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/nockchain-wallet/src/create_tx.rs#L1064-L1125","watchRefs":[]},{"id":"wallet-tx-planner","domainId":"wallet-transaction-builder","crateName":"wallet-tx-builder","sourcePath":"crates/wallet-tx-builder/src/planner.rs","symbol":"plan_create_tx / plan_withdrawal_tx","lineRange":"L1018-L1056","cargoGate":"cargo check -p wallet-tx-builder","receiptFields":["withdrawalPlan","feeSummary","noteSelection","bridgeAmount"],"forbiddenFields":["walletSeedPhrase","privateSpendKey","rawTransactionJam"],"targetSurfaces":["nockchainBridgeSourceTrace","veslEvidenceBridge"],"interpretation":"Withdrawal planning sits between wallet evidence and bridge evidence; receipts need deterministic planner metadata.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/wallet-tx-builder/src/planner.rs#L1018-L1056","watchRefs":[]},{"id":"wallet-bridge-fee","domainId":"wallet-transaction-builder","crateName":"wallet-tx-builder","sourcePath":"crates/wallet-tx-builder/src/fee.rs","symbol":"compute_bridge_fee / compute_minimum_fee","lineRange":"L28-L37","cargoGate":"cargo check -p wallet-tx-builder","receiptFields":["feeSummary","bridgeAmount","nicksFeePerNock"],"forbiddenFields":["walletSeedPhrase","privateSpendKey"],"targetSurfaces":["nockchainBridgeSourceTrace","nockchainWalletAtlas"],"interpretation":"Fee receipts should record the fee inputs and result so bridge tests can compare outcomes across builds.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/wallet-tx-builder/src/fee.rs#L28-L37","watchRefs":[]},{"id":"nockchain-public-api-main","domainId":"public-api-grpc","crateName":"nockchain-api","sourcePath":"crates/nockchain-api/src/main.rs","symbol":"main","lineRange":"L25-L50","cargoGate":"cargo check -p nockchain-api","receiptFields":["apiEndpointMode","apiBaseUrl","accessControl","probeLocation"],"forbiddenFields":["apiToken","rawGrpcPayload"],"targetSurfaces":["nockchainWalletAtlas","bringYourOwnFakenet"],"interpretation":"Public API evidence must clearly distinguish hosted/public probes from local/private gRPC access.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/nockchain-api/src/main.rs#L25-L50","watchRefs":[]},{"id":"nockapp-grpc-wire-conversion","domainId":"public-api-grpc","crateName":"nockapp-grpc","sourcePath":"crates/nockapp-grpc/src/wire_conversion.rs","symbol":"grpc_wire_to_nockapp","lineRange":"L7-L43","cargoGate":"cargo check -p nockapp-grpc","receiptFields":["wireConversion","grpcService","endpointMode"],"forbiddenFields":["rawGrpcPayload","apiToken"],"targetSurfaces":["localFakenetEvidence","nockchainNockAppSourceTrace"],"interpretation":"Wire conversion anchors future gRPC-native probes while receipts keep raw payloads out of persisted evidence.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/nockapp-grpc/src/wire_conversion.rs#L7-L43","watchRefs":[]},{"id":"bridge-withdrawal-runtime","domainId":"bridge-withdrawal","crateName":"bridge","sourcePath":"crates/bridge/src/withdrawal/runtime.rs","symbol":"bootstrap_runtime","lineRange":"L45-L108","cargoGate":"cargo check -p bridge","receiptFields":["withdrawalRuntime","kernelPort","proposalHash","confirmationState"],"forbiddenFields":["rawTransactionJam","bridgeNodePrivateKey","objectStoreSecret"],"targetSurfaces":["nockchainBridgeSourceTrace","veslEvidenceBridge"],"interpretation":"Withdrawal runtime receipts should preserve proposal and confirmation metadata without copying raw transactions or secrets.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/bridge/src/withdrawal/runtime.rs#L45-L108","watchRefs":[]},{"id":"bridge-withdrawal-effect-classifier","domainId":"bridge-withdrawal","crateName":"bridge","sourcePath":"crates/bridge/src/withdrawal/assembly.rs","symbol":"classify_withdrawal_execution_effect","lineRange":"L198-L220","cargoGate":"cargo check -p bridge","receiptFields":["withdrawalEffect","proposalHash","kernelEffectSummary"],"forbiddenFields":["rawTransactionJam","rawEventLog"],"targetSurfaces":["nockchainBridgeSourceTrace"],"interpretation":"Effect classification helps receipts name bridge state without storing kernel event logs.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/bridge/src/withdrawal/assembly.rs#L198-L220","watchRefs":[]},{"id":"bridge-sequencer-journal","domainId":"bridge-sequencer","crateName":"nockchain-bridge-sequencer","sourcePath":"crates/nockchain-bridge-sequencer/src/main.rs","symbol":"build_sequencer_journal","lineRange":"L154-L240","cargoGate":"cargo check -p nockchain-bridge-sequencer","receiptFields":["sequencerJournalEntry","authorizedTransactionHash","submissionState"],"forbiddenFields":["sequencerJournalSigningKey","objectStoreSecret","rawTransactionJam"],"targetSurfaces":["veslEvidenceBridge","nockchainBridgeSourceTrace"],"interpretation":"Sequencer evidence can cite journal entry metadata and submission state while keeping signing material private.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/nockchain-bridge-sequencer/src/main.rs#L154-L240","watchRefs":[]},{"id":"bridge-dev-scenario-readme","domainId":"bridge-dev-scenarios","crateName":"bridge-dev","sourcePath":"crates/bridge-dev/tests/README.md","symbol":"bridge-dev Scenario Tests","lineRange":"L1-L58","cargoGate":"cargo test -p bridge-dev --test scenarios -- --ignored --test-threads=1","receiptFields":["bridgeDevScenarioName","releaseBinarySet","bridgeDevTestRunRoot","bridgeDevPortOffset","tenderlyVnetId","r2JournalReplay"],"forbiddenFields":["tenderlyAccessKey","tenderlyTestPrivateKey","r2TestToken","objectStoreSecret"],"targetSurfaces":["nockchainBridgeSourceTrace","nockchainTestkitE2e","localFakenetEvidence"],"interpretation":"The bridge-dev scenarios are opt-in fixture evidence that provisions remote state; receipts should record scenario metadata and environment posture, not credentials or raw remote artifacts.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/bridge-dev/tests/README.md#L1-L58","watchRefs":[]},{"id":"bridge-dev-withdrawal-scenarios","domainId":"bridge-dev-scenarios","crateName":"bridge-dev","sourcePath":"crates/bridge-dev/tests/scenarios.rs","symbol":"withdrawal_happy_path_reaches_executed / withdrawal_sequencer_rebuilds_from_r2_after_sqlite_wipe","lineRange":"L955-L1084","cargoGate":"cargo test -p bridge-dev --test scenarios -- --ignored --test-threads=1","receiptFields":["bridgeDevWithdrawalPhase","stableProposalHash","authorizedTransactionArtifact","executedWithdrawalId","sequencerR2Recovery","bridgeProcessRestart"],"forbiddenFields":["r2TestToken","tenderlyAccessKey","tenderlyTestPrivateKey","rawTransactionJam","sequencerJournalSigningKey"],"targetSurfaces":["nockchainBridgeSourceTrace","veslEvidenceBridge","nockchainRustSourceGuide"],"interpretation":"Withdrawal scenario tests are implementation fixtures for happy-path, restart, R2 replay, downtime, and degraded-node behavior; public evidence should cite stable artifacts and phases without replaying secrets.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/bridge-dev/tests/scenarios.rs#L955-L1084","watchRefs":[]},{"id":"nockup-main","domainId":"nockup-scaffold","crateName":"nockup","sourcePath":"crates/nockup/src/main.rs","symbol":"main","lineRange":"L9-L40","cargoGate":"cargo check -p nockup","receiptFields":["nockupTemplate","scaffoldCommand","buildCommand","runCommand"],"forbiddenFields":["walletSeedPhrase","apiToken","rawPmaSlab"],"targetSurfaces":["nockupValidation","generatedLabReports"],"interpretation":"Nockup validation receipts should tie template generation and run evidence to the current upstream entrypoint.","sourceCommit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","sourceUrl":"https://github.com/nockchain/nockchain/blob/33ba97b1e206dd89b15c61b72b7802caf2136c18/crates/nockup/src/main.rs#L9-L40","watchRefs":[]}],"sourceTraceContract":{"requiredFields":["sourceAnchorId","domainId","crateName","sourcePath","symbol","lineRange","sourceCommit","sourceUrl","cargoGate","receiptFields"],"forbiddenFields":["rawPmaSlab","rawStateJam","rawEventLog","rawTransactionJam","rawGrpcPayload","walletSeedPhrase","privateSpendKey","sequencerJournalSigningKey","objectStoreSecret","tenderlyAccessKey","tenderlyTestPrivateKey","r2TestToken","bridgeNodePrivateKey"],"reviewRules":["Treat line ranges as implementation evidence, not protocol authority.","Tie every source anchor to the exact Nockchain commit and release before accepting receipts.","Use Tier 0 docs for protocol claims and these anchors for current Rust implementation boundaries.","Promote an upstream change into Nocksperimental only after naming the receipt fields, forbidden fields, and validation gate."]},"learningPath":[{"domainId":"node-runtime","anchorIds":["nockchain-node-main","mining-key-config"],"objective":"Start from node and miner entrypoints so fakenet evidence has process, key, and build context."},{"domainId":"p2p-sync-gossip","anchorIds":["libp2p-catch-up-signal","libp2p-gossip-suppression","libp2p-driver-gossip-metric"],"objective":"Learn sync state before diagnosing no peers, empty route tables, or wrong block commitments."},{"domainId":"nockapp-runtime","anchorIds":["nockapp-poke-peek"],"objective":"Separate poke, peek, and effect evidence before interpreting NockApp lab output."},{"domainId":"pma-durability","anchorIds":["nockapp-snapshot-safety","pma-open-growth"],"objective":"Treat PMA and state jams as provenance metadata, never as raw artifacts to persist."},{"domainId":"wallet-cli","anchorIds":["wallet-cli-commands","wallet-create-tx-with-planner","wallet-tx-planner"],"objective":"Connect wallet commands, transaction planning, and endpoint mode to balance and withdrawal receipts."},{"domainId":"bridge-withdrawal","anchorIds":["bridge-withdrawal-runtime","bridge-sequencer-journal"],"objective":"Map withdrawal lifecycle evidence into bridge and VESL receipts without leaking raw transactions or signing keys."},{"domainId":"bridge-dev-scenarios","anchorIds":["bridge-dev-scenario-readme","bridge-dev-withdrawal-scenarios"],"objective":"Use bridge-dev opt-in scenarios to learn withdrawal execution and recovery behavior while preserving test-secret boundaries."},{"domainId":"nockup-scaffold","anchorIds":["nockup-main"],"objective":"Use upstream nockup entrypoints to turn scaffold/build/run evidence into reusable NockApp fixtures."}],"nocksperimentalImplications":["Use this guide when a receipt needs exact Rust source evidence, not just crate-level provenance.","Refresh anchors when the upstream commit, release, source line range, or open issue watch changes.","Pair every source anchor with a cargo gate and forbidden-field guard before accepting user-connected fakenet evidence.","Treat bridge-dev scenarios as implementation fixtures; do not turn Tenderly or R2-backed test artifacts into public receipt payloads.","Treat source URLs as implementation proof and Tier 0 docs as protocol authority."],"links":{"upstream":"https://nocksperimental.com/api/nockchain/upstream","rustAtlas":"https://nocksperimental.com/api/nockchain/rust-atlas","nockappSource":"https://nocksperimental.com/api/nockchain/nockapp-source","syncGossip":"https://nocksperimental.com/api/nockchain/sync-gossip","bridgeSource":"https://nocksperimental.com/api/nockchain/bridge-source","stateJams":"https://nocksperimental.com/api/nockchain/state-jams","repository":"https://github.com/nockchain/nockchain","release":"https://github.com/nockchain/nockchain/releases/tag/build-33ba97b1e206dd89b15c61b72b7802caf2136c18","registry":"https://nocksperimental.com/api/registry","checkpoint":"https://nocksperimental.com/api/registry/checkpoint"}}