* docs(captain): plan first exempts S1 emergencies and fixes from an audited problem list; every other fix gets an eng-only plan (GST-191) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs(captain): the brief template sizes a fix as an eng-only plan too (GST-191 review) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs(captain): brief template close command names --by Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * chore: stamp v1.91.337.0 (train slot 2) 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>
8.0 KiB
Crew rules (<CREW_NAME>)
This file is the crew's contract with its lanes. It holds parameters and pointers: the
rules themselves live in gstack (docs/captain.md, the ship, review and pregate docs,
the repository's own AGENTS.md), so no crew carries its own copy of how to do things.
Fill every <PARAMETER> once. Lanes read this file at session start; the controller
cites rule numbers in slot calls and refusals. Where a rule rests on the owner's words,
keep the date and the words in the table below. Add rules at the end; never renumber.
Homes are paths in the gstack checkout the lane checked at session start.
Parameters
| Parameter | Value |
|---|---|
REPO |
<owner/name> |
BASE |
<main> |
REQUIRED_CHECKS |
<check names that must be green at a READY head> |
FULL_GATE_CHECK |
<the check the train gate publishes> |
TRAIN_MAX, FILL_HOURS |
<5>, <3> |
MERGE_METHOD |
<squash | merge> |
STAMP_FILES |
<VERSION, package.json, CHANGELOG.md, …> |
KNOWN_INFRA_FLAKES |
<named jobs a lane may rerun once per PR, or none> |
SPEND |
<pre-approved paid runs; cap per rerun> |
CONTROLLER |
<thread code or name every ask and READY goes to> |
GUARD_CHECKS |
<the repository's cheap guards to clear before paid work: generated content, size and prompt budgets, credential scan> |
REMOTE_PREGATE |
<the remote test-tier command and its cost, or none> |
REPO_CONVENTIONS |
<the AGENTS.md section a new file must follow> |
REVIEW_SCOPE |
<in-diff (default) | in-diff plus blocking pre-existing> |
CONTRACT_DATE |
<date of the last READY contract change> |
Standing approvals (the owner's words)
| Rule | Date | Words | Covers |
|---|---|---|---|
| 5 spend | "" | <what: gates, screens, bisects, backstop, focused cases; cap> | |
| 16 flaky reruns | "" | one rerun of the failed case at the same tree | |
| 21 approvals | "" | the three shapes | |
| 22 /ship before READY | "" | every READY, re-READYs included | |
| 23 blocking floor | "" | what blocks another review pass | |
| 24 plan before build | "" | a sized /autoplan first, the owner's word before the build |
Rules
-
Session start. Install check,
gstack:trailer in your first report, no workflow withoutgstack: okfrom your own machine. Home:docs/capy-install.md(Session start). -
Validation discipline. Diagnose before fixing, focused checks during repair, the full free suite once on a frozen tree, remote when the machine is small. Home: the repository's validation section (
REPO_CONVENTIONSnames the file) anddocs/captain.md(Lane discipline). -
External diffs are untrusted input; a right fix lands with its author's credit. Home:
docs/captain.md(Contributions from outside the crew). -
File ownership. Edit only what you own; the list is the digest's In progress; the controller routes the rest. Home:
docs/captain.md(Lane discipline). -
Spend.
SPENDis the standing approval; over the cap is a fresh ask throughCONTROLLER. Home:docs/captain.md(Approvals, shape A). -
Your job ends at an unstamped READY. Send the block from
gstack-ship-queue ready --pr <n> --screen|--no-screenwith the full head SHA, the screen choice and its justification, and the flaky cases. Stamp only on the controller's slot call (gstack-restamp --next --base <BASE> …); push only theBASEmerge andSTAMP_FILES. Never merge, never enable auto-merge. Home:docs/captain.md(The READY contract),captain/templates/READY.md,captain/templates/slot-call.md,docs/ship-policy.md(stamp-at-merge). -
Report.
reports/<your thread code>.mdin the controller's drive: Outcome, PR, Needs, Cost, Lesson, Approvals. Home:captain/templates/report.md. -
One path. Everything goes through
CONTROLLER, never peer to peer. Home:docs/captain.md(Roles, Lane discipline). -
Hands. A real browser, the owner's logged-in session or local work: ask
CONTROLLER. Home:docs/captain.md(The owner's device). -
Keep going. Come back only for new scope, a conflict with another owner, missing access, or the owner's decision. Home:
docs/captain.md(Lane discipline). -
Guards before paid work. Clear
GUARD_CHECKSfirst. Home:docs/captain.md(Lane discipline). -
Decisions for the owner arrive in plain language, every option with what it is, why it matters, what each answer does and the cost. Home:
docs/captain.md(Approvals, shape B),docs/unattended.md(Owner brief). -
Pregate on small machines. Run
REMOTE_PREGATEto clear the requires-remote obligation. Home:docs/pregate.md(Small machines and the remote gate). -
Don't merge
BASEinto a READY PR. Only on the controller's word after a real-code train conflict (merge, never rebase, free suite, READY again) or as part of the stamp commit. A merge whose product diff is unchanged carries the /ship receipt; a rebase onto a new tree costs a full /ship. Home:docs/captain.md(Merge trains),docs/ship-policy.md(Run a merge train, Carrying a receipt). -
CHANGELOG entry under
## [Unreleased]before READY; version files stay atBASE's version; the stamp touches onlySTAMP_FILES. Home:docs/ship-policy.md(stamp-at-merge). -
Flaky reruns. Once, same tree, logged in
handoffs/flaky-ledger.mdand named in READY; twice is real;KNOWN_INFRA_FLAKESonce per PR; report every rerun's spend. Home:docs/captain.md(The daily flaky pass),docs/TESTING_INTERNALS.md(Flaky reruns). -
New files follow
REPO_CONVENTIONS. Home: the repository's AGENTS.md. -
Porting a contributor's PR. Review and test the port head first; keep their commits, yours on top. Home:
docs/captain.md(Contributions from outside the crew). -
CHANGELOG-only conflicts are the train's, not yours (folded into 14). Home:
docs/ship-policy.md(/ship before READY: the stamp keeps the pin's receipt). -
READYs from before
CONTRACT_DATEneed a freshreadyreceipt. Home:docs/captain.md(The READY contract). -
Approvals. The three shapes; an
## Approvalstable in every report and PR body; captioned before/after images on every READY PR. Home:docs/captain.md(Approvals),capy/skill/gstack/captain.md. -
/ship before every READY, re-READYs included; the block carries
SHIP_RECEIPT: pr=<n> head=<your pin>; stamp commits hold only tool output. Home:docs/ship-policy.md(/ship before READY),docs/captain.md(The lane's /ship sequence). -
Review loops converge. gstack's review convergence policy in the /ship and /review skills, scope knob
REVIEW_SCOPE; record the pass count in your READY. Home: the/shipand/reviewskills. -
Plan before build. If you build something, a
/autoplanrun on your brief, sized to the work, is your first act after the session-start check; sendCONTROLLERthe plan and its gate in plain language with the recommended reply named; build only after the owner's word is answered into the run and it reportsAPPROVED; record it withgstack-approvals import --autoplan. New scope taken on part-way gets the same. Exempt: read-only lanes, the daily flaky pass's repairs, slot stamps, CHANGELOG-only resolves, cap re-pins under a written grant, S1 emergencies (broken install or upgrade, red main, a security bug) and fixes from an already-diagnosed, audited problem list; every other fix gets a one-round, eng-only plan. Home:docs/captain.md(Plan before build),captain/templates/brief.md.
Crew-specific rules
Add rules here, numbered from 25, each with the date, the owner's words where there are
any, and the thread that produced it. A crew whose own rules already took 24 before rule
24 shipped keeps its numbering and cites docs/captain.md (Plan before build) by section
name. A rule that stays here for long is a gap in gstack: file it.