@blueforge-studio/test-resume

Runner-agnostic crash-safe resume for test runs: append-only ledger, fingerprint, planner, interrupted-vs-failed classifier, exit codes

Package Info

Latest Version0.2.0
LicenseMIT
Keywords-
Repositorygit+https://github.com/blueforge-studio/blueforge-org.git
Author-
Homepagehttps://github.com/blueforge-studio/blueforge-org#readme
Bugs[object Object]

Versions

VersionPublished
0.2.02026-10-16
0.1.02026-10-16

Per-version supply chain

VersionSigSBOMAtt
0.2.0
0.1.0

Click a version to view its details.

Supply chain

Provenance

Published by
web:5
When
2026-10-16T12:34:17Z
sha256 (registry-computed)
9f600c48a423aeb642791103d07964bccaff98d6c49ffa1be57d1c7136663898

Observed by the registry at publish.

Claimed by the build

The publisher claimed nothing about its build.

Attachments

Signature
none
SBOM
none

Dependencies

Loading dependency graph...

README

@blueforge-studio/test-resume

Runner-agnostic crash-safe resume for test runs. No Playwright or vitest imports, no dependencies beyond node:.

  • Ledger: append-only JSONL, last record per unit wins, torn trailing line ignored, started records so a unit with no result after a crash reads as interrupted.
  • Fingerprint: run-level key (fingerprintOf), per-unit input hash (hashFile), optional coarse gitKey.
  • Planner: planUnits({ listing, state, failedOnly, hashOf }) returns what to run, carry or discard.
  • Classifier: classifyOutcome separates a failing test from a run cut out from under it (vanished cwd, EIO, signal kill).
  • Exit codes: exitCodeFor returns 0 passed, 1 failed, 75 interrupted or not run (rerun to resume), 130 signal.

A unit is whatever the runner schedules: a test, a spec file, a package. Keys are opaque strings.

Status file and app-dev-db

  • snapshotStatus + writeStatusFile: a live status.json (state, counts, running units, remaining) derived from the ledger and written tmp+rename, for dashboards and humans to poll.
  • testRunReading: turns a finished run into test.run flags for scripts/push-devdb-reading.mjs (app-dev-db producer contract v0.5). An interrupted run, or one with unrun units, returns push: false: a reading is a finished measurement, and the resumed run pushes the complete one. No HTTP here; the producer script owns the envelope, retries and secrets.