1RELEASE-PLAN-CLONE-START: https://github.com/cameronraysmith/vanixiets.git #3270 3b3a800e600a25913b918f33aece14dfefac608d2RELEASE-PACKAGES-ACTION: plan (#3270 at 3b3a800e600a25913b918f33aece14dfefac608d onto main at 8cfffe6390de0e63ebddf349ca580dfad8e5d8b9)3packages discovered: [{"name":"docs","path":"packages/docs"}]4RELEASE-PACKAGE-ITERATION: packages/docs5running semantic-release in packages/docs...6[2:48:07 AM] [[secure]] › ℹ Running [secure] version 25.0.97[2:48:08 AM] [[secure]] › ✔ Loaded plugin "verifyConditions" from "@[secure]/changelog"8[2:48:08 AM] [[secure]] › ✔ Loaded plugin "verifyConditions" from "@[secure]/github"9[2:48:08 AM] [[secure]] › ✔ Loaded plugin "prepare" from "@[secure]/changelog"10[2:48:08 AM] [[secure]] › ✔ Loaded plugin "publish" from "@[secure]/github"11[2:48:08 AM] [[secure]] › ✔ Loaded plugin "addChannel" from "@[secure]/github"12[2:48:08 AM] [[secure]] › ✔ Loaded plugin "success" from "@[secure]/github"13[2:48:08 AM] [[secure]] › ✔ Loaded plugin "success" from "[secure]-major-tag"14[2:48:08 AM] [[secure]] › ⚠ Run automated release from branch main on repository https://github.com/cameronraysmith/vanixiets.git in dry-run mode15[2:48:08 AM] [[secure]] › ✔ Allowed to push to the Git repository16[2:48:08 AM] [[secure]] › ℹ Start step "verifyConditions" of plugin "@[secure]/changelog"17[2:48:08 AM] [[secure]] › ✔ Completed step "verifyConditions" of plugin "@[secure]/changelog"18[2:48:08 AM] [[secure]] › ℹ Start step "verifyConditions" of plugin "@[secure]/github"19[2:48:08 AM] [[secure]] [@[secure]/github] › ℹ Verify GitHub authentication20[2:48:09 AM] [[secure]] › ✔ Completed step "verifyConditions" of plugin "@[secure]/github"21[2:48:09 AM] [[secure]] › ℹ Found git tag @vanixiets/docs-v0.11.1 associated with version 0.11.1 on branch main22[2:48:09 AM] [[secure]] › ℹ Found 11 commits since last release23[2:48:09 AM] [[secure]] › ℹ Start step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"24[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Start step "analyzeCommits" of plugin "@[secure]/commit-analyzer"25[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Found 6 commits for package @vanixiets/docs since last release26[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Analyzing commit: fix(docs): keep WebKit failure screenshots in Darwin build reports2728On aarch64-darwin, Nix build users have no LaunchServices database, so WebKit's image encoder returns an empty data URL and Playwright writes a 0-byte failure screenshot without raising an error. The report validator rightly rejects empty attachments, so a WebKit product failure on Darwin kept no report. A shared test fixture now replaces a 0-byte WebKit screenshot with the latest screencast frame, or fails the attempt as infrastructure if none exists. e2e-webkit-negative-control proves that a WebKit failure keeps a real PNG.2930Change-Id: I01c2ad58cb950529278fb87dda109414ead21c0931[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ The release type for the commit is patch32[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Analyzing commit: fix(docs): give each browser report build its own preview ports3334Darwin Nix builds are unsandboxed and share the host network, so report derivations built at once all served on localhost:4321 and raced for the workerd inspector port from 9229; one build's server broke another's tests. The report build now picks a free loopback port and passes it to Playwright as DOCS_PREVIEW_PORT, and sets DOCS_DISABLE_WORKER_INSPECTOR so astro preview opens no inspector. Local runs keep 4321 and the inspector.3536Change-Id: Ia0c3192bbfed2940fbd062e68105432e6a6a696437[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ The release type for the commit is patch38[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Analyzing commit: fix(docs): keep the homepage hero within narrow viewports3940The homepage hero uses raw <img width="400"> markup inside Starlight's .hero-html wrapper, which Starlight sizes but does not constrain. On phones the image overflowed and widened the layout viewport past the device, cutting off the logo and header search. The mobile scenario now requires no horizontal overflow and a hero image inside the viewport; it failed on all three engines before the CSS fix and passes after it.4142Change-Id: Id64a1dfa32e0a68946327dba89fc8362f7f6247343[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ The release type for the commit is patch44[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Analyzing commit: feat(docs): publish validated browser evidence from finished builds4546publish-evidence is the trusted build_finished sidecar. It finds the docs report check through nixbot's build API, validates it with its own copy of validate-report.mjs, and copies run.json, completion.json and the referenced PNG screenshots beside a deterministic receipt. Unsafe paths, symlinks, non-PNG data and identity mismatches are rejected; missing outputs are reported, never rebuilt. No effect runs it yet: storage, access and retention are undecided, so publication ends at a local --out directory. publish-evidence-rehearsal covers each case against a loopback API and a chroot store.4748Change-Id: I9adcceeed84b3fe7e7c86c572fdc8f5b5a0d7b0249[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ The release type for the commit is minor50[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Analyzing commit: refactor(docs): type the browser evidence tooling5152Change-Id: I356b84749e0208e8cb45b4cfa884595b6a6a696453[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ The commit should not trigger a release54[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Analyzing commit: fix(docs): keep browser evidence valid under CI build contention5556nixbot build 951 failed correct docs changes with navigation timeouts while three PRs built on magnetite. The builders run cores = 0, so each concurrent report build got NIX_BUILD_CORES=16 and started 16 workers against its own astro preview, and the validator rejected the run even where retries recovered, because it required every failed attempt to be a product failure.5758Report builds now run at most four workers. Navigations no longer have their own 10 s deadline, since a failed navigation is never product evidence. An infrastructure-class attempt, including a test deadline, is accepted only when a later attempt of the same test completed, and is counted as infrastructureRetries; a terminal one still invalidates the report. The negative controls inherit the suite's retries and require every attempt to fail with a product-class terminal attempt.5960Change-Id: I50a0cab69083ddca584cdea07880a5d7a03f096361[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ The release type for the commit is patch62[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Analysis of 6 commits complete: minor release63[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Completed step "analyzeCommits" of plugin "@[secure]/commit-analyzer"64[2:48:09 AM] [[secure]] › ✔ Completed step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"65[2:48:09 AM] [[secure]] › ℹ Start step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"66[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Plugin "@[secure]/release-notes-generator" does not provide step "analyzeCommits"67[2:48:09 AM] [[secure]] › ✔ Completed step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"68[2:48:09 AM] [[secure]] › ℹ Start step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"69[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Plugin "@[secure]/changelog" does not provide step "analyzeCommits"70[2:48:09 AM] [[secure]] › ✔ Completed step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"71[2:48:09 AM] [[secure]] › ℹ Start step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"72[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Plugin "@[secure]/github" does not provide step "analyzeCommits"73[2:48:09 AM] [[secure]] › ✔ Completed step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"74[2:48:09 AM] [[secure]] › ℹ Start step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"75[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Plugin "[secure]-major-tag" does not provide step "analyzeCommits"76[2:48:09 AM] [[secure]] › ✔ Completed step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"77[2:48:09 AM] [[secure]] › ℹ Start step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"78[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ No more plugins79[2:48:09 AM] [[secure]] › ✔ Completed step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"80[2:48:09 AM] [[secure]] › ℹ Start step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"81[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ No more plugins82[2:48:09 AM] [[secure]] › ✔ Completed step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"83[2:48:09 AM] [[secure]] › ℹ Start step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"84[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ No more plugins85[2:48:09 AM] [[secure]] › ✔ Completed step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"86[2:48:09 AM] [[secure]] › ℹ Start step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"87[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ No more plugins88[2:48:09 AM] [[secure]] › ✔ Completed step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"89[2:48:09 AM] [[secure]] › ℹ Start step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"90[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ No more plugins91[2:48:09 AM] [[secure]] › ✔ Completed step "analyzeCommits" of plugin "[Function: [secure]-monorepo]"92[2:48:09 AM] [[secure]] › ℹ The next release version is 0.12.093[2:48:09 AM] [[secure]] › ℹ Start step "generateNotes" of plugin "[Function: [secure]-monorepo]"94[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Plugin "@[secure]/commit-analyzer" does not provide step "generateNotes"95[2:48:09 AM] [[secure]] › ✔ Completed step "generateNotes" of plugin "[Function: [secure]-monorepo]"96[2:48:09 AM] [[secure]] › ℹ Start step "generateNotes" of plugin "[Function: [secure]-monorepo]"97[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Start step "generateNotes" of plugin "@[secure]/release-notes-generator"98[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Found 6 commits for package @vanixiets/docs since last release99[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Completed step "generateNotes" of plugin "@[secure]/release-notes-generator"100[2:48:09 AM] [[secure]] › ✔ Completed step "generateNotes" of plugin "[Function: [secure]-monorepo]"101[2:48:09 AM] [[secure]] › ℹ Start step "generateNotes" of plugin "[Function: [secure]-monorepo]"102[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Plugin "@[secure]/changelog" does not provide step "generateNotes"103[2:48:09 AM] [[secure]] › ✔ Completed step "generateNotes" of plugin "[Function: [secure]-monorepo]"104[2:48:09 AM] [[secure]] › ℹ Start step "generateNotes" of plugin "[Function: [secure]-monorepo]"105[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Plugin "@[secure]/github" does not provide step "generateNotes"106[2:48:09 AM] [[secure]] › ✔ Completed step "generateNotes" of plugin "[Function: [secure]-monorepo]"107[2:48:09 AM] [[secure]] › ℹ Start step "generateNotes" of plugin "[Function: [secure]-monorepo]"108[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ Plugin "[secure]-major-tag" does not provide step "generateNotes"109[2:48:09 AM] [[secure]] › ✔ Completed step "generateNotes" of plugin "[Function: [secure]-monorepo]"110[2:48:09 AM] [[secure]] › ℹ Start step "generateNotes" of plugin "[Function: [secure]-monorepo]"111[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ No more plugins112[2:48:09 AM] [[secure]] › ✔ Completed step "generateNotes" of plugin "[Function: [secure]-monorepo]"113[2:48:09 AM] [[secure]] › ℹ Start step "generateNotes" of plugin "[Function: [secure]-monorepo]"114[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ No more plugins115[2:48:09 AM] [[secure]] › ✔ Completed step "generateNotes" of plugin "[Function: [secure]-monorepo]"116[2:48:09 AM] [[secure]] › ℹ Start step "generateNotes" of plugin "[Function: [secure]-monorepo]"117[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ No more plugins118[2:48:09 AM] [[secure]] › ✔ Completed step "generateNotes" of plugin "[Function: [secure]-monorepo]"119[2:48:09 AM] [[secure]] › ℹ Start step "generateNotes" of plugin "[Function: [secure]-monorepo]"120[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ No more plugins121[2:48:09 AM] [[secure]] › ✔ Completed step "generateNotes" of plugin "[Function: [secure]-monorepo]"122[2:48:09 AM] [[secure]] › ℹ Start step "generateNotes" of plugin "[Function: [secure]-monorepo]"123[2:48:09 AM] [[secure]] [[Function: [secure]-monorepo]] › ℹ No more plugins124[2:48:09 AM] [[secure]] › ✔ Completed step "generateNotes" of plugin "[Function: [secure]-monorepo]"125[2:48:09 AM] [[secure]] › ⚠ Skip step "prepare" of plugin "@[secure]/changelog" in dry-run mode126[2:48:09 AM] [[secure]] › ⚠ Skip @vanixiets/docs-v0.12.0 tag creation in dry-run mode127[2:48:09 AM] [[secure]] › ⚠ Skip step "publish" of plugin "@[secure]/github" in dry-run mode128[2:48:09 AM] [[secure]] › ⚠ Skip step "success" of plugin "@[secure]/github" in dry-run mode129[2:48:09 AM] [[secure]] › ⚠ Skip step "success" of plugin "[secure]-major-tag" in dry-run mode130[2:48:09 AM] [[secure]] › ✔ Published release 0.12.0 on default channel131[2:48:09 AM] [[secure]] › ℹ Release note for version 0.12.0:132## @vanixiets/docs-v0.12.0 (https://github.com/cameronraysmith/vanixiets/compare/@vanixiets/docs-v0.11.1...@vanixiets/docs-v0.12.0) (2026-10-02)133134### Features135136 * **docs:** publish validated browser evidence from finished builds ([84f6bf1](https://github.com/cameronraysmith/vanixiets/commit/84f6bf16c1b8af8d942c20ae9daefb4bd62756dc))137138### Bug Fixes139140 * **docs:** give each browser report build its own preview ports ([997dafd](https://github.com/cameronraysmith/vanixiets/commit/997dafdd824db08ceb55db5d0eea59547b3502bb))141 * **docs:** keep browser evidence valid under CI build contention ([3f8dbba](https://github.com/cameronraysmith/vanixiets/commit/3f8dbbaad23ff799c2b466924b5ba2b5719612a5))142 * **docs:** keep the homepage hero within narrow viewports ([e86bc39](https://github.com/cameronraysmith/vanixiets/commit/e86bc39c0f44afa3f94f4c986e1279fb7cd1ee95))143 * **docs:** keep WebKit failure screenshots in Darwin build reports ([3b3a800](https://github.com/cameronraysmith/vanixiets/commit/3b3a800e600a25913b918f33aece14dfefac608d))144145RELEASE-PLAN: docs 0.11.1 -> 0.12.0