Skip to content

fix(OMN-12637): repoint ship_dirty_canonical skill to working in-process dispatch - #1723

Merged
jonahgabriel merged 2 commits into
devfrom
jonah/omn-12637-fix-dead-ship-dirty-dispatch
Jun 3, 2026
Merged

jonahgabriel merged 2 commits into
devfrom
jonah/omn-12637-fix-dead-ship-dirty-dispatch

Conversation

@jonahgabriel

@jonahgabriel jonahgabriel commented Jun 3, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Fixes the dead onex run-node node_dirty_canonical_sweep dispatch path documented in the /onex:ship_dirty_canonical skill (OMN-12637, epic OMN-7466).

The SKILL.md "## Dispatch" section documented a Kafka onex run-node ... --input "${INPUT_JSON}" invocation that never resolves:

  • onex run-node (omnibase_core) dispatches over Kafka and waits for a terminal event. The node has no live bus consumer -> SkillRoutingError "Timeout after 30s waiting for response".
  • The local onex node/onex run alias is pinned to --project omnibase_infra, whose installed omnimarket distribution metadata does not register the node's onex.nodes entry point -> Unknown node.
  • --input is a file path on every onex CLI, not a JSON string.

The backing handler is fully synchronous in-process git/gh subprocess work and needs no bus. The only working path is the packaged module entrypoint python -m omnimarket.nodes.node_dirty_canonical_sweep (argparse flags).

Fix (Option B in the ticket)

  • Repoint the SKILL.md "## Dispatch" section to the working in-process entrypoint with its argparse flags.
  • Remove the dead Kafka onex run-node + JSON --input instructions.
  • Correct the misleading dispatch-only/routing-enforced framing (this skill runs an in-process node, not a bus dispatch); add a note explaining the failure mode.

No backing-node handler dirty-file logic touched (owned by the sibling handler-fix PRs). This PR changes only the skill markdown and a new test.

Tests (TDD)

Added tests/unit/skills/test_ship_dirty_canonical_dispatch.py (asserts the documented entrypoint is present, forbids the dead Kafka path, forbids the JSON --input form). Red: 3 of 4 failed against the prior SKILL.md. Green: all 4 pass after the fix.

dod_evidence (OMN-12637)

Evidence-Source: OCC#2120
Evidence-Ticket: OMN-12637

Verified from the omni_home repo root on 2026-06-03 (acceptance #1/#2 — documented command runs and returns valid ModelDirtyCanonicalSweepResult):

$ uv run --project "$PWD/omnimarket" python -m omnimarket.nodes.node_dirty_canonical_sweep --dry-run --repos nonexistent_xyz
{"repos_checked": 1, "repos_dirty": 0, "repos_shipped": 0, "repos_failed": 0, "dry_run": true, "results": []}
exit 0
  • New test: 4 passed. Skill validators (backing-node, aspiration, reject-imperative, instructional-routing) Passed.
  • ruff format/check clean; mypy on the test Success.
  • Full suite uv run pytest tests/ -m "not integration" (no -k): 11018 passed; 3 pre-existing failures unrelated to this change (tests/delegation/test_runner.py bifrost_delegation.yaml GEMINI_API_KEY drift; tests/hooks/test_sweep_preflight.py) — neither file touched (git diff origin/dev = SKILL.md + new test only).
  • pre-commit (pre-commit + pre-push stages) on changed files: all Passed.

Central OCC evidence: OmniNode-ai/onex_change_control PR #2120 (contracts/OMN-12637.yaml + drift/dod_receipts/OMN-12637/...).

Ticket: OMN-12637. Epic: OMN-7466.

…ess dispatch

The /onex:ship_dirty_canonical SKILL.md documented dispatch via
`uv run onex run-node node_dirty_canonical_sweep --input "${INPUT_JSON}"`,
which never resolves:

- `onex run-node` (omnibase_core) dispatches over Kafka and waits for a
  terminal event; node_dirty_canonical_sweep has no live bus consumer, so it
  fails with SkillRoutingError "Timeout after 30s waiting for response".
- The local `onex node`/`onex run` alias is pinned to --project omnibase_infra,
  whose installed omnimarket dist metadata does not register the node's
  onex.nodes entry point -> "Unknown node".
- `--input` is a file path on every onex CLI, not a JSON string.

The handler is fully synchronous in-process git/gh subprocess work and runs
correctly via its packaged module entrypoint
`python -m omnimarket.nodes.node_dirty_canonical_sweep` (argparse flags).

Repoint the Dispatch section to that working entrypoint (Option B in the
ticket), remove the dead Kafka/JSON instructions, and correct the misleading
dispatch-only/routing-enforced framing (this skill runs an in-process node, not
a bus dispatch). No handler dirty-file logic touched (owned by OMN-12635/12636).

Adds tests/unit/skills/test_ship_dirty_canonical_dispatch.py asserting the
documented surface uses the working entrypoint and forbids the dead path
(TDD: failed against the prior SKILL.md, passes after the fix).
@coderabbitai

coderabbitai Bot commented Jun 3, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

@jonahgabriel, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 19 minutes and 44 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: aba74300-0f75-483c-9117-5fa036fb7c23

📥 Commits

Reviewing files that changed from the base of the PR and between b60e95c and a8b78b1.

📒 Files selected for processing (3)
  • contracts/OMN-12637.yaml
  • plugins/onex/skills/ship_dirty_canonical/SKILL.md
  • tests/unit/skills/test_ship_dirty_canonical_dispatch.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jonah/omn-12637-fix-dead-ship-dirty-dispatch

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

@jonahgabriel
jonahgabriel enabled auto-merge June 3, 2026 15:25
@github-actions

github-actions Bot commented Jun 3, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ Hostile Reviewer — DEGRADED (informational)

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

Note: All reviewer models failed or were unavailable. Degraded results are informational during the pilot phase (OMN-8524) and do not block merge. Error: cli_review exited non-zero (all models failed or binary error)


Gate semantics (pilot phase)

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

Powered by omniintelligence.review_pairing.cli_review — node-based adversarial review via HandlerLlmCliSubprocess (OMN-8524)

@jonahgabriel
jonahgabriel added this pull request to the merge queue Jun 3, 2026
validate-pr-contracts (Layer 1 gate) requires contracts/OMN-12637.yaml in the
omniclaude repo with non-empty dod_evidence. Mirrors the OMN-7466 contract style;
docs/test-only change, backing handler logic untouched (OMN-12635/12636).
@jonahgabriel
jonahgabriel removed this pull request from the merge queue due to a manual request Jun 3, 2026
@jonahgabriel
jonahgabriel enabled auto-merge June 3, 2026 16:19
@jonahgabriel
jonahgabriel added this pull request to the merge queue Jun 3, 2026
Merged via the queue into dev with commit a611194 Jun 3, 2026
96 checks passed
@jonahgabriel
jonahgabriel deleted the jonah/omn-12637-fix-dead-ship-dirty-dispatch branch June 3, 2026 16:43
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