Repository navigation
fix(OMN-15645): bind DELEGATION_ROUTING_TIERS_PATH in runtime-worker catalog - #4758
Conversation
…13388) * evidence(OMN-15645): author OCC companion for OmniNode-ai/omnibase_infra#4758 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head a031eda50e49a49c2d84920777737c963d003fc5. * evidence(OMN-15645): self-bind OCC#13388 + rebind contract_sha256 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai>
There was a problem hiding this comment.
Hostile Reviewer — adversarial findings (OMN-17492)
Models succeeded: qwen3-review, gpt-oss-review
Models failed: none
New finding threads: 0
Deduped (already posted on this PR): 0
Below quorum (one model only, reported not threaded): 8
Nit-level findings suppressed: 1
The model is the FINDER, never the gate: merge is gated only by the
deterministic Hostile Review Thread Gate, which blocks while
hostile-reviewer threads are unresolved. Resolve each thread after
addressing (or rejecting, with a reply) its finding.
Below quorum: 8 finding(s) raised by one model only (OMN-18479)
These are reported and NOT dropped, but they get no thread and do not block: a single model's finding no other model reproduced is not evidence enough to stop a merge. Read them; act on them if they are right.
- [CRITICAL]
tests/unit/docker/test_delegation_routing_tiers_path_binding_omn15645.py(gpt-oss-review) — Fixture assertion contradicts parametrize scope | The testtest_catalog_runtime_services_bind_the_packaged_tiers_pathis parametrized to cover multiple service names, includingomninode-runtimean - [MAJOR]
tests/unit/docker/test_delegation_routing_tiers_path_binding_omn15645.py(qwen3-review) — Fixture assertion contradicts parametric service coverage | The testtest_catalog_runtime_services_bind_the_packaged_tiers_pathis parametrized over seven (bundle, service_name) pairs, including `om - [MAJOR]
tests/fixtures/omn15645_worker_tiers_live_contact.json(qwen3-review) — SHA256 hash in fixture is not verified against source of truth | The fixtureomn15645_worker_tiers_live_contact.jsoncontains a hardcodedfile_sha256andpackaged_sha256value. The test asserts - [MAJOR]
tests/unit/docker/test_delegation_routing_tiers_path_binding_omn15645.py(gpt-oss-review) — Hardcoded SHA256 in fixture creates brittle integrity check | The test assertsrecorded_response["file_sha256"] == recorded_response["packaged_sha256"]. Both values are hardcoded in the JSON fixture - [MINOR]
.pre-commit-config.yaml(qwen3-review) — Pre-commit hook regex may not cover all relevant files | The pre-commit hookdelegation-routing-tiers-bindinguses a regex to match files that should trigger the test. The regex includes `docker/(Do - [MINOR]
tests/unit/docker/test_delegation_routing_tiers_path_binding_omn15645.py(qwen3-review) — Test does not verify that the path is actually baked into the image | The testtest_catalog_runtime_services_bind_the_packaged_tiers_pathchecks that the compose file generated by the catalog resolv - [MINOR]
tests/fixtures/omn15645_worker_tiers_live_contact.json(qwen3-review) — Fixture provenance is not machine-verifiable | The fixture includes a_provenancefield with acommandthat was used to capture the data. This command is a complex one-liner that runs `docker exec - [MINOR]
tests/unit/docker/test_delegation_routing_tiers_path_binding_omn15645.py(gpt-oss-review) — Missing coverage for 'runtime-infrastructure' bundle in other tests | The new parametrization includes("runtime-infrastructure", "runtime-worker"). However, the other tests in the file (e.g., `test
✅ Hostile Reviewer — REVIEWEDCritical findings: 0
Semantics (OMN-17492 — the model finds, thread resolution gates)
Powered by omniintelligence.review_pairing.cli_review — multi-model adversarial review: qwen3-review (Qwen3.8-27B), gpt-oss-review (gpt-oss-120b) (OMN-8468/OMN-8524/OMN-17492) |
repo-evidence / dod-verify failed on this pull request with "pull request cites OMN-15645 but carries no contracts/OMN-15645.yaml". This commit adds contracts/OMN-15645.yaml with one test_passes item running tests/unit/docker/test_delegation_routing_tiers_path_binding_omn15645.py. The contract covers this pull request's catalog binding only and does not claim the ticket's lab readback, cold bring-up or mechanism criteria. On lab host h202 the test file gives 15 passed, and 2 failed with the dev runtime-worker.yaml; node_dod_verify on the contract returned status verified.
There was a problem hiding this comment.
Hostile Reviewer — adversarial findings (OMN-17492)
Models succeeded: qwen3-review, gpt-oss-review
Models failed: none
New finding threads: 3
Deduped (already posted on this PR): 0
Below quorum (one model only, reported not threaded): 7
Nit-level findings suppressed: 2
The model is the FINDER, never the gate: merge is gated only by the
deterministic Hostile Review Thread Gate, which blocks while
hostile-reviewer threads are unresolved. Resolve each thread after
addressing (or rejecting, with a reply) its finding.
Below quorum: 7 finding(s) raised by one model only (OMN-18479)
These are reported and NOT dropped, but they get no thread and do not block: a single model's finding no other model reproduced is not evidence enough to stop a merge. Read them; act on them if they are right.
- [MAJOR]
.pre-commit-config.yaml(qwen3-review) — Pre-commit hook regex does not cover the new fixture file | The pre-commit hookdelegation-routing-tiers-bindinghas afiles:regex that includes `tests/fixtures/omn15645_worker_tiers_live_contact - [MAJOR]
tests/fixtures/omn15645_worker_tiers_live_contact.json(gpt-oss-review) — Hardcoded SHA256 hash in fixture is brittle and unverifiable | The fixtureomn15645_worker_tiers_live_contact.jsoncontains a hardcodedfile_sha256andpackaged_sha256value. The test asserts th - [MINOR]
tests/fixtures/omn15645_worker_tiers_live_contact.json(qwen3-review) — Fixture contains a full shell command with embedded Python | The_provenance.commandfield in the fixture contains a fulldocker execcommand with an inline Python script. While this is for proven - [MINOR]
tests/unit/docker/test_delegation_routing_tiers_path_binding_omn15645.py(qwen3-review) — Fixture SHA256 values are not validated against a known-good source | The fixture containsfile_sha256andpackaged_sha256fields that are asserted to be equal in the test. However, there is no in - [MINOR]
contracts/OMN-15645.yaml(qwen3-review) — Contract file claims a scope that the tests do not fully cover | The contractOMN-15645.yamlstates that the evidence requirement is 'Catalog resolver and generator tests show main, effects and work - [MINOR]
.pre-commit-config.yaml(gpt-oss-review) — Pre-commit hook regex may not cover all relevant catalog files | The pre-commit hookdelegation-routing-tiers-bindinguses a regex that includescatalog/.*\.ya?mlbut does not explicitly cover `do - [MINOR]
tests/fixtures/omn15645_worker_tiers_live_contact.json(gpt-oss-review) — Test fixture is not validated against the actual deployment environment | The fixtureomn15645_worker_tiers_live_contact.jsonis described as a 'live contact' captured from a real container, but the
Findings demoted from threads (anchor rejected)
-
[MAJOR] hostile-reviewer (qwen3-review)
Test asserts against fixture data instead of the constant | The test
test_catalog_runtime_services_bind_the_packaged_tiers_pathnow asserts that the generated environment variable equalsrecorded_response["tiers_path"]instead of the module-level constant_EXPECTED_PATH. While the fixture currently contains the same value, this creates a circular dependency: the test validates the catalog output against a recorded fixture rather than the known-correct constant. If the fixture is corrupted or updated wResolve this thread when addressed — the
Hostile Review Thread Gateblocks while hostile-reviewer threads are unresolved (OMN-17492). -
[MAJOR] hostile-reviewer (qwen3-review)
Fixture fixture is required for all parametrized cases, not just worker | The
recorded_responsefixture is marked with@pytest.mark.live_contactand is injected into every parametrized invocation oftest_catalog_runtime_services_bind_the_packaged_tiers_path, including cases foromninode-runtimeandruntime-effectsin theruntime-core,runtime, andlocalbundles. The fixture file is specifically namedomn15645_worker_tiers_live_contact.jsonand its provenance states it was captured from a wResolve this thread when addressed — the
Hostile Review Thread Gateblocks while hostile-reviewer threads are unresolved (OMN-17492). -
[MAJOR] hostile-reviewer (gpt-oss-review)
Fixture path assertion contradicts test parametrization | The test
test_catalog_runtime_services_bind_the_packaged_tiers_pathassertsrecorded_response["runtime_profile"] == "workers"for all parametrized cases. However, the parametrization includesomninode-runtimeandruntime-effectsservices, which are not worker profiles. The fixtureomn15645_worker_tiers_live_contact.jsoncontains"runtime_profile": "workers". This assertion will fail for non-worker services, causing the test to be incorrecResolve this thread when addressed — the
Hostile Review Thread Gateblocks while hostile-reviewer threads are unresolved (OMN-17492).
|
Lab: head=272243122 host=h202 lane=cause-omnibase_infra-ci-summary-9f8b |
Add requirements block req-omn15645 with AC1 and DELEGATION_ROUTING_TIERS_PATH binding. Bind dod-omn-15645-worker-tiers-binding to AC1 in contracts/OMN-15645.yaml. Use focused pytest file as falsifier for the binding. Only the contract file changes.
There was a problem hiding this comment.
Hostile Reviewer — adversarial findings (OMN-17492)
Models succeeded: qwen3-review, gpt-oss-review
Models failed: none
New finding threads: 4
Deduped (already posted on this PR): 0
Below quorum (one model only, reported not threaded): 4
Nit-level findings suppressed: 1
The model is the FINDER, never the gate: merge is gated only by the
deterministic Hostile Review Thread Gate, which blocks while
hostile-reviewer threads are unresolved. Resolve each thread after
addressing (or rejecting, with a reply) its finding.
Below quorum: 4 finding(s) raised by one model only (OMN-18479)
These are reported and NOT dropped, but they get no thread and do not block: a single model's finding no other model reproduced is not evidence enough to stop a merge. Read them; act on them if they are right.
- [MAJOR]
tests/fixtures/omn15645_worker_tiers_live_contact.json(qwen3-review) — SHA256 hash in fixture is not verified against actual file | The fixtureomn15645_worker_tiers_live_contact.jsoncontains a hardcoded SHA256 hash `5a54e42d851e911275a58e7f7177990db2f03aa838cabf0533a - [MINOR]
tests/unit/docker/test_delegation_routing_tiers_path_binding_omn15645.py(qwen3-review) — Fixture design couples test to specific service type | Therecorded_responsefixture is designed to read a worker-specific contact file, but is used in a test that covers multiple service types. Thi - [MINOR]
tests/unit/docker/test_delegation_routing_tiers_path_binding_omn15645.py(qwen3-review) — Fixture marker assertion is fragile | The fixture assertsmarker is not None and len(marker.args) == 1, but does not validate that the marker argument is a valid file path or that the file exists. I - [MINOR]
tests/fixtures/omn15645_worker_tiers_live_contact.json(gpt-oss-review) — Hardcoded SHA256 in fixture without verification mechanism | The fixtureomn15645_worker_tiers_live_contact.jsoncontains hardcodedfile_sha256andpackaged_sha256values. The test asserts these
Findings demoted from threads (anchor rejected)
-
[MAJOR] hostile-reviewer (qwen3-review)
Fixture assertion contradicts test parametrization | The test
test_catalog_runtime_services_bind_the_packaged_tiers_pathis parametrized across multiple services includingomninode-runtimeandruntime-effects, but therecorded_responsefixture assertsrecorded_response["runtime_profile"] == "workers"for every parametrized case. The fixture fileomn15645_worker_tiers_live_contact.jsoncontains"runtime_profile": "workers". This assertion will fail for theomninode-runtimeand `runtime-effectResolve this thread when addressed — the
Hostile Review Thread Gateblocks while hostile-reviewer threads are unresolved (OMN-17492). -
[MAJOR] hostile-reviewer (gpt-oss-review)
Fixture assertion mismatch for non-worker services | The test
test_catalog_runtime_services_bind_the_packaged_tiers_pathis parameterized to includeomninode-runtimeandruntime-effectsservices, but it asserts thatrecorded_response["runtime_profile"] == "workers". The fixtureomn15645_worker_tiers_live_contact.jsoncontains"runtime_profile": "workers". This assertion will pass for the worker service, but the test logic implies that the fixture is being used to validate the environment bindingResolve this thread when addressed — the
Hostile Review Thread Gateblocks while hostile-reviewer threads are unresolved (OMN-17492). -
[MINOR] hostile-reviewer (qwen3-review)
Missing test coverage for local bundle worker service | The test parametrization includes
("runtime", "runtime-worker")and("runtime-infrastructure", "runtime-worker"), but does not include("local", "runtime-worker"). Thelocalbundle is included foromninode-runtimeandruntime-effects, but not forruntime-worker. This is an incomplete test matrix. If thelocalbundle also includes aruntime-workerservice, it should be tested. If it does not, the omission should be documented. | EvidenResolve this thread when addressed — the
Hostile Review Thread Gateblocks while hostile-reviewer threads are unresolved (OMN-17492). -
[MINOR] hostile-reviewer (gpt-oss-review)
Missing test for 'local' bundle worker service | The parameterized test includes
("runtime", "runtime-worker")and("runtime-infrastructure", "runtime-worker")but does not include("local", "runtime-worker"). Thelocalbundle is tested foromninode-runtimeandruntime-effects, but not forruntime-worker. If thelocalbundle is intended to support the worker service, this is a missing test case. If it is not, the omission is not documented. | Evidence: @pytest.mark.parametrize(
("bundle"Resolve this thread when addressed — the
Hostile Review Thread Gateblocks while hostile-reviewer threads are unresolved (OMN-17492).
Ticket: OMN-15645
This change addresses the catalog worker omission by hardcoding
DELEGATION_ROUTING_TIERS_PATH=/app/config/delegation/routing_tiers.yamlindocker/catalog/services/runtime-worker.yaml. This explicit deployment pin matches other runtime kernels and resolves the RED cause: "runtime/runtime-worker must bind DELEGATION_ROUTING_TIERS_PATH to /app/config/delegation/routing_tiers.yaml; got None".The falsified premise that an unset key causes a current boot failure is corrected: on live h201 worker omnimarket 0.4.307, a separate process with the key blank called real
_get_config()and exited 0, using packaged bootstrap tiers for blank/unset keys. The remaining omission was thatCatalogResolverandgenerate_composerenderedruntime-workerwithDELEGATION_ROUTING_TIERS_PATHabsent for both runtime and runtime-infrastructure bundles withRUNTIME_PROFILE=workers.Lab: host=h201 lane=lab-fill-omn15645-10090550 command=uv run --frozen pytest tests/unit/docker/test_delegation_routing_tiers_path_binding_omn15645.py -q --no-cov observed=15 passed
Read-only live loader proof:
docker execusing the inherited deployment environment onomnibase-infra-runtime-worker-1loadedModelDelegationConfig; bound file exists and SHA256 matches packaged omnimarket copy: 5a54e42d851e911275a58e7f7177990db2f03aa838cabf0533a6b5b7886689da.The focused tests changed from 2 failed and 13 passed to 15 passed. The existing guard now covers workers in both bundles and runs as
delegation-routing-tiers-bindingbefore commit and in thecompose-required-env-coverageCI job. The new hook, yamlfmt, end-of-file-fixer, Ruff lint and format checks passed.Config-only Docker Compose renders for dev, stability-test, judge and prod returned exit 0 with the expected pin on each runtime kernel in that profile. Renders used isolated
labfill-omn15645-render-*project names, the repository's lane overlays and synthetic test fixture values; judge used itsjudgeprofile. They did not recreate a runtime.Acceptance evidence remains partial: this branch has not had a fresh runtime bring-up, the historical unset-key refusal cannot be reproduced on the current worker, and this lane has not checked the prod image's file in a container. The loader probe used a fresh process in the existing worker with its inherited deployment binding; it did not deploy this branch. Full repository hooks and new-PR CI remain pending. The launching runner must commit, push, open the PR and hand it off.
OMN-15645: Launching runner commit was refused by ci-live-contact because the changed CI workflow lacked recorded contact evidence. Real h201 worker omnibase-infra-runtime-worker-1 was probed using its inherited deployment environment, without an env override. The real _get_config() loaded ModelDelegationConfig; bound and packaged file hashes matched. Captured result and source/capture provenance are stored in tests/fixtures/omn15645_worker_tiers_live_contact.json. The existing catalog binding test now consumes this recording through recorded_response and a pytest.mark.live_contact marker, comparing generated runtime pins with the recorded deployed worker pin. The deployment-binding hook also triggers on changes to the recording. ci-live-contact and delegation-routing-tiers-binding hooks passed; the focused test file has 15 passed; Ruff lint and format checks passed. Five changed files are staged. Commit message is unchanged. The launching runner still owns commit, push, PR creation and handoff. Fresh branch runtime bring-up remains pending.
Evidence-Ticket: OMN-15645
Evidence-Source: OCC#13388