{
 "number": 36458,
 "input_hash": "6588154a411766a9",
 "model": "ledger",
 "prompt_hash": null,
 "created": "2026-10-23T01:17:17+00:00",
 "result": {
  "summary": "Adds test vectors to script_tests.json and tx_invalid.json for script interpreter and transaction validation edge cases. The additions cover OP_CHECKSEQUENCEVERIFY with negative operand -2, OP_IFDUP on negative zero and non-minimal zero, OP_ROLL with identical values on stack, Taproot output keys with invalid curve x-coordinates, and single-flag execution for STRICTENC, LOW_S, and NULLFAIL.",
  "problem": "Downstream and alternate implementations that rely on Bitcoin Core's static test suite can miss subtle consensus and policy interpreter edge cases. Additionally, certain policy behaviors were previously only exercised when Bitcoin Core's test harness dynamically augmented validation flags, leaving static JSON consumers without direct test coverage.",
  "card": "Adds test vectors to script_tests.json and tx_invalid.json covering interpreter edge cases including OP_CHECKSEQUENCEVERIFY with -2, OP_IFDUP on negative zero, invalid Taproot public key x-coordinates, and isolated policy flags. Alternate implementations consuming Bitcoin Core's static test vectors miss these corner cases, particularly where Bitcoin Core's test harness previously relied on dynamic flag injection. The edge cases were identified by finding gaps in bitcoin-s.",
  "evidence": [
   "Author note in description: 'These were discovered by finding gaps in an alternate implementation (bitcoin-s)'",
   "Author note in commit message: 'Some policy cases were only caught by the tx_valid harness adding flags back, which implementations copying the JSON don't replicate.'"
  ],
  "scope_notes": "Test data file updates only.",
  "changed_since_previous": "",
  "thread": {
   "last_event_at": "2026-10-22T21:31:58Z",
   "events": 8,
   "head_sha": "5d2fb8d3098703bc4d23d582eb4987cb2dbeda7a",
   "schema_floor": 2,
   "schema": 2
  },
  "waiting_on": [
   {
    "at": null,
    "id": "",
    "on": "nothing",
    "url": null,
    "what": "PR is reviewed and approved with all questions answered"
   }
  ],
  "risk": {
   "level": "low",
   "touches": [
    "tests"
   ],
   "why": "Only modifies static JSON test data files and does not change any production or validation code."
  },
  "discussion": {
   "author_status": "last statement processed 2026-10-22",
   "open_concerns": [],
   "resolved_concerns": [
    "darosior: whether the tx_invalid.json vector is redundant with the script_tests.json vector (answered by benthecarman 2026-10-22)"
   ]
  },
  "reviewability": {
   "state": "Ready",
   "label": "Ready",
   "reason": "Nothing known that would invalidate a review now."
  },
  "agreement": {
   "state": "Strong",
   "summary": "Strong: substantive support, no open objection (fametrano, darosior)",
   "reason": "Added darosior to participants with Concept ACK and full ACK. Recorded question on redundancy in tx_invalid.json which author answered.",
   "evidence": [
    "fametrano: support \u2014 ran the new vectors through btclib; all script_tests.json rows give expected results and error codes, and the 4 tx_invalid.json rows fail under listed flags and pass with no flags",
    "darosior: Concept ACK \u2014 It's useful to know what re-implementations got wrong, as it's often non-obvious stuff we can better cover in our automated testing.",
    "darosior: ACK"
   ],
   "objections": [
    {
     "reviewer": "darosior",
     "association": "MEMBER",
     "type": "question",
     "kind": "scope",
     "harm": "",
     "request": "",
     "question": "whether the tx_invalid.json vector is redundant with the script_tests.json vector",
     "text": "whether the tx_invalid.json vector is redundant with the script_tests.json vector",
     "clears_with": "answer",
     "blocking": false,
     "status": "answered",
     "status_note": "author replied agreeing it is redundant but that redundancy does not hurt here",
     "cleared": true,
     "author_replied": true,
     "others_replied": false,
     "fix_pushed": false,
     "replies": [
      "rc:4353755704"
     ],
     "evidence": "2026-10-22: 'Isn't this one redundant with the script_tests.json one you added above?'",
     "url": "https://github.com/bitcoin/bitcoin/pull/36458#discussion_r4353381236",
     "id": "rc:4353381236",
     "at": "2026-10-22",
     "status_at": "2026-10-22",
     "status_by": "benthecarman",
     "resolution_evidence": "2026-10-22: benthecarman: 'yeah i guess, being redundant doesn't really hurt here though'",
     "pin": null,
     "from_schema": 2
    }
   ],
   "support": [
    {
     "reviewer": "fametrano",
     "reason": "ran the new vectors through btclib; all script_tests.json rows give expected results and error codes, and the 4 tx_invalid.json rows fail under listed flags and pass with no flags",
     "substantive": true,
     "verdict": "",
     "id": "c:6078327410",
     "url": "https://github.com/bitcoin/bitcoin/pull/36458#issuecomment-6078327410",
     "at": "2026-10-09",
     "association": "CONTRIBUTOR",
     "evidence": "tested",
     "areas": [
      "script_tests.json",
      "tx_invalid.json"
     ]
    },
    {
     "reviewer": "darosior",
     "reason": "It's useful to know what re-implementations got wrong, as it's often non-obvious stuff we can better cover in our automated testing.",
     "substantive": true,
     "verdict": "Concept ACK",
     "id": "c:6343690971",
     "url": "https://github.com/bitcoin/bitcoin/pull/36458#issuecomment-6343690971",
     "at": "2026-10-22",
     "association": "MEMBER",
     "evidence": "read",
     "areas": []
    },
    {
     "reviewer": "darosior",
     "reason": "",
     "substantive": false,
     "verdict": "ACK",
     "id": "r:5620675342",
     "url": "https://github.com/bitcoin/bitcoin/pull/36458#pullrequestreview-5620675342",
     "at": "2026-10-22",
     "association": "MEMBER",
     "evidence": "none",
     "areas": []
    }
   ],
   "participants": [
    {
     "login": "fametrano",
     "stance": "support",
     "note": "tested vectors against btclib and verified expected results",
     "association": "CONTRIBUTOR",
     "comments": 1,
     "first": "2026-10-09",
     "last": "2026-10-09"
    },
    {
     "login": "fanquake",
     "stance": "neutral",
     "note": "pinged instagibbs",
     "association": "MEMBER",
     "comments": 1,
     "first": "2026-10-16",
     "last": "2026-10-16"
    },
    {
     "login": "darosior",
     "stance": "support",
     "note": "Concept ACK and approved; asked about test vector redundancy",
     "association": "MEMBER",
     "comments": 5,
     "first": "2026-10-22",
     "last": "2026-10-22"
    }
   ],
   "derivation": "substantive support, no open objection (fametrano, darosior)",
   "model_state": null,
   "corrections": [],
   "notes": "Added darosior to participants with Concept ACK and full ACK. Recorded question on redundancy in tx_invalid.json which author answered."
  },
  "dependencies": {
   "depends_on": [],
   "enables": []
  },
  "categories": [
   {
    "name": "tests",
    "member": true,
    "evidence": "Carries the Tests label and updates static test data files (src/test/data/script_tests.json and tx_invalid.json) to expand unit test coverage.",
    "band": "P3",
    "reason_tag": "test coverage",
    "score": 0.35,
    "factors": {
     "bug_severity": 0,
     "leverage": 0,
     "performance": 0,
     "security_stability": 1,
     "user_value": 0
    },
    "rationale": "Adds test coverage for script interpreter edge cases discovered through alternate implementations. While it does not catch a regression in Bitcoin Core itself, expanding static test vectors provides worthwhile coverage for subtle consensus and policy edge cases."
   }
  ],
  "confidence": "high",
  "uncertainties": [],
  "needs": []
 },
 "cost_usd": 0.0,
 "source": {
  "record": "2026-10-23T01:17:17+00:00",
  "code": "2026-10-09T01:22:44+00:00",
  "judgments": 1
 }
}