Repository navigation
build(repo): fail lint on any inline suppression comment - #80
Merged
Merged
Conversation
systemfsoftware moves to c6eafec (#676), whose oxlint-plugin-test-discipline tarball ships the no-inline-suppression bin. The root takes that package as a dev dependency, and lint and gate:tasks run a new uncached root turbo task, lint:suppressions, that runs the bin in the sandbox over every git-tracked TypeScript and JavaScript file. No comment can exempt a file. The relock records the new content of the four tarballs that changed at the same versions (effect-gherkin-spec, oxlint-config-dmmf, oxlint-config-recommended, oxlint-plugin-test-discipline) and resolves oxlint-config-recommended's @effect/tsgo ^0.50.0 to 0.50.0, per conductor ruling 18 (U6, R26)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Unit U6 of
docs/plans/2026-10-08-0705-feat-gates-bind-and-inline-suppression-plan.md(C3, R26, AE11), conductor ruling 18. The starter picks up systemfsoftware #676'sno-inline-suppressionbin, andpnpm lintfails on any inline suppression comment.Change
flake.lock:systemfsoftwaremoves from8a4b543toc6eafec(#676, the current systemfsoftwaremain). Itsoxlint-plugin-test-discipline-5.0.0.tgzshipsdist/no-inline-suppression.mjs, published as theno-inline-suppressionbin.pnpm-lock.yaml: re-resolved by pnpm 12.9.0 (pnpm install --lockfile-only --update-checksums, run in the sandbox withregistry.npmjs.orgegress). The bump changes:effect-gherkin-spec-7.0.1,oxlint-config-dmmf-2.0.0,oxlint-config-recommended-4.0.0andoxlint-plugin-test-discipline-5.0.0. pnpm recorded their new integrity.hasBin:oxlint-plugin-test-disciplinenow hashasBin: trueand a newoxc-parser: 0.150.0dependency, already in the lockfile.@effect/tsgo:oxlint-config-recommendednow asks for@effect/tsgo^0.50.0, resolved to0.50.0(was0.45.0).@systemfsoftware/oxlint-plugin-test-discipline.file:.sfs-deps/*.tgzname is the same.package.json:@systemfsoftware/oxlint-plugin-test-discipline(catalog:) to the rootdevDependencies, so the root has the bin.lint:suppressions:./bin/sandboxed -- no-inline-suppression. With no arguments the bin scans every git-tracked.ts/.tsx/.mts/.cts/.js/.jsx/.mjs/.cjsfile under the repo root. No path argument, no filter, no|| true.lintrunsturbo lint lint:suppressions, andgate:tasksaddslint:suppressions. CI'scheck (lint)runspnpm lint, andcheck:cirunsgate:tasks, so all three fail on a suppression.turbo.json://#lint:suppressionsis a root task withcache: false, so every run rescans every tracked file and a cached pass can't hide a new directive.Judgment surfaces changed (GATE1, conductor Q7):
package.json(lint,gate:tasks,lint:suppressions),turbo.json.Scope (item 3)
The bin scans 62 git-tracked files: 34 in
apps/, 18 inrepos/, 5 inscripts/, 1 insandbox-proofs/, and 4 root config files.bin/holds only shell scripts, which the bin doesn't scan.pnpm lint:suppressionson this head exits 0, so it finds nothing anywhere,repos/included. Nothing is excluded, filtered or allow-listed.The three matches
git grepfinds for these directive words are prose in Markdown (docs/brainstorms/…-state-of-the-art-plan.md:173anddocs/plans/…-inline-suppression-plan.md:51,102). The bin doesn't scan Markdown.AE11
The run used a scratch linked worktree of this head (
git worktree add --detach /tmp/ae11-scratch HEAD, offlinepnpm bootstrap), removed afterwards. I added// oxlint-disable-next-line no-unused-varsaboveconst name = Str.trim(raw)inapps/site/src/features/guestbook/sign-guestbook.workflow.ts, so the comment sits on line 53.No throwaway file is in the branch.
Evidence
pnpm format:check,pnpm lint,pnpm typecheck,pnpm testandpnpm check:ciall exit 0.check:ciincludes the sandbox proofs, whose git-hooks proof does a fresh offline install of this lockfile from the new Nix pnpm store.Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.