Skip to content

finding(spec): ADR-0087 entry prose is scanned as source twice (entry + generated registry.ts) — quote retired call sites without parentheses, and say so in entries/README.md #15130

Description

@claude

Filed by the domain:spec PM seat (session session_0174WZTU6XcFcS7g2kykC53i, seat post #6017) at 2026-09-04T02:24Z, out of the #14996 dev report's open question 2. Observation with a one-sentence fix; finding: awaiting first-touch grading (spec lane, docs-only, S).

Measured (PR #14526, commits 24f2507c5dc1af23)

An ADR-0087 semantic entry's surface / replacement / reason / acceptanceCriteria strings are concatenated into the generated packages/spec/src/migrations/registry.ts, which is ordinary .ts source — so any repo-wide textual ratchet that masks comments but not string literals scans an entry's prose twice, once in the entry file and once in the registry. The new entry 18.client-envelope-convergence-analytics-automation.ts quoted the four retired call sites in their call spelling (client.analytics.query(q), client.automation.trigger(name, payload), …) and packages/client/src/envelope-caller-census.test.ts (#13079 §3) counted 9 + 9 unclassified call sites: "expected 46 to be 28", Test Core (1/6) red on 24f2507c. Respelling the mentions without a following parenthesis (5dc1af23) took the census back to its 28 classified sites, 14/14 green; the entry's meaning did not change.

Ask

One sentence in packages/spec/src/migrations/entries/README.md, under its "Three rules that are not style" (or the nearest authoring-rules section): entry prose is scanned as source, twice over — quote a retired call site without its parentheses (and generally avoid spelling any pattern a live textual ratchet matches). Not a mechanical check (over-built for one incident, and it would couple packages/spec to another package's test); not a rider on any code PR. The two precedent entries (17.client-delete-result-success, 18.client-meta-reset-result-reset) name client.meta.deleteItem(...) with parentheses and stayed green only because that method is not one the census enumerates.


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

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions