Skip to content

Release process must advance the next edge line (reconcile + calendar bump) on every release, not just stable#455

Merged
clkao merged 2 commits into
mainfrom
spacedock-ensign/release-advances-edge-next-line
Jul 1, 2026
Merged

Release process must advance the next edge line (reconcile + calendar bump) on every release, not just stable#455
clkao merged 2 commits into
mainfrom
spacedock-ensign/release-advances-edge-next-line

Conversation

@clkao

@clkao clkao commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

Keep the next edge line advanced on every release tag, so the edge marketplace serves the just-released plugin instead of drifting behind main.

What changed

  • Add a release.yml edge-advance job reconciling next on every tag (prerelease and stable).
  • Reconcile with git merge -X theirs — a force-free fast-forward push, never --force/reset.
  • Add spacedock-release dev-preversion, stamping next past a stable release (X.Y.Z → X.(Y+1).0-pre1).
  • Couple the divergence fixture and a new wiring guard to the on-disk release.yml.
  • Document the edge-line advance in docs/releasing.md.

Evidence

  • internal/release + cmd/spacedock-release: all suites passed; go build/gofmt/vet clean.
  • Detached adversarial audit: 2 material test-coupling holes found and fixed, both re-confirmed closed.

s2

Spike Test and others added 2 commits June 30, 2026 21:20
release.yml's hyphenated-tag carve-out advanced neither `stable` (correctly)
nor `next`, so a prerelease cut left the edge marketplace serving a stale
plugin — the 0.24.0-pre1 cut drifted `next` 40 commits behind `main` and
hard-blocked `spacedock codex` on a binary/plugin version-compat check.

Add an `edge-advance` job (`needs: goreleaser`, a sibling so a reconcile
conflict can't unwind the published release) that reconciles `next` to the
tagged commit via `git merge -X theirs` on both tag paths, then bumps the
marketplace calendar key. On a stable tag it also stamps `next` PAST the
release to the post-release dev pre-version (X.(Y+1).0-pre1) so the edge line
never masquerades as the stable version it just shipped. The reconcile is a
fast-forward merge, never a reset or force-push.

Add release.DevPreVersion + the `spacedock-release dev-preversion` subcommand
(reusing stamp-version/bump-calendar unchanged), a temp-repo fixture proving
the reconcile closes the divergence force-free on both paths, a never-forces
workflow guard with adversarial twins, and the docs/releasing.md edge-line
section.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Close the two coupling holes the detached adversarial audit found: flipping
release.yml's reconcile steps to `-X ours` (the 0.24.0-pre1 incident) or
widening the stable step's `if:` to `always()` both stayed green.

- The divergence fixture now reads its merge `-X <strategy>` from the parsed
  edge-advance reconcile step for the tag's path instead of hardcoding
  `-X theirs`, so a workflow drift to `-X ours` reds the tree-match assertion
  directly. Corrected the overclaiming doc-comment (it reconstructs the
  sequence; it does not run release.yml's steps).
- Add TestReleaseWorkflowEdgeAdvanceWiring + assertEdgeAdvanceWiring in the same
  readWorkflow harness, asserting both reconcile steps merge `-X theirs`, the
  `if:` guards are complementary (exactly one fires per tag), and bump-calendar
  carries no `if:`. Adversarial twins (-X ours, always(), copy-paste guard,
  gated bump) each red. Consolidated on a shared edgeAdvanceJob lookup.

The never-force and DevPreVersion lenses are unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@clkao
clkao merged commit dbc65d9 into main Jul 1, 2026
4 of 8 checks passed
@clkao
clkao deleted the spacedock-ensign/release-advances-edge-next-line branch July 1, 2026 04:47
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