Release readiness
The 1.12.0 documentation describes the prepared lockstep release candidate.
All 21 official manifests are at 1.12.0; it is not a published package train
until the protected release workflow completes the candidate, provenance,
registry, and immutable-release checks. Issue
#465 delivers the optional
Tailwind Vite integration and deduplicated Shadow DOM SSR stylesheet transport.
Issues #468 and
#470 carry the patch release
that corrects the VSIX language-server version handshake after the immutable
v1.11.0 candidate stopped before publication.
Issue #473 refreshes the
VSIX clean-install integrity after the immutable, unpublished v1.11.1
candidate stopped before publication on a changed registry tarball checksum.
Issue #477 re-resolves the
complete VSIX Azure lock graph after the immutable, unpublished v1.11.2
candidate stopped before publication because its locked
@azure/core-auth@1.11.1 tarball was no longer available. The exact VSIX
clean install, package build, and bundled language-server smoke validation now
run in Quality Gates with an isolated npm cache before a tag can be created.
Issue #479 makes the
post-publish npm visibility and latest-tag probes online-preferred and
bounded-retry tolerant, so normal registry propagation cannot leave an
otherwise published train stuck before immutable-release finalization.
The release cut retains a Quality-Gates-tested candidate followed only by its
release-cut evidence and compatibility manifest.
Release-state wording in this documentation follows the repository policy: stable describes shipped public contracts, experimental describes explicitly labeled opt-in surfaces, and unsupported marks boundaries the contract refuses.
No v1.12.0 tag or immutable GitHub release exists while this candidate is
under review. The protected workflow must produce fresh browser, Node,
performance, reproducibility, clean-room registry, provenance, and publication
evidence for all 21 packages before this wording is changed to a release claim.
Gluon's release group contains 21 lockstep packages. The repository validates their common version, exact official dependencies, package contents, documentation version, license, changelogs, provenance settings, and protected workflow with:
npm run check:release-contract
A release-candidate commit must additionally pass the complete repository check and strict candidate validation. The release artifact builder creates reproducible package-content digests, clean-installs all 21 local archives, typechecks every contracted public export, and creates SPDX 2.3 and CycloneDX 1.7 SBOMs for each package and the aggregate release, SHA-256 checksums, and machine-readable build evidence. The official SPDX schema is vendored with a pinned upstream commit and SHA-256.
The release cut requires verified public repository visibility, npm scope
control, the accepted single-owner recovery and multi-factor-authentication
controls, existing owner-controlled package records, trusted-publisher
bindings, the single-operator npm environment and tag rules, and immutable
GitHub releases. marcmalerei is the sole required npm owner; a second owner is
not required. The owner uses auth-and-writes 2FA, keeps the npm account linked
to GitHub, and retains current recovery codes outside the second-factor device.
Loss of the sole owner account can stop package administration and require npm
Support account recovery. Repository validation does not prove where recovery
codes are stored.
The npm environment uses the accepted single-operator model. It has no
required reviewers, independent human approval, self-review rule, or wait
timer; permits only the v* tag pattern; and disallows administrator bypass and
long-lived npm secrets. This accepts that the sole operator can create a release
tag that permanently publishes package versions directly under latest
without another person's approval. npm does not provide an atomic
multi-package publish operation, so a failed train can temporarily leave only
part of the 21-package train on the new latest version.
Two active tag rulesets cover exactly refs/tags/v*. Only marcmalerei may
bypass the creation restriction, so the sole operator can cut a release. The
separate update and deletion restrictions have no bypass actor; an existing
release tag therefore cannot be rewritten or deleted, including by a repository
administrator.
Strict validation requires a machine-readable release-cut record containing the exact tested commit, its successful Quality Gates run, the sole operator's administrative verification that immutable GitHub releases are enabled and that the exact tag-ruleset bypass lists match the contract, and the operator's acceptance of the automated-only support boundary. Gluon 1.0 makes no branded browser, operating-system, device, or assistive-technology support claim and does not require manual evidence for those combinations.
The same release cut freezes an immutable compatibility manifest with exact Playwright Chromium, Firefox, and WebKit binaries, Node LTS versions, and CSR/SSR/streaming/hydration/SSG evidence. Both evidence files must describe the same tested commit and explicitly reject branded-product support claims.
Publication uses one recoverable protected job. Trusted publishing places all
21 reviewed versions directly under latest with provenance and without a
long-lived npm token or per-package 2FA approval. A rerun verifies and skips
matching immutable versions before continuing unpublished packages. The GitHub
release remains a draft until the complete train passes integrity, provenance,
dist-tag, clean-install, and public-type verification.
The immutable v1.0.0 tag failed its candidate gate before release artifacts,
an npm publication, or a GitHub release draft existed. The immutable v1.0.1
tag passed candidate, browser, Node, and performance gates, then failed because
the reproduction build omitted @gluonjs/vue-migration-analyzer; its publish
job was skipped and no npm version or GitHub draft was created. The immutable
v1.0.2 tag passed all release gates, then stopped before draft creation or npm
publication because setup-node registry authentication exported a placeholder
NODE_AUTH_TOKEN that the no-token policy rejected. The immutable v1.0.3 tag
passed every release and reproducibility gate, then stopped before draft or npm
publication because hosting verification lacked GitHub's ephemeral workflow
token for its read-only API checks. The immutable v1.0.4 tag passed every
release and reproducibility gate, then stopped before draft or npm publication
because the immutable-releases endpoint requires Administration read access
that an Actions GITHUB_TOKEN cannot receive. The immutable v1.0.5 tag also
passed every release and reproducibility gate, then stopped before draft or npm
publication because GitHub omits ruleset bypass_actors from non-administration
responses. The 1.0.6 release line used the complete root build, left
setup-node registry authentication disabled, passed the contracted registry
explicitly to npm, recorded the operator's successful immutable-release and
ruleset-bypass preflights in versioned release-cut evidence, and completed
publication on 2026-07-14. The 1.0.7 line additionally publishes directly to
latest through trusted publishing and verifies the complete train before
finalizing the GitHub release. The failed tags are not moved or reused.
The first immutable canonical v1.0.7 tag passed its browser, Node, and
performance jobs but stopped before reproducibility, npm publication, or a
GitHub draft. PR #157 had been squash-merged, so the recorded tested commit was
not an ancestor of the tagged commit even though the reviewed evidence commit
and tag have the same tree. The canonical tag remains unchanged. Its one-time
machine-verified recovery uses protected execution tag
v1.0.7-recovery.1, which must merge both histories and may change only the
release workflow, recovery validation, documentation, and renewed evidence
paths. Package sources, manifests, READMEs, licenses, and changelogs cannot
differ. Trusted Publishing still publishes version 1.0.7, and the GitHub
release remains attached to canonical tag v1.0.7. Recovery execution tag
v1.0.7-recovery.1 retained both required histories at merge commit
16355e237134b664ec385e6caeb575093eb20251; release run 29338710037 then
passed every gate, published all 17 packages to latest with SLSA provenance,
verified a clean install, and published the immutable canonical GitHub release
on 2026-07-14.
The immutable v1.0.9 tag points to commit
2be2dc684bb6e65de54130ea3e662d6568085d58. Release run 29422302132
passed its candidate, browser, Node, performance, and reproducibility gates and
published all 17 packages to latest with SLSA provenance. Clean-room public
type verification then found a broken Core declaration re-export, so the
GitHub release remains a draft. The immutable npm versions and tag are not
reused; 1.1.0 contained the corrected declaration bundle and a
prepublication archive typecheck.
The maintained release operations runbook defines the exact candidate, tag, protected publication, registry verification, and failure-handling procedure.