Parallel npm audits

Three independent npm audits dominated doctor wall time; running them concurrently cut the median by 52.6%.

Hypothesis

The external-tools phase is slow because three independent npm audit subprocesses run serially. Parallelizing only those network-bound subprocesses should reduce wall time without changing output order or check semantics.

Baseline

Ten clean Bunsen runs completed in 25.30 seconds median. A line-timestamp trace localized 20.14 seconds to External Tools. The three audit gaps were 6.55, 6.77, and 6.98 seconds.

Candidate

A bounded ThreadPoolExecutor runs at most four audit jobs concurrently and collects futures in declaration order. Output remains deterministic.

Baseline25.30 s
Candidate11.99 s

Result

  • 10/10 measured candidate runs passed.
  • Candidate median: 11.99 seconds.
  • Improvement: 52.6%.
  • Three concurrency/order tests passed; Ruff passed.
  • The full tests/hermes_cli run was stopped after 2h27m at 83%. It was already red and had made no log progress for more than five minutes while repeatedly spawning agent-browser --version. The partial log is retained under SHA-256 150f9e5171350077e3f140f8515961da147837b5012466b30f5f717ac6268fbc.
  • The candidate remains HOLD and is not installed on Herman. Promotion requires a fresh, bounded CI-equivalent run that terminates green.

Falsifier

Reject this candidate if a clean full-suite run shows output-order changes, missed audit results, or new subprocess failures attributable to the parallel block.