Commit 287eb4c
docs(agents): say how a return-delivered durability seam is declared (#19214)
Fixes #16233
## What changed
One paragraph of `AGENTS.md` — the "Degradation log levels" block that
used to end at lines
938-943 on `24d622b94`.
The old text told the author of a durability seam to "declare **how it
delivers** instead —
`FAILURE_PROPAGATION_CALLEES` (repo-wide names) or the function-scoped
`FAILURE_PROPAGATION_SITES`". Both maps key on the **name of a callee
the `catch` reaches**
(`scripts/check-durability-degradation-log-level.mjs:505`, `:513`), so a
`catch` that delivers
its failure by **returning** an outcome object has nothing to put in
either one — and the only
two remaining ways to green that gate are the two the gate's own header
rejects: a baseline
entry for correct code, or a bolted-on `logger.error`.
The rewritten paragraph splits the declaration rule by **how the failure
leaves the `catch`**:
- delivered by CALLING something → name that callee, as before (both
maps, unchanged);
- delivered by RETURNING an outcome object → **no callee to declare**;
never added to
`DURABILITY_CRITICAL_CALLEES` or either `FAILURE_PROPAGATION_*` map,
never baselined, never
given a `logger.error` to satisfy the checker; pinned instead by **its
own file's test**
asserting the returned failure outcome (the `failed`-receipt case is the
reference shape),
with its population read from
`scripts/measure-return-propagating-durability-seams.mjs`.
The invariant is untouched: silent data loss must be loud. The gate is
untouched — its fourth
honest limitation
(`scripts/check-durability-degradation-log-level.mjs:79-99`) already
records
this boundary and already names the census script, so no line of that
script needed to move.
## Evidence
Census re-measured on this branch, reproducing the ruling's numbers
exactly:
```
node scripts/measure-return-propagating-durability-seams.mjs --sites :: exit 0
2620 non-test source files · 2968 try/catch · 250 guarding a declared durable call
· 21 returning a constructed failure object on every path
MEMBERS 12 [1] gate sees today 0 · [2] write-shaped 4 · [3] durable on the merits 8
ADJACENT 5 · EXCLUDED 4
```
The instrument this paragraph governs:
```
pnpm check:durability-log-level :: exit 0
✓ durability-degradation log levels: 36 durability-critical catch seam(s), all loud,
rethrowing or propagating to the caller (4 propagating, declared)
✓ read-seam invention: 68 read seam(s), none invents an unreported answer
```
`node scripts/pm/dispatch-gates.mjs --commands` derives 14 families for
this change set; all 14
were run and reconciled with `--ran` (14 derived, 14 run, 0 UNRUN). 13
green:
```
node scripts/check-closing-keyword-parity.mjs :: exit 0
node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0
node scripts/check-comment-mask-corpus.mjs :: exit 0
pnpm check:agent-test-spelling :: exit 0
pnpm check:docs-audit-scope :: exit 0
pnpm check:driver-memory-census :: exit 0
pnpm check:nul-bytes :: exit 0
pnpm check:pm-governed-merges :: exit 0
pnpm check:pm-governed-prose :: exit 0
pnpm check:pm-skill-id-lint :: exit 0
pnpm check:refd-timer-probe :: exit 0
pnpm check:required-contexts :: exit 0
pnpm check:watch-hint-literal :: exit 0
```
## ✅ The line ceiling — ruled, raised, and green
The maintainer ruled the budget. His words, verbatim and untranslated:
> 1. #19214 / 卡 #16233 —— AGENTS.md 行预算, A 批 +10(1099→1109)
Given as a live instruction to `session_019srGWGCBBCBHqcDoRZpQRh` and
recorded on card #16233 as
comment `5750261694`; it rules the line budget that the standing
letter-C ruling `5716260390`
left unruled when it named the text. ⇒
`scripts/pm/check-skill-line-ratchet.mjs` now carries
`['AGENTS.md', 1109]`, with the raise recorded above the entry in that
file's own ruled-raise
convention — measured cost, the re-measured rewrap headroom with its
widths named, the ruling
verbatim, and the standing `CROSS_FILE_MOVES` sentence.
```
pnpm check:pm-skill-ratchet :: exit 1 → exit 0
✓ check-skill-line-ratchet: AGENTS.md is 1109 lines (ceiling 1109; headroom 0).
✓ check-skill-line-ratchet self-test: 157 cases pass
— including “every live ruled-raise record quotes its ruling, dates it, and names a
positive line count”, which is the gate validating this very comment block.
```
1 parent adbdbc5 commit 287eb4c
2 files changed
Lines changed: 49 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
931 | 931 | | |
932 | 932 | | |
933 | 933 | | |
934 | | - | |
935 | | - | |
936 | | - | |
937 | | - | |
938 | | - | |
939 | | - | |
940 | | - | |
941 | | - | |
942 | | - | |
943 | | - | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
944 | 954 | | |
945 | 955 | | |
946 | 956 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1435 | 1435 | | |
1436 | 1436 | | |
1437 | 1437 | | |
1438 | | - | |
| 1438 | + | |
| 1439 | + | |
| 1440 | + | |
| 1441 | + | |
| 1442 | + | |
| 1443 | + | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
| 1447 | + | |
| 1448 | + | |
| 1449 | + | |
| 1450 | + | |
| 1451 | + | |
| 1452 | + | |
| 1453 | + | |
| 1454 | + | |
| 1455 | + | |
| 1456 | + | |
| 1457 | + | |
| 1458 | + | |
| 1459 | + | |
| 1460 | + | |
| 1461 | + | |
| 1462 | + | |
| 1463 | + | |
| 1464 | + | |
| 1465 | + | |
| 1466 | + | |
1439 | 1467 | | |
1440 | 1468 | | |
1441 | 1469 | | |
| |||
0 commit comments