Files
msd-core/eslint-rules/no-unbounded-spawn.allowlist.json
Tom Boucher 2afe17bbdb test(#3143): add the no-unbounded-spawn guard and throw-preserving git fixture (#3150)
* test(#3143): add no-unbounded-spawn guard and throw-preserving git fixture

Adds the ESLint rule local/no-unbounded-spawn, wired into the tests/**/*.cjs
block, plus an allowlist that only ratchets down: a listed file with zero
violations reports its own entry as stale.

The rule resolves renamed destructures and chained requires rather than
matching literal callee names -- both forms exist in the suite today and a
name-only matcher leaves them permanently invisible. It resolves an options
object held in a single-write const, which is what keeps process-seam.cjs,
the bounded reference implementation, from flagging itself.

timeout: 0 and anything above the 600000ms ceiling are rejected as only
nominally bounded.

Adds tests/helpers/git-fixture.cjs so a migrated execSync call site keeps
its throw-on-non-zero contract; process-seam.cjs is unchanged.

* test(#3143): prove the allowlist guards can actually fail

Extracts the D4/D6/D7/D8 checks into pure helpers and drives each against a
synthetic fixture carrying an injected violation. Without this the suite only
proved that today's clean data passes, which a deleted check would also
satisfy.

* fix(#3143): close two ceiling and alias escapes found in review

Nested arithmetic bypassed the ceiling entirely: the numeric evaluator only
resolved a flat literal, so `timeout: 60 * 60 * 1000` (3600000ms, six times
the ceiling) fell through to trusted and reported nothing. The evaluator now
recurses through arithmetic and unary signs with a depth cap.

Alias resolution was traversal-order dependent, not scope dependent: a call
textually above its own require destructure saw an empty alias map and
reported clean. The map is now built in a Program pre-pass.

Also: an explicit timeoutMs:undefined no longer overwrites the git fixture
default via spread, adds the missing seam-routed rule test, and de-duplicates
the repeated try/catch in the fixture tests.

---------

Co-authored-by: sim <sim@local>
2026-08-07 09:43:36 -04:00

142 lines
5.6 KiB
JSON

[
"tests/adr-15-progress-converge.test.cjs",
"tests/agent-fragments-emission.install.test.cjs",
"tests/agent-install-validation.test.cjs",
"tests/agent-skills.test.cjs",
"tests/antigravity-upgrades.test.cjs",
"tests/augment-upgrades.test.cjs",
"tests/autonomous-converge.test.cjs",
"tests/bugs-1656-1657.test.cjs",
"tests/capability-cli.test.cjs",
"tests/capability-consent.test.cjs",
"tests/capability-ledger.test.cjs",
"tests/capability-lifecycle.test.cjs",
"tests/capability-loader.test.cjs",
"tests/capability-writer.test.cjs",
"tests/changeset-cli.test.cjs",
"tests/changeset-github-release-notes.test.cjs",
"tests/changeset-lint.test.cjs",
"tests/check-tdd-review-checkpoint-e2e.test.cjs",
"tests/check-ui-safety-gate.test.cjs",
"tests/check-update-config-dir.test.cjs",
"tests/ci-rebase-check.test.cjs",
"tests/ci-test-scope.test.cjs",
"tests/cli-exit.test.cjs",
"tests/close-phase-todos-padded-resolves.test.cjs",
"tests/code-review-pipeline-regression.test.cjs",
"tests/codex-config.test.cjs",
"tests/commands.test.cjs",
"tests/commit-docs-bypass.test.cjs",
"tests/commit-files-deletion.test.cjs",
"tests/commit-files-pathspec.test.cjs",
"tests/commonjs-marker.test.cjs",
"tests/config-get-default.test.cjs",
"tests/config-loader.test.cjs",
"tests/config.test.cjs",
"tests/configuration-migrate-config.test.cjs",
"tests/copilot-install.test.cjs",
"tests/declarative-reference-antigravity.test.cjs",
"tests/declarative-reference-augment.test.cjs",
"tests/declarative-reference-codebuddy.test.cjs",
"tests/declarative-reference-copilot.test.cjs",
"tests/declarative-reference-windsurf.test.cjs",
"tests/declarative-reference-zcode.test.cjs",
"tests/drift-detection.test.cjs",
"tests/edge-probe.test.cjs",
"tests/effort-sync-installed-runtime.test.cjs",
"tests/emitted-caps-gate.test.cjs",
"tests/emitted-sizes.test.cjs",
"tests/ensure-runtime-build.test.cjs",
"tests/execute-phase-worktree-guard.test.cjs",
"tests/execute-wave-post-gate-pipeline-e2e.test.cjs",
"tests/fix-2136-clock-local-today.test.cjs",
"tests/fix-2590-workflow-script-contract.test.cjs",
"tests/fix-2608-commit-staging-failure.test.cjs",
"tests/fix-2650-plan-phase-stall-detection.test.cjs",
"tests/fix-2657-untrack-compiled-artifacts.test.cjs",
"tests/fix-3045-cursor-subagent-isolation.test.cjs",
"tests/fix-3045-dispatch-isolation-resolver.test.cjs",
"tests/fixture-builder.test.cjs",
"tests/fixtures/index.cjs",
"tests/fragment-single-edit-propagation.install.test.cjs",
"tests/frontmatter-cli.test.cjs",
"tests/gemini-runtime-removed.test.cjs",
"tests/gen-registry.test.cjs",
"tests/git-base-branch.test.cjs",
"tests/golden-install-tree.test.cjs",
"tests/graphify-auto-update.slow.test.cjs",
"tests/graphify-visualization.test.cjs",
"tests/gsd-agent-isolation-guard.test.cjs",
"tests/gsd-statusline.test.cjs",
"tests/gsd-write-guard.property.test.cjs",
"tests/helpers.cjs",
"tests/helpers/graphify.cjs",
"tests/helpers/install-shared.cjs",
"tests/hooks-opt-in.test.cjs",
"tests/host-integration.test.cjs",
"tests/ingest-docs.test.cjs",
"tests/init.test.cjs",
"tests/install-minimal-hooks.test.cjs",
"tests/install-regressions.test.cjs",
"tests/install-write-confinement.test.cjs",
"tests/install.test.cjs",
"tests/installer-migration-install.integration.test.cjs",
"tests/installer-migrations.test.cjs",
"tests/io.test.cjs",
"tests/issue-2695-codex-hook-set.test.cjs",
"tests/issue-2765-brace-expansion-lockfile.test.cjs",
"tests/issue-498-update-context.test.cjs",
"tests/issue-787-cline-hooks-agents.test.cjs",
"tests/issue-844-manifest-version-sync.test.cjs",
"tests/kilo-upgrades.test.cjs",
"tests/kimi-agent-converter.test.cjs",
"tests/kimi-upgrades.test.cjs",
"tests/lint-docs-command-form.test.cjs",
"tests/lint-legacy-dir-name.test.cjs",
"tests/lint-pr-check-project-dir.test.cjs",
"tests/lint-regression-test-names.test.cjs",
"tests/lint-skill-deps.test.cjs",
"tests/lint-test-file-count.test.cjs",
"tests/loop-render-hooks.test.cjs",
"tests/managed-hooks.test.cjs",
"tests/mcp-catalog-parity.install.test.cjs",
"tests/mutation-matrix-ratchet.test.cjs",
"tests/new-milestone-clear-phases.test.cjs",
"tests/opencode-command-dir-plural.test.cjs",
"tests/opencode-plugin-adapter.test.cjs",
"tests/pause-work-improvements.test.cjs",
"tests/phase.test.cjs",
"tests/precommit-alias-drift-hook.test.cjs",
"tests/prepush-enterprise-email-hook.test.cjs",
"tests/process-seam.test.cjs",
"tests/prohibition-enforcement.test.cjs",
"tests/project-instruction-file-parity.test.cjs",
"tests/prune-orphaned-worktrees.test.cjs",
"tests/quick-branching.test.cjs",
"tests/reapply-verify-hunks.test.cjs",
"tests/release-hotfix-empty-cherry-pick.test.cjs",
"tests/repo-layout.test.cjs",
"tests/reviewer-docs-parity.test.cjs",
"tests/roadmap-upgrade.test.cjs",
"tests/run-tests-harness.test.cjs",
"tests/runtime-launcher-parity.test.cjs",
"tests/skill-frontmatter-contract.test.cjs",
"tests/slash-command-namespace.test.cjs",
"tests/smart-entry.unit.test.cjs",
"tests/spec-section.test.cjs",
"tests/state-rebuild-cli.test.cjs",
"tests/state.test.cjs",
"tests/tsconfig-noemit.test.cjs",
"tests/validate-registry.test.cjs",
"tests/verification-status.test.cjs",
"tests/verify.test.cjs",
"tests/windsurf-hooks-bridge.test.cjs",
"tests/workflow-fragments-emission.install.test.cjs",
"tests/workflow-guard.test.cjs",
"tests/workspace.test.cjs",
"tests/worktree-baseref-install.test.cjs",
"tests/worktree-cleanup.test.cjs",
"tests/worktree-safety.test.cjs",
"tests/worktree.test.cjs"
]