Two jobs in CI assert nothing, and both are currently red for an unrelated reason (#691). When #691 is fixed they will turn green while testing nothing — converting a visible failure into invisible non-coverage. They should be fixed in the same change.
1. E2E Rust CLI Scan cannot fail
.github/workflows/tests.yml:95-96:
./target/release/hyper scan /tmp/test-repo 2>&1 || true
echo "PASS: Rust CLI scan completed"
|| true discards the scanner's exit code; the next line prints PASS unconditionally. (It also invokes hyper, while the binary is hypatia.)
2. The whole lint job in Docs & Code Quality
.github/workflows/quality.yml:318-342 — four steps, none of which can fail:
:328 find … || true
:333 grep -rn "TODO\|FIXME\|HACK\|XXX" … | head -20 || echo "None found"
:337 find … || echo "No large files"
:341 EditorConfig check → continue-on-error: true
Line :333 additionally greps --include="*.py" and --include="*.res" — languages with zero files in this repo.
Related: the Elixir side has no lint gate at all
mix compile --warnings-as-errors currently fails with 21 warnings (10 × @doc on a private function, ungrouped clauses in lib/vcl/client.ex:135 and lib/fleet_dispatcher.ex:35, an unused variable at lib/rules/admin_merge_eligibility.ex:363, rescue before catch, …). No workflow runs it. There is no Credo and no Dialyzer — not "configured but unwired", absent from mix.exs entirely.
So the largest component in the repo has zero static gating, while two shell jobs pretend to provide some.
Evidence: docs/DEBT-REGISTER.md (CI-5, CI-6, C-1, C-2).
Two jobs in CI assert nothing, and both are currently red for an unrelated reason (#691). When #691 is fixed they will turn green while testing nothing — converting a visible failure into invisible non-coverage. They should be fixed in the same change.
1. E2E Rust CLI Scan cannot fail
.github/workflows/tests.yml:95-96:|| truediscards the scanner's exit code; the next line printsPASSunconditionally. (It also invokeshyper, while the binary ishypatia.)2. The whole
lintjob in Docs & Code Quality.github/workflows/quality.yml:318-342— four steps, none of which can fail::328find … || true:333grep -rn "TODO\|FIXME\|HACK\|XXX" … | head -20 || echo "None found":337find … || echo "No large files":341EditorConfig check →continue-on-error: trueLine
:333additionally greps--include="*.py"and--include="*.res"— languages with zero files in this repo.Related: the Elixir side has no lint gate at all
mix compile --warnings-as-errorscurrently fails with 21 warnings (10 ×@docon a private function, ungrouped clauses inlib/vcl/client.ex:135andlib/fleet_dispatcher.ex:35, an unused variable atlib/rules/admin_merge_eligibility.ex:363,rescuebeforecatch, …). No workflow runs it. There is no Credo and no Dialyzer — not "configured but unwired", absent frommix.exsentirely.So the largest component in the repo has zero static gating, while two shell jobs pretend to provide some.
Evidence:
docs/DEBT-REGISTER.md(CI-5, CI-6, C-1, C-2).