You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Automate the post-npm chart path (wait for CI, squash-merge the chart bot PR → OCI) and enable release-v* hotfix branches so patches do not have to ship from tip of main.
Chart SemVer is line-local: same X.Y.Z-rc.* cycle stays monotonic; a stable X.Y.* hotfix ignores newer majors/RC lines (e.g. 0.2.0 → 0.2.1 while main is on 0.3.0-rc.*).
Closes AGE-2276
Diff
Before: Version Packages → npm → chart bot PR → human merge → chart OCI After: Version Packages → npm + image → chart bot PR → auto-merge after CI → chart OCI
Hotfix: cut release-v* from a shipped SHA / charts/trueforge@* → cherry-pick + changeset → same Release lane on that branch (chart PR base = the release branch).
Chart SemVer examples
Case
Starting point
Next chart
Normal RC on main
0.2.0-rc.14
0.2.0-rc.15
Hotfix mid-RC (stale cut)
Chart.yaml 0.2.0-rc.3, tags already at 0.2.0-rc.10
0.2.0-rc.11 (same RC line)
Exit RC → stable
0.2.0-rc.14 + stable app
0.2.0
Hotfix older stable
Cut from 0.2.0; main on 0.3.0-rc.*
0.2.1 (not 0.3.0-rc.*)
Admin prerequisite (Pending)
Limited ruleset bypass for trueforge-dev-bot only (app id 4591571). No admin PAT.
Bypass mode pull_request — merge via PR only; no direct push
Split rulesets — bot bypasses approvals; required check check on a no-bypass ruleset
Same on org release-branch-protection (release-v*)
Changes
release.yml also runs on release-v*; passes merge_chart_pr: true into the chart workflow
build-and-prepare-chart-release.yml:
Chart PR base is main or the current release-v*
Separate bot heads: release-chart/trueforge vs release-chart/trueforge-<release-v*>
Optional auto-merge after CI (merge_chart_pr; default true from Release / false on manual dispatch)
Chart version baseline = max(Chart.yaml, highest tag on the same SemVer line) via scripts/highest-chart-tag-on-line.sh
Global serialize on open/merge; wait for charts/trueforge@* tag before the next run
release-chart.yml: publish on chart-bot PR merges into main or release-v*
No hand-edits to generated code (packages/trueforge-sdk, python/trueforge_sdk, .github/fern/openapi/openapi.json, docs/openapi.json) — fork PRs omit SDK regen; maintainers regenerate after merge
Docs / .env.example updated if configuration or behavior changed
Note
Medium Risk
Changes release automation (npm/chart publish paths, bot auto-merge, and SemVer baselines); misconfiguration could block releases or assign wrong chart versions on parallel main vs hotfix lines.
Overview Automates the chart OCI lane after npm publish: the chart bot PR can wait for CI, squash-merge via the GitHub App, and block until the charts/trueforge@* tag exists so the next run sees the right SemVer baseline. merge_chart_pr defaults to true when called from Release and false on manual dispatch.
Adds release-v* hotfix support end-to-end: Release and chart publish run on main and release-v*; chart PRs target the matching base with separate heads (release-chart/trueforge vs release-chart/trueforge-<branch>). Concurrency is scoped per ref for image/chart builds and globally serialized (with queue: max) for chart version assignment and merge.
Line-local chart SemVer uses new scripts/highest-chart-tag-on-line.sh so the version floor is max(Chart.yaml, highest published tag on the same line)—RC cycles stay monotonic; stable hotfixes do not jump to newer majors/RCs on main. RELEASING.md documents the flow, bot ruleset bypass, and hotfix cut instructions; pnpm test:chart-version runs the new script tests.
Reviewed by Cursor Bugbot for commit f9cf0a1. Bugbot is set up for automated code reviews on this repo. Configure here.
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Automate the post-npm chart path (wait for CI, squash-merge the chart bot PR → OCI) and enable
release-v*hotfix branches so patches do not have to ship from tip ofmain.Chart SemVer is line-local: same
X.Y.Z-rc.*cycle stays monotonic; a stableX.Y.*hotfix ignores newer majors/RC lines (e.g.0.2.0→0.2.1whilemainis on0.3.0-rc.*).Closes AGE-2276
Diff
Before: Version Packages → npm → chart bot PR → human merge → chart OCI
After: Version Packages → npm + image → chart bot PR → auto-merge after CI → chart OCI
Hotfix: cut
release-v*from a shipped SHA /charts/trueforge@*→ cherry-pick + changeset → same Release lane on that branch (chart PR base = the release branch).Chart SemVer examples
main0.2.0-rc.140.2.0-rc.150.2.0-rc.3, tags already at0.2.0-rc.100.2.0-rc.11(same RC line)0.2.0-rc.14+ stable app0.2.00.2.0;mainon0.3.0-rc.*0.2.1(not0.3.0-rc.*)Admin prerequisite (Pending)
Limited ruleset bypass for
trueforge-dev-botonly (app id4591571). No admin PAT.pull_request— merge via PR only; no direct pushcheckon a no-bypass rulesetrelease-branch-protection(release-v*)Changes
release.ymlalso runs onrelease-v*; passesmerge_chart_pr: trueinto the chart workflowbuild-and-prepare-chart-release.yml:mainor the currentrelease-v*release-chart/trueforgevsrelease-chart/trueforge-<release-v*>merge_chart_pr; default true from Release / false on manual dispatch)max(Chart.yaml, highest tag on the same SemVer line)viascripts/highest-chart-tag-on-line.shcharts/trueforge@*tag before the next runrelease-chart.yml: publish on chart-bot PR merges intomainorrelease-v*RELEASING.md: automated OCI lane, hotfix branch flow, line-local SemVer, limited bot bypasspnpm test:chart-version: covers resolve + line-local tag pickerHow was this tested?
sleep 20beforegh pr checks --watch)pnpm test:chart-version(resolve-chart-version + highest-chart-tag-on-line matrix)pnpmsuite not required for this workflow/docs-only PRChecklist
pnpm build,pnpm test,pnpm typecheck,pnpm lint:ci, andpnpm format:checkpass locallypackages/trueforge-sdk,python/trueforge_sdk,.github/fern/openapi/openapi.json,docs/openapi.json) — fork PRs omit SDK regen; maintainers regenerate after merge.env.exampleupdated if configuration or behavior changedNote
Medium Risk
Changes release automation (npm/chart publish paths, bot auto-merge, and SemVer baselines); misconfiguration could block releases or assign wrong chart versions on parallel main vs hotfix lines.
Overview
Automates the chart OCI lane after npm publish: the chart bot PR can wait for CI, squash-merge via the GitHub App, and block until the
charts/trueforge@*tag exists so the next run sees the right SemVer baseline.merge_chart_prdefaults to true when called from Release and false on manual dispatch.Adds
release-v*hotfix support end-to-end: Release and chart publish run onmainandrelease-v*; chart PRs target the matching base with separate heads (release-chart/trueforgevsrelease-chart/trueforge-<branch>). Concurrency is scoped per ref for image/chart builds and globally serialized (withqueue: max) for chart version assignment and merge.Line-local chart SemVer uses new
scripts/highest-chart-tag-on-line.shso the version floor ismax(Chart.yaml, highest published tag on the same line)—RC cycles stay monotonic; stable hotfixes do not jump to newer majors/RCs onmain. RELEASING.md documents the flow, bot ruleset bypass, and hotfix cut instructions;pnpm test:chart-versionruns the new script tests.Reviewed by Cursor Bugbot for commit f9cf0a1. Bugbot is set up for automated code reviews on this repo. Configure here.