Adjudicated follow-up from PR #95's WARN (finding 2, verifier-confirmed).
_source_issue() reads feature.get("source_issue") as the preferred explicit field, but neither BeadsBoard.create_feature() nor update_feature() accepts a source_issue parameter — the explicit field the Fixes-injection feature treats as its source of truth is unreachable through the board's own API (only settable via raw br update). Harmless today because the description-URL fallback covers the realistic case, but the contract is dead code via the API.
Proposed: wire source_issue through as an optional param on create_feature / update_feature / board_create_feature / board_update_feature, and through board_create_from_plan's per-item schema (#92's tool — the natural seam, since plan items originate from triaged GitHub issues). Validation: accept a full issue URL or owner/repo#N; store normalized.
LOE 1-2. Refs: #93 (the injection feature), #92 (the batch tool), PR #95 finding 2.
Adjudicated follow-up from PR #95's WARN (finding 2, verifier-confirmed).
_source_issue()readsfeature.get("source_issue")as the preferred explicit field, but neitherBeadsBoard.create_feature()norupdate_feature()accepts asource_issueparameter — the explicit field the Fixes-injection feature treats as its source of truth is unreachable through the board's own API (only settable via rawbr update). Harmless today because the description-URL fallback covers the realistic case, but the contract is dead code via the API.Proposed: wire
source_issuethrough as an optional param oncreate_feature/update_feature/board_create_feature/board_update_feature, and throughboard_create_from_plan's per-item schema (#92's tool — the natural seam, since plan items originate from triaged GitHub issues). Validation: accept a full issue URL orowner/repo#N; store normalized.LOE 1-2. Refs: #93 (the injection feature), #92 (the batch tool), PR #95 finding 2.