Skip to content

fix(OMN-16761): retire the legacy onex run alias — core owns the run verb - #2934

Merged
github-actions[bot] merged 1 commit into
devfrom
jonah/omn-16761-retire-legacy-run-alias
Aug 27, 2026
Merged

github-actions[bot] merged 1 commit into
devfrom
jonah/omn-16761-retire-legacy-run-alias

Conversation

@jonahgabriel

@jonahgabriel jonahgabriel commented Aug 27, 2026 •

Copy link
Copy Markdown
Collaborator

BREAKING: onex run <node> was an undocumented alias of onex node since April — removed. Use onex node.

If you script onex run <some_node>, change it to onex node <some_node>. Flags are unchanged (--contract, --input, --state-root, --backend, --timeout, --verbose).

In practice this alias already stopped working when omnibase_core 0.46.13 landed (see below) — this PR removes the corpse and the warning it emitted, it does not take away a working command.

What was wrong

OMN-8938 (Done, 2026-04-16) renamed this repo's node runner onex run → onex node and left run behind as an alias pointing at the identical callable. The alias was never retired:

node = "omnibase_infra.cli.cli_node:run_node_by_name"
run  = "omnibase_infra.cli.cli_node:run_node_by_name"   # <- pure duplication

omnibase_core 0.46.13 (OMN-16677) then legitimately reused the freed name for the tier-0 local workflow harness. Core's extension loader gives the built-in priority and skips the entry point (cli_commands.py L738-750), so every CLI invocation in an environment with both packages installed printed:

onex.cli extension 'run' conflicts with an existing command, skipping

…and onex run <node> silently stopped running nodes, failing instead with Invalid value for '{delegation|sea}'.

Resolution

Canonical, per repo doctrine (no backwards-compatibility shims; core owns the run verb): delete the alias. node already provides the command and has been the canonical name since April. Verified live that core 0.46.13 ships a built-in run and no built-in node — so the two names have unambiguous owners, and removing run here cannot affect onex node.

Changes

  • pyproject.toml — drop the run onex.cli entry point.
  • tests/unit/cli/test_onex_run.py — deleted. It existed only to assert the alias name; every behavior it covered (unknown-node error shape, --contract override, --input not-found, drift-guard wiring) is already covered by test_cli_node.py. Its most recent revision on this branch's parent had been retargeted at core's harness flags as a stopgap to unblock chore(deps): bump omnibase-core to 0.46.13 (OMN-16677) #2929 — asserting core's CLI surface from this repo couples us to core internals and breaks on unrelated harness changes. Core tests core's command.
  • tests/unit/cli/test_onex_run_alias_retired.py — new guard, pinning the boundary from the side this repo controls: no run declared, node intact, and the node runner reachable under exactly one name (so no future alias recreates this defect).
  • docker/runners/runner-image.lock.json — regenerated. pyproject.toml is a MANIFEST_INPUTS member of scripts/ci/runner_image_identity.py, so the identity digest moves with any entry-point edit.
  • Prose: onex run → onex node in receipt_mode.py, model_receipt_runtime_summary.py, omnimarket_drift_guard.py (incl. the user-facing repair message, which named a command that no longer exists), tests/unit/cli/conftest.py, test_cli_node.py.

Deliberately not touched: scripts/fire-build-loop.sh and src/omnibase_infra/workflows/merge_sweep_workflow.yaml reference onex run <workflow>.yaml. That is neither this alias (which takes a node name) nor core's new harness (which takes {delegation|sea}) — it is a stale pre-OMN-7068 onex run <contract_path> form, a separate pre-existing defect out of scope here.

Evidence — all four ACs proven live on core 0.46.13

TDD: the new guard was written first and failed RED on the alias (2 failed, 1 passed), then passed GREEN after removal (3 passed).

AC1 — no collision warning:

core version: 0.46.13
AC1 collision warnings: []
AC1 PASS: True

AC2 — onex run resolves to core's harness:

Usage: onex run [OPTIONS] {delegation|sea}
  Run an ONEX workflow on the local in-process runtime.

AC3 — onex node unaffected, flags intact:

Usage: onex node [OPTIONS] NODE_NAME
  --contract FILE   --input FILE   --state-root PATH
  --backend TEXT    --timeout INTEGER   -v, --verbose

AC4 — the Tests (Split 4/15) failures are gone: tests/unit/cli/ + tests/ci/test_runner_image_identity.py + test_fallback_matrix_sync.py + test_seam_released_core_pin.py → 411 passed, 21 skipped (skips are omnimarket absent from this venv, pre-existing).

AC5 — #2929 landed as 381c13ed3 (2026-08-27T16:07:38Z); this branch is rebased on top of it.

Installed entry-point table after the change:

auth, delegate, gate, kafka, node, occ, skill      ('run' declared by infra: False)

Evidence-Ticket: OMN-16761
Evidence-Source: OCC#7314

… verb

OMN-8938 renamed this repo's node runner `onex run` -> `onex node` in April and
left `run` behind as an alias pointing at the IDENTICAL callable
(`cli_node:run_node_by_name`). The alias was never retired.

omnibase_core 0.46.13 (OMN-16677) then legitimately reused the freed name for
the tier-0 local workflow harness. Core's built-in wins the entry-point race, so
every CLI invocation in an environment with both packages installed printed:

    onex.cli extension 'run' conflicts with an existing command, skipping

and `onex run <node>` silently stopped running nodes.

Canonical resolution (doctrine: no backwards-compat shims): delete the alias.
`node` already provides the command and is the canonical name from OMN-8938.

- pyproject.toml: drop the `run` onex.cli entry point
- tests/unit/cli/test_onex_run.py: deleted -- it existed only to test the alias
  NAME; every behavior it asserted is already covered by test_cli_node.py
- tests/unit/cli/test_onex_run_alias_retired.py: new guard pinning the boundary
  from the side this repo controls
- docker/runners/runner-image.lock.json: regenerated (pyproject.toml is a
  MANIFEST_INPUTS member, so the identity digest moves with it)
- prose: `onex run` -> `onex node` where it meant this repo's alias

Evidence-Ticket: OMN-16761
@coderabbitai

coderabbitai Bot commented Aug 27, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 15 minutes.

View limit details

Limit details: You’ve used the included review currently available. Your 130 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 8b3fd0a8-8f14-416f-8d6b-35c989132f71

📥 Commits

Reviewing files that changed from the base of the PR and between 0237fd1 and 199b2c8.

📒 Files selected for processing (9)
  • docker/runners/runner-image.lock.json
  • pyproject.toml
  • src/omnibase_infra/cli/model_receipt_runtime_summary.py
  • src/omnibase_infra/cli/omnimarket_drift_guard.py
  • src/omnibase_infra/cli/receipt_mode.py
  • tests/unit/cli/conftest.py
  • tests/unit/cli/test_cli_node.py
  • tests/unit/cli/test_onex_run.py
  • tests/unit/cli/test_onex_run_alias_retired.py

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Hostile Reviewer — DEGRADED (informational)

Blocking findings (critical): 0
Total findings: 0
Models succeeded: none

Note: All reviewer models failed or were unavailable. Degraded results are informational during the pilot phase (OMN-8468/OMN-8524) and do not block merge. Error: all review endpoints [192.168.86.201:8000 192.168.86.201:8000 ] unreachable — preflight short-circuit (no models available)


Gate semantics (pilot phase)

Verdict Meaning Blocks merge?
passed No critical findings No
blocked CRITICAL findings found Yes
degraded All models unavailable (infra) No (pilot)

Powered by omniintelligence.review_pairing.cli_review — multi-model adversarial review (OMN-8468/OMN-8524)

jonahgabriel added a commit to OmniNode-ai/onex_change_control that referenced this pull request Aug 27, 2026
#7314)

* evidence: OCC companion pass 1 for OmniNode-ai/omnibase_infra#2934

* evidence: OCC companion self-bind for #7314

---------

Co-authored-by: node-occ-companion-effect <occ-companion-effect@omninode.ai>
Co-authored-by: Jonah Gray <jonah@omninode.ai>
@github-actions
github-actions Bot merged commit 16d6169 into dev Aug 27, 2026
185 of 192 checks passed
@github-actions
github-actions Bot deleted the jonah/omn-16761-retire-legacy-run-alias branch August 27, 2026 17:37
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