Repository navigation
fix(OMN-18414): the evidence closer reads the declared Gate: grammar instead of its own - #3605
Merged
Merged
Conversation
…instead of its own One `Gate:` key in a Linear description was read by two parsers whose accepted vocabularies did not overlap at all. The authoring authority is omniclaude's ticket-creation admission guard, which mandates four forms. This consumer accepted exactly one form that was not among them. So every ticket the guard admitted arrived here as an unreadable declaration and was held, and the form this consumer required would have been refused at creation. Four Done-candidates were held on nothing else at the 2026-09-15T21:34Z dry-run tick: OMN-18403, OMN-18387, OMN-18368 and OMN-18365. The grammar is now declared once, in `src/omnibase_infra/contracts/gate_binding_grammar.json`, and both consumers read it. This module spells no form pattern of its own; a test reads its source and fails if one reappears. Exactly one of the five forms is a proof pointer. A `workflow_run` binding still resolves to its newest completed run's conclusion and still holds on anything but success, unchanged from OMN-16106. The four traceability forms reach the stage after the probe, which is the absence of a proof pointer rather than a pass: every other conjunct of the sweep still applies. The contract's `$comment` carries the live evidence for why resolving those four to a probe is refuted rather than merely unimplemented. Text matching no declared form is still held, and the hold now names the forms that would have been readable.
jonahgabriel
enabled auto-merge (squash)
September 15, 2026 23:40
Contributor
|
| Surface | Meaning | Blocks merge? |
|---|---|---|
| Review threads | Per-finding, posted by the reviewer | No (informational) |
Hostile Review Thread Gate |
Deterministic: unresolved hostile-reviewer threads exist | Fails until resolved (not yet a required context) |
degraded verdict |
Fewer than 2 models succeeded (infra) | No |
Powered by omniintelligence.review_pairing.cli_review — multi-model adversarial review: qwen3-review, qwen3-review-b, glm-review (OMN-8468/OMN-8524/OMN-17492)
Drives `_gate_probe_verdict` end to end over every declared form, with only the `gh` boundary stubbed: contract, resolver, handler wiring and the read are exercised together rather than the pure decision alone. Carries the cross-repo half from this side too. The transcription omniclaude's admission guard reads must be byte-equal to the declaration here, and omniclaude pins the same equality from its side. Two assertions rather than one is deliberate: the failure this ticket closes was a grammar that drifted while each repository's own suite stayed green. It skips with a stated reason when no omniclaude clone is reachable, never silently.
jonahgabriel
pushed a commit
to OmniNode-ai/onex_change_control
that referenced
this pull request
Sep 16, 2026
…ibase_infra#3605 (#9746) * evidence(OMN-18414): author OCC companion for OmniNode-ai/omnibase_infra#3605 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head c341ef1ee434d8bfa9419d8ef0c878181e5f8bd9. * evidence(OMN-18414): self-bind OCC#9746 + rebind contract_sha256 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai>
…ontract The contract-sync gate is right: the handler's rule changed, so the node's own contract has to say so. Adds the OMN-18414 entry, bumps node_version to 1.15.0 and the contract version to 1.10.0, and moves the gap-comment fingerprint's pinned version with it — the fingerprint carries the version precisely so a gap comment cannot describe a rule the closer no longer applies.
… adjacency map A new top-level module under src has to declare which modules' tests a change to it pulls in, or the governed selector cannot narrow safely and the loader test refuses the tree. Its only consumer here is the evidence autoclose sweep, so a change runs the node tests. The contract file it reads is also transcribed into omniclaude, whose suite pins the byte-equality from the other side.
jonahgabriel
deleted the
jonah/omn-18414-gate-binding-grammar-contract
branch
September 16, 2026 01:05
Patel230
pushed a commit
that referenced
this pull request
Sep 16, 2026
…instead of its own (#3605) * fix(OMN-18414): the evidence closer reads the declared Gate: grammar instead of its own One `Gate:` key in a Linear description was read by two parsers whose accepted vocabularies did not overlap at all. The authoring authority is omniclaude's ticket-creation admission guard, which mandates four forms. This consumer accepted exactly one form that was not among them. So every ticket the guard admitted arrived here as an unreadable declaration and was held, and the form this consumer required would have been refused at creation. Four Done-candidates were held on nothing else at the 2026-09-15T21:34Z dry-run tick: OMN-18403, OMN-18387, OMN-18368 and OMN-18365. The grammar is now declared once, in `src/omnibase_infra/contracts/gate_binding_grammar.json`, and both consumers read it. This module spells no form pattern of its own; a test reads its source and fails if one reappears. Exactly one of the five forms is a proof pointer. A `workflow_run` binding still resolves to its newest completed run's conclusion and still holds on anything but success, unchanged from OMN-16106. The four traceability forms reach the stage after the probe, which is the absence of a proof pointer rather than a pass: every other conjunct of the sweep still applies. The contract's `$comment` carries the live evidence for why resolving those four to a probe is refuted rather than merely unimplemented. Text matching no declared form is still held, and the hold now names the forms that would have been readable. * test(OMN-18414): integration coverage for the gate-binding conjunct Drives `_gate_probe_verdict` end to end over every declared form, with only the `gh` boundary stubbed: contract, resolver, handler wiring and the read are exercised together rather than the pure decision alone. Carries the cross-repo half from this side too. The transcription omniclaude's admission guard reads must be byte-equal to the declaration here, and omniclaude pins the same equality from its side. Two assertions rather than one is deliberate: the failure this ticket closes was a grammar that drifted while each repository's own suite stayed green. It skips with a stated reason when no omniclaude clone is reachable, never silently. * docs(OMN-18414): record the gate-binding grammar change in the node contract The contract-sync gate is right: the handler's rule changed, so the node's own contract has to say so. Adds the OMN-18414 entry, bumps node_version to 1.15.0 and the contract version to 1.10.0, and moves the gap-comment fingerprint's pinned version with it — the fingerprint carries the version precisely so a gap comment cannot describe a rule the closer no longer applies. * fix(OMN-18414): declare the gate_binding module in the test-selection adjacency map A new top-level module under src has to declare which modules' tests a change to it pulls in, or the governed selector cannot narrow safely and the loader test refuses the tree. Its only consumer here is the evidence autoclose sweep, so a change runs the node tests. The contract file it reads is also transcribed into omniclaude, whose suite pins the byte-equality from the other side.
Patel230
pushed a commit
to OmniNode-ai/onex_change_control
that referenced
this pull request
Sep 16, 2026
…ibase_infra#3605 (#9746) * evidence(OMN-18414): author OCC companion for OmniNode-ai/omnibase_infra#3605 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head c341ef1ee434d8bfa9419d8ef0c878181e5f8bd9. * evidence(OMN-18414): self-bind OCC#9746 + rebind contract_sha256 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes OMN-18414. Parent OMN-18200.
One
Gate:key in a Linear description was read by two parsers whose accepted vocabularies did not overlap at all. This is not a superset/subset mismatch; the two sets were disjoint.plugins/onex/hooks/lib/ticket_creation_guard.py:396C<n>,INV-<nnn>,OMN-<n> AC-<n>,live-gate defect: <check>_gate_probe_declaration(was athandler_evidence_autoclose_sweep.py:1849)<owner>/<repo> <file>.ymland nothing elseSo every ticket the guard admitted arrived at the closer as an unreadable declaration and was typed
skipped_gate_probe_red, and the form the closer required would have been refused at creation.Measured
Four Done-candidates were held on nothing else at the 2026-09-15T21:34Z dry-run tick (run 35026356112): OMN-18403 (
live-gate defect: workspace-reconcile-status), OMN-18387 (C7), OMN-18368 and OMN-18365 (parent-criterion bindings).A second, independent defect sat under the parent-criterion form: Linear rewrites a plain
OMN-16990into an issue-mention element, so the text the closer reads is not the text the author wrote. A pattern built against the authored spelling matches nothing on any live ticket. The contract declares the normalization that fixes this.What this lands
src/omnibase_infra/contracts/gate_binding_grammar.json— the single declaration. Line patterns, normalizations, five forms, and the worked fixtures both consumers run.src/omnibase_infra/gate_binding/— the reader. It spells no form pattern of its own;test_the_resolver_spells_no_form_pattern_of_its_ownreads the module source and fails if one reappears._gate_binding_probe_targetreplaces_gate_probe_declaration. No shim, no alias.a4dcb41c1c2562fab300c5c4f05c3b8a6ddddbcd) vendors the same contract byte-identically and makes the guard read it, with a byte-identity drift test.Why exactly one form probes
workflow_runis a proof pointer and still holds on anything butsuccess— the OMN-16106 behaviour, unchanged. The other four are traceability bindings, and resolving them to a live probe is refuted rather than merely unimplemented:omninode_infratools/beta_board/beta_board_data.py:4,:760and:1981each say it re-reads Linear on every run. Holding a Linear flip on a cell derived from that ticket's Linear state is a cycle.workspace-reconcile-statusmatches no check run on this repo'sdevHEAD and appears in no workflow in either repository. Positive control: the same endpoint returns check-run names for that commit.A traceability binding therefore reaches the stage after the probe. That is the absence of a proof pointer, not a pass — every other conjunct of the sweep still applies.
Text matching no declared form is still held, and the hold now names the forms that would have been readable.
dod_evidence
uv run pytest tests/unit/nodes/node_evidence_autoclose_sweep_effect/ -q→ 578 passed, including 28 new cases across the six acceptance criteria.ImportErrorbefore the reader existed; the 9 closer cases failed onImportErrorfor_gate_binding_probe_targetbefore the handler change.uv run mypy src/omnibase_infra/gate_binding/ --strict→ no issues, 11 source files. Same for the node package, 18 source files.pre-commit run --all-files→ exit 0.Evidence-Ticket: OMN-18414
Evidence-Source: OCC#9746