{
  "version": 1,
  "schemaVersion": 1,
  "title": "BitcoinSignetFaucet.com offline transaction fixtures",
  "synthetic": true,
  "offline": true,
  "onChain": false,
  "generatedAt": "2026-09-11T22:33:24Z",
  "software": {
    "bitcoinjs-lib": "7.0.2",
    "lucide": "1.45.0",
    "@noble/curves": "2.4.0",
    "bs58check": "4.0.0",
    "esbuild": "0.28.2"
  },
  "provenance": "Offline test fixtures: local synthetic constructions and a pinned Lightning Labs regtest vector. No public Signet or mainnet run is claimed. See each example for its provenance.",
  "generatedBy": "npm run build:lab",
  "dependencies": {
    "bitcoinjs-lib": "7.0.2",
    "lucide": "1.45.0",
    "@noble/curves": "2.4.0",
    "bs58check": "4.0.0",
    "esbuild": "0.28.2"
  },
  "policy": {
    "maxInputs": 20,
    "maxOutputs": 20,
    "maxInspectInputs": 100,
    "maxInspectOutputs": 100,
    "maxTextLength": 262144,
    "maxBytes": 131072,
    "maxMapEntries": 256,
    "maxWorkshopSats": 100000000,
    "maxMoneySats": 2100000000000000,
    "minFeeRateSatVb": 1,
    "maxFeeRateSatVb": 100,
    "maxFeeSats": 100000,
    "dustRelayFeeSatKvb": 3000,
    "p2wpkhDustSats": 294
  },
  "limitations": [
    "No live wallet, seed entry, signing API, network requests, broadcast, mempool checks, or confirmation claims.",
    "Addresses use testnet encoding shared with Signet; encoding is not chain identity.",
    "Workshop construction supports native P2WPKH and PSBT v0 only; Doctor identifies additional script and Taproot metadata without validating it.",
    "Current registry bitcoinjs-lib 7.0.2 was compared with published 7.0.1: only Merkle validation and package metadata changed. Its GitHub tag/gitHead were unavailable during this build review.",
    "Dust floors assume Bitcoin Core 30 policy with dustrelayfee=3000 sat/kvB; relay policy is not a consensus rule.",
    "The Taproot Assets example is an exact upstream regtest anchor with companion proof metadata, not generic asset detection. Asset proof, history, commitment and ownership validation are unsupported."
  ],
  "sources": [
    "https://www.npmjs.com/package/bitcoinjs-lib/v/7.0.2",
    "https://github.com/bitcoinjs/bitcoinjs-lib/blob/v7.0.1/ts_src/psbt.ts",
    "https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki",
    "https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki",
    "https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki",
    "https://github.com/bitcoin/bips/blob/master/bip-0371.mediawiki",
    "https://github.com/bitcoin/bitcoin/blob/v30.0/src/policy/policy.cpp",
    "https://github.com/lightninglabs/taproot-assets/blob/789960c8f882cc0d18495ac9423a1a46b0d75b93/proof/testdata/proof_tlv_encoding_regtest.json",
    "https://docs.lightning.engineering/lightning-network-tools/taproot-assets",
    "https://lightning.engineering/api-docs/api/taproot-assets/taproot-assets/decode-proof/",
    "https://lightning.engineering/api-docs/api/taproot-assets/taproot-assets/verify-proof/"
  ],
  "workshops": [
    {
      "id": "equal-split",
      "title": "Split into three equal outputs",
      "description": "A synthetic 10,000-sat input pays three 2,000-sat recipients, change, and the estimated fee.",
      "options": {
        "mode": "fixture",
        "operation": "equal-split",
        "outputCount": 3,
        "amountPerOutputSats": 2000,
        "feeRateSatVb": 2
      },
      "synthetic": true,
      "offline": true,
      "onChain": false,
      "provenance": "Synthetic offline fixture. Outpoints are invented, not mined, broadcast, or confirmed. Never fund example addresses.",
      "methodology": "Built and serialized with pinned bitcoinjs-lib. Estimated size uses maximum-length P2WPKH dummy witnesses. Actual size comes from the build-only signed, ECDSA-verified, finalized synthetic transaction; no node was involved.",
      "result": {
        "ok": true,
        "apiVersion": 1,
        "kind": "workshop",
        "mode": "fixture",
        "synthetic": true,
        "operation": "equal-split",
        "network": {
          "intended": "signet",
          "addressEncoding": "testnet",
          "verified": false,
          "note": "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried."
        },
        "policy": {
          "maxInputs": 20,
          "maxOutputs": 20,
          "maxInspectInputs": 100,
          "maxInspectOutputs": 100,
          "maxTextLength": 262144,
          "maxBytes": 131072,
          "maxMapEntries": 256,
          "maxWorkshopSats": 100000000,
          "maxMoneySats": 2100000000000000,
          "minFeeRateSatVb": 1,
          "maxFeeRateSatVb": 100,
          "maxFeeSats": 100000,
          "dustRelayFeeSatKvb": 3000,
          "p2wpkhDustSats": 294
        },
        "inputs": [
          {
            "id": "sample-1",
            "txid": "0101010101010101010101010101010101010101010101010101010101010101",
            "vout": 0,
            "valueSats": 10000,
            "address": "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx",
            "scriptPubKey": "0014751e76e8199196d454941c45d1b3a323f1433bd6",
            "scriptType": "p2wpkh",
            "synthetic": true,
            "index": 0,
            "sequence": 4294967293
          }
        ],
        "outputs": [
          {
            "address": "tb1qzs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5d9jmt6",
            "scriptPubKey": "00141414141414141414141414141414141414141414",
            "scriptType": "p2wpkh",
            "valueSats": 2000,
            "role": "recipient",
            "index": 0,
            "dustThresholdSats": 294,
            "dust": false
          },
          {
            "address": "tb1qz52329g4z52329g4z52329g4z52329g4v4n6pm",
            "scriptPubKey": "00141515151515151515151515151515151515151515",
            "scriptType": "p2wpkh",
            "valueSats": 2000,
            "role": "recipient",
            "index": 1,
            "dustThresholdSats": 294,
            "dust": false
          },
          {
            "address": "tb1qzctpv9skzctpv9skzctpv9skzctpv9ska34l2d",
            "scriptPubKey": "00141616161616161616161616161616161616161616",
            "scriptType": "p2wpkh",
            "valueSats": 2000,
            "role": "recipient",
            "index": 2,
            "dustThresholdSats": 294,
            "dust": false
          },
          {
            "address": "tb1qvd3kxcmrvd3kxcmrvd3kxcmrvd3kxcmrj26yd5",
            "scriptPubKey": "00146363636363636363636363636363636363636363",
            "scriptType": "p2wpkh",
            "valueSats": 3594,
            "role": "change",
            "index": 3,
            "dustThresholdSats": 294,
            "dust": false
          }
        ],
        "availableInputs": [
          {
            "id": "sample-1",
            "txid": "0101010101010101010101010101010101010101010101010101010101010101",
            "vout": 0,
            "valueSats": 10000,
            "address": "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx",
            "scriptPubKey": "0014751e76e8199196d454941c45d1b3a323f1433bd6",
            "scriptType": "p2wpkh",
            "synthetic": true
          },
          {
            "id": "sample-2",
            "txid": "0202020202020202020202020202020202020202020202020202020202020202",
            "vout": 0,
            "valueSats": 6500,
            "address": "tb1qq6hag67dl53wl99vzg42z8eyzfz2xlkvvlryfj",
            "scriptPubKey": "001406afd46bcdfd22ef94ac122aa11f241244a37ecc",
            "scriptType": "p2wpkh",
            "synthetic": true
          },
          {
            "id": "sample-3",
            "txid": "0303030303030303030303030303030303030303030303030303030303030303",
            "vout": 0,
            "valueSats": 3500,
            "address": "tb1q0ht9tyks4vh7p5p904t340cr9nvahy7um9zdem",
            "scriptPubKey": "00147dd65592d0ab2fe0d0257d571abf032cd9db93dc",
            "scriptType": "p2wpkh",
            "synthetic": true
          }
        ],
        "summary": {
          "inputSats": 10000,
          "outputSats": 9594,
          "recipientSats": 6000,
          "changeSats": 3594,
          "feeSats": 406,
          "requestedFeeRateSatVb": 2,
          "estimatedFeeRateSatVb": 2,
          "estimatedSignedVsize": 203,
          "estimatedSignedWeight": 811,
          "unsignedVsize": 175,
          "unsignedBytes": 175,
          "estimatedBaseFeeSats": 406,
          "discardedChangeSats": 0,
          "inputCount": 1,
          "outputCount": 4,
          "sizeAssumption": "Native P2WPKH: 73-byte signature including sighash and 33-byte compressed public key per input. Conservative estimate, not a signed transaction."
        },
        "psbtBase64": "cHNidP8BAK8CAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAD9////BNAHAAAAAAAAFgAUFBQUFBQUFBQUFBQUFBQUFBQUFBTQBwAAAAAAABYAFBUVFRUVFRUVFRUVFRUVFRUVFRUV0AcAAAAAAAAWABQWFhYWFhYWFhYWFhYWFhYWFhYWFgoOAAAAAAAAFgAUY2NjY2NjY2NjY2NjY2NjY2NjY2MAAAAAAAEBHxAnAAAAAAAAFgAUdR526BmRltRUlBxF0bOjI/FDO9YAAAAAAA==",
        "rawUnsignedTxHex": "020000000101010101010101010101010101010101010101010101010101010101010101010000000000fdffffff04d0070000000000001600141414141414141414141414141414141414141414d0070000000000001600141515151515151515151515151515151515151515d00700000000000016001416161616161616161616161616161616161616160a0e000000000000160014636363636363636363636363636363636363636300000000",
        "txid": "293b992fbf33aae6dc95a54cb053c5d5f9336cd7f0bdbf502bf56727c2813a56",
        "txidKind": "unsigned-transaction",
        "locktime": 0,
        "sequence": 4294967293,
        "rbf": true,
        "graph": {
          "nodes": [
            {
              "id": "input-0",
              "type": "input",
              "label": "Input 1",
              "valueSats": 10000,
              "txid": "0101010101010101010101010101010101010101010101010101010101010101",
              "vout": 0
            },
            {
              "id": "transaction",
              "type": "transaction",
              "label": "Transaction"
            },
            {
              "id": "output-0",
              "type": "recipient",
              "label": "Output 1",
              "valueSats": 2000,
              "address": "tb1qzs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5d9jmt6"
            },
            {
              "id": "output-1",
              "type": "recipient",
              "label": "Output 2",
              "valueSats": 2000,
              "address": "tb1qz52329g4z52329g4z52329g4z52329g4v4n6pm"
            },
            {
              "id": "output-2",
              "type": "recipient",
              "label": "Output 3",
              "valueSats": 2000,
              "address": "tb1qzctpv9skzctpv9skzctpv9skzctpv9ska34l2d"
            },
            {
              "id": "output-3",
              "type": "change",
              "label": "Change",
              "valueSats": 3594,
              "address": "tb1qvd3kxcmrvd3kxcmrvd3kxcmrvd3kxcmrj26yd5"
            },
            {
              "id": "fee",
              "type": "fee",
              "label": "Fee",
              "valueSats": 406
            }
          ],
          "edges": [
            {
              "source": "input-0",
              "target": "transaction",
              "valueSats": 10000
            },
            {
              "source": "transaction",
              "target": "output-0",
              "valueSats": 2000
            },
            {
              "source": "transaction",
              "target": "output-1",
              "valueSats": 2000
            },
            {
              "source": "transaction",
              "target": "output-2",
              "valueSats": 2000
            },
            {
              "source": "transaction",
              "target": "output-3",
              "valueSats": 3594
            },
            {
              "source": "transaction",
              "target": "fee",
              "valueSats": 406
            }
          ]
        },
        "warnings": [
          "Synthetic offline fixture: invented outpoints, not on-chain funds. Never fund these example addresses.",
          "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried."
        ],
        "validation": {
          "signaturesVerified": false,
          "finalizable": null,
          "chainVerified": false,
          "broadcast": false
        }
      },
      "measured": {
        "inputSats": 10000,
        "outputSats": 9594,
        "recipientSats": 6000,
        "changeSats": 3594,
        "feeSats": 406,
        "requestedFeeRateSatVb": 2,
        "estimatedFeeRateSatVb": 2,
        "estimatedSignedVsize": 203,
        "estimatedSignedWeight": 811,
        "unsignedVsize": 175,
        "unsignedBytes": 175,
        "estimatedBaseFeeSats": 406,
        "discardedChangeSats": 0,
        "inputCount": 1,
        "outputCount": 4,
        "sizeAssumption": "Native P2WPKH: 73-byte signature including sighash and 33-byte compressed public key per input. Conservative estimate, not a signed transaction.",
        "actualSignedVsize": 203,
        "actualSignedWeight": 810,
        "actualSignedBytes": 285,
        "actualFeeRateSatVb": 2
      },
      "buildValidation": {
        "ecdsaSignaturesVerified": true,
        "scriptExecutionVerified": false,
        "nodeAcceptanceTested": false
      },
      "artifacts": {
        "psbt": {
          "path": "/static/lab/equal-split.psbt.txt",
          "sha256": "468c9ebf2e39ee86c7be0373f6db346244d7aef2c7dd0c5d66666b7d97dd48c5",
          "bytes": 301
        },
        "rawUnsigned": {
          "path": "/static/lab/equal-split.unsigned.hex.txt",
          "sha256": "72f4e594b1d4c91550f13f8688b9da87a563f4364f3afd20f3a6d7a9861eb3c2",
          "bytes": 351
        },
        "signedPsbt": {
          "path": "/static/lab/equal-split.signed.psbt.txt",
          "sha256": "1270a34e1905e193a882d56d4ea1077121a2e8c5e53ce1c560ed3208382fe816",
          "bytes": 445
        },
        "finalizedPsbt": {
          "path": "/static/lab/equal-split.finalized.psbt.txt",
          "sha256": "69b2feb3545f2f50c0df72c44775026e00d44be0969cf932c1223e6905a288db",
          "bytes": 449
        },
        "rawSigned": {
          "path": "/static/lab/equal-split.signed.hex.txt",
          "sha256": "44e1afe3d2b5329550076c8fe78e81102e1ba505eab7a1bbc94a7c762e7e2296",
          "bytes": 571
        },
        "result": {
          "path": "/static/lab/equal-split.result.json",
          "sha256": "a2e3b48d11279ae48d97116ffa7e36dae89b3bef3db50fa7458e4f8d4c872735",
          "bytes": 7183
        }
      }
    },
    {
      "id": "custom-split",
      "title": "Choose each output amount",
      "description": "A synthetic input pays 1,200, 1,800, and 2,500 sats, with change kept separate from the fee.",
      "options": {
        "mode": "fixture",
        "operation": "custom-split",
        "outputs": [
          {
            "valueSats": 1200
          },
          {
            "valueSats": 1800
          },
          {
            "valueSats": 2500
          }
        ],
        "feeRateSatVb": 2
      },
      "synthetic": true,
      "offline": true,
      "onChain": false,
      "provenance": "Synthetic offline fixture. Outpoints are invented, not mined, broadcast, or confirmed. Never fund example addresses.",
      "methodology": "Built and serialized with pinned bitcoinjs-lib. Estimated size uses maximum-length P2WPKH dummy witnesses. Actual size comes from the build-only signed, ECDSA-verified, finalized synthetic transaction; no node was involved.",
      "result": {
        "ok": true,
        "apiVersion": 1,
        "kind": "workshop",
        "mode": "fixture",
        "synthetic": true,
        "operation": "custom-split",
        "network": {
          "intended": "signet",
          "addressEncoding": "testnet",
          "verified": false,
          "note": "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried."
        },
        "policy": {
          "maxInputs": 20,
          "maxOutputs": 20,
          "maxInspectInputs": 100,
          "maxInspectOutputs": 100,
          "maxTextLength": 262144,
          "maxBytes": 131072,
          "maxMapEntries": 256,
          "maxWorkshopSats": 100000000,
          "maxMoneySats": 2100000000000000,
          "minFeeRateSatVb": 1,
          "maxFeeRateSatVb": 100,
          "maxFeeSats": 100000,
          "dustRelayFeeSatKvb": 3000,
          "p2wpkhDustSats": 294
        },
        "inputs": [
          {
            "id": "sample-1",
            "txid": "0101010101010101010101010101010101010101010101010101010101010101",
            "vout": 0,
            "valueSats": 10000,
            "address": "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx",
            "scriptPubKey": "0014751e76e8199196d454941c45d1b3a323f1433bd6",
            "scriptType": "p2wpkh",
            "synthetic": true,
            "index": 0,
            "sequence": 4294967293
          }
        ],
        "outputs": [
          {
            "address": "tb1qzs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5d9jmt6",
            "scriptPubKey": "00141414141414141414141414141414141414141414",
            "scriptType": "p2wpkh",
            "valueSats": 1200,
            "role": "recipient",
            "index": 0,
            "dustThresholdSats": 294,
            "dust": false
          },
          {
            "address": "tb1qz52329g4z52329g4z52329g4z52329g4v4n6pm",
            "scriptPubKey": "00141515151515151515151515151515151515151515",
            "scriptType": "p2wpkh",
            "valueSats": 1800,
            "role": "recipient",
            "index": 1,
            "dustThresholdSats": 294,
            "dust": false
          },
          {
            "address": "tb1qzctpv9skzctpv9skzctpv9skzctpv9ska34l2d",
            "scriptPubKey": "00141616161616161616161616161616161616161616",
            "scriptType": "p2wpkh",
            "valueSats": 2500,
            "role": "recipient",
            "index": 2,
            "dustThresholdSats": 294,
            "dust": false
          },
          {
            "address": "tb1qvd3kxcmrvd3kxcmrvd3kxcmrvd3kxcmrj26yd5",
            "scriptPubKey": "00146363636363636363636363636363636363636363",
            "scriptType": "p2wpkh",
            "valueSats": 4094,
            "role": "change",
            "index": 3,
            "dustThresholdSats": 294,
            "dust": false
          }
        ],
        "availableInputs": [
          {
            "id": "sample-1",
            "txid": "0101010101010101010101010101010101010101010101010101010101010101",
            "vout": 0,
            "valueSats": 10000,
            "address": "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx",
            "scriptPubKey": "0014751e76e8199196d454941c45d1b3a323f1433bd6",
            "scriptType": "p2wpkh",
            "synthetic": true
          },
          {
            "id": "sample-2",
            "txid": "0202020202020202020202020202020202020202020202020202020202020202",
            "vout": 0,
            "valueSats": 6500,
            "address": "tb1qq6hag67dl53wl99vzg42z8eyzfz2xlkvvlryfj",
            "scriptPubKey": "001406afd46bcdfd22ef94ac122aa11f241244a37ecc",
            "scriptType": "p2wpkh",
            "synthetic": true
          },
          {
            "id": "sample-3",
            "txid": "0303030303030303030303030303030303030303030303030303030303030303",
            "vout": 0,
            "valueSats": 3500,
            "address": "tb1q0ht9tyks4vh7p5p904t340cr9nvahy7um9zdem",
            "scriptPubKey": "00147dd65592d0ab2fe0d0257d571abf032cd9db93dc",
            "scriptType": "p2wpkh",
            "synthetic": true
          }
        ],
        "summary": {
          "inputSats": 10000,
          "outputSats": 9594,
          "recipientSats": 5500,
          "changeSats": 4094,
          "feeSats": 406,
          "requestedFeeRateSatVb": 2,
          "estimatedFeeRateSatVb": 2,
          "estimatedSignedVsize": 203,
          "estimatedSignedWeight": 811,
          "unsignedVsize": 175,
          "unsignedBytes": 175,
          "estimatedBaseFeeSats": 406,
          "discardedChangeSats": 0,
          "inputCount": 1,
          "outputCount": 4,
          "sizeAssumption": "Native P2WPKH: 73-byte signature including sighash and 33-byte compressed public key per input. Conservative estimate, not a signed transaction."
        },
        "psbtBase64": "cHNidP8BAK8CAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAD9////BLAEAAAAAAAAFgAUFBQUFBQUFBQUFBQUFBQUFBQUFBQIBwAAAAAAABYAFBUVFRUVFRUVFRUVFRUVFRUVFRUVxAkAAAAAAAAWABQWFhYWFhYWFhYWFhYWFhYWFhYWFv4PAAAAAAAAFgAUY2NjY2NjY2NjY2NjY2NjY2NjY2MAAAAAAAEBHxAnAAAAAAAAFgAUdR526BmRltRUlBxF0bOjI/FDO9YAAAAAAA==",
        "rawUnsignedTxHex": "020000000101010101010101010101010101010101010101010101010101010101010101010000000000fdffffff04b004000000000000160014141414141414141414141414141414141414141408070000000000001600141515151515151515151515151515151515151515c4090000000000001600141616161616161616161616161616161616161616fe0f000000000000160014636363636363636363636363636363636363636300000000",
        "txid": "c977c85df0e5b2e84cadfa4686e5ee6c33e50ffc7b22335627eabf68a10210b9",
        "txidKind": "unsigned-transaction",
        "locktime": 0,
        "sequence": 4294967293,
        "rbf": true,
        "graph": {
          "nodes": [
            {
              "id": "input-0",
              "type": "input",
              "label": "Input 1",
              "valueSats": 10000,
              "txid": "0101010101010101010101010101010101010101010101010101010101010101",
              "vout": 0
            },
            {
              "id": "transaction",
              "type": "transaction",
              "label": "Transaction"
            },
            {
              "id": "output-0",
              "type": "recipient",
              "label": "Output 1",
              "valueSats": 1200,
              "address": "tb1qzs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5d9jmt6"
            },
            {
              "id": "output-1",
              "type": "recipient",
              "label": "Output 2",
              "valueSats": 1800,
              "address": "tb1qz52329g4z52329g4z52329g4z52329g4v4n6pm"
            },
            {
              "id": "output-2",
              "type": "recipient",
              "label": "Output 3",
              "valueSats": 2500,
              "address": "tb1qzctpv9skzctpv9skzctpv9skzctpv9ska34l2d"
            },
            {
              "id": "output-3",
              "type": "change",
              "label": "Change",
              "valueSats": 4094,
              "address": "tb1qvd3kxcmrvd3kxcmrvd3kxcmrvd3kxcmrj26yd5"
            },
            {
              "id": "fee",
              "type": "fee",
              "label": "Fee",
              "valueSats": 406
            }
          ],
          "edges": [
            {
              "source": "input-0",
              "target": "transaction",
              "valueSats": 10000
            },
            {
              "source": "transaction",
              "target": "output-0",
              "valueSats": 1200
            },
            {
              "source": "transaction",
              "target": "output-1",
              "valueSats": 1800
            },
            {
              "source": "transaction",
              "target": "output-2",
              "valueSats": 2500
            },
            {
              "source": "transaction",
              "target": "output-3",
              "valueSats": 4094
            },
            {
              "source": "transaction",
              "target": "fee",
              "valueSats": 406
            }
          ]
        },
        "warnings": [
          "Synthetic offline fixture: invented outpoints, not on-chain funds. Never fund these example addresses.",
          "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried."
        ],
        "validation": {
          "signaturesVerified": false,
          "finalizable": null,
          "chainVerified": false,
          "broadcast": false
        }
      },
      "measured": {
        "inputSats": 10000,
        "outputSats": 9594,
        "recipientSats": 5500,
        "changeSats": 4094,
        "feeSats": 406,
        "requestedFeeRateSatVb": 2,
        "estimatedFeeRateSatVb": 2,
        "estimatedSignedVsize": 203,
        "estimatedSignedWeight": 811,
        "unsignedVsize": 175,
        "unsignedBytes": 175,
        "estimatedBaseFeeSats": 406,
        "discardedChangeSats": 0,
        "inputCount": 1,
        "outputCount": 4,
        "sizeAssumption": "Native P2WPKH: 73-byte signature including sighash and 33-byte compressed public key per input. Conservative estimate, not a signed transaction.",
        "actualSignedVsize": 203,
        "actualSignedWeight": 809,
        "actualSignedBytes": 284,
        "actualFeeRateSatVb": 2
      },
      "buildValidation": {
        "ecdsaSignaturesVerified": true,
        "scriptExecutionVerified": false,
        "nodeAcceptanceTested": false
      },
      "artifacts": {
        "psbt": {
          "path": "/static/lab/custom-split.psbt.txt",
          "sha256": "79913977f25cf2aee4fc75c378f872fc6110b80747c6fd54b560604ff25a5f08",
          "bytes": 301
        },
        "rawUnsigned": {
          "path": "/static/lab/custom-split.unsigned.hex.txt",
          "sha256": "228b15361670624a2a7ccc7e5cf7f1782cfa211991504de7f58aa183f4edc303",
          "bytes": 351
        },
        "signedPsbt": {
          "path": "/static/lab/custom-split.signed.psbt.txt",
          "sha256": "91337d6413ec0e34328733ba3a3d2331eb1b07d30d21da6255c2bd28df7f4bb9",
          "bytes": 441
        },
        "finalizedPsbt": {
          "path": "/static/lab/custom-split.finalized.psbt.txt",
          "sha256": "a4ba15acff21c6f7f7180accdb82e31bf163cc976d08d5d4cc0dbcc432cb17af",
          "bytes": 445
        },
        "rawSigned": {
          "path": "/static/lab/custom-split.signed.hex.txt",
          "sha256": "4d004f675a8263ff2b560311a9885feef9182c9b85fdc01a8797902b1f16d0ee",
          "bytes": 569
        },
        "result": {
          "path": "/static/lab/custom-split.result.json",
          "sha256": "61ffff70312ff92f42dcc24ddeaad3eb3968ef806890246cb46bcb5672866ee4",
          "bytes": 7184
        }
      }
    },
    {
      "id": "consolidation",
      "title": "Consolidate three inputs",
      "description": "Three synthetic inputs become one output; spending more inputs increases this transaction's fee.",
      "options": {
        "mode": "fixture",
        "operation": "consolidation",
        "feeRateSatVb": 2
      },
      "synthetic": true,
      "offline": true,
      "onChain": false,
      "provenance": "Synthetic offline fixture. Outpoints are invented, not mined, broadcast, or confirmed. Never fund example addresses.",
      "methodology": "Built and serialized with pinned bitcoinjs-lib. Estimated size uses maximum-length P2WPKH dummy witnesses. Actual size comes from the build-only signed, ECDSA-verified, finalized synthetic transaction; no node was involved.",
      "result": {
        "ok": true,
        "apiVersion": 1,
        "kind": "workshop",
        "mode": "fixture",
        "synthetic": true,
        "operation": "consolidation",
        "network": {
          "intended": "signet",
          "addressEncoding": "testnet",
          "verified": false,
          "note": "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried."
        },
        "policy": {
          "maxInputs": 20,
          "maxOutputs": 20,
          "maxInspectInputs": 100,
          "maxInspectOutputs": 100,
          "maxTextLength": 262144,
          "maxBytes": 131072,
          "maxMapEntries": 256,
          "maxWorkshopSats": 100000000,
          "maxMoneySats": 2100000000000000,
          "minFeeRateSatVb": 1,
          "maxFeeRateSatVb": 100,
          "maxFeeSats": 100000,
          "dustRelayFeeSatKvb": 3000,
          "p2wpkhDustSats": 294
        },
        "inputs": [
          {
            "id": "sample-1",
            "txid": "0101010101010101010101010101010101010101010101010101010101010101",
            "vout": 0,
            "valueSats": 10000,
            "address": "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx",
            "scriptPubKey": "0014751e76e8199196d454941c45d1b3a323f1433bd6",
            "scriptType": "p2wpkh",
            "synthetic": true,
            "index": 0,
            "sequence": 4294967293
          },
          {
            "id": "sample-2",
            "txid": "0202020202020202020202020202020202020202020202020202020202020202",
            "vout": 0,
            "valueSats": 6500,
            "address": "tb1qq6hag67dl53wl99vzg42z8eyzfz2xlkvvlryfj",
            "scriptPubKey": "001406afd46bcdfd22ef94ac122aa11f241244a37ecc",
            "scriptType": "p2wpkh",
            "synthetic": true,
            "index": 1,
            "sequence": 4294967293
          },
          {
            "id": "sample-3",
            "txid": "0303030303030303030303030303030303030303030303030303030303030303",
            "vout": 0,
            "valueSats": 3500,
            "address": "tb1q0ht9tyks4vh7p5p904t340cr9nvahy7um9zdem",
            "scriptPubKey": "00147dd65592d0ab2fe0d0257d571abf032cd9db93dc",
            "scriptType": "p2wpkh",
            "synthetic": true,
            "index": 2,
            "sequence": 4294967293
          }
        ],
        "outputs": [
          {
            "address": "tb1qzs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5d9jmt6",
            "scriptPubKey": "00141414141414141414141414141414141414141414",
            "scriptType": "p2wpkh",
            "valueSats": 19506,
            "role": "recipient",
            "index": 0,
            "dustThresholdSats": 294,
            "dust": false
          }
        ],
        "availableInputs": [
          {
            "id": "sample-1",
            "txid": "0101010101010101010101010101010101010101010101010101010101010101",
            "vout": 0,
            "valueSats": 10000,
            "address": "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx",
            "scriptPubKey": "0014751e76e8199196d454941c45d1b3a323f1433bd6",
            "scriptType": "p2wpkh",
            "synthetic": true
          },
          {
            "id": "sample-2",
            "txid": "0202020202020202020202020202020202020202020202020202020202020202",
            "vout": 0,
            "valueSats": 6500,
            "address": "tb1qq6hag67dl53wl99vzg42z8eyzfz2xlkvvlryfj",
            "scriptPubKey": "001406afd46bcdfd22ef94ac122aa11f241244a37ecc",
            "scriptType": "p2wpkh",
            "synthetic": true
          },
          {
            "id": "sample-3",
            "txid": "0303030303030303030303030303030303030303030303030303030303030303",
            "vout": 0,
            "valueSats": 3500,
            "address": "tb1q0ht9tyks4vh7p5p904t340cr9nvahy7um9zdem",
            "scriptPubKey": "00147dd65592d0ab2fe0d0257d571abf032cd9db93dc",
            "scriptType": "p2wpkh",
            "synthetic": true
          }
        ],
        "summary": {
          "inputSats": 20000,
          "outputSats": 19506,
          "recipientSats": 19506,
          "changeSats": 0,
          "feeSats": 494,
          "requestedFeeRateSatVb": 2,
          "estimatedFeeRateSatVb": 2,
          "estimatedSignedVsize": 247,
          "estimatedSignedWeight": 985,
          "unsignedVsize": 164,
          "unsignedBytes": 164,
          "estimatedBaseFeeSats": 494,
          "discardedChangeSats": 0,
          "inputCount": 3,
          "outputCount": 1,
          "sizeAssumption": "Native P2WPKH: 73-byte signature including sighash and 33-byte compressed public key per input. Conservative estimate, not a signed transaction."
        },
        "psbtBase64": "cHNidP8BAKQCAAAAAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAD9////AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAAAAP3///8DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAA/f///wEyTAAAAAAAABYAFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAAAABAR8QJwAAAAAAABYAFHUedugZkZbUVJQcRdGzoyPxQzvWAAEBH2QZAAAAAAAAFgAUBq/Ua839Iu+UrBIqoR8kEkSjfswAAQEfrA0AAAAAAAAWABR91lWS0Ksv4NAlfVcavwMs2duT3AAA",
        "rawUnsignedTxHex": "020000000301010101010101010101010101010101010101010101010101010101010101010000000000fdffffff02020202020202020202020202020202020202020202020202020202020202020000000000fdffffff03030303030303030303030303030303030303030303030303030303030303030000000000fdffffff01324c000000000000160014141414141414141414141414141414141414141400000000",
        "txid": "d3bacad513c6ba9669b3b161328678b331d9242010cafa13634daf8e6835c25f",
        "txidKind": "unsigned-transaction",
        "locktime": 0,
        "sequence": 4294967293,
        "rbf": true,
        "graph": {
          "nodes": [
            {
              "id": "input-0",
              "type": "input",
              "label": "Input 1",
              "valueSats": 10000,
              "txid": "0101010101010101010101010101010101010101010101010101010101010101",
              "vout": 0
            },
            {
              "id": "input-1",
              "type": "input",
              "label": "Input 2",
              "valueSats": 6500,
              "txid": "0202020202020202020202020202020202020202020202020202020202020202",
              "vout": 0
            },
            {
              "id": "input-2",
              "type": "input",
              "label": "Input 3",
              "valueSats": 3500,
              "txid": "0303030303030303030303030303030303030303030303030303030303030303",
              "vout": 0
            },
            {
              "id": "transaction",
              "type": "transaction",
              "label": "Transaction"
            },
            {
              "id": "output-0",
              "type": "recipient",
              "label": "Output 1",
              "valueSats": 19506,
              "address": "tb1qzs2pg9q5zs2pg9q5zs2pg9q5zs2pg9q5d9jmt6"
            },
            {
              "id": "fee",
              "type": "fee",
              "label": "Fee",
              "valueSats": 494
            }
          ],
          "edges": [
            {
              "source": "input-0",
              "target": "transaction",
              "valueSats": 10000
            },
            {
              "source": "input-1",
              "target": "transaction",
              "valueSats": 6500
            },
            {
              "source": "input-2",
              "target": "transaction",
              "valueSats": 3500
            },
            {
              "source": "transaction",
              "target": "output-0",
              "valueSats": 19506
            },
            {
              "source": "transaction",
              "target": "fee",
              "valueSats": 494
            }
          ]
        },
        "warnings": [
          "Synthetic offline fixture: invented outpoints, not on-chain funds. Never fund these example addresses.",
          "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried."
        ],
        "validation": {
          "signaturesVerified": false,
          "finalizable": null,
          "chainVerified": false,
          "broadcast": false
        }
      },
      "measured": {
        "inputSats": 20000,
        "outputSats": 19506,
        "recipientSats": 19506,
        "changeSats": 0,
        "feeSats": 494,
        "requestedFeeRateSatVb": 2,
        "estimatedFeeRateSatVb": 2,
        "estimatedSignedVsize": 247,
        "estimatedSignedWeight": 985,
        "unsignedVsize": 164,
        "unsignedBytes": 164,
        "estimatedBaseFeeSats": 494,
        "discardedChangeSats": 0,
        "inputCount": 3,
        "outputCount": 1,
        "sizeAssumption": "Native P2WPKH: 73-byte signature including sighash and 33-byte compressed public key per input. Conservative estimate, not a signed transaction.",
        "actualSignedVsize": 246,
        "actualSignedWeight": 981,
        "actualSignedBytes": 489,
        "actualFeeRateSatVb": 2.008130081300813
      },
      "buildValidation": {
        "ecdsaSignaturesVerified": true,
        "scriptExecutionVerified": false,
        "nodeAcceptanceTested": false
      },
      "artifacts": {
        "psbt": {
          "path": "/static/lab/consolidation.psbt.txt",
          "sha256": "da1ed1e6c5a6258fc7f5b33ae614949829039da42df5b7b94d134e961be1d61b",
          "bytes": 373
        },
        "rawUnsigned": {
          "path": "/static/lab/consolidation.unsigned.hex.txt",
          "sha256": "56f1a739a91dfbbc138e89c3367b9cea9a14790631c248ff0ff5385e63ec8741",
          "bytes": 329
        },
        "signedPsbt": {
          "path": "/static/lab/consolidation.signed.psbt.txt",
          "sha256": "373eaecec228d8c42cbc40fe6cfe5d1070955d5d1fb8e6d5b9d712d6c26b11cb",
          "bytes": 805
        },
        "finalizedPsbt": {
          "path": "/static/lab/consolidation.finalized.psbt.txt",
          "sha256": "30357920d346c15222c070193861450b455deb4a6b52fcbd351b0aa5f258fb1c",
          "bytes": 817
        },
        "rawSigned": {
          "path": "/static/lab/consolidation.signed.hex.txt",
          "sha256": "d7e1a878997268b7c422c4b505567b638ab611b62195f084ab3336b7eaf57c34",
          "bytes": 979
        },
        "result": {
          "path": "/static/lab/consolidation.result.json",
          "sha256": "1e28e1ae407e6de0ad3d24d0a29994680aea1249a983d85748ae1c552f2c86e1",
          "bytes": 6907
        }
      }
    }
  ],
  "doctor": [
    {
      "id": "missing-utxo",
      "title": "Missing previous output",
      "description": "The PSBT omits its previous output. Input amount and fee are unknown; adding the witness UTXO repairs the metadata, not the missing signature.",
      "text": "cHNidP8BAFICAAAAARERERERERERERERERERERERERERERERERERERERERERAAAAAAD9////ARwlAAAAAAAAFgAUKioqKioqKioqKioqKioqKioqKiqQ0AMAAAAA",
      "correctedId": "corrected-utxo",
      "kind": "doctor",
      "synthetic": true,
      "offline": true,
      "onChain": false,
      "provenance": "Synthetic offline fixture. Outpoints are invented, not mined, broadcast, or confirmed. Never fund example addresses.",
      "result": {
        "ok": true,
        "apiVersion": 1,
        "kind": "inspection",
        "format": "psbt",
        "network": {
          "intended": "signet",
          "addressEncoding": "testnet",
          "verified": false,
          "note": "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried."
        },
        "synthetic": null,
        "status": "missing-utxo",
        "txid": "908aa40c5e89006fde0c629076b74e8fb82bf72814532a78b05d9cd885c2d389",
        "txidKind": "unsigned-transaction",
        "version": 2,
        "inputs": [
          {
            "index": 0,
            "txid": "1111111111111111111111111111111111111111111111111111111111111111",
            "vout": 0,
            "valueSats": null,
            "amountSource": null,
            "scriptPubKey": null,
            "scriptType": "unknown",
            "address": null,
            "sequence": {
              "value": 4294967293,
              "hex": "fffffffd",
              "final": false,
              "signalsRbf": true,
              "relativeLockEnabled": false,
              "relativeLockType": null,
              "relativeLockValue": null
            },
            "partialSignatureCount": 0,
            "signatureCount": 0,
            "finalFieldsPresent": false,
            "signatureStatus": "missing",
            "requiredSignatures": null,
            "scriptSigBytes": 0,
            "witnessItems": 0,
            "sighashType": null,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            },
            "redeemScript": null,
            "witnessScript": null
          }
        ],
        "outputs": [
          {
            "index": 0,
            "valueSats": 9500,
            "scriptPubKey": "00142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a",
            "scriptType": "p2wpkh",
            "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr",
            "dustThresholdSats": 294,
            "dust": false,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            }
          }
        ],
        "summary": {
          "inputSats": null,
          "knownInputSats": 0,
          "outputSats": 9500,
          "feeSats": null,
          "inputCount": 1,
          "outputCount": 1,
          "missingUtxoCount": 1,
          "unsignedVsize": 82,
          "serializedVsize": 82,
          "serializedBytes": 82,
          "weight": 328,
          "sizeKind": "unsigned-transaction",
          "estimatedSignedVsize": null,
          "feeRateSatVb": null,
          "estimatedFeeRateSatVb": null
        },
        "locktime": {
          "value": 250000,
          "type": "block-height",
          "active": true,
          "satisfied": null
        },
        "rbf": {
          "explicitSignal": true,
          "replaceabilityVerified": false,
          "note": "Sequence signaling is not a guarantee of replacement acceptance; node policy and conflicts were not checked."
        },
        "validation": {
          "signaturesVerified": false,
          "scriptsVerified": false,
          "finalizable": null,
          "chainVerified": false,
          "mempoolAccepted": null
        },
        "findings": [
          {
            "code": "MISSING_UTXO",
            "severity": "warning",
            "message": "Previous output amount and script are absent; fee and signing prerequisites remain unknown.",
            "inputIndex": 0
          },
          {
            "code": "MISSING_SIGNATURES",
            "severity": "warning",
            "message": "No partial signatures or final unlocking fields are present; script requirements were not evaluated.",
            "inputIndex": 0
          },
          {
            "code": "UNSUPPORTED_SIZE_ESTIMATE",
            "severity": "info",
            "message": "No signed-size estimate for this input script or missing script metadata.",
            "inputIndex": 0
          },
          {
            "code": "FEE_UNKNOWN",
            "severity": "info",
            "message": "The fee cannot be calculated without every previous output amount."
          },
          {
            "code": "TIMELOCK_UNCHECKED",
            "severity": "info",
            "message": "Locktime/sequence constraints are present. Chain height, median time, and input ages were not checked."
          },
          {
            "code": "NOT_VALIDATED",
            "severity": "info",
            "message": "Parsing and metadata inspection only: no signature/script verification, finalizability decision, UTXO-set check, or mempool test."
          }
        ],
        "warnings": [
          "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried.",
          "Input metadata is supplied by the file, not authenticated by a node."
        ],
        "graph": {
          "nodes": [
            {
              "id": "input-0",
              "type": "input",
              "label": "Input 1",
              "valueSats": null,
              "txid": "1111111111111111111111111111111111111111111111111111111111111111",
              "vout": 0
            },
            {
              "id": "transaction",
              "type": "transaction",
              "label": "Transaction"
            },
            {
              "id": "output-0",
              "type": "output",
              "label": "Output 1",
              "valueSats": 9500,
              "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr"
            },
            {
              "id": "fee",
              "type": "fee",
              "label": "Fee",
              "valueSats": null
            }
          ],
          "edges": [
            {
              "source": "input-0",
              "target": "transaction",
              "valueSats": null
            },
            {
              "source": "transaction",
              "target": "output-0",
              "valueSats": 9500
            },
            {
              "source": "transaction",
              "target": "fee",
              "valueSats": null
            }
          ]
        }
      },
      "measured": {
        "inputSats": null,
        "knownInputSats": 0,
        "outputSats": 9500,
        "feeSats": null,
        "inputCount": 1,
        "outputCount": 1,
        "missingUtxoCount": 1,
        "unsignedVsize": 82,
        "serializedVsize": 82,
        "serializedBytes": 82,
        "weight": 328,
        "sizeKind": "unsigned-transaction",
        "estimatedSignedVsize": null,
        "feeRateSatVb": null,
        "estimatedFeeRateSatVb": null,
        "status": "missing-utxo",
        "findingCodes": [
          "MISSING_UTXO",
          "MISSING_SIGNATURES",
          "UNSUPPORTED_SIZE_ESTIMATE",
          "FEE_UNKNOWN",
          "TIMELOCK_UNCHECKED",
          "NOT_VALIDATED"
        ]
      },
      "buildValidation": {
        "ecdsaSignatureVerified": false,
        "scriptExecutionVerified": false,
        "nodeAcceptanceTested": false
      },
      "artifacts": {
        "input": {
          "path": "/static/lab/missing-utxo.psbt.txt",
          "sha256": "158abfc2ea4ecf41fa1fde0b45782659d362d8674d6278aeacbe947a916e309b",
          "bytes": 125
        },
        "result": {
          "path": "/static/lab/missing-utxo.result.json",
          "sha256": "d0d341ac5f9a455cdeab0604bb45a40fa778417bd84d25413264d4e1086ece0f",
          "bytes": 5348
        }
      }
    },
    {
      "id": "corrected-utxo",
      "title": "Previous output supplied",
      "description": "Adding the synthetic 10,000-sat witness UTXO reveals a 500-sat fee. The PSBT still has no signature.",
      "text": "cHNidP8BAFICAAAAARERERERERERERERERERERERERERERERERERERERERERAAAAAAD9////ARwlAAAAAAAAFgAUKioqKioqKioqKioqKioqKioqKiqQ0AMAAAEBHxAnAAAAAAAAFgAUdR526BmRltRUlBxF0bOjI/FDO9YAAA==",
      "correctedId": "signed-psbt",
      "kind": "doctor",
      "synthetic": true,
      "offline": true,
      "onChain": false,
      "provenance": "Synthetic offline fixture. Outpoints are invented, not mined, broadcast, or confirmed. Never fund example addresses.",
      "result": {
        "ok": true,
        "apiVersion": 1,
        "kind": "inspection",
        "format": "psbt",
        "network": {
          "intended": "signet",
          "addressEncoding": "testnet",
          "verified": false,
          "note": "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried."
        },
        "synthetic": null,
        "status": "missing-signatures",
        "txid": "908aa40c5e89006fde0c629076b74e8fb82bf72814532a78b05d9cd885c2d389",
        "txidKind": "unsigned-transaction",
        "version": 2,
        "inputs": [
          {
            "index": 0,
            "txid": "1111111111111111111111111111111111111111111111111111111111111111",
            "vout": 0,
            "valueSats": 10000,
            "amountSource": "witnessUtxo",
            "scriptPubKey": "0014751e76e8199196d454941c45d1b3a323f1433bd6",
            "scriptType": "p2wpkh",
            "address": "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx",
            "sequence": {
              "value": 4294967293,
              "hex": "fffffffd",
              "final": false,
              "signalsRbf": true,
              "relativeLockEnabled": false,
              "relativeLockType": null,
              "relativeLockValue": null
            },
            "partialSignatureCount": 0,
            "signatureCount": 0,
            "finalFieldsPresent": false,
            "signatureStatus": "missing",
            "requiredSignatures": 1,
            "scriptSigBytes": 0,
            "witnessItems": 0,
            "sighashType": null,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            },
            "redeemScript": null,
            "witnessScript": null
          }
        ],
        "outputs": [
          {
            "index": 0,
            "valueSats": 9500,
            "scriptPubKey": "00142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a",
            "scriptType": "p2wpkh",
            "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr",
            "dustThresholdSats": 294,
            "dust": false,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            }
          }
        ],
        "summary": {
          "inputSats": 10000,
          "knownInputSats": 10000,
          "outputSats": 9500,
          "feeSats": 500,
          "inputCount": 1,
          "outputCount": 1,
          "missingUtxoCount": 0,
          "unsignedVsize": 82,
          "serializedVsize": 82,
          "serializedBytes": 82,
          "weight": 328,
          "sizeKind": "unsigned-transaction",
          "estimatedSignedVsize": 110,
          "feeRateSatVb": null,
          "estimatedFeeRateSatVb": 4.545454545454546
        },
        "locktime": {
          "value": 250000,
          "type": "block-height",
          "active": true,
          "satisfied": null
        },
        "rbf": {
          "explicitSignal": true,
          "replaceabilityVerified": false,
          "note": "Sequence signaling is not a guarantee of replacement acceptance; node policy and conflicts were not checked."
        },
        "validation": {
          "signaturesVerified": false,
          "scriptsVerified": false,
          "finalizable": null,
          "chainVerified": false,
          "mempoolAccepted": null
        },
        "findings": [
          {
            "code": "MISSING_SIGNATURES",
            "severity": "warning",
            "message": "No partial signatures or final unlocking fields are present; script requirements were not evaluated.",
            "inputIndex": 0
          },
          {
            "code": "TIMELOCK_UNCHECKED",
            "severity": "info",
            "message": "Locktime/sequence constraints are present. Chain height, median time, and input ages were not checked."
          },
          {
            "code": "NOT_VALIDATED",
            "severity": "info",
            "message": "Parsing and metadata inspection only: no signature/script verification, finalizability decision, UTXO-set check, or mempool test."
          }
        ],
        "warnings": [
          "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried.",
          "Input metadata is supplied by the file, not authenticated by a node."
        ],
        "graph": {
          "nodes": [
            {
              "id": "input-0",
              "type": "input",
              "label": "Input 1",
              "valueSats": 10000,
              "txid": "1111111111111111111111111111111111111111111111111111111111111111",
              "vout": 0
            },
            {
              "id": "transaction",
              "type": "transaction",
              "label": "Transaction"
            },
            {
              "id": "output-0",
              "type": "output",
              "label": "Output 1",
              "valueSats": 9500,
              "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr"
            },
            {
              "id": "fee",
              "type": "fee",
              "label": "Fee",
              "valueSats": 500
            }
          ],
          "edges": [
            {
              "source": "input-0",
              "target": "transaction",
              "valueSats": 10000
            },
            {
              "source": "transaction",
              "target": "output-0",
              "valueSats": 9500
            },
            {
              "source": "transaction",
              "target": "fee",
              "valueSats": 500
            }
          ]
        }
      },
      "measured": {
        "inputSats": 10000,
        "knownInputSats": 10000,
        "outputSats": 9500,
        "feeSats": 500,
        "inputCount": 1,
        "outputCount": 1,
        "missingUtxoCount": 0,
        "unsignedVsize": 82,
        "serializedVsize": 82,
        "serializedBytes": 82,
        "weight": 328,
        "sizeKind": "unsigned-transaction",
        "estimatedSignedVsize": 110,
        "feeRateSatVb": null,
        "estimatedFeeRateSatVb": 4.545454545454546,
        "status": "missing-signatures",
        "findingCodes": [
          "MISSING_SIGNATURES",
          "TIMELOCK_UNCHECKED",
          "NOT_VALIDATED"
        ]
      },
      "buildValidation": {
        "ecdsaSignatureVerified": false,
        "scriptExecutionVerified": false,
        "nodeAcceptanceTested": false
      },
      "artifacts": {
        "input": {
          "path": "/static/lab/corrected-utxo.psbt.txt",
          "sha256": "3072cd183d2ee98d18c4b169b46cb500509501b9157635a488a7e09245f65b71",
          "bytes": 173
        },
        "result": {
          "path": "/static/lab/corrected-utxo.result.json",
          "sha256": "c33affac284cc4e7f4fb9ab95168cb3f41ab2b13d854c44a19080a8132a08922",
          "bytes": 4900
        }
      }
    },
    {
      "id": "missing-signatures",
      "title": "Unsigned PSBT",
      "description": "Complete synthetic P2WPKH UTXO metadata is present, but the required signature is absent.",
      "text": "cHNidP8BAFICAAAAARERERERERERERERERERERERERERERERERERERERERERAAAAAAD9////ARwlAAAAAAAAFgAUKioqKioqKioqKioqKioqKioqKiqQ0AMAAAEBHxAnAAAAAAAAFgAUdR526BmRltRUlBxF0bOjI/FDO9YAAA==",
      "correctedId": "signed-psbt",
      "kind": "doctor",
      "synthetic": true,
      "offline": true,
      "onChain": false,
      "provenance": "Synthetic offline fixture. Outpoints are invented, not mined, broadcast, or confirmed. Never fund example addresses.",
      "result": {
        "ok": true,
        "apiVersion": 1,
        "kind": "inspection",
        "format": "psbt",
        "network": {
          "intended": "signet",
          "addressEncoding": "testnet",
          "verified": false,
          "note": "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried."
        },
        "synthetic": null,
        "status": "missing-signatures",
        "txid": "908aa40c5e89006fde0c629076b74e8fb82bf72814532a78b05d9cd885c2d389",
        "txidKind": "unsigned-transaction",
        "version": 2,
        "inputs": [
          {
            "index": 0,
            "txid": "1111111111111111111111111111111111111111111111111111111111111111",
            "vout": 0,
            "valueSats": 10000,
            "amountSource": "witnessUtxo",
            "scriptPubKey": "0014751e76e8199196d454941c45d1b3a323f1433bd6",
            "scriptType": "p2wpkh",
            "address": "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx",
            "sequence": {
              "value": 4294967293,
              "hex": "fffffffd",
              "final": false,
              "signalsRbf": true,
              "relativeLockEnabled": false,
              "relativeLockType": null,
              "relativeLockValue": null
            },
            "partialSignatureCount": 0,
            "signatureCount": 0,
            "finalFieldsPresent": false,
            "signatureStatus": "missing",
            "requiredSignatures": 1,
            "scriptSigBytes": 0,
            "witnessItems": 0,
            "sighashType": null,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            },
            "redeemScript": null,
            "witnessScript": null
          }
        ],
        "outputs": [
          {
            "index": 0,
            "valueSats": 9500,
            "scriptPubKey": "00142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a",
            "scriptType": "p2wpkh",
            "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr",
            "dustThresholdSats": 294,
            "dust": false,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            }
          }
        ],
        "summary": {
          "inputSats": 10000,
          "knownInputSats": 10000,
          "outputSats": 9500,
          "feeSats": 500,
          "inputCount": 1,
          "outputCount": 1,
          "missingUtxoCount": 0,
          "unsignedVsize": 82,
          "serializedVsize": 82,
          "serializedBytes": 82,
          "weight": 328,
          "sizeKind": "unsigned-transaction",
          "estimatedSignedVsize": 110,
          "feeRateSatVb": null,
          "estimatedFeeRateSatVb": 4.545454545454546
        },
        "locktime": {
          "value": 250000,
          "type": "block-height",
          "active": true,
          "satisfied": null
        },
        "rbf": {
          "explicitSignal": true,
          "replaceabilityVerified": false,
          "note": "Sequence signaling is not a guarantee of replacement acceptance; node policy and conflicts were not checked."
        },
        "validation": {
          "signaturesVerified": false,
          "scriptsVerified": false,
          "finalizable": null,
          "chainVerified": false,
          "mempoolAccepted": null
        },
        "findings": [
          {
            "code": "MISSING_SIGNATURES",
            "severity": "warning",
            "message": "No partial signatures or final unlocking fields are present; script requirements were not evaluated.",
            "inputIndex": 0
          },
          {
            "code": "TIMELOCK_UNCHECKED",
            "severity": "info",
            "message": "Locktime/sequence constraints are present. Chain height, median time, and input ages were not checked."
          },
          {
            "code": "NOT_VALIDATED",
            "severity": "info",
            "message": "Parsing and metadata inspection only: no signature/script verification, finalizability decision, UTXO-set check, or mempool test."
          }
        ],
        "warnings": [
          "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried.",
          "Input metadata is supplied by the file, not authenticated by a node."
        ],
        "graph": {
          "nodes": [
            {
              "id": "input-0",
              "type": "input",
              "label": "Input 1",
              "valueSats": 10000,
              "txid": "1111111111111111111111111111111111111111111111111111111111111111",
              "vout": 0
            },
            {
              "id": "transaction",
              "type": "transaction",
              "label": "Transaction"
            },
            {
              "id": "output-0",
              "type": "output",
              "label": "Output 1",
              "valueSats": 9500,
              "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr"
            },
            {
              "id": "fee",
              "type": "fee",
              "label": "Fee",
              "valueSats": 500
            }
          ],
          "edges": [
            {
              "source": "input-0",
              "target": "transaction",
              "valueSats": 10000
            },
            {
              "source": "transaction",
              "target": "output-0",
              "valueSats": 9500
            },
            {
              "source": "transaction",
              "target": "fee",
              "valueSats": 500
            }
          ]
        }
      },
      "measured": {
        "inputSats": 10000,
        "knownInputSats": 10000,
        "outputSats": 9500,
        "feeSats": 500,
        "inputCount": 1,
        "outputCount": 1,
        "missingUtxoCount": 0,
        "unsignedVsize": 82,
        "serializedVsize": 82,
        "serializedBytes": 82,
        "weight": 328,
        "sizeKind": "unsigned-transaction",
        "estimatedSignedVsize": 110,
        "feeRateSatVb": null,
        "estimatedFeeRateSatVb": 4.545454545454546,
        "status": "missing-signatures",
        "findingCodes": [
          "MISSING_SIGNATURES",
          "TIMELOCK_UNCHECKED",
          "NOT_VALIDATED"
        ]
      },
      "buildValidation": {
        "ecdsaSignatureVerified": false,
        "scriptExecutionVerified": false,
        "nodeAcceptanceTested": false
      },
      "artifacts": {
        "input": {
          "path": "/static/lab/missing-signatures.psbt.txt",
          "sha256": "3072cd183d2ee98d18c4b169b46cb500509501b9157635a488a7e09245f65b71",
          "bytes": 173
        },
        "result": {
          "path": "/static/lab/missing-signatures.result.json",
          "sha256": "c33affac284cc4e7f4fb9ab95168cb3f41ab2b13d854c44a19080a8132a08922",
          "bytes": 4900
        }
      }
    },
    {
      "id": "signed-psbt",
      "title": "Signature present",
      "description": "The build script signed this synthetic P2WPKH fixture and verified its ECDSA signature. The Doctor reports presence only and does not repeat cryptographic verification.",
      "text": "cHNidP8BAFICAAAAARERERERERERERERERERERERERERERERERERERERERERAAAAAAD9////ARwlAAAAAAAAFgAUKioqKioqKioqKioqKioqKioqKiqQ0AMAAAEBHxAnAAAAAAAAFgAUdR526BmRltRUlBxF0bOjI/FDO9YiAgJ5vmZ++dy7rFWgYpXOhwsHApv82y3OKNlZ8oFbFvgXmEcwRAIgWgoQooVlxsEwpdeOkM33XUzcrJAwz84VTHal3ctqJmoCIClesGMaLLd2MzZTGjBIaS7VecDYirr7xhRysyffWhTPAQAA",
      "correctedId": "finalized-psbt",
      "kind": "doctor",
      "synthetic": true,
      "offline": true,
      "onChain": false,
      "provenance": "Synthetic offline fixture. Outpoints are invented, not mined, broadcast, or confirmed. Never fund example addresses.",
      "result": {
        "ok": true,
        "apiVersion": 1,
        "kind": "inspection",
        "format": "psbt",
        "network": {
          "intended": "signet",
          "addressEncoding": "testnet",
          "verified": false,
          "note": "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried."
        },
        "synthetic": null,
        "status": "signatures-present",
        "txid": "908aa40c5e89006fde0c629076b74e8fb82bf72814532a78b05d9cd885c2d389",
        "txidKind": "unsigned-transaction",
        "version": 2,
        "inputs": [
          {
            "index": 0,
            "txid": "1111111111111111111111111111111111111111111111111111111111111111",
            "vout": 0,
            "valueSats": 10000,
            "amountSource": "witnessUtxo",
            "scriptPubKey": "0014751e76e8199196d454941c45d1b3a323f1433bd6",
            "scriptType": "p2wpkh",
            "address": "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx",
            "sequence": {
              "value": 4294967293,
              "hex": "fffffffd",
              "final": false,
              "signalsRbf": true,
              "relativeLockEnabled": false,
              "relativeLockType": null,
              "relativeLockValue": null
            },
            "partialSignatureCount": 1,
            "signatureCount": 1,
            "finalFieldsPresent": false,
            "signatureStatus": "signatures-present-unverified",
            "requiredSignatures": 1,
            "scriptSigBytes": 0,
            "witnessItems": 0,
            "sighashType": null,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            },
            "redeemScript": null,
            "witnessScript": null
          }
        ],
        "outputs": [
          {
            "index": 0,
            "valueSats": 9500,
            "scriptPubKey": "00142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a",
            "scriptType": "p2wpkh",
            "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr",
            "dustThresholdSats": 294,
            "dust": false,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            }
          }
        ],
        "summary": {
          "inputSats": 10000,
          "knownInputSats": 10000,
          "outputSats": 9500,
          "feeSats": 500,
          "inputCount": 1,
          "outputCount": 1,
          "missingUtxoCount": 0,
          "unsignedVsize": 82,
          "serializedVsize": 82,
          "serializedBytes": 82,
          "weight": 328,
          "sizeKind": "unsigned-transaction",
          "estimatedSignedVsize": 110,
          "feeRateSatVb": null,
          "estimatedFeeRateSatVb": 4.545454545454546
        },
        "locktime": {
          "value": 250000,
          "type": "block-height",
          "active": true,
          "satisfied": null
        },
        "rbf": {
          "explicitSignal": true,
          "replaceabilityVerified": false,
          "note": "Sequence signaling is not a guarantee of replacement acceptance; node policy and conflicts were not checked."
        },
        "validation": {
          "signaturesVerified": false,
          "scriptsVerified": false,
          "finalizable": null,
          "chainVerified": false,
          "mempoolAccepted": null
        },
        "findings": [
          {
            "code": "TIMELOCK_UNCHECKED",
            "severity": "info",
            "message": "Locktime/sequence constraints are present. Chain height, median time, and input ages were not checked."
          },
          {
            "code": "NOT_VALIDATED",
            "severity": "info",
            "message": "Parsing and metadata inspection only: no signature/script verification, finalizability decision, UTXO-set check, or mempool test."
          }
        ],
        "warnings": [
          "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried.",
          "Input metadata is supplied by the file, not authenticated by a node."
        ],
        "graph": {
          "nodes": [
            {
              "id": "input-0",
              "type": "input",
              "label": "Input 1",
              "valueSats": 10000,
              "txid": "1111111111111111111111111111111111111111111111111111111111111111",
              "vout": 0
            },
            {
              "id": "transaction",
              "type": "transaction",
              "label": "Transaction"
            },
            {
              "id": "output-0",
              "type": "output",
              "label": "Output 1",
              "valueSats": 9500,
              "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr"
            },
            {
              "id": "fee",
              "type": "fee",
              "label": "Fee",
              "valueSats": 500
            }
          ],
          "edges": [
            {
              "source": "input-0",
              "target": "transaction",
              "valueSats": 10000
            },
            {
              "source": "transaction",
              "target": "output-0",
              "valueSats": 9500
            },
            {
              "source": "transaction",
              "target": "fee",
              "valueSats": 500
            }
          ]
        }
      },
      "measured": {
        "inputSats": 10000,
        "knownInputSats": 10000,
        "outputSats": 9500,
        "feeSats": 500,
        "inputCount": 1,
        "outputCount": 1,
        "missingUtxoCount": 0,
        "unsignedVsize": 82,
        "serializedVsize": 82,
        "serializedBytes": 82,
        "weight": 328,
        "sizeKind": "unsigned-transaction",
        "estimatedSignedVsize": 110,
        "feeRateSatVb": null,
        "estimatedFeeRateSatVb": 4.545454545454546,
        "status": "signatures-present",
        "findingCodes": [
          "TIMELOCK_UNCHECKED",
          "NOT_VALIDATED"
        ]
      },
      "buildValidation": {
        "ecdsaSignatureVerified": true,
        "scriptExecutionVerified": false,
        "nodeAcceptanceTested": false,
        "method": "bitcoinjs-lib BIP143 sighash with noble secp256k1 ECDSA verification before finalization."
      },
      "artifacts": {
        "input": {
          "path": "/static/lab/signed-psbt.psbt.txt",
          "sha256": "27637d9c5996ae16ec4defdc52ccda3e0f58cd46c85816624485bf9d47df4d00",
          "bytes": 313
        },
        "result": {
          "path": "/static/lab/signed-psbt.result.json",
          "sha256": "30a2047e1d643f9b021d0fefa5dba1bfae3b0c4a5967dc8197beb0d16581ab9d",
          "bytes": 4701
        }
      }
    },
    {
      "id": "finalized-psbt",
      "title": "Final witness fields",
      "description": "bitcoinjs-lib finalized the verified synthetic signature and extracted a transaction. Final field presence is not a Doctor claim of script validity or network acceptance.",
      "text": "cHNidP8BAFICAAAAARERERERERERERERERERERERERERERERERERERERERERAAAAAAD9////ARwlAAAAAAAAFgAUKioqKioqKioqKioqKioqKioqKiqQ0AMAAAEBHxAnAAAAAAAAFgAUdR526BmRltRUlBxF0bOjI/FDO9YBCGsCRzBEAiBaChCihWXGwTCl146QzfddTNyskDDPzhVMdqXdy2omagIgKV6wYxost3YzNlMaMEhpLtV5wNiKuvvGFHKzJ99aFM8BIQJ5vmZ++dy7rFWgYpXOhwsHApv82y3OKNlZ8oFbFvgXmAAA",
      "kind": "doctor",
      "synthetic": true,
      "offline": true,
      "onChain": false,
      "provenance": "Synthetic offline fixture. Outpoints are invented, not mined, broadcast, or confirmed. Never fund example addresses.",
      "result": {
        "ok": true,
        "apiVersion": 1,
        "kind": "inspection",
        "format": "psbt",
        "network": {
          "intended": "signet",
          "addressEncoding": "testnet",
          "verified": false,
          "note": "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried."
        },
        "synthetic": null,
        "status": "final-fields-present",
        "txid": "908aa40c5e89006fde0c629076b74e8fb82bf72814532a78b05d9cd885c2d389",
        "txidKind": "serialized-transaction",
        "version": 2,
        "inputs": [
          {
            "index": 0,
            "txid": "1111111111111111111111111111111111111111111111111111111111111111",
            "vout": 0,
            "valueSats": 10000,
            "amountSource": "witnessUtxo",
            "scriptPubKey": "0014751e76e8199196d454941c45d1b3a323f1433bd6",
            "scriptType": "p2wpkh",
            "address": "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx",
            "sequence": {
              "value": 4294967293,
              "hex": "fffffffd",
              "final": false,
              "signalsRbf": true,
              "relativeLockEnabled": false,
              "relativeLockType": null,
              "relativeLockValue": null
            },
            "partialSignatureCount": 0,
            "signatureCount": 0,
            "finalFieldsPresent": true,
            "signatureStatus": "final-fields-present-unverified",
            "requiredSignatures": 1,
            "scriptSigBytes": 0,
            "witnessItems": 2,
            "sighashType": null,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            },
            "redeemScript": null,
            "witnessScript": null
          }
        ],
        "outputs": [
          {
            "index": 0,
            "valueSats": 9500,
            "scriptPubKey": "00142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a",
            "scriptType": "p2wpkh",
            "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr",
            "dustThresholdSats": 294,
            "dust": false,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            }
          }
        ],
        "summary": {
          "inputSats": 10000,
          "knownInputSats": 10000,
          "outputSats": 9500,
          "feeSats": 500,
          "inputCount": 1,
          "outputCount": 1,
          "missingUtxoCount": 0,
          "unsignedVsize": 82,
          "serializedVsize": 110,
          "serializedBytes": 191,
          "weight": 437,
          "sizeKind": "final-fields-serialization-not-validated",
          "estimatedSignedVsize": null,
          "feeRateSatVb": 4.545454545454546,
          "estimatedFeeRateSatVb": null
        },
        "locktime": {
          "value": 250000,
          "type": "block-height",
          "active": true,
          "satisfied": null
        },
        "rbf": {
          "explicitSignal": true,
          "replaceabilityVerified": false,
          "note": "Sequence signaling is not a guarantee of replacement acceptance; node policy and conflicts were not checked."
        },
        "validation": {
          "signaturesVerified": false,
          "scriptsVerified": false,
          "finalizable": null,
          "chainVerified": false,
          "mempoolAccepted": null
        },
        "findings": [
          {
            "code": "TIMELOCK_UNCHECKED",
            "severity": "info",
            "message": "Locktime/sequence constraints are present. Chain height, median time, and input ages were not checked."
          },
          {
            "code": "NOT_VALIDATED",
            "severity": "info",
            "message": "Parsing and metadata inspection only: no signature/script verification, finalizability decision, UTXO-set check, or mempool test."
          }
        ],
        "warnings": [
          "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried.",
          "Input metadata is supplied by the file, not authenticated by a node."
        ],
        "graph": {
          "nodes": [
            {
              "id": "input-0",
              "type": "input",
              "label": "Input 1",
              "valueSats": 10000,
              "txid": "1111111111111111111111111111111111111111111111111111111111111111",
              "vout": 0
            },
            {
              "id": "transaction",
              "type": "transaction",
              "label": "Transaction"
            },
            {
              "id": "output-0",
              "type": "output",
              "label": "Output 1",
              "valueSats": 9500,
              "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr"
            },
            {
              "id": "fee",
              "type": "fee",
              "label": "Fee",
              "valueSats": 500
            }
          ],
          "edges": [
            {
              "source": "input-0",
              "target": "transaction",
              "valueSats": 10000
            },
            {
              "source": "transaction",
              "target": "output-0",
              "valueSats": 9500
            },
            {
              "source": "transaction",
              "target": "fee",
              "valueSats": 500
            }
          ]
        }
      },
      "measured": {
        "inputSats": 10000,
        "knownInputSats": 10000,
        "outputSats": 9500,
        "feeSats": 500,
        "inputCount": 1,
        "outputCount": 1,
        "missingUtxoCount": 0,
        "unsignedVsize": 82,
        "serializedVsize": 110,
        "serializedBytes": 191,
        "weight": 437,
        "sizeKind": "final-fields-serialization-not-validated",
        "estimatedSignedVsize": null,
        "feeRateSatVb": 4.545454545454546,
        "estimatedFeeRateSatVb": null,
        "status": "final-fields-present",
        "findingCodes": [
          "TIMELOCK_UNCHECKED",
          "NOT_VALIDATED"
        ]
      },
      "buildValidation": {
        "ecdsaSignatureVerified": true,
        "scriptExecutionVerified": false,
        "nodeAcceptanceTested": false,
        "method": "bitcoinjs-lib BIP143 sighash with noble secp256k1 ECDSA verification before finalization."
      },
      "artifacts": {
        "input": {
          "path": "/static/lab/finalized-psbt.psbt.txt",
          "sha256": "cf43b450b49d1bdda6b31b0340dc6f4b34ee0f217885408dc1e1865f9eac9e9e",
          "bytes": 317
        },
        "result": {
          "path": "/static/lab/finalized-psbt.result.json",
          "sha256": "94f17375878f805ca165f300c3eb4e7e1fb467e9faf531791e3c1e43b0e82df3",
          "bytes": 4729
        }
      }
    },
    {
      "id": "raw-finalized",
      "title": "Extracted raw transaction",
      "description": "The same synthetic final witness serialized as raw hex. Raw transaction bytes omit the input amount, so the Doctor correctly cannot calculate its fee.",
      "text": "0200000000010111111111111111111111111111111111111111111111111111111111111111110000000000fdffffff011c250000000000001600142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0247304402205a0a10a28565c6c130a5d78e90cdf75d4cdcac9030cfce154c76a5ddcb6a266a0220295eb0631a2cb7763336531a3048692ed579c0d88abafbc61472b327df5a14cf01210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f8179890d00300",
      "kind": "doctor",
      "synthetic": true,
      "offline": true,
      "onChain": false,
      "provenance": "Synthetic offline fixture. Outpoints are invented, not mined, broadcast, or confirmed. Never fund example addresses.",
      "result": {
        "ok": true,
        "apiVersion": 1,
        "kind": "inspection",
        "format": "raw",
        "network": {
          "intended": "signet",
          "addressEncoding": "testnet",
          "verified": false,
          "note": "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried."
        },
        "synthetic": null,
        "status": "raw-unverified",
        "txid": "908aa40c5e89006fde0c629076b74e8fb82bf72814532a78b05d9cd885c2d389",
        "txidKind": "serialized-transaction",
        "version": 2,
        "inputs": [
          {
            "index": 0,
            "txid": "1111111111111111111111111111111111111111111111111111111111111111",
            "vout": 0,
            "valueSats": null,
            "amountSource": null,
            "scriptPubKey": null,
            "scriptType": "unknown",
            "address": null,
            "sequence": {
              "value": 4294967293,
              "hex": "fffffffd",
              "final": false,
              "signalsRbf": true,
              "relativeLockEnabled": false,
              "relativeLockType": null,
              "relativeLockValue": null
            },
            "partialSignatureCount": 0,
            "signatureCount": 0,
            "finalFieldsPresent": false,
            "signatureStatus": "unknown",
            "requiredSignatures": null,
            "scriptSigBytes": 0,
            "witnessItems": 2,
            "sighashType": null,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            },
            "redeemScript": null,
            "witnessScript": null
          }
        ],
        "outputs": [
          {
            "index": 0,
            "valueSats": 9500,
            "scriptPubKey": "00142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a",
            "scriptType": "p2wpkh",
            "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr",
            "dustThresholdSats": 294,
            "dust": false,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            }
          }
        ],
        "summary": {
          "inputSats": null,
          "knownInputSats": 0,
          "outputSats": 9500,
          "feeSats": null,
          "inputCount": 1,
          "outputCount": 1,
          "missingUtxoCount": 1,
          "unsignedVsize": null,
          "serializedVsize": 110,
          "serializedBytes": 191,
          "weight": 437,
          "sizeKind": "raw-serialization-not-validated",
          "estimatedSignedVsize": null,
          "feeRateSatVb": null,
          "estimatedFeeRateSatVb": null
        },
        "locktime": {
          "value": 250000,
          "type": "block-height",
          "active": true,
          "satisfied": null
        },
        "rbf": {
          "explicitSignal": true,
          "replaceabilityVerified": false,
          "note": "Sequence signaling is not a guarantee of replacement acceptance; node policy and conflicts were not checked."
        },
        "validation": {
          "signaturesVerified": false,
          "scriptsVerified": false,
          "finalizable": null,
          "chainVerified": false,
          "mempoolAccepted": null
        },
        "findings": [
          {
            "code": "FEE_UNKNOWN",
            "severity": "info",
            "message": "The fee cannot be calculated without every previous output amount."
          },
          {
            "code": "TIMELOCK_UNCHECKED",
            "severity": "info",
            "message": "Locktime/sequence constraints are present. Chain height, median time, and input ages were not checked."
          },
          {
            "code": "NOT_VALIDATED",
            "severity": "info",
            "message": "Parsing and metadata inspection only: no signature/script verification, finalizability decision, UTXO-set check, or mempool test."
          }
        ],
        "warnings": [
          "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried.",
          "Input metadata is supplied by the file, not authenticated by a node."
        ],
        "graph": {
          "nodes": [
            {
              "id": "input-0",
              "type": "input",
              "label": "Input 1",
              "valueSats": null,
              "txid": "1111111111111111111111111111111111111111111111111111111111111111",
              "vout": 0
            },
            {
              "id": "transaction",
              "type": "transaction",
              "label": "Transaction"
            },
            {
              "id": "output-0",
              "type": "output",
              "label": "Output 1",
              "valueSats": 9500,
              "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr"
            },
            {
              "id": "fee",
              "type": "fee",
              "label": "Fee",
              "valueSats": null
            }
          ],
          "edges": [
            {
              "source": "input-0",
              "target": "transaction",
              "valueSats": null
            },
            {
              "source": "transaction",
              "target": "output-0",
              "valueSats": 9500
            },
            {
              "source": "transaction",
              "target": "fee",
              "valueSats": null
            }
          ]
        }
      },
      "measured": {
        "inputSats": null,
        "knownInputSats": 0,
        "outputSats": 9500,
        "feeSats": null,
        "inputCount": 1,
        "outputCount": 1,
        "missingUtxoCount": 1,
        "unsignedVsize": null,
        "serializedVsize": 110,
        "serializedBytes": 191,
        "weight": 437,
        "sizeKind": "raw-serialization-not-validated",
        "estimatedSignedVsize": null,
        "feeRateSatVb": null,
        "estimatedFeeRateSatVb": null,
        "status": "raw-unverified",
        "findingCodes": [
          "FEE_UNKNOWN",
          "TIMELOCK_UNCHECKED",
          "NOT_VALIDATED"
        ]
      },
      "buildValidation": {
        "ecdsaSignatureVerified": true,
        "scriptExecutionVerified": false,
        "nodeAcceptanceTested": false,
        "method": "bitcoinjs-lib BIP143 sighash with noble secp256k1 ECDSA verification before finalization."
      },
      "artifacts": {
        "input": {
          "path": "/static/lab/raw-finalized.hex.txt",
          "sha256": "8489e8595a8cce86a26ff9b726aacd4494af437fb6d827104ae1e86275854ac6",
          "bytes": 383
        },
        "result": {
          "path": "/static/lab/raw-finalized.result.json",
          "sha256": "7a6696aa7cb32302ad639345d4cec8ac9402092af19ef7d8bb0084be3d2b8e3a",
          "bytes": 4741
        }
      }
    },
    {
      "id": "overspend",
      "title": "Outputs exceed supplied inputs",
      "description": "Deliberately incorrect UTXO metadata sets the input to 9,000 sats against 9,500 sats of outputs. The reported negative fee is an error, not a valid transaction fee.",
      "text": "cHNidP8BAFICAAAAARERERERERERERERERERERERERERERERERERERERERERAAAAAAD9////ARwlAAAAAAAAFgAUKioqKioqKioqKioqKioqKioqKiqQ0AMAAAEBHygjAAAAAAAAFgAUdR526BmRltRUlBxF0bOjI/FDO9YAAA==",
      "correctedId": "corrected-utxo",
      "kind": "doctor",
      "synthetic": true,
      "offline": true,
      "onChain": false,
      "provenance": "Synthetic offline fixture. Outpoints are invented, not mined, broadcast, or confirmed. Never fund example addresses.",
      "result": {
        "ok": true,
        "apiVersion": 1,
        "kind": "inspection",
        "format": "psbt",
        "network": {
          "intended": "signet",
          "addressEncoding": "testnet",
          "verified": false,
          "note": "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried."
        },
        "synthetic": null,
        "status": "missing-signatures",
        "txid": "908aa40c5e89006fde0c629076b74e8fb82bf72814532a78b05d9cd885c2d389",
        "txidKind": "unsigned-transaction",
        "version": 2,
        "inputs": [
          {
            "index": 0,
            "txid": "1111111111111111111111111111111111111111111111111111111111111111",
            "vout": 0,
            "valueSats": 9000,
            "amountSource": "witnessUtxo",
            "scriptPubKey": "0014751e76e8199196d454941c45d1b3a323f1433bd6",
            "scriptType": "p2wpkh",
            "address": "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx",
            "sequence": {
              "value": 4294967293,
              "hex": "fffffffd",
              "final": false,
              "signalsRbf": true,
              "relativeLockEnabled": false,
              "relativeLockType": null,
              "relativeLockValue": null
            },
            "partialSignatureCount": 0,
            "signatureCount": 0,
            "finalFieldsPresent": false,
            "signatureStatus": "missing",
            "requiredSignatures": 1,
            "scriptSigBytes": 0,
            "witnessItems": 0,
            "sighashType": null,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            },
            "redeemScript": null,
            "witnessScript": null
          }
        ],
        "outputs": [
          {
            "index": 0,
            "valueSats": 9500,
            "scriptPubKey": "00142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a",
            "scriptType": "p2wpkh",
            "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr",
            "dustThresholdSats": 294,
            "dust": false,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            }
          }
        ],
        "summary": {
          "inputSats": 9000,
          "knownInputSats": 9000,
          "outputSats": 9500,
          "feeSats": -500,
          "inputCount": 1,
          "outputCount": 1,
          "missingUtxoCount": 0,
          "unsignedVsize": 82,
          "serializedVsize": 82,
          "serializedBytes": 82,
          "weight": 328,
          "sizeKind": "unsigned-transaction",
          "estimatedSignedVsize": 110,
          "feeRateSatVb": null,
          "estimatedFeeRateSatVb": null
        },
        "locktime": {
          "value": 250000,
          "type": "block-height",
          "active": true,
          "satisfied": null
        },
        "rbf": {
          "explicitSignal": true,
          "replaceabilityVerified": false,
          "note": "Sequence signaling is not a guarantee of replacement acceptance; node policy and conflicts were not checked."
        },
        "validation": {
          "signaturesVerified": false,
          "scriptsVerified": false,
          "finalizable": null,
          "chainVerified": false,
          "mempoolAccepted": null
        },
        "findings": [
          {
            "code": "MISSING_SIGNATURES",
            "severity": "warning",
            "message": "No partial signatures or final unlocking fields are present; script requirements were not evaluated.",
            "inputIndex": 0
          },
          {
            "code": "OVERSPEND",
            "severity": "error",
            "message": "Outputs exceed supplied input amounts. This cannot be a valid spend of those UTXOs."
          },
          {
            "code": "TIMELOCK_UNCHECKED",
            "severity": "info",
            "message": "Locktime/sequence constraints are present. Chain height, median time, and input ages were not checked."
          },
          {
            "code": "NOT_VALIDATED",
            "severity": "info",
            "message": "Parsing and metadata inspection only: no signature/script verification, finalizability decision, UTXO-set check, or mempool test."
          }
        ],
        "warnings": [
          "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried.",
          "Input metadata is supplied by the file, not authenticated by a node."
        ],
        "graph": {
          "nodes": [
            {
              "id": "input-0",
              "type": "input",
              "label": "Input 1",
              "valueSats": 9000,
              "txid": "1111111111111111111111111111111111111111111111111111111111111111",
              "vout": 0
            },
            {
              "id": "transaction",
              "type": "transaction",
              "label": "Transaction"
            },
            {
              "id": "output-0",
              "type": "output",
              "label": "Output 1",
              "valueSats": 9500,
              "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr"
            },
            {
              "id": "fee",
              "type": "fee",
              "label": "Fee",
              "valueSats": -500
            }
          ],
          "edges": [
            {
              "source": "input-0",
              "target": "transaction",
              "valueSats": 9000
            },
            {
              "source": "transaction",
              "target": "output-0",
              "valueSats": 9500
            },
            {
              "source": "transaction",
              "target": "fee",
              "valueSats": -500
            }
          ]
        }
      },
      "measured": {
        "inputSats": 9000,
        "knownInputSats": 9000,
        "outputSats": 9500,
        "feeSats": -500,
        "inputCount": 1,
        "outputCount": 1,
        "missingUtxoCount": 0,
        "unsignedVsize": 82,
        "serializedVsize": 82,
        "serializedBytes": 82,
        "weight": 328,
        "sizeKind": "unsigned-transaction",
        "estimatedSignedVsize": 110,
        "feeRateSatVb": null,
        "estimatedFeeRateSatVb": null,
        "status": "missing-signatures",
        "findingCodes": [
          "MISSING_SIGNATURES",
          "OVERSPEND",
          "TIMELOCK_UNCHECKED",
          "NOT_VALIDATED"
        ]
      },
      "buildValidation": {
        "ecdsaSignatureVerified": false,
        "scriptExecutionVerified": false,
        "nodeAcceptanceTested": false
      },
      "artifacts": {
        "input": {
          "path": "/static/lab/overspend.psbt.txt",
          "sha256": "bc4adea65c6dd49265172accf370b31728325d960b2683e5dbcf3df83c5fae90",
          "bytes": 173
        },
        "result": {
          "path": "/static/lab/overspend.result.json",
          "sha256": "3f3b8c5411e7d9f3358aeca9beacde323cb51a06e797398aa083cf2b5893d986",
          "bytes": 5055
        }
      }
    },
    {
      "id": "taproot-metadata",
      "title": "Taproot metadata and relative lock",
      "description": "A synthetic P2TR script and internal-key field are present, with a 1,024-second relative-lock signal. The key commitment, signatures, and age constraints were not validated.",
      "text": "cHNidP8BAFICAAAAASIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAQAAAAACAEAAASgjAAAAAAAAFgAUKioqKioqKioqKioqKioqKioqKioAAAAAAAEBKxAnAAAAAAAAIlEgeb5mfvncu6xVoGKVzocLBwKb/NstzijZWfKBWxb4F5gBFyB5vmZ++dy7rFWgYpXOhwsHApv82y3OKNlZ8oFbFvgXmAAA",
      "kind": "doctor",
      "synthetic": true,
      "offline": true,
      "onChain": false,
      "provenance": "Synthetic offline fixture. Outpoints are invented, not mined, broadcast, or confirmed. Never fund example addresses.",
      "result": {
        "ok": true,
        "apiVersion": 1,
        "kind": "inspection",
        "format": "psbt",
        "network": {
          "intended": "signet",
          "addressEncoding": "testnet",
          "verified": false,
          "note": "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried."
        },
        "synthetic": null,
        "status": "missing-signatures",
        "txid": "4c9a0922349ce2e389df5a17bc67c3fa06ce6257ba254bb10d4188b04025312b",
        "txidKind": "unsigned-transaction",
        "version": 2,
        "inputs": [
          {
            "index": 0,
            "txid": "2222222222222222222222222222222222222222222222222222222222222222",
            "vout": 1,
            "valueSats": 10000,
            "amountSource": "witnessUtxo",
            "scriptPubKey": "512079be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
            "scriptType": "p2tr",
            "address": "tb1p0xlxvlhemja6c4dqv22uapctqupfhlxm9h8z3k2e72q4k9hcz7vq47zagq",
            "sequence": {
              "value": 4194306,
              "hex": "00400002",
              "final": false,
              "signalsRbf": true,
              "relativeLockEnabled": true,
              "relativeLockType": "seconds",
              "relativeLockValue": 1024
            },
            "partialSignatureCount": 0,
            "signatureCount": 0,
            "finalFieldsPresent": false,
            "signatureStatus": "missing",
            "requiredSignatures": null,
            "scriptSigBytes": 0,
            "witnessItems": 0,
            "sighashType": null,
            "taproot": {
              "internalKey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            },
            "redeemScript": null,
            "witnessScript": null
          }
        ],
        "outputs": [
          {
            "index": 0,
            "valueSats": 9000,
            "scriptPubKey": "00142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a",
            "scriptType": "p2wpkh",
            "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr",
            "dustThresholdSats": 294,
            "dust": false,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            }
          }
        ],
        "summary": {
          "inputSats": 10000,
          "knownInputSats": 10000,
          "outputSats": 9000,
          "feeSats": 1000,
          "inputCount": 1,
          "outputCount": 1,
          "missingUtxoCount": 0,
          "unsignedVsize": 82,
          "serializedVsize": 82,
          "serializedBytes": 82,
          "weight": 328,
          "sizeKind": "unsigned-transaction",
          "estimatedSignedVsize": null,
          "feeRateSatVb": null,
          "estimatedFeeRateSatVb": null
        },
        "locktime": {
          "value": 0,
          "type": "none",
          "active": false,
          "satisfied": null
        },
        "rbf": {
          "explicitSignal": true,
          "replaceabilityVerified": false,
          "note": "Sequence signaling is not a guarantee of replacement acceptance; node policy and conflicts were not checked."
        },
        "validation": {
          "signaturesVerified": false,
          "scriptsVerified": false,
          "finalizable": null,
          "chainVerified": false,
          "mempoolAccepted": null
        },
        "findings": [
          {
            "code": "MISSING_SIGNATURES",
            "severity": "warning",
            "message": "No partial signatures or final unlocking fields are present; script requirements were not evaluated.",
            "inputIndex": 0
          },
          {
            "code": "UNSUPPORTED_SIZE_ESTIMATE",
            "severity": "info",
            "message": "No signed-size estimate for this input script or missing script metadata.",
            "inputIndex": 0
          },
          {
            "code": "TIMELOCK_UNCHECKED",
            "severity": "info",
            "message": "Locktime/sequence constraints are present. Chain height, median time, and input ages were not checked."
          },
          {
            "code": "NOT_VALIDATED",
            "severity": "info",
            "message": "Parsing and metadata inspection only: no signature/script verification, finalizability decision, UTXO-set check, or mempool test."
          }
        ],
        "warnings": [
          "Testnet-format addresses and transaction bytes do not prove Signet membership. No node was queried.",
          "Input metadata is supplied by the file, not authenticated by a node."
        ],
        "graph": {
          "nodes": [
            {
              "id": "input-0",
              "type": "input",
              "label": "Input 1",
              "valueSats": 10000,
              "txid": "2222222222222222222222222222222222222222222222222222222222222222",
              "vout": 1
            },
            {
              "id": "transaction",
              "type": "transaction",
              "label": "Transaction"
            },
            {
              "id": "output-0",
              "type": "output",
              "label": "Output 1",
              "valueSats": 9000,
              "address": "tb1q9g4z52329g4z52329g4z52329g4z5232a5zdxr"
            },
            {
              "id": "fee",
              "type": "fee",
              "label": "Fee",
              "valueSats": 1000
            }
          ],
          "edges": [
            {
              "source": "input-0",
              "target": "transaction",
              "valueSats": 10000
            },
            {
              "source": "transaction",
              "target": "output-0",
              "valueSats": 9000
            },
            {
              "source": "transaction",
              "target": "fee",
              "valueSats": 1000
            }
          ]
        }
      },
      "measured": {
        "inputSats": 10000,
        "knownInputSats": 10000,
        "outputSats": 9000,
        "feeSats": 1000,
        "inputCount": 1,
        "outputCount": 1,
        "missingUtxoCount": 0,
        "unsignedVsize": 82,
        "serializedVsize": 82,
        "serializedBytes": 82,
        "weight": 328,
        "sizeKind": "unsigned-transaction",
        "estimatedSignedVsize": null,
        "feeRateSatVb": null,
        "estimatedFeeRateSatVb": null,
        "status": "missing-signatures",
        "findingCodes": [
          "MISSING_SIGNATURES",
          "UNSUPPORTED_SIZE_ESTIMATE",
          "TIMELOCK_UNCHECKED",
          "NOT_VALIDATED"
        ]
      },
      "buildValidation": {
        "ecdsaSignatureVerified": false,
        "scriptExecutionVerified": false,
        "nodeAcceptanceTested": false
      },
      "artifacts": {
        "input": {
          "path": "/static/lab/taproot-metadata.psbt.txt",
          "sha256": "c780a43db5e32d0a92c6c8a31b806ab68eec2ef6f4a15f4884cfb07fe86980d9",
          "bytes": 233
        },
        "result": {
          "path": "/static/lab/taproot-metadata.result.json",
          "sha256": "70081e6ca23d4937abcacf29fc197de7644a653eb7e88311e9a170f15843d455",
          "bytes": 5185
        }
      }
    },
    {
      "id": "taproot-assets-anchor",
      "kind": "doctor",
      "title": "Taproot Assets: anchor versus asset proof",
      "description": "An authentic Lightning Labs regtest genesis-proof vector. Inspect the Bitcoin anchor separately from its companion asset record and proof; none of the asset state or ownership is validated here.",
      "text": "020000000001010599d595bb64f60b7ad5f4f4a597a4b1f030d67a6dc3bd3fc8ddd165357381c100000000000000000002e80300000000000022512061765e684a645f8c7eb9ea4b4ba0f081362ea6087d8c3688a367bf99b9a3f09abbd4f505000000002251207fad9065b76db29237dc7ca6381b330cbb49f2938115bb5851523fb1699ab4660247304402207bcd442a997ed8602b77bad73fd19057b18860b3f25cf5f166b15c2249b5fb36022066dfbe37a9fc84a033760abdeef9d65a9d15bb0b04bff87da12d78d569d23baa012102a6e52ad8d7e001421707ae7c5f3e06b39cb15a9783c3d5d13b9c4bddd12d390500000000",
      "synthetic": true,
      "offline": true,
      "onChain": false,
      "provenance": "Copied from Lightning Labs' official regtest proof test vector, not created or mined by BitcoinSignetFaucet.com. Synthetic regtest assets; no public Signet or mainnet confirmation is claimed.",
      "assetContext": {
        "fixtureId": "taproot-assets-anchor",
        "association": "exact-serialized-transaction-and-pinned-companion-vector",
        "sourceNetwork": "regtest",
        "sourceBlockHeight": 440,
        "chainVerified": false,
        "source": {
          "repository": "https://github.com/lightninglabs/taproot-assets",
          "commit": "789960c8f882cc0d18495ac9423a1a46b0d75b93",
          "file": "proof/testdata/proof_tlv_encoding_regtest.json",
          "url": "https://github.com/lightninglabs/taproot-assets/blob/789960c8f882cc0d18495ac9423a1a46b0d75b93/proof/testdata/proof_tlv_encoding_regtest.json",
          "rawUrl": "https://raw.githubusercontent.com/lightninglabs/taproot-assets/789960c8f882cc0d18495ac9423a1a46b0d75b93/proof/testdata/proof_tlv_encoding_regtest.json",
          "localPath": "/static/lab/taproot-assets/proof_tlv_encoding_regtest.json",
          "sha256": "5bbc3bfe6066b0ab1f7ee74ca216f0e9cb17f26203e4f37636a1a3e85bb8369a",
          "caseIndex": 0,
          "caseComment": "valid regtest genesis proof with meta reveal",
          "upstreamTestUrl": "https://github.com/lightninglabs/taproot-assets/blob/789960c8f882cc0d18495ac9423a1a46b0d75b93/proof/proof_test.go#L1165-L1198",
          "license": {
            "id": "MIT",
            "attribution": "Copyright (c) 2022 Lightning Labs",
            "url": "https://github.com/lightninglabs/taproot-assets/blob/789960c8f882cc0d18495ac9423a1a46b0d75b93/LICENSE",
            "localPath": "/static/lab/taproot-assets/LICENSE",
            "sha256": "35e99c5d6ca195e0244c56a8f089dbae10664dc6cfc9cec5d41a518c2b3fdd82"
          }
        },
        "anchor": {
          "txid": "de526301dfa146c4b7161deaaec3d1a023f2fa15326ccee49a87af0e2ed30019",
          "outputIndex": 0,
          "valueSats": 1000
        },
        "asset": {
          "name": "first-itestbuxx",
          "amount": "1500",
          "unit": "asset base units",
          "type": "normal",
          "assetId": null,
          "scriptKey": "0204fdfc9254bd2948b4300eb6c4b204a9de8e4dd8ac361a01d72e0b894494c529",
          "source": "Companion proof vector; not inferred from Bitcoin transaction bytes."
        },
        "proof": {
          "path": "/static/lab/taproot-assets/genesis-proof.hex.txt",
          "format": "hex-encoded Taproot Assets single proof (TAPP)",
          "bytes": 1039,
          "sha256": "d7e5f7891ec6b7ef394c6c44cf1aec7709ee751e4a064ed7fd0b02ec4a878cec",
          "hashAppliesTo": "decoded proof bytes",
          "decoded": false,
          "validated": false,
          "validationSupported": false
        },
        "validation": {
          "bitcoinSignaturesVerified": false,
          "assetProofVerified": false,
          "assetCommitmentVerified": false,
          "assetHistoryVerified": false,
          "ownershipVerified": false
        },
        "limitations": [
          "The P2TR script alone does not identify Taproot Assets. Context appears only for this exact published fixture.",
          "Bitcoin amounts are satoshis. The companion asset amount is a separate quantity in asset units.",
          "The encoded proof is provided as a reference artifact. Doctor does not decode or verify Taproot Assets proofs, commitments, issuance history, or ownership.",
          "The source describes a regtest block; no node was queried or run here. Testnet-format address display does not establish Signet membership.",
          "Raw Bitcoin transaction bytes omit input amounts, so this anchor's Bitcoin fee remains unknown."
        ],
        "documentation": [
          "https://docs.lightning.engineering/lightning-network-tools/taproot-assets",
          "https://lightning.engineering/api-docs/api/taproot-assets/taproot-assets/decode-proof/",
          "https://lightning.engineering/api-docs/api/taproot-assets/taproot-assets/verify-proof/"
        ]
      },
      "result": {
        "ok": true,
        "apiVersion": 1,
        "kind": "inspection",
        "format": "raw",
        "network": {
          "intended": null,
          "addressEncoding": "testnet",
          "verified": false,
          "note": "Exact anchor bytes from a Lightning Labs regtest test vector, not a Signet run. No chain verification was performed; displayed testnet-format addresses do not prove network membership.",
          "fixtureNetwork": "regtest"
        },
        "synthetic": true,
        "assetContext": {
          "fixtureId": "taproot-assets-anchor",
          "association": "exact-serialized-transaction-and-pinned-companion-vector",
          "sourceNetwork": "regtest",
          "sourceBlockHeight": 440,
          "chainVerified": false,
          "source": {
            "repository": "https://github.com/lightninglabs/taproot-assets",
            "commit": "789960c8f882cc0d18495ac9423a1a46b0d75b93",
            "file": "proof/testdata/proof_tlv_encoding_regtest.json",
            "url": "https://github.com/lightninglabs/taproot-assets/blob/789960c8f882cc0d18495ac9423a1a46b0d75b93/proof/testdata/proof_tlv_encoding_regtest.json",
            "rawUrl": "https://raw.githubusercontent.com/lightninglabs/taproot-assets/789960c8f882cc0d18495ac9423a1a46b0d75b93/proof/testdata/proof_tlv_encoding_regtest.json",
            "localPath": "/static/lab/taproot-assets/proof_tlv_encoding_regtest.json",
            "sha256": "5bbc3bfe6066b0ab1f7ee74ca216f0e9cb17f26203e4f37636a1a3e85bb8369a",
            "caseIndex": 0,
            "caseComment": "valid regtest genesis proof with meta reveal",
            "upstreamTestUrl": "https://github.com/lightninglabs/taproot-assets/blob/789960c8f882cc0d18495ac9423a1a46b0d75b93/proof/proof_test.go#L1165-L1198",
            "license": {
              "id": "MIT",
              "attribution": "Copyright (c) 2022 Lightning Labs",
              "url": "https://github.com/lightninglabs/taproot-assets/blob/789960c8f882cc0d18495ac9423a1a46b0d75b93/LICENSE",
              "localPath": "/static/lab/taproot-assets/LICENSE",
              "sha256": "35e99c5d6ca195e0244c56a8f089dbae10664dc6cfc9cec5d41a518c2b3fdd82"
            }
          },
          "anchor": {
            "txid": "de526301dfa146c4b7161deaaec3d1a023f2fa15326ccee49a87af0e2ed30019",
            "outputIndex": 0,
            "valueSats": 1000
          },
          "asset": {
            "name": "first-itestbuxx",
            "amount": "1500",
            "unit": "asset base units",
            "type": "normal",
            "assetId": null,
            "scriptKey": "0204fdfc9254bd2948b4300eb6c4b204a9de8e4dd8ac361a01d72e0b894494c529",
            "source": "Companion proof vector; not inferred from Bitcoin transaction bytes."
          },
          "proof": {
            "path": "/static/lab/taproot-assets/genesis-proof.hex.txt",
            "format": "hex-encoded Taproot Assets single proof (TAPP)",
            "bytes": 1039,
            "sha256": "d7e5f7891ec6b7ef394c6c44cf1aec7709ee751e4a064ed7fd0b02ec4a878cec",
            "hashAppliesTo": "decoded proof bytes",
            "decoded": false,
            "validated": false,
            "validationSupported": false
          },
          "validation": {
            "bitcoinSignaturesVerified": false,
            "assetProofVerified": false,
            "assetCommitmentVerified": false,
            "assetHistoryVerified": false,
            "ownershipVerified": false
          },
          "limitations": [
            "The P2TR script alone does not identify Taproot Assets. Context appears only for this exact published fixture.",
            "Bitcoin amounts are satoshis. The companion asset amount is a separate quantity in asset units.",
            "The encoded proof is provided as a reference artifact. Doctor does not decode or verify Taproot Assets proofs, commitments, issuance history, or ownership.",
            "The source describes a regtest block; no node was queried or run here. Testnet-format address display does not establish Signet membership.",
            "Raw Bitcoin transaction bytes omit input amounts, so this anchor's Bitcoin fee remains unknown."
          ],
          "documentation": [
            "https://docs.lightning.engineering/lightning-network-tools/taproot-assets",
            "https://lightning.engineering/api-docs/api/taproot-assets/taproot-assets/decode-proof/",
            "https://lightning.engineering/api-docs/api/taproot-assets/taproot-assets/verify-proof/"
          ]
        },
        "status": "raw-unverified",
        "txid": "de526301dfa146c4b7161deaaec3d1a023f2fa15326ccee49a87af0e2ed30019",
        "txidKind": "serialized-transaction",
        "version": 2,
        "inputs": [
          {
            "index": 0,
            "txid": "c181733565d1ddc83fbdc36d7ad630f0b1a497a5f4f4d57a0bf664bb95d59905",
            "vout": 0,
            "valueSats": null,
            "amountSource": null,
            "scriptPubKey": null,
            "scriptType": "unknown",
            "address": null,
            "sequence": {
              "value": 0,
              "hex": "00000000",
              "final": false,
              "signalsRbf": true,
              "relativeLockEnabled": true,
              "relativeLockType": "blocks",
              "relativeLockValue": 0
            },
            "partialSignatureCount": 0,
            "signatureCount": 0,
            "finalFieldsPresent": false,
            "signatureStatus": "unknown",
            "requiredSignatures": null,
            "scriptSigBytes": 0,
            "witnessItems": 2,
            "sighashType": null,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            },
            "redeemScript": null,
            "witnessScript": null
          }
        ],
        "outputs": [
          {
            "index": 0,
            "valueSats": 1000,
            "scriptPubKey": "512061765e684a645f8c7eb9ea4b4ba0f081362ea6087d8c3688a367bf99b9a3f09a",
            "scriptType": "p2tr",
            "address": "tb1pv9m9u6z2v30ccl4eaf95hg8ssymzafsg0kxrdz9rv7lenwdr7zdqa25fdj",
            "dustThresholdSats": 330,
            "dust": false,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            }
          },
          {
            "index": 1,
            "valueSats": 99996859,
            "scriptPubKey": "51207fad9065b76db29237dc7ca6381b330cbb49f2938115bb5851523fb1699ab466",
            "scriptType": "p2tr",
            "address": "tb1p07keqedhdkefyd7u0jnrsxenpja5nu5nsy2mkkz32glmz6v6k3nqc25yc7",
            "dustThresholdSats": 330,
            "dust": false,
            "taproot": {
              "internalKey": null,
              "merkleRoot": null,
              "keySignaturePresent": false,
              "scriptSignatureCount": 0,
              "leafScriptCount": 0,
              "derivationCount": 0
            }
          }
        ],
        "summary": {
          "inputSats": null,
          "knownInputSats": 0,
          "outputSats": 99997859,
          "feeSats": null,
          "inputCount": 1,
          "outputCount": 2,
          "missingUtxoCount": 1,
          "unsignedVsize": null,
          "serializedVsize": 165,
          "serializedBytes": 246,
          "weight": 657,
          "sizeKind": "raw-serialization-not-validated",
          "estimatedSignedVsize": null,
          "feeRateSatVb": null,
          "estimatedFeeRateSatVb": null
        },
        "locktime": {
          "value": 0,
          "type": "none",
          "active": false,
          "satisfied": null
        },
        "rbf": {
          "explicitSignal": true,
          "replaceabilityVerified": false,
          "note": "Sequence signaling is not a guarantee of replacement acceptance; node policy and conflicts were not checked."
        },
        "validation": {
          "signaturesVerified": false,
          "scriptsVerified": false,
          "finalizable": null,
          "chainVerified": false,
          "mempoolAccepted": null
        },
        "findings": [
          {
            "code": "FEE_UNKNOWN",
            "severity": "info",
            "message": "The fee cannot be calculated without every previous output amount."
          },
          {
            "code": "TIMELOCK_UNCHECKED",
            "severity": "info",
            "message": "Locktime/sequence constraints are present. Chain height, median time, and input ages were not checked."
          },
          {
            "code": "TAPROOT_ASSETS_FIXTURE",
            "severity": "info",
            "message": "Exact bytes match Lightning Labs' official regtest Taproot Assets genesis-anchor fixture. Asset context comes from its pinned companion vector, not from recognizing a P2TR script."
          },
          {
            "code": "ASSET_UNITS_NOT_SATS",
            "severity": "info",
            "message": "The companion record reports 1500 asset base units of first-itestbuxx. Bitcoin output 0 holds 1000 sats. These are different quantities; raw anchor bytes do not contain the asset amount."
          },
          {
            "code": "ASSET_PROOF_NOT_VERIFIED",
            "severity": "warning",
            "message": "The companion encoded asset proof is available as a reference artifact only. Doctor does not decode or validate Taproot Assets proofs, commitments, issuance history, or ownership. This Bitcoin anchor alone cannot establish them."
          },
          {
            "code": "NOT_VALIDATED",
            "severity": "info",
            "message": "Parsing and metadata inspection only: no signature/script verification, finalizability decision, UTXO-set check, or mempool test."
          }
        ],
        "warnings": [
          "Exact anchor bytes from a Lightning Labs regtest test vector, not a Signet run. No chain verification was performed; displayed testnet-format addresses do not prove network membership.",
          "Input metadata is supplied by the file, not authenticated by a node."
        ],
        "graph": {
          "nodes": [
            {
              "id": "input-0",
              "type": "input",
              "label": "Input 1",
              "valueSats": null,
              "txid": "c181733565d1ddc83fbdc36d7ad630f0b1a497a5f4f4d57a0bf664bb95d59905",
              "vout": 0
            },
            {
              "id": "transaction",
              "type": "transaction",
              "label": "Transaction"
            },
            {
              "id": "output-0",
              "type": "output",
              "label": "Output 1",
              "valueSats": 1000,
              "address": "tb1pv9m9u6z2v30ccl4eaf95hg8ssymzafsg0kxrdz9rv7lenwdr7zdqa25fdj"
            },
            {
              "id": "output-1",
              "type": "output",
              "label": "Output 2",
              "valueSats": 99996859,
              "address": "tb1p07keqedhdkefyd7u0jnrsxenpja5nu5nsy2mkkz32glmz6v6k3nqc25yc7"
            },
            {
              "id": "fee",
              "type": "fee",
              "label": "Fee",
              "valueSats": null
            }
          ],
          "edges": [
            {
              "source": "input-0",
              "target": "transaction",
              "valueSats": null
            },
            {
              "source": "transaction",
              "target": "output-0",
              "valueSats": 1000
            },
            {
              "source": "transaction",
              "target": "output-1",
              "valueSats": 99996859
            },
            {
              "source": "transaction",
              "target": "fee",
              "valueSats": null
            }
          ]
        }
      },
      "measured": {
        "inputSats": null,
        "knownInputSats": 0,
        "outputSats": 99997859,
        "feeSats": null,
        "inputCount": 1,
        "outputCount": 2,
        "missingUtxoCount": 1,
        "unsignedVsize": null,
        "serializedVsize": 165,
        "serializedBytes": 246,
        "weight": 657,
        "sizeKind": "raw-serialization-not-validated",
        "estimatedSignedVsize": null,
        "feeRateSatVb": null,
        "estimatedFeeRateSatVb": null,
        "status": "raw-unverified",
        "findingCodes": [
          "FEE_UNKNOWN",
          "TIMELOCK_UNCHECKED",
          "TAPROOT_ASSETS_FIXTURE",
          "ASSET_UNITS_NOT_SATS",
          "ASSET_PROOF_NOT_VERIFIED",
          "NOT_VALIDATED"
        ]
      },
      "buildValidation": {
        "ecdsaSignatureVerified": false,
        "scriptExecutionVerified": false,
        "nodeAcceptanceTested": false
      },
      "artifacts": {
        "sourceVector": {
          "path": "/static/lab/taproot-assets/proof_tlv_encoding_regtest.json",
          "sha256": "5bbc3bfe6066b0ab1f7ee74ca216f0e9cb17f26203e4f37636a1a3e85bb8369a",
          "bytes": 77194
        },
        "license": {
          "path": "/static/lab/taproot-assets/LICENSE",
          "sha256": "35e99c5d6ca195e0244c56a8f089dbae10664dc6cfc9cec5d41a518c2b3fdd82",
          "bytes": 1071
        },
        "selectedVector": {
          "path": "/static/lab/taproot-assets/selected-vector.json",
          "sha256": "b372871bf93f6a202379d6ff3fbe812f9820915df194a6deb7f3a59d7ad22e9c",
          "bytes": 6457
        },
        "proof": {
          "path": "/static/lab/taproot-assets/genesis-proof.hex.txt",
          "sha256": "24b61f261094e6fdf0def2e9a01dc5366be43d7fefdd84360338d3b10565d9c4",
          "bytes": 2079
        },
        "evidence": {
          "path": "/static/lab/taproot-assets/reproduction-evidence.json",
          "sha256": "0c307ef801d19805113c455c4cdd96276cdd373434d4cb3145d72cf8f425be51",
          "bytes": 2464
        },
        "input": {
          "path": "/static/lab/taproot-assets-anchor.hex.txt",
          "sha256": "99c72e91d1c9a8381319bc8d66f577aaa62b31444f4bb826e7772b2af1a0aae8",
          "bytes": 493
        },
        "result": {
          "path": "/static/lab/taproot-assets-anchor.result.json",
          "sha256": "92f58ac7cef9d54c5b05add1ca7bb44274b637b210bed75b952b92108ce059e7",
          "bytes": 10365
        }
      }
    }
  ]
}
