mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-07-07 13:08:54 -07:00
a4927a3bbd
- 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
63 lines
2.3 KiB
Markdown
63 lines
2.3 KiB
Markdown
<!-- read_when: choosing what tests/build steps to run before handoff -->
|
|
|
|
# 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
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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.
|