Repository navigation
chore(OMN-16815): repin omnibase-infra 0.38.11 and retire the OMN-16767 chain-gate xfail - #2176
Conversation
…67 chain-gate xfail omnibase_infra v0.38.11 is the first release carrying the delegation-arm fixes (#2937, #2943, #2949, #2951). Resolving the lock to it makes the delegation-routing-reducer chain-gate row XPASS under its strict xfail, which is exactly the signal the marker was written to produce, so the marker goes with the bump. The arm-selection assertion in test_projection_arm_constructs.py is INVERTED, not deleted: post-#2937 the correct arm for a handler with a concrete BaseModel input is the typed def-B arm, and the projection arm is now named as the OMN-16767 regression signature. Because wiring no longer reaches _resolve_projection_database_target for this contract, the OMN-16794 constructibility claim is re-asserted directly against that resolver under all seven topology profiles rather than left to evaporate as a side effect of the arm change.
|
Warning Review limit reachedNext included review available in 9 minutes. View limit detailsLimit details: You’ve used the included review currently available. Your 131 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. Review configuration: ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (2)
Comment |
✅ Hostile Reviewer — PASSEDBlocking findings (critical/error): 0 Gate semantics
Powered by omniintelligence.review_pairing.cli_review — node-based adversarial review via HandlerLlmCliSubprocess (OMN-8524) |
✅ Architectural Review — PASSEDErrors: 0 What this checks
No architectural violations found. Static architectural lint — no model inference (OMN-14176). |
…ambient The gate passed on a laptop and failed on the CI runner at this pin: ProtocolConfigurationError: [ONEX_CORE_041_INVALID_CONFIGURATION] No tier has a configured endpoint for task_type='summarization'. Nothing about the chain differed. The laptop shell carried live cloud credentials (GEMINI_API_KEY / LLM_GLM_API_KEY / OPEN_ROUTER_API_KEY), so the cheap_cloud rung was routable there; the runner has none, and the local rung was unroutable on both because local-reasoner's endpoint_url is null in the repo default (site-specific, overlay-supplied per OMN-12815/OMN-15807). The gate's verdict was therefore a function of the ambient environment — the OMN-16796 defect class, inside the suite written to catch chains dying silently. A module-level autouse fixture now writes a minimal BIFROST overlay giving local-reasoner a complete but deliberately unreachable chat-completions URL (127.0.0.1:9, the discard port). The node under gate is a routing REDUCER: it emits ModelRoutingDecision and never opens a connection, so an unreachable address costs nothing and keeps the gate server-free. tests/conftest.py clears BIFROST_OVERLAY_PATH unconditionally; a module-level autouse fixture runs after it and wins, which is that fixture's own documented override path. Verified both ways: green with the developer environment intact, and green under `env -u` of every cloud key and every BIFROST_* binding (the CI shape, which reproduced the failure before this change).
…imarket#2176 (#7356) * evidence(OMN-16767, OMN-16815): author OCC companion for OmniNode-ai/omnimarket#2176 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 1984879f4152b48ec9cf4c2a6ec926a7712f5bd2. * evidence(OMN-16767, OMN-16815): self-bind OCC#7356 + rebind contract_sha256 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai>
Pull request was closed
Closes OMN-16815.
What this does
Two changes that must land together, because the first makes the second fail.
uv.lock:omnibase-infra 0.38.10 -> 0.38.11(single-package upgrade,uv lock --upgrade-package omnibase-infra; the>=0.38.3,<0.39.0range inpyproject.tomlalready admitted it, so nothing else moved — the diff is 3 lines).tests/chains/: retire thebroken_by="OMN-16767"strict-xfail marker, and invert the arm-selection assertion it was paired with.Why now
omnibase_infra v0.38.11 was cut and published today from dev SHA
4529c3486a8bb49a45a623a008e4bbfa2a3a3148. It is the first release carrying the delegation-arm fixes:The
delegation-routing-reducerrow intests/chains/test_event_chain_gate.pywasxfail(strict=True)and its own comment named the trigger: "Fix in flight: omnibase_infra#2937. This row turns RED the moment the pin picks that up." It did — verified before the edit:That XPASS is the proof the chain is alive: the row drives the real
MessageDispatchEnginefrom the realcontract.yamland requires aModelRoutingDecisionterminal ononex.evt.omnibase-infra.routing-decision.v1with nothing on quarantine. The marker is gone; the row is now an ordinary passing row with nothing to hide behind if the chain dies again.The arm assertion is inverted, not deleted
tests/chains/test_projection_arm_constructs.pyasserted that wiring selects the projection arm. Under 0.38.10 it did — and that is precisely the OMN-16767 defect (a typed def-B handler handed a rawinput_datadict). Post-#2937 the correct arm is the typed def-B arm, so keeping the old assertion would mean asserting the defect. All seven profiles failed on the bump:Arm identity is still pinned in both directions: the projection arm is now asserted against by name as the OMN-16767 regression signature, so a silent flip back fails here with the cause spelled out.
The OMN-16794 constructibility claim did not evaporate
Because #2937 clears
db_tablesfor a typed def-B handler, wiring no longer reaches_resolve_projection_database_targetfor this contract — the call that raised under 0.38.9. Rather than let that coverage disappear as a side effect of an arm change, the claim is now asserted directly against that resolver under all seven topology profiles (test_projection_binding_resolves_under_every_topology_profile), alongside the existing resolver-level pin intest_overlay_table_resolves_to_its_physical_grant_schema. Neither goes through wiring, so neither is hostage to the next arm-selection change.Non-vacuity proven, not assumed. Monkeypatching
physical_grant_schema_for_tableback to 0.38.9 behaviour (lambda schema, name: schema) makes the new assertion raise the original error under all seven profiles:uv run python -c "from importlib.metadata import version; print(version('omnibase-infra'))"->0.38.11uv run pytest tests/chains/ -q-> 17 passed (was 8 failed / 2 passed immediately after the lock bump)uv run ruff format src/ tests/+uv run ruff check --fix src/ tests/-> All checks passeduv run mypy src/omnimarket/ --strict-> Success: no issues found in 3044 source filespre-commit run --all-files-> exit 0, zero failures[prepush-smart-tests] impacted tests passed; allowing push) — noPREPUSH_FULL_SUITE, no-kfilter, no bypass.Release provenance: PyPI
omnibase-infra 0.38.11(info.versionconfirmed after the ~60s index lag), GitHub release https://github.com/OmniNode-ai/omnibase_infra/releases/tag/v0.38.11.Evidence-Ticket: OMN-16815
Evidence-Source: OCC#7356
Correction — the first push was green for the wrong reason (2nd commit,
60df58a8)The local
17 passedabove was environment-dependent, and CI caught it. The Event Chain Gate went RED on the runner:Nothing about the chain differed. My shell carried live cloud credentials (
GEMINI_API_KEY,LLM_GLM_API_KEY,OPEN_ROUTER_API_KEY), which made the cheap_cloud rung routable locally; the runner has none, and the local rung (local-reasoner, wheresummarizationroutes first) was unroutable on both because itsendpoint_urlis null in the repo default — site-specific and overlay-supplied by design (OMN-12815 / OMN-15807).So the gate's verdict was a function of the ambient environment. That is the OMN-16796 defect class, inside the suite written to catch chains dying silently — worth naming plainly rather than patching quietly.
Reproduced locally before fixing, by stripping the environment CI does not have:
Fix: a module-level autouse fixture writes a minimal BIFROST overlay giving
local-reasonera complete but deliberately unreachable chat-completions URL (127.0.0.1:9, the discard port). The node under gate is a routing reducer — it emitsModelRoutingDecisionand never opens a connection — so an unreachable address costs nothing and keeps the gate server-free and credential-free.tests/conftest.py::_ensure_bifrost_contract_pathclearsBIFROST_OVERLAY_PATHunconditionally; a module-level autouse fixture runs after it and wins, which is that fixture's own documented override path.Verified both ways after the fix:
Note this does not weaken the gate: the row still requires a real
ModelRoutingDecisionterminal ononex.evt.omnibase-infra.routing-decision.v1with nothing on quarantine. It only removes the machine from the answer.