docs: two process rules the wave paid for
Both are the reviewers' framings rather than mine, and both are better arguments
than the ones I gave.
AGENTS.md: under merge-as-soon-as-green a review round can finish AFTER its own
merge, and GitHub has deleted the branch by then — so a fix push to the old name
silently succeeds and accomplishes nothing. It re-creates a branch main will
never see, CI runs on it and passes, and the commit is nowhere. The tell is in
git's own output: `* [new branch]` where an `old..new` range was expected.
Happened on #51, four minutes after the merge.
design-principles §6: an argument must not live only in a commit message. I had
justified the context/ rule as "context/ is what readers grep", which is weak.
The real reason is that a commit message is write-once and unauditable — it
cannot be corrected without rewriting merged history, and NO check in this repo
can read one, because the ID audit greps source and docs and a message is in
neither. A reason recorded only there is a reason nothing can ever find wrong.
PR #51's 7d25762 is the worked example: a declined-test reason that was
factually wrong, cited across two rounds, and correctable only by #56 saying so
in context/.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+24
-8
File diff suppressed because one or more lines are too long
@@ -191,6 +191,17 @@ exact-frame characterization tests that were the PR's only evidence the
|
||||
migration changed nothing. Two right findings, different costs. File the
|
||||
declined one.
|
||||
|
||||
**Under merge-as-soon-as-green, a review round can land after its own merge.**
|
||||
GitHub deletes the branch when a PR merges, so a fix push to the old branch name
|
||||
**silently succeeds and accomplishes nothing** — it re-creates a branch `main`
|
||||
will never see, CI runs on it, and the commit is nowhere. The tell is the push
|
||||
printing `* [new branch]` where you expected an `old..new` range. It happened on
|
||||
#51: the third review round completed four minutes after the merge, and the
|
||||
correction it prompted went to a re-created `wave/b-projection-gaps`. The repair
|
||||
is to branch from `gh/main`, cherry-pick, open a follow-up PR, and delete the
|
||||
stray re-creation. Check `gh pr view <n> --json state` *before* pushing a fix to
|
||||
a PR you have not looked at in a few minutes, rather than after.
|
||||
|
||||
Merge only once Copilot passes. Prefer a **merge commit** — `AGENTS.md` says
|
||||
merges over rebases, and a wave's commits are individually meaningful.
|
||||
|
||||
|
||||
@@ -303,6 +303,16 @@ candidate for the store.
|
||||
A ``` fence in a doc comment is a doctest — a running test, not prose — and
|
||||
is exempt.
|
||||
|
||||
- **And an argument must not live only in a commit message.** A message is
|
||||
write-once and unauditable: it cannot be corrected without rewriting merged
|
||||
history, and no check in this repo can read one — the ID audit greps
|
||||
`context`, `README.md`, `AGENTS.md`, `CLAUDE.md`, `crates`, `src`, `tests`,
|
||||
`examples`, `web`, `harness` and `docs`, and a commit message is in none of
|
||||
them. So a reason recorded only there is a reason nothing can ever find wrong.
|
||||
When one turns out to be wrong, correct `context/` and say in `context/` that
|
||||
the message is superseded; that is the fix rather than a compromise. PR #51's
|
||||
`7d25762` is the worked example, corrected by #56.
|
||||
|
||||
---
|
||||
|
||||
## 7. Testing
|
||||
|
||||
Reference in New Issue
Block a user