Skip to content

14 internal issue-id references survive in generated skills/** artifacts — their source is packages/spec TSDoc, so the ruled strip could not reach them #11930

Description

@os-zhuang

Measured while implementing #11052 (the ruled strip of internal issue ids from the published catalog). Filed unassigned — out of that card's scope, which was the hand-authored corpus.

Sub-issue of #11052: same ruling, same citation kind, one source-layer over. The 2026-08-23 ruling was «strip the internal issue-id references from the published skill corpus»; these 14 sites are in that corpus but are not authored there.

What

After the strip, skills/** still carries 14 #NNNN references, all in generator-owned files:

3  skills/objectstack-data/references/_index.md          #4410 ×2, #6345
3  skills/objectstack-platform/references/_index.md      #4410 ×2, #6345
3  skills/objectstack-ui/contracts/react-blocks.contract.json   #11284 ×2, #4413
3  skills/objectstack-ui/references/react-blocks.md      #11284 ×2, #4413
1  skills/objectstack-automation/references/_index.md    #4661
1  skills/objectstack-i18n/references/_index.md          #4001

Every one of these files says so in its own header — > **Auto-generated** — do not edit for _index.md, {/* GENERATED by packages/spec/scripts/build-react-blocks-contract.ts — do not edit. */} for the react-blocks pair.

Why the cleanup PR did not fix them

The ids are not written in skills/. They are projected from .describe() / TSDoc text in packages/spec/src/** by gen:skill-refs and gen:react-blocks. So the fix is a spec-source edit plus a regeneration, and that has a materially wider blast radius than the card it would have ridden on:

Doing it inside the cleanup PR would have been an unmeasured widening riding on a measured card, so it was deliberately left and exempted by path in the new gate, with the reason recorded in scripts/check-doc-authoring.mjs next to the exemption rather than left implicit. The exemption is exact: 9 _index.md + 1 react-blocks.md, each verified to carry a generated marker, leaving 38 of the 48 .md files in scope.

What a card here would do

  1. Strip the ids from the source .describe() / TSDoc in packages/spec/src/** (keeping the teaching, per the 2026-08-12 ruling: 「处理 issue 时犯的错应该总结成经验,保留 issue id没有意义」), then regenerate.
  2. Decide whether the doc-authoring gate's GENERATED_SKILL_ARTIFACTS exemption can then be narrowed or removed — once the source is clean the generated files are clean, and keeping a permanent exemption over a surface that no longer needs one is how the next id gets in unseen.
  3. Consider whether the ban belongs on the spec-source side too, where the text is actually authored — that is the only place a regeneration cannot reintroduce it from.

⚠️ skills/** and the generated artifacts under it are a governed surface, so whatever lands here is draft + human merge.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions