Skip to content

chore(lint): delete inert eslint-disable family comments in package sources - #14801

Merged
baozhoutao merged 4 commits into
mainfrom
claude/issue-14529-delete-inert-eslint-disable
Sep 3, 2026
Merged

baozhoutao merged 4 commits into
mainfrom
claude/issue-14529-delete-inert-eslint-disable

Conversation

@claude

@claude claude Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Fixes #14529

What

Deletes all eslint-disable / eslint-disable-next-line / eslint-enable family
comments from non-test source files under packages/** (maintainer-ruled A,
ruling comment 5518653161). package.json:32's only lint invocation
(eslint . --no-inline-config) ignores every inline configuration comment, so
these are inert regardless of which rule they name; --no-inline-config stays
unchanged.

Measured at branch base 89a156af8

eslint-disable family comments in packages/** (non-test): 58
files carrying them:                                       26

(The card's original estimate was 134/45 at ed44512; re-measuring the same
population definition directly against that commit — git grep over
packages/**, excluding dist/, node_modules/, *.test.*, test/,
tests/, __tests__/ — also returns 58/26, not 134/45, so the discrepancy
predates this branch and isn't drift from commits landing between ed44512
and 89a156af8. Reported as measured, not reconciled against the original
count.)

Step 1 — per-comment measurement against eslint.config.mjs

Every rule named by the 58 comments, checked for a rules: entry in
eslint.config.mjs:

Rule named Occurrences Configured in eslint.config.mjs?
@typescript-eslint/no-explicit-any 29 No
no-console 20 No
eqeqeq 3 No
@typescript-eslint/no-unused-vars 3 No
no-constant-condition 2 No
no-new 1 No
no-control-regex 1 No
@typescript-eslint/ban-ts-comment 1 No
@typescript-eslint/no-implied-eval, no-new-func 1 (2 rules) No
bare /* eslint-disable */ (no rule named) 1 N/A

Zero of the named rules are configured. So the deletion is doubly safe:
inert under --no-inline-config, and would still be inert without that flag
(matching the card's own example — no-console was never configured either).
No configured-rule row exists, so no follow-up card is filed for an exposed
finding.

Step 2 — delete

58 lines deleted across 26 files, all whole-line comments (none were trailing
comments on a code line, verified before deleting) — pure comment removal, git diff --stat shows only deletions in the 26 source files.

Step 3 — collateral: one line-anchored ledger needed re-syncing

check:system-context-census pins exact line numbers in
content/docs/permissions/system-context.mdx to elevation-read sites in
packages/rest/src/rest-server.ts. Deleting the one eslint-disable-next-line
comment in that file (originally line 4331) shifted 5 downstream anchors by
one line, which the gate correctly flagged as line rot
(site-without-a-row / anchor-is-not-a-read-site, 10 problems). This is the
gate's own maintained repair path, not a new finding: node scripts/check-system-context-census.mjs --fix re-anchored the 5 references
(4716→4715, 6079→6078, 6327→6326, 6758→6757, 6951→6950) with no
content change beyond the line numbers, and the gate is green before and after
on the re-synced tree. One line changed in content/docs/permissions/system-context.mdx
(not content/docs/releases/**).

pnpm lint is green both before and after this diff (same result — the flag
makes the comments' removal a no-op for lint's own verdict, confirming the
premise).

Tests

  • pnpm lint (via scripts/pm/os-verify-lock.sh): green, before deletion and
    after, both on the pre-merge tree and again on the merged head aca7d5cd4d.
  • pnpm exec turbo run build + pnpm exec turbo run typecheck, scoped to the
    17 touched packages plus their full dependency closure (turbo resolves
    ^build/^typecheck): green — 57/57 build tasks, 67/67 typecheck tasks.
  • node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands:
    34 local gate families named for this diff. Ran all 34:
    • 32 green.
    • check:system-context-census: 10 problems from line-number rot (see Step 3
      above) — fixed with the gate's own --fix, verified green after.
    • check:dual-build-cjs-loads and check:i18n-coverage: both exit
      PREREQUISITE-NOT-MET / COULD-NOT-MEASURE — each needs a full-workspace
      pnpm build (dozens of packages, e.g. @objectstack/connector-mcp,
      @objectstack/studio) that this scoped verification didn't run; NOT
      MEASURED locally
      , not a finding. CI's Build Core / Type Check jobs
      build the full workspace and will measure these for real.
    • check-test-completeness.mjs: exits 3 by design without a turbo run test
      log path (CI-only invocation) — NOT MEASURED locally, not a finding.

Scope

Comment-only diff; no code, no eslint.config.mjs, no package.json lint
flag. skip-changeset label applied (no public surface moves).

PR session: https://claude.ai/code/session_01WLJQhde67SeTccsmnBVarV

🤖 Generated with Claude Code

https://claude.ai/code/session_01WLJQhde67SeTccsmnBVarV


Generated by Claude Code

…ources

package.json's lint script runs eslint with --no-inline-config, so every
inline eslint-disable / eslint-disable-next-line / eslint-enable comment
is ignored by the repo's only lint invocation. This deletes the 58 such
comments across 26 non-test source files under packages/** that carry
them at this branch's base (89a156a) -- comment removal only, no code
change. Per-comment measurement against eslint.config.mjs (see PR body)
confirms none of the named rules are configured there either, so the
deletion cannot expose a live finding.

Also re-anchors 5 line-number references in
content/docs/permissions/system-context.mdx that check:system-context-census
pins to exact lines in packages/rest/src/rest-server.ts -- one of this PR's
comment deletions shifted those lines by one, and the gate's own --fix
brought the anchors back in sync (verified green before and after).

Fixes #14529

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WLJQhde67SeTccsmnBVarV
@claude claude Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 3, 2026
@github-actions github-actions Bot added the size/s label Sep 3, 2026
@github-actions

github-actions Bot commented Sep 3, 2026 •

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 17 package(s): @objectstack/hono, @objectstack/cli, @objectstack/core, @objectstack/driver-sqlite-wasm, @objectstack/metadata-protocol, @objectstack/metadata, @objectstack/objectql, @objectstack/plugin-auth, @objectstack/rest, @objectstack/runtime, @objectstack/sdui-parser, @objectstack/service-automation, @objectstack/service-cluster-redis, @objectstack/service-cluster, @objectstack/service-datasource, @objectstack/types, @objectstack/verify, touching 21 documentable anchor(s). ⚠️ 7 changed file(s) yielded no anchor (packages/adapters/hono/src/index.ts, packages/rest/src/rest-server.ts, packages/sdui-parser/src/codegen.ts, …), so the pages documenting them are NOT COVERED by this run — this is not a clean bill of health for those files.

6 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:

  • content/docs/api/environment-routing.mdx (via createStandaloneStack (symbol, a top-level function))
  • content/docs/concepts/metadata-lifecycle.mdx (via SysMetadataRepository (symbol, a top-level class))
  • content/docs/data-modeling/drivers.mdx (via createStandaloneStack (symbol, a top-level function))
  • content/docs/deployment/cli.mdx (via loadArtifactBundle (symbol, a top-level function))
  • content/docs/deployment/single-project-mode.mdx (via createStandaloneStack (symbol, a top-level function))
  • content/docs/plugins/index.mdx (via createStandaloneStack (symbol, a top-level function))

⛔ 1 release-owned page(s) also name something this change touched. These are read-only:

  • content/docs/releases/v17.mdx (via bootStack (symbol, a top-level function))

content/docs/releases/ is RELEASE-OWNED (AGENTS.md "Documentation Guardrails"): release
notes are written centrally at release time, and a code PR that edits them is the exact PR
that guardrail exists to stop. They are still audited — read-only. If one of them is actually
wrong, file an issue or open a dedicated docs-only PR; do not edit it here.

What this run could not see
  • 7 changed file(s) yielded no anchor (packages/adapters/hono/src/index.ts, packages/rest/src/rest-server.ts, packages/sdui-parser/src/codegen.ts, …) — pages documenting those are invisible to this run
  • 3 name(s) were too generic to anchor anything (single lowercase words)
  • the SDK route bridge reached 47 of 219 client-bound route-ledger rows — the other 172 have no registrar path: tail to select them, so pages documenting THEIR client methods cannot appear above, on this or any run. Of those 172: 14 are remediable by widening that discovery convention (an in-repo file declares the path; the convention did not scan it); 56 are structural — on a ledger where NOT ONE row is declared in-repo, so no discovery change reaches them at any price; 102 are undecided (no in-repo declaration, on a ledger that has other in-repo registrars — absence and an unreadable spelling are not distinguishable here). The rows themselves: node scripts/docs-audit/affected-docs.mjs --bridge-coverage
  • a page that states a rule by its inputs shares no identifier with the emitter that implements the rule, so an emitter-only diff cannot list it — not on this run and not on any run. Measured on fix(driver-sql): emit varchar(maxLength) for a text field a declared index keys on #11430: content/docs/protocol/objectql/types.mdx documents the text-family column mapping by the ObjectQL type names it maps FROM (text / textarea / html) while the diff changed createColumn; it went unlisted, and it was the page that diff falsified, in four places. No shared token exists to detect this on, so a rule your change carries has to be re-read by hand in the pages that restate it.

Coarse fallback — 68 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 2d40f9146800dcf625fc54696f6435e676b1ed96 → packageMentionDocs.

Which tree this was computed on

This run read content/docs from cc3ab750ef7b8dc8fa41d68f6e8429a61a5bb84c — the merge of head 7b8f2ec797b37c35e61687627f4fcaf284614cc2 into base 2d40f9146800dcf625fc54696f6435e676b1ed96, which is what actions/checkout gives a pull_request run. Not the PR head.

A worktree cut from an older main holds a different content/docs, so re-deriving there can legitimately return a different list — that is a different tree, not a wrong row. To answer on the same tree:

# while this PR is open — GitHub drops the merge commit once it closes
git fetch origin cc3ab750ef7b8dc8fa41d68f6e8429a61a5bb84c && git checkout cc3ab750ef7b8dc8fa41d68f6e8429a61a5bb84c
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 2d40f9146800dcf625fc54696f6435e676b1ed96 7b8f2ec797b37c35e61687627f4fcaf284614cc2 && git checkout -B drift-repro 2d40f9146800dcf625fc54696f6435e676b1ed96 && git merge --no-ff 7b8f2ec797b37c35e61687627f4fcaf284614cc2

node scripts/docs-audit/affected-docs.mjs --json 2d40f9146800dcf625fc54696f6435e676b1ed96

⚠️ That checkout carried uncommitted changes, so the commit above does not fully identify what was read.

Advisory only, and a precision-first one (#9192): a page is listed because it names a
symbol, wire route or SDK method this diff touched — not because it mentions a changed
package. Each row says which anchor put it there, so a wrong row is reportable rather than
merely annoying. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs 2d40f9146800dcf625fc54696f6435e676b1ed96 → pass the list as
args.docs, on the commit named under Which tree this was computed on.

@claude

claude Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

Re-trigger via update-branch (domain:devx execution seat, session session_01LAwHpn4uVuf4N1geBcD5i3).

PR-side CI on cd73b0c40 is red only on Test Core (1/6) (packages/cli pnpm run test exit 1 — check-run annotations carry the exit code, the log download is refused from this container; same shard/package as the #14648 signature, and this diff does not touch packages/cli test code). This head does not contain the merged fix accb9231c7 (PR #14715; verified git merge-base --is-ancestor), so this is the "base lacks a merged fix ⇒ merge main, push a new head" branch, not a re-run: GitHub merges main into the branch (a real merge commit, no rewrite). If Test Core (1/6) reds again on the new head with the same file, it parks under the #14648 post-fix reading like PR #14774; any other red is real. #14529 stays pm:dispatched; flip + arm on green.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

134 eslint-disable comments across 45 source files are structurally inert — pnpm lint runs --no-inline-config

2 participants