diff --git a/contracts/OMN-10481.yaml b/contracts/OMN-10481.yaml new file mode 100644 index 00000000000..efe75ec5058 --- /dev/null +++ b/contracts/OMN-10481.yaml @@ -0,0 +1,43 @@ +--- +schema_version: "1.0.0" +ticket_id: OMN-10481 +title: "Add ab-compare CLI wrapper" +summary: "Add a thin ab-compare CLI over the A/B compare orchestrator with table and JSON output while + preserving node metadata and drift validation." +is_seam_ticket: true +interface_change: true +interfaces_touched: + - "public_api" +evidence_requirements: + - kind: "manual" + description: "Focused ab-compare CLI unit tests pass" + command: "uv run pytest tests/unit/test_cli_ab_compare.py -q" + - kind: "manual" + description: "Node metadata dependency scope validates handler imports" + command: "uv run python scripts/ci/check_node_metadata_dependencies.py" + - kind: "manual" + description: "Node drift gate validates changed node package registration" + command: "python scripts/validate_node_drift.py --check-changed origin/main --strict" +emergency_bypass: + enabled: false + justification: "" + follow_up_ticket_id: "" +dod_evidence: + - id: "dod-001" + description: "Focused ab-compare CLI unit tests pass" + source: "manual" + checks: + - check_type: "command" + check_value: "test -f drift/dod_receipts/OMN-10481/dod-001/command.yaml" + - id: "dod-002" + description: "Node metadata dependency scope validates handler imports" + source: "manual" + checks: + - check_type: "command" + check_value: "test -f drift/dod_receipts/OMN-10481/dod-002/command.yaml" + - id: "dod-003" + description: "Node drift gate validates changed node package registration" + source: "manual" + checks: + - check_type: "command" + check_value: "test -f drift/dod_receipts/OMN-10481/dod-003/command.yaml" diff --git a/drift/dod_receipts/OMN-10481/dod-001/command.yaml b/drift/dod_receipts/OMN-10481/dod-001/command.yaml new file mode 100644 index 00000000000..43d4312e315 --- /dev/null +++ b/drift/dod_receipts/OMN-10481/dod-001/command.yaml @@ -0,0 +1,19 @@ +--- +schema_version: "1.0.0" +ticket_id: OMN-10481 +evidence_item_id: dod-001 +check_type: command +check_value: "test -f drift/dod_receipts/OMN-10481/dod-001/command.yaml" +status: PASS +run_timestamp: "2026-05-02T01:06:55Z" +commit_sha: "3990bd84578a" +runner: codex-gpt5 +verifier: jonahgabriel +probe_command: "uv run pytest tests/unit/test_cli_ab_compare.py -q" +probe_stdout: | + 17 passed, 2 warnings in 0.05s +actual_output: >- + PASS: focused ab-compare CLI unit tests validate table rendering, JSON rendering, argument handling, + and orchestrator invocation. +exit_code: 0 +pr_number: 512 diff --git a/drift/dod_receipts/OMN-10481/dod-002/command.yaml b/drift/dod_receipts/OMN-10481/dod-002/command.yaml new file mode 100644 index 00000000000..adbdb9b2ccf --- /dev/null +++ b/drift/dod_receipts/OMN-10481/dod-002/command.yaml @@ -0,0 +1,19 @@ +--- +schema_version: "1.0.0" +ticket_id: OMN-10481 +evidence_item_id: dod-002 +check_type: command +check_value: "test -f drift/dod_receipts/OMN-10481/dod-002/command.yaml" +status: PASS +run_timestamp: "2026-05-02T01:06:55Z" +commit_sha: "3990bd84578a" +runner: codex-gpt5 +verifier: jonahgabriel +probe_command: "uv run python scripts/ci/check_node_metadata_dependencies.py" +probe_stdout: | + ONCP node metadata dependency scope: PASS +actual_output: >- + PASS: node_ab_compare_orchestrator metadata declares the third-party imports used by its handler, including + anthropic and httpx. +exit_code: 0 +pr_number: 512 diff --git a/drift/dod_receipts/OMN-10481/dod-003/command.yaml b/drift/dod_receipts/OMN-10481/dod-003/command.yaml new file mode 100644 index 00000000000..b21a44b3da0 --- /dev/null +++ b/drift/dod_receipts/OMN-10481/dod-003/command.yaml @@ -0,0 +1,21 @@ +--- +schema_version: "1.0.0" +ticket_id: OMN-10481 +evidence_item_id: dod-003 +check_type: command +check_value: "test -f drift/dod_receipts/OMN-10481/dod-003/command.yaml" +status: PASS +run_timestamp: "2026-05-02T01:06:55Z" +commit_sha: "3990bd84578a" +runner: codex-gpt5 +verifier: jonahgabriel +probe_command: "python scripts/validate_node_drift.py --check-changed origin/main --strict" +probe_stdout: | + node-drift-gate (strict mode): 149 node(s) checked + PASS: 35 WARN: 114 FAIL: 0 + node-drift-gate: PASS +actual_output: >- + PASS: changed node package registration is drift-clean after rebasing OMN-10481 onto current omnimarket + main. +exit_code: 0 +pr_number: 512