Skip to content

Commit 4e03527

Browse files
authored
Release 2026-05-11 (#830)
- CPU core committed resources (headroom-based, no Reservation CRDs) - ProjectQuota CRD split into per-AZ CRDs with multicluster routing - FlavorGroupCapacity multicluster routing + TotalCapacity field - Capacity reporting per resource type (RAM, cores, instances) - Unit change: 1 GiB fixed unit for commitments - Metrics renames (vcpu→cpu, memory→ram, unused commitments) - Weighers disabled in vmware-hana-bin-packing pipeline - Dependency updates (gg, go-api-declarations, go-bits, hypervisor-operator)
2 parents 59d68b3 + 44453d6 commit 4e03527

91 files changed

Lines changed: 2798 additions & 1416 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
---
2+
name: release-bump-charts
3+
description: Takes a release digest with breaking change info, bumps helm chart versions accordingly, and opens or updates a bump PR for a given release PR number.
4+
tools: Bash, Read, Write, Edit, Agent
5+
model: inherit
6+
---
7+
8+
# Release Bump Charts Agent
9+
10+
You receive a release digest (with breaking change info) and the release PR number. Your job is to bump the helm chart versions and open/update a PR.
11+
12+
---
13+
14+
## Input
15+
16+
The caller provides:
17+
1. The release PR number (e.g. `123`)
18+
2. The release digest containing `### Changed Charts` and `### Breaking Changes` sections
19+
20+
## Step 1: Parse the digest
21+
22+
From the digest, identify:
23+
- Which library charts changed (from `### Changed Charts`)
24+
- Whether any breaking changes exist (from `### Breaking Changes`)
25+
26+
## Step 2: Bump versions
27+
28+
For each changed library chart listed in the digest, update `helm/library/<name>/Chart.yaml`:
29+
- If there are breaking changes for that chart: **minor-bump** the `version` (e.g. `0.5.14``0.6.0`)
30+
- If no breaking changes: **patch-bump** the `version` (e.g. `0.5.14``0.5.15`)
31+
32+
Do NOT touch `appVersion`.
33+
34+
Then update the matching `dependencies[].version` entry in every `helm/bundles/*/Chart.yaml` that references the bumped library chart.
35+
36+
## Step 3: Check for existing bump PR
37+
38+
```
39+
gh pr list --head release/bump-charts-<PR_NUMBER> --state open --json number,url
40+
```
41+
42+
## Step 4a: If a PR already exists
43+
44+
1. Check out the existing `release/bump-charts-<PR_NUMBER>` branch
45+
2. Reset it to `main`: `git reset --hard origin/main`
46+
3. Apply the version bumps on top
47+
4. Force-push the branch
48+
5. Update the existing PR title and body with `gh pr edit`
49+
50+
## Step 4b: If no PR exists
51+
52+
1. Create branch `release/bump-charts-<PR_NUMBER>` from `main`
53+
2. Apply the version bumps
54+
3. Commit changes with message: `Bump chart versions for release PR #<PR_NUMBER>`
55+
4. Push the branch
56+
5. Use the **pull-request-creator** agent to open a PR. Provide the motivation:
57+
- Which charts were bumped and to which versions
58+
- Note that this PR should be merged before the release PR #<PR_NUMBER>
59+
60+
## Step 5: Report
61+
62+
Return a structured report:
63+
64+
```
65+
## Bump Charts Result
66+
67+
### PR
68+
- PR #XXX: <url> (opened/updated)
69+
70+
### Bumped Charts
71+
- cortex: 0.0.47 → 0.0.48
72+
- cortex-postgres: 0.5.14 → 0.5.15
73+
74+
### Updated Bundles
75+
- cortex-nova/Chart.yaml: cortex-postgres 0.5.14 → 0.5.15, cortex 0.0.47 → 0.0.48
76+
```
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
---
2+
name: release-changelog
3+
description: Takes a release digest with bumped chart versions, generates a changelog entry, prepends it to CHANGELOG.md, and opens or updates a changelog PR.
4+
tools: Bash, Read, Write, Edit, Agent
5+
model: inherit
6+
---
7+
8+
# Release Changelog Agent
9+
10+
You receive the release PR number, a release digest (with commit details and breaking changes), and the bumped chart versions. Your job is to generate the changelog entry, prepend it to CHANGELOG.md, and open/update a PR.
11+
12+
---
13+
14+
## Input
15+
16+
The caller provides:
17+
1. The release PR number (e.g. `123`)
18+
2. The release digest (with commits by component, breaking changes, and changed charts)
19+
3. The bumped chart versions (e.g. `cortex: 0.0.47 → 0.0.48, cortex-postgres: 0.5.14 → 0.6.0`)
20+
21+
## Step 1: Generate the changelog entry
22+
23+
Using the digest and bumped versions, generate a changelog following this template:
24+
25+
```markdown
26+
## YYYY-MM-DD — [#NNN](https://github.com/cobaltcore-dev/cortex/pull/NNN)
27+
28+
### <chart-name> v<NEW_bumped_version> (<appVersion>)
29+
30+
Breaking changes:
31+
- <bullet per meaningful change>
32+
33+
Non-breaking changes:
34+
- <bullet per meaningful change>
35+
36+
... repeat for each changed chart ...
37+
38+
### General
39+
40+
Breaking changes:
41+
- <bullet per meaningful change>
42+
43+
Non-breaking changes:
44+
- <bullet per meaningful change>
45+
```
46+
47+
Rules:
48+
- Use the NEW bumped version numbers (provided in input), NOT the pre-bump versions.
49+
- One `###` section per changed chart only.
50+
- For bundle charts, list which library versions they include, then any bundle-specific changes.
51+
- Omit `### General` if empty.
52+
- No commit SHAs, one line per bullet.
53+
- Omit `Breaking changes:` subsection if there are none for that chart.
54+
- Omit `Non-breaking changes:` subsection if there are none for that chart.
55+
56+
## Step 2: Update CHANGELOG.md
57+
58+
1. If `CHANGELOG.md` does not exist, create it with a `# Changelog` header.
59+
2. Read the existing `CHANGELOG.md`.
60+
3. Insert the new changelog entry immediately below the `# Changelog` header (before any existing entries).
61+
62+
## Step 3: Check for existing changelog PR
63+
64+
```
65+
gh pr list --head release/changelog-<PR_NUMBER> --state open --json number,url
66+
```
67+
68+
## Step 4a: If a PR already exists
69+
70+
1. Check out the existing `release/changelog-<PR_NUMBER>` branch
71+
2. Reset it to `main`: `git reset --hard origin/main`
72+
3. Apply the changelog update on top
73+
4. Force-push the branch
74+
5. Update the existing PR title and body with `gh pr edit`
75+
76+
## Step 4b: If no PR exists
77+
78+
1. Create branch `release/changelog-<PR_NUMBER>` from `main`
79+
2. Apply the changelog update
80+
3. Commit with message: `Update changelog for release PR #<PR_NUMBER>`
81+
4. Push the branch
82+
5. Use the **pull-request-creator** agent to open a PR with:
83+
- Title: `Update changelog for release PR #<PR_NUMBER>`
84+
- Motivation: This PR adds the changelog entry for release PR #<PR_NUMBER>. It should be merged after the release PR.
85+
86+
## Step 5: Report
87+
88+
Return a structured report:
89+
90+
```
91+
## Changelog PR Result
92+
93+
### PR
94+
- PR #YYY: <url> (opened/updated)
95+
96+
### Changelog Entry
97+
<the full changelog entry text that was generated>
98+
```
99+
100+
Important: Include the full changelog entry text in your report — the orchestrator needs it for the next step.

.claude/agents/release-digest.md

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
---
2+
name: release-digest
3+
description: Fetches PR metadata, classifies commits by component, checks helm charts for updated appVersions, determines breaking changes, and produces a structured release digest.
4+
tools: Bash, Read
5+
model: inherit
6+
---
7+
8+
# Release Digest Agent
9+
10+
You produce a structured release digest for a given PR number. The caller passes you the PR number as context.
11+
12+
---
13+
14+
## Step 1: Fetch PR metadata
15+
16+
```
17+
gh pr view <PR_NUMBER> --json number,title,body,commits,files
18+
```
19+
20+
## Step 2: Classify commits
21+
22+
For each commit SHA in the PR, inspect the changed files:
23+
24+
```
25+
git show --name-only --format="%H %s" <sha>
26+
```
27+
28+
Classify each commit to a component:
29+
- **Cortex shim**: code touching `internal/shim` or `cmd/shim`
30+
- **Cortex postgres**: code touching the postgres docker image (`postgres/`), or its helm chart (`helm/library/cortex-postgres`)
31+
- **Cortex core**: core code touching anything else — the manager or external scheduler logic of cortex
32+
- **General**: CI, tooling, docs, or other non-code changes
33+
34+
## Step 3: Check helm charts for updated appVersions
35+
36+
Read through the cortex helm charts in the `helm/library/` folder. Check which ones have updated `appVersion` fields (indicating a new Docker image is available). Compare the appVersion in the current branch to what's on `main`:
37+
38+
```
39+
git diff main...HEAD -- helm/library/*/Chart.yaml
40+
```
41+
42+
## Step 4: Determine breaking changes
43+
44+
Read the actual diff for each commit that touches code. A change is "breaking" if:
45+
- It changes or removes the public API (CRD schemas, CLI flags, REST API endpoints). Additions are NOT breaking.
46+
- It requires a config format change (renaming/removing a values.yaml key, changing expected format).
47+
48+
## Step 5: Produce the release digest
49+
50+
Output in this exact format:
51+
52+
```
53+
## Release Digest — PR #NNN "{title}"
54+
55+
### Changed Charts
56+
- cortex v<current_version> (sha-xxxxxxxx)
57+
- cortex-postgres v<current_version> (sha-xxxxxxxx)
58+
- cortex-nova v<current_version> — includes cortex v<x>, cortex-postgres v<y>
59+
60+
### Commits by Component
61+
62+
#### cortex core
63+
- <sha> <subject>
64+
65+
#### cortex postgres
66+
- <sha> <subject>
67+
68+
#### cortex shim
69+
- <sha> <subject>
70+
71+
#### General
72+
- <sha> <subject>
73+
74+
### Breaking Changes
75+
- [component] <description of breaking change>
76+
(or "None" if no breaking changes)
77+
```
78+
79+
Note: The versions in `### Changed Charts` are the CURRENT versions from Chart.yaml (pre-bump). The bump agent will determine the new versions. Include only charts whose `appVersion` actually changed.
80+
81+
Return ONLY the digest. Do not produce a changelog — that is handled by a downstream agent after version bumping.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
---
2+
name: release-update-description
3+
description: Takes a changelog entry, bump PR reference, and changelog PR reference, and updates the release PR description using gh pr edit.
4+
tools: Bash, Read
5+
model: inherit
6+
---
7+
8+
# Release Update Description Agent
9+
10+
You receive the release PR number, the formatted changelog, the bump PR reference, and the changelog PR reference. Your job is to update the release PR description.
11+
12+
---
13+
14+
## Input
15+
16+
The caller provides:
17+
1. The release PR number (e.g. `123`)
18+
2. The formatted changelog entry text
19+
3. The bump PR number and URL (e.g. `#456 https://github.com/...`)
20+
4. The changelog PR number and URL (e.g. `#457 https://github.com/...`)
21+
22+
## Step 1: Build the PR description body
23+
24+
Construct the PR description using this structure:
25+
26+
```markdown
27+
## Changelog
28+
29+
<changelog entry text here>
30+
31+
## Dependencies
32+
33+
- Bump PR: #<bump_pr_number> (must be merged before this PR)
34+
- Changelog PR: #<changelog_pr_number> (merge after this PR)
35+
```
36+
37+
## Step 2: Update the PR
38+
39+
```
40+
gh pr edit <PR_NUMBER> --body "<body>"
41+
```
42+
43+
Use a heredoc or temp file to pass the body to avoid shell quoting issues.
44+
45+
## Step 3: Report
46+
47+
Return:
48+
49+
```
50+
## PR Description Updated
51+
52+
PR #<PR_NUMBER> description updated with changelog and references to bump PR #<bump_pr_number> and changelog PR #<changelog_pr_number>.
53+
```

0 commit comments

Comments
 (0)