Release Readiness
Current status — 26 September 2026
3.0.0-alpha.15 is published (26 September 2026, 14:57 UTC) on npm's alpha and latest dist-tags, from 989924e3 (#655), tag v3.0.0-alpha.15. npm shasum 1ce3e0700611e9ab87914ae489bc9585246e1b1e equals the local pack's; 3,260 files, 16.5 MB. 3.0.0-alpha.14 was cut in CHANGELOG.md and package.json on 18 September but never published or tagged (an earlier version of this page wrongly called it published); its changes ship in alpha.15.
Gates on the release commit, in a clean worktree: check:release-readiness-lite passed; check:docs-site passed; the pack inventory held no credentials, browser profile, venv, workspace or media; a fresh-directory tarball install ran vclaw schema --json (199 commands), a temp-project init + status, and providers. Full suite: 5,577 tests, 0 failures — the first run showed 52 failures, all rap-avatar and one Seedance-engine test, because that worktree was made with a bare git worktree add and lacked the free engine's .venv/.cloak-profile links; with them linked the 745 rap-avatar and 7 engine tests passed, and CI's four full shards had already passed on the identical tree (#655). Published with --ignore-scripts after that run (npm 2FA needs the publisher's own terminal); verified from the registry with npx -p videoclaw@3.0.0-alpha.15 vclaw schema --json and npx -p videoclaw@latest vclaw video providers.
The Node suite was measured green on 23 September at the branch head merged as 3cafa920: 5,542 tests, 5,542 passed, zero failed, zero skipped — three independent full runs that day agreed (the seedance-modelark fps branch before and after merging main, and the mograph branch). That is npm test, not the full check:release-readiness-lite gate, so it is a test-count measurement rather than a release-gate pass; run the gate before cutting alpha.15.
Certified live since the last status: seedance-modelark (BytePlus ModelArk, Seedance 2.5) on 2026-09-21 and again 2026-09-22 — 87,300 tokens = USD 0.934 for 4 s at 720p, with extend mode certified at USD 1.106 and both open reference-video rules settled on 2026-09-23 (a 1080p reference and 23.976 fps are accepted); evidence in docs/audits/2026-09-21-live-acceptance.md, 2026-09-22-live-acceptance.md and 2026-09-23-live-acceptance.md. reapi-seedance is certified on BOTH credential paths (treg 2026-09-21, direct 2026-09-22): each a 480p 4 s job billed 475 credits = USD 0.475, the charge equal to the wallet delta.
Previous status — 15 September 2026
main at ec5a942 (#523, the 3.0.0-alpha.13 release commit) passes the full Node suite on the primary machine (macOS 26.6.2 / Node v22.22.3 / Bun 1.3.14 / Python 3.14.7 with the exact pins and RAQM) from a clean worktree: 4,869 Node tests, 4,869 passed, zero failed, zero skipped (the release gate check:release-readiness-lite, exit 0). The count grew from 4,773 on 9 September with the surface-shrink and module-size phases (#497, #502, #511, #517–#522) and the peer merges #512–#516. GitHub Actions is billing-blocked as of 15 September 16:19 UTC (jobs refused before starting: "recent account payments have failed or your spending limit needs to be increased"); the six merges from #519 on and the release itself were verified by that local gate and merged with the main: require green CI before merge ruleset briefly disabled, then re-enabled. On a checkout whose .env.local carries a real USEAPI_API_TOKEN, two veo-runtime cases that expect the token absent fail — environment, not tree. From #525 (15 September) CI is checks-only by default: the required build · test · smokes · guardrails check on a PR or a main push means the checks job passed and the four test shards were deliberately skipped, unless the PR carried the ci:full label or the run was the nightly full suite on main. A release candidate must therefore cite either a labelled PR run, a nightly run, or a local check:release-readiness-lite from the release commit — a green PR check alone is not full-suite evidence. From #575 (18 September) the same check also carries a third conditional leg, the shared coordinator's own deploy gate, which runs only on a PR that changes services/shared-lane-coordinator/, under ci:full, on manual dispatch and nightly.
The 9 September record (a89e890, #504, 4,773 tests, macOS 26.6.2 / Node v22.22.3 / Bun 1.3.14 / Python 3.14.7) stands as the previous primary-machine baseline: #473–#505 (consumer naming, the free-engine readiness file, in-flight execute-status, the live-acceptance harness, the shot-refs and film #3 branches, the mascot rename and five docs-drift gates). The 7 September second-machine reproduction (91e0505, #462; macOS 26.6.2 / Node 22.22.3 / Bun 1.3.14 / Python 3.14.7, 4,632 tests) remains the last cross-machine check; on that run the critical coverage suite 81 passed, all local smokes and guardrails passed; Flow sidecar typecheck clean and 876 passed, 14 live-service skips, 1 todo; in-tree seedance engine offline self-test 53/53.
Live support, free lanes: veo-useapi is certified at 0 credits (one 8 s text-to-video job, balance 25,610 before and after, clip QC'd frame by frame). seedance-direct is certified at $0 too, and from an INSTALLED package: the stranger test's alpha.10 install bootstrapped its own engine profile and rendered one 8 s scene with the wallet unchanged (500 credits before and after, spendDetected: false). runway-useapi has no account (suspended 2026-08-10). Details, commands and evidence paths: live acceptance record.
Live support, paid backends (2026-09-09, npm run acceptance:live, one operator-approved call each): gemini-tts narration (5.3 s WAV; whisper confirms speech, though only five of ten words — the text began with a Name:-style prefix that Gemini TTS most likely read as a speaker label; one sample), lyria3 soundtrack (27.4 s MP3 returned for a 10 s request; one sample), and the Magnific image upscaler (256² → 512², 90 credits read off the account before and after) are certified. dreamina-useapi is not pursued: Dreamina was dropped on 2026-09-09 as too expensive to keep supporting, so it stays uncertified by decision (the one attempt that day was refused by the provider's account flag 4013 before any charge).
Google Flow free lane, by operation (2026-09-16, npm run acceptance:live -- --route veo-useapi --veo-model free --operation i2v|r2v --approve): image-to-video (produce with an image asset, sidecar actualCost 0) and reference-to-video (flow-r2v --model veo-3.1-lite-low-priority against a registered Flow character, the first proof that Flow honours character refs on the free model) are certified at 0 credits, both landing 1920×1080 / 8 s with audio after the free 1080p upsample, wallet unchanged across each job; text-to-video was certified on 2026-09-09. The harness reads Google's own price table before every free row and refuses to submit unless the operation's _lite_low_priority row exists and costs 0. Extension and first+last (interpolation) have no vclaw surface, so they stay uncertified; the 360p omni upsampler needs a paid omni clip. Rows and the full inventory: 2026-09-16 live acceptance. The higgsfield-cli cinema route is certified (2026-09-17, npm run acceptance:live -- --kind cinema --sheet-dir <dir> --approve): the harness walks the whole evidence-gated ladder — create, character sheet, ten recognition decisions, rights, voice, preflight, compile, exact quote, authorize, execute ONE task, sync — against the real higgsfield 1.1.23 binary, and the one seedance_2_5 5 s / 480p shot landed with quote == charge (15 credits; the same row cost 12.5 on 2026-09-05 — the price moved, the contract held) and the wallet moving by exactly that. Two facts the run surfaced: the authorization must cover the whole five-shot quote (105 credits) even though one shot is submitted, and a re-quote on the same project duplicates its queue tasks until cinema-authorize refuses (#542), so the harness gives every cinema run a fresh project. Every other route and backend is offline-tested only. Evidence rows: 2026-09-09, 2026-09-16, 2026-09-17.
Roadmap phases. PRs #482, #490, #492 and #494 cite "roadmap Phase 1/4/5". That roadmap was a session plan and was never checked in; the closest checked-in record is
docs/audits/production-readiness-plan.md(the 24-item readiness plan, all items done) and the dated outcome next to it.
Published: 3.0.0-alpha.13 is the latest version on npm. (3.0.0-alpha.14 was never published; its changes ship in alpha.15.) The alpha.13 record: 3.0.0-alpha.13 on the npm alpha dist-tag from ec5a942 (#523), tag v3.0.0-alpha.13, sha256 1a00f181a0fa64c4aa9d1460e62e4fdd8f18002be576ea67800e64d09e62ec43 (local pack of the release commit; registry shasum 83839c34d50a2b2a4d22f94fc0b60ea008d622e5 == the pack's). latest moved with it the same hour (npm dist-tag ls videoclaw: alpha: 3.0.0-alpha.13, latest: 3.0.0-alpha.13); npx -p videoclaw@alpha vclaw --version from the registry prints 3.0.0-alpha.13. It carries the deprecation notices (#497, #502), produce --approve and the plain-produce spend-flag refusal (#511), and the five giant-module splits (#517–#522; the size guard now has zero frozen ceilings). The pre-publish hook re-ran the full suite on the publishing worktree (4,869 passed, 0 failed); the fresh-directory tarball smoke is recorded on #523. The --tag alpha publish and the latest move were run by the operator (npm two-factor). Roadmap phases 1, 5, 4, 2 and 3 are all shipped.
Published: 3.0.0-alpha.12 on the npm alpha dist-tag from e45f393 (#475), tag v3.0.0-alpha.12, sha256 9fb5eb2768d2ea96793a26c107999e965fd375bfdcdc76247c44628082e9f190 (local pack of the release commit == registry download). It carries the consumer-facing route names (#473) and the engine readiness marker + setupHint (#474): a fresh machine now reads Seedance 2.0 as unavailable until the Higgsfield browser session is imported, and every unavailable route names its next command. Prepublish suite skipped on the publishing machine (memory pressure); the identical tree passed the full CI gate on #475/#474 (4,670 tests, 0 failed).
Published: 3.0.0-alpha.11 on the npm alpha dist-tag from 6baf01c (#470), tag v3.0.0-alpha.11, sha256 2da0a323d471388aa8c5b8e7894f4e00fe2664e2b38dffc73408b3fc8aeb939b (local pack of the release commit == registry download). It carries the stranger-test fixes (#469 code, #467 docs): a fresh install can now take a text-only project to a render from docs/AGENT_QUICKSTART.md alone. The publishing machine's local prepublish suite was killed by memory pressure; the identical tree passed the full CI gate on #470 and #469 (4,659 tests, 0 failed). The stranger test itself (videoclaw@3.0.0-alpha.10, docs only, fresh prefix) rendered one free Flow scene at 0 credits and logged 18 gaps; issue #468 (an in-flight run marker for execute-status) was the one left open and is now closed — produce writes a per-run marker before submitting and execute-status reports execution-in-flight without touching the previous report.
Published: 3.0.0-alpha.10 on the npm alpha dist-tag from 85992f5 (#465), tag v3.0.0-alpha.10. Tarball videoclaw-3.0.0-alpha.10.tgz, 2,838 files, 15.6 MB packed, sha256 56f36e8add16b87a359d991baf887baade812c38ff81684e686a24ebc88338a6 — identical between the local pack of the release commit and the registry download. The pre-publish hook re-ran lint, module-size, build and the suite (4,643 passed, 0 failed). A fresh-directory offline install and npx -p videoclaw@alpha vclaw video providers from the registry both resolve the packed sidecar, engine and skill resources. latest was promoted to alpha.12 on 2026-09-09 (npm dist-tag ls videoclaw: alpha: 3.0.0-alpha.12, latest: 3.0.0-alpha.12) under the policy in Publishing; the paid-lane acceptance work continues from the remaining-work table of the dated outcome (the table no longer lives in this file).
The earlier 7 September record (candidate 3328e42, 4,623/1 skip, the 51-skill review) and its remaining-work table are in the dated outcome. The pre-remediation baseline at 9f81a02 had 4,571 passes, 39 failures and one skip, caused by unsupported Python/shaping prerequisites.
Earlier May/August results and unversioned “latest HEAD” records are preserved in Historical release-readiness records. They include retired aliases/routes and must not be copied into a current release decision. The documentation audit records source-reviewed gaps separately from executed checks.
Required evidence for a release
| Gate | Acceptance criterion | Evidence to record |
|---|---|---|
| Node core | Lint, module-size, build, Node tests, critical coverage, relevant smokes and guardrails pass | Commit, environment, commands, pass/fail/skip totals; explain skips |
| Live provider support | One quoted, operator-approved job per claimed route, produced by npm run acceptance:live -- --route <id> [--veo-model <m>] --approve (dry without --approve; `--kind narrate | soundtrack |
| Optional Flow sidecar | Typecheck and Bun suite pass; bridge resolves application code independently of project workspace | Bun version, sidecar dependency setup, test and bridge results; required CI gate includes this job |
| Python/media helpers | Supported Python environment passes prerequisite checks and affected local media fixtures | Python 3.12+ environment, dependencies, FFmpeg/ffprobe and required font/shaping capabilities |
| Installed package | Real tarball installs outside the checkout and resolves bundled resources | Version/channel, checksum, inventory, clean-directory schema/project/resource smoke |
| Queue and recovery | Saved quote/authorisation/receipt state prevents unintended replacement submissions; affected recovery and lease tests pass | Mocked contract results, ambiguous-submit/reconciliation checks and shared/local coordinator boundary |
| Documentation | Canonical references, independently authored guides and actual command/runtime behaviour agree | Mirror check, site build and content/link review; deployed revision if deploying docs |
| Live provider support | Explicitly authorised representative render and content QA for each provider being certified | Account/route/model, date, quote/charge, job ID, media checks and limitations; never infer from offline tests |
| Optional shared service | Deployment, authentication, lease coordination and recovery are verified when multi-machine operation is included | Service revision, configuration boundary and health/recovery evidence |
A failing required check blocks release. An unavailable external provider check must narrow the published support claim; it must not be labelled a pass. CI stubs for account/browser-engine presence make offline tests reproducible, but do not demonstrate authenticated live access.
Local verification
Use a source checkout with Node >=20.10, an active Python 3.12+ environment prepared from requirements-test.txt, FFmpeg/ffprobe, and optional runtime prerequisites appropriate to the changed code. See the installation guide.
npm run check:test-python
npm run check:release-readiness-lite
npm run check:docs-siteThe readiness bundle builds once, runs the Node suite (unless explicitly sharded by CI), critical coverage, local smokes, image-storyboard E2E and repository guardrails. It is one gate, not the entire matrix above. Run the separate Flow sidecar checks after its dependencies are installed:
(cd vclaw-cli && bun run typecheck && bun test)Match additional tests to the change. Read-only project health and a documented preview path can provide operator checks without submitting provider work. For example, use node dist/cli/vclaw.js video plan --project <slug> from a source checkout; installed-package users use vclaw video plan --project <slug>. The selected sample must have the artifacts required by planning.
Package and deployment acceptance
Follow Publishing for channel selection and a real tarball installation. A package inventory is necessary but not sufficient: a file may be present yet resolved relative to the wrong directory, or require an optional runtime that has not been installed. Package users should not have to run the source test suite merely to discover the CLI.
Keep separate records for the npm package, git revision, documentation site and optional Cloudflare coordinator. A merged PR or successful docs deployment does not imply an npm release, a configured Homebrew tap, or a verified live render. The checked-in Homebrew formula remains an unconfigured template.
Final release record
Before marking a release ready, add a dated record with its exact source commit, package version/channel, tested environment, gate results and remaining external limitations. Preserve failure output and skipped checks. Review acceptance must remain artifact-backed: verdict: "pass" and metrics.publishReady: true. Do not replace evidence with a generic “all tests pass” statement.
