diff --git a/contracts/OMN-12471.yaml b/contracts/OMN-12471.yaml new file mode 100644 index 00000000000..ea27a66b42c --- /dev/null +++ b/contracts/OMN-12471.yaml @@ -0,0 +1,51 @@ +--- +schema_version: "1.0.0" +ticket_id: "OMN-12471" +title: "node_kafka_ingress_effect replaces kafka_runner.py daemon" +summary: > + Phase 2b / PR-5 of the SEA stack-vs-dev reconciliation. Replaces the bespoke src/pipeline/kafka_runner.py + daemon (its __main__, SIGINT/SIGTERM handlers, the for-msg KafkaConsumer/KafkaProducer loop, the three + inline onex.*.omnimarket.* topic literals, and the direct generate_with_retry call) with a contract-bound + EFFECT transport-adapter node. node_kafka_ingress_effect declares the full transport lifecycle as typed, + validated config (ModelKafkaIngressContract, extra=forbid): source_topic_ref + dead_letter topic_ref + resolved from src/pipeline/topics.py constants (never inline literals), consumer_group, offset_policy, + dedupe_key, invalid_message_handling, and first-class typed dead_letter + replay sub-models. The pure + map_ingress_envelope maps a validated external command envelope into ModelNodeGenerationRequestedCommand + and the handler republishes it onto the in-process bus as DEMO_REQUESTED_TOPIC. The node does NOT call + inference — zero httpx.post added; all config from the contract. Manually re-applied onto onex-self-extending-agent + origin/dev @ 0984678 (NOT cherry-picked from the abandoned OMN-12468 stack branches). +is_seam_ticket: false +interface_change: false +interfaces_touched: [] +evidence_requirements: + - kind: "tests" + description: "onex-self-extending-agent PR #185 carries the ingress node, the kafka_runner.py deletion, + and unit + broker-gated integration tests." + command: "See drift/dod_receipts/OMN-12471/dod-sea-pr-185/command.yaml" + - kind: "manual" + description: "onex_change_control PR carrying this contract binds the central evidence publication." + command: "See drift/dod_receipts/OMN-12471/dod-occ-pr/command.yaml" +emergency_bypass: + enabled: false + justification: "" + follow_up_ticket_id: "" +dod_evidence: + - id: "dod-sea-pr-185" + description: > + onex-self-extending-agent PR #185 deletes src/pipeline/kafka_runner.py and adds node_kafka_ingress_effect + (contract-declared transport lifecycle, pure map_ingress_envelope, fail-closed mapping, no httpx, + no off-bus topic literals). Full suite green: uv run pytest tests/ -v (1211 passed, 15 skipped) + + mypy --strict + ruff + pre-commit. + source: "manual" + status: "verified" + checks: + - check_type: "command" + check_value: "grep -q '^status: PASS$' drift/dod_receipts/OMN-12471/dod-sea-pr-185/command.yaml + && grep -q '^pr_number: 185$' drift/dod_receipts/OMN-12471/dod-sea-pr-185/command.yaml" + - id: "dod-occ-pr" + description: "onex_change_control publishes the OMN-12471 central contract and receipts." + source: "manual" + status: "verified" + checks: + - check_type: "command" + check_value: "grep -q '^status: PASS$' drift/dod_receipts/OMN-12471/dod-occ-pr/command.yaml" diff --git a/drift/dod_receipts/OMN-12471/dod-occ-pr/command.yaml b/drift/dod_receipts/OMN-12471/dod-occ-pr/command.yaml new file mode 100644 index 00000000000..e1bf82c1a5d --- /dev/null +++ b/drift/dod_receipts/OMN-12471/dod-occ-pr/command.yaml @@ -0,0 +1,20 @@ +--- +schema_version: "1.0.0" +ticket_id: "OMN-12471" +evidence_item_id: "dod-occ-pr" +check_type: "command" +check_value: "gh pr view 1992 --repo OmniNode-ai/onex_change_control --json number,headRefOid,headRefName,title,state,baseRefName" +contract_sha256: "sha256:a9a1da9e65e0dd5a41e4069135f3274f388c0985ebbd673f34d91861ef19ec15" +status: PASS +run_timestamp: "2026-05-31T11:32:35Z" +commit_sha: "9cb29f3c31e4719324d0837e0169035e46551d5f" +runner: "claude-code-subagent" +verifier: "manual-merge-sweep" +probe_command: "gh pr view 1992 --repo OmniNode-ai/onex_change_control --json number,headRefOid,headRefName,title,state,baseRefName" +probe_stdout: | + {"baseRefName":"dev","headRefName":"jonah/omn-12471-kafka-ingress-evidence","headRefOid":"9cb29f3c31e4719324d0837e0169035e46551d5f","number":1992,"state":"OPEN","title":"evidence(OMN-12471): bind node_kafka_ingress_effect proof"} +actual_output: "PASS: onex_change_control publishes the OMN-12471 central contract and receipts." +exit_code: 0 +pr_number: 1992 +branch: "jonah/omn-12471-kafka-ingress-evidence" +working_dir: "/Users/jonah/Code/omni_worktrees/kafka-ingress/onex_change_control" diff --git a/drift/dod_receipts/OMN-12471/dod-sea-pr-185/command.yaml b/drift/dod_receipts/OMN-12471/dod-sea-pr-185/command.yaml new file mode 100644 index 00000000000..c3ed0c6d1af --- /dev/null +++ b/drift/dod_receipts/OMN-12471/dod-sea-pr-185/command.yaml @@ -0,0 +1,27 @@ +--- +schema_version: "1.0.0" +ticket_id: "OMN-12471" +evidence_item_id: "dod-sea-pr-185" +check_type: "command" +check_value: "test ! -f src/pipeline/kafka_runner.py && test -f src/nodes/node_kafka_ingress_effect/handlers/handler_kafka_ingress.py + && ! grep -rq 'httpx' src/nodes/node_kafka_ingress_effect/" +contract_sha256: "sha256:a9a1da9e65e0dd5a41e4069135f3274f388c0985ebbd673f34d91861ef19ec15" +status: PASS +run_timestamp: "2026-05-31T11:32:35Z" +commit_sha: "5b70998c6909f5a0c64631ebc859c50097277608" +runner: "claude-code-subagent" +verifier: "filesystem-probe + uv run pytest tests/ -v" +probe_command: "test ! -f src/pipeline/kafka_runner.py; test -f src/nodes/node_kafka_ingress_effect/handlers/handler_kafka_ingress.py; + grep -rn httpx src/nodes/node_kafka_ingress_effect/; uv run pytest tests/ -q" +probe_stdout: | + kafka_runner.py: DELETED (absent) + handler_kafka_ingress.py: PRESENT + no httpx in node_kafka_ingress_effect + 1211 passed, 15 skipped + PR meta: {"baseRefName":"dev","headRefName":"jonah/sea-canon-kafka-ingress","headRefOid":"5b70998c6909f5a0c64631ebc859c50097277608","number":185,"state":"OPEN","title":"feat(OMN-12471): node_kafka_ingress_effect replaces kafka_runner.py daemon"} +actual_output: "PASS: onex-self-extending-agent PR #185 deletes kafka_runner.py, adds the contract-bound + node_kafka_ingress_effect with zero httpx, full suite green (1211 passed, 15 skipped)." +exit_code: 0 +pr_number: 185 +branch: "jonah/sea-canon-kafka-ingress" +working_dir: "/Users/jonah/Code/omni_worktrees/kafka-ingress/sea"