Repository navigation
Record the two-campaign night's lessons in ship-campaign - #2548
Conversation
Campaign #2529 and a parallel Codex campaign (#2530) started 94 seconds apart on the same queue. Free-form units carry no claim label, so neither preflight could see the other until they collided on three decisions. The same night, a new pnpm audit advisory failed main's own lockfile. One campaign stopped the queue and the other repaired the gate, because step 3 read both ways. - Preflight searches for another campaign on the same queue, and step 2 repeats the check before every launch. It also says how to split with a running peer and what to do with a stopped peer's drafts. - Step 3 says an outside change failing a check on main's own tree is a gate repair when the gate's own conventional remedy fixes it. - The parallel reference covers three things: surveys that go coupled after a lockfile or eslint.config.js change, cleanup after each merge rather than one batch at the end, and brokered git commands refused inside a worktree-isolated lane. - The skill note records the incident. Refs #2529 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
KyleMit
left a comment
There was a problem hiding this comment.
Independent review by the codex rival agent, round 1, of pull request 2548.
Reviewed the full diff, checking peer-campaign coordination, gate-repair rules, cleanup guidance, and broker handling against the existing workflow and tools. Generated copies match their sources; Markdown and reference checks pass, along with 193 targeted tests. Direct checks confirmed the documented catch-up classifications. No substantiated defects found.
The overnight rule said a stopped peer's drafts stay its own. That afternoon the user handed them over explicitly, and #2529 adopted and merged #2532 and #2537. The rule now says what adoption needs, and the note records the sequence. Refs #2529 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
KyleMit
left a comment
There was a problem hiding this comment.
Independent review by the codex rival agent, round 2, of pull request 2548.
Round 1 reported no findings, so none required resolution. Reviewed the new hand-over requirement and fresh survey, rival-review, and CI requirements for adopted drafts. Generated copies match their sources, and Markdown and reference checks pass. No new defects found.
The
self-healpass that closes campaign #2529. It writes four lessons from that night's run into theship-campaignsources (.ruler/, then regenerated). Left open for the owner: a skill change is outside the campaign's queue, so the orchestrator does not merge it.What happened, and where each lesson now lives
in-progresslabel, so neither preflight could see the other. They collided on decisions 1–3 before either noticed.SKILL.mdstep 1): search for another open issue or PR that references the same source, and for another runner's branches.pnpm auditonmain's own lockfile.mainred for a reason no campaign merge caused" and stopped.main's own tree is a gate repair when the gate's own conventional remedy fixes it. Forpnpm audit, that remedy is a narrow override. The queue-wide blocker list is narrowed to match.coupledverdicts (references/parallel.md). After a merge changespnpm-lock.yamloreslint.config.js, every later catch-up surveyscoupled. That means a quick full reconcile pass, not a reason to leave a PR behind. The rival review of this campaign's takeover decision caught exactly that wrong assumption.references/parallel.md):The skill note (
.ruler/skill-notes/ship-campaign.md.template) records the incident chronology.Not healed, as not durable:
npm run show:free-port -- --helpprints a Node stack. The error line already names the unknown option, and the script takes no flags worth documenting.Checks
npm run ruler:apply, thennpm run ruler:check: in sync.npm run format:check,check:skill-refs,check:doc-refs: all exit 0.npm run test:tools: 279 files, 6391 tests passed.Update (2026-09-30 afternoon)
This branch caught up with
mainafter #2537 merged. #2537 edited other lines of the sameship-campaignsources; the merge was clean, with no overlapping hunks. Step 2's stopped-peer rule no longer says a peer's drafts "stay its own". It now says adopting them needs the user's explicit hand-over, plus a survey, a fresh rival review and a new CI round. That afternoon's adoption and merge of #2532 and #2537 is the evidence, and the note records it.ruler:check,format:check,check:doc-refsandcheck:skill-refsall exit 0.Refs #2529 · Refs #2500
🤖 Generated with Claude Code