Files
SubMiner/docs/workflow/verification.md
T
sudacode a4927a3bbd refactor(tests): centralize lane definitions and add per-file isolation
- extract test lane config to scripts/test-lanes.ts (single source of truth)
- run-test-lane.mjs: per-file bun process isolation with wall timeout; --jobs N, --single-process flags
- drop hand-listed test file lists from package.json; lanes now discovered by directory
- add test:stats (stats/src) and test:scripts (scripts/**) lanes; wire both into CI
- test:fast now: test:src + launcher-unit + test:scripts + test:runtime:compat
- remove obsolete test:full, test:core, test:core:dist, test:config:dist scripts
2026-07-07 00:17:43 -07:00

2.3 KiB

Verification

Status: active
Last verified: 2026-07-06
Owner: Kyle Yasuda
Read when: selecting the right verification lane for a change

Lane Infrastructure

  • Lane membership is defined once in scripts/test-lanes.ts and discovered by directory — new test files join their lane automatically; never hand-list test files in package.json.
  • scripts/run-test-lane.mjs runs each test file in its own bun test process (per-file isolation with a wall timeout) so a hanging test or leaked global in one file cannot cascade into the rest of the lane. --jobs N parallelizes; --single-process restores the shared-process mode for debugging.
  • bun run test:fast is the full source gate: discovered src/**, launcher unit, scripts/**, and the compiled runtime-compat slice.

Default Handoff Gate

bun run typecheck
bun run test:fast
bun run test:env
bun run build
bun run test:smoke:dist

If docs-site/ changed, also run:

bun run docs:test
bun run docs:build

Cheap-First Lane Selection

  • Docs-only boundary/content changes: bun run docs:test, bun run docs:build
  • Internal KB / AGENTS.md changes: bun run test:docs:kb
  • Config/schema/defaults: bun run test:config, then bun run generate:config-example if template/defaults changed
  • Launcher/plugin: bun run test:launcher or bun run test:env
  • Runtime-compat / compiled behavior: bun run test:runtime:compat
  • Stats dashboard UI: bun run test:stats
  • Build/release scripts (scripts/**): bun run test:scripts
  • Coverage for the maintained source lane: bun run test:coverage:src
  • Deep/local full gate: default handoff gate above

Coverage Reporting

  • bun run test:coverage:src runs the maintained test:src lane through a sharded coverage runner: one Bun coverage process per test file, then merged LCOV output.
  • Machine-readable output lands at coverage/test-src/lcov.info.
  • CI and release quality-gate runs upload that LCOV file as the coverage-test-src artifact.

Rules

  • Capture exact failing command and error when verification breaks.
  • Prefer the cheapest sufficient lane first.
  • Escalate when the change crosses boundaries or touches release-sensitive behavior.
  • Never hand-edit dist/launcher/subminer; validate it through build/test flow instead.