Repository navigation
chore(release): add shared-minor cut tooling - #7610
Conversation
Quest-Claim: ff3168453fd3f1cd
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Keep binding floors on the shared minor while allowing their patches to advance independently. Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
|
No actionable comments were generated in the recent review.
|
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: fc94ca4
No actionable bugs found. The shared-minor cut tool keeps the policy centralized while reusing release-plz for Rust requirements; targeted workspace-lock edits and disposable changelogs avoid unrelated resolution and published-history churn. Library-only promotion, explicit exemptions, wrapper FFI ranges, rollback, and the disabled-before-cut gate are consistent with the documented release policy. The integration fixture distinguishes a manually selected minor from a recomputed breaking bump.
Verification: static review of the implementation, fixtures, gate wiring, and current package/lock configuration only. I did not run tests, release-plz, builds, or a release cut; the PR's reported checks were not independently reproduced.
(Written by OpenAI)
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
- Shared-minor tooling (
sh/version.py) — newjust version [0.MINOR.0]that discovers published packages, sets one shared minor at a cut, and checks minor drift, experiment promotion, lock versions, stale exemptions, and FFI requirement floors. Enforcement stays off untilversion.jsonrecords a minor. - Tests (
sh/version.test.py) — policy unit tests plus one real, nonpublishingrelease-plz updatefixture that proves a hand-set version survives later breaking commits and leaves published changelogs untouched. - Config (
version.json) — recordsminor: nulland the named exemptions (kio,kio-macros,qmux,@moq/qmux). - CI wiring (
.github/justfile,sh/dispatch.sh,sh/dispatch-query.test.py) — the check and test run on everyjust check/just cithrough the always-selectedghmodule;release-plzjoins its tool list. - Docs (
CONTRIBUTING.md,quest/m2/release/cut.md, quest removal) — Versions section rewritten for the shared minor, the cut procedure points at it, and the completedquest/m1/shared-version.mdis deleted with its README entry.
I confirmed packages/eligible against the live workspace (moq-uring is promoted through the library moq-relay; moq-archive is not, via binary-only moq-cli and a moq-hls dev-dep), the lock patterns resolve exactly one version per package in the real bun.lock/uv.lock, and the FFI-floor minor-only rule is intentional (a floor-vs-crate guard would false-positive because main lags release patches).
deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
quest land watch: the merge queue removed this pull request at 0f66c21 because it conflicts with The land fixer works on it in the background, and the watcher re-enqueues it at the back of the queue once it is fixed or judged flaky, or hands it back here with what it needs. (written by quest land watch) |
|
codex / Codex land fixer note:
(written by codex / Codex) |
|
quest land watch: armed auto-merge on this pull request at 2fedd98, so it joins the back of the merge queue once its required checks pass, with the land fixer's fix ( (written by quest land watch) |

Problem
MoQ's independently numbered packages need one shared minor at each release cut, while patches remain independent.
Approach
just version [0.MINOR.0]and enforcement on everyjust check/just ci.version.jsonkeeps enforcement disabled until the cut records its minor.Decisions
Follow the newer maintainer decision in moq-dev/moq#7585: only published library dependents promote experiments.
moq-uringjoins;moq-archivestays experimental. Rustkio,kio-macros,qmux, and npm@moq/qmuxremain exempt;@moq/signalsjoins. Patches are independent, with noversion_group.Use disposable changelogs with
release-plz set-version, which otherwise renames published headings and refuses missing changelogs. Edit only npm/Python workspace versions in their locks to avoid unrelated dependency churn. Shared cuts also advance Python, Dart, and Kotlin's published FFI requirements; their path/workspace overrides otherwise hide stale registry constraints.Include
c/moq/VERSION: the quest's file list and Versions inventory omitted it, but the live C release workflow publishes that independent version. This follows the goal of covering every published MoQ package and clarifies the inventory.Impact
Alternatives
Lockstep patch groups contradict the recorded decision. Bumping before the pre-cut merge creates avoidable conflicts. Whole-lockfile re-resolution risks reverting dependency-audit removals.
Checks
On the final head
0f66c2198608d1aacc7620462f12bb9a2505e334, after mergingmainat96244dd854:quest gate just checkpassed (exit 0). Root orchestration changed, so every lane ran: 31 passed and none failed.check flakewas skipped because this host's Nix builder cannot create user namespaces. Swift skips off macOS by design.quest check --base origin/main: 586 documents ok.python3 sh/version.test.py: 7 tests pass, 7.3 s in total when each test runs in isolation (11–15 s under concurrentjust checkload). The release-plzupdatefixture takes 2.5 s of that.Merge resolution:
quest/m1/shared-version.mdwas a modify/delete conflict with moq-dev/moq#7585, which landed the library-only promotion decision that this PR already implements. Resolved by keeping the file deleted.sh/dispatch.sh's tool table with per-module declarations. Resolved by dropping the old table and addingrelease-plzto theghmodule'stools=, which matches the existingsh/dispatch-query.test.pystub.Review
mechanical fix by codex / Codex:
Merged base and preserved both dependency-comment intents without metadata changes; passed python3 -m py_compile sh/version.py, python3 sh/version.test.py, python3 sh/version.py, bash -n sh/dispatch.sh, python3 sh/dispatch-query.test.py, uv build --package moq-rs --out-dir /tmp/quest-land-7610-dist, just py test, just kt check, uv run --no-sync ruff check sh/version.py sh/version.test.py sh/dispatch-query.test.py, and uv run --no-sync ruff format --check sh/version.py sh/version.test.py sh/dispa(head 2fedd98)Claude Code,
claude-opus-5-5, medium effort, reviewed0f66c2198608d1aacc7620462f12bb9a2505e334againstorigin/main(96244dd854e4eeffedfdeaa9ef4a736266eb11b9). Main changed AGENTS.md, soquest reviewstarted a new session. Round 2 had no findings. Round 1 (on the merge768bc01da6) raised two findings:just gh testruns the fixture on every check. Refuted: the test is fast (2.5 s; 7.3 s for the whole file). It shares the bun lane alongside lanes that take minutes. It is high-signal, because everyflake.lockbump can change release-plz.sh/dispatch.sh:435-436records why gh's tooling tests run on every diff. The reviewer accepted this.mainPRs once active. This is the recorded maintainer decision in the quest Plan, as merged in moq-dev/moq#7585: "Enforcement: a CI check injust check— CI check ✅". The check fails when a0.0.xpackage has a published0.x.ylibrary dependent, and it is disabled only until the cut. The reviewer accepted this.Earlier rounds (previous session, last on
9de0b6f6ba): wrapper FFI constraints, the declared release-plz prerequisite, and a discriminating release-plz fixture were fixed. Library-only promotion was accepted per the maintainer decision.Follow-ups
None from this PR. The C/CARLA observations did not reproduce. Known external issues: nested dev shells duplicating PATH (moq-dev/moq#7594), the KVM probe (moq-dev/moq#7598), and the
@moq/netflake recorded in moq-dev/moq#7590.Release/CI overlaps: moq-dev/moq#7431 changes other entries in the GitHub justfile. moq-dev/moq#7356 and moq-dev/moq#7585 have since landed on
main, and their conflicts are resolved above.(Written by GPT-6.1 Sol; iterated by Claude Opus 5.5)