5.0.0-beta.2 · Published beta · 13f4954c. Published on npm. Match your installed version.
MaintainersSource and release profile#
Marionette keeps its contributor and release toolchain reproducible without narrowing
the runtime contract for package consumers. The machine-readable authority is
config/release-profile.json.
The current source profile uses Node 24.19.0 and npm 11.17.0. .nvmrc, the
packageManager declaration, CI, and npm run check:release-profile must agree with
that file. The public package continues to support the Node range declared in
engines; the exact source profile identifies the environment used to build and
verify a release.
Contributor setup#
With nvm installed:
nvm install
nvm use
npm run check:release-profile
npm ci
npm run check:browser-profile
The Node release pinned here includes the pinned npm version. If another version of npm is earlier on your path, select npm 11.17.0 before installing dependencies.
npm 11.17 records reviewed dependency installers in each package's top-level
allowScripts map. The repository enables strict-allow-scripts in .npmrc, so
installing a package whose scripts have not been reviewed fails instead of silently
executing them. Use npm approve-scripts --allow-scripts-pending to inspect pending
packages, review the exact package and version, and then use
npm approve-scripts <package> to add a version-pinned approval. Isolated fixture
packages keep their own approvals.
PR CI runs the complete suite on the canonical Ubuntu 24.04 x64 host and clean
installation and packed-package fixtures on macOS 15 arm64. The full Windows 2025
x64 package-fixture suite runs after merge on pushes to master, and remains a
required gate for release artifacts. Windows failures therefore surface after
merge without delaying routine PRs. Release dry runs on PRs test macOS; manually
dispatched release validation tests both macOS and Windows against the exact
candidate tarballs before publication.
GitHub's fixed OS labels still receive runner-image updates, so release evidence records the actual image reported by each run. Hosted-runner timings remain informative rather than hard performance gates.
Browser profiles#
Browser behavior and transpilation use separate pinned profiles. The
real-browser contract lane uses @playwright/test 1.63.0 with Chromium
153.0.8010.12 revision 1243, Firefox 155.0 revision 1543, and WebKit 26.6 revision
2359. These are the builds published for the Playwright 1.63
release. Playwright WebKit is
the compatibility engine; it is not evidence that branded Safari ran in CI.
npm run test:browser runs named Playwright projects for all three engines. CI
installs their pinned binaries and retains results, reports, and failure traces.
Release validation supplies the exact candidate tarballs to this same suite.
A local npm ci installs the dependency but does not download browser binaries;
install them with Playwright before running browser checks locally.
npm run check:browser-profile compares the installed Playwright manifest with
config/release-profile.json.
The package and release profile use the semantic Browserslist query baseline widely available. This is the minimum capability floor for transpilation, not a fixed list
of supported browser versions or an upper limit on newer releases. The browser-profile
check requires that exact query and verifies that it resolves successfully.
The checked-in lockfile fixes the Browserslist data used by each commit, so clean installs reproduce that commit's resolved targets and build artifacts. Reviewed lockfile updates may advance the resolved target list without changing the public support contract. Resolved versions are build evidence, not manually maintained browser-support ceilings.
Advancing the profile#
Profile changes use a dedicated pull request that updates every pin together and passes the PR checks before merge. Post-merge Windows validation and complete release-artifact validation must pass before the new profile is released.
- Review Node and npm patches monthly. Allow a seven-day upstream soak unless a security fix requires immediate adoption.
- Exercise a new Node major as a nonblocking lane while it is Current. Make it blocking only after it becomes LTS and completes a 30-day project soak. Raising Marionette's minimum supported Node major is a separate major-release decision.
- Introduce a replacement host image in parallel before making it canonical. Never
use a moving
*-latestlabel for release evidence. - Review Playwright browser builds and Browserslist data monthly. Update the dependency, lockfile, and browser-build manifest in one reviewed pull request; changing the semantic transpilation query is a separate support-policy decision, and browser tests remain a separate contract lane.
- Freeze the profile for a release candidate. An emergency profile change reruns all release evidence.
Documentation publication is defined separately and must not silently change the source, host, or browser pins.
Package publication uses the separate immutable release-promotion contract. That workflow records this profile's Git blob revision and SHA-512 in the verified artifact. Changing the profile after a candidate is built requires rebuilding and rerunning the complete release evidence; publication jobs reject an artifact whose recorded profile differs from the checked-out source commit.