release: 0.1.0 #110
Labels
No labels
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-triage
ready
release
scope:apply
scope:capture
scope:coolify-api
scope:fleet
scope:manifest
scope:secrets
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/cast#110
Loading…
Reference in a new issue
No description provided.
Delete branch "release/0.1.0"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The
release: X.Y.ZPR of the ceremony (#96):package.jsonalready reads 0.1.0 (it has since the first commit — the bump is a no-op), so this PR is the CHANGELOG stamp:## Unreleased→## 0.1.0 — 2026-07-19. After merge, tag the merge commit bare0.1.0and push —release.ymlasserts tag==version, builds the prebuiltcast-0.1.0.tgz(bin + dist + pruned node_modules), and publishes with the stamped section as body. Follow-up bumps main to0.1.1-dev.This is cast's first release — the installer's default channel goes live:
curl … install.sh | bashstops refusing, resolves 0.1.0, and installs the prebuilt asset with no npm and no tsc on the operator's machine.Evidence (2026-07-19, twice — before and after the fix round): suites 606/606; two live Coolify 4.1.2 instances driven through the full A→B flow (apply/diff idempotent, smoke's bulk-upsert contract on both, fleet coverage, destroy interlock); the ceremony rehearsed on a scratch fork including the real asset build —
cast-0.1.0.tgzverified to containdist/cli.js+ node_modules and to run from a live default-channel install. This PR's CI is the first to prove #108's fix on a genuinely stamped tree.🤖 Generated with Claude Code
Verdict: Approve — I agree with this as-is.
First-release ceremony stamp only:
CHANGELOG.md## Unreleased→## 0.1.0 — 2026-07-19.package.jsonis already"version": "0.1.0"at tipc6bcc97, so the version bump is correctly a no-op and this PR is purely the stamp that unlocks tag0.1.0+release.ymlprebuilt asset.Diff is one line; scope matches the stated ceremony. CI build/install/scope green. No blockers.
Verdict: Approve.
Verified at head
c6bcc97(one commit atop current mainc0e4fab, so #109's release-suite fix is in the tree) in a clean worktree.Scope — the diff is exactly the ceremony stamp and nothing else:
CHANGELOG.md:8## Unreleased→## 0.1.0 — 2026-07-19. No code changes smuggled in.Version consistency —
0.1.0everywhere the version lives:package.json:3,package-lock.json:3(and its root package entry), and./bin/cast --versionon the built tree printscast 0.1.0 (...)(version is read frompackage.json, persrc/cli.ts:1341).git tag -lon origin is empty, so this is genuinely the first release and the no-op bump the PR body describes is accurate.Ceremony vs CONTRIBUTING.md:47-71 — step 1 (release PR: bump + stamp,
releaselabel) is satisfied: the bump is a legitimate no-op (both files already read 0.1.0), the stamp is this diff. Steps 2 (bare0.1.0tag on the merge commit) and 3 (follow-up0.1.1-devbump) are post-merge and correctly stated in the PR body.Release-notes extraction on the stamped tree — this is the first PR to exercise #108's fix for real, and it works:
bash .github/scripts/release-notes.sh 0.1.0extracts the stamped section non-empty (88 lines) and exits 0, sorelease.yml's notes step (.github/workflows/release.yml:44-49) will pass on the tagged commit, and the tag==version assert at.github/workflows/release.yml:34-41matches.CHANGELOG completeness — the file was created in #96's commit (
ced5c49), and every PR merged since is accounted for in the 0.1.0 section: #96 (PR #101) under Added; #102 (PR #105), #103 (PR #107), #104 (PR #106), #108 (PR #109) under Fixed. The preamble honestly scopes pre-changelog history to git.Suites on the stamped tree —
npm ci,npm run build(tsc clean),npm test606/606 passed (35 files, includingtest/release.test.tsagainst the real stamped CHANGELOG),npm run check(biome,--error-on-warnings) clean.Non-blocking follow-up —
README.md:38-41's "Transitional, until 0.1.0 is cut" callout (and the pre-release wording aroundREADME.md:30) becomes stale the moment the tag exists; a natural home for its removal is the0.1.1-devfollow-up PR.— automated review by
claude-bot-andresmgsl· heavy-duty-review-botVerdict: I agree with everything and have no additional feedback. The diff is limited to stamping the first 0.1.0 changelog section, the package version is already 0.1.0 as documented, and all current checks pass.
@danmt — handing this one to you. Final state:
What it is: the
release: 0.1.0ceremony PR (#96):package.jsonalready reads 0.1.0 (since the first commit — the bump is a no-op), so this is the CHANGELOG stamp:## Unreleased→## 0.1.0 — 2026-07-19. cast's first release ships by manual tag (the documented first-release edge — the version doesn't transition, so the merge door correctly won't fire): after merging, tag the merge commit bare0.1.0and push;release.ymlbuildscast-0.1.0.tgzand publishes. The automation (cast#112, in review) owns everything from 0.1.1 on.Review history: one round — all three bots approved, no changes requested.
Evidence: suites 606/0 on the stamped tree (the #108 fix's first real proof); the asset path rehearsed end to end on a scratch fork including a live default-channel install; two full drills of the two-instance flow behind it.
Ready for your review.
🤖 Generated with Claude Code