REQ-166 is verified on Windows and folded into plugin version 0.16.47.

The failing regression proved the verification executor passed the bare `npm`
token to `subprocess.run`, while `shutil.which("npm")` resolved the runnable
`npm.CMD` path. The implementation now resolves every allowlisted executable
before launch and returns a bounded verification error when resolution fails.

The full-suite guard failure found during verification was a test-isolation
defect, not a guard defect: the test read this checkout's live dirty and staged
state while unconditionally expecting an allowed run. Its fixture now creates a
temporary Git repository and an explicit core-path change.

Verification:

- `python -m unittest tests.test_test_scope_execution -q` — 4 passed.
- `python -m unittest tests.test_test_scope tests.test_test_scope_execution tests.test_prd_workflows -q` — 28 passed.
- `python -m unittest tests.test_test_scope_guard -q` — 23 passed.
- `python scripts/prd_test_scope.py --repo-root . --execute` — full strategy,
  `npm test` exit 0, 1,192 tests passed in 414.160 seconds.
- Focused release, gap, manifest, local-workflow, and installer modules — 125
  passed.
- `python scripts/local_workflow_check.py --target-version 0.16.47 --skip-tests`
  — completed after reusing the fresh full-suite receipt.

Limitations: Substrate is configured off, so impact-scoped verification widened
to the local full suite. No remote push, tag, npm publication, or downstream
repository mutation was performed.
