A Litecoin wallet can sign a payment without sending it — experiment v1.0.0 ACTUAL RUN 20 October 2026, 22:26:47–22:26:53 UTC; 21 October 00:26 Europe/Warsaw. Pinned Litecoin Core 0.21.5.8, one fresh regtest node, two fresh wallet roles. Peer networking was disabled and RPC bound only to loopback. The test mined 102 fixture blocks to obtain two mature coinbase outputs; the payment and separate self-spend control each required one further block (final height 104). The own process exited 0 and the resolved fresh directory was removed, as recorded. 43 experiment assertions passed. All coins are valueless regtest coins. WHAT WAS OBSERVED Preparing an unsigned PSBT, processing it with sign=true, extracting its raw transaction and testing local mempool acceptance left the selected input unspent, the sender's recorded balances unchanged, the mempool empty and the recipient receipt zero. In this Core release walletprocesspsbt also finalizes the single input while signing; the experiment does not invent a separate partial-signature-only stage. finalizepsbt extraction is still separate. Explicit sendrawtransaction inserted the approved transaction into this local node's mempool. The recipient then saw 0.25 LTC with zero confirmations; one fixture block confirmed it. No peer received it because there were no peers. The approved payment had one P2WPKH input, two outputs, 141 vB and 1000 litoshi fee. Six policy calls: P01 exact approved candidate before submission: allowed=true. P02 different recipient with original witness/signature: allowed=false. P03 recipient +1 litoshi/change −1, same fee and original signature: allowed=false. P04 separately held signed candidate before its input was spent: allowed=true. P05 alternative controlled self-spend of that input: allowed=true, then submitted and confirmed. It paid the sender, not the article's recipient. P06 identical held candidate after that confirmed input spend: allowed=false, reject-reason=missing-inputs. Explicit submission also failed, although finalizepsbt still returned complete=true for its signatures. OFFLINE VERIFIER Python 3.10+ standard library only; no node, wallet, network, keys or dependencies: python verify.py.txt It first checks a strict curated SHA256 manifest. It parses ordinary transparent transactions and PSBT maps, derives txid/wtxid/weight/vsize and fees from bytes, and verifies the five public candidates' compressed-key secp256k1 ECDSA signatures over witness-v0 SIGHASH_ALL digests. Original/held/control signatures verify; changed-output signatures do not. It compares the recorded policy outcomes, stage CSV/JSON, exact held bytes before/after, RPC order and cleanup. It checks former cleanup RECORDS, not the remote process/filesystem now. The codec and crypto are educational, unaudited and deliberately fixture-bounded. This is not a consensus validator or a tool for authorizing real transactions. SHA consistency is not an authenticity certificate or security audit. FRESH REPRODUCTION Disposable Linux environment only, with the exact pinned binaries: python reproduce.py.txt /path/litecoind /path/litecoin-cli new-output-directory fixture-codec.py.txt must be adjacent. Output directory must not already exist. No existing datadir, wallet, seed, configuration or RPC credential is accepted. The program creates its own temporary data directory and ephemeral loopback RPC port, disables peers/listening/discovery, uses 32 MiB cache and one worker. A 75-second work alarm allows controlled shutdown; the private execution wrapper adds an 85-second outer timeout plus a 5-second kill grace. Fresh addresses, funding hashes, signatures, timestamps and occasionally exact signature size may differ. The published verifier checks the frozen original evidence, not byte identity of a later experiment. BINARY SHA256 litecoind 63fb440cdc5e2e7d46144b8e3a47dab4725fa9c056a77b8b12b11854504f4838 litecoin-cli d185011cc0dbb5d2dd20611e9dc060dbb0a5d9be31a03f57da5dbd3dad4c3769 Pinned bytes identify the tested runtime, not a reproducible-build claim. SCOPE AND PRIVACY One node/two wallet RPC roles is a logical workflow demonstration, NOT a physically air-gapped setup, hardware-wallet or USB/QR transfer security test. No mainnet payment, external service credit, latency, cancellation, replacement, multisig, MWEB, custom sighash mode or general wallet compatibility was tested. The changed-output result applies to these default ALL signatures. Other signature modes can authorize different commitments and were not tested. A valid signature does not prove the referenced output remains unspent. The package has generated public regtest addresses, public raw transactions, signatures, transaction-history/UTXO metadata and BIP32 public derivation paths and fingerprints from fresh wallets. It has no seed, private key, wallet file, private descriptor, authentication cookie or real user's records. Public PSBT metadata can still be sensitive when it belongs to a real wallet. Signed raw transactions are spending authorizations; holders may submit them if valid. Do not upload real PSBTs or signed files to public support posts or checkers. Never fund any fixture address. A PSBT is not a substitute for a wallet backup. FILES results.json: original 43 assertions, eight snapshots, PSBTs and six policy cases. candidates.json: five public raw candidates and exact input/output arithmetic. stages.csv / cases.csv: compact downloadable views; mempool counts are derived directly from the recorded snapshot arrays, not separate observations. rpc-trace.json / rpc-help.json / cleanup.json: actual operations/help and records. reproduce.py.txt / fixture-codec.py.txt / verify.py.txt: public experiment/code. payment-review-checklist.txt: blank useful authorization/submission checklist. sources.json / psbt-howto.md.txt / source-excerpts.txt: primary source provenance; exact versioned excerpts omit unrelated examples, especially private fixtures. LICENSE.txt retains the official tagged Core MIT license and source copyrights. SHA256SUMS.txt: exact curated integrity hashes. Optional publisher artwork file: artwork-provenance.json, which must also be hashed when included. Private remote wrapper, full source scratch copies and failed setup attempt are deliberately outside the curated package. The failed setup was cleaned; only the completed 43-assertion run supplies the article's measurements.