Filing gate: ① a defect with a named landing site. The landing site is a shipped prose page that now states the opposite of what the shipped lint does.
What is wrong
PR #21092 (Fixes #16094, merged as b616c0a63d, @objectstack/lint minor) changed shouldWarn in packages/lint/src/lint-liveness-properties.ts:
- A ledger row now warns when its status is
dead, live-elsewhere or experimental, or when it sets authorWarn: true.
- A verdict-triggered row shows its
authorHint, else the verdict's default hint, and never its note.
packages/spec/liveness/README.md, section "Author warnings — closing the loop (authorWarn)", at origin/main b616c0a63d, still teaches the old model:
| Line |
Text |
Why it is now false |
| ~553 |
"warnings are opt-in per entry" |
dead and live-elsewhere rows warn without opting in. |
| ~557 |
authorWarn: true warns "(in addition, any experimental entry warns by default …)" |
The default set is now experimental, dead and live-elsewhere. |
| ~558 |
authorHint "falls back to note" |
That holds only for opted-in and experimental rows. A verdict-triggered row falls back to the verdict's default hint. |
| ~561–565 |
Rule 1: benign display metadata that is dead "must NOT be marked; an author isn't misled by them" |
Not marking no longer keeps it silent. Grading a benign display key dead now warns every author who sets it. |
| ~572 |
"coverage grows by marking more entries authorWarn" |
Coverage now also grows by grading a row dead or live-elsewhere. |
Reach: the page ships. @objectstack/spec's package.json files lists liveness. The cost lands on the next ledger edit. A maintainer who follows rule 1 and grades a benign display key dead "unmarked" ships a warning to every author of that key. Under --strict, that warning flips os lint and os validate to exit 1.
The four keys warned today are a view container's own name and label, and a permission set's rowLevelSecurity[].label and rowLevelSecurity[].description. They are the .changeset/16094-liveness-dead-warns.md measurement, and they are exactly this case: benign display keys graded dead, with no authorWarn.
Done when
The section describes the shipped rule:
- Which statuses warn by default.
- What
authorWarn still adds, which is the only way a planned row warns.
- Which hint each kind of row shows.
- That grading a row
dead or live-elsewhere is itself an author-facing act.
Rule 1 then becomes guidance about the verdict, not about the marker. pnpm --filter @objectstack/spec test and the liveness gates stay green. This changes no row.
Not in scope: #21127 (a live row with authorWarn throws the integrity sentinel) and #21096 (an opted-in row prints its note). Both are open on their own cards.
Generated by Claude Code
Filing gate: ① a defect with a named landing site. The landing site is a shipped prose page that now states the opposite of what the shipped lint does.
domain:specseat that takes this card. It edits one section ofpackages/spec/liveness/README.md. No code, no ledger rows.packages/spec/liveness/README.md:548把作者告警规则指到packages/cli/src/utils/lint-liveness-properties.ts—— 那条路径不存在,模块早已搬到packages/lint/src/,而账本门禁只校验条目的 evidence 路径、不看 README 散文指针 #19269 (a wrong path in the same section, closed) and spec: re-derive the liveness ledger before itsdead/live-elsewhereverdicts start warning authors —view.jsonlist.tabsre-read plus a sampled audit of the 90deadrows (ledger half of #16094) #16362 (the ledger half of lint:liveness-dead-propertyandliveness-live-elsewhere-propertycannot fire on 17.3.0 — 90dead+ 1live-elsewhereledger rows and not one setsauthorWarn#16094, closed).What is wrong
PR #21092 (
Fixes #16094, merged asb616c0a63d,@objectstack/lintminor) changedshouldWarninpackages/lint/src/lint-liveness-properties.ts:dead,live-elsewhereorexperimental, or when it setsauthorWarn: true.authorHint, else the verdict's default hint, and never itsnote.packages/spec/liveness/README.md, section "Author warnings — closing the loop (authorWarn)", atorigin/mainb616c0a63d, still teaches the old model:deadandlive-elsewhererows warn without opting in.authorWarn: truewarns "(in addition, anyexperimentalentry warns by default …)"experimental,deadandlive-elsewhere.authorHint"falls back tonote"experimentalrows. A verdict-triggered row falls back to the verdict's default hint.dead"must NOT be marked; an author isn't misled by them"deadnow warns every author who sets it.authorWarn"deadorlive-elsewhere.Reach: the page ships.
@objectstack/spec'spackage.jsonfileslistsliveness. The cost lands on the next ledger edit. A maintainer who follows rule 1 and grades a benign display keydead"unmarked" ships a warning to every author of that key. Under--strict, that warning flipsos lintandos validateto exit 1.The four keys warned today are a view container's own
nameandlabel, and a permission set'srowLevelSecurity[].labelandrowLevelSecurity[].description. They are the.changeset/16094-liveness-dead-warns.mdmeasurement, and they are exactly this case: benign display keys gradeddead, with noauthorWarn.Done when
The section describes the shipped rule:
authorWarnstill adds, which is the only way aplannedrow warns.deadorlive-elsewhereis itself an author-facing act.Rule 1 then becomes guidance about the verdict, not about the marker.
pnpm --filter @objectstack/spec testand the liveness gates stay green. This changes no row.Not in scope: #21127 (a
liverow withauthorWarnthrows the integrity sentinel) and #21096 (an opted-in row prints itsnote). Both are open on their own cards.Generated by Claude Code