mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-05 16:34:00 +01:00
feat(captain): postmortem template and step, first on #3787; Unverified line in READY and lane reports (GST-805) (#3807)
* test(captain): pin the Unverified line and the postmortem template (GST-805, failing first) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * feat(captain): postmortem template and step; Unverified line in READY and lane reports (GST-805) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix: pre-landing review fixes (GST-805: the lane guide says the lane writes Evidence and Unverified, /ship items 1-4; rewrap the READY contract paragraph) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs: CREW template rules 6-7 and the rule map name the Unverified line (GST-805 docs audit a242-1) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * test(archaeology): allow the captain skill to name its postmortem template (GST-805) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(captain): trim Reports and READY-options prose so the merged skill stays under its 6,551-token ceiling (GST-805) 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>
This commit is contained in:
1 parent
46c9f612c0
commit
15cbc274d9
11 files changed
+188
-49
No files matched your search
+25
-9
@@ -59,7 +59,8 @@ surface. Keep it small and predictable:
|
||||
| `DIGEST.md` | the controller | Needs you / New / In progress, rewritten every turn ([template](../captain/templates/DIGEST.md)) |
|
||||
| `NOTES.md` | the controller | the append-only timestamped log the digest is derived from ([template](../captain/templates/NOTES.md)) |
|
||||
| `skills/<name>/SKILL.md` | the controller | crew procedures the lanes load (the runbooks) |
|
||||
| `reports/<code>.md` | each lane, once | Outcome, PR, Needs, Cost, Lesson, Approvals ([template](../captain/templates/report.md)) |
|
||||
| `reports/<code>.md` | each lane, once | Outcome with its Unverified line, PR, Needs, Cost, Lesson, Approvals ([template](../captain/templates/report.md)) |
|
||||
| `reports/postmortem-<n>.md` | the controller, or a lane it names | why a reverted or S1-fixed merged PR passed every reviewer ([template](../captain/templates/postmortem.md)) |
|
||||
| `handoffs/` | lanes | datasets and specs the next lane needs; `handoffs/flaky-ledger.md` is the flaky ledger ([template](../captain/templates/flaky-ledger.md)) |
|
||||
| `plans/` | the controller | approved plans, with their Approvals table |
|
||||
|
||||
@@ -96,7 +97,7 @@ Where each rule lives:
|
||||
| 4 | File ownership: edit only what you own; the controller routes the rest | [Lane discipline](#lane-discipline); the ownership list is the digest's **In progress** |
|
||||
| 5 | Standing spend and its cap per rerun | [Approvals, shape A](#approvals-three-shapes); the `SPEND` parameter |
|
||||
| 6 | The job ends at an unstamped READY; stamp on call; never merge | [The READY contract](#the-ready-contract), the [READY](../captain/templates/READY.md) and [slot call](../captain/templates/slot-call.md) templates, [ship-policy.md](ship-policy.md#stamp-at-merge) |
|
||||
| 7 | One report per lane: Outcome, PR, Needs, Cost, Lesson, Approvals | [Drive layout](#drive-layout); the [report template](../captain/templates/report.md) |
|
||||
| 7 | One report per lane: Outcome with its Unverified line, PR, Needs, Cost, Lesson, Approvals | [Drive layout](#drive-layout); the [report template](../captain/templates/report.md) |
|
||||
| 8 | One path: everything through the controller, never peer to peer | [Roles](#roles); [Lane discipline](#lane-discipline) |
|
||||
| 9 | Hands: a real browser, the owner's session or local work go through the controller | [The owner's device](#the-owners-device) |
|
||||
| 10 | Keep going; come back only for scope, a conflict, access or the owner's decision | [Lane discipline](#lane-discipline) |
|
||||
@@ -259,12 +260,17 @@ The short version: the pin is the full 40-character head SHA; every required che
|
||||
green at that head; pregate passed for that tree; `SHIP_RECEIPT: pr=<n> head=<pin>` was
|
||||
written by /ship at the pin; the screen choice is stated with its justification; flaky
|
||||
cases are already in the ledger; the CHANGELOG entry sits under `## [Unreleased]` with
|
||||
the version files at the base's version; and the lane declares the head frozen. A green
|
||||
PR page is not a READY. A cheap test tier is not merge evidence. The controller refuses a
|
||||
block that misses any of this and sends the lane back, never into a train. When the
|
||||
the version files at the base's version; the lane declares the head frozen; and an
|
||||
`Unverified:` line lists every claim the lane did not check itself (a local test that
|
||||
timed out, a paid run skipped, a number a model reported, a review finding set aside on an
|
||||
assumption nobody tested), or says `none`. A green PR page is not a READY. A cheap test
|
||||
tier is not merge evidence. The controller refuses a block that misses any of this and
|
||||
sends the lane back, never into a train. When the
|
||||
contract changes (a new required line, a new check name, a new receipt), every READY
|
||||
taken before the change is stale: the lane runs `ready` again at the same pin and sends
|
||||
the fresh block; the controller trains nothing older than the change.
|
||||
the fresh block; the controller trains nothing older than the change. The `Unverified:`
|
||||
line is the one exception: the controller asks for a missing line in a follow-up message,
|
||||
never refuses or stales a READY for it, and the lane reruns neither `ready` nor /ship.
|
||||
|
||||
### The lane's /ship sequence before READY
|
||||
|
||||
@@ -538,9 +544,19 @@ only the run the lane named.
|
||||
Every report ends with one Lesson. The controller reads lessons before chat, and each
|
||||
one becomes a rule in CREW.md, a line in AGENTS.md, or a tool fix filed as an issue;
|
||||
nothing stays a lesson for long. Rules carry the thread that produced them, so a new lane
|
||||
can read the incident behind the rule. When the owner states a rule meant for every
|
||||
Captain, forward it in the same turn to the thread that keeps the account's shared rules,
|
||||
so every crew gets it.
|
||||
can read the incident behind the rule.
|
||||
|
||||
A revert or an S1 fix of a merged crew PR gets a postmortem as well as a lesson. The
|
||||
controller starts it when the fix's brief goes out, from the
|
||||
[postmortem template](../captain/templates/postmortem.md), saves it as
|
||||
`reports/postmortem-<n>.md` and links it from the fixing PR. Its root cause section asks
|
||||
why the lane and every reviewer believed the change was right, and it is answered from the
|
||||
review outputs, receipts, decision trail and approvals, not the diff. Each rule change it
|
||||
names ships as a gstack PR, because gstack holds the how; a rule kept only in a crew file
|
||||
is a gap.
|
||||
|
||||
When the owner states a rule meant for every Captain, forward it in the same turn to the
|
||||
thread that keeps the account's shared rules, so every crew gets it.
|
||||
|
||||
## Setting it up on Capy
|
||||
|
||||
|
||||
Reference in new issue
Block a user