Skip to content

contracts(OMN-11577, OMN-11581): add OCC contracts for CiErrorClassifier + DebugRetrieval - #1658

Merged
jonahgabriel merged 3 commits into
devfrom
jonah/omn-11577-11581-occ-contracts
May 26, 2026
Merged

jonahgabriel merged 3 commits into
devfrom
jonah/omn-11577-11581-occ-contracts

Conversation

@jonahgabriel

Copy link
Copy Markdown
Contributor

Summary

Add OCC contracts for OMN-11577 and OMN-11581, binding central evidence to omniintelligence PR #673.

  • OMN-11577: NodeCiErrorClassifierCompute — adds handle_classify_ci_error handler with JSON/plain-text parsing
  • OMN-11581: NodeDebugRetrievalCompute — adds store-injected constructor + query_fix_records_with_decay delegation

Both contracts are non-seam, non-interface-change implementation completions.

…ier + DebugRetrieval

Bind central OCC evidence for omniintelligence PR #673 implementing
NodeCiErrorClassifierCompute and NodeDebugRetrievalCompute compute nodes.
@coderabbitai

coderabbitai Bot commented May 26, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 05c420ef-9dc6-425a-b442-1d602f72e330

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jonah/omn-11577-11581-occ-contracts

Comment @coderabbitai help to get the list of available commands and usage tips.

… PR #673

Receipt status: PASS for both tickets at commit 3d323912e04cd09a5498fc1fd85e9664e30accd0.
28 unit tests pass (14 per node).
@jonahgabriel
jonahgabriel enabled auto-merge (squash) May 26, 2026 02:52
@jonahgabriel
jonahgabriel changed the base branch from main to dev May 26, 2026 10:16
@jonahgabriel
jonahgabriel merged commit c196842 into dev May 26, 2026
6 of 7 checks passed
@jonahgabriel
jonahgabriel deleted the jonah/omn-11577-11581-occ-contracts branch May 26, 2026 10:16
jonahgabriel added a commit that referenced this pull request Sep 7, 2026
Reduces this branch to a strictly additive change. Its first commit removed
dod_evidence item 'dod-OmniNode-ai-omnibase_core-pr-1652' and edited
'dod-occ-diff-derived-behavior-proof'; merged entries are immutable and the
append-only gate correctly rejected both. `git diff origin/dev` on this branch
now has zero removed lines.

Adds one net-new item, 'dod-OmniNode-ai-omnibase_core-pr-1658'. Its receipt was
already on dev, minted by the autobind at drift/dod_receipts/OMN-17554/
dod-OmniNode-ai-omnibase_core-pr-1658/command.yaml, with no contract item to
bind to; this supplies it. #1658 is the change that actually landed: merged
2026-09-07T13:11:28Z, squash 90148c953dd1d02cdeb08d14df52a35178f5af6c, 165
SUCCESS / 1 SKIPPED / 0 FAILURE.

Each of its four checks was verified to FLIP across the merge before being
written here, so none can pass with the product change reverted: at merge commit
vs parent 5b27eb5c, load_declared_user_config counts 1 vs 0; the raw env-read
count in constants_workflow.py is 0 vs 1; the AST pin test is in the PR file list
and 404s at the parent; and the merge parent assertion is exact.

Verified locally before pushing: the append-only validator reports "No
append-only violations", and check_receipt_hardening.py --supersession-corpus
reports 2344 against a 2344 baseline, "Corpus matches the frozen baseline
exactly".

NOT fixed here, and filed as a residual on the ticket instead: the autobind's two
supersession records for this ticket are stale, and repairing them is currently
blocked by two mutually exclusive rules inside
scripts/validation/check_receipt_hardening.py. _repaired_targets (~line 1800)
requires a repair record whose `supersedes:` names the mis-paired .supersede.
record; _supersession_chain_violations (line 1302) rejects any receipt whose
`supersedes:` names a .supersede. record, unconditionally and fail-closed. A
record satisfying either rule is refused by the other, so the documented
OMN-15459 repair path cannot currently be taken.

Refs: OMN-17554
jonahgabriel added a commit that referenced this pull request Sep 7, 2026
* evidence(OMN-17554): repoint the evidence contract at the merged PR #1658

The contract was autobound to omnibase_core#1652, which was CLOSED without
merging after review rejected its doctor boundary (mergeCommit null, mergedAt
null). Every check on it therefore rested on a pull request that never landed,
and dod_verify reported 2/8 with 2 failed against work that is in fact merged
and green: one failure was "#1652 not merged", the other a behavior proof naming
tests/test_doctor/test_checks_env_typed_binding.py and
tests/unit/models/configuration/test_extra_forbid_omn17554.py, two candidate-era
paths that never existed in the landed tree.

Repointed to #1658, squash 90148c953dd1d02cdeb08d14df52a35178f5af6c, merged
2026-09-07T13:11:28Z with 165 SUCCESS / 1 SKIPPED / 0 FAILURE.

Each content check was selected because its exit status FLIPS across the merge,
verified in both directions before being written here rather than assumed:
load_declared_user_config is present at the merge commit and absent at the
parent; constants_workflow.py holds zero raw env reads at the merge commit and
one at the parent; the AST pin test is in the PR file list and 404s at the
parent. A fourth candidate check, asserting the rejected _build_env_vars_check
helper is absent, was dropped after its negative control showed the helper was
absent at the parent too, so it would have been a vacuous check of exactly the
kind this ticket exists to remove.

The behavior proof now names the five test targets the PR actually adds or
changes: 100 passed in 5.78s.

Refs: OMN-17554

* evidence(OMN-17554): bind the merged PR #1658, add-only

Reduces this branch to a strictly additive change. Its first commit removed
dod_evidence item 'dod-OmniNode-ai-omnibase_core-pr-1652' and edited
'dod-occ-diff-derived-behavior-proof'; merged entries are immutable and the
append-only gate correctly rejected both. `git diff origin/dev` on this branch
now has zero removed lines.

Adds one net-new item, 'dod-OmniNode-ai-omnibase_core-pr-1658'. Its receipt was
already on dev, minted by the autobind at drift/dod_receipts/OMN-17554/
dod-OmniNode-ai-omnibase_core-pr-1658/command.yaml, with no contract item to
bind to; this supplies it. #1658 is the change that actually landed: merged
2026-09-07T13:11:28Z, squash 90148c953dd1d02cdeb08d14df52a35178f5af6c, 165
SUCCESS / 1 SKIPPED / 0 FAILURE.

Each of its four checks was verified to FLIP across the merge before being
written here, so none can pass with the product change reverted: at merge commit
vs parent 5b27eb5c, load_declared_user_config counts 1 vs 0; the raw env-read
count in constants_workflow.py is 0 vs 1; the AST pin test is in the PR file list
and 404s at the parent; and the merge parent assertion is exact.

Verified locally before pushing: the append-only validator reports "No
append-only violations", and check_receipt_hardening.py --supersession-corpus
reports 2344 against a 2344 baseline, "Corpus matches the frozen baseline
exactly".

NOT fixed here, and filed as a residual on the ticket instead: the autobind's two
supersession records for this ticket are stale, and repairing them is currently
blocked by two mutually exclusive rules inside
scripts/validation/check_receipt_hardening.py. _repaired_targets (~line 1800)
requires a repair record whose `supersedes:` names the mis-paired .supersede.
record; _supersession_chain_violations (line 1302) rejects any receipt whose
`supersedes:` names a .supersede. record, unconditionally and fail-closed. A
record satisfying either rule is refused by the other, so the documented
OMN-15459 repair path cannot currently be taken.

Refs: OMN-17554

* evidence(OMN-17554): add the OCC self-bind and rebind the 1658 receipt hash

Two additions the eligibility and hardening gates asked for by name, both
strictly add-only. Net change for this ticket is 92 insertions, 0 deletions.

occ-preflight reported reason=missing_occ_self_bind: OCC evidence for OMN-17554
verifies (receipts PASS, hashes bound, missing_or_nonpass_receipts empty) but no
receipt bound to this evidence PR itself. Adds item occ-self-bind-pr-8596 and its
PASS receipt with pr_number 8596.

Appending that item moved the contract's whole-file hash, which invalidated
dod-OmniNode-ai-omnibase_core-pr-1658/command.yaml — an autobind receipt minted
2026-09-06 carrying only contract_sha256 and no per-entry hash (OMN-13888). That
receipt is merged and immutable, so it is corrected by a net-new supersession
rather than an edit. The record names the BASE receipt, not another supersession,
so it is not a chain; it mints contract_entry_sha256 so future appends to other
entries cannot invalidate it again, and it re-probes at the merge commit
90148c95 rather than the superseded intermediate head abae24cf.

Verified locally before pushing, each gate run on the exact staged tree:
receipt hardening on all three touched receipts reports no violations;
--supersession-corpus reports 2344 against a 2344 baseline, "Corpus matches the
frozen baseline exactly"; the append-only validator reports "No append-only
violations: existing entries and receipts unchanged."

Refs: OMN-17554
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant