Files
Garry Tanandcapy-ai[bot] 6748d54f7f v1.91.343.0 feat(captain): every ask to the owner uses the lettered ask format (R41) (#3655)
* feat(captain): every ask to the owner uses the lettered ask format (R41)

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

* test(captain-brief): render the named heading through the brief helper (typecheck:test)

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

* chore(changelog): add the R41 ask-format fragment

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

* fix(captain-brief): tell the relaying agent how a named option answers (rec except <token>)

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

* chore(changelog): name the rec except form in the R41 fragment

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

* feat(captain): an ask that needs the owner to act carries the exact link and simple steps (R43)

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-31 00:42:31 +00:00

2.0 KiB

Plan ask (shape B)

Relayed by the controller to the owner. Written for someone outside the project; no gate codes in the body. gstack-owner-brief render --captain --out <run dir> prints this shape from an autoplan run; write it by hand for any other plan.

Decision needed on <thread>: <one-line title>. Reply **do it** to take every recommendation.

## ELI5
<5-10 plain sentences: what changes, for whom, and what it costs>

## Before → after
<what the user or maintainer sees today; what they will see after; a command and its
output, a screen, a cost or time number>

## Why it matters
<who is hurt today and how much, with numbers>

## What caused this work
<the trigger: an issue or PR link, a failed run, a user report, or the owner's words quoted>

## Big decisions
1. <decision>: options <a, b, c>; pick <b> because <why>; what would flip it: <condition>.
2. …

## What we need from you
<Captain name>
- A: <code> hit problem <p>, which happens when <h>. We could fix it in these ways: 1) <x> (<cost>); 2) <y> (<cost>); 3) <z> (<cost>). Recommendation: <x> because <why>. A1 to take recommendation.
- B: …

**do it** = take every recommendation in this list at full scope, including <the follow-ons
named: docs, trains, cleanups>, and carry them through to done with no further ask. A named
option ("A2") takes that option instead.

<only when the owner must act; the exact link, never a menu path (a Capy app page: its exact path and field)>
- C: <code> needs you to <action>, because <why>. Open <exact URL>, then:
  1. Click <button>.
  2. Type <value> in <field>.
  3. Reply **done**.

When the answer comes back, record it before the work starts. For an autoplan gate: gstack-autoplan answer --out <run dir> --gate-rev <n> --reply <tokens> --rec-hash <h> --by agent:<thread> --owner-reply "<exact words>", then gstack-approvals import --autoplan <run dir> --by "<owner>" (the tool records the relayer). For any other plan: gstack-approvals add --ask "<what>" --words "<exact words>" --by "<owner> (via <controller>)" --scope "<what it covers>".