Skip to content

chore(release): fix CI/release-process gaps found reconciling 1.12-compat - #746

Merged
michaelpporter merged 1 commit into
mainfrom
phase3-release-process
Jul 26, 2026
Merged

chore(release): fix CI/release-process gaps found reconciling 1.12-compat#746
michaelpporter merged 1 commit into
mainfrom
phase3-release-process

Conversation

@michaelpporter

Copy link
Copy Markdown
Owner

Phase 3 of the 1.12-compat reconciliation from today's grill session. Three independent fixes, bundled since they're all small and all release-process.

CI now runs on push to main

ci.yml triggered only on pull_request + workflow_dispatch. main went from 444661a (2026-05-28, the dependabot bump that broke TypeScript) to #737 (2026-07-25) — two months — with a broken build and nobody noticed, because nothing ever ran CI directly against main.

Removed manifest-beta.json / version-bump-beta.mjs

Checked BRAT's own developer guide directly rather than relying on the assumption baked into the 4.15.0 changelog ("BRAT reads manifest-beta.json from the repo root"). That was true of older BRAT; BRAT v1.1.0+ ignores manifest-beta.json entirely — it reads manifest.json straight from a pinned release's assets. So the whole dual-manifest mechanism is dead weight.

version:beta now bumps manifest.json exactly like version:prod does. The only remaining thing that needs to differ for a beta release is package.json's version carrying a -beta.N suffix — which is already what release.yml's tag-name check uses to mark a release a prerelease.

release:beta no longer hardcodes a branch name

It pushed main:main. Harmless on main, but the exact same script was copied onto 1.12-compat verbatim as master:master — a branch that doesn't exist there, so the script silently failed. Now it pushes whatever branch is currently checked out (git push origin HEAD:$(git symbolic-ref --short HEAD)), which fixes 1.12-compat's copy too and can't recur if this is ever copied to a third branch.

Deliberately left alone

1.12-compat's release.yml attaches manifest-beta.json to every release it cuts (stable included — confirmed on the already-shipped 4.14.4). I initially treated this as a bug to reconcile toward main, but since BRAT ignores the file regardless of where it comes from, it's harmless cruft rather than a real divergence. Not touched.

bun run build && bun run test pass (382 tests, 0 type errors, svelte-check 0/0).

…mpat

Three unrelated fixes bundled from working through today's 1.12-compat
release grill session:

- CI now also runs on push to main, not just pull_request. main went
  two months (444661a landing on 2026-05-28, first caught by #737 on
  2026-07-25) with a broken TypeScript pin and nobody noticed, because
  nothing ran CI against main directly.

- Removed manifest-beta.json and version-bump-beta.mjs. The 4.15.0
  changelog says BRAT reads manifest-beta.json from the repo root —
  true of older BRAT, but BRAT v1.1.0+ ignores it entirely and reads
  manifest.json straight from a pinned release's assets instead
  (confirmed against BRAT's own developer guide). version:beta now
  bumps manifest.json exactly like version:prod; the only thing that
  still needs to differ for a beta release is package.json's version
  carrying a -beta.N suffix, which is what release.yml's tag-name check
  already uses to mark the release a prerelease.

- release:beta no longer pushes to a hardcoded branch. It was
  `main:main`, harmless here, but copied verbatim onto 1.12-compat as
  `master:master` — a branch that doesn't exist, silently broken.
  Now pushes whatever branch is checked out.

Not changed: 1.12-compat's release.yml also attaches manifest-beta.json
to every release (stable included) — investigated as a possible
main/1.12-compat divergence to reconcile, but since BRAT ignores the
file either way it's harmless, not a bug. Left alone.
@michaelpporter
michaelpporter merged commit 2b512b6 into main Jul 26, 2026
1 check passed
@michaelpporter
michaelpporter deleted the phase3-release-process branch July 26, 2026 00:03
michaelpporter added a commit that referenced this pull request Jul 26, 2026
2b512b6 (PR #746) deleted manifest-beta.json and version-bump-beta.mjs
but did NOT include the package.json change that stops referencing
them, so `bun run version:beta` on main has been broken since that
merge — it invokes a script that no longer exists.

Cause: the staging command listed already-`git rm`'d paths alongside
modified ones. git aborted the whole `add` with "fatal: pathspec
'manifest-beta.json' did not match any files", so only the two
pre-staged deletions made it into the commit. The accompanying edits
were written to disk but never staged, and went unnoticed because
`git status` wasn't re-checked after committing.

Restores the intended changes:
- package.json: version:beta bumps manifest.json like version:prod;
  release:beta pushes the current branch instead of hardcoded main:main
- .github/workflows/release.yml: comment explains why there's no beta
  manifest to publish (BRAT v1.1.0+ ignores manifest-beta.json)
- AGENTS.md: documents the unified bump mechanics
- CHANGELOG.md: Build entries for all of the above

Also extends CI to 1.12-compat. For push events GitHub uses the
workflow file from the branch being pushed, so 1.12-compat needs its
own copy listing itself; both files now list both branches so they stay
identical and future ports are mechanical.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant