Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .claude/skills/work-issues/references/claim.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,11 @@ gh issue comment <n> --body-file "$SCRATCH/standdown-<n>.md"
```

For EACH issue you start — PROMOTING a QUEUED one included — first re-check
`gh issue view <n> --json state`, §2's open-PR `files` query, and §3's premise
check on CURRENT `origin/main` — in a call BEFORE the claim, never chained with
it: after TRIAGE a peer can close a queued issue, or open a PR holding its
lines, before its turn (#3979). Then:
`gh issue view <n> --json state`, §2's open-PR `files` query and "working on
this" claims on OTHER issues (extensions and this run's own too, #4857), and
§3's premise check on CURRENT `origin/main` — in a call BEFORE the claim, never
chained with it: after TRIAGE a peer can close a queued issue, or open a PR or
claim holding its lines, before its turn (#3979). Then:

```bash
gh issue comment <n> --body "Working on this in PR/branch <ref> — touching <files>. \
Expand Down Expand Up @@ -95,9 +96,8 @@ stand down naming the winning branch and pick another issue, unasked. Escalate
when timestamps cannot settle it (go-to-k/cdkd#1446).

**A QUEUED comment IS a claim, and its `createdAt` is what the tie-break reads.**
Re-read the thread to the END before the tie-break. A missing branch is
not absence (signals show LIFE only, §9); a claim has no TTL, so one you think
dead goes to arbitration.
Re-read the thread to the END before the tie-break. A missing branch is not
absence (signals show LIFE only, §9); no claim has a TTL: escalate a dead-looking one.

**Nothing makes the tie-break's LOSER re-read**: re-read the claims before you
PUSH; if yours is later, stand down even with code written.
Expand Down
12 changes: 6 additions & 6 deletions .claude/skills/work-issues/references/ship.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,17 @@ CLEAN (one lane at a time), then run `/run-integ` and
auto-mode classifier can refuse the PARENT's calls too: any refused call goes
to `AskUserQuestion`, never a reworded retry (go-to-k/cdkd#4059); only
`/run-integ` step 9's one retry (marker set or ledger push) is exempt.
While that tree is busy with a follow-up branch, ship from a SECOND sibling
on the PR's branch
Ship from a SECOND sibling on the PR's branch while that tree holds a follow-up
(`git -C <MAIN_CHECKOUT> worktree add <MAIN_CHECKOUT>/.claude/worktrees/<name> <branch>`),
running BOTH the integ and the merge there (the marker is per tree). A fix
round DURING that tree's integ edits a `--detach` sibling, pushes
`HEAD:<branch>` (bash reads `verify.sh` live), and fast-forwards that tree
before the marker, re-running an integ the fix touches (#4561). Never two
lanes' integs or merges at once; a turn blocked on a fixture fix yields to
the next merge-ready lane. A turn holding for HOURS: tell the user
unasked its ETA and queue. A subagent running a turn's integs, marker
and ledger must block until EVERY run ends and report ONCE.
lanes' integs or merges at once, nor a merge during another lane's integ: it
can move `main` under that batch (#4864). A turn blocked on a fixture fix
yields to the next merge-ready lane. ANY turn holding for HOURS tells the user
unasked its ETA and queue. A subagent running a turn's integs, marker and
ledger must block until EVERY run ends and report ONCE.

- The `integ-destroy` marker is read from the tree the command runs in, so a
merge from the main tree consults the WRONG store (go-to-k/cdkd#2363). Its
Expand Down
34 changes: 17 additions & 17 deletions .claude/skills/work-issues/references/verify.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,21 @@

### 8-b. Integ ordering vs review rounds and rebases

**Run the integ LAST — after the final edit to any `integ-destroy`-scoped file.**
A lane cannot touch AWS, so only the parent finds an AWS-side rejection: run a
NEW arm once EARLY too, as soon as the lane has written it and between review
rounds (never during a `src` fix round); that run sets no marker and is no
§8-d proof — a new arm's first AWS contact can reject its shape (#4618).
Sequence: dispatch reviewers → (new arm: early run) → apply
EVERY finding, nits included → rebase → integ → marker. A UNIT-test-only fix
round may overlap the parent's integ in the lane's tree. Brief the lane: no build, `/check` or `/verify-pr` there (a
build rewrites the live fixture's `dist/`), no rebase or install, never the
live fixture's directory, and stage only its own test files, since the
integ's ledger row lands in the same tree (#4302). A lane REPORTS
`mise exec -- markgate status integ-destroy --explain`'s line, never "integ
not needed": comment-only edits count (#3873). Bare `markgate` can resolve to
a stale PATH copy that dies `unknown hash "diff"` (#4477).
**Run the integ LAST — after the final edit to any `integ-destroy`-scoped
file.** A lane cannot touch AWS, so only the parent finds an AWS-side rejection:
run a NEW arm once EARLY too, as soon as the lane has written it, between review
rounds (never during a `src` fix round); that run sets no marker and is no §8-d
proof — a new arm's first AWS contact can reject its shape (#4618). Sequence:
dispatch reviewers → (new arm: early run) → apply EVERY finding, nits included →
rebase → integ → marker. A UNIT-test-only fix round may overlap the parent's
integ in the lane's tree. Brief the lane: no build, `/check` or `/verify-pr`
there (a build rewrites the live fixture's `dist/`), no rebase or install, never
the live fixture's directory, and stage only its own test files (the integ's
ledger row lands there, #4302). A round overlapping the §8-d probe (clean tree;
it restores `src` from `HEAD`) edits in scratch until the parent frees it. A
lane REPORTS `mise exec -- markgate status integ-destroy --explain`'s line,
never "integ not needed": comment-only edits count (#3873); bare `markgate` can
be a stale PATH copy dying `unknown hash "diff"` (#4477).
The gate's `hash: diff` stales on a rebase only when main changed a scoped
file THIS branch changes too, so a set marker on a MERGEABLE PR needs no
rebase (`mise exec -- markgate status`) — unless main changed code the fixture
Expand Down Expand Up @@ -183,9 +184,8 @@ stacks. After teardown, sweep for orphans it cannot reach (`/aws/lambda/*` log
groups, RETAIN resources, Secrets in recovery, KMS keys pending deletion), then
run AGENTS.md's leftover check, which the `deployments/` store survives.

**`/run-integ` records `integ-destroy`, a marker gate on `gh pr merge`; the
`main` ruleset's checks are the other merge condition.**
`/verify-pr` and `/review-pr` record nothing; run them anyway.
**`/run-integ` records `integ-destroy`, which `gh pr merge` needs beside
`main`'s ruleset checks**; `/verify-pr` and `/review-pr` record nothing — run them anyway.

**The independent review round is the ORCHESTRATOR's; a LANE's own reviewers
never substitute for it** (go-to-k/cdkd#2383) — they are its children and
Expand Down
Loading
Loading