Repository navigation
contract(OMN-13509): pin-hygiene PR-time gate receipt (block off-dev-line sibling pins) - #2960
Conversation
…-line sibling pins Central OCC contract consumed by the omnibase_core#1308 (validator + wiring) and omnimarket#1360 (corpus + generation driver) Receipt Gates via Evidence-Source. DoD: PR-time gate rejects an off-dev-line / orphan sibling git pin and passes an on-dev-line pin (proven by 25 unit tests incl. the #2071 branch=main recurrence proof against a real temp git repo, and a live hook-fires demonstration); wired as a BLOCKING pre-commit hook + required CI gate (Rule 5); scanning logic GENERATED by the SEA node_generation_consumer against the live model and corpus-accepted (real production path, independently reproduced).
|
Warning Review limit reached
More reviews will be available in 14 minutes and 27 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 rolling per-developer review limits. Reviews become available again as older review attempts age out of the rolling limit window. 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 (6)
📝 WalkthroughWalkthroughA new contract file ChangesOMN-13509 Contract and Evidence
Estimated code review effort🎯 2 (Simple) | ⏱️ ~7 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@contracts/OMN-13509.yaml`:
- Around line 20-26: The OMN-13509.yaml contract file is missing the required
evidence_requirements field that must be present between the interfaces_touched
and emergency_bypass fields to pass Pydantic model schema validation. Add the
evidence_requirements field with an appropriate value (likely an empty list or
empty object depending on the schema definition) at the correct location in the
YAML structure between interfaces_touched and emergency_bypass to ensure the
contract validates correctly when loaded via
ModelTicketContract.model_validate().
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
…4 checks) Adversarial PASS receipts (verifier != runner, probe_command + probe_stdout present, status PASS, contract_sha256 bound) for the four dod_evidence checks on contracts/OMN-13509.yaml, so the omnibase_core#1308 and omnimarket#1360 Receipt Gates resolve OCC#2960 to eligible: - dod-001: 25 pin_hygiene unit tests green incl. the #2071 branch=main recurrence proof against a real temp git repo. - dod-002: BLOCKING pre-commit hook wired + live hook-fires (orphan pin exits 1). - dod-003: generation independently reproduced via the REAL production path (corpus_passed=true, usage_source=measured, model Qwen3.6-35B-A3B on .201:8000). - dod-occ-pr: self-binding contract receipt.
… compliance The OCC Contract Compliance Check re-runs each contract check_value in the OCC checkout, where sibling repos are not present at ../ — so the cross-repo relative greps failed (exit 2). Re-point the dod-001/002/003 check_values to grep the committed receipt's own '^status: PASS$' line within the OCC repo (self-contained, the canonical pattern). The REAL cross-repo proof (pytest, live hook-fires, reproduced generation) stays in each receipt's probe_command/probe_stdout/ actual_output. Receipts re-pinned to the new contract_sha256.
#1360) The OCC merge-eligibility check requires at least one PASS receipt per cited ticket to bind to the consuming PR (receipt.pr_number == PR or receipt.commit_sha in the PR's commit SHAs). The same OMN-13509 contract is consumed by two feature PRs, so split the binding: dod-001/dod-002 bind to omnibase_core#1308 (core PR head/commits), dod-003/dod-occ-pr bind to omnimarket#1360 (market PR head/commits). Each consumer's gate now finds at least one bound receipt.
The contract reached its canonical form (evidence_requirements: [] added by the OCC contract canonicalizer). Re-pin all four receipt contract_sha256 fields to the now-stable contract hash so the OCC merge-eligibility hash-binding check passes. Binding unchanged: dod-001/002 -> core#1308, dod-003 -> market#1360, dod-occ-pr -> occ#2960.
…eploy-gate) The omnimarket PR touches a path under src/.../nodes/ (the acceptance-corpus DATA file), so the deploy-gate requires a deploy-DoD evidence item. Add dod-deploy-no-live-mutation (mirrors OMN-13294) recording that these PRs add a PR-time validation gate + generation corpus/driver + OCC evidence only — no runtime node deploy, no live-broker topic, no migration, no .201 mutation. Receipt bound to market#1360. All 5 receipts re-pinned to the final contract hash 67c69dd2.
…_infra#2960 APPEND-ONLY on top of the autobind contract merged as OCC#7387. That companion bound OMN-16825 to PR #2960 with a single probe listed twice; it proves the escalation-superset guard exists and nothing else. The ticket has five acceptance criteria and the merged set covers one of them. This appends eight distinct bars, one per criterion plus the deploy-scope DoD: -classifier the narrowing lives in filter_prepush_runnable_paths, not in an env override (AC4) -allowlist the allowlist names tests/integration/chains/ (AC1) -negctl service-dependent subtrees are still deferred (AC3 negative control) -fail-closed unclassified / prefix-colliding paths still defer (AC3) -ratchet the classification is pinned against the hook's own source (AC5) -premise the allowlisted subtree declares no live-service marker -superset escalation appends the runnable integration paths, so escalating is never a coverage downgrade dod-deploy-assessment Every probe is content-bound to bb96bc769121fbac9e5cc0c2e1963822aa3e0e89 and was actually run: each receipt records GREEN at that ref and RED at merge-base 8e1be3c32a67a700c16b351bfc4236fe6a984e90, so none of them passes on an arbitrary commit. No two carry the same check_value against different evidence items. The three entries merged by OCC#7387 are left byte-identical and their receipts are untouched; the append was verified not to change their contract_entry_sha256. Refs OMN-16825.
… service-free integration suites (#7397) * evidence(OMN-16825): append the falsifiable evidence set for omnibase_infra#2960 APPEND-ONLY on top of the autobind contract merged as OCC#7387. That companion bound OMN-16825 to PR #2960 with a single probe listed twice; it proves the escalation-superset guard exists and nothing else. The ticket has five acceptance criteria and the merged set covers one of them. This appends eight distinct bars, one per criterion plus the deploy-scope DoD: -classifier the narrowing lives in filter_prepush_runnable_paths, not in an env override (AC4) -allowlist the allowlist names tests/integration/chains/ (AC1) -negctl service-dependent subtrees are still deferred (AC3 negative control) -fail-closed unclassified / prefix-colliding paths still defer (AC3) -ratchet the classification is pinned against the hook's own source (AC5) -premise the allowlisted subtree declares no live-service marker -superset escalation appends the runnable integration paths, so escalating is never a coverage downgrade dod-deploy-assessment Every probe is content-bound to bb96bc769121fbac9e5cc0c2e1963822aa3e0e89 and was actually run: each receipt records GREEN at that ref and RED at merge-base 8e1be3c32a67a700c16b351bfc4236fe6a984e90, so none of them passes on an arbitrary commit. No two carry the same check_value against different evidence items. The three entries merged by OCC#7387 are left byte-identical and their receipts are untouched; the append was verified not to change their contract_entry_sha256. Refs OMN-16825. * fix(OMN-16825): bind the self-bind receipt to the OCC PR, not the product PR occ-preflight/eligibility reported reason=missing_occ_self_bind while occ-self-bind-pr-7397 was present and PASS. The gate resolves the self-bind by the receipt's pr_number, and this receipt carried pr_number: 2960 (the product PR) inherited from its siblings, so nothing bound to OCC PR #7397 itself. pr_number 2960 -> 7397, branch -> jonah/omn-16825-occ-evidence, matching the merged occ-self-bind-pr-7387 receipt's own shape. The other nine receipts keep pr_number: 2960 -- they attest to content in the product PR and that is the correct binding for them. Refs OMN-16825.
OMN-13509 — OCC receipt for the PR-time pin-hygiene gate
Central onex_change_control contract (
contracts/OMN-13509.yaml) carrying thedod_evidence for the OMN-13509 pin-hygiene gate. Consumed by the paired feature
PRs via
Evidence-Source: OCC#<this-PR>:pre-commit hook + required CI gate.
evidence.
The gate blocks any sibling dependency pin (
omnibase-core/omnibase-spi/omnibase-compatgit rev orbranch=) inpyproject.toml/uv.lockwhosepinned commit is NOT an ancestor of that sibling's
devHEAD — the realrecurrence fix for the #2071 / OMN-13507 diverged-pin saga, and the PR-time
sibling of the deploy-time OMN-12977 guard.
Marquee dogfood: the gate's pin-classification scanning logic was GENERATED by
omninode's own SEA generation node (
node_generation_consumer) against the livelocal-coder model and accepted by a deterministic acceptance corpus — the corpus,
not the LLM, is the acceptance authority — then hand-hardened into a wired
validator.
DoD evidence (in the contract): 25 unit tests incl. the #2071 branch=main
recurrence proof against a real temp git repo; BLOCKING pre-commit + required CI
wiring; generation provenance independently reproduced via the real production
path.
Summary by CodeRabbit