Refresh application, plugin, native, build and container dependencies through the fixed 2026-09-19T16:27:11Z cutoff. Migrate native TypeScript snapshot/printer APIs while preserving compilation and filesystem contracts; retain existing patches and compatibility holds. Document offline container-image preparation.
Include the verified compiler process-census and loading-clock fixture repairs and deterministic warm-history regression. Adopt the canonical production history fixes from #159924 and #159955.
Land under the maintainer's explicit approval to treat proven pre-existing CI failures as non-blocking and repair main afterward. CI36365552098 failed an unchanged Android Compose fixture's asynchronous catalog projection assertion (3518 passed,1 failed); the Android/Gradle tree matches its main parent byte-for-byte. Security and dependency reviews passed. The final rebase preserves reviewed source changes and regenerates only the intentional Node-image documentation fingerprint. See PR159401 for complete validation and the follow-up repair obligation.
* fix(docker): install workspace dependencies for binding smoke
The binding source-test image installed only the root project. With pnpm's
isolated linker, private packages reached through source aliases had no
package-local dependency links, so all three suites failed to import
mdast-util-from-markdown from markdown-core.
Remove the root-only install filter in the owning E2E Dockerfile so pnpm
creates the complete workspace graph. Keep the frozen lockfile, isolated
linker, and disabled lifecycle scripts. Update the existing helper guard.
Proof: the unmodified Docker lane and native Markdown import reproduced
ERR_MODULE_NOT_FOUND. Rebuilding the corrected image passes the import,
workspace/plugin symlink probes, and all three focused binding tests.
pnpm test test/scripts/docker-build-helper.test.ts passes 273 tests with
two existing skips; pnpm check:changed and fresh Codex autoreview pass.
Other sampled release Docker failures have independent plugin/update
causes and are not covered by this image repair.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 1fa94d95b1)
* fix(e2e): resolve prepared stable plugins during upgrade
Prepared registry merging kept upstream latest tags during candidate upgrade,
so the survivor installed 2026.8.2 plugins despite serving 2026.9.1 artifacts.
The registry helper now distinguishes published baseline tags from candidate
package tags while retaining older dependency versions and fixture identities.
Owner: prepared npm registry harness. Product runtime is unchanged; this
repairs false stable-release upgrade failures for WhatsApp and Matrix.
Proof: stable registry regression failed twice before the repair; all 15
registry helper and 37 plugin selection tests pass. The original 2026.9.1
candidate now passes the published 2026.8.2 survivor in local Docker.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix(e2e): preserve the candidate registry across corrupt plugin setup
The nested synthetic registry replaced only one npm environment spelling,
then setup discarded both instead of restoring the parent prepared registry.
This caused a synthetic-package 404 and, once repaired, an unpublished core
dependency ETARGET. Set both spellings and scope fixture setup to a subshell
whose cleanup owns only the temporary server; preserve parent artifact state.
Owner: npm fixture lifecycle and corrupt-plugin scenario. Product runtime is
unchanged; release validation now exercises real corrupt-plugin tolerance.
Proof: real npm regression fails before the repair and passes afterward.
Docker reproduces both failures, then passes the full 2026.8.2 to unchanged
2026.9.1 candidate upgrade while preserving the plugin policy assertions.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
* fix(e2e): inspect survivor plugins before restoring legacy config
Companion provenance inspection ran after the harness restored deliberately
invalid legacy Discord configuration, so validation aborted before update.
Keep inspection within the existing parked-config lifetime and restore the
exact authored bytes after success or failure. Existing Doctor migrations
remain responsible for the actual upgrade.
Owner: upgrade-survivor fixture preparation. Product runtime is unchanged;
release validation can reach the migration it is intended to exercise.
Proof: the original candidate reproduces the pre-update Docker failure;
two new lifecycle cases fail before the repair and all three pass afterward,
with the existing registry-order helper case also passing. Full Docker
survivor now passes migration, state survival, and Gateway readiness/RPC
against the same original release candidate.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Refresh pinned node:24-bookworm and node:24-bookworm-slim manifest-list digests across the root, smoke, and e2e Dockerfiles. Update digest pin assertions to cover the plugin-binding e2e Dockerfile.
Verified with live Docker digest inspection, targeted Dockerfile tests, root base-runtime build, install-sh smoke build, and plugin-binding e2e build.
Thanks @LibraHo.