captain: train land per slot under changelog_fragments (skill and skills.md)

Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
This commit is contained in:
garrytanandcapy-ai[bot] committed 2026-10-30 19:40:33 +00:00
1 parent 7bc2034724
commit 12fac5392a
3 files changed
+18 -2

No files matched your search

+7
View File
@@ -261,6 +261,13 @@ Never merge out of order, never merge anything else while a train is merging, an
skip the second verify: a mismatch there is what writes the freeze. When every slot has
merged, `train prune --train "$NONCE"` deletes the train branch.
**Under `changelog_fragments`** (a stamped train: `train build` printed `S1:`..`Sk:` lines)
there is no slot call and no lane stamp. Per slot, in `ORDER`, run
`gstack-ship-queue train land --train "$NONCE" --pr "$PR"` until it exits 0. It pushes the
stamped prefix S_i as a commit on [pin, `BASE`], waits for the policy's `required_checks`,
merges with `--match-head-commit` and confirms `BASE` is S_i exactly. A rerun resumes from
its journal, and any other `BASE` freezes the queue as above (docs/ship-policy.md#train-land).
**The tree rule.** A gate covers a tree, not a commit. A head whose diff from the gated
prefix touches only `STAMP_FILES` reuses the gate; that is what lets the lane stamp after
the gate ran. Anything else is a new tree and needs a new gate.
+7
View File
@@ -189,6 +189,13 @@ Never merge out of order, never merge anything else while a train is merging, an
skip the second verify: a mismatch there is what writes the freeze. When every slot has
merged, `train prune --train "$NONCE"` deletes the train branch.
**Under `changelog_fragments`** (a stamped train: `train build` printed `S1:`..`Sk:` lines)
there is no slot call and no lane stamp. Per slot, in `ORDER`, run
`gstack-ship-queue train land --train "$NONCE" --pr "$PR"` until it exits 0. It pushes the
stamped prefix S_i as a commit on [pin, `BASE`], waits for the policy's `required_checks`,
merges with `--match-head-commit` and confirms `BASE` is S_i exactly. A rerun resumes from
its journal, and any other `BASE` freezes the queue as above (docs/ship-policy.md#train-land).
**The tree rule.** A gate covers a tree, not a commit. A head whose diff from the gated
prefix touches only `STAMP_FILES` reuses the gate; that is what lets the lane stamp after
the gate ran. Anything else is a new tree and needs a new gate.
+4 -2
View File
@@ -45,7 +45,7 @@ Detailed guides for every gstack skill — philosophy, workflow, and examples.
| [`/write-skill`](#write-skill) | **Skill Editor** | Write or improve an agent skill without bloat: edit ladder, size per level, skill-to-bin drift check, full diets with a before/after test. |
| [`/test-audit`](#test-audit) | **Test Auditor** | Sweep existing tests for low-value, implementation-coupled or duplicate tests. Report-only unless you approve a batch. |
| [`/landing-report`](#landing-report) | **Ship Queue Dashboard** | Read-only snapshot of the workspace-aware ship queue. Which version slots are claimed, which sibling workspaces have WIP. |
| [`/captain`](#captain) | **Crew Controller** | Run many coding agents from one controller. Lanes build and send a READY block; the controller validates it, merges through trains (stamp on call, verify, merge with the expected head, verify again), keeps the digest, relays approvals in three fixed shapes and runs a daily flaky-fix pass. Also answers to `/crew`. |
| [`/captain`](#captain) | **Crew Controller** | Run many coding agents from one controller. Lanes build and send a READY block; the controller validates it, merges through trains (stamp on call, verify, merge with the expected head, verify again; `train land` per slot under `changelog_fragments`), keeps the digest, relays approvals in three fixed shapes and runs a daily flaky-fix pass. Also answers to `/crew`. |
| [`/benchmark-models`](#benchmark-models) | **Model Benchmark** | Side-by-side cross-model benchmark for skills (Claude vs GPT vs Gemini). Latency, tokens, cost, optional LLM-judged quality. |
| [`/eval-plan`](#eval-plan) | **Eval Planner** | Preregister a paid eval (bars, arms, decoys, stop rules), dry-run it for $0 with the stub model, pilot three priced items, then approve the spend from the extrapolation table. |
| | | |
@@ -1464,7 +1464,9 @@ receipt at the pin and the logged flaky cases); a green PR page or a cheap test
never merge evidence. The controller batches READY pins into a **merge train**, reads one
full gate on the train head (an in-run flaky rerun once; a case that failed twice is
real), then merges slot by slot: slot call, lane stamps on call with a commit that holds
only tool output, `verify --train`, `gh pr merge --match-head-commit`, verify again. A red
only tool output, `verify --train`, `gh pr merge --match-head-commit`, verify again. Under
`changelog_fragments` there is no slot call: `train land` publishes each slot's stamped
prefix and merges it. A red
train is bisected on its red cases and rebuilt at most once; a backstop gate on every
base push freezes the queue when a tree no train covered lands. Approvals have three
shapes (the per-thread record, the plan ask with before → after and a "do it" reply, the