cliffhall
398d074ad9
chore(scripts): scan only executable positions, and match on the expression prefix ( #2146 )
...
Copilot, second review — both findings were real:
- A `${{ … }}` body can itself contain braces, so the `[^}]*\}\}` arm added in
the previous round stopped at the first `}` and missed
`smoke:web:${{ format('{0}', matrix.browser) }}` — the very case it was
added for. It now keys off the `${{` prefix, which nesting cannot defeat.
- Scanning every non-comment line made ordinary metadata a finding:
`name: Explain why smoke:web:firefox stays local` executes nothing and was
reported as an engine invocation, contradicting the header's "what it
forbids, and nothing more". The scan now walks executable positions only —
`run:` scalars (inline and block) and `env:`/`with:` values — via an
exported `extractExecutableRegions`, hand-rolled because `test:scripts` is
dependency-free by design. The narrowing is a stated limit, not a hidden
one: an execution vector outside those three positions is not seen.
Verified by injecting a nested-brace SMOKE_BROWSER expression into the real
main.yml — the suite fails, and goes green again when removed.
Signed-off-by: Cliff Hall <cliff@futurescale.com>
Signed-off-by: cliffhall <cliff@futurescale.com>
2026-08-27 00:35:47 -04:00
..
lib
chore(scripts): scan only executable positions, and match on the expression prefix ( #2146 )
2026-08-27 00:35:47 -04:00
install-clients.mjs
feat: port CLI, TUI, and launcher from v1.5 into v2 ( #1452 )
2026-06-14 20:27:49 -04:00
install-smoke-browser.mjs
fix(smoke): reject an empty SMOKE_BROWSER; test the installer's argument logic
2026-08-25 22:52:02 -04:00
install-smoke-browser.test.mjs
fix(smoke): reject an empty SMOKE_BROWSER; test the installer's argument logic
2026-08-25 22:52:02 -04:00
pack-and-verify.mjs
ci: drop the Firefox smoke job; keep the engines as an on-demand tool
2026-08-25 23:55:19 -04:00
run-engine-smokes.mjs
fix(smoke): route the Chromium tier through ENGINE_SMOKES too
2026-08-26 08:55:51 -04:00
run-engine-smokes.test.mjs
Merge remote-tracking branch 'origin/v2/main' into v2/chore/2146-rename-local-gate
2026-08-27 00:16:14 -04:00
smoke-cli.mjs
chore(scripts): build test-servers unconditionally from one shared helper
2026-08-25 00:57:48 -04:00
smoke-launcher.mjs
refactor: self-validating clients, fast validate + separate coverage/smoke ( #1504 ) ( #1505 )
2026-06-21 11:41:33 -04:00
smoke-tui.mjs
fix(scripts): make the test stubs drain, and the raw-mode guard testable ( #2147 )
2026-08-26 22:13:35 -04:00
smoke-web-app.mjs
chore(scripts): rename the local pre-push gate off ci, and guard it out of CI ( #2146 )
2026-08-26 23:56:34 -04:00
smoke-web-browser.mjs
chore(scripts): rename the local pre-push gate off ci, and guard it out of CI ( #2146 )
2026-08-26 23:56:34 -04:00
smoke-web-elicitation.mjs
Merge remote-tracking branch 'origin/v2/main' into v2/chore/2146-rename-local-gate
2026-08-27 00:16:14 -04:00
smoke-web-tabs.mjs
Merge remote-tracking branch 'origin/v2/main' into v2/chore/2146-rename-local-gate
2026-08-27 00:16:14 -04:00
smoke-web.mjs
fix(smoke): await the server's exit before removing its catalog, and test it
2026-08-11 14:32:20 -04:00
verify-build-gate.mjs
chore(scripts): rename the local pre-push gate off ci, and guard it out of CI ( #2146 )
2026-08-26 23:56:34 -04:00
verify-bundle-externals.mjs
test(proxy): isolate proxy env per file; word the guard failure by candidate source
2026-08-23 23:00:28 -04:00
verify-bundle-externals.test.mjs
test(proxy): isolate proxy env per file; word the guard failure by candidate source
2026-08-23 23:00:28 -04:00
verify-dep-lockstep.main.test.mjs
Merge origin/v2/main: move the #1939 npx fix into the shared tsc-program lib
2026-08-16 17:07:50 -07:00
verify-dep-lockstep.mjs
chore(scripts): compare only the copies a program actually met
2026-08-16 12:35:38 -04:00
verify-dep-lockstep.test.mjs
chore(scripts): compare only the copies a program actually met
2026-08-16 12:35:38 -04:00
verify-format-coverage.main.test.mjs
test(scripts): cover verify-format-coverage's sibling-guard vouch
2026-08-10 22:16:29 -04:00
verify-format-coverage.mjs
chore(deps): scope the allowlist to a major, cover vitest.shared.mts, fix the vouch comment
2026-08-10 21:00:31 -04:00
verify-typecheck-coverage.main.test.mjs
Merge origin/v2/main: move the #1939 npx fix into the shared tsc-program lib
2026-08-16 17:07:50 -07:00
verify-typecheck-coverage.mjs
Merge origin/v2/main: move the #1939 npx fix into the shared tsc-program lib
2026-08-16 17:07:50 -07:00
verify-typecheck-coverage.test.mjs
chore(scripts): derive dep-lockstep candidates from what enters each tsc program
2026-08-16 12:17:15 -04:00