diff --git a/docs/work-tracking/contracts/OMN-10711.yaml b/docs/work-tracking/contracts/OMN-10711.yaml new file mode 100644 index 0000000000..abac88e6fe --- /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=${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 + 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_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..e8376f1d4e 100644 --- a/src/omnimarket/nodes/node_navigation_history_reducer/contract.yaml +++ b/src/omnimarket/nodes/node_navigation_history_reducer/contract.yaml @@ -15,13 +15,23 @@ 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)" + 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 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)