Repository navigation
Releases: Quality-Max/9lives-runner
Release list
9lives 0.4.7
CLI and @9l/playwright 0.4.7 are released together.
SDK
- No runtime changes;
@9l/playwright0.4.7 is released with CLI 0.4.7.
Assess
Policy assessment-source-v13; the analyzer helper version is 10 and report
version 3 is unchanged.
- Parse
.js,.mjs,.cjsand.jsxspecs as Playwright loads them:
JavaScript with JSX and no TypeScript transform. Type annotations,as,
interface,enum,import type, non-null!and other TypeScript-only
syntax in such a file now fail with the newtypescript-in-javascript
diagnostic (exit 2, or the file'serrorin a suite) instead of a clean
report for a spec Playwright refuses to load. TypeScript specs and sources
with no known extension still parse as TSX. The check builds a program over
the single in-memory file; no library, module or type root is resolved.
CLI
9l run,9l resultand the MCPrun_testtool tell an unexpected pass
apart from a broken test. Atest.fail()test that passed is still a
failure, but it is listed with⚠, the messageExpected to fail, but passed.and, in the receipt'sfailures, Playwright'sexpectedStatus
and the last attempt'sstatus; the receipt'svalidationtext counts
such tests. Previously it was a bare✗with no error text.- Failure diagnostics come from each test's final completed attempt only. A
test.fail()test that timed out and then passed on retry no longer
inherits the earlier attempt's error, failing line or attachments. The
failure context passed to healing and returned byrun_testdrops tests
with an expected, skipped or flaky outcome and keeps top-level errors such
as a failed global teardown, so an expected failure's error is no longer
attributed to the run. 9l proveand9l confirmreport why a spec cannot run, such as a missing
@9l/playwrightbuild, instead ofprove requires exactly one spec file
ornot a Playwright spec this runner can execute. The help text states
that both need@9l/playwrightand thatprovereaches only fetch and XHR
requests made through itspageorcontextfixtures.- Receipt, run-result and run-status contracts gain the optional
expectedStatusandstatusfields on each failure (additive).
Website and documentation
- Link the 60-second launch film from the homepage and GitHub overview.
Install the SDK in your Playwright project:
npm install --save-dev @9l/playwright@0.4.7Download the CLI archive for your operating system and architecture below, and verify it against SHA256SUMS. See the installation guide.
Full changelog: v0.4.6...v0.4.7
v0.4.6
9lives 0.4.6 releases the Go CLI and @9l/playwright together. CLI and SDK runtime behavior is unchanged in this patch; the release adds execution qualification and updates the public demo and documentation.
What changed
- Challenge wrong-record tests: a deterministic fixture has two records with identical Edit labels. Six
9l runexecutions show a weak visibility check missing a wrong-record defect, an exact record-ID assertion catching it, stable targeting after row reordering, and a deliberately wrong expected-ID canary failing at its assertion. This qualifies the fixture and assertions; it does not add automatic locator healing. Qualification details. - Stabilize the heartbeat deadline test on loaded CI runners using explicit executor synchronization and observed heartbeat updates.
- Align the homepage and GitHub overview with the recorded agent demo, confirmation receipts and controlled faults. Add QualityMax branding, light/dark themes, a Memes gallery, consent-gated analytics and restore npm links/downloads.
Install
The CLI and SDK are separate distributions. Download a native CLI archive below and verify it with SHA256SUMS; each archive includes legal notices. The optional SDK is available on npm:
npm install --save-dev @9l/playwright@0.4.6Your project supplies Playwright and its browsers. See the installation guide and changelog.
Full comparison: v0.4.5...v0.4.6
v0.4.5
What's Changed
- Move the 9lives.run website and installer into the runner repository by @Desperado in #117
- Run the QualityMax grader from the QA skill as a separate hygiene pass by @Desperado in #118
- Report debugging leftovers and fragile selectors in 9l assess by @Desperado in #119
- Prepare CLI and SDK 0.4.5; remove noisy unnamed-role advisory by @Desperado in #120
- Publish interactive 9l demo with real Codex evidence and QualityMax themes by @Desperado in #121
- Brand homepage meme pendants and fix demo Open Graph preview by @Desperado in #122
Full Changelog: v0.4.0...v0.4.5
v0.4.0
What's Changed
- Add Demo Bank healing replay and visible 9lives feature tour by @Desperado in #74
- Make Demo Bank GIF readable with larger text and a reproducible walkthrough by @Desperado in #75
- Bring qmax-mcp page checks into 9l: scan, inspect and three MCP tools by @Desperado in #99
- Release CLI and npm SDK 0.4.0 by @Desperado in #109
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
- Run SDK goals on agent subscriptions; choose config and projects by @Desperado in #67
- Redact authorization values and sanitize failure context everywhere by @Desperado in #68
- Carry test annotations into receipts and the run summary by @Desperado in #71
- Credit outcome mapping only from enabled tests of the same requirement by @Desperado in #69
- Tell apart goal controls that share role and label, or stop by @Desperado in #72
- Release CLI and npm SDK 0.3.0 by @Desperado in #73
Full Changelog: v0.2.5...v0.3.0
v0.2.5
What's Changed
- Refresh the npm version badge after releases by @Desperado in #62
- Update the explainer page for v0.2.0 by @Desperado in #63
- Heal on agent subscriptions, repair getBy drift, report failed tests by @Desperado in #64
- Name a missing provider CLI, cut healing text on rune boundaries by @Desperado in #65
- Release CLI and npm SDK 0.2.5 by @Desperado in #66
Full Changelog: v0.2.0...v0.2.5
v0.2.0
What's Changed
- Add Windows CLI binaries and clarify qmax-code comparison by @Desperado in #37
- Fix assess and run issues from the CLI 0.1.5 trial; make 9l heal and 9l mcp native by @Desperado in #41
- Add a finding-triage workflow to the 9lives QA skill by @Desperado in #51
- Release @9l/playwright 0.1.2 by @Desperado in #54
- Let prove inject auth-rejection, rate-limit and malformed-JSON faults by @Desperado in #52
- Add 9l confirm: does a reproduction fail before a fix and pass after it? by @Desperado in #53
- Release CLI 0.2.0 and SDK 0.1.3 by @Desperado in #55
- Update remaining docs for CLI 0.2.0 and SDK 0.1.3 by @Desperado in #57
- Reject inputs validators accepted too generously (#50) by @Desperado in #56
- Push the SDK release tag only once npm serves the version by @Desperado in #58
- Stop the Windows goal listener deadlocking on Close by @Desperado in #59
- Release the CLI and SDK together: one version, one tag, one workflow by @Desperado in #60
- Release the CLI and SDK from one workflow run by @Desperado in #61
Full Changelog: v0.1.5...v0.2.0
9lives Go CLI 0.1.5
9lives Go CLI 0.1.5 is available for macOS and Linux on amd64 and arm64.
Changes since 0.1.1
- Host contract:
9l runreturns 0 for passed, 1 for validated test failure, 2 for usage/setup errors and 3 for incomplete execution. Run results and status are versioned;9l version --format jsonidentifies the implementation and contract versions. Eight published JSON Schemas are independently validated in CI. - Goal failures: a failed or caught goal in one test cannot hide a sibling test's independent failure. Setup errors no longer emit a result or a startup/cancel hint.
- Experimental
9l prove: replay a passing spec under bounded fetch/XHR network faults, classify each reached test from its own evidence, and record caught, survived and inconclusive results. Retries and incomplete evidence cannot establish a survivor. Qualified with real Chromium against the synthetic shop fixture; this is not a general semantic-coverage claim. - Headed mode:
9l run --headedopens the browser and defaults to one job at a time.
Compatibility
Scripts that compare failure with exit code 1 must also handle exit 3 for incomplete execution. The existing complete field keeps its semantics. The npm SDK is a separate distribution: use @9l/playwright@0.1.1; installing it does not install the CLI. prove requires that SDK version or newer. Windows remains unqualified; macOS archives are not notarized.
Download and verify
Select the archive for your operating system and architecture, verify it against SHA256SUMS, then keep the bundled LICENSE and NOTICE. See the installation guide and machine-readable contract.
The release workflow runs full CI qualification, builds and exercises every executable on its native runner, validates archive members and legal files, and publishes four archives plus SHA256SUMS.
v0.1.1
What's Changed
- Point install docs at the published SDK 0.1.0 by @Desperado in #18
- Add the field report as an independent review and a README demo by @Desperado in #25
- Cut assess false alarms on promise chains, nested arrows and shared helpers by @Desperado in #24
- Prepare CLI release 0.1.1 and qualify Playwright 1.61.1–1.64.0 by @Desperado in #26
Full Changelog: v0.1.0...v0.1.1
v0.1.0
9l CLI 0.1.0
9l assess changes from an external trial on an 87-file Playwright suite.
--requirementsis optional. Code-level checks run without a contract;
requirement mapping is reported as not run. An empty value is a usage
error (#5).- Suites: several specs, a directory or a quoted pattern (
**supported)
give one combined report with per-file reports or error codes and a suite
summary. A file that cannot be assessed does not stop the others; the
command then exits 2. At most half the CPUs analyze at once, and a file
whose analyzer timed out is retried once on its own (#6). - Helpers: same-file helper functions are resolved, attributing their
assertions, waits and limits to the calling test.// @9l-assertion-helper
on a function or import declaration counts calls as reviewed assertions.
Imports into other files are not followed yet (#4). - Skip guards: file- and
describe-leveltest.skip(condition, reason)/
test.fixmemodifiers are no longer parsed as tests. Unconditional ones
givedisabled-test; conditional and after-hook ones give informational
conditional-skip; conditions readingprocess.envgive suspected
environment-skip. Calls that could be declarations, such as
test.skip(name, run), stay disabled tests (#7). - New finding
absence-after-wait(suspected) when the first assertion after
a fixed wait only checks that something is absent or did not happen (#8). - Unawaited
resolves/rejectsmatchers are flagged; unawaited matchers
outside the pinned Playwright API give anunknown-matcherlimit. - Every finding carries
code(#10). Text output omits empty fields, ends with
a per-rule summary and shows literal test titles with opt-in--titles(#11). - Report version 3, policy
assessment-source-v6. Consumers must accept the
informationalclassification, the new rules and limit code, an absent
requirementsSHA256and an optional testtitle.
Install
Download the archive for your platform and SHA256SUMS, verify, and put 9l on your PATH; see the installation guide. Example for Apple Silicon:
BUNDLE=9l-darwin-arm64
gh release download v0.1.0 --repo Quality-Max/9lives-runner --pattern "$BUNDLE.tar.gz" --pattern SHA256SUMS
awk -v archive="$BUNDLE.tar.gz" '$2 == archive' SHA256SUMS > selected.sha256
shasum -a 256 -c selected.sha256 # sha256sum -c on Linux
tar -xzf "$BUNDLE.tar.gz" && ./$BUNDLE/9l --version| Platform | Archive |
|---|---|
| macOS, Apple Silicon | 9l-darwin-arm64.tar.gz |
| macOS, Intel | 9l-darwin-amd64.tar.gz |
| Linux, x86-64 | 9l-linux-amd64.tar.gz |
| Linux, ARM64 | 9l-linux-arm64.tar.gz |
9l assess needs Node 22 or newer; the TypeScript parser is bundled. macOS archives are not Apple notarized.
Compatibility
Assessment reports are version 3, policy assessment-source-v6. Consumers of the JSON report must accept the informational classification, the conditional-skip, environment-skip and absence-after-wait rules, the unknown-matcher limit code, an absent requirementsSHA256 and an optional test title. The new suite report (several specs, a directory or a pattern) is a separate format, version 1. A single spec still produces the single-file report.
Assessment is advisory and source-only: it does not run tests, and its findings do not establish assertion coverage.
Verification
Before publication the release workflow ran the complete CI suite on the tagged commit (48f9cf3). It then built each archive on its own native macOS or Linux amd64/arm64 runner and ran --version, --help and a fixture plan there. After publication, the macOS arm64 archive was downloaded and its checksum verified. It reported 9l 0.1.0 (Go runner), and the SDK checkout demo ran with it to completion (1 passed, 0 failed).
SDK
@9l/playwright 0.1.0 (tag sdk-v0.1.0) is published on npm with provenance. Its peer range @playwright/test >=1.61.1 <2 lets projects on later Playwright 1.x releases install it; 1.61.1 remains the only qualified version. The npm tarball is byte-identical to the one CI qualified, and it installs with @playwright/test 1.61.1 and 1.64.0.
npm install --save-dev @9l/playwright@0.1.0 @playwright/test@1.61.1What's Changed
- Add a static explainer page and publish it with GitHub Pages by @Desperado in #2
- Stabilize SDK deadline smoke and identify failing cases by @Desperado in #3
- Make assess usable on existing suites without a contract by @Desperado in #12
- Flag environment-dependent skips and matchers of unknown timing by @Desperado in #16
- Flag absence assertions that directly follow a fixed wait by @Desperado in #13
- Assess a directory, pattern or several specs in one report by @Desperado in #14
- Resolve same-file assertion helpers and accept marked helpers by @Desperado in #15
- Prepare CLI and SDK release 0.1.0 by @Desperado in #17
Full Changelog: v0.0.0...v0.1.0