diff --git a/.agents/skills/wave/SKILL.md b/.agents/skills/wave/SKILL.md index beae1c56..fbb9bd74 100644 --- a/.agents/skills/wave/SKILL.md +++ b/.agents/skills/wave/SKILL.md @@ -43,7 +43,7 @@ nobody corrects. The brief adds only what varies per wave: 1. **The expected base commit, by name.** Worktrees do not reliably branch from HEAD. One was created three merges behind and was only noticed because it - was told to check. + was told to check. The agent checks against it: `agent-rules.md` rule 1. 2. **A reference baseline**, so "N passing" is checkable and a drop is visible: Rust test count, harness counts, node counts, **and the machine**. The same commit once measured `improvise-io`'s binary at 1.4s on one machine @@ -52,8 +52,10 @@ nobody corrects. The brief adds only what varies per wave: 3. **Its ground, and the ground that is not.** Name any orchestrator-only file it is exceptionally allowed to edit. 4. **Its `BEADS_ACTOR` and its tickets.** -5. **The commit trailers and PR footer**, spelled out. They carry this - session's URL, which is why `agent-rules.md` cannot hold them. +5. **The attribution line, commit trailers and PR footer**, spelled out. + They name the agent (Claude's line opens `_Posted by Claude ()…_`) + and this session's URL, which is why the shared `agent-rules.md` cannot + hold them. 6. **An explicit ask for what the ticket did not predict.** `agent-rules.md` lists it in the hand-back. Say it in the brief anyway: it is consistently the most valuable part of a hand-back, and agents omit it unless asked. diff --git a/.agents/skills/wave/agent-rules.md b/.agents/skills/wave/agent-rules.md index 22ccc8e3..28245bc9 100644 --- a/.agents/skills/wave/agent-rules.md +++ b/.agents/skills/wave/agent-rules.md @@ -12,30 +12,34 @@ not in a second copy. ## Base, branch, push -1. **Branch from `gh/main`, never `main` or `origin/main`.** `git fetch gh && +1. **Verify your base against the commit your brief names, first.** Run + `git log --oneline -1` and compare. Worktrees do not reliably branch from + the orchestrator's HEAD: one was created three merges behind, and it was + only noticed because the agent was told to look. +2. **Branch from `gh/main`, never `main` or `origin/main`.** `git fetch gh && git checkout -b gh/main`. A worktree handed to you may already sit on unpushed commits. Why: `AGENTS.md`, "Shipping a wave" (the two remotes both spelled `main`, and the worktree-base vector). -2. **Before opening a PR, check `git diff --numstat gh/main...`.** Do +3. **Before opening a PR, check `git diff --numstat gh/main...`.** Do not use `gh pr view --json files`: that is the union of your commits' files, not the effective diff. -3. **Push with an explicit refspec:** `git push gh HEAD:refs/heads/`. A +4. **Push with an explicit refspec:** `git push gh HEAD:refs/heads/`. A branch cut from `gh/main` tracks `gh/main`, so a bare push targets `main` and is refused. -4. **Before pushing a fix to an existing PR, check `gh pr view --json +5. **Before pushing a fix to an existing PR, check `gh pr view --json state`.** GitHub deletes a merged PR's branch. A push to it then prints `* [new branch]` and lands nowhere. Why: `AGENTS.md`, "Shipping a wave". -5. **The "Session Completion" block near the end of `AGENTS.md` does not apply +6. **The "Session Completion" block near the end of `AGENTS.md` does not apply to you.** It says `git merge origin/main` and then a bare `git push`. On a - wave branch the first is the #145 trap and the second is refused (rule 3). - Rules 1–4 replace it. The block sits between bd's generated + wave branch the first is the #145 trap and the second is refused (rule 4). + Rules 1–5 replace it. The block sits between bd's generated `BEGIN/END BEADS INTEGRATION` markers, so it is not edited by hand (improvise-x1uk). ## Commit early: a worktree is not durable storage Commit a WIP as soon as your first test run is green, and again after every -meaningful step. Push your branch (rule 3) once it is worth keeping. An agent +meaningful step. Push your branch (rule 4) once it is worth keeping. An agent finished a whole ticket with every gate green and lost all of it, uncommitted, when its worktree was deleted in a disk cleanup. A local commit survives a deleted worktree. Tidying history before the PR is fine; losing it is not. @@ -148,10 +152,11 @@ text for any of these in your hand-back. - `gh` is shell-aliased to a different tool. Use `nix shell nixpkgs#gh --command gh …`, and pass bodies with `-F body=@file`. - **Everything posted goes out under the repository owner's account.** Open - every PR body and comment with: - `_Posted by Claude (), an agent in Edward Langley's session._` -- Commit trailers and the PR footer are given by your brief, verbatim. They - carry a session URL, so they cannot live here. + every PR body and comment with the attribution line your brief gives you, + verbatim. It names your agent and model, which is how our posts are told + apart from an automated Codex review (`AGENTS.md`, "Shipping a wave"). +- The attribution line, commit trailers and PR footer all come from your brief. + They name the agent and the session, so this shared file cannot hold them. - Read reviews with `./scripts/pr-reviews `, and do not pipe it. How to tell a ChatGPT Codex review from ours, and why Copilot is not coming: `AGENTS.md`, "Shipping a wave". Answer each Codex review on its thread. @@ -162,6 +167,8 @@ text for any of these in your hand-back. Report: +- your branch, head SHA and PR number. Review is dispatched against the SHA; +- what changed, per ticket; - the claim result; - your measured baseline; - whether the ticket reproduced (the SHA if it did not);