mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-02 15:04:37 +01:00
* refactor: share the decision-trail append rules (lib/decision-trail.ts) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * feat(autoplan): carry the owner's answer to a later gate that asks nothing new, gate.json eli5, stacked approvals import A later gate revision with nothing new is answered with the owner's recorded words (CARRIED); a 'do it' also covers new auto items that change no scope, cost or direction; an unreviewed post-cap delta gets one cross-family reviewer first (CARRY_CHECK, gstack-autoplan check). gate.json gains eli5 and the Captain brief requires ## ELI5 on runs that carry it. gstack-approvals import --stack writes every branch or none. The first next prints REVIEW_ESTIMATE. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs: carry-forward, ELI5 section and stacked approvals import Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(autoplan): carry only fully owner-answered gates; void stale delta checks - a pending delta check is voided (reservation released) when the owner answers, the plan is revised, or a new gate is written; a check bound to an older delta is void - carry refuses a gate with any approval item still pending or answered in item tokens - "do it" never covers an option that changes the plan; isDoIt ignores Captain-relayed prefixes - captain brief rebuilds ELI5 from the current plan and lists items taken under "do it" - gstack-approvals import --stack locates every branch before writing any - DRIVER.md back under its 162-line budget Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs: carry-forward conditions, delta-check voiding and import --stack match the final code Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * chore: changelog for autoplan carry-forward (unreleased; stamped at merge) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * chore: stamp v1.91.314.0 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>
1.6 KiB
1.6 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 **rec** 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
<one decision>: <option 1> (<cost>) · <option 2> (<cost>) · our pick: <option>, reply **rec**.
**do it** = take every recommendation above at full scope, including <the follow-ons
named: docs, trains, cleanups>, and carry them through to done with no further ask.
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>".