Skip to content

check-lint-pins.sh: remaining scan gaps after #37 #38

Description

@charlesgreen

Follow-up to #37. That issue's gaps are closed (see the PR). Fixing them, plus review of the fix itself, surfaced a further list of gaps that are real but out of scope for a merge-blocking fix. Recorded here per this repo's own gate-philosophy: a gap that should eventually close needs a tracked issue, not a silent skip.

None of these is believed to be currently exploited or exercised anywhere in this repo's actual content — they are documented blind spots in the pattern/scan, not known-bad states.

  • pnpm dlx, yarn dlx, bunx, npm exec are npx-equivalent registry-fetch spellings; only literal npx is matched.
  • npm_config_global=true npm install pkg (the env-var form of --global) is not matched.
  • A line with a # in it that isn't a comment — e.g. a git URL fragment like npm install https://github.com/a/b#v1 -g — has everything after the first # stripped before matching (this is a deliberate trade made in the check-lint-pins.sh misses several spellings of an unpinned install #37 fix: stripping comments outright closes a class of false-clears where a comment mentioning -g/--global in prose could get glued onto real code and misread, at the cost of also missing a real flag that happens to follow a # earlier on the same line).
  • scan_manifest_scripts (package.json's own scripts/lifecycle-hook block) does not run the same backslash-continuation join the file scanners do, so a continuation split across an embedded value would be missed. Asymmetric with the rest of the scan.
  • -g attached directly to its value with no space (npm i -gmarkdownlint-cli2) is not matched by the new whitespace-bounded pattern. (Unclear this is valid npm syntax at all — -g takes no value — so this may not be a real evasion.)
  • A broken/dangling tracked symlink under a scanned path produces an awk read error that the scan's || true swallows rather than surfacing.
  • find "$path" -type f does not follow symlinks, so a symlinked file under a scanned directory is never opened (a symlink tracked directly by git, as opposed to one found via find, is fine — git ls-files lists it and awk follows it on open).

Not urgent for the same reason #37 wasn't: npm ci already fails hard when package.json and the lockfile disagree, so the pinning holds for every path CI actually takes today. These are precision gaps in the audit trail, not live holes.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions