Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .changeset/27569-liveness-lint-elsewhere-example.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
'@objectstack/lint': patch
---

docs(lint): the liveness lint's `live-elsewhere` worked example no longer names `manifest.runtime`, a `live` row since the boot-time loader began dispatching on the plugin tier

Clause-②: no
Metadata-protocol: none

`lintLivenessProperties` used `manifest.runtime` as its worked example of a `live-elsewhere` row in its doc comment and in the `live-elsewhere` verdict's default hint. That row reads `live` now, so the example taught the opposite of the ledger. Both places describe the verdict generically instead (a key with zero local dispatch whose only enforcer is a gate in another repository, a marketplace publish gate for instance, named by the ledger row's `evidence`), since no shipped row holds the verdict today. The rule, its id and the hint's instruction (keep the property; read the row's evidence for the enforcer) are unchanged.
21 changes: 12 additions & 9 deletions packages/lint/src/lint-liveness-properties.ts
Original file line number Diff line number Diff line change
Expand Up @@ -213,14 +213,17 @@ function isAuthored(value: unknown): boolean {
* `#14057` is the same defect class arriving through a different door, and the
* reason the boundary below is a THROW rather than a fallthrough. #13483 added
* the fifth status to the ledger vocabulary — `live-elsewhere`: dead HERE by
* measurement, genuinely enforced in a sibling repo (first row:
* `manifest.runtime`, whose enforcer is the cloud marketplace publish gate) —
* without teaching this function about it. Falling into `dead` would have said
* "Remove it" about a key whose enforcement is real and remote, i.e. exactly
* the most wrong sentence available: deleting it tears out a live gate's
* input. That row is not deletable, so `live-elsewhere` gets its own branch and
* its own rule id, and its default hint points the author at the ledger row's
* `evidence` — the enforcer's address — rather than at a delete key.
* measurement, genuinely enforced in a sibling repo (a key with zero local
* dispatch whose only enforcer is a gate in another repository, a marketplace
* publish gate for instance, named by the ledger row's `evidence`) — without
* teaching this function about it. No shipped row holds the verdict today;
* the ledger README keeps the historical worked example. Falling into `dead`
* would have said "Remove it" about a key whose enforcement is real and
* remote, i.e. exactly the most wrong sentence available: deleting it tears
* out a live gate's input. Such a row is not deletable, so `live-elsewhere`
* gets its own branch and its own rule id, and its default hint points the
* author at the ledger row's `evidence` — the enforcer's address — rather
* than at a delete key.
*
* Each verdict below also carries its own DEFAULT hint (used when the ledger
* entry has no `authorHint`; the row's `note` is never shown to an author, since
Expand Down Expand Up @@ -292,7 +295,7 @@ function describe(entry: LedgerEntry): { kind: string; rule: string; defaultHint
rule: LIVENESS_LIVE_ELSEWHERE_PROPERTY,
defaultHint:
'Keep it — nothing reads it when the stack loads here, but a sibling repo enforces it ' +
"(for `manifest.runtime`, the cloud marketplace publish gate); see the ledger row's " +
"(a marketplace publish gate, for instance); see the ledger row's " +
'evidence for the enforcer.',
};
}
Expand Down
Loading