Skip to content

lint-liveness-properties.ts describe() has not been taught the live-elsewhere verdict — throws by design the day such a row opts into authorWarn #14057

Description

@claude

Recorded from the #13483 delivery (PR #14056). Unassigned — recording only, for triage.

What

packages/lint/src/lint-liveness-properties.ts maps ledger verdicts to author-facing findings in describe() and — deliberately, per its own #11384 boundary comment — THROWS on a status it has not been taught: "either the ledger JSON has a typo, or a new status was added to the vocabulary without teaching describe() in lint-liveness-properties.ts about it". #13483 added exactly such a status: live-elsewhere (dead here by measurement, enforced in a sibling repo; first row manifest.runtime).

Reachability, measured

Not reachable today: an entry only reaches describe() after shouldWarn() says yes (authorWarn: true, or status experimental), and no live-elsewhere row carries authorWarn (the migrated manifest.runtime row does not). The day such a row opts into authorWarn: true, os lint throws — loud by design, but a crash rather than the advisory warning the author should get.

The designed repair (the throw message itself prescribes it)

Teach describe() a live-elsewhere branch with its own rule id (the #11384 lesson: verdicts imply OPPOSITE author actions, so it must not fall into the dead branch — "Remove it" is exactly wrong for a key whose enforcement is real and remote). A reasonable default hint: keep the property — it is enforced at the sibling repo's gate (for manifest.runtime: the cloud marketplace publish gate), not at load time here; see the ledger row's evidence for the enforcer. Plus a test beside the existing describe() cases.

Out of scope for #13483 (the card's surface is the ledger + gate tooling under packages/spec; packages/lint has its own suite), filed instead per the dispatch order.

Generated by Claude Code


Generated by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions