{
 "number": 35370,
 "input_hash": "3ec8c3b8b15b0ce4",
 "model": "openrouter/google/gemini-3.8-flash",
 "batch": false,
 "created": "2026-09-17T15:52:49+00:00",
 "provider": "Google",
 "stop_reason": "end_turn",
 "usage": {
  "input_tokens": 20283,
  "cache_creation_input_tokens": 0,
  "cache_read_input_tokens": 0,
  "output_tokens": 2749
 },
 "cost_usd": 0.025521,
 "error": null,
 "result": {
  "display": {
   "goal": [
    "Allow PSBT processing RPCs to explicitly strip or preserve key-origin metadata",
    "Protect user privacy in collaborative PSBT workflows by removing derivation paths and xpubs"
   ],
   "reviewability": [
    "The PR has had no activity for over two months.",
    "The code is otherwise rebased and incorporates earlier design feedback."
   ],
   "agreement": [
    "Strong support for stripping PSBT key-origin fields within the processing RPCs (willcl-ark, rkrux)",
    "Design suggestion to reuse bip32derivs as an enum was adopted by the author (achow101, rkrux)"
   ],
   "categories": [
    {
     "name": "docs",
     "why": [
      "Not a member because the documentation change is only a release note accompanying the RPC change."
     ]
    },
    {
     "name": "rpc",
     "why": [
      "P3 because it backward-compatibly expands bip32derivs into an enum mode argument.",
      "It satisfies a clear request without changing existing caller behavior."
     ]
    },
    {
     "name": "wallet",
     "why": [
      "P3 because it fixes a privacy limitation where collaborative PSBTs could not easily purge key-origin data.",
      "It resolves issue #30294 for users sharing PSBTs with untrusted signers."
     ]
    }
   ]
  },
  "summary": "Extends the `bip32derivs` parameter of `walletprocesspsbt` and `descriptorprocesspsbt` to accept string modes (\"add\", \"preserve\", \"strip\") alongside legacy booleans. In \"strip\" mode, the RPC removes global xpubs and legacy/Taproot BIP32 key origin fields from PSBT inputs and outputs while preserving unknown and proprietary fields.",
  "problem": "Setting `bip32derivs=false` prevents new derivation fields from being added by the node, but does not purge key-origin data already present in an input PSBT, leaking derivation paths and xpubs to co-signers in collaborative workflows.",
  "discussion": {
   "open_concerns": [],
   "resolved_concerns": [
    "achow101 and rkrux suggested turning `bip32derivs` into an enum argument instead of adding a separate boolean flag; author refactored to support \"add\", \"preserve\", and \"strip\" with boolean aliases.",
    "maflcko pointed out naming conventions and redundant PR description text resulting from LLM tooling; author acknowledged the AI policy, reviewed the patch, and squashed commits."
   ],
   "author_status": "silent since 2026-07-10"
  },
  "reviewability": {
   "state": "Stale",
   "label": "Author silent 69 days",
   "reason": "Author has been inactive for 69 days, exceeding the 60-day stale threshold, though all previous review comments were addressed in the last push."
  },
  "agreement": {
   "state": "Strong",
   "summary": "Strong: willcl-ark and rkrux support the approach, and achow101's argument design suggestion was adopted.",
   "reason": "Reviewers agreed that stripping key-origin metadata belongs in the PSBT processing RPCs rather than a separate combiner tool, and the requested argument cleanup was implemented.",
   "evidence": [
    "willcl-ark: 'Approach ACK. This looks like the correct approach (in contrast to #30341), putting strip functionality in walletprocesspsbt (and also descriptorprocesspsbt).'",
    "achow101 suggested converting `bip32derivs` into an enum/choices argument rather than adding another bool.",
    "rkrux: 'Concept ACK... for stripping away the bip32 derivations data if the user intends so' and agreed with converting the parameter into an enum."
   ]
  },
  "dependencies": {
   "depends_on": [],
   "enables": []
  },
  "categories": [
   {
    "name": "docs",
    "member": false,
    "evidence": "Includes only a release note for the RPC parameter update, which belongs to the respective feature area.",
    "band": "Unranked",
    "reason_tag": "",
    "score": 0.0,
    "factors": {
     "security_stability": 0,
     "bug_severity": 0,
     "performance": 0,
     "user_value": 0,
     "leverage": 0
    },
    "rationale": "Release notes describing code changes in other areas do not make a PR part of the documentation category."
   },
   {
    "name": "rpc",
    "member": true,
    "evidence": "Modifies the parameter signature and parsing logic for RPC commands `walletprocesspsbt` and `descriptorprocesspsbt`.",
    "band": "P3",
    "reason_tag": "new feature",
    "score": 0.35,
    "factors": {
     "security_stability": 0,
     "bug_severity": 1,
     "performance": 0,
     "user_value": 2,
     "leverage": 0
    },
    "rationale": "Expands RPC options smoothly by accepting 'add', 'preserve', or 'strip' on `bip32derivs` while keeping backward compatibility with existing boolean parameters."
   },
   {
    "name": "wallet",
    "member": true,
    "evidence": "Changes PSBT manipulation logic in `src/psbt.cpp` and spend RPCs in `src/wallet/rpc/spend.cpp` to sanitize key origin information.",
    "band": "P3",
    "reason_tag": "bug fix",
    "score": 0.4,
    "factors": {
     "security_stability": 1,
     "bug_severity": 1,
     "performance": 0,
     "user_value": 2,
     "leverage": 0
    },
    "rationale": "Addresses issue #30294, providing a clean method to prevent key derivation and xpub metadata leaks during multiparty signing sessions."
   }
  ],
  "confidence": "high",
  "uncertainties": [],
  "needs": [],
  "card": "PR 35370 adds 'strip', 'preserve', and 'add' modes to the bip32derivs argument in walletprocesspsbt and descriptorprocesspsbt, retaining boolean compatibility. This resolves issue #30294 by enabling users in collaborative PSBT setups to strip derivation paths and global xpubs for privacy before sharing PSBTs with counter-parties. The PR has Concept ACK and Approach ACK from reviewers who favored this over earlier proposals, and earlier API design comments from achow101 were resolved. Although technically reviewable, the author has been silent for 69 days."
 },
 "raw_text": null
}