Skip to content

ci(OMN-20074): take omnibase_core's last live callers and the doc-scan exemption off onex_change_control - #2009

Merged
jonahgabriel merged 2 commits into
devfrom
omn-20074-core-occ-residue
Oct 16, 2026
Merged

jonahgabriel merged 2 commits into
devfrom
omn-20074-core-occ-residue

Conversation

@jonahgabriel

Copy link
Copy Markdown
Contributor

Summary

OCC retirement for omnibase_core (OMN-20074). Base dev; merge base 4bb0b7e, head 85fcb3f.

Changes

  1. .github/workflows/ci.yml boundary-validation job: the validate-boundaries pin moves from de3398d (omnibase_core#1942) to c1f8e8f (omnibase_core#1972, which dropped the only boundary whose producer lived in onex_change_control), and the repos input drops onex_change_control. The job id, name and required context are unchanged. omniclaude#2757 made the same move.
  2. .github/workflows/main-target-guard.yml: the promotion-receipt exception (a PR body line promotion-receipt: OCC-<n> admitted a dev or promotion/* PR onto main) is removed; every PR onto main is refused, and PRs onto other bases are not affected. release.yml moves main by fast-forwarding it to the release tag and opens no PR against main. omnibase_infra's guard already refuses every PR onto main.
  3. Dead text: the ruff per-file ignore for the deleted scripts/ci/occ_preflight_wait.py; the dependency-cascade.yml header that named onex_change_control as a cascade target (the live REPOS list does not include it) and its note about the change-control repository's dependencies; the required-check-skip-guard _workflow_model.py docstring example naming the deleted occ-preflight.yml; the .pre-commit-config.yaml comment that said onex_change_control owns the ticket-contract schema.
  4. Doc-content scan (src/omnibase_core/validation/doc_content_scan/): the onex_change_control/ path exemption for OMN ticket references is removed; the contracts/ exemption and the local-environment rules stay. No tracked path in omnibase_core sits under onex_change_control/, and of the ten repositories checked (onex_change_control included) only omnibase_core's pre-commit config runs check-doc-content-scan. The handler, model and package docstrings, the .pre-commit-config.yaml comment, the .pre-commit-hooks.yaml description and the validator-requirements.yaml entry follow.
  5. contracts/OMN-20074.yaml: adds requirement req-omn20074-core-residual-callers with AC52, AC53 and AC54, two evidence_requirements entries and dod_evidence entries dod-omn-20074-ac52, dod-omn-20074-ac53 and dod-omn-20074-ac54. No existing criterion line changes.

Tests

Written first:

  • tests/ci/test_validate_boundaries_caller_omn20962.py — new test that the pin is the fix(OMN-20074): drop the onex_change_control boundary from the kafka manifest #1972 merge; repos assertion without onex_change_control
  • tests/ci/test_main_target_guard_prepush_omn20780.py — dev and promotion/* PRs onto main with a promotion-receipt body are refused; the guard step reads no receipt
  • tests/unit/validation/doc_content_scan/test_handler_doc_content_scan_compute.py — a ticket reference under an onex_change_control/ path is flagged; the LAN-IP control moves to a contracts/ path

At the merge base 5 tests failed for the first two files and 1 for the doc-content scan; with the change the doc_content_scan tests pass, 68 tests. With the change, 63 passed across those two files and six neighbouring test files; tests/ci/test_ticket_contract_ids_unique_omn20074.py 4 passed; tests/ci/test_contract_validation_in_tree_omn20074.py 9 passed.

Remaining references

git grep -E 'onex_change_control|onex-change-control|occ-preflight' over tracked files: before 166 files / 568 lines; after 162 files / 555 lines. Non-comment lines in .github, .pre-commit-config.yaml and pyproject.toml outside required-checks.yaml: before 3, after 0.

  • required-checks.yaml keeps three RETIRED rows (call-reject-skip-token / occ-preflight / eligibility, occ-companion-effect, occ-preflight / eligibility) because the required-context producer gate needs a RETIRED row for each context dropped from branch protection
  • the onexbot-occ-writer App and the ONEXBOT_OCC_* secret names stay because renaming a credential is out of this change's scope
  • validator_receipt_gate.py and validator_occ_merge_eligibility.py stay because omnibase_infra, omnimarket and omniclaude import them
  • topics.py CONTRACT_DRIFT_DETECTED stays because omnibase_infra, omnimarket and omniclaude name it
  • scripts/ci/product_reason_graph.py keeps its occ_eligibility input, which no workflow supplies, because omniclaude, omnibase_infra and omnimarket carry their own copies and its EVIDENCE_MISSING root needs one change across all of them
  • the rest are comments recording the retirement history, "ported from" provenance notes, past ticket contracts, CHANGELOG entries and retirement tests and fixtures that assert the references are absent

Lab

Lab: host=h200 lane=occ-off-omnibase-core sha=85fcb3ffe0da87ba09dc0b11200baff0bf9f933d command="onex-lab-run --via bus -- uv run pytest <the two changed test files, tests/unit/validation/doc_content_scan and 9 neighbouring tests/ci, tests/scripts and tests/unit/validation files> -q -n 0 --no-cov -p no:randomly" observed 155 passed, exit 0 (work unit lw-e9fab5ec10d14c28). In the lane worktree on h201 the new tests failed at merge base 4bb0b7e (5, and 1 for the doc-content scan) before the change.

Closes OMN-20074

@jonahgabriel
jonahgabriel requested a review from a team as a code owner October 15, 2026 21:01
@jonahgabriel
jonahgabriel enabled auto-merge (squash) October 15, 2026 21:01
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.
…_control

- ci.yml boundary-validation: the validate-boundaries pin moves from
  de3398d (omnibase_core#1942) to c1f8e8f (omnibase_core#1972,
  which dropped the only boundary whose producer lived in
  onex_change_control); the repos input drops onex_change_control. The
  pin and the repos input move together, as omniclaude#2757 did.
- main-target-guard.yml: the promotion-receipt exception (a body line
  "promotion-receipt: OCC-<n>") is removed and every pull request onto
  main is refused. release.yml moves main by fast-forwarding it to the
  release tag and opens no pull request against main.
- Tests written first and failing at the merge base:
  tests/ci/test_validate_boundaries_caller_omn20962.py (new pin test,
  repos assertion) and
  tests/ci/test_main_target_guard_prepush_omn20780.py (promotion PR onto
  main refused whatever its body; the guard reads no receipt).
- Dead text removed: the ruff per-file ignore for the deleted
  scripts/ci/occ_preflight_wait.py, the dependency-cascade header naming
  onex_change_control as a target, the required-check-skip-guard
  docstring example naming the deleted occ-preflight.yml, and the
  pre-commit comment that said onex_change_control owns the
  ticket-contract schema.
- contracts/OMN-20074.yaml gains AC52 and AC53 with their dod_evidence;
  no existing criterion line changes.
… during rebase

PR #2009 was dispatched at a89a252 with green CI and merge_state=DIRTY. It was rebased onto dev b637775. Mechanical contract conflicts were resolved by retaining both base AC55 and PR AC52, AC53, AC54 requirements and all corresponding dod_evidence entries. The base workflow-shape test from merged PR #2010 was retained unchanged; the old one-line test edit became redundant. The doc-content scan removes the onex_change_control path exemption and retains contracts path exemption. No push was performed; the controller will push.
@jonahgabriel
jonahgabriel force-pushed the omn-20074-core-occ-residue branch from a89a252 to 0ee4655 Compare October 15, 2026 23:45
@jonahgabriel
jonahgabriel merged commit aab7b1c into dev Oct 16, 2026
153 checks passed
@jonahgabriel
jonahgabriel deleted the omn-20074-core-occ-residue branch October 16, 2026 00:12
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