Skip to content

ci(release): auto-sync master → dev + version non-release builds from the manifest#484

Merged
angel-manuel merged 1 commit into
devfrom
chore/sync-dev-after-release
Jul 22, 2026
Merged

ci(release): auto-sync master → dev + version non-release builds from the manifest#484
angel-manuel merged 1 commit into
devfrom
chore/sync-dev-after-release

Conversation

@angel-manuel

Copy link
Copy Markdown
Contributor

Why

Two gaps in the release-please flow, both visible right now:

  1. dev drifts from master every release. The version/changelog commit release-please lands on master was never carried back to dev. The runbook's step 5 (a manual git merge) was skipped for v0.5.0, so dev's manifest still says 0.4.0 while master reached 0.5.0.
  2. Non-release builds report 0.1.0. Crate versions in Cargo.toml are frozen at 0.1.0 on purpose (D19 — bumping them churns Cargo.lock and breaks the --locked release build), and only release.yml injects OVERSLASH_VERSION. So the dev Cloud Run deployment, local builds, and the dashboard sidebar footer (GET /v1/version) all say 0.1.0.

What

  • .github/workflows/sync-dev.yml — on the release tag push, merge master into dev. A merge, never a rebase (dev forbids non-fast-forward pushes) and never a sync PR (dev's squash-only rule would leave the release commit outside dev's history, so the drift would recur). Idempotent — exits early when dev already contains master — and fails loudly on conflict or a rejected push, pointing at the runbook. Needs RELEASE_PLEASE_TOKEN owned by a repo admin (the dev ruleset's bypass actor); same PAT release-please.yml already uses.
  • crates/overslash-core/build.rs — now emits OVERSLASH_VERSION from .release-please-manifest.json with a -dev suffix (e.g. 0.5.0-dev) when the release workflow didn't set it. The release path is unchanged: an explicit OVERSLASH_VERSION still wins verbatim. This is what makes the sync-back load-bearing rather than mere tidiness.
  • crates/overslash-api/Dockerfile — copies the manifest into the build context (after the dependency-only build layer) so the Cloud Run image reports the release line too.
  • Doc updates: release runbook step 5 + Requirements, DECISIONS D19.

Verification

  • cargo run -p overslash-cli -- --version0.4.0-dev (was 0.1.0; this branch's manifest is at 0.4.0).
  • OVERSLASH_VERSION=0.9.9 cargo build … → reports 0.9.9, no suffix — release path intact.
  • cargo test -p overslash-core build_info — green.
  • vet (agentic) — no issues.
  • sync-dev.yml validated as YAML; the idempotent early-exit means gh workflow run sync-dev.yml is safe to dry-run once merged.

Note: the current v0.5.0 drift still needs a one-off sync — either the manual git merge --no-ff origin/master from the runbook, or a workflow_dispatch of sync-dev.yml once this lands.

🤖 Generated with Claude Code

…rom the manifest

Two gaps after a release-please release: the version/changelog commit that
lands on master was never carried back to dev (dev's manifest sat at 0.4.0
while master reached 0.5.0), and every non-release build reported the frozen
crate version 0.1.0 because only release.yml injects OVERSLASH_VERSION.

- sync-dev.yml: on the release tag push, merge master into dev (never rebase —
  dev forbids non-fast-forward; never a sync PR — dev's squash-only rule would
  leave the release commit outside dev's history). Idempotent, fails loudly on
  conflict/403 with a pointer to the runbook. Needs RELEASE_PLEASE_TOKEN owned
  by a repo admin (the dev ruleset's bypass actor).
- overslash-core build.rs now emits OVERSLASH_VERSION from
  .release-please-manifest.json with a -dev suffix (0.5.0-dev) when the release
  workflow didn't set it, so local + dev-deployment builds report the real
  release line while Cargo.toml stays pinned at 0.1.0 (D19). Dockerfile copies
  the manifest into the build context so the Cloud Run image picks it up.
- Docs: release runbook step 5, DECISIONS D19.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TqH5GWsrHigQYscRvUcMCW
@vercel

vercel Bot commented Jul 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
overslash Ready Ready Preview, Comment Jul 21, 2026 9:19pm

Request Review

@codecov

codecov Bot commented Jul 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@angel-manuel
angel-manuel merged commit 820e408 into dev Jul 22, 2026
11 checks passed
@angel-manuel
angel-manuel deleted the chore/sync-dev-after-release branch July 22, 2026 07:20
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