Files
gstack/captain/templates/brief.md
T
Garry Tanandcapy-ai[bot] 737e5a239e v1.91.285.0 docs(captain): plan before build — a sized /autoplan is a building lane's first act, the owner's word gates the build (#3521)
* docs(captain): plan before build — a sized /autoplan is a building lane's first act, the owner's word gates the build (GSTA-130)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* docs(capy skill): Plan, approve, ship — the Capy-wide short form (autoplan sized to the work, ELI5 with rec and do it, APPROVED before the build, /ship at the final head, no merge without the owner's word) (GSTA-130)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* fix(changelog): restore the full history; the Unreleased block had been written over a truncated read (GSTA-130)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* docs(capy skill): tighten Plan, approve, ship to one-line bullets so the Capy skill stays under its 4120-token eager ceiling (GSTA-130)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* fix: pre-landing review fixes — import --by takes the owner alone, the controller checks the row against its relay, brief.md spells the full answer command and carries the run dir, first act after the install check (GSTA-130)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>

* docs(captain): name the lane brief in the template lists; fix two template command lines

docs/skills.md and docs/PROJECT_STRUCTURE.md enumerate captain/templates/ and
omitted brief.md (document-release audit gsta130-docs-1). brief.md's restore
line now names the checkpoint dir that resume --from takes, and plan-ask.md's
answer line carries --rec-hash like brief.md (ship review pass 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>
2026-10-27 23:56:53 +00:00

2.7 KiB

Brief

Sent by the controller when a lane starts, and again when a lane takes on scope its brief did not name. The lane reads the rules file first, then this. Everything in angle brackets is filled by the controller; Plan: says whether the lane plans first (docs/captain.md, Plan before build).

Lane: <thread code> · Controller: <CONTROLLER> · Rules: <drive>/CREW.md · Base: <BASE>
Owns: <the files and directories this lane may edit; everything else is routed through the controller>
Do not touch: <files other live lanes own, each with its lane>
Plan: required | approved: <autoplan run dir, or its checkpoint dir> | exempt: <reason from the exemption list>
Spend cap: <focused paid runs per PR, from SPEND>

1. Plan (when Plan: required). After the session-start install check, install for autoplan
   and follow autoplan/DRIVER.md "On Capy" (launch file sourced, GSTACK_AUTOPLAN_CHECKPOINT_DIR
   set, run dir under ~/.capy/work). Write the plan with its ## Before → after,
   ## Why it matters, ## What caused this work, ## Big decisions and ## Implementation plan
   sections, then run gstack-autoplan next --out <run dir> --plan <plan.md> <scope flags>
   sized to this brief (a one-file fix: --no-ui --no-dx --max-rounds 1 --estimate-usd <n>
   --spend-cap <small>). At the gate send me the output of
   gstack-owner-brief render --captain --out <run dir> whole, as a needs-you report.
   Build nothing yet.
2. Build after the word. I bring the owner's exact words back. Answer them into the run
   (gstack-autoplan answer --out <run dir> --gate-rev <n> --reply <tokens> --rec-hash <h>
   --by agent:<your thread> --owner-reply "<their words>"), incorporate every accepted plan
   change (revise), finish every reopened phase, and start product edits only when the run
   reports APPROVED. Then gstack-approvals import --autoplan <run dir> --by "<owner>".
   New scope you take on part-way goes back to step 1 with its own plan.
3. Ship. CHANGELOG entry under [Unreleased]; GUARD_CHECKS, pregate and /ship at the final
   head; one unstamped READY block (captain/templates/READY.md) to me; the PR body carries
   gstack-approvals render. Never merge; stamp only on my slot call.

Done when: the READY block is sent at a frozen head, reports/<thread code>.md is written,
and its Approvals table carries the plan approval row (the owner's words, the date) or the
Plan: exempt reason.

A lane whose brief says approved: <dir> starts at step 2 with that run (restore it with gstack-autoplan resume --out <new dir> --from <its checkpoint dir> when it lives on another machine); a lane whose brief says exempt: starts at step 3. A brief with no Plan: line reads as Plan: required.