Skip to content

fix(runtime): revert ProtocolDomainPlugin to inline — omnibase_spi.protocols.runtime not published [OMN-8550] - #1262

Merged
jonahgabriel merged 2 commits into
mainfrom
jonah/fix-omn-8550-revert-spi-import
Apr 13, 2026
Merged

jonahgabriel merged 2 commits into
mainfrom
jonah/fix-omn-8550-revert-spi-import

Conversation

@jonahgabriel

Copy link
Copy Markdown
Collaborator

Summary

  • Reverts OMN-8550 re-export of ProtocolDomainPlugin from omnibase_spi — the omnibase_spi.protocols.runtime subpackage does not exist in the published PyPI package (0.20.4)
  • This ModuleNotFoundError broke main CI (Lint, Topic Enum Drift, Fingerprint Check, Topic Drift, ONEX Validators all failing)
  • Restores inline ProtocolDomainPlugin definition until omnibase_spi ships the runtime subpackage

Root Cause

PR#1249 (OMN-8550) added from omnibase_spi.protocols.runtime.protocol_domain_plugin import ... but the corresponding code was never added to the omnibase_spi source repo and never published. Every import of omnibase_infra cascades to this missing module, breaking CI-wide.

Correct Migration Path

  1. Add src/omnibase_spi/protocols/runtime/protocol_domain_plugin.py to omnibase_spi
  2. Publish omnibase_spi >= 0.21.0 to PyPI
  3. Re-apply the omnibase_infra re-export from OMN-8550

Test Plan

  • Lint passes (ruff format + ruff check)
  • Circular import check passes locally
  • Topic Enum Drift Check passes in CI
  • Fingerprint Check passes in CI
  • All CI gates green

…otocols.runtime not yet published [OMN-8550]

OMN-8550 moved ProtocolDomainPlugin to omnibase_spi and added a re-export, but the
omnibase_spi.protocols.runtime subpackage does not exist in the published PyPI package
(0.20.4). This broke main CI with ModuleNotFoundError on every import of omnibase_infra.

Restore the inline ProtocolDomainPlugin definition until omnibase_spi 0.21+ ships
the runtime subpackage. The OMN-8550 migration should land as a coordinated 2-step:
  1. Publish omnibase_spi with protocols.runtime
  2. Re-apply the omnibase_infra re-export
@coderabbitai

coderabbitai Bot commented Apr 13, 2026 •

Copy link
Copy Markdown

Warning

Rate limit exceeded

@jonahgabriel has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 0 minutes and 34 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 0 minutes and 34 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, 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 have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e50e4441-ee4e-4559-9c86-3c28a05dbcc6

📥 Commits

Reviewing files that changed from the base of the PR and between 72eacd5 and 3daa269.

📒 Files selected for processing (2)
  • src/omnibase_infra/runtime/protocol_domain_plugin.py
  • tests/integration/nodes/test_node_baseline_capture_effect.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jonah/fix-omn-8550-revert-spi-import

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

@jonahgabriel
jonahgabriel enabled auto-merge April 13, 2026 07:47
…7484]

Adds 6 integration tests covering the D2/D3 contract invariants:
- D3: no snapshot emitted when measurements_captured == 0
- D3: snapshot emitted when measurements_captured > 0
- D2: lookback_hours capped at 168
- No publisher -> snapshot_emitted always False
- DB errors captured in result.errors tuple

Required by Integration Test Coverage CI gate (post-2026-04-13).
This also satisfies the gate requirement for the revert commit in this PR.
Returns:
Unique string identifier (e.g., "registration", "intelligence").
"""
...
Returns:
Display name (e.g., "Registration", "Intelligence").
"""
...
return bool(os.getenv("OMNIBASE_INFRA_DB_URL"))
```
"""
...
)
```
"""
...
)
```
"""
...
Returns:
Result indicating success/failure and dispatchers registered.
"""
...
Returns:
Result with unsubscribe_callbacks for cleanup during shutdown.
"""
...
return ModelDomainPluginResult.succeeded(plugin_id=self.plugin_id)
```
"""
...

# Patch datetime.now to capture the `since` value passed to the query
captured_since: list[datetime] = []
original_fetchrow = pool.acquire.return_value.__aenter__.return_value.fetchrow
@jonahgabriel
jonahgabriel merged commit 06cd2cc into main Apr 13, 2026
39 checks passed
@jonahgabriel
jonahgabriel deleted the jonah/fix-omn-8550-revert-spi-import branch April 13, 2026 07:59
jonahgabriel added a commit that referenced this pull request Apr 13, 2026
Fallout from PRs #1264 (OMN-8605) and #1262 (OMN-8550) which landed on
main without test verification, blocking PR #1266 from going green.

Fix 1 — test_topic_suffix_exports.py:
  `from omnibase_infra.topics import __init__ as topics_init` resolved to
  a method-wrapper, not the module. Replace with a standard module import.

Fix 2 — test_protocol_ownership.py:
  KNOWN_DUPLICATE_LOCATIONS["ProtocolPublisher"] was missing the
  node_baseline_capture entry added by OMN-7484. Also allowlists
  ProtocolDomainPlugin (still present in runtime/ as a backward-compat
  shim post OMN-8550 SPI migration).

Fix 3 — test_topic_parity.py / check_contract_topic_parity.py:
  8 SUFFIX_* constants added in #1264 had no spec group entries:
    - 6 omniclaude injection-effectiveness topics (OMN-1889, OMN-2942)
      added to _OMNICLAUDE_AGENT_OBSERVABILITY_TOPIC_SUFFIXES in
      platform_topic_suffixes.py, and to _LEGACY_ALLOWLIST (cross-repo,
      contract.yaml lives in omniclaude).
    - onex.evt.git.hook.v1 and onex.evt.linear.snapshot.v1 added to
      ALL_OMNIBASE_INFRA_TOPIC_SPECS (3 partitions, 7-day retention),
      and to _LEGACY_ALLOWLIST (CLI relay producers, no node contract).

No new tickets filed per standing rule — OMN-8605 and OMN-8550 are
the parent tickets for these regressions.
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.

2 participants