Skip to content

docs(scripts): drop the removed GENERATED_SKILL_ARTIFACTS from the check-doc-authoring control entry - #12187

Merged
yinlianghui merged 2 commits into
mainfrom
claude/issue-12095-stale-generated-skill-artifacts-ref
Aug 25, 2026
Merged

docs(scripts): drop the removed GENERATED_SKILL_ARTIFACTS from the check-doc-authoring control entry#12187
yinlianghui merged 2 commits into
mainfrom
claude/issue-12095-stale-generated-skill-artifacts-ref

Conversation

@yinlianghui

@yinlianghuiyinlianghui commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator

Fixes#12095

The why record for check-doc-authoring.mjs in the control corpus of
scripts/check-ratchet-remedy-authority.mjs named four declarations:

Carries no ratchet at all. ROOTS, SKIP_PATHS, SKIP_FILES and GENERATED_SKILL_ARTIFACTS are declarations of what the two corpus rules read and what is generated rather than authored […]

GENERATED_SKILL_ARTIFACTS is no longer in the tree. It was the by-path exemption for the
generated references/_index.md / references/react-blocks.md artifacts, and it was dropped
(rather than narrowed) by PR #12097 — for #11930, merged as 71f9cd1d75 — once those files
stopped carrying issue ids projected from packages/spec TSDoc. The exemption then guarded a
clean surface, so it went. This prose string was its only surviving mention anywhere in the repo.

The change

One line, one file. The name is dropped and the conjunction moves, since removing the fourth item
of a four-item list otherwise leaves a dangling and:

- ROOTS, SKIP_PATHS, SKIP_FILES and GENERATED_SKILL_ARTIFACTS are declarations of …
+ ROOTS, SKIP_PATHS and SKIP_FILES are declarations of …

Nothing else in the entry moves. The closing sentence — about the per-passage allowlist, and
carrying a maintainer ruling of 2026-08-25 — is a different subject and is left byte-identical
(267 bytes on both sides of the diff, verified by comparing the tail segment against
origin/main). No other entry or why record in the file is touched.

Verification

The three surviving names are live. They describe constants in scripts/check-doc-authoring.mjs,
so that is where liveness was measured — not in the file carrying the prose, where a grep only ever
re-finds the sentence itself:

scripts/check-doc-authoring.mjs:93: const ROOTS = ['.claude', 'docs', 'skills', 'content'];
scripts/check-doc-authoring.mjs:123: const SKIP_PATHS = new Set([
scripts/check-doc-authoring.mjs:130: const SKIP_FILES = new Set(['content/docs/ai/skills-reference.mdx']);
occurrences in that file: ROOTS 26 · SKIP_PATHS 12 · SKIP_FILES 3 · GENERATED_SKILL_ARTIFACTS 0

So this is a single instance of the defect, not one of several.

Nothing parses the why string.declared.why has exactly one consumer in the gate — line 826,
where it is interpolated into the MISCLASSIFIED: failure text (control's reason: ${declared.why}).
It is never matched, split, or compared. No file in the repo reads
scripts/check-ratchet-remedy-authority.mjs as text; the four other referrers of that filename
(package.json, check-doc-authoring.mjs, check-auth-mount-ledger.mjs, check-i18n-coverage.mjs)
name it only in prose comments, a message string, and the npm script that invokes it. The gate's own
--self-test pins no entry text. That is consistent with the gate having stayed green through #12097
with the string already stale.

No ablation applies. A record string with no execution path has nothing to mutate — there is no
leg here that could be made to fail, and constructing one would be theatre rather than evidence.

Gate union, derived with node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack
in the worktree and run at the final commit f677692327. Exit codes captured before any pipe; the
verdict line quoted is each gate's own:

GateExitGate's own verdict
check:agent-test-spelling0violating population empty; 9 separators judged and cleared on the rule
check:cross-package-test-inputs0OK: 16 package(s) read outside themselves, all declared…
check:entry-guard0✓ check:entry-guard: 161 scripts/ file(s) — every entry guard goes through invoked-as.mjs
check:parse-guard0green line over scripts/, 31 counted and tiered
check:pnpm-filter-targets0✓ … 136/173 --filter occurrence(s) across 28 file(s) resolve
check:ratchet-remedy-authority0OK check-ratchet-remedy-authority: 146 scripts swept … Control corpus: 24 hand-classified scripts, set-equality audited both ways.
node scripts/check-ci-filter-parity.mjs0OK: all 96 declared cross-package glob(s) (81 unique) are covered…
node scripts/check-cross-package-test-inputs.mjs0OK: 16 package(s) read outside themselves, all declared…

Plus check:nul-bytes, run because the PR edits a file:
check-nul-bytes: OK (scanned 6749 text file(s) … no raw ASCII control bytes).

The six changeset-triggered families the derivation lists do not apply — see below.

Changeset

None. The diff is a comment-grade string inside a repo-root scripts/ gate; no published package
source changes and nothing is user-visible, so this carries the skip-changeset label instead.

Generated by Claude Code

…eck-doc-authoring control entry
The `why` record for `check-doc-authoring.mjs` in the ratchet-remedy-authority
control corpus named four declarations. `GENERATED_SKILL_ARTIFACTS` — the
by-path exemption for the generated `references/_index.md` /
`references/react-blocks.md` artifacts — was removed from the tree when its
sources stopped carrying projected issue ids, so the record's only surviving
mention of it was this prose string.
Drop that one name and move the conjunction (`A, B, C and D` -> `A, B and C`).
`ROOTS`, `SKIP_PATHS` and `SKIP_FILES` are all still declared and used in
`scripts/check-doc-authoring.mjs`, so the rest of the sentence stands. The
entry's closing line, about the per-passage allowlist, is left byte-identical.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UjM2ia8Av1v5NqfqQEQmC6
@yinlianghuiClaude

Copy link
Copy Markdown
CollaboratorAuthor

Type Check · consumer gates red — base-branch failure, not this PR's. Nothing pushed here.

Cause is main: packages/client's check:exported-any-returns fails on a stale ObjectStackClient.packages.update ledger row that PR #12062 (22c42c9b21) closed the gap for but never deleted. Verified on origin/main — the row is still at packages/client/exported-any-returns.json:17, and #12062's diff is three files with the ledger not among them. This PR is based on 22c42c9b21 and inherits it.

This diff is one line — dropping a removed constant's name from a prose why string in scripts/check-ratchet-remedy-authority.mjs. It contains no TypeScript, nothing under packages/client, and no execution path at all.

⛔ Filed already by two other seats — #12180 (priority:p0) and #12184 — both dispatched; packages/client is domain:cli's. Full diagnosis on #12146; duplicate-collision warning on #12184. Not repeated here.

Waits for main to recover, then lands unchanged. The gate this PR edits, check:ratchet-remedy-authority, ran green at the final commit (146 scripts swept … Control corpus: 24 hand-classified scripts, set-equality audited both ways).


Generated by Claude Code

@yinlianghui
yinlianghui added this pull request to the merge queueAug 25, 2026
Merged via the queue into main with commit 2c4c59eAug 25, 2026
30 checks passed
@yinlianghui
yinlianghui deleted the claude/issue-12095-stale-generated-skill-artifacts-ref branch August 25, 2026 14:36
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xsskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

check-ratchet-remedy-authority's entry for check-doc-authoring.mjs names GENERATED_SKILL_ARTIFACTS, a constant that is being removed

2 participants

@yinlianghui@claude