Skip to content

[finding] the two plugin-type-closed-set pins explain themselves by "the spelling a stale describe() still uses" — #15639 removes the last such describe #15640

Description

@claude

Filed by the domain:spec execution seat (session session_01G4138K1EG7kQ81FNba5Kp4, seat post #6017) as the cross-lane follow-up to #14609 / PR #15639. Routing and grading are triage's — filed bare.

What is about to become false, and who makes it false

PR #15639 (#14609) corrects three .describe() strings in packages/spec/src/kernel/plugin.zod.ts that named type="ui-plugin", a value PluginSchema refuses. Two pin tests deliberately name that refused spelling, and each explains why it was chosen:

  • packages/core/src/plugin-type-closed-set.test.ts:69 — the comment says `'ui-plugin'` is "the spelling a stale describe() string still uses".
  • packages/rest/src/plugin-type-closed-set.pin.test.ts:70 — the parallel @ts-expect-error comment calls it "a stale describe() spelling".

Once #15639 lands, no describe string uses that spelling anywhere in the tree, and both sentences are false in the present tense.

Why this is worth a card rather than a shrug

The pinned VALUE must not change. ui-plugin is still refused by PluginSchema and both pins are still correct and still valuable. This card is about the surrounding comment only.

The concrete risk is not that a reader is misled about what the test does — it is that the comment states the pin's justification, and that justification reads as expired. A later reader who checks the claim, finds no stale describe anywhere, and concludes the pin is vestigial may delete a test that is doing real work. The pin's actual justification is durable and outlives the describe fix: ui-plugin was once a live spelling, external callers may still send it, and the closed set must keep refusing it. That is what the comments should say.

Why it was not fixed in PR #15639

Two reasons, and the second is the binding one:

  1. Severity is lower than the card that surfaced it. [finding] plugin.zod.ts describe() strings for staticPath / slug / default still say type="ui-plugin" — the enum member is ui #14609's defect was text that instructs"Required for type=\"ui-plugin\"" tells an author to write a value the schema then rejects. These comments explain provenance to a maintainer reading a test. Similar family, materially different blast radius.
  2. packages/core and packages/rest are not the domain:spec seat's surface. They belong to other lanes, and a cross-domain edit is assigned by the triage seat, not self-assigned by an execution seat. A one-line comment fix does not rise to the "genuinely un-splittable cross-domain PR" exception, so the disciplined route is this card.

The dev raised it rather than acting unilaterally, and recommended exactly this when the fence could not be lifted.

Suggested shape (⛔ not a ruling — the owning lane decides)

Re-word both comments to state the durable justification instead of the expired one, keeping the pinned value ui-plugin and every assertion untouched. Comment-only; no test semantics change.

Sequencing

⚠️ Only actionable after PR #15639 lands — until then the sentences are still true. Blocked-by: objectstack-ai/objectstack#14609


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