{
  "schema": "tn12-wallet-approval-summaries/v1",
  "network": "kaspa-testnet-12",
  "generatedAt": "2026-05-13T04:28:48.593Z",
  "status": "wallet-approval-summary-ready",
  "purpose": "Translate covenant evidence into normal wallet-review language: what the user is approving, what rule controls the money, and what bad move would be rejected.",
  "summaries": [
    {
      "id": "recurring-cap-reset-window",
      "experiment": "recurring-cap-proof",
      "evidenceClass": "TN12_ACCEPTED_SCRIPT_ENFORCED",
      "recommendedWalletDecision": "approve-if-user-initiated",
      "title": "Spend from a budget without draining it",
      "plainAction": "Spend 40 tKAS from a capped treasury, then lock 44.9998 tKAS back into the next budget state.",
      "userChecks": [
        "Amount: 40 tKAS",
        "Cap: 75 tKAS",
        "Previously spent in window: 65 tKAS",
        "Next spent in window: 40 tKAS",
        "New window start: 9900000",
        "Continuation output is relocked to the same covenant id"
      ],
      "technicalChecks": {
        "contract": "contracts/RecurringTreasuryVaultWindow.sil",
        "sourceOutpoint": "a04e23b177c98e0908b3d6004419f1d330b4bcdb3458e282509992fe35406580:0",
        "spendTxid": "f99bb6f6552beac976b770448ef2d75748b4d7fbf66932e1156ea41493978759",
        "explorerUrl": "https://tn12.kaspa.stream/transactions/f99bb6f6552beac976b770448ef2d75748b4d7fbf66932e1156ea41493978759",
        "covenantId": "a4f8b4650bf7d8599bb64e5016b7644a2b4a0625189943f0c6c03db2fb6572c4",
        "lockTime": "9900000",
        "resetWindow": "9900000",
        "destination": {
          "amountTkas": "40",
          "scriptPublicKey": "201dbc18aa4c52b6f35caee2c25352d248e5638ffacfb30bb47ac8c6f0a7924700ac"
        },
        "continuation": {
          "outpoint": "f99bb6f6552beac976b770448ef2d75748b4d7fbf66932e1156ea41493978759:1",
          "amountTkas": "44.9998",
          "covenantId": "a4f8b4650bf7d8599bb64e5016b7644a2b4a0625189943f0c6c03db2fb6572c4",
          "scriptPublicKey": "aa20c1c07b1bb8023e170d1028324cd8448726903e57367d4c25b7d093ab0cff5bf987"
        },
        "postResetSpend": {
          "txid": "78bc7db10980e9a4fcbbad664f815e54cfa68e55ee83206d63e8de6e332e8e52",
          "explorerUrl": "https://tn12.kaspa.stream/transactions/78bc7db10980e9a4fcbbad664f815e54cfa68e55ee83206d63e8de6e332e8e52",
          "continuationOutpoint": "78bc7db10980e9a4fcbbad664f815e54cfa68e55ee83206d63e8de6e332e8e52:1",
          "nextSpentInWindow": "5000000000"
        }
      },
      "refusalPrompts": [
        {
          "id": "early-reset",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "LOCAL_SCRIPT_ENGINE_REJECT",
          "reason": "lockTime before reset window",
          "artifact": "artifacts/signed-drafts/recurring-treasury-vault-window-early-reset.json",
          "candidateTxid": "23b9f2e75801f9edfc0e487945cf04a9332e4bddff5a04e5b2b506b7ea657bce"
        },
        {
          "id": "stale-reset-window",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "LOCAL_SCRIPT_ENGINE_REJECT",
          "reason": "new state keeps the old window",
          "artifact": "artifacts/signed-drafts/recurring-treasury-vault-window-stale-reset.json",
          "candidateTxid": "a47b6d52f4c54eb57e7e089b47e8fb8c3283cd8ee4a5b35fea143720a4d394ba"
        },
        {
          "id": "over-cap-reset",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "LOCAL_SCRIPT_ENGINE_REJECT",
          "reason": "reset amount exceeds cap",
          "artifact": "artifacts/signed-drafts/recurring-treasury-vault-window-over-cap-reset.json",
          "candidateTxid": "9cb4abb8e2e0e914ed599d02546eec81800ab09a95fb6c040acbc80b2643182b"
        }
      ],
      "boundaries": [
        "This is a wallet-readable summary for a TN12/testnet covenant path.",
        "It does not prove wallet-standard signing or mainnet readiness.",
        "Local reject rows are script-engine evidence, not broadcast-rejected TN12 invalid transactions."
      ]
    },
    {
      "id": "sibling-asset-strike",
      "experiment": "sibling-authorized-asset-proof",
      "evidenceClass": "TN12_ACCEPTED_SCRIPT_ENFORCED_WITH_LOCAL_REJECTS",
      "recommendedWalletDecision": "approve-if-user-initiated",
      "title": "Move an asset only when its controller is present",
      "plainAction": "Use controller input d36a6247945bf24aaee0f3c80aa43d410c9ecd0ab8159c0ea3c85feff0ec576f:0 to authorize the asset move and update power 600 -> 450.",
      "userChecks": [
        "Required owner covenant id: 8669415a642659790ae5e1810021d7ccaa572f3580e39278396a526564685053",
        "Required sibling input index: 1",
        "Selected sibling outpoint: d36a6247945bf24aaee0f3c80aa43d410c9ecd0ab8159c0ea3c85feff0ec576f:0",
        "Asset input covenant id: 1e2ede72835fb25092c43818c299864a6df710918dbd202f7bfc684690bf741a",
        "Accepted strike txid: f452b6f4d2fbf688f25f20658226f585e589e01a73aef5e8ef72f0e7b0870da4"
      ],
      "technicalChecks": {
        "requiredSibling": {
          "covenantId": "8669415a642659790ae5e1810021d7ccaa572f3580e39278396a526564685053",
          "witnessInput": 1,
          "role": "owner-marker-authority",
          "reason": "The asset covenant accepts the configured owner covenant id at the witnessed sibling input instead of nesting owner-contract execution."
        },
        "selectedCandidate": {
          "txid": "d36a6247945bf24aaee0f3c80aa43d410c9ecd0ab8159c0ea3c85feff0ec576f",
          "outputIndex": 0,
          "covenantId": "8669415a642659790ae5e1810021d7ccaa572f3580e39278396a526564685053",
          "amountSompi": "100000000",
          "status": "accepted",
          "outpoint": "d36a6247945bf24aaee0f3c80aa43d410c9ecd0ab8159c0ea3c85feff0ec576f:0",
          "explorerUrl": "https://tn12.kaspa.stream/transactions/d36a6247945bf24aaee0f3c80aa43d410c9ecd0ab8159c0ea3c85feff0ec576f"
        },
        "assetInput": {
          "txid": "5152c9c3cdde61a24fbcc0d21855a1474b435d9a502a836c3b7bac7eceab3165",
          "outputIndex": 0,
          "covenantId": "1e2ede72835fb25092c43818c299864a6df710918dbd202f7bfc684690bf741a",
          "status": "accepted"
        },
        "acceptedStrike": {
          "txid": "f452b6f4d2fbf688f25f20658226f585e589e01a73aef5e8ef72f0e7b0870da4",
          "explorerUrl": "https://tn12.kaspa.stream/transactions/f452b6f4d2fbf688f25f20658226f585e589e01a73aef5e8ef72f0e7b0870da4",
          "powerBefore": 600,
          "powerAfter": 450
        }
      },
      "refusalPrompts": [
        {
          "id": "wrong_witness_rejects_asset_move",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "LOCAL_SCRIPT_ENGINE_REJECT",
          "reason": "wrong witness rejects asset move",
          "got": false,
          "expected": false
        },
        {
          "id": "missing_sibling_rejects_asset_move",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "LOCAL_SCRIPT_ENGINE_REJECT",
          "reason": "missing sibling rejects asset move",
          "got": false,
          "expected": false
        },
        {
          "id": "wrong_sibling_covenant_rejects_asset_move",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "LOCAL_SCRIPT_ENGINE_REJECT",
          "reason": "wrong sibling covenant rejects asset move",
          "got": false,
          "expected": false
        }
      ],
      "boundaries": [
        "This is deterministic discovery over accepted TN12 fixture data and local negative checks.",
        "It does not prove a production indexer, wallet UX, or mainnet asset standard.",
        "The accepted strike proves the sibling path once; future asset moves need fresh live sibling and asset state discovery."
      ]
    },
    {
      "id": "mux-worker-route-timeout",
      "experiment": "mux-worker-proof",
      "evidenceClass": "TN12_ACCEPTED_SCRIPT_ENFORCED_WITH_LOCAL_REJECTS",
      "recommendedWalletDecision": "approve-if-user-initiated",
      "title": "Move a step through one role and recover if it stalls",
      "plainAction": "Move the state through small worker roles and return it safely; accepted values move 5 -> 8, timeout returns 8 -> 7, and the next worker returns 7 -> 11.",
      "userChecks": [
        "Covenant family id: df9fd6e4938398f2f16a0c35830e30d58419a7fd36cc5e4b13ced7206e590204",
        "Mux template: 094b92ca4522a00356dae717dd9d9573283c865d822fc3f466f49b599b898abb",
        "Worker A template: d595af0765e145cf9415e47c87223e87c4c8265b8c7835b6eb4cd3a4a386e6aa",
        "Worker B template: 2f3272b259d89b523279c887553e1cb9d5ffd2a61b4fb451afd362bfa3a27332",
        "Accepted route txid: dfbffecdcbaaab300313aa27c1d1db78c334debc9bf673fdfd00f207dacbe065",
        "Accepted timeout txid: 26be92cbbde3673e2ba539412b981655693ed3f4a08c8ad9f7ce3b2e47aef036"
      ],
      "technicalChecks": {
        "family": {
          "sources": [
            "contracts/BlitzMux.sil",
            "contracts/BlitzWorkerA.sil",
            "contracts/BlitzWorkerB.sil"
          ],
          "templates": {
            "mux": "094b92ca4522a00356dae717dd9d9573283c865d822fc3f466f49b599b898abb",
            "a": "d595af0765e145cf9415e47c87223e87c4c8265b8c7835b6eb4cd3a4a386e6aa",
            "b": "2f3272b259d89b523279c887553e1cb9d5ffd2a61b4fb451afd362bfa3a27332"
          },
          "covenantId": "df9fd6e4938398f2f16a0c35830e30d58419a7fd36cc5e4b13ced7206e590204"
        },
        "normalWorkerReturn": {
          "txid": "bc51db872c8f926fb887cf150af5bf918c44cf20f72abfc3ac4620d57fa0c037",
          "explorerUrl": "https://tn12.kaspa.stream/transactions/bc51db872c8f926fb887cf150af5bf918c44cf20f72abfc3ac4620d57fa0c037",
          "state": {
            "gain": 3,
            "minerFeeSompi": 20000,
            "nextPending": 0,
            "prevPending": 1,
            "timeout": 10,
            "valueAfter": 8,
            "valueBefore": 5
          }
        },
        "timeoutSettlement": {
          "txid": "26be92cbbde3673e2ba539412b981655693ed3f4a08c8ad9f7ce3b2e47aef036",
          "explorerUrl": "https://tn12.kaspa.stream/transactions/26be92cbbde3673e2ba539412b981655693ed3f4a08c8ad9f7ce3b2e47aef036",
          "state": {
            "minerFeeSompi": 20000,
            "nextPending": 0,
            "prevPending": 1,
            "sequence": 10,
            "timeout": 10,
            "valueAfter": 7,
            "valueBefore": 8
          }
        },
        "workerBSettlement": {
          "txid": "9985e4e92d5e877b1530ae00625be29429350bb6393c9da1ee5a9d92c9fa9eb2",
          "explorerUrl": "https://tn12.kaspa.stream/transactions/9985e4e92d5e877b1530ae00625be29429350bb6393c9da1ee5a9d92c9fa9eb2",
          "state": {
            "gain": 5,
            "minerFeeSompi": 20000,
            "nextPending": 0,
            "prevPending": 2,
            "timeout": 10,
            "valueAfter": 11,
            "valueBefore": 7,
            "worker": "B",
            "workerFee": 1
          }
        }
      },
      "refusalPrompts": [
        {
          "id": "bad-selector-challenge",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "LOCAL_SCRIPT_ENGINE_REJECT",
          "reason": "Mux only routes selector 0 or 1.",
          "result": "got=false expected=false"
        },
        {
          "id": "too-early-timeout-challenge",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "LOCAL_SCRIPT_ENGINE_REJECT",
          "reason": "Worker timeout cannot settle before the move clock.",
          "result": "got=false expected=false"
        }
      ],
      "boundaries": [
        "This is a wallet-readable summary for a TN12/testnet mux-worker primitive.",
        "It does not prove full game rules or production settlement.",
        "Local challenge rows are script-engine evidence, not broadcast-rejected TN12 invalid transactions."
      ]
    },
    {
      "id": "scheduler-covenant-payout",
      "experiment": "scheduler-receipt-evidence",
      "evidenceClass": "TN12_ACCEPTED_SCRIPT_ENFORCED_WITH_REPLAY_GUARDS",
      "recommendedWalletDecision": "approve-if-user-initiated",
      "title": "Release a scheduled payout after the evidence matches",
      "plainAction": "Release 4 tKAS to the scheduled recipient after the accepted intent, winning bid, and execution receipt replay as eligible.",
      "userChecks": [
        "Payout amount: 4 tKAS",
        "Recipient: kaspatest:qqpxcwpdqazxgmgvhj2ntp8mvxwkaetw73g0prq97q2vxfpwg2w3sv3kd5f0z",
        "Funding txid: a1928dfc9434c71a759a138429dea903cc44f4df7aee61079f9b865dc4a97dab",
        "Release txid: 634873a5a55136d010ba9371c4a90da997755c8a31b7eca458d5f6756eddb986",
        "Intent txid: 185d62928f5cddadafc7faf14ec7b092ea44a3ea8c08af71ac7a135032243d4d",
        "Winning bid txid: ab827a290bf4494fb923f6e8adb4ec5872dbd5b76d4dd586b9d1eff6f3c0cf23"
      ],
      "technicalChecks": {
        "funding": {
          "txid": "a1928dfc9434c71a759a138429dea903cc44f4df7aee61079f9b865dc4a97dab",
          "outputIndex": 0,
          "covenantId": "0551b394b0b6ed0ca2503ff73996e9b5dbd8918941968438ecdc178c27c7aa42",
          "amountTkas": 4.00005,
          "amountSompi": "400005000",
          "explorerUrl": "https://tn12.kaspa.stream/transactions/a1928dfc9434c71a759a138429dea903cc44f4df7aee61079f9b865dc4a97dab"
        },
        "release": {
          "txid": "634873a5a55136d010ba9371c4a90da997755c8a31b7eca458d5f6756eddb986",
          "status": "accepted",
          "explorerUrl": "https://tn12.kaspa.stream/transactions/634873a5a55136d010ba9371c4a90da997755c8a31b7eca458d5f6756eddb986",
          "amountTkas": "4",
          "amountSompi": "400000000",
          "destination": "kaspatest:qqpxcwpdqazxgmgvhj2ntp8mvxwkaetw73g0prq97q2vxfpwg2w3sv3kd5f0z",
          "acceptingBlockBlueScore": 10130498
        },
        "schedulerContext": {
          "intentTxid": "185d62928f5cddadafc7faf14ec7b092ea44a3ea8c08af71ac7a135032243d4d",
          "winningBidTxid": "ab827a290bf4494fb923f6e8adb4ec5872dbd5b76d4dd586b9d1eff6f3c0cf23",
          "executionReceiptTxid": "d6008cb5e4772f9d3c3173c39ad2ef8df91dcca02d7d1d76862ec1817bf36909",
          "previousLocalKeyPayoutTxid": "1a486540fa324d8b4590a97a27b791eb895f32a5196e92fe0d1be584ece1ec1d"
        },
        "scriptEnforces": [
          "operator signature",
          "exact payout amount",
          "recipient destination",
          "input value equals payout plus miner fee"
        ],
        "replayStillChecks": [
          "intent receipt was accepted",
          "winning bid is valid under scheduler policy",
          "trigger source is current",
          "duplicate and stale execution rows are blocked",
          "execution receipt references the same intent and payout"
        ]
      },
      "refusalPrompts": [
        {
          "id": "stale-or-duplicate-scheduler-row",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "INDEXER_DERIVED_REJECT",
          "reason": "replay marks the trigger source stale or the execution duplicate"
        },
        {
          "id": "wrong_recipient_rejects",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "LOCAL_SCRIPT_ENGINE_REJECT",
          "reason": "wrong recipient rejects",
          "candidateTxid": "957b0e6dad53ea743653daccba224f71f07e2f994b97ba7f8b35aa543f8864b7"
        },
        {
          "id": "wrong_payout_amount_rejects",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "LOCAL_SCRIPT_ENGINE_REJECT",
          "reason": "wrong payout amount rejects",
          "candidateTxid": "6d83dfaab60650b6d7f5527dc6339d850b7076e6691e5e2d394bb9c51bceafea"
        },
        {
          "id": "wrong_input_value_rejects",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "LOCAL_SCRIPT_ENGINE_REJECT",
          "reason": "wrong input value rejects",
          "candidateTxid": "634873a5a55136d010ba9371c4a90da997755c8a31b7eca458d5f6756eddb986"
        }
      ],
      "boundaries": [
        "This is a wallet-readable summary for an accepted TN12 covenant payout.",
        "The payout spend is covenant-enforced; scheduler eligibility remains replay/indexer-derived.",
        "This does not prove protocol scheduling, autonomous custody, wallet-standard signing, or mainnet readiness."
      ]
    },
    {
      "id": "coordination-covenant-release",
      "experiment": "coordination-release-evidence",
      "evidenceClass": "TN12_ACCEPTED_SCRIPT_ENFORCED_WITH_REPLAY_SELECTION",
      "recommendedWalletDecision": "approve-if-user-initiated",
      "title": "Release a group payment after enough pledges qualify",
      "plainAction": "Release 3 locked pledges totaling 99.99985 tKAS to the selected recipient after replay evidence selects the qualifying group.",
      "userChecks": [
        "Funding txid: 314ddccb993892c8bed919590f8675d2d3e208060a3c3b32300d4e4da30464fc",
        "Pledge outputs: 3",
        "Accepted releases: 3",
        "Accepted refunds on separate fresh pledge set: 3",
        "Recipient: kaspatest:qrtnnhjt8ds6398srxytdn7sjc7585d5pfu8gymxvy32fufwpdsd22432yamt",
        "Total released: 99.99985 tKAS",
        "Refund proof total: 99.99985 tKAS"
      ],
      "technicalChecks": {
        "funding": {
          "txid": "314ddccb993892c8bed919590f8675d2d3e208060a3c3b32300d4e4da30464fc",
          "status": "accepted",
          "pledgeOutputCount": 3,
          "allPledgeOutputsHaveCovenantBinding": true,
          "explorerUrl": "https://tn12.kaspa.stream/transactions/314ddccb993892c8bed919590f8675d2d3e208060a3c3b32300d4e4da30464fc"
        },
        "refundFunding": {
          "txid": "c0c13ed627b8150a9099c69264ed73baa4e083400d81916f4ab933679ddf9aad",
          "status": "accepted",
          "pledgeOutputCount": 3,
          "allPledgeOutputsHaveCovenantBinding": true,
          "explorerUrl": "https://tn12.kaspa.stream/transactions/c0c13ed627b8150a9099c69264ed73baa4e083400d81916f4ab933679ddf9aad"
        },
        "releases": [
          {
            "pledgeId": "pledge-docs-001",
            "txid": "9a3350f9c11dc9b130a76377e8ffca091f6d38cd00824306a730b6946e181977",
            "endpoint": "https://api-tn12.kaspa.org/transactions/9a3350f9c11dc9b130a76377e8ffca091f6d38cd00824306a730b6946e181977",
            "status": "accepted",
            "explorerUrl": "https://tn12.kaspa.stream/transactions/9a3350f9c11dc9b130a76377e8ffca091f6d38cd00824306a730b6946e181977",
            "destination": "kaspatest:qrtnnhjt8ds6398srxytdn7sjc7585d5pfu8gymxvy32fufwpdsd22432yamt",
            "amountTkas": "44.99995",
            "amountSompi": "4499995000",
            "acceptingBlockBlueScore": 10114656
          },
          {
            "pledgeId": "pledge-docs-002",
            "txid": "0a9efe559aa2e96a02e5571ee0ed76bfe329c61275fa6a7575446d271f765aab",
            "endpoint": "https://api-tn12.kaspa.org/transactions/0a9efe559aa2e96a02e5571ee0ed76bfe329c61275fa6a7575446d271f765aab",
            "status": "accepted",
            "explorerUrl": "https://tn12.kaspa.stream/transactions/0a9efe559aa2e96a02e5571ee0ed76bfe329c61275fa6a7575446d271f765aab",
            "destination": "kaspatest:qrtnnhjt8ds6398srxytdn7sjc7585d5pfu8gymxvy32fufwpdsd22432yamt",
            "amountTkas": "34.99995",
            "amountSompi": "3499995000",
            "acceptingBlockBlueScore": 10114693
          },
          {
            "pledgeId": "pledge-docs-003",
            "txid": "954d5aa0b17ab15fc503da769e423ecace4164a8a888d625d6ab07f2e2813a79",
            "endpoint": "https://api-tn12.kaspa.org/transactions/954d5aa0b17ab15fc503da769e423ecace4164a8a888d625d6ab07f2e2813a79",
            "status": "accepted",
            "explorerUrl": "https://tn12.kaspa.stream/transactions/954d5aa0b17ab15fc503da769e423ecace4164a8a888d625d6ab07f2e2813a79",
            "destination": "kaspatest:qrtnnhjt8ds6398srxytdn7sjc7585d5pfu8gymxvy32fufwpdsd22432yamt",
            "amountTkas": "19.99995",
            "amountSompi": "1999995000",
            "acceptingBlockBlueScore": 10114713
          }
        ],
        "refunds": [
          {
            "pledgeId": "pledge-docs-001",
            "txid": "20e50b59eb0158c2123ecbe4779b7c7f513112def86b32296f01f6ca2739573e",
            "endpoint": "https://api-tn12.kaspa.org/transactions/20e50b59eb0158c2123ecbe4779b7c7f513112def86b32296f01f6ca2739573e",
            "status": "accepted",
            "explorerUrl": "https://tn12.kaspa.stream/transactions/20e50b59eb0158c2123ecbe4779b7c7f513112def86b32296f01f6ca2739573e",
            "destination": "kaspatest:qzvz9r9z9j27dpg853gvlsjdp7ggz44n8zf6zs0svnm6x3pfkwyq72q6p673n",
            "amountTkas": "44.99995",
            "amountSompi": "4499995000",
            "acceptingBlockBlueScore": 10152088
          },
          {
            "pledgeId": "pledge-docs-002",
            "txid": "ffc3b755bae70008a230dbc7534d1b08660f1c559a3d9a5a57c7f4992901fde0",
            "endpoint": "https://api-tn12.kaspa.org/transactions/ffc3b755bae70008a230dbc7534d1b08660f1c559a3d9a5a57c7f4992901fde0",
            "status": "accepted",
            "explorerUrl": "https://tn12.kaspa.stream/transactions/ffc3b755bae70008a230dbc7534d1b08660f1c559a3d9a5a57c7f4992901fde0",
            "destination": "kaspatest:qzvz9r9z9j27dpg853gvlsjdp7ggz44n8zf6zs0svnm6x3pfkwyq72q6p673n",
            "amountTkas": "34.99995",
            "amountSompi": "3499995000",
            "acceptingBlockBlueScore": 10152101
          },
          {
            "pledgeId": "pledge-docs-003",
            "txid": "159c22f536047cd6f8888ad017a93d84a3bc00c50f86ff3beaec3b332aec5f84",
            "endpoint": "https://api-tn12.kaspa.org/transactions/159c22f536047cd6f8888ad017a93d84a3bc00c50f86ff3beaec3b332aec5f84",
            "status": "accepted",
            "explorerUrl": "https://tn12.kaspa.stream/transactions/159c22f536047cd6f8888ad017a93d84a3bc00c50f86ff3beaec3b332aec5f84",
            "destination": "kaspatest:qzvz9r9z9j27dpg853gvlsjdp7ggz44n8zf6zs0svnm6x3pfkwyq72q6p673n",
            "amountTkas": "19.99995",
            "amountSompi": "1999995000",
            "acceptingBlockBlueScore": 10152120
          }
        ],
        "summary": {
          "pledgeOutputs": 3,
          "releaseDrafts": 3,
          "acceptedReleases": 3
        }
      },
      "refusalPrompts": [
        {
          "id": "non-selected-refund-after-release",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "REPLAY_BRANCH_REJECT",
          "reason": "refund alternates are not promoted after the pledge outputs release"
        }
      ],
      "boundaries": [
        "This upgrades the pledge money movement only: fresh AssurancePledge covenant outputs release to the selected recipient.",
        "The coordination threshold and pack selection remain transparent replay/planner evidence.",
        "Do not describe this as private coordination, pooled custody, or protocol scheduling."
      ]
    },
    {
      "id": "vault-negative-checks",
      "experiment": "vault-negative-checks",
      "evidenceClass": "TN12_ACCEPTED_BACKBONE_WITH_LOCAL_REJECTS",
      "recommendedWalletDecision": "reject-invalid-attempts",
      "title": "Review the withdrawals the vault refuses",
      "plainAction": "Review 7 blocked withdrawal attempts before treating the vault path as safe to automate.",
      "userChecks": [
        "Accepted reset txid: f99bb6f6552beac976b770448ef2d75748b4d7fbf66932e1156ea41493978759",
        "Blocked attempts: 7",
        "Wrong destination row: blocked-local-engine-failed",
        "Missing continuation row: blocked-local-engine-failed",
        "Over-cap row: blocked-local-engine-failed"
      ],
      "technicalChecks": {
        "acceptedBackbone": {
          "cumulativeSpendTxids": [
            "029eb68aec033e659cfff9615e49ac489a9d0ee4df7041507e8471215305b26f",
            "2185f0e53d1a5d7910106f4a101d65ca2f3af2a9369af0f2eab671a20c0ed2ae"
          ],
          "resetTxid": "f99bb6f6552beac976b770448ef2d75748b4d7fbf66932e1156ea41493978759",
          "resetGenesisTxid": "a04e23b177c98e0908b3d6004419f1d330b4bcdb3458e282509992fe35406580"
        },
        "sourceArtifacts": {
          "ownerSig": "artifacts/recurring-treasury-vault-owner-sig-proof.json",
          "cumulative": "artifacts/recurring-treasury-vault-cumulative-cap-proof.json",
          "reset": "artifacts/recurring-treasury-vault-window-reset-proof.json",
          "negativeMap": "artifacts/recurring-treasury-vault-negative-map.json"
        },
        "rows": [
          {
            "id": "wrong-owner-signature",
            "status": "blocked-local-engine-failed",
            "class": "SCRIPT_ENFORCED_LOCAL",
            "rule": "checkSig(ownerSig, owner)",
            "evidence": "artifacts/recurring-treasury-vault-owner-sig-proof.json:over_cap_owner_sig_fails",
            "attack": "Spend with a signature that is not from the owner role.",
            "point": "The vault rule starts with authority, not just amount math."
          },
          {
            "id": "wrong-destination",
            "status": "blocked-local-engine-failed",
            "class": "SCRIPT_ENFORCED_LOCAL",
            "rule": "destination output must equal new ScriptPubKeyP2PK(destination)",
            "evidence": "artifacts/recurring-treasury-vault-owner-sig-proof.json:wrong_destination_owner_sig_fails",
            "attack": "Keep the amount under cap but send it to the wrong destination.",
            "point": "A cap alone is not enough; the destination also has to be constrained."
          },
          {
            "id": "missing-continuation",
            "status": "blocked-local-engine-failed",
            "class": "SCRIPT_ENFORCED_LOCAL",
            "rule": "validateOutputState(1, newState)",
            "evidence": "artifacts/recurring-treasury-vault-owner-sig-proof.json:missing_continuation_owner_sig_fails",
            "attack": "Take the spend output but do not relock the vault continuation.",
            "point": "The state machine survives only if the next output carries the rules forward."
          },
          {
            "id": "cumulative-over-cap",
            "status": "blocked-local-engine-failed",
            "class": "SCRIPT_ENFORCED_LOCAL",
            "rule": "prevState.spent + amount <= cap",
            "evidence": "artifacts/signed-drafts/recurring-treasury-vault-cumulative-over-cap.json",
            "attack": "Make a third spend that pushes the window from 65 tKAS to 80 tKAS against a 75 tKAS cap.",
            "point": "The cap is cumulative across continuation state, not just a per-transaction ceiling."
          },
          {
            "id": "early-reset",
            "status": "blocked-local-engine-failed",
            "class": "SCRIPT_ENFORCED_LOCAL",
            "rule": "lockTime before reset window",
            "evidence": "artifacts/signed-drafts/recurring-treasury-vault-window-early-reset.json",
            "attack": "Reset the window before the required lock time.",
            "point": "Time rules matter; a reset cannot be pulled forward by the UI."
          },
          {
            "id": "stale-reset-window",
            "status": "blocked-local-engine-failed",
            "class": "SCRIPT_ENFORCED_LOCAL",
            "rule": "new state keeps the old window",
            "evidence": "artifacts/signed-drafts/recurring-treasury-vault-window-stale-reset.json",
            "attack": "Claim reset but keep the old window state.",
            "point": "The continuation state has to advance, not merely look like a reset."
          },
          {
            "id": "over-cap-reset",
            "status": "blocked-local-engine-failed",
            "class": "SCRIPT_ENFORCED_LOCAL",
            "rule": "reset amount exceeds cap",
            "evidence": "artifacts/signed-drafts/recurring-treasury-vault-window-over-cap-reset.json",
            "attack": "Reset and immediately spend more than the cap.",
            "point": "A new window does not remove the cap."
          }
        ]
      },
      "refusalPrompts": [
        {
          "id": "wrong-owner-signature",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "SCRIPT_ENFORCED_LOCAL",
          "reason": "checkSig(ownerSig, owner)",
          "artifact": "artifacts/recurring-treasury-vault-owner-sig-proof.json:over_cap_owner_sig_fails"
        },
        {
          "id": "wrong-destination",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "SCRIPT_ENFORCED_LOCAL",
          "reason": "destination output must equal new ScriptPubKeyP2PK(destination)",
          "artifact": "artifacts/recurring-treasury-vault-owner-sig-proof.json:wrong_destination_owner_sig_fails"
        },
        {
          "id": "missing-continuation",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "SCRIPT_ENFORCED_LOCAL",
          "reason": "validateOutputState(1, newState)",
          "artifact": "artifacts/recurring-treasury-vault-owner-sig-proof.json:missing_continuation_owner_sig_fails"
        },
        {
          "id": "cumulative-over-cap",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "SCRIPT_ENFORCED_LOCAL",
          "reason": "prevState.spent + amount <= cap",
          "artifact": "artifacts/signed-drafts/recurring-treasury-vault-cumulative-over-cap.json"
        },
        {
          "id": "early-reset",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "SCRIPT_ENFORCED_LOCAL",
          "reason": "lockTime before reset window",
          "artifact": "artifacts/signed-drafts/recurring-treasury-vault-window-early-reset.json"
        },
        {
          "id": "stale-reset-window",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "SCRIPT_ENFORCED_LOCAL",
          "reason": "new state keeps the old window",
          "artifact": "artifacts/signed-drafts/recurring-treasury-vault-window-stale-reset.json"
        },
        {
          "id": "over-cap-reset",
          "recommendedWalletDecision": "reject",
          "evidenceClass": "SCRIPT_ENFORCED_LOCAL",
          "reason": "reset amount exceeds cap",
          "artifact": "artifacts/signed-drafts/recurring-treasury-vault-window-over-cap-reset.json"
        }
      ],
      "boundaries": [
        "TN12 broadcast-rejected invalid candidates",
        "mainnet activation",
        "wallet-standard user signing",
        "audited custody",
        "production fraud monitoring"
      ]
    }
  ]
}
