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
56 changes: 56 additions & 0 deletions contracts/OMN-13025.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
schema_version: "1.0.0"
ticket_id: OMN-13025
title: "A-3: Evidence-language guard — pre-commit on docs/evidence/** rejecting UI/e2e claims with no
Playwright artifact referenced"
summary: >-
Adds a pre-commit hook (.pre-commit-hooks/reject-evidence-ui-claims.sh) to omniclaude that enforces
evidence-language honesty on docs/evidence/** markdown files. Any doc containing "UI POST", "click",
"full chain live", or "end-to-end" must also reference a Playwright artifact; otherwise the commit is
blocked. Root cause: PROCESS_FAILURE_RETRO.md §3.A (top-10 failure #1) — the 2026-06-11 19:27Z evidence
doc overstated UI coverage when only curl was run.
is_seam_ticket: false
interface_change: false
interfaces_touched: []
evidence_requirements:
- kind: tests
description: "8 unit tests covering reject/accept/ignore cases pass in omniclaude worktree"
command: "uv run pytest tests/hooks/test_reject_evidence_ui_claims.py -v --tb=short 2>&1 | grep '8
passed'"
- kind: manual
description: "Hook script present and executable in omniclaude"
command: "test -x .pre-commit-hooks/reject-evidence-ui-claims.sh"
- kind: manual
description: "Hook wired in omniclaude .pre-commit-config.yaml"
command: "grep -q 'reject-evidence-ui-claims' .pre-commit-config.yaml"
emergency_bypass:
enabled: false
justification: ""
follow_up_ticket_id: ""
dod_evidence:
- id: dod-hook-exists-executable
description: "Hook script reject-evidence-ui-claims.sh is present and executable in omniclaude"
source: manual
checks:
- check_type: command
check_value: "grep -q '^status: PASS$' drift/dod_receipts/OMN-13025/dod-hook-exists-executable/command.yaml"
- id: dod-hook-wired-in-precommit
description: "Hook is registered in omniclaude .pre-commit-config.yaml as reject-evidence-ui-claims"
source: manual
checks:
- check_type: command
check_value: "grep -q '^status: PASS$' drift/dod_receipts/OMN-13025/dod-hook-wired-in-precommit/command.yaml"
- id: dod-unit-tests-pass
description: "All 8 unit tests for reject-evidence-ui-claims.sh pass"
source: manual
checks:
- check_type: command
check_value: "grep -q '^status: PASS$' drift/dod_receipts/OMN-13025/dod-unit-tests-pass/command.yaml"
- id: dod-occ-self
description: >-
Self-binding OCC receipt — this onex_change_control PR carries the OMN-13025 contract + receipts
consumed by omniclaude PR via Evidence-Source.
source: manual
checks:
- check_type: command
check_value: "grep -q '^status: PASS$' drift/dod_receipts/OMN-13025/dod-occ-self/command.yaml"
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
schema_version: "1.0.0"
ticket_id: "OMN-13025"
evidence_item_id: "dod-hook-exists-executable"
check_type: "command"
check_value: "test -x .pre-commit-hooks/reject-evidence-ui-claims.sh"
status: PASS
contract_sha256: "sha256:809adb7507799f6a1bcd50fb160da83aba2dfac4f4d7c53e1c88deddd43a324e"
run_timestamp: "2026-06-28T00:00:00Z"
commit_sha: "2946b206d73e2348455d54cce53b002829f482eb"
pr_number: 1813
runner: "claude-omn-13025-evidence-language-guard"
verifier: "onex-ci-receipt-gate"
probe_command: "grep -c 'EVIDENCE_UI_CLAIM_UNVERIFIED' .pre-commit-hooks/reject-evidence-ui-claims.sh"
probe_stdout: |
1
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
schema_version: "1.0.0"
ticket_id: "OMN-13025"
evidence_item_id: "dod-hook-wired-in-precommit"
check_type: "command"
check_value: "grep -q 'reject-evidence-ui-claims' .pre-commit-config.yaml"
status: PASS
contract_sha256: "sha256:809adb7507799f6a1bcd50fb160da83aba2dfac4f4d7c53e1c88deddd43a324e"
run_timestamp: "2026-06-28T00:00:00Z"
commit_sha: "2946b206d73e2348455d54cce53b002829f482eb"
pr_number: 1813
runner: "claude-omn-13025-evidence-language-guard"
verifier: "onex-ci-receipt-gate"
probe_command: "grep -A3 'reject-evidence-ui-claims' .pre-commit-config.yaml | head -8"
probe_stdout: |
- id: reject-evidence-ui-claims
name: Reject evidence docs with UI/e2e claims lacking Playwright artifact (OMN-13025)
entry: .pre-commit-hooks/reject-evidence-ui-claims.sh
language: script
types: [markdown]
pass_filenames: true
stages: [pre-commit]
17 changes: 17 additions & 0 deletions drift/dod_receipts/OMN-13025/dod-occ-self/command.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
schema_version: "1.0.0"
ticket_id: "OMN-13025"
evidence_item_id: "dod-occ-self"
check_type: "command"
check_value: "test -f contracts/OMN-13025.yaml && grep -q 'ticket_id: OMN-13025' contracts/OMN-13025.yaml"
status: PASS
contract_sha256: "sha256:809adb7507799f6a1bcd50fb160da83aba2dfac4f4d7c53e1c88deddd43a324e"
run_timestamp: "2026-06-28T00:00:00Z"
commit_sha: "07fec8e697a5aae9519527d48892a9e47f4a698d"
pr_number: 3247
runner: "claude-omn-13025-evidence-language-guard"
verifier: "onex-ci-receipt-gate"
probe_command: "grep -E '^(ticket_id|title):' contracts/OMN-13025.yaml"
probe_stdout: |
ticket_id: OMN-13025
title: "A-3: Evidence-language guard — pre-commit on docs/evidence/** rejecting UI/e2e claims with no Playwright artifact referenced"
26 changes: 26 additions & 0 deletions drift/dod_receipts/OMN-13025/dod-unit-tests-pass/command.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
schema_version: "1.0.0"
ticket_id: "OMN-13025"
evidence_item_id: "dod-unit-tests-pass"
check_type: "command"
check_value: "uv run pytest tests/hooks/test_reject_evidence_ui_claims.py -v --tb=short 2>&1 | grep '8
passed'"
status: PASS
contract_sha256: "sha256:809adb7507799f6a1bcd50fb160da83aba2dfac4f4d7c53e1c88deddd43a324e"
run_timestamp: "2026-06-28T00:00:00Z"
commit_sha: "2946b206d73e2348455d54cce53b002829f482eb"
pr_number: 1813
runner: "claude-omn-13025-evidence-language-guard"
verifier: "onex-ci-receipt-gate"
probe_command: "uv run pytest tests/hooks/test_reject_evidence_ui_claims.py -v --tb=short 2>&1 | tail
-12"
probe_stdout: |
tests/hooks/test_reject_evidence_ui_claims.py::test_rejects_ui_post_without_playwright PASSED [ 12%]
tests/hooks/test_reject_evidence_ui_claims.py::test_rejects_click_without_playwright PASSED [ 25%]
tests/hooks/test_reject_evidence_ui_claims.py::test_rejects_end_to_end_without_playwright PASSED [ 37%]
tests/hooks/test_reject_evidence_ui_claims.py::test_accepts_ui_post_with_playwright_reference PASSED [ 50%]
tests/hooks/test_reject_evidence_ui_claims.py::test_accepts_evidence_doc_with_no_ui_claims PASSED [ 62%]
tests/hooks/test_reject_evidence_ui_claims.py::test_ignores_non_evidence_docs PASSED [ 75%]
tests/hooks/test_reject_evidence_ui_claims.py::test_ignores_non_markdown_evidence_files PASSED [ 87%]
tests/hooks/test_reject_evidence_ui_claims.py::test_hook_script_exists PASSED [100%]
============================== 8 passed in 0.24s ===============================
Loading