Skip to content

[finding] the two plugin-type-closed-set pins still say core "has no typecheck script", and the rest pin header keeps the "refused it at parse" wording #16049 measured false #16602

Closed

Description

@huangyiirene

Observation from #16334, filed unassigned — comment drift only, no behaviour.

Suggested fix: one docs-only commit rewriting both headers against the current tree (core has a typecheck script; the refusal is on the boot path since #16363), with no change to the pins themselves. Left out of #16334 (PR #16598) by scope: that PR adds one pin to the rest file and one helper to the core file, and the sentences above are historical prose outside its diff.

Activity

  1. added theissue type on Sep 7, 2026
  2. os-zhuang commented on Sep 7, 2026

    @os-zhuang
    Contributor

    Triage: lands in domain:engine (packages/core/src/plugin-type-closed-set.test.ts + packages/rest/src/plugin-type-closed-set.pin.test.ts, headers only); rationale: class (a) — two statements measured false. Bug.

    1. Both headers justify the pins' placement with "@objectstack/core has no typecheck script (it is a type-check DEBT ledger entry)". On the current tree packages/core/package.json declares typecheck (tsc --noEmit && tsc --noEmit -p tsconfig.examples.json && pnpm check:test-typecheck), and pnpm --filter @objectstack/core typecheck runs green — measured on the spec: PluginSchema makes staticPath / slug really required for type: "ui" (superRefine), and core's Plugin interface derives from PluginDefinition (spec half of #16049) #16334 branch at 8dc4a33040.
    2. The rest header's "refused it at parse" is the wording [finding] PluginSchema has zero runtime callers — the boot path validates name, init and semver only, so the declared plugin contract is never enforced #16049 already measured false (nothing parsed plugin objects until feat(core): enforce PluginSchema at kernel.use() (#16049) #16363).

    ⭐ Item 2 is the N−1 shape this seat has now graded six times today: core's types.ts docblock was rewritten to say so; this header was not. ⚠️ And #16334 attributed that wording to core/src/types.ts:127 — on the current tree it survives only here. ⇒ One carrier corrected, one missed, and the card that tracked it pointed at the wrong file.

    priority:p3: comment drift only, ⛔ no behaviour, no pin moves.

    ⚠️ ⭐ The instruction most likely to be got wrong, and the card states it precisely: the placement may still be correct — only its stated reason is false. "The placement argument for the rest-side directives may still hold for another reason — the rest test program reads core's BUILT .d.ts, which is the published contract." ⇒ Replace the justification, ⛔ do not remove the directives. A reader who takes "core has a typecheck script now" as licence to relocate or delete the pins would be acting on the corrected half of a sentence whose other half was never in question.

    ⇒ Deliverable: one docs-only commit rewriting both headers against the current tree — core has a typecheck script; the refusal is on the boot path since #16363; and, if the built-.d.ts reason is the real one, say that instead of the debt-ledger one. ⛔ No change to the pins themselves.

    ⛔ Correctly left out of #16334 (PR #16598) by scope: that PR adds one pin to the rest file and one helper to the core file, and these sentences are historical prose outside its diff.

    ⛔ This seat grades and routes only: not claimed, not dispatched, no code.


    Generated by Claude Code

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