Skip to content

docs: close foundation roadmap for release - #52

Merged
rgehrsitz merged 3 commits into
mainfrom
codex/rex-foundation-release
Sep 14, 2026
Merged

rgehrsitz merged 3 commits into
mainfrom
codex/rex-foundation-release

Conversation

@rgehrsitz

Copy link
Copy Markdown
Owner

Completes the foundation release boundary after M8.10: M8 is marked complete and the independently gated dense commit allocation work moves to REX-M9. Adds reviewed v0.2.0-alpha operator notes, documents release-note preparation, and rejects malformed release tags before archive creation.

The supported release remains the serial durable daemon on a standalone Redis commit domain. Redis 7.0+ uses the default scripted transaction mode; Redis 6.2+ requires explicit WATCH mode. Shared-Redis concurrent workers and Redis Cluster remain outside the supported contract.

Validation

  • GOCACHE=/tmp/rex-go-cache go test ./...
  • GOCACHE=/tmp/rex-go-cache go test -race ./...
  • GOCACHE=/tmp/rex-go-cache go vet ./...
  • GOCACHE=/tmp/rex-go-cache go build ./...
  • bash -n scripts/release/build-archives.sh
  • invalid VERSION rejection returns exit 2
  • VERSION=v0.2.0-alpha builds six release archives and all SHA-256 checks pass
  • git diff --check

Release follow-up

After review and merge, create the annotated v0.2.0-alpha tag from the merged main commit. The tag-triggered workflow will publish the archives and generated GitHub release; verify its assets and apply the reviewed operator notes before declaring the release complete.

@rgehrsitz rgehrsitz left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: docs — close foundation roadmap for release (M8 complete, M9, v0.2.0-alpha)

Verified on codex/rex-foundation-release (ba0f51e): go test ./... all packages pass, go vet/go build clean, git diff --check clean, bash -n clean, tree left clean (dist/ is gitignored). I also exercised the release mechanics end-to-end rather than trusting the script by reading. No blockers.

Release mechanics — verified by execution, not just inspection

  • Tag → workflow → script chain is coherent for a prerelease. release.yml triggers on v* (matches v0.2.0-alpha), passes github.ref_name as VERSION, auto-adds --prerelease on -, and --verify-tag matches the annotated-tag procedure in RELEASING.md.
  • Semver gate behaves correctly. I ran 11 VERSION cases: v0.2.0-alpha, v0.1.0, v1.10.3-rc.1, v2.0.0+build.5 accepted; bad, v1.2, v01.2.3 (leading zero), v1.2.3- (dangling hyphen), NOTAVERSION all rejected with exit 2, before any archive work. The regex is unquoted on the RHS (portable, safe under macOS bash 3.2), and exit 2 distinguishes bad input from build failure.
  • Full archive build reproduces the PR's claim. A valid-VERSION run produced all six archives (4× .tar.gz, 2× .zip) and shasum -a 256 --check checksums.txt passes 6/6. Bonus observation: pushing a mistyped non-semver v* tag now yields a failed workflow run instead of a silently misnamed release — the intended hardening, just noting the failure mode is visible in Actions.

Docs consistency — checked against sources

  • M8 Complete is justified. PRs #50 (0e24a3c) and #51 (c323ddb) are merged, so "M8.1–M8.10 are integrated" is factual; D15 now reads "Accepted for REX-M8.10 in PR #51", resolving the proposed-vs-integrated wording.
  • M9 section faithfully transcribes D15. All eight bullets match the D15 gates I reviewed under PR #51: same 5,000-event fixtures, CV ≤ 20% + p95 max/min ≤ 1.20 control gates, 150KB/1,500-object targets, 1.10x / 0.90x dense gates, 0.98x/1.02x sparse guards, 5% Redis-CPU band, byte-identical formats, and revert-without-D13 falsification. No gate drift introduced in transcription.
  • Release-notes contract claims verify. rexc v4–v7 + -legacy-v3 wirken as described per BYTECODE_COMPATIBILITY.md; Redis 7.0+/script vs 6.2+/explicit-WATCH matches the M8.9 operator docs; serial-daemon/standalone-domain scope matches D15; all four linked guides exist; v0.1.0-alpha tag exists as the stated baseline.

Nits (non-blocking)

  1. Roadmap provenance convention drift. Earlier milestone rows carry merge commit hashes (e.g., M8.8 d01b5ad); the M8.9/M8.10 rows cite only PR numbers. Consider appending 0e24a3c and c323ddb for consistency — cheap, and this table is the project's audit trail.
  2. Reviewed notes vs published notes can drift. The workflow publishes --generate-notes and never reads docs/RELEASE_NOTES_<tag>.md; the file is a manual review aid applied via step-5 edits. The procedure covers it, but the drift risk is structural — a future improvement could pass the reviewed file as the release body (or explicitly record why generated notes are preferred).
  3. Follow-up sequencing is correct as written (tag from merged main, verify assets, apply notes before declaring complete) — just confirming the tag must be created after this PR merges, since the release boundary it declares doesn't exist on main yet.

Clean release PR: mechanics proven by execution, docs consistent with the evidence line from M8.8→M8.10, and M9 correctly staged as independently gated post-release work.

@rgehrsitz

Copy link
Copy Markdown
Owner Author

Addressed both review nits in 8702312:

  • Added the M8.9 (0e24a3c) and M8.10 (c323ddb) merge hashes to the roadmap audit trail.
  • Removed the reviewed-versus-published notes drift: the release workflow now requires docs/RELEASE_NOTES_<tag>.md and supplies it with --notes-file alongside --generate-notes, which prepends the reviewed operator guidance to GitHub's generated change notes. The release guide now documents and verifies that behavior.

Validation after the changes: workflow YAML parses, gh release create --help confirms supplied notes can precede generated notes, git diff --check passes, and GOCACHE=/tmp/rex-go-cache go test ./... passes.

@rgehrsitz

Copy link
Copy Markdown
Owner Author

README release audit completed in ebc19a7:

  • documents all five packaged command-line programs, including rex_stressor;
  • states the Redis 7.0+ scripted / Redis 6.2+ WATCH durable boundary, serial daemon contract, standalone commit domain, and unsupported Cluster/shared-Redis worker topologies;
  • links reload and managed-partition ownership rollout guidance;
  • aligns tag and reviewed/generated release-note behavior with the release workflow;
  • replaces stale uppercase/group-shape prose with the actual recursive lowercase all/any grammar, v6 for, and v7 emit fields;
  • removes the incorrect prohibition on colons in fact names and documents durable reserved names instead.

go test ./..., git diff --check, and a complete local README-link check pass.

@rgehrsitz
rgehrsitz merged commit 2989d15 into main Sep 14, 2026
5 checks passed
@rgehrsitz
rgehrsitz deleted the codex/rex-foundation-release branch September 14, 2026 23:41
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