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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions