Skip to content

fix(OMN-20074): drop the onex_change_control boundary from the kafka manifest - #1972

Merged
jonahgabriel merged 2 commits into
devfrom
omn20074-kbnd-drop-occ-boundary
Oct 14, 2026
Merged

jonahgabriel merged 2 commits into
devfrom
omn20074-kbnd-drop-occ-boundary

Conversation

@jonahgabriel

Copy link
Copy Markdown
Contributor

Summary

Removes the single onex_change_control boundary (onex.evt.onex-change-control.contract-drift-detected.v1, onex_change_control -> omniclaude) from the packaged src/omnibase_core/contracts/boundaries/kafka_boundaries.yaml; the manifest now has 5 boundaries. (OMN-20074)

Why

omniintelligence, omniclaude and omnibase_core pass onex_change_control in the repos input of the validate-boundaries action only because that boundary needs it. With it absent, the parity handler exits 1 with producer file missing: onex_change_control/src/onex_change_control/nodes/node_contract_drift_effect/contract.yaml.

Producer search (canonical clones at origin HEAD):

  • onex_change_control: src/onex_change_control/scripts/check_drift.py calls emit_drift_detected (kafka/governance_emitter.py), the only emitter.
  • omniclaude: has CONTRACT_DRIFT_DETECTED only as a constant in src/omniclaude/hooks/topics.py plus a topic_allowlist.yaml entry, no subscriber.
  • omnimarket: has the string only inside node_duplication_sweep/contracts/kafka_boundaries.yaml (a copy of this manifest), no producer.
  • omnidash: no reference.

So no live producer moved elsewhere and the boundary is removed rather than repointed.

Changes

  • kafka_boundaries.yaml entry removed.
  • tests/unit/handlers/test_handler_boundary_parity.py replaces the hash pin to the onex_change_control manifest with three tests: packaged manifest names no onex_change_control repo and has 5 entries; packaged manifest exits 0 on a repos root with no onex_change_control; a control entry produced by onex_change_control exits 1 with the producer-file-missing error.
  • tests/fixtures/occ_boundaries/manifest.yaml drops kafka_boundaries_parsed_sha256 and keeps the migration inventory hash.
  • The load_manifest_yaml docstring no longer says byte-for-byte OCC manifest.

Lab

  • Host h202, lane omn20074-kbnd, sha 3ba054854687dc59793d18a09beb323e02ccfcbe.
  • Command: uv run python -m omnibase_core.handlers.handler_boundary_parity --repos-root <dir holding symlinks to omniclaude, omnidash, omniintelligence, omnibase_infra, omnimemory, omnimarket and this checkout as omnibase_core; no onex_change_control>
  • Observed: Total boundaries: 5, OK: 5, MISMATCH: 0, "All boundaries are in parity.", exit=0.
  • Control on the same root with the pre-change manifest (git show HEAD~1 copy, passed via --manifest): MISMATCH for onex_change_control -> omniclaude, producer file missing: onex_change_control/src/onex_change_control/nodes/node_contract_drift_effect/contract.yaml, exit=1.
  • Focused tests run: 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 tests/ci/test_validate_boundaries_caller_omn20962.py -n 0 => 31 passed.

Follow-ups

  • This PR leaves .github/workflows/ci.yml unchanged on purpose. Its boundary-validation job pins the validate-boundaries action at de3398d1fcf7a6f48451f680b74b1a6c6c383b8a, whose packaged manifest still has the boundary, so dropping onex_change_control from that job's repos list fails until the pin moves to this PR's merge sha.
  • Open omnibase_core PR ci(OMN-20074): drop the remaining onex_change_control references nothing needs (S10) #1971 (head_ref omn20074-cor2-remaining-occ-refs) already drops onex_change_control from that repos list and its Cross-repo boundary validation check is red in the watcher state; it needs its uses: pin bumped to this PR's merge sha.
  • Also pending: omniintelligence and omniclaude callers of the action need the same pin bump after this merges.

Remove the boundary onex.evt.onex-change-control.contract-drift-detected.v1
(producer_repo onex_change_control, consumer_repo omniclaude) from
src/omnibase_core/contracts/boundaries/kafka_boundaries.yaml. The packaged
manifest now holds 5 boundaries.

Why: the only producer of that topic is onex_change_control's own
check_drift emitter; omniclaude holds only a topic constant
(src/omniclaude/hooks/topics.py) with no subscriber; no omnimarket node
produces it. With onex_change_control absent from the repos root the parity
handler exited 1 with "producer file missing:
onex_change_control/src/onex_change_control/nodes/node_contract_drift_effect/contract.yaml".

tests/unit/handlers/test_handler_boundary_parity.py: replaced the hash pin
to the onex_change_control manifest with three tests:
- the packaged manifest names no onex_change_control repo (5 entries)
- the packaged manifest exits 0 on a repos root with no onex_change_control
- a control entry produced by onex_change_control exits 1 with the
  producer-file-missing error

tests/fixtures/occ_boundaries/manifest.yaml: dropped
kafka_boundaries_parsed_sha256 (the migration inventory hash is kept).

handler_boundary_parity.load_manifest_yaml docstring no longer says
byte-for-byte OCC manifest.

ci.yml is NOT changed here: its validate-boundaries pin still points at an
older sha whose packaged manifest still has the boundary, so dropping
onex_change_control from its repos list waits for a pin bump to this
commit's merge sha.
@jonahgabriel
jonahgabriel requested a review from a team as a code owner October 14, 2026 17:13
@jonahgabriel
jonahgabriel enabled auto-merge (squash) October 14, 2026 17:13
…s/OMN-20074.yaml

PR #1972. repo-evidence / dod-verify failed because every bound evidence item was carried unchanged from the merge base. Appended AC46 and dod-omn-20074-ac46-pr1972 to contracts/OMN-20074.yaml, preserving all inherited requirements and dod_evidence. Bound the existing three boundary-removal tests and a hosted deploy command loading the packaged manifest and asserting five boundaries without onex_change_control. The focused head tests pass.
@jonahgabriel
jonahgabriel merged commit c1f8e8f into dev Oct 14, 2026
150 checks passed
@jonahgabriel
jonahgabriel deleted the omn20074-kbnd-drop-occ-boundary branch October 14, 2026 18:22
jonahgabriel added a commit that referenced this pull request Oct 14, 2026
…ate action

The validate-boundaries action now includes a "Resolve required boundary repositories" step that derives every producer and consumer repository from the packaged boundary manifest, unions them with the caller's repositories while preserving caller order and extras and deduplicating, and adds nothing for migration-only checks, with the clone step reading that output and degraded clone handling unchanged. This commit rebases PR #1973 onto dev c1f8e8f (PR #1972, which dropped the onex_change_control boundary from the packaged kafka manifest, leaving five boundaries over omniclaude, omniintelligence and omnimarket). In contracts/OMN-20074.yaml, both sides added AC46; the base's AC46 and dod-omn-20074-ac46-pr1972 are kept unchanged, and this PR's requirement is renumbered AC47 with dod item dod-omn-20074-ac47 binding tests/ci/test_validate_boundaries_peer_closure_omn20074.py. Two tests that assumed six boundaries and the onex_change_control peer now assert five boundaries and use omniintelligence as the omitted peer. Focused tests: 17 passed (the peer-closure test file and tests/unit/handlers/test_handler_boundary_parity.py). ruff and pre-commit including yamlfmt passed.
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant