Repository navigation
feat(OMN-20710): post-merge bot bumps the onex plugin version; PRs stop racing - #2609
Conversation
…op racing Adopts the OMN-20497 approach per operator ruling 2026-10-08T03:53:09Z. A single bot bump PR now opens after each dev merge, replacing the per-PR bump requirement: every open plugin PR claimed the same next version, and 47 of dev's 161 merges since 2026-09-30 set it. The per-PR check in scripts/validation/validate_plugin_version_bump.py now passes if the version is unchanged. If changed, it must be dotted integers (BROKEN_VERSION) and above the merge base (LOWERED_VERSION). plugin.json and the marketplace.json entry must agree (MARKETPLACE_SKEW). Added --bump-to-base flag to the existing validator. It raises both version files to the next patch above the base when shipped files changed, editing only version bytes. A second run changes nothing. New .github/workflows/plugin-version-bump.yml triggers on dev push, 30-minute schedule, and manual dispatch. It maintains one bot PR on automation/omn-20710-plugin-version-bump, pushing only when version files change or conflicts exist, and closes the PR when dev is current. Updated CLAUDE.md, pre-commit hook, and workflow comments. Rewrote tests/ci/test_plugin_version_bump_gate.py with 36 tests covering the bump step.
…0184): author OCC companion for OmniNode-ai/omniclaude#2609 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head f9330d14be45a4761a77a94ef3de878dbf018d03.
|
Lab: host=h202 lane=plugin-race-0355 head=f9330d14be45a4761a77a94ef3de878dbf018d03; uv run pytest tests/ci/test_plugin_version_bump_gate.py -q -> 36 passed. |
✅ Hostile Reviewer — PASSEDBlocking findings (critical/error): 0 Findings
Gate semantics (pilot phase)
Powered by omniintelligence.review_pairing.cli_review — node-based adversarial review via HandlerLlmCliSubprocess (OMN-8524) |
Fixed test failure in tests/workflows/test_automated_pusher_identity_omn18273.py::test_every_git_push_workflow_is_classified by adding plugin-version-bump to BRANCH_PUSHERS. The job mints the App token fail-closed, sets the bot identity, and stamps Onex trailers; 10 tests in that file pass.
OMN-20710: post-merge bot bumps the onex plugin version; PRs stop racing
Base: dev
Summary
Every open plugin PR had to claim the same next onex version, so each merge turned the others red on the Plugin Version Bump Gate (2026-10-07: #2591, #2596 and #2598 together). Lane cause-claude-bump-2245 measured 47 of dev's 161 merges since 2026-09-30 setting the plugin version. Operator RULING 2026-10-08T03:53:09Z lane=orchestrator-716d adopts omniclaude-internal's OMN-20497 approach: one bot bump PR after each dev merge; the per-PR check refuses only a lowered or broken version.
This PR replaces the per-PR requirement to bump the plugin version with a post-merge bot bump. It updates the validator to allow unchanged versions, adds a
--bump-to-basemode, introduces a new workflow for automated bumps, and updates documentation and hooks.What changed
scripts/validation/validate_plugin_version_bump.py(OMN-16913) now passes if the version is unchanged. A changed version must be dotted integers (BROKEN_VERSION) and above the merge-base value (LOWERED_VERSION).plugin.jsonand the onex entry inplugins/onex-dev-marketplace/.claude-plugin/marketplace.jsonmust agree (MARKETPLACE_SKEW). NO_BUMP is removed. The check and job name "Plugin Version Bump Gate" are unchanged.--bump-to-baseadded to the same validator. When shipped files changed since--base, it raises both files to the next patch above the base, editing only the version value bytes. A second run changes nothing..github/workflows/plugin-version-bump.ymltriggers on push to dev, a*/30schedule backstop, andworkflow_dispatch. It runs--bump-to-baseagainst the last dev commit that set the version. It keeps one bot PR open onautomation/omn-20710-plugin-version-bumpwith title "chore(OMN-20710): post-merge plugin version bump", usingONEXBOT_OCC_APP_ID. It pushes only when version files would change or the branch conflicts with dev. It closes the PR when dev already carries a version for every merged plugin change. There is no batching hold (omniclaude-internal has one), because the ruling is one bump PR after each dev merge; dev does not require branches up to date, so the branch is not rebuilt on every merge.plugin-version-bump-gaterenamed to "Plugin version not lowered or broken (OMN-20710)". Gate workflow comments updated. OneCLAUDE.mdbullet under Git/CI Standards: PRs do not bump the onex version.Proof against the acceptance criteria
--bump-to-basechanges nothing; with one plugin change added it prints two lines,plugin.jsonand the dev marketplace entry 2.4.52 -> 2.4.53, only those two version lines change, and a second run prints nothing.Tests
tests/ci/test_plugin_version_bump_gate.py: 36 passed (was 11), including the workflow's bump step shell run from the YAML and a workflow shape test.Not in this PR
Evidence-Ticket: OMN-20710
Evidence-Source: OCC#13246