The shellcheck class check only covers *.sh, so bin/cast could drop out of the sweep silently #121
Labels
No labels
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-triage
ready
release
scope:apply
scope:capture
scope:coolify-api
scope:fleet
scope:manifest
scope:secrets
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/cast#121
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Non-blocking observations from
claude-bot-andresmgsl's review of #119, filed so they do not rot in a PR thread.The residual gap
#119 derives the lint set from
git ls-files '*.sh'plus a shebang scan that picks up extensionless scripts — which is howbin/castgets linted without being named.But the class check asserts only that the swept set covers
git ls-files '*.sh'.bin/castis not a*.shfile, so it is covered by the derivation and not by the assertion. If the shebang-matching branch were ever broken or deleted,bin/castwould drop out of the sweep silently while the check stayed green.That is the same failure mode #118 was about — a lint sweep quietly narrowing while CI passes — one level in from where #119 closed it.
Suggested fix
A one-line floor assert alongside the existing check:
or a minimum-count assert. Either turns a silent narrowing into a red step. Cheap, and it closes the guard's own blind spot.
Smaller notes from the same review (all theoretical here)
shellcheck-all.sh:41—IFS= read -r line <"$f" || continueskips a file whose first line lacks a trailing newline:readreturns 1 at EOF even thoughlineis populated. A shebang-only file with no final newline would be silently unswept.zshin the interpreter allowlist (:50) — shellcheck emits SC1071 (unsupported shell) for zsh, so adding a zsh script would make the sweep fail hard. Loud failure is arguably right; just worth naming that the outcome is "blocked", not "linted".#!/usr/bin/env -S bashshebangs reduce toenvand would be missed. Not used anywhere in the repo today.ubuntu-latest. Severity behaviour could shift with runner image updates.Why filed rather than fixed in #119
#119 had three head-current approvals; a new commit would have invalidated them for a guard-against-reintroduction on a sweep that is correct today. The reviewing bot's own framing was "fine as a follow-up or never."
Refs
#119 (where these were raised), #118 (the original sweep gap), heavy-duty/box#112 (the class-check precedent)