Reading taken 2026-09-18T14:59Z. Code line numbers and ledger greps are against origin/main@221dabb72; the row census is a seat-built probe whose limits are stated below.
Defect
#13483 established that a key enforced only in a sibling repo cannot be graded from this checkout, and PR #14056 answered it with a fifth verdict plus a gate that can actually fail: live-elsewhere must carry a foreign pointer, a declared cross-repo scope, and a dated attestation, and its attestation expires — elsewhereMalformed and elsewhereExpired are both in the failed expression, and the code says why in as many words: expiry failing the build "is the only mechanical event this repo can generate about a claim it cannot re-measure locally".
That gate is keyed on the status:
:502 const EVIDENCE_SCANNED_STATUSES = new Set(['live', 'planned', 'experimental', 'live-elsewhere']);
:887 if (status === LIVE_ELSEWHERE_STATUS && led !== null) { ... checkElsewhereEntry ... }
The four evidence checks (existence, line bound, symbol anchor, key mention) run over the LOCAL bucket only — the file states it: "Cross-repo attribution never reaches this list: checkEvidence only resolves the LOCAL bucket" (:1317-1318).
So a row that makes the same claim under status: "live" gets nothing in either direction: no local resolution (there is no local path to resolve), no shape check (checkElsewhereEntry never runs), and no expiry (report.verification.errors — a malformed date — is in the failed expression; verification.stale is a printed report line, and verifiedAt is optional to begin with). live + foreign evidence is an unchecked spelling of the thing the fifth verdict was built to gate.
Measurement
Ledger greps (git grep -o … origin/main -- 'packages/spec/liveness/*.json', unit = occurrences):
The verdict that carries the gate is used once; the scope declaration that describes the same situation appears 120 times.
Row census (seat probe, unit = ledger rows): 39 ledgers, 922 rows in the props trees, 707 at a scanned status (live 688, planned 13, experimental 5, live-elsewhere 1).
- zero local evidence path after the realm split: 306
- lit control: ≥1 local path, i.e. rows the existing checks CAN fail on: 401
Breakdown of the 306:
| rows |
status |
scope |
evidence |
| 164 |
live |
none |
absent entirely |
| 63 |
live |
none |
present, all paths foreign/prose |
| 62 |
live |
cross-repo |
present |
| 7 |
planned |
none |
absent |
| 4 |
experimental |
none |
present |
| 2 |
planned |
cross-repo |
absent |
| 2 |
live |
in-repo |
absent |
| 1 |
experimental |
cross-repo |
present |
| 1 |
live-elsewhere |
cross-repo |
present — the one row a gate can fail on |
The sharpest sub-class is the 62: they declare cross-repo scope under a live verdict. They state the condition #13483 named unfalsifiable, in the field #14056 added for it, while sitting at the one status that skips its gate.
Instrument, and its limits
The shared checkout has no installed dependencies, so scanEvidence from packages/spec/scripts/liveness/evidence.mts could not be imported; the seat re-implemented its realm split in plain node and self-tested it on three cases before use:
cloud @cb8ee7ff: packages/service-ai/src/agent-runtime.ts#listAgents … → 0 local, 1 foreign ✓
packages/core/src/x.ts:12 reads it → 1 local ✓ (lit)
objectui: packages/a/b.ts; packages/core/src/y.ts → 1 local + 1 foreign ✓ (realm scope ends at ;)
Three enumerations disagree about the population, and none of them is the gate's:
| enumeration |
rows |
this probe — naive full-depth walk of each ledger's props tree |
922 total / 707 scanned / 306 zero-local |
the gate's own published census (packages/spec/liveness/state-counts.md, generated) |
1094 classified / 915 live / 1 elsewhere |
the os-dev probe that surfaced this (report on #18304) |
481 scanned / 61 zero-local |
The gate walks the SCHEMA at "one-level walk granularity … plus the ADR-0010 protection envelope" (state-counts.md), not the ledger file tree, which is the likeliest source of the spread. Settling the population is part of this card's work, and no row count here should be quoted as the gate's own reading. What does not depend on the enumeration: the code paths quoted above, the single live-elsewhere row, and the 120 cross-repo declarations — all plain greps on a named ref.
Dedup words
liveness foreign evidence unfalsifiable, cloud realm marker resolve, evidenceScope cross-repo attestation, live-elsewhere used once
Adjacent — read, and not the same subject
Provenance
Out-of-scope finding from the os-dev report on #18304 (PR #19059). The seat re-measured it before filing and narrowed the claim: the dev's "no gate can ever fail on them in either direction" is true of the 305 non-live-elsewhere rows but not of live-elsewhere itself, where a shape check and a 180-day expiry both red the build. Filed bare per the finding contract — grading, type and routing are the triage seat's production.
Generated by Claude Code
Reading taken 2026-09-18T14:59Z. Code line numbers and ledger greps are against
origin/main@221dabb72; the row census is a seat-built probe whose limits are stated below.Defect
#13483established that a key enforced only in a sibling repo cannot be graded from this checkout, and PR #14056 answered it with a fifth verdict plus a gate that can actually fail:live-elsewheremust carry a foreign pointer, a declaredcross-reposcope, and a dated attestation, and its attestation expires —elsewhereMalformedandelsewhereExpiredare both in thefailedexpression, and the code says why in as many words: expiry failing the build "is the only mechanical event this repo can generate about a claim it cannot re-measure locally".That gate is keyed on the status:
The four evidence checks (existence, line bound, symbol anchor, key mention) run over the LOCAL bucket only — the file states it: "Cross-repo attribution never reaches this list: checkEvidence only resolves the LOCAL bucket" (
:1317-1318).So a row that makes the same claim under
status: "live"gets nothing in either direction: no local resolution (there is no local path to resolve), no shape check (checkElsewhereEntrynever runs), and no expiry (report.verification.errors— a malformed date — is in thefailedexpression;verification.staleis a printed report line, andverifiedAtis optional to begin with).live+ foreign evidence is an unchecked spelling of the thing the fifth verdict was built to gate.Measurement
Ledger greps (
git grep -o … origin/main -- 'packages/spec/liveness/*.json', unit = occurrences):"live-elsewhere"→ 1 (manifest.json, theruntimerow from Liveness ledger has no verdict for keys enforced only in a sibling repo —deadmisreads as deletable (manifest.runtimecase) #13483 itself)."cross-repo"→ 120.The verdict that carries the gate is used once; the scope declaration that describes the same situation appears 120 times.
Row census (seat probe, unit = ledger rows): 39 ledgers, 922 rows in the
propstrees, 707 at a scanned status (live688,planned13,experimental5,live-elsewhere1).Breakdown of the 306:
livelivelivecross-repoplannedexperimentalplannedcross-repolivein-repoexperimentalcross-repolive-elsewherecross-repoThe sharpest sub-class is the 62: they declare
cross-reposcope under aliveverdict. They state the condition #13483 named unfalsifiable, in the field #14056 added for it, while sitting at the one status that skips its gate.Instrument, and its limits
The shared checkout has no installed dependencies, so
scanEvidencefrompackages/spec/scripts/liveness/evidence.mtscould not be imported; the seat re-implemented its realm split in plain node and self-tested it on three cases before use:cloud @cb8ee7ff: packages/service-ai/src/agent-runtime.ts#listAgents …→ 0 local, 1 foreign ✓packages/core/src/x.ts:12 reads it→ 1 local ✓ (lit)objectui: packages/a/b.ts; packages/core/src/y.ts→ 1 local + 1 foreign ✓ (realm scope ends at;)Three enumerations disagree about the population, and none of them is the gate's:
propstreepackages/spec/liveness/state-counts.md, generated)live/ 1elsewhereos-devprobe that surfaced this (report on #18304)The gate walks the SCHEMA at "one-level walk granularity … plus the ADR-0010 protection envelope" (
state-counts.md), not the ledger file tree, which is the likeliest source of the spread. Settling the population is part of this card's work, and no row count here should be quoted as the gate's own reading. What does not depend on the enumeration: the code paths quoted above, the singlelive-elsewhererow, and the 120cross-repodeclarations — all plain greps on a named ref.Dedup words
liveness foreign evidence unfalsifiable,cloud realm marker resolve,evidenceScope cross-repo attestation,live-elsewhere used onceAdjacent — read, and not the same subject
deadmisreads as deletable (manifest.runtimecase) #13483 → created the verdict, closed by PR feat(spec): live-elsewhere — fifth liveness verdict with gate-executable criteria (#13483) #14056. It asked "what evidence shape does a non-local pointer take"; it did not ask what stops a row from making the claim at another status.spec-property-retirementskill predates thelive-elsewhereverdict — its ledger-verdict discipline never names the never-remove cross-repo case #14058 → thespec-property-retirementskill's prose half of the same verdict.dead/live-elsewhereverdicts start warning authors —view.jsonlist.tabsre-read plus a sampled audit of the 90deadrows (ledger half of #16094) #16362 → re-derivation of thedead/live-elsewhererows before they warn authors.check:liveness的 stale-evidence 检测只 ⚠ 不判红 —— ADR-0087 证据路径可以静默腐烂,且摘要行的 “N resolved” 数的是路径总数不是解析成功数 #5623 → stale-evidence ⚠→red and the "N resolved" miscount; about LOCAL paths that rot, not paths that were never local.Provenance
Out-of-scope finding from the
os-devreport on #18304 (PR #19059). The seat re-measured it before filing and narrowed the claim: the dev's "no gate can ever fail on them in either direction" is true of the 305 non-live-elsewhererows but not oflive-elsewhereitself, where a shape check and a 180-day expiry both red the build. Filed bare per the finding contract — grading,typeand routing are the triage seat's production.Generated by Claude Code