Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions docs/work-tracking/contracts/OMN-10711.yaml
Original file line number Diff line number Diff line change
@@ -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\")'"
Original file line number Diff line number Diff line change
Expand Up @@ -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
21 changes: 21 additions & 0 deletions src/omnimarket/nodes/node_baseline_capture/contract.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 8 additions & 0 deletions src/omnimarket/nodes/node_projection_llm_cost/contract.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Loading