Proof & review
Opening a PR
Commit, push and open the PR with its evidence; the one home of the PR rules.
playbook: opening-a-pr — commit, push, open the PR with its evidence
Use at the end of every playbook that changes code (lap.md step=committing, feature.md, a direct request that ends in a PR) · the single home of the PR rules — other files point here, never copy them
1. Commit
- Commit liberally: small, ordered commits, each one landable and telling the story · a fix that belongs in the commit you just made → amend only before push; after push or separable → new commit (never force-push)
- On the base or a branch the profile’s
gitsection forbids →git switch -c <branch per the profile pattern>before the first commit - Commit / PR title per the pattern in the profile’s
gitsection · commit message, PR title and PR body in the profilelanguagesection’s PR / commit language - hook fails → fix 1 time → fails again → stop and report (inside the loop: park per
lap.md) — never--no-verify
2. Before gh pr create
- Independent verdict on the committed head —
/pitwall:gauge“Independent verifier” (every PR, inside the loop or not) · FAIL → that section’s item 4 - Apply
/pitwall:gauge“Record results + tick the PR yourself”:- item 3 —
verifiedentries with this head’s patch-id and this branch → ✅ rows in the Verify table, and those items stay out of “Not done yet” - item 4 —
[PARTIAL]in the title ⇔ “Not done yet” still has a- [ ](same as/pitwall:gauge= PARTIAL) · gauge item 4 removes it later withgh pr editwhen the last box is ticked
- item 3 —
- Run the PR-body check on the body file — the profile’s
checksone if it names one, elsenode <pitwall dir>/scripts/check-pr-body.mjs --file <body file>— it fails → fix the body first, never open the PR with it failing
3. Push + open
Everything is committed in section 1 — a commit after the verdict changes the patch-id → section 2 again
git push -u origin <branch>
gh pr create --base <base> --title "<[PARTIAL] per section 2><title>" --body-file <scratchpad>/pr.md
Then fill pr in this head’s verified entries (/pitwall:gauge “Record results + tick the PR yourself” item 1)
4. PR body
- What: the brief + link to the plan row / tracker task (
tracker: github→Refs #<n>, never a closing keyword —pitwall:ticketG1) · playbook used - Changes: one bullet per behaviour that changed (no file | +/− table — GitHub’s Files tab already shows it) · a playbook may ask for its own table (e.g.
ratchetmoves) - Verify table from
/pitwall:gauge+ the verifier row| Verifier | — | <subagent> <model> @<7-char headSha> patch <12-char patchId> | ✅ <VERIFIED / PARTIAL> |(the PR-body check fails without it) - Decisions to confirm: every fork that used ladder step 2, one line each: option taken · other options · where to change it (none → write “none”)
- Decisions: other things decided on your own + reasons — summarised from the task’s
decisions.tsv - Agents used: one line per agent from
agents[]—<agent> <model> · <step> → <result>(missing = PR incomplete) - Review: the consensus table from
lap.mdreviewing — act on / consider / noted rows, one line each with the models that raised it and what happened (fixed / follow-up) · dismissed → one line “N dismissed, see decisions” (none at all → write “none”) - A PR whose base is another PR’s branch (stack) → open with
gh pr create --draft(/pitwall:merge-ordermarks it ready when its turn comes) + one lineStacked on #<parent> — merge order: /pitwall:merge-order· never write the merge method / order yourself - Not done yet (before merge): B/C items as checkboxes + post-merge work from the profile — only things that must be done (follow-ups / notes go in a separate section) · items already passed locally at this head’s patch-id (this round / any round / any machine — see state
verified) do not belong here, or are ticked already, per/pitwall:gauge“Record results + tick the PR yourself” · items that can’t be done yet stay[ ]+⏳ <case 1–3 + specific reason>(the 3 wait cases at the top oflap.md) — items outside the 3 cases must not be in this section (they must pass before opening the PR) · never tick an item that was not actually run
Outside the loop (direct request): Decisions to confirm = the decisions the user answered or took a default on this session, or “none” · Agents used = the subagents called this session with their models, the verifier included · Review = the review panel per the profile · no verified state → nothing to carry over · link the tracker task if one exists (else /pitwall:ticket, unless the profile says tracker: none)
Playbook-specific PR additions (e.g. move-only.md “PR additions”, port.md) are added on top
5. After opening
- Opening a PR does not start a babysit — post the URL and keep building
- Run
gh pr view <n>before you refer to PR status
Never
- never
--no-verify· never tick an item that was not actually run · never write the merge method / order yourself
The PR body format above is the repo’s (What / Changes / Verify / …), not pstack’s Why / Scope / Blast Radius