{
 "number": 36626,
 "input_hash": "8b36114d4678848b",
 "model": "ledger",
 "prompt_hash": null,
 "created": "2026-10-30T01:14:26+00:00",
 "result": {
  "summary": "Adds two functional test cases to rpc_psbt.py verifying global PSBT version decoding behavior. One test checks that an unsupported version number in PSBT_GLOBAL_VERSION causes decodepsbt to fail, and the other verifies that omitting the version field causes the PSBT to be parsed as version 0.",
  "problem": "Global PSBT version decoding behavior lacked test coverage. Regressions or unintended changes to PSBT version limits or default version-0 fallback handling would pass test suites undetected.",
  "card": "Adds functional test coverage for global PSBT version decoding in rpc_psbt.py. It verifies that PSBTs with unsupported global version numbers are rejected on decode and that omitting the version field triggers fallback parsing as PSBT version 0. The author demonstrates that mutating PSBT version checks in psbt.h previously triggered no test failures.",
  "evidence": [
   "Author diff demonstrations showing that modifying PSBT_HIGHEST_VERSION or removing the missing-tx check for version 0 in psbt.h triggered zero existing test failures."
  ],
  "scope_notes": "",
  "changed_since_previous": "Now includes the diff, confirming these are Python functional tests in rpc_psbt.py rather than C++ unit tests.",
  "thread": {
   "last_event_at": "2026-10-29T08:57:46Z",
   "events": 4,
   "head_sha": "eeb4782bda842f6c9eb8a572301b46f8d5faf30b",
   "schema_floor": 2,
   "schema": 2
  },
  "waiting_on": [
   {
    "at": "2026-10-29",
    "id": "c:6492355359",
    "on": "author",
    "url": "https://github.com/bitcoin/bitcoin/pull/36626#issuecomment-6492355359",
    "what": "author response to test refactoring suggestions and additional test case proposed by Bicaru20"
   }
  ],
  "risk": {
   "level": "low",
   "touches": [
    "tests"
   ],
   "why": "Touches only functional test code for PSBT RPC parsing."
  },
  "discussion": {
   "author_status": "last statement processed 2026-10-29",
   "open_concerns": [
    "Bicaru20: combine both test cases into one function to reuse the PSBT",
    "Bicaru20: explicitly specify psbt_version=2 when creating the PSBT in test_psbt_unsupported_version_field in case the default ever changes",
    "Bicaru20: explicitly specify psbt_version=2 when creating the PSBT in test_psbt_missing_version_field",
    "Bicaru20: add test coverage for decoding a PSBT with PSBT_GLOBAL_VERSION set to 1"
   ],
   "resolved_concerns": []
  },
  "reviewability": {
   "state": "Ready",
   "label": "Ready",
   "reason": "Nothing known that would invalidate a review now."
  },
  "agreement": {
   "state": "Positive",
   "summary": "Positive: support without stated reasons, no open objection (Bicaru20)",
   "reason": "Added a suggestion from Bicaru20 proposing an additional test case for PSBT version 1 error handling.",
   "evidence": [
    "Bicaru20 (suggestion, approach, must be answered, open): combine both test cases into one function to reuse the PSBT",
    "Bicaru20 (suggestion, maintenance, must be answered, open): explicitly specify psbt_version=2 when creating the PSBT in test_psbt_unsupported_version_field in case the default ever changes",
    "Bicaru20 (suggestion, maintenance, must be answered, open): explicitly specify psbt_version=2 when creating the PSBT in test_psbt_missing_version_field",
    "Bicaru20 (suggestion, scope, must be answered, open): add test coverage for decoding a PSBT with PSBT_GLOBAL_VERSION set to 1",
    "Bicaru20: Concept ACK \u2014 no reason given"
   ],
   "objections": [
    {
     "reviewer": "Bicaru20",
     "association": "CONTRIBUTOR",
     "type": "suggestion",
     "kind": "approach",
     "harm": "",
     "request": "combine both test cases into one function to reuse the PSBT",
     "question": "",
     "text": "combine both test cases into one function to reuse the PSBT",
     "clears_with": "answer",
     "blocking": false,
     "status": "open",
     "status_note": "",
     "cleared": false,
     "author_replied": false,
     "others_replied": false,
     "fix_pushed": false,
     "replies": [],
     "evidence": "2026-10-27: 'I beleive it is good to separate the test into functions, but in this case I  think we could do it with one function that covers both cases, that way we can reuse the PSBT.'",
     "url": "https://github.com/bitcoin/bitcoin/pull/36626#pullrequestreview-5665408081",
     "id": "r:5665408081",
     "at": "2026-10-27",
     "status_at": null,
     "status_by": null,
     "resolution_evidence": "",
     "pin": null,
     "from_schema": 2
    },
    {
     "reviewer": "Bicaru20",
     "association": "CONTRIBUTOR",
     "type": "suggestion",
     "kind": "maintenance",
     "harm": "",
     "request": "explicitly specify psbt_version=2 when creating the PSBT in test_psbt_unsupported_version_field in case the default ever changes",
     "question": "",
     "text": "explicitly specify psbt_version=2 when creating the PSBT in test_psbt_unsupported_version_field in case the default ever changes",
     "clears_with": "answer",
     "blocking": false,
     "status": "open",
     "status_note": "",
     "cleared": false,
     "author_replied": false,
     "others_replied": false,
     "fix_pushed": false,
     "replies": [],
     "evidence": "2026-10-27: 'Since the test is for PSBTv2, I think it's better to explicity add the psbt version in case the default it is ever changed.'",
     "url": "https://github.com/bitcoin/bitcoin/pull/36626#discussion_r4387437960",
     "id": "rc:4387437960",
     "at": "2026-10-27",
     "status_at": null,
     "status_by": null,
     "resolution_evidence": "",
     "pin": null,
     "from_schema": 2
    },
    {
     "reviewer": "Bicaru20",
     "association": "CONTRIBUTOR",
     "type": "suggestion",
     "kind": "maintenance",
     "harm": "",
     "request": "explicitly specify psbt_version=2 when creating the PSBT in test_psbt_missing_version_field",
     "question": "",
     "text": "explicitly specify psbt_version=2 when creating the PSBT in test_psbt_missing_version_field",
     "clears_with": "answer",
     "blocking": false,
     "status": "open",
     "status_note": "",
     "cleared": false,
     "author_replied": false,
     "others_replied": false,
     "fix_pushed": false,
     "replies": [],
     "evidence": "2026-10-27: 'Same as before'",
     "url": "https://github.com/bitcoin/bitcoin/pull/36626#discussion_r4387447453",
     "id": "rc:4387447453",
     "at": "2026-10-27",
     "status_at": null,
     "status_by": null,
     "resolution_evidence": "",
     "pin": null,
     "from_schema": 2
    },
    {
     "reviewer": "Bicaru20",
     "association": "CONTRIBUTOR",
     "type": "suggestion",
     "kind": "scope",
     "harm": "",
     "request": "add test coverage for decoding a PSBT with PSBT_GLOBAL_VERSION set to 1",
     "question": "",
     "text": "add test coverage for decoding a PSBT with PSBT_GLOBAL_VERSION set to 1",
     "clears_with": "answer",
     "blocking": false,
     "status": "open",
     "status_note": "",
     "cleared": false,
     "author_replied": false,
     "others_replied": false,
     "fix_pushed": false,
     "replies": [],
     "evidence": "2026-10-29: 'there is a case that is not coverd and we could add to this test'",
     "url": "https://github.com/bitcoin/bitcoin/pull/36626#issuecomment-6492355359",
     "id": "c:6492355359",
     "at": "2026-10-29",
     "status_at": null,
     "status_by": null,
     "resolution_evidence": "",
     "pin": null,
     "from_schema": 2
    }
   ],
   "support": [
    {
     "reviewer": "Bicaru20",
     "reason": "no reason given",
     "substantive": false,
     "verdict": "Concept ACK",
     "id": "r:5665408081",
     "url": "https://github.com/bitcoin/bitcoin/pull/36626#pullrequestreview-5665408081",
     "at": "2026-10-27",
     "association": "CONTRIBUTOR",
     "evidence": "none",
     "areas": []
    }
   ],
   "participants": [
    {
     "login": "Bicaru20",
     "stance": "support",
     "note": "Concept ACK; suggested combining test functions, explicitly specifying psbt_version, and adding test coverage for PSBT version 1",
     "association": "CONTRIBUTOR",
     "comments": 4,
     "first": "2026-10-27",
     "last": "2026-10-29"
    }
   ],
   "derivation": "support without stated reasons, no open objection (Bicaru20)",
   "model_state": null,
   "corrections": [],
   "notes": "Added a suggestion from Bicaru20 proposing an additional test case for PSBT version 1 error handling."
  },
  "dependencies": {
   "depends_on": [],
   "enables": []
  },
  "categories": [
   {
    "name": "rpc",
    "member": true,
    "evidence": "Adds functional tests for the decodepsbt RPC method in test/functional/rpc_psbt.py.",
    "band": "P3",
    "reason_tag": "test coverage",
    "score": 0.3,
    "factors": {
     "bug_severity": 0,
     "leverage": 0,
     "performance": 0,
     "security_stability": 0,
     "user_value": 0
    },
    "rationale": "Adds test coverage verifying that decodepsbt properly rejects unsupported PSBT_GLOBAL_VERSION values and falls back to version 0. The author demonstrated that modifying PSBT_HIGHEST_VERSION triggered zero existing test failures, making this worthwhile coverage against RPC decode regressions."
   },
   {
    "name": "tests",
    "member": false,
    "evidence": "Changes test/functional/rpc_psbt.py to test decodepsbt behavior rather than test runners, framework machinery, or test infrastructure.",
    "band": "Unranked",
    "reason_tag": "test coverage",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 0,
     "performance": 0,
     "security_stability": 0,
     "user_value": 0
    },
    "rationale": "Category explicitly excludes tests of a particular area's behavior in favor of testing machinery."
   },
   {
    "name": "wallet",
    "member": false,
    "evidence": "Only tests non-wallet PSBT decoding via decodepsbt in test/functional/rpc_psbt.py without touching wallet code or wallet RPCs.",
    "band": "Unranked",
    "reason_tag": "test coverage",
    "score": 0.0,
    "factors": {
     "bug_severity": 0,
     "leverage": 0,
     "performance": 0,
     "security_stability": 0,
     "user_value": 0
    },
    "rationale": "Category definition specifies that PSBT changes affecting only RPC without wallet code belong to rpc, not wallet."
   }
  ],
  "confidence": "high",
  "uncertainties": [],
  "needs": []
 },
 "cost_usd": 0.0,
 "source": {
  "record": "2026-10-30T01:14:26+00:00",
  "code": "2026-10-25T01:16:10+00:00",
  "judgments": 3
 }
}