Releases: mycargus/quarantine
Releases · mycargus/quarantine
Release list
v0.1.0
Initial release. Flaky test detection and quarantine for CI pipelines.
CLI
quarantine init— auto-detects Jest, Vitest, and RSpec; creates.quarantine/config.ymlwith pre-filled suite entries; createsquarantine/statebranch; idempotent on re-runquarantine run [suite-name]— wraps test commands, parses JUnit XML, retries failures, manages quarantine state, creates GitHub Issues, posts PR comments, writes result artifactsquarantine status [suite-name]— shows quarantined test count, oldest tests, duration estimates from artifactsquarantine suite list— prints configured suites with name, command, and junitxml pathquarantine suite remove <name>— removes a suite from config with confirmation; preserves state branch historyquarantine doctor— validates.quarantine/config.ymland prints resolved configurationquarantine version— prints CLI version- Multi-suite support: each suite has independent state, issues, and PR comments
- Flaky detection via configurable retry (1-10 attempts, default 3)
- Quarantine state on
quarantine/statebranch with SHA-based compare-and-swap (conflict resolution: quarantine wins) - GitHub Issues with deterministic dedup labels (
quarantine:<suite>:<hash>) - Per-suite PR comments with
<!-- quarantine:<suite-name> -->markers - Per-suite result artifacts (
.quarantine/<suite>/results.json) - Pre-execution
quarantined-files.txtfor downstream consumers - Configurable per-suite timeout and rerun timeout with SIGTERM/SIGKILL graceful shutdown
- Command crash detection (non-zero exit + no JUnit XML) with diagnostic messages
- Unresolved test classification when reruns fail
- Degraded mode: falls back to cached state on GitHub API errors (401, 403, 5xx, 429, timeout) without breaking the build
--dry-run,--quiet,--pr <number>,--timeout <duration>flags--yes/-y,--retries,--junitxmlflags onquarantine initfor non-interactive use- TTY detection: warns when stdin is not a terminal and
--yesis absent - Structured logging with
[quarantine]prefix;QUARANTINE_DEBUGenv var for debug output - Parameterized test support: Jest
test.each, RSpec shared examples, Vitesttest.each - JUnit XML parsing for Jest (
jest-junit), RSpec (rspec_junit_formatter), and Vitest (built-in) - Cross-compiled binaries for linux/darwin (amd64/arm64)
- Install script (
scripts/install.sh) with SHA-256 checksum verification
Dashboard
- Remix 3 web UI with SQLite backend
- Org-wide overview: total quarantined tests across all configured repos
- Project detail pages with quarantined test list, issue links, and trend chart
- Date range filter and search by test name
- On-demand sync from GitHub Artifacts on page load (debounced, 5-minute cooldown)
- Artifact ingestion: parses result JSON, upserts test runs and quarantined tests
- Flaky count tracking and last-flaky-at timestamps
- Circuit breaker: pauses polling after 3 consecutive failures per repo (30-minute cooldown)
- ETag-based conditional requests to avoid re-downloading unchanged artifacts
- Graceful degradation: sync failures render page with existing data
- Manual repo configuration via
dashboard.yml
Infrastructure
- Two-phase release process: rc prerelease with E2E validation, then final release promotion
- Contract tests against vendored GitHub OpenAPI spec (Prism-based, offline)
- E2E tests that observe real fixture repo CI output (never run the binary or arrange state)
- Interface tests for CLI binary and dashboard HTTP routes
v0.1.0-rc3
Initial release. Flaky test detection and quarantine for CI pipelines.
CLI
quarantine init— auto-detects Jest, Vitest, and RSpec; creates.quarantine/config.ymlwith pre-filled suite entries; createsquarantine/statebranch; idempotent on re-runquarantine run [suite-name]— wraps test commands, parses JUnit XML, retries failures, manages quarantine state, creates GitHub Issues, posts PR comments, writes result artifactsquarantine status [suite-name]— shows quarantined test count, oldest tests, duration estimates from artifactsquarantine suite list— prints configured suites with name, command, and junitxml pathquarantine suite remove <name>— removes a suite from config with confirmation; preserves state branch historyquarantine doctor— validates.quarantine/config.ymland prints resolved configurationquarantine version— prints CLI version- Multi-suite support: each suite has independent state, issues, and PR comments
- Flaky detection via configurable retry (1-10 attempts, default 3)
- Quarantine state on
quarantine/statebranch with SHA-based compare-and-swap (conflict resolution: quarantine wins) - GitHub Issues with deterministic dedup labels (
quarantine:<suite>:<hash>) - Per-suite PR comments with
<!-- quarantine:<suite-name> -->markers - Per-suite result artifacts (
.quarantine/<suite>/results.json) - Pre-execution
quarantined-files.txtfor downstream consumers - Configurable per-suite timeout and rerun timeout with SIGTERM/SIGKILL graceful shutdown
- Command crash detection (non-zero exit + no JUnit XML) with diagnostic messages
- Unresolved test classification when reruns fail
- Degraded mode: falls back to cached state on GitHub API errors (401, 403, 5xx, 429, timeout) without breaking the build
--dry-run,--quiet,--pr <number>,--timeout <duration>flags--yes/-y,--retries,--junitxmlflags onquarantine initfor non-interactive use- TTY detection: warns when stdin is not a terminal and
--yesis absent - Structured logging with
[quarantine]prefix;QUARANTINE_DEBUGenv var for debug output - Parameterized test support: Jest
test.each, RSpec shared examples, Vitesttest.each - JUnit XML parsing for Jest (
jest-junit), RSpec (rspec_junit_formatter), and Vitest (built-in) - Cross-compiled binaries for linux/darwin (amd64/arm64)
- Install script (
scripts/install.sh) with SHA-256 checksum verification
Dashboard
- Remix 3 web UI with SQLite backend
- Org-wide overview: total quarantined tests across all configured repos
- Project detail pages with quarantined test list, issue links, and trend chart
- Date range filter and search by test name
- On-demand sync from GitHub Artifacts on page load (debounced, 5-minute cooldown)
- Artifact ingestion: parses result JSON, upserts test runs and quarantined tests
- Flaky count tracking and last-flaky-at timestamps
- Circuit breaker: pauses polling after 3 consecutive failures per repo (30-minute cooldown)
- ETag-based conditional requests to avoid re-downloading unchanged artifacts
- Graceful degradation: sync failures render page with existing data
- Manual repo configuration via
dashboard.yml
Infrastructure
- Two-phase release process: rc prerelease with E2E validation, then final release promotion
- Contract tests against vendored GitHub OpenAPI spec (Prism-based, offline)
- E2E tests that observe real fixture repo CI output (never run the binary or arrange state)
- Interface tests for CLI binary and dashboard HTTP routes
v0.1.0-rc2
Initial release. Flaky test detection and quarantine for CI pipelines.
CLI
quarantine init— auto-detects Jest, Vitest, and RSpec; creates.quarantine/config.ymlwith pre-filled suite entries; createsquarantine/statebranch; idempotent on re-runquarantine run [suite-name]— wraps test commands, parses JUnit XML, retries failures, manages quarantine state, creates GitHub Issues, posts PR comments, writes result artifactsquarantine status [suite-name]— shows quarantined test count, oldest tests, duration estimates from artifactsquarantine suite list— prints configured suites with name, command, and junitxml pathquarantine suite remove <name>— removes a suite from config with confirmation; preserves state branch historyquarantine doctor— validates.quarantine/config.ymland prints resolved configurationquarantine version— prints CLI version- Multi-suite support: each suite has independent state, issues, and PR comments
- Flaky detection via configurable retry (1-10 attempts, default 3)
- Quarantine state on
quarantine/statebranch with SHA-based compare-and-swap (conflict resolution: quarantine wins) - GitHub Issues with deterministic dedup labels (
quarantine:<suite>:<hash>) - Per-suite PR comments with
<!-- quarantine:<suite-name> -->markers - Per-suite result artifacts (
.quarantine/<suite>/results.json) - Pre-execution
quarantined-files.txtfor downstream consumers - Configurable per-suite timeout and rerun timeout with SIGTERM/SIGKILL graceful shutdown
- Command crash detection (non-zero exit + no JUnit XML) with diagnostic messages
- Unresolved test classification when reruns fail
- Degraded mode: falls back to cached state on GitHub API errors (401, 403, 5xx, 429, timeout) without breaking the build
--dry-run,--quiet,--pr <number>,--timeout <duration>flags--yes/-y,--retries,--junitxmlflags onquarantine initfor non-interactive use- TTY detection: warns when stdin is not a terminal and
--yesis absent - Structured logging with
[quarantine]prefix;QUARANTINE_DEBUGenv var for debug output - Parameterized test support: Jest
test.each, RSpec shared examples, Vitesttest.each - JUnit XML parsing for Jest (
jest-junit), RSpec (rspec_junit_formatter), and Vitest (built-in) - Cross-compiled binaries for linux/darwin (amd64/arm64)
- Install script (
scripts/install.sh) with SHA-256 checksum verification
Dashboard
- Remix 3 web UI with SQLite backend
- Org-wide overview: total quarantined tests across all configured repos
- Project detail pages with quarantined test list, issue links, and trend chart
- Date range filter and search by test name
- On-demand sync from GitHub Artifacts on page load (debounced, 5-minute cooldown)
- Artifact ingestion: parses result JSON, upserts test runs and quarantined tests
- Flaky count tracking and last-flaky-at timestamps
- Circuit breaker: pauses polling after 3 consecutive failures per repo (30-minute cooldown)
- ETag-based conditional requests to avoid re-downloading unchanged artifacts
- Graceful degradation: sync failures render page with existing data
- Manual repo configuration via
dashboard.yml
Infrastructure
- Two-phase release process: rc prerelease with E2E validation, then final release promotion
- Contract tests against vendored GitHub OpenAPI spec (Prism-based, offline)
- E2E tests that observe real fixture repo CI output (never run the binary or arrange state)
- Interface tests for CLI binary and dashboard HTTP routes
v0.1.0-rc1
Initial release. Flaky test detection and quarantine for CI pipelines.
CLI
quarantine init— auto-detects Jest, Vitest, and RSpec; creates.quarantine/config.ymlwith pre-filled suite entries; createsquarantine/statebranch; idempotent on re-runquarantine run [suite-name]— wraps test commands, parses JUnit XML, retries failures, manages quarantine state, creates GitHub Issues, posts PR comments, writes result artifactsquarantine status [suite-name]— shows quarantined test count, oldest tests, duration estimates from artifactsquarantine suite list— prints configured suites with name, command, and junitxml pathquarantine suite remove <name>— removes a suite from config with confirmation; preserves state branch historyquarantine doctor— validates.quarantine/config.ymland prints resolved configurationquarantine version— prints CLI version- Multi-suite support: each suite has independent state, issues, and PR comments
- Flaky detection via configurable retry (1-10 attempts, default 3)
- Quarantine state on
quarantine/statebranch with SHA-based compare-and-swap (conflict resolution: quarantine wins) - GitHub Issues with deterministic dedup labels (
quarantine:<suite>:<hash>) - Per-suite PR comments with
<!-- quarantine:<suite-name> -->markers - Per-suite result artifacts (
.quarantine/<suite>/results.json) - Pre-execution
quarantined-files.txtfor downstream consumers - Configurable per-suite timeout and rerun timeout with SIGTERM/SIGKILL graceful shutdown
- Command crash detection (non-zero exit + no JUnit XML) with diagnostic messages
- Unresolved test classification when reruns fail
- Degraded mode: falls back to cached state on GitHub API errors (401, 403, 5xx, 429, timeout) without breaking the build
--dry-run,--quiet,--pr <number>,--timeout <duration>flags--yes/-y,--retries,--junitxmlflags onquarantine initfor non-interactive use- TTY detection: warns when stdin is not a terminal and
--yesis absent - Structured logging with
[quarantine]prefix;QUARANTINE_DEBUGenv var for debug output - Parameterized test support: Jest
test.each, RSpec shared examples, Vitesttest.each - JUnit XML parsing for Jest (
jest-junit), RSpec (rspec_junit_formatter), and Vitest (built-in) - Cross-compiled binaries for linux/darwin (amd64/arm64)
- Install script (
scripts/install.sh) with SHA-256 checksum verification
Dashboard
- Remix 3 web UI with SQLite backend
- Org-wide overview: total quarantined tests across all configured repos
- Project detail pages with quarantined test list, issue links, and trend chart
- Date range filter and search by test name
- On-demand sync from GitHub Artifacts on page load (debounced, 5-minute cooldown)
- Artifact ingestion: parses result JSON, upserts test runs and quarantined tests
- Flaky count tracking and last-flaky-at timestamps
- Circuit breaker: pauses polling after 3 consecutive failures per repo (30-minute cooldown)
- ETag-based conditional requests to avoid re-downloading unchanged artifacts
- Graceful degradation: sync failures render page with existing data
- Manual repo configuration via
dashboard.yml
Infrastructure
- Two-phase release process: rc prerelease with E2E validation, then final release promotion
- Contract tests against vendored GitHub OpenAPI spec (Prism-based, offline)
- E2E tests that observe real fixture repo CI output (never run the binary or arrange state)
- Interface tests for CLI binary and dashboard HTTP routes