Repository navigation
feat(OMN-13341): verification doctrine + non-authoritative-evidence lint (R6) - #1783
Conversation
Retro enforcement R6 (epic OMN-13325). Codifies that state claims verify against live truth surfaces: origin/dev for existence, the live materialized projection for runtime/data state, gh pr checks for PR verdicts — never a local clone, ticket prose, or statusCheckRollup. - docs/standards/VERIFICATION_DOCTRINE.md: the doctrine (surfaces, rules, copy-paste commands, enforcement). - scripts/lint_verification_evidence.py: blocking lint flagging worker prompts/receipts/handoffs/evidence docs that cite local-clone paths, ticket text, or a statusCheckRollup verdict as proof. Phrase-anchored so documenting the failure mode or fetching the raw field does not trip it. Self-test + 31 unit tests. - .pre-commit-config.yaml: lint-verification-evidence hook (blocking). - .github/workflows/verification-evidence-lint.yml: CI gate. - CLAUDE.md: Standalone Lint Gates row + Verification Doctrine subsection linking the doc. Source audit: omni_home/docs/audits/2026-06-19-ratchet-enforcement-audit.md
|
| Verdict | Meaning | Blocks merge? |
|---|---|---|
passed |
No critical/error findings | No |
blocked |
CRITICAL or ERROR findings found | Yes |
degraded |
All models unavailable (infra) | No (pilot) |
Powered by omniintelligence.review_pairing.cli_review — node-based adversarial review via HandlerLlmCliSubprocess (OMN-8524)
|
Warning Review limit reached
More reviews will be available in 24 minutes and 50 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (7)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
OMN-13341 — Verification doctrine + non-authoritative-evidence lint (R6)
Retro enforcement R6, child of the ratchet-enforcement epic OMN-13325. Source audit:
omni_home/docs/audits/2026-06-19-ratchet-enforcement-audit.md.Problem
Probes verified against local canonical clones, ticket text, or
statusCheckRollup— all of which drift from live truth. Proven three times in one session: a stale local clone produced a falsenode NOT_FOUND; a stale ticket said "escalation never fires" when the projection showed it does;statusCheckRollupshowedFAILUREafter passing reruns.What this PR ships
docs/standards/VERIFICATION_DOCTRINE.md— codifies the authoritative truth surfaces (origin/dev for existence, the live materialized projection for runtime/data state,gh pr checksfor PR verdicts, branch protection for required-gate claims), the non-authoritative surfaces and their failure modes, 6 rules, a copy-paste command reference, and the enforcement section. Each rule traces to a real 2026-06-19 failure.scripts/lint_verification_evidence.py— blocking lint flagging worker prompts / receipts / handoffs / evidence docs that cite (1) astatusCheckRollupverdict, (2) state asserted "from/against the local clone", or (3) "the ticket says X, so/therefore Y". Phrase-anchored so documenting the failure mode or fetching the raw--json statusCheckRollupfield does not trip it. Suppression:# verification-evidence-ok: <reason>. Ships with--self-test(14 cases) + 31 unit tests..pre-commit-config.yaml—lint-verification-evidencehook (blocking, pre-commit stage)..github/workflows/verification-evidence-lint.yml— CI gate (PR + push + merge_group; self-test then full scan).CLAUDE.md— new "Standalone Lint Gates" row + a "Verification Doctrine" subsection linking the doc.Enforcement is wired in the same PR as the detection (CLAUDE.md Rule #5).
Note on the matcher
An initial
statusCheckRollupmatcher flagged 10 legitimate field-access / queue-mechanics lines. Fixed by narrowing the matcher to "rollup adjacent to a verdict token" — not an allowlist — per CLAUDE.md Rule #10. Full-repo scan is now clean (exit 0).Verification (dod_evidence)
python3 scripts/lint_verification_evidence.py --self-test→ 14/14 passpython3 scripts/lint_verification_evidence.py(full repo) → exit 0, no false positivesuv run pytest tests/unit/scripts/test_lint_verification_evidence.py→ 31 passedruff format+ruff checkclean;mypy --ignore-missing-importscleanpre-commit run lint-verification-evidence --all-files→ Passed; full pre-commit on changed files → all PassedEvidence also recorded on OMN-13341.
Evidence-Source: OCC#2818
Evidence-Ticket: OMN-13341