mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-01 06:24:41 +01:00
D1: the GBRA-40 fix wave's gbrain #6279 body had no `## Issues` section and no receipt (it was not composed by /ship, so gstack-issue-links never ran), and #6252 appeared only as a subject parenthetical `(#6252)`, which the closure rule correctly treats as Refs. The rule is kept. Same-repo references are now printed as promotion candidates (`(promote: fix #N)`, `candidates` in --json), and `gstack-ship-receipt write --issues ... --body` refuses a body that lacks a line its issues object records (ISSUE_LINKS_MISSING), so a /ship body can no longer drop its closing lines. D2: open PRs by other authors whose closing set overlaps this PR's Fixes are `Related: #N (@author)` (paged GraphQL closedByPullRequestsReferences; viewer and this branch excluded; cross-repo PRs keep owner/repo#N). `Supersedes` and `Contributed by` only with --supersedes/--credit; --no-auto-links skips the lookup; the stderr preview names each added line's source. A failed lookup is ISSUE_LOOKUP_FAILED (installer form with docs anchor) and keeps the other lines. D3: a --ci-run match becomes a Flake line only for a bot-opened issue of this repository that names that run (flake:json first_seen.run_id or this repo's actions/runs URL) and a test; duplicates of one test keep the lowest number; every refused match prints its reason. Files: bin/gstack-issue-links, bin/gstack-ship-receipt, lib/issue-links.ts, lib/ship-receipt.ts, lib/headless-artifacts.ts (ship-receipt issues.related), lib/result-codes.ts (ISSUE_LOOKUP_FAILED, ISSUE_LINKS_MISSING, resultLineWithDocs), bin/gstack-doctor-components.sh (regenerated), docs/pregate.md, docs/troubleshooting.md, test/ship-issue-intent.test.ts, test/helpers/pregate-fixture.ts (gh shim: repo view, api graphql, full issue rows). Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>