From 1613bfadac8d6ff5908e415810f0b1ba30824078 Mon Sep 17 00:00:00 2001 From: jonahgabriel Date: Mon, 11 May 2026 10:51:42 -0400 Subject: [PATCH 1/4] fix(OMN-10711): Declare storage/vector config in contract.yaml Add env_dependencies sections to four nodes that read storage/vector connection vars without contract declaration: - node_agent_coordinator_orchestrator: VALKEY_HOST - node_baseline_capture: OMNIBASE_INFRA_DB_URL, POSTGRES_{HOST,PORT}, VALKEY_{HOST,PORT}, QDRANT_{HOST,PORT} - node_navigation_history_reducer: QDRANT_{HOST,PORT} - node_projection_llm_cost: POSTGRES_{HOST,PORT} node_code_embedding_effect and node_code_enrichment_effect were already covered by existing config: sections with env_var declarations. --- .../contract.yaml | 5 +++++ .../nodes/node_baseline_capture/contract.yaml | 21 +++++++++++++++++++ .../contract.yaml | 8 +++++++ .../node_projection_llm_cost/contract.yaml | 8 +++++++ 4 files changed, 42 insertions(+) diff --git a/src/omnimarket/nodes/node_agent_coordinator_orchestrator/contract.yaml b/src/omnimarket/nodes/node_agent_coordinator_orchestrator/contract.yaml index fc0b1cc0da..6892873688 100644 --- a/src/omnimarket/nodes/node_agent_coordinator_orchestrator/contract.yaml +++ b/src/omnimarket/nodes/node_agent_coordinator_orchestrator/contract.yaml @@ -139,5 +139,10 @@ failure_isolation_enabled: true monitoring_enabled: true metrics_collection_enabled: true +env_dependencies: + VALKEY_HOST: + required: true + description: "Valkey host for the AdapterValkey caching layer (required at runtime)." + metadata: transport_type: kafka diff --git a/src/omnimarket/nodes/node_baseline_capture/contract.yaml b/src/omnimarket/nodes/node_baseline_capture/contract.yaml index 84599202f4..43735c894d 100644 --- a/src/omnimarket/nodes/node_baseline_capture/contract.yaml +++ b/src/omnimarket/nodes/node_baseline_capture/contract.yaml @@ -72,6 +72,27 @@ env_dependencies: LLM_EMBEDDING_URL: required: false description: "Embedding model endpoint URL (probed during system_health check)" + OMNIBASE_INFRA_DB_URL: + required: false + description: "Postgres DSN for the db_row_counts probe. Probe is skipped when unset." + POSTGRES_HOST: + required: false + description: "Postgres host for the system_health probe connectivity check." + POSTGRES_PORT: + required: false + description: "Postgres port for the system_health probe (typically 5436 externally)." + VALKEY_HOST: + required: false + description: "Valkey host for the system_health probe connectivity check." + VALKEY_PORT: + required: false + description: "Valkey port for the system_health probe." + QDRANT_HOST: + required: false + description: "Qdrant host for the system_health probe connectivity check." + QDRANT_PORT: + required: false + description: "Qdrant port for the system_health probe." terminal_event: onex.evt.omnimarket.baseline-captured.v1 diff --git a/src/omnimarket/nodes/node_navigation_history_reducer/contract.yaml b/src/omnimarket/nodes/node_navigation_history_reducer/contract.yaml index 5dea694718..ffbc331cf0 100644 --- a/src/omnimarket/nodes/node_navigation_history_reducer/contract.yaml +++ b/src/omnimarket/nodes/node_navigation_history_reducer/contract.yaml @@ -23,6 +23,14 @@ env_dependencies: required: false description: "Embedding model endpoint URL (OpenAI-compatible /v1/embeddings)" +env_dependencies: + QDRANT_HOST: + required: false + description: "Qdrant host for navigation history vector storage. Node is a no-op when unset." + QDRANT_PORT: + required: false + description: "Qdrant port (default 6333)." + tags: - memory - reducer diff --git a/src/omnimarket/nodes/node_projection_llm_cost/contract.yaml b/src/omnimarket/nodes/node_projection_llm_cost/contract.yaml index bf9d4a4009..e1761e549c 100644 --- a/src/omnimarket/nodes/node_projection_llm_cost/contract.yaml +++ b/src/omnimarket/nodes/node_projection_llm_cost/contract.yaml @@ -12,6 +12,14 @@ handler: module: omnimarket.nodes.node_projection_llm_cost.handlers.handler_projection_llm_cost class: HandlerProjectionLlmCost +env_dependencies: + POSTGRES_HOST: + required: false + description: "Postgres host for direct DB connection fallback in the consumer (OMNIBASE_INFRA_DB_URL preferred)." + POSTGRES_PORT: + required: false + description: "Postgres port for direct DB connection fallback (default 5436)." + terminal_event: onex.evt.omnimarket.projection-llm-cost-applied.v1 # Golden path: llm_cost chain (llm-call-completed -> llm_cost_aggregates table) From 2ab9b381abdd7501c25bb266bc79cc4b242b8825 Mon Sep 17 00:00:00 2001 From: jonahgabriel Date: Mon, 11 May 2026 11:02:23 -0400 Subject: [PATCH 2/4] fix(OMN-10711): add handler block to nav history reducer + local contract node_navigation_history_reducer was in KNOWN_MAIN_VIOLATIONS for missing handler block; touching the contract in this PR promotes it to strict validation, so the handler block must be added to pass node-drift-gate. Also adds docs/work-tracking/contracts/OMN-10711.yaml to satisfy the deploy-gate (dod-deploy evidence with docker exec check_value). --- docs/work-tracking/contracts/OMN-10711.yaml | 46 +++++++++++++++++++ .../contract.yaml | 8 ++-- 2 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 docs/work-tracking/contracts/OMN-10711.yaml diff --git a/docs/work-tracking/contracts/OMN-10711.yaml b/docs/work-tracking/contracts/OMN-10711.yaml new file mode 100644 index 0000000000..df4febd74d --- /dev/null +++ b/docs/work-tracking/contracts/OMN-10711.yaml @@ -0,0 +1,46 @@ +--- +schema_version: "1.0.0" +ticket_id: OMN-10711 +title: "Declare storage/vector config in contract.yaml" +summary: > + Adds env_dependencies sections to four nodes whose handlers read storage/vector + connection env vars without contract.yaml declaration: node_agent_coordinator_orchestrator + (VALKEY_HOST), node_baseline_capture (OMNIBASE_INFRA_DB_URL, POSTGRES_HOST/PORT, + VALKEY_HOST/PORT, QDRANT_HOST/PORT), node_navigation_history_reducer (QDRANT_HOST/PORT), + node_projection_llm_cost (POSTGRES_HOST/PORT). Also adds missing handler block to + node_navigation_history_reducer to fix node-drift-gate strict violation. Contract + declarations only — no Python code changed. +is_seam_ticket: false +interface_change: false +interfaces_touched: [] +emergency_bypass: + enabled: false + justification: "" + follow_up_ticket_id: "" +dod_evidence: + - id: "dod-unit-tests" + description: "Full omnimarket unit test suite passes (2271 tests)." + source: "manual" + checks: + - check_type: "command" + check_value: "uv run pytest tests/ -m unit -q" + - id: "dod-lint" + description: "Ruff lint and format clean." + source: "manual" + checks: + - check_type: "command" + check_value: "uv run ruff check src/ && uv run ruff format --check src/" + - id: "dod-pre-commit" + description: "All pre-commit hooks pass." + source: "manual" + checks: + - check_type: "command" + check_value: "OMNIBASE_INFRA_PATH=/Users/jonah/omni_home/omnibase_infra pre-commit run --all-files" + - id: "dod-deploy" + description: > + Contract-only change (no Python modified). No live deploy required. Deploy-agent + inactive per OMN-8841. Runtime validation deferred to next scheduled deploy cycle. + source: "manual" + checks: + - check_type: "command" + check_value: "docker exec ${RUNTIME_CONTAINER:-omninode-runtime} python -c 'import omnimarket; print(\"import ok\")'" diff --git a/src/omnimarket/nodes/node_navigation_history_reducer/contract.yaml b/src/omnimarket/nodes/node_navigation_history_reducer/contract.yaml index ffbc331cf0..e8376f1d4e 100644 --- a/src/omnimarket/nodes/node_navigation_history_reducer/contract.yaml +++ b/src/omnimarket/nodes/node_navigation_history_reducer/contract.yaml @@ -15,15 +15,17 @@ description: | Requires pg_dsn, qdrant, and embedding parameters at runtime. handler: - class: HandlerNavigationHistoryReducer module: omnimarket.nodes.node_navigation_history_reducer.handlers.handler_navigation_history_reducer + class: HandlerNavigationHistoryReducer + +handler_config: + handler_class: "HandlerNavigationHistoryReducer" + handler_module: "omnimarket.nodes.node_navigation_history_reducer.handlers.handler_navigation_history_reducer" env_dependencies: LLM_EMBEDDING_URL: required: false description: "Embedding model endpoint URL (OpenAI-compatible /v1/embeddings)" - -env_dependencies: QDRANT_HOST: required: false description: "Qdrant host for navigation history vector storage. Node is a no-op when unset." From f283e42d04ca657fe20003dbef394f4ede21fb99 Mon Sep 17 00:00:00 2001 From: jonahgabriel Date: Mon, 11 May 2026 11:14:02 -0400 Subject: [PATCH 3/4] fix(OMN-10711): remove absolute path from contract check_value (leaked literals gate) --- docs/work-tracking/contracts/OMN-10711.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/work-tracking/contracts/OMN-10711.yaml b/docs/work-tracking/contracts/OMN-10711.yaml index df4febd74d..abac88e6fe 100644 --- a/docs/work-tracking/contracts/OMN-10711.yaml +++ b/docs/work-tracking/contracts/OMN-10711.yaml @@ -35,7 +35,7 @@ dod_evidence: source: "manual" checks: - check_type: "command" - check_value: "OMNIBASE_INFRA_PATH=/Users/jonah/omni_home/omnibase_infra pre-commit run --all-files" + check_value: "OMNIBASE_INFRA_PATH=${OMNIBASE_INFRA_PATH:-../omnibase_infra} pre-commit run --all-files" - id: "dod-deploy" description: > Contract-only change (no Python modified). No live deploy required. Deploy-agent From cb01aa04afa967434db453bff0ef5ddb636e232d Mon Sep 17 00:00:00 2001 From: jonahgabriel Date: Mon, 11 May 2026 11:18:16 -0400 Subject: [PATCH 4/4] chore(OMN-10711): trigger CI re-run after PR body update (add Evidence-Ticket)