docs: R-88b shipped; standing rule 4; READY rows re-ranked
R-88b closed (agent v0.105.0 + controller v0.178.0) — age_state gives 'unknown' its own representation, with empty meaning legacy rather than unknown so the first-backup valve keeps working on un-upgraded boxes. R-97 note updated: hub v0.79.0 (R-97c) replaced a FALSE operator-only comment with a real register — the comment claimed a guarantee the code did not provide. Standing rule 4 (R-96): a recommendation that is not followed gets one line saying why. Added to the live CLAUDE.md and this versioned copy — the live file is not in a git repo, so committing to it alone would leave the rule as durable as the chat it came from. READY re-ranked: R-95 now leads.
This commit is contained in:
@@ -87,6 +87,12 @@ These were agreed in conversation and lived nowhere, so they bound nobody. They
|
||||
`/backup/due` polls in `pveproxy/access.log`), and a hub DB copy whose write had silently failed,
|
||||
returning a confident "0 events in window" from a file a day stale until its mtime was checked.
|
||||
|
||||
4. **A recommendation that is not followed gets one line saying why.** Silence reads as agreement and
|
||||
the disagreement is lost. Twice in the R-88/R-97 arc a review point was absorbed rather than
|
||||
argued: R-84 was folded into R-82 without a word, and R-97a's operator-only guard was dropped
|
||||
while the claim it was meant to enforce got committed as a comment — which is how a false
|
||||
guarantee shipped and survived a release. Disagreeing is fine; disagreeing silently is not.
|
||||
|
||||
- **Push to `main` directly** — no feature branches.
|
||||
|
||||
> **Clean-tree gate before any build:** `git status --porcelain` must be empty and
|
||||
|
||||
Reference in New Issue
Block a user