Repository navigation
feat(OMN-20074): move boundary-parity and migration-conflicts from onex_change_control into omnibase_core - #1942
Merged
Merged
Conversation
jonahgabriel
enabled auto-merge (squash)
October 10, 2026 19:35
jonahgabriel
force-pushed
the
OMN-20074-boundary-parity-core
branch
from
October 10, 2026 20:55
b64e6b3 to
3dbf576
Compare
…ex_change_control into omnibase_core Adds src/omnibase_core/handlers/handler_boundary_parity.py (HandlerBoundaryParity, handle(request: ModelBoundaryParityInput) -> ModelBoundaryParityReport) and src/omnibase_core/handlers/handler_migration_conflicts.py (HandlerMigrationConflicts, handle(request: ModelMigrationConflictInput) -> ModelMigrationConflictReport), each with main() run as python -m. Ported from onex_change_control rev a89a6f30fa scripts check_boundary_parity.py and check_migration_conflicts.py; the rules are unchanged. Files are read through NodeSourceFileGatherEffect; the handlers are pure. Models under src/omnibase_core/models/nodes/boundary_parity/ and models/nodes/migration_conflicts/. The boundary manifest and migration inventory are packaged in src/omnibase_core/contracts/boundaries/. Their parsed data equals the source files; the copies add the SPDX header and write the six topic_name values unquoted, the form of contracts/topic_registry.yaml, because the no-hardcoded-topics hook flags quoted topic literals. Not ported: --check-schemas and --suppressions-file (the composite action never passed either) and colorama colour codes. Adds .github/actions/validate-boundaries/action.yml, a composite action with the same inputs checks, warn-only and repos and the same defaults, so a caller changes only its uses line and keeps job and context names. It runs the two handlers from the action's own checkout (uv sync --frozen --no-dev) and does not check out the change-control repository. Tests: tests/unit/handlers/test_handler_boundary_parity.py, tests/unit/handlers/test_handler_migration_conflicts.py, tests/ci/test_validate_boundaries_action_omn20074.py (24 tests). Criteria AC24, AC25 and AC26 are added to contracts/OMN-20074.yaml. Bumps the version to 0.47.40 (release-identity gate). No caller is repointed in this commit.
jonahgabriel
force-pushed
the
OMN-20074-boundary-parity-core
branch
from
October 10, 2026 21:29
3dbf576 to
3078719
Compare
onexbot-occ-writer Bot
pushed a commit
to OmniNode-ai/onex_change_control
that referenced
this pull request
Oct 11, 2026
…omnibase_core#1942 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 307871920589394385ffc5a88427f501f07fff9d.
jonahgabriel
pushed a commit
to OmniNode-ai/onex_change_control
that referenced
this pull request
Oct 11, 2026
…base_core (#13629) * evidence(OMN-20074, OMN-20946): author OCC companion for OmniNode-ai/omnibase_core#1942 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 307871920589394385ffc5a88427f501f07fff9d. * evidence(OMN-20074, OMN-20946): self-bind OCC#13629 + rebind contract_sha256 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai>
Merged origin/dev into OMN-20074-boundary-parity-core for omnibase_core pull request #1942. The only conflicted file was contracts/OMN-20074.yaml, in three hunks: the requirements list, the evidence_requirements list and the dod_evidence list. In each hunk dev had appended its S6 part 1 entry (acceptance AC22, evidence for tests/ci/test_s6_part1_cutover_omn20074.py, dod entry dod-omn-20074-ac22) and the branch had appended its boundary-parity, migration-conflicts and validate-boundaries entries (AC24, AC25, AC26 with their evidence and dod entries) at the same position. Resolution: kept both sides in every hunk, dev's entry first and the branch's entries after it. No line of either side changed. Relative to origin/dev the merged file removes 0 lines and adds the branch's 80 lines; acceptance ids AC1 to AC22 and AC24 to AC26 are unique. No other file conflicted.
Contributor
|
OCC autobind rebound this PR's evidence-source stamp line to The receipt gate's own eligibility validator, run against the change-control tree the gate pins for Reported by |
…item In contracts/OMN-20074.yaml, the branch's first evidence_requirements entry (the check-boundary-parity fixture-repositories test, tests/unit/handlers/test_handler_boundary_parity.py) had no "- kind: tests" line, so after the dev merge its description and command keys were duplicate keys inside dev's preceding S6 part 1 entry. The commit adds the one missing line " - kind: tests". Nothing else changes; the file still removes 0 lines relative to origin/dev. A duplicate-key-strict YAML load of the file succeeds, with 25 evidence_requirements entries and 25 dod_evidence entries. The same missing line existed in the branch before the dev merge.
Contributor
Author
|
Lab: head=842522ae328964a03682ab0704e9dc1d4b979c05 host=h101 lane=throughput-cause-coredirty-l5-5d21 Base update
Lab proof
|
This was referenced Oct 11, 2026
Merged
jonahgabriel
added a commit
that referenced
this pull request
Oct 15, 2026
…ry clone list (#2010) * fix(OMN-20074): correct workflow shape check rejecting retired boundary clone list Separate check-only fix for #2009. The existing test_cross_repo_boundary_validation_clones_all_boundary_repos expects onex_change_control for every action revision. The audited #1942 action de3398d requires eight repositories; #1972 c1f8e8f has no change-control boundary and uses seven. The test now validates the exact action/list pair, with negative controls rejecting every missing peer, mismatched list, unknown action or owner and duplicate peers. Only tests/unit/validation/test_ci_workflow_shape.py and contracts/OMN-20074.yaml change, with appended AC55 and dod_evidence plus a hosted deploy check. Focused tests: 125 passed for the workflow shape file and two contract validation files against base dev, 25 passed for boundary cases reading PR #2009 dispatch workflow. Ruff and yamlfmt passed. * fix(OMN-20074): align contract node selector with pytest evidence token format PR #2010 dispatched at 71e2cd3. Tests (Split 14/40) and repo-evidence / dod-verify fail because test_every_repo_contract_binds_every_criterion requires an existing relative .py path token in pytest evidence and the new hosted deploy check uses a file.py::test_name token. Only contracts/OMN-20074.yaml changes: replace that node selector with the same file path plus -k test_cross_repo_boundary_validation_clones_all_boundary_repos in both the evidence_requirements command and dod_evidence check_value. Test assertions and validation stay unchanged. Local verification: 19 contract/caller tests passed, 22 boundary_repo_contract tests passed, selected hosted workflow check 1 passed; yamlfmt and git diff --check passed. CI status is unverified.
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.
Ticket: OMN-20074
Summary
Design note
Ported and not ported
Owner check
Lab
Lab: host=h201 lane=occ-ret-boundary-parity-e5-5d21 head=b64e6b32fc394e23f233ac1e80161c24d3be6bbf; command: core installed the way the action does it (git archive of the head,
uv sync --frozen --no-dev,uv run --no-sync python -m omnibase_core.handlers.handler_boundary_parity --repos-root <root>and... handler_migration_conflicts --repos-root <root> --check-columns --warn-only) against origin/dev trees of omniclaude 18cb48afc7b1, omnidash aab5c9a11566, omniintelligence f5b298841b4b, omnibase_infra 7ce6dd18eece, omnibase_core 3fbb43e, omnimemory ad6029122c5f, omnimarket 4ceedeafeb40, onex_change_control da751e728024, next to the onex_change_control scripts at main a89a6f30fa on the same trees (PYTHONHASHSEED=0 for both); observed: boundary-parity exit 0 for both, 6 of 6 boundaries OK, output byte-identical; migration-conflicts exit 0 for both, 81 conflicts and 43 column-reference violations reported by both, output byte-identical (without --warn-only both exit 1); positive control: with claude-hook-event renamed in omniclaude src/omniclaude/hooks/topics.py both exit 1 with byte-identical output naming topic onex.cmd.omniintelligence.claude-hook-event.v1 and "topic not found in producer: omniclaude/src/omniclaude/hooks/topics.py", and exit 0 again after restore; a planted NAME_CONFLICT (one table, two column sets, omnibase_infra and omnimarket) is reported by both (82 conflicts), both exit 1.Without a fixed hash seed the migration column lines of one file come out in set-iteration order in both tools; sorted, the two outputs are equal.
Tests
uv run pytest tests/unit/handlers/test_handler_boundary_parity.py tests/unit/handlers/test_handler_migration_conflicts.py tests/ci/test_validate_boundaries_action_omn20074.py -q -n0 -p no:randomly: 24 passed; at the merge base both handler test files fail at collection (modules absent).uv run pytest -n 4 -p no:randomly -q tests/unit/handlers tests/ci/test_validate_boundaries_action_omn20074.py tests/unit/test_pep604_compliance.py tests/unit/validation/test_validate_contracts.py tests/unit/validation/test_checker_naming_convention.py tests/unit/validation/test_validator_node_purity.py tests/unit/validators tests/unit/contracts tests/unit/models/ticket: 2095 passed.Callers to repoint (follow-on slice, not in this PR)
Evidence-Ticket: OMN-20074
Evidence-Source: OCC#13658