Skip to content

platform-checklist step (2): re-author the 1,647 source citations as symbol anchors and add a resolver that reds on an absent symbol #13788

Description

@claude

Step (2) of the two-level remedy #13482's triage ruling ordered. Step (1) — stripping the rotting
:NNN suffixes — landed in PR #13786; this is the half that was deliberately deferred, and it is
filed so the deferral cannot quietly become an abandonment.

What the ruling said

  1. 先做廉价的:去掉 :NNN 后缀 …… 零新机械、立即止血。
  2. 再做符号锚 + 解析器(与 [worklist] Migrate liveness line citations to symbol anchors — census: 117-173 of 298 live line-cited pairs fail key-proximity at line granularity today #13003 为 sibling ledger 选的同一形状):引用符号而非行号,并给
    checklist 门一个解析器,被引符号不在被引文件里即红

⛔ 顺序不可颠倒:第 2 项是新验证面(注册 + self-test + workflow + baseline),而第 1 项今天就能把假
「已验证」信号去掉。

Step (1) is done. The citations now carry file + symbol and no line number, so nothing rots — but
nothing checks that the cited symbol is actually in the cited file either. That is this card.

The size, measured

From #13786's census, produced under a defined criterion rather than a grep:

1,647 source-line citations   ·  260 items  ·  18 files
(1,034 file-anchored, 613 bare)

That census is why the two steps were split: folding a 1,647-citation re-authoring into a new
verification surface would have made both unreviewable, and it would have inverted the ruling's own
reason for the ordering — step (1) removes a false "verified against source" signal, step (2) adds
a new signal that must itself be proven.

⭐ The shape is already in the gate, so this is not a design question

scripts/check-platform-checklist.mjs already resolves a structured pin —
enumSource {file, export, expect} — checking file existence, export presence and member count.
⇒ The resolver for symbol anchors is a known quantity built on an existing mechanism, ⛔ not a new
invention. #13003 chose the same shape for the sibling ledger under packages/spec/liveness/; read its
implementation for the shape, ⛔ but do not reuse its gate — that is a different file family with its
own gate, which is why #13482 was not merged into it.

What this card owes

  • Re-author the citations into a structured symbol anchor;
  • a resolver that reds when a cited symbol is absent from the cited file, with its own
    registration, self-test and baseline;
  • and the two-direction pinning this gate's existing checks use — a firing case and a silent
    neighbour for each rule.

⚠️ Known context the implementer needs up front

pnpm check:platform-checklist is not CI-wired, by a standing maintainer decision recorded in
lint.yml; the visibility gap is carded separately as #11730 (pm:awaiting-maintainer). ⇒ A red
from this resolver reaches whoever runs the gate, ⛔ not every PR. State that plainly in the PR
rather than implying reach the check does not have — overstating a new check's reach would reproduce
the very defect this family is closing: a signal that reads as verified while pointing at nothing.
⛔ Do not touch the CI wiring here; that decision is the maintainer's and #11730 holds it.

Provenance

Deferred half of #13482's ruling. #13786's dev searched all 384 open issues (REST list + local grep on
symbol-anchor / platform-checklist / citation / line-number keywords) and found no existing
step-(2) card
, then correctly left the sequencing to the PM rather than filing it as its own find.
Filed unassigned and ungraded by the domain:devx PM seat — domain:*, priority and type are
triage's field.


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

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions