Repository navigation
feat(OMN-10865): remove delegation nodes from omnibase_infra, import from omnimarket - #1569
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThis PR removes the delegation pipeline from omnibase_infra: three ONEX nodes (orchestrator, quality-gate reducer, routing reducer), their handlers, models, contracts, bifrost delegation config and loader, an LLM delegation adapter, many tests, validation exemptions and allowlist entries, and ONEX entry-points; remaining delegation wiring/imports are switched to ChangesDelegation infrastructure and contracts removal
Estimated code review effort 🎯 5 (Critical) | ⏱️ ~120 minutes Possibly related PRs
Poem
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
|
…list/exemption entries - pyproject.toml: omnimarket source branch jonah/omn-10865-add-delegation-nodes -> main (PR #607 merged) - arch-handler-contract-compliance-allowlist.yaml: remove 6 entries pointing at deleted delegation handler/config files (config_loader_bifrost_delegation.py, model_bifrost_delegation_config.py, handler_delegation_workflow.py, handler_compliance_loop.py, handler_quality_gate.py, handler_delegation_routing.py) - tests/ci/test_handler_architecture_invariants.py: drop 3 deleted basenames from _RUNTIME_UTILITY_EXCLUSIONS and empty _INV4_WIRING_EXEMPTIONS (contracts deleted) Fixes CI Tests Gate failures (test_all_exclusions_map_to_existing_files, test_exemptions_reference_real_contracts_and_handlers) and Build Runtime Image (ModuleNotFoundError: omnimarket.nodes.node_delegation_orchestrator) on PR #1569.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/omnibase_infra/runtime/service_kernel.py`:
- Around line 70-72: Remove the top-level import of PluginDelegation and instead
import it inside the existing guarded plugin-registration try/except block so a
missing omnimarket dependency raises a caught exception instead of crashing at
module import; specifically, delete the from omnimarket... PluginDelegation
import at module scope and add a local import of PluginDelegation inside the try
block that registers the plugin (where PluginDelegation is
instantiated/registered), and on failure (ModuleNotFoundError or Exception) log
a warning and skip registration as the surrounding block intends.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: efc3d6cb-2f04-415c-94df-fc17f1731125
⛔ Files ignored due to path filters (1)
uv.lockis excluded by!**/*.lock
📒 Files selected for processing (112)
arch-handler-contract-compliance-allowlist.yamlsrc/omnibase_infra/adapters/llm/adapter_llm_caller_delegation.pysrc/omnibase_infra/adapters/llm/plugin_llm.pysrc/omnibase_infra/configs/bifrost_delegation.yamlsrc/omnibase_infra/configs/routing_tiers.yamlsrc/omnibase_infra/configs/task_class_contracts.v1.yamlsrc/omnibase_infra/nodes/node_delegation_orchestrator/__init__.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/contract.yamlsrc/omnibase_infra/nodes/node_delegation_orchestrator/contract_topics.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/contracts/delegation_request_v1.yamlsrc/omnibase_infra/nodes/node_delegation_orchestrator/delegation_intent_bridge.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/dispatch_resolver.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/dispatchers/__init__.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/dispatchers/dispatcher_agent_task_lifecycle.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/dispatchers/dispatcher_delegation_request.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/dispatchers/dispatcher_invocation_command.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/dispatchers/dispatcher_quality_gate_result.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/dispatchers/dispatcher_routing_decision.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/enums.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/handlers/__init__.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/handlers/handler_compliance_loop.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/handlers/handler_delegation_workflow.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/lifecycle_reactor.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/models/__init__.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/models/model_baseline_intent.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/models/model_compliance_loop_result.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/models/model_delegation_event.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/models/model_delegation_request.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/models/model_delegation_result.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/models/model_inference_intent.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/models/model_inference_response_data.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/models/model_quality_gate_intent.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/models/model_routing_intent.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/models/model_task_delegated_event.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/node.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/plugin.pysrc/omnibase_infra/nodes/node_delegation_orchestrator/wiring.pysrc/omnibase_infra/nodes/node_delegation_quality_gate_reducer/__init__.pysrc/omnibase_infra/nodes/node_delegation_quality_gate_reducer/contract.yamlsrc/omnibase_infra/nodes/node_delegation_quality_gate_reducer/handlers/__init__.pysrc/omnibase_infra/nodes/node_delegation_quality_gate_reducer/handlers/handler_quality_gate.pysrc/omnibase_infra/nodes/node_delegation_quality_gate_reducer/models/__init__.pysrc/omnibase_infra/nodes/node_delegation_quality_gate_reducer/models/model_quality_gate_input.pysrc/omnibase_infra/nodes/node_delegation_quality_gate_reducer/models/model_quality_gate_result.pysrc/omnibase_infra/nodes/node_delegation_quality_gate_reducer/node.pysrc/omnibase_infra/nodes/node_delegation_routing_reducer/__init__.pysrc/omnibase_infra/nodes/node_delegation_routing_reducer/contract.yamlsrc/omnibase_infra/nodes/node_delegation_routing_reducer/dispatchers/__init__.pysrc/omnibase_infra/nodes/node_delegation_routing_reducer/dispatchers/dispatcher_delegation_routing_request.pysrc/omnibase_infra/nodes/node_delegation_routing_reducer/handlers/__init__.pysrc/omnibase_infra/nodes/node_delegation_routing_reducer/handlers/handler_delegation_routing.pysrc/omnibase_infra/nodes/node_delegation_routing_reducer/models/__init__.pysrc/omnibase_infra/nodes/node_delegation_routing_reducer/models/model_delegation_config.pysrc/omnibase_infra/nodes/node_delegation_routing_reducer/models/model_routing_decision.pysrc/omnibase_infra/nodes/node_delegation_routing_reducer/models/model_routing_tier.pysrc/omnibase_infra/nodes/node_delegation_routing_reducer/models/model_tier_model.pysrc/omnibase_infra/nodes/node_delegation_routing_reducer/node.pysrc/omnibase_infra/nodes/node_llm_inference_effect/handlers/bifrost/config_loader_bifrost_delegation.pysrc/omnibase_infra/nodes/node_llm_inference_effect/handlers/bifrost/model_bifrost_delegation_config.pysrc/omnibase_infra/runtime/service_kernel.pysrc/omnibase_infra/validation/infra_validators.pysrc/omnibase_infra/validation/validation_exemptions.yamltests/ci/test_handler_architecture_invariants.pytests/integration/delegation/test_a2a_bridge_wiring.pytests/integration/delegation/test_bifrost_contract_loading.pytests/integration/delegation/test_compliance_fields_wire_compat.pytests/integration/delegation/test_compliance_loop_e2e.pytests/integration/delegation/test_compliance_loop_wiring_integration.pytests/integration/delegation/test_delegation_routing_dispatcher_wiring.pytests/integration/delegation/test_effect_runtime_boot.pytests/integration/delegation/test_handler_compliance_loop_integration.pytests/integration/delegation/test_quality_gate_contract_loading.pytests/integration/delegation/test_routing_reducer_contract_loading.pytests/integration/nodes/test_delegation_pipeline_e2e.pytests/unit/contracts/test_protocol_ownership.pytests/unit/delegation/__init__.pytests/unit/delegation/test_delegation_chain_e2e.pytests/unit/delegation/test_delegation_contracts.pytests/unit/delegation/test_delegation_orchestrator.pytests/unit/delegation/test_delegation_wiring.pytests/unit/delegation/test_llm_caller_delegation.pytests/unit/nodes/node_delegation_orchestrator/__init__.pytests/unit/nodes/node_delegation_orchestrator/handlers/__init__.pytests/unit/nodes/node_delegation_orchestrator/handlers/test_handler_compliance_loop.pytests/unit/nodes/node_delegation_orchestrator/models/__init__.pytests/unit/nodes/node_delegation_orchestrator/models/test_compliance_fields.pytests/unit/nodes/node_delegation_orchestrator/models/test_model_delegation_request.pytests/unit/nodes/node_delegation_orchestrator/models/test_model_delegation_result.pytests/unit/nodes/node_delegation_orchestrator/test_agent_lifecycle_path.pytests/unit/nodes/node_delegation_orchestrator/test_compliance_loop_wiring.pytests/unit/nodes/node_delegation_orchestrator/test_dispatch_resolver.pytests/unit/nodes/node_delegation_orchestrator/test_dispatcher_malformed_envelopes.pytests/unit/nodes/node_delegation_orchestrator/test_lifecycle_reactor.pytests/unit/nodes/node_delegation_quality_gate_reducer/__init__.pytests/unit/nodes/node_delegation_quality_gate_reducer/handlers/__init__.pytests/unit/nodes/node_delegation_quality_gate_reducer/handlers/test_handler_quality_gate.pytests/unit/nodes/node_delegation_quality_gate_reducer/models/__init__.pytests/unit/nodes/node_delegation_quality_gate_reducer/models/test_quality_gate_models.pytests/unit/nodes/node_delegation_routing_reducer/__init__.pytests/unit/nodes/node_delegation_routing_reducer/dispatchers/__init__.pytests/unit/nodes/node_delegation_routing_reducer/dispatchers/test_dispatcher_delegation_routing_request.pytests/unit/nodes/node_delegation_routing_reducer/handlers/__init__.pytests/unit/nodes/node_delegation_routing_reducer/handlers/test_handler_delegation_routing.pytests/unit/nodes/node_delegation_routing_reducer/handlers/test_handler_delegation_routing_contract.pytests/unit/nodes/node_delegation_routing_reducer/models/__init__.pytests/unit/nodes/node_delegation_routing_reducer/models/test_model_routing_decision.pytests/unit/nodes/node_delegation_routing_reducer/test_invocation_command_emission.pytests/unit/nodes/node_llm_inference_effect/handlers/bifrost/test_bifrost_delegation_config.pytests/unit/nodes/node_llm_inference_effect/handlers/bifrost/test_bifrost_delegation_shadow.pytests/unit/runtime/auto_wiring/test_plugin_managed_subscription.pytests/unit/runtime/test_event_bus_subscriber_container_resolution.pytests/unit/validation/test_validator_defaults.py
💤 Files with no reviewable changes (106)
- tests/unit/nodes/node_delegation_routing_reducer/handlers/init.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/dispatchers/init.py
- src/omnibase_infra/configs/routing_tiers.yaml
- tests/unit/nodes/node_delegation_orchestrator/init.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/models/model_delegation_event.py
- src/omnibase_infra/nodes/node_delegation_routing_reducer/models/model_tier_model.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/enums.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/contract_topics.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/models/model_inference_response_data.py
- tests/unit/nodes/node_delegation_orchestrator/models/init.py
- src/omnibase_infra/nodes/node_delegation_routing_reducer/models/init.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/models/model_delegation_result.py
- src/omnibase_infra/nodes/node_delegation_quality_gate_reducer/node.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/models/model_delegation_request.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/node.py
- src/omnibase_infra/nodes/node_delegation_routing_reducer/node.py
- tests/unit/nodes/node_delegation_routing_reducer/dispatchers/init.py
- src/omnibase_infra/nodes/node_delegation_quality_gate_reducer/init.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/contract.yaml
- src/omnibase_infra/nodes/node_delegation_orchestrator/handlers/handler_compliance_loop.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/models/model_routing_intent.py
- src/omnibase_infra/nodes/node_delegation_quality_gate_reducer/models/model_quality_gate_result.py
- src/omnibase_infra/nodes/node_delegation_routing_reducer/handlers/init.py
- tests/unit/nodes/node_delegation_orchestrator/handlers/init.py
- tests/unit/nodes/node_delegation_quality_gate_reducer/handlers/init.py
- tests/integration/delegation/test_handler_compliance_loop_integration.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/dispatch_resolver.py
- src/omnibase_infra/nodes/node_delegation_quality_gate_reducer/contract.yaml
- src/omnibase_infra/nodes/node_delegation_quality_gate_reducer/handlers/handler_quality_gate.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/wiring.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/models/model_task_delegated_event.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/models/model_quality_gate_intent.py
- src/omnibase_infra/nodes/node_delegation_quality_gate_reducer/handlers/init.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/dispatchers/dispatcher_routing_decision.py
- tests/unit/nodes/node_delegation_quality_gate_reducer/models/init.py
- src/omnibase_infra/nodes/node_llm_inference_effect/handlers/bifrost/config_loader_bifrost_delegation.py
- src/omnibase_infra/configs/task_class_contracts.v1.yaml
- src/omnibase_infra/configs/bifrost_delegation.yaml
- tests/unit/delegation/test_delegation_contracts.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/dispatchers/dispatcher_agent_task_lifecycle.py
- tests/unit/nodes/node_delegation_orchestrator/test_lifecycle_reactor.py
- tests/unit/nodes/node_delegation_routing_reducer/test_invocation_command_emission.py
- src/omnibase_infra/nodes/node_delegation_routing_reducer/contract.yaml
- tests/unit/nodes/node_delegation_orchestrator/test_dispatch_resolver.py
- src/omnibase_infra/nodes/node_delegation_routing_reducer/models/model_routing_decision.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/models/model_inference_intent.py
- tests/unit/delegation/test_delegation_chain_e2e.py
- tests/unit/nodes/node_delegation_orchestrator/test_dispatcher_malformed_envelopes.py
- src/omnibase_infra/nodes/node_delegation_routing_reducer/handlers/handler_delegation_routing.py
- src/omnibase_infra/nodes/node_delegation_routing_reducer/models/model_routing_tier.py
- tests/integration/delegation/test_routing_reducer_contract_loading.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/dispatchers/dispatcher_delegation_request.py
- tests/integration/delegation/test_a2a_bridge_wiring.py
- src/omnibase_infra/nodes/node_delegation_routing_reducer/dispatchers/init.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/handlers/init.py
- tests/unit/nodes/node_delegation_quality_gate_reducer/handlers/test_handler_quality_gate.py
- tests/unit/nodes/node_delegation_routing_reducer/dispatchers/test_dispatcher_delegation_routing_request.py
- src/omnibase_infra/nodes/node_delegation_routing_reducer/models/model_delegation_config.py
- src/omnibase_infra/nodes/node_delegation_routing_reducer/dispatchers/dispatcher_delegation_routing_request.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/models/model_compliance_loop_result.py
- tests/unit/delegation/init.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/models/model_baseline_intent.py
- tests/unit/contracts/test_protocol_ownership.py
- tests/unit/nodes/node_delegation_routing_reducer/handlers/test_handler_delegation_routing.py
- tests/integration/delegation/test_effect_runtime_boot.py
- tests/unit/delegation/test_delegation_wiring.py
- src/omnibase_infra/nodes/node_delegation_quality_gate_reducer/models/init.py
- tests/integration/delegation/test_compliance_loop_wiring_integration.py
- tests/unit/nodes/node_delegation_routing_reducer/models/init.py
- tests/integration/delegation/test_quality_gate_contract_loading.py
- tests/unit/nodes/node_delegation_routing_reducer/init.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/delegation_intent_bridge.py
- tests/integration/delegation/test_compliance_loop_e2e.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/plugin.py
- tests/unit/nodes/node_delegation_orchestrator/test_agent_lifecycle_path.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/models/init.py
- tests/unit/nodes/node_delegation_orchestrator/models/test_model_delegation_request.py
- src/omnibase_infra/nodes/node_delegation_quality_gate_reducer/models/model_quality_gate_input.py
- tests/unit/nodes/node_delegation_orchestrator/models/test_model_delegation_result.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/contracts/delegation_request_v1.yaml
- tests/unit/nodes/node_delegation_orchestrator/test_compliance_loop_wiring.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/init.py
- src/omnibase_infra/nodes/node_delegation_routing_reducer/init.py
- tests/unit/nodes/node_delegation_orchestrator/handlers/test_handler_compliance_loop.py
- tests/integration/delegation/test_compliance_fields_wire_compat.py
- tests/integration/delegation/test_delegation_routing_dispatcher_wiring.py
- tests/unit/nodes/node_delegation_routing_reducer/models/test_model_routing_decision.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/handlers/handler_delegation_workflow.py
- src/omnibase_infra/adapters/llm/adapter_llm_caller_delegation.py
- tests/unit/nodes/node_delegation_quality_gate_reducer/init.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/dispatchers/dispatcher_invocation_command.py
- tests/integration/delegation/test_bifrost_contract_loading.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/lifecycle_reactor.py
- tests/unit/nodes/node_llm_inference_effect/handlers/bifrost/test_bifrost_delegation_config.py
- tests/unit/delegation/test_delegation_orchestrator.py
- tests/unit/nodes/node_delegation_orchestrator/models/test_compliance_fields.py
- tests/unit/nodes/node_delegation_quality_gate_reducer/models/test_quality_gate_models.py
- tests/unit/delegation/test_llm_caller_delegation.py
- tests/integration/nodes/test_delegation_pipeline_e2e.py
- arch-handler-contract-compliance-allowlist.yaml
- tests/unit/nodes/node_llm_inference_effect/handlers/bifrost/test_bifrost_delegation_shadow.py
- tests/unit/nodes/node_delegation_routing_reducer/handlers/test_handler_delegation_routing_contract.py
- src/omnibase_infra/nodes/node_llm_inference_effect/handlers/bifrost/model_bifrost_delegation_config.py
- src/omnibase_infra/nodes/node_delegation_orchestrator/dispatchers/dispatcher_quality_gate_result.py
- src/omnibase_infra/validation/validation_exemptions.yaml
- tests/unit/runtime/auto_wiring/test_plugin_managed_subscription.py
…lock Addresses CodeRabbit review on PR #1569: the top-level `from omnimarket.nodes.node_delegation_orchestrator.plugin import PluginDelegation` in service_kernel.py executes at module load — before the guarded try/except in bootstrap() — so a missing/unavailable omnimarket dependency would crash kernel startup instead of degrading gracefully. It also created a module-load circular import (plugin_llm -> ... -> runtime/__init__ -> service_kernel -> omnimarket plugin -> omnibase_infra.runtime.*). Moving the import inside the registration try block fixes both.
There was a problem hiding this comment.
🧹 Nitpick comments (1)
docs/diagnosis-omn10865-delegation-removal-incomplete-migration.md (1)
68-69: ⚡ Quick winReplace internal “memory” reference with a traceable source.
Per memory reference_occ_receipt_bindingis not verifiable for future readers. Point this to an explicit policy/doc/issue link (or summarize the binding rule directly in-doc) so the diagnosis is self-contained and auditable.Suggested edit
-Per memory `reference_occ_receipt_binding`, this requires a new OCC PR (consumer receipt referencing `#1569` + +self-binding receipt + contract update), OR re-running OCC `#965`'s receipt generation against `#1569`'s HEAD. +Per OCC receipt-binding requirements (link the canonical policy/ADR here), this requires a new OCC PR +(consumer receipt referencing `#1569` + self-binding receipt + contract update), OR re-running OCC `#965`'s +receipt generation against `#1569`'s HEAD.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/diagnosis-omn10865-delegation-removal-incomplete-migration.md` around lines 68 - 69, The phrase "Per memory reference_occ_receipt_binding" is non-actionable and untraceable; replace it with a verifiable source by either linking to the authoritative policy/issue that defines reference_occ_receipt_binding or by summarizing the binding rule inline. Update the sentence mentioning reference_occ_receipt_binding, OCC PR, `#1569` and `#965` to include a URL or explicit excerpt of the binding rule (or an in-doc summary) so readers can audit the requirement for a new OCC PR (consumer receipt referencing `#1569` + self-binding receipt + contract update) or the alternative of re-running OCC `#965`'s receipt generation against `#1569`'s HEAD.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@docs/diagnosis-omn10865-delegation-removal-incomplete-migration.md`:
- Around line 68-69: The phrase "Per memory reference_occ_receipt_binding" is
non-actionable and untraceable; replace it with a verifiable source by either
linking to the authoritative policy/issue that defines
reference_occ_receipt_binding or by summarizing the binding rule inline. Update
the sentence mentioning reference_occ_receipt_binding, OCC PR, `#1569` and `#965` to
include a URL or explicit excerpt of the binding rule (or an in-doc summary) so
readers can audit the requirement for a new OCC PR (consumer receipt referencing
`#1569` + self-binding receipt + contract update) or the alternative of re-running
OCC `#965`'s receipt generation against `#1569`'s HEAD.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 7a379b2d-5a69-4fbc-996c-31493fe4b952
📒 Files selected for processing (1)
docs/diagnosis-omn10865-delegation-removal-incomplete-migration.md
…from omnimarket Delegation pipeline (node_delegation_orchestrator, node_delegation_quality_gate_reducer, node_delegation_routing_reducer), adapter_llm_caller_delegation, and bifrost delegation config have moved to omnimarket (PR #607). This PR removes the infra copies and wires service_kernel.py + plugin_llm.py to import PluginDelegation, LlmCallerDelegation, and DelegationIntentBridge from omnimarket. - Delete all delegation node source files and tests from omnibase_infra - Update service_kernel.py PluginDelegation import to omnimarket - Update plugin_llm.py LlmCallerDelegation + DelegationIntentBridge imports to omnimarket - Update test_event_bus_subscriber_container_resolution.py PluginDelegation import - Remove stale ProtocolLlmCaller entry from test_protocol_ownership.py - Remove stale validation_exemptions.yaml entries for deleted delegation model files - Pin omnimarket source to feature branch (update to main after PR #607 merges)
…list/exemption entries - pyproject.toml: omnimarket source branch jonah/omn-10865-add-delegation-nodes -> main (PR #607 merged) - arch-handler-contract-compliance-allowlist.yaml: remove 6 entries pointing at deleted delegation handler/config files (config_loader_bifrost_delegation.py, model_bifrost_delegation_config.py, handler_delegation_workflow.py, handler_compliance_loop.py, handler_quality_gate.py, handler_delegation_routing.py) - tests/ci/test_handler_architecture_invariants.py: drop 3 deleted basenames from _RUNTIME_UTILITY_EXCLUSIONS and empty _INV4_WIRING_EXEMPTIONS (contracts deleted) Fixes CI Tests Gate failures (test_all_exclusions_map_to_existing_files, test_exemptions_reference_real_contracts_and_handlers) and Build Runtime Image (ModuleNotFoundError: omnimarket.nodes.node_delegation_orchestrator) on PR #1569.
…lock Addresses CodeRabbit review on PR #1569: the top-level `from omnimarket.nodes.node_delegation_orchestrator.plugin import PluginDelegation` in service_kernel.py executes at module load — before the guarded try/except in bootstrap() — so a missing/unavailable omnimarket dependency would crash kernel startup instead of degrading gracefully. It also created a module-load circular import (plugin_llm -> ... -> runtime/__init__ -> service_kernel -> omnimarket plugin -> omnibase_infra.runtime.*). Moving the import inside the registration try block fixes both.
… incomplete migration
…n main Rebase onto current main brought back files that were added post-branch and reference now-deleted delegation modules: - node_delegation_routing_reducer/dispatchers/ (OMN-10868 added it; depends on deleted node_delegation_orchestrator.models.model_delegation_request). Port to omnimarket is an explicit follow-up per #1569's PR body. - protocol_delegation_intent_bridge.py: rewrite import to source ProtocolLlmCaller from omnimarket where the impl now lives. - 7 delegation tests that import deleted infra modules (OMN-10941, OMN-10940, OMN-10949) — equivalent coverage lives in omnimarket. Evidence-Ticket: OMN-10865 Evidence-Source: dc4aacef
…Managed The class asserted that src/omnibase_infra/nodes/node_delegation_orchestrator/contract.yaml declares plugin_managed=true. That contract now lives in omnimarket, so the test asserts against a path that no longer exists in infra. Equivalent coverage belongs in omnimarket. Evidence-Ticket: OMN-10865 Evidence-Source: dc4aacef
4f71c02 to
3d082bc
Compare
…oken + rebase note)
…ation The PR previously deleted tests/integration/test_delegation_event_chain.py which counted as 1 unmatched deletion in the Integration Test Removal Gate. The deleted test exercised the infra-side delegation chain which now lives in omnimarket. Adds tests/integration/test_delegation_consolidation.py with 4 assertions: 1. omnimarket.nodes.node_delegation_orchestrator.plugin.PluginDelegation resolves (consumed by service_kernel bootstrap). 2. omnimarket DelegationIntentBridge / LlmCallerDelegation / ProtocolLlmCaller resolve (consumed by plugin_llm DI registration). 3. infra-side protocol_delegation_intent_bridge.py sources ProtocolLlmCaller from omnimarket — not a stale infra import. 4. No delegation contract.yaml exists in infra (the duplicate-ingress crash the runtime hit before this PR). This restores deletion/addition parity for the gate and exercises the exact consolidated wiring that prevented runtime boot. Evidence-Ticket: OMN-10865 Evidence-Source: dc4aacef
Pull request was closed
…storage + cost projections) (#1591) * feat(OMN-10865): remove duplicate node contracts that crash runtime boot After delegation removal (#1569) lands, omninode-runtime still crashes at boot with `ValueError: Duplicate local ingress route alias '<name>'` on 4 additional node contracts that exist in both omnibase_infra and omnimarket with identical `name:` fields. Per omninode-runtime canonical wiring, omnimarket is the authoritative home for these projection/effect nodes. Deletes the infra-side copies: - node_intent_storage_effect - node_projection_cost_by_repo - node_projection_cost_summary - node_projection_cost_token_usage - nodes/cost_projection_models/ (only used by the 3 deleted projections) Plus orphaned tests: - tests/integration/nodes/test_node_projection_cost_snapshots.py - tests/unit/nodes/node_intent_storage_effect/ (registry tests) Adds tests/integration/test_no_duplicate_node_contracts.py as a regression: scans every infra contract.yaml against omnimarket's and fails if any `name:` collides — prevents future re-introduction of the boot-crash pattern. ## KNOWN IMPACT — cost_api dashboard endpoints The deleted infra projection handlers were the only writers to `omnibase_infra.services.cost_api.snapshot_cache`, which backs the cost API endpoints mounted in `services/registry_api/main.py`. The omnimarket counterpart handlers (REDUCER_GENERIC) do NOT populate this cache. After this PR: - cost_api endpoints will respond HTTP 200 with stale (frozen) data, or empty data on a fresh process, until either: (a) the omnimarket handlers gain `store_latest_snapshot` calls (would require omnimarket→omnibase_infra import, a layering inversion), or (b) cost_api migrates to read snapshots from the omnimarket publish pipeline directly (correct long-term fix), or (c) cost_api is retired in favor of an omnimarket-side query path. The snapshot_cache module itself is left in place so `cost_api/handlers.py` and `tests/integration/api/test_cost_api_routes.py` continue to import cleanly. test_cost_api_routes.py still passes (verified locally, 11/11). This trade-off is the explicit authorization given to unblock runtime boot — clean boot now is worth temporarily stale cost dashboards. ## node_baseline_capture (NOT in this PR) Verified NOT a duplicate: `name:` and `node_type:` both differ between infra (`node_baseline_capture`/`EFFECT_GENERIC`) and omnimarket (`baseline_capture`/`compute`). Left untouched. Evidence-Ticket: OMN-10865 Evidence-Source: dc4aacef * chore(OMN-10865): refresh PR body cache — OMN-10957 follow-up linkage * chore(OMN-10865): regenerate topic enums after duplicate node removal Removing node_intent_storage_effect, node_projection_cost_by_repo, node_projection_cost_summary, and node_projection_cost_token_usage left their topic enum entries stale. Regenerated via generate_topic_enums.py --generate to pass Topic Enum Drift CI check. --------- Co-authored-by: jonahgabriel <jonahgabriel@users.noreply.github.com>
…rop stale parity test Split 4 failure: test_topic_constants_contract_parity.py asserts every TOPIC_DELEGATION_* constant appears in node_delegation_orchestrator/contract.yaml, which this PR removed. The test was staged for deletion but never committed. Commit the deletion — parity now lives in omnimarket. Split 2 failure: HandlerOutputSchemaRegistry (omnimarket) imported ModelDelegationResult from omnibase_infra.nodes.node_delegation_orchestrator.models at the pinned omnimarket commit (a73edb04). Bump the lock to 1cdba823 which uses omnimarket.events.delegation instead — no omnibase_infra cross-module import.
|
…10865) Main deleted all delegation nodes in #1569. Merge conflicts are all modify/delete pairs — accept the deletions everywhere, keep only the service_dispatch_result_applier.py changes that belong to this PR.
…ation The dispatcher_inference_response.py was added by this branch but depends on node_delegation_orchestrator/models/ and /handlers/ which were deleted when #1569 merged the delegation nodes to omnimarket. The dispatcher is unused (nothing imports it) and belongs in omnimarket with the rest of the delegation nodes. Removed along with empty parent directories.



Summary
Why this unblocks runtime boot
omninode-runtime crashes at startup with
ValueError: Duplicate local ingress route alias 'node_delegation_orchestrator'because contract.yaml exists in bothomnibase_infra/nodes/and the omnimarket package. Deleting the infra-side copy resolves the duplicate, which is the last known blocker before the runtime boots clean.Rebase 2026-05-14
Rebased onto current main (was 10 commits behind, DIRTY). Conflict resolution: kept all delegation-module deletions; kept
routing_tiers.yaml(preserved by 9987001) using main's evolved version (newer fast_path tokens); deleted 7 post-branch delegation tests (OMN-10941/10940/10949) that imported now-deleted infra modules; deletednode_delegation_routing_reducer/dispatchers/(OMN-10868 added it on main; its port to omnimarket is the follow-up below); rewroteprotocol_delegation_intent_bridge.pyto sourceProtocolLlmCallerfrom omnimarket; removed obsoleteTestDelegationContractDeclaresPluginManaged(the contract it asserts on lives in omnimarket now).Other duplicate nodes (separate follow-up)
This PR resolves the delegation duplicate. Five other nodes still have contract.yaml in both repos and will surface the same boot error after delegation lands:
Each needs an ownership decision and its own PR — out of scope here.
Merge order
omnimarket PR #607 is merged (merge commit a73edb04).
pyproject.tomlpins omnimarket tobranch = "main". omnibase_infra #1574 (OMN-10864) is also merged.Follow-up: OMN-10868's delegation-routing-dispatcher (
DispatcherDelegationRoutingRequest+wire_delegation_routing_dispatcher) is removed from infra by this PR but not yet present in omnimarket — needs a port ticket so the routing dispatcher returns to the runtime.OMN-10865
Evidence-Ticket: OMN-10865
Evidence-Source: dc4aacef
dod_evidence:
repo: omnibase_infra
pr: omnibase_infra/pulls/1569
description: pre-commit hooks pass on rebased branch; targeted unit tests pass (runtime/auto_wiring + plugin_llm imports + wire_from_manifest import); remaining failures are pre-existing on main (HttpPortValidation, postgres-dependent)