mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-03 23:37:53 +01:00
* fix(approvals): render no identifying approval text on public repositories (GST-1160) gstack-approvals render asks gh for the repo's visibility. A public repo, or one gh cannot read, gets only 'Approved: yes|no (record r-<id>)'; a PR description keeps every edit, so the owner's words, run ids and plan hashes stay in the private record. --full prints the rows only when the repo is not reported public. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix: pre-landing review fixes (check the origin repository's visibility too, GST-1160) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs: say render prints one line on public repositories (GST-1160) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs: leave docs/captain.md for a follow-up; /ship reads it as agent prose (GST-1160) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --------- Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
3.9 KiB
3.9 KiB
Step 19-C: Capy PR body (What changed, Why, Blast radius, Approvals)
Read only when Step 19 printed CAPY_PR: on. Under Capy a person decides the merge from the PR and
the READY report, through a Captain, so the body shows what changed in pictures, why, and who
approved what. Guide: captain.md beside the Capy gstack skill's SKILL.md.
Order. The gstack-ship-receipt block stays first when Step 19 writes one. Then ## What changed,
## Why, ## Blast radius and ## Approvals, then the standard sections below. Keep ## Summary to
commit themes; do not repeat the captions.
- Pick the evidence: one to three before/after pairs, highest-signal first. The first is the
key image.
- UI change: screenshot the changed screen at the base and on this branch with the browse flow, or your host's browser, at the same size.
- Skill or prompt change:
~/.claude/skills/gstack/bin/gstack-pr-shots --path <template or SKILL.md> --heading "<changed section>" --caption "<what changed and why>". - CLI change: save the output of a command this ship already runs, at the base and on this
branch, to files inside the repository (
.gstack/tmp/before.txt,.gstack/tmp/after.txt), then~/.claude/skills/gstack/bin/gstack-pr-shots --before <file> --after <file> --kind terminal --caption "<…>". Never run a command with side effects just to make a picture. - No visible surface: picture the source section or test output that best shows the change.
gstack-pr-shotsrefuses inputs that match the secret scanner (PR_SHOTS_INPUT_REFUSED). Remove the secret from the capture; never work around the refusal.
- Read
SHOT_PNG:. A path: use it.unavailable (…): screenshot the printedshot.htmlwith your own browser at 880 px wide and use that PNG.failed (…): use the text version only. - Upload. Only for a public repository (
gh repo view --json visibility -q .visibilityprintsPUBLIC). A private repository gets the text version, unless the person approved images for it (record that withgstack-approvals add). Upload each PNG with Capy's PR asset tool (tools.pr.uploadAsset). Embed exactly the URL it returns, with the caption as alt text:(a returned bare video URL stays on its own line). If an upload fails, retry once, and only for a transient error. Otherwise use the text version and writeimage upload failed: <reason>under the caption. Never block publication on an image. - Under every image: a one-line caption saying what changed and why, then the contents of the
printed
text.md(a collapsed text before/after, for readers who cannot see the image and for search). ## Why: two or three sentences. The first states the problem in the person's words (the issue, the failed run, or their request, quoted); the rest say what changes for them. No inventory: BAD "Adds a lint and a CI step." GOOD "'The review loop is too overzealous.' Pass 2 now reads only pass 1's range."## Blast radius: the body template's item, written once, here: what else the change touches and the one fact that makes that safe, with the evidence-ladder rung it reached (the/investigateskill's Blast radius section, when present).## Approvals: the output of~/.claude/skills/gstack/bin/gstack-approvals render, verbatim. It escapes its cells, and the receipt never reads it as an approval citation. A public repo (or unknown visibility) gets onlyApproved: yes|no (record <id>); never pass--fullfor a PR body. OnAPPROVAL_RECORD_UNAVAILABLEkeep its text and say so in the READY report. Never type rows by hand.- READY report: attach the key image's PNG to the report you send (Capy's message attachments) and give its uploaded URL, so the Captain can show it inline.