Repository navigation
test(cross-repo): verify topic constants match kafka_boundaries manifest [OMN-6284] - #102
Conversation
…est [OMN-6284] Adds tests/integration/cross_repo/test_topic_constants_match.py which scans source repos for topic constant definitions and verifies they match the boundary manifest in kafka_boundaries.yaml. Three test cases: - producer files must contain the topic_pattern regex - consumer files must contain the topic_pattern regex - no orphaned boundaries (both files present) Plus a negative fixture documenting that regex hits do not prove live wiring. Also removes 10 stale boundary entries from kafka_boundaries.yaml whose topic strings no longer exist in the referenced source files.
…ts_match [OMN-6284] Pre-push mypy hook caught missing type parameters on list[dict] and unused type: ignore comments. Fixed all three signatures to use list[dict[str, str]].
|
Warning Rate limit exceeded
⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughRemoved several Kafka boundary entries, added two new cross-repo integration test modules for Kafka schema round-trips and topic-constant consistency, and updated the omni_home fixture to skip tests when omniclaude dependencies are unavailable; pyproject.dev received explanatory comments only. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
…-repo fixture The omni_home fixture raised RuntimeError when OMNI_HOME was not set and the repo-relative derivation failed. This caused test ERRORs (exit code 1) in CI rather than graceful SKIPs. Changed raise RuntimeError to pytest.skip() so tests that require omni_home are skipped on GitHub Actions runners where omni_home is not present.
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (3)
tests/integration/cross_repo/test_kafka_schema_roundtrip.py (1)
220-245: Track uncovered schema identities, not just the count.A remove-one/add-one swap leaves
missing_countunchanged and this guard passes even though the uncovered set drifted. Comparing against an explicit expected label set would make this check deterministic.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@tests/integration/cross_repo/test_kafka_schema_roundtrip.py` around lines 220 - 245, Replace the current numeric-only check (variables omniclaude_schemas, missing_count, KNOWN_COVERAGE_GAP) with an explicit set comparison: compute the set of missing schema labels (e.g., missing_schemas = {s for s in omniclaude_schemas if s not in SCHEMA_TEST_DATA}), declare or use an expected set constant (e.g., EXPECTED_MISSING_OMNICLAUDE_SCHEMAS) and assert equality, and update the pytest.fail messages to include the unexpected/extra/missing schema names when the sets differ; keep references to omniclaude_schemas, SCHEMA_TEST_DATA and KNOWN_COVERAGE_GAP so the diff is easy to find.tests/integration/cross_repo/conftest.py (1)
44-45: ValidateOMNI_HOMEoverrides before treating the environment as resolved.
pytest.skip()here is a good change, but only the derived-path branch gets the repo-layout check. IfOMNI_HOMEpoints at the repo instead of the registry parent,tests/integration/cross_repo/test_topic_constants_match.pyLines 43-58 and 73-88 will emit one missing-file failure per boundary instead of a single actionable setup skip.♻️ Suggested adjustment
env_path = os.environ.get("OMNI_HOME") if env_path: - return Path(env_path) + candidate = Path(env_path) + if (candidate / "omniclaude").is_dir(): + return candidate + pytest.skip( + "OMNI_HOME must point to the omni_home registry directory. " + f"'{candidate}' does not contain an 'omniclaude' subdirectory." + )Also applies to: 59-59
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@tests/integration/cross_repo/conftest.py` around lines 44 - 45, When resolving environment overrides, ensure any OMNI_HOME override is validated for the expected repo layout before accepting it; add the same repo-layout check and a pytest.skip(...) with a clear message to the non-derived-path branch so that if OMNI_HOME points at the repo (or otherwise lacks the expected files) tests are skipped instead of producing per-boundary file-missing errors; specifically update the code that handles OMNI_HOME resolution to run the existing repo-layout validation (the same check used in the derived-path branch) and call pytest.skip when validation fails (also apply this same change to the other branch referenced at the second occurrence).tests/integration/cross_repo/test_topic_constants_match.py (1)
35-114: Centralize manifest path resolution and scan logic.The producer, consumer, and orphan tests all rebuild the same repo paths, and the first two also duplicate the regex-scan loop. A couple of small helpers would keep future changes to file checks or pattern handling consistent.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@tests/integration/cross_repo/test_topic_constants_match.py` around lines 35 - 114, The three tests duplicate repo-path construction and regex scanning; refactor by adding small helpers (e.g., a function like resolve_repo_file(entry, role) to return the Path for producer/consumer using the entry keys, and a check_file_contains_pattern(path, pattern, entry, role) that reads text and performs re.search and appends formatted errors). Replace the body of test_producer_files_contain_topic and test_consumer_files_contain_topic to call these helpers (use role="producer" / "consumer" and entry["producer_file"/"consumer_file"] as appropriate), and have test_no_orphaned_boundaries use resolve_repo_file to check existence for both sides; keep existing failure message formats and final assertions unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@tests/integration/cross_repo/test_kafka_schema_roundtrip.py`:
- Around line 124-129: Update the KNOWN_COVERAGE_GAP constant to reflect the
current manifest state: replace the value 24 with 23 so the
test_omniclaude_schemas_coverage_gap guard matches the observed missing_count
(23). Locate the KNOWN_COVERAGE_GAP symbol in the test_kafka_schema_roundtrip
module and change its numeric value accordingly.
---
Nitpick comments:
In `@tests/integration/cross_repo/conftest.py`:
- Around line 44-45: When resolving environment overrides, ensure any OMNI_HOME
override is validated for the expected repo layout before accepting it; add the
same repo-layout check and a pytest.skip(...) with a clear message to the
non-derived-path branch so that if OMNI_HOME points at the repo (or otherwise
lacks the expected files) tests are skipped instead of producing per-boundary
file-missing errors; specifically update the code that handles OMNI_HOME
resolution to run the existing repo-layout validation (the same check used in
the derived-path branch) and call pytest.skip when validation fails (also apply
this same change to the other branch referenced at the second occurrence).
In `@tests/integration/cross_repo/test_kafka_schema_roundtrip.py`:
- Around line 220-245: Replace the current numeric-only check (variables
omniclaude_schemas, missing_count, KNOWN_COVERAGE_GAP) with an explicit set
comparison: compute the set of missing schema labels (e.g., missing_schemas = {s
for s in omniclaude_schemas if s not in SCHEMA_TEST_DATA}), declare or use an
expected set constant (e.g., EXPECTED_MISSING_OMNICLAUDE_SCHEMAS) and assert
equality, and update the pytest.fail messages to include the
unexpected/extra/missing schema names when the sets differ; keep references to
omniclaude_schemas, SCHEMA_TEST_DATA and KNOWN_COVERAGE_GAP so the diff is easy
to find.
In `@tests/integration/cross_repo/test_topic_constants_match.py`:
- Around line 35-114: The three tests duplicate repo-path construction and regex
scanning; refactor by adding small helpers (e.g., a function like
resolve_repo_file(entry, role) to return the Path for producer/consumer using
the entry keys, and a check_file_contains_pattern(path, pattern, entry, role)
that reads text and performs re.search and appends formatted errors). Replace
the body of test_producer_files_contain_topic and
test_consumer_files_contain_topic to call these helpers (use role="producer" /
"consumer" and entry["producer_file"/"consumer_file"] as appropriate), and have
test_no_orphaned_boundaries use resolve_repo_file to check existence for both
sides; keep existing failure message formats and final assertions unchanged.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: daf6829e-8331-4b1f-a451-acf892d9737a
📒 Files selected for processing (5)
pyproject.tomlsrc/onex_change_control/boundaries/kafka_boundaries.yamltests/integration/cross_repo/conftest.pytests/integration/cross_repo/test_kafka_schema_roundtrip.pytests/integration/cross_repo/test_topic_constants_match.py
💤 Files with no reviewable changes (1)
- src/onex_change_control/boundaries/kafka_boundaries.yaml
…schema [OMN-6284]
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@tests/integration/cross_repo/test_kafka_schema_roundtrip.py`:
- Around line 94-130: The current coverage guard compares dict keys rather than
the manifest's event_schema labels, causing false negatives; update
SCHEMA_TEST_DATA entries (e.g., the "ModelHookPromptSubmittedPayload" and
"ModelHookToolExecutedPayload" entries) to include the manifest label(s) used in
the kafka manifest (e.g., "event_schema_label" or "manifest_labels"), then
change the coverage computation (the logic that builds missing_count around
KNOWN_COVERAGE_GAP) to collect and compare manifest labels from SCHEMA_TEST_DATA
instead of using the dictionary keys; also update the parallel check around
lines referenced (the other missing_count usage) to use those manifest label
values so the guard measures actual manifest coverage rather than Python
class-name alignment.
- Around line 54-58: The helper _add_repo_to_path currently only inserts the
repo src path when absent, so preinstalled packages can shadow the local
checkout; change _add_repo_to_path to always ensure the repo's src (computed as
omni_home / repo / "src") is at sys.path index 0 by: if src.exists() remove any
existing occurrences of str(src) from sys.path (or any matching entries) and
then insert str(src) at position 0 — update the function body for
_add_repo_to_path to perform this move-to-front logic so the local checkout wins
import resolution.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 33d15c7c-13ba-437f-8466-a2ae62bd10db
📒 Files selected for processing (1)
tests/integration/cross_repo/test_kafka_schema_roundtrip.py
| def _add_repo_to_path(omni_home: Path, repo: str) -> None: | ||
| """Add a sibling repo's src/ to sys.path for import.""" | ||
| src = omni_home / repo / "src" | ||
| if src.exists() and str(src) not in sys.path: | ||
| sys.path.insert(0, str(src)) |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Inspect the helper and demonstrate why "insert only when absent" does not
# guarantee precedence for the OMNI_HOME checkout.
sed -n '54,58p' tests/integration/cross_repo/test_kafka_schema_roundtrip.py
python - <<'PY'
sys_path = ["/venv/site-packages", "/tmp/omni_home/omniclaude/src", "/other"]
src = "/tmp/omni_home/omniclaude/src"
if src not in sys_path:
sys_path.insert(0, src)
print(sys_path)
PYRepository: OmniNode-ai/onex_change_control
Length of output: 382
🏁 Script executed:
#!/bin/bash
# Verify file existence and check SPDX header
if [ -f tests/integration/cross_repo/test_kafka_schema_roundtrip.py ]; then
echo "=== File exists ==="
head -5 tests/integration/cross_repo/test_kafka_schema_roundtrip.py
echo ""
echo "=== Full lines 54-58 ==="
sed -n '54,58p' tests/integration/cross_repo/test_kafka_schema_roundtrip.py
echo ""
echo "=== Usage of _add_repo_to_path (first 10 matches) ==="
rg '_add_repo_to_path' tests/integration/cross_repo/test_kafka_schema_roundtrip.py -n -A 2 -B 1
else
echo "File not found"
fiRepository: OmniNode-ai/onex_change_control
Length of output: 834
🏁 Script executed:
#!/bin/bash
# Check if ruff is available and verify formatting compliance
if command -v ruff &> /dev/null; then
echo "=== Running ruff check ==="
ruff check tests/integration/cross_repo/test_kafka_schema_roundtrip.py --select=ALL 2>&1 | head -30
else
echo "=== ruff not in PATH, checking for uv ==="
which uv
fiRepository: OmniNode-ai/onex_change_control
Length of output: 2641
🏁 Script executed:
#!/bin/bash
# Get full context around the helper function (lines 50-70)
echo "=== Helper function context (lines 50-70) ==="
sed -n '50,70p' tests/integration/cross_repo/test_kafka_schema_roundtrip.pyRepository: OmniNode-ai/onex_change_control
Length of output: 916
Guarantee the OMNI_HOME checkout wins import resolution.
The current logic only inserts the path if absent. If omniclaude, omnibase_core, or omnibase_spi is already in sys.path (from site-packages or another checkout), this becomes a no-op and importlib.import_module() can load the wrong version. Always move the path to index 0 to ensure the local checkout takes precedence.
🩹 Minimal fix
def _add_repo_to_path(omni_home: Path, repo: str) -> None:
"""Add a sibling repo's src/ to sys.path for import."""
src = omni_home / repo / "src"
- if src.exists() and str(src) not in sys.path:
- sys.path.insert(0, str(src))
+ if not src.exists():
+ return
+ src_str = str(src)
+ if src_str in sys.path:
+ sys.path.remove(src_str)
+ sys.path.insert(0, src_str)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@tests/integration/cross_repo/test_kafka_schema_roundtrip.py` around lines 54
- 58, The helper _add_repo_to_path currently only inserts the repo src path when
absent, so preinstalled packages can shadow the local checkout; change
_add_repo_to_path to always ensure the repo's src (computed as omni_home / repo
/ "src") is at sys.path index 0 by: if src.exists() remove any existing
occurrences of str(src) from sys.path (or any matching entries) and then insert
str(src) at position 0 — update the function body for _add_repo_to_path to
perform this move-to-front logic so the local checkout wins import resolution.
| SCHEMA_TEST_DATA: dict[str, dict] = { # type: ignore[type-arg] | ||
| "ModelHookPromptSubmittedPayload": { | ||
| "import_path": "omniclaude.hooks.schemas", | ||
| "repo": "omniclaude", | ||
| "test_data": { | ||
| "entity_id": _SESSION_ID, | ||
| "session_id": str(_SESSION_ID), | ||
| "correlation_id": _CORRELATION_ID, | ||
| "causation_id": _CAUSATION_ID, | ||
| "emitted_at": _EMITTED_AT, | ||
| "prompt_id": uuid4(), | ||
| "prompt_preview": "test prompt preview", | ||
| "prompt_length": 42, | ||
| }, | ||
| }, | ||
| "ModelHookToolExecutedPayload": { | ||
| "import_path": "omniclaude.hooks.schemas", | ||
| "repo": "omniclaude", | ||
| "test_data": { | ||
| "entity_id": _SESSION_ID, | ||
| "session_id": str(_SESSION_ID), | ||
| "correlation_id": _CORRELATION_ID, | ||
| "causation_id": _CAUSATION_ID, | ||
| "emitted_at": _EMITTED_AT, | ||
| "tool_execution_id": uuid4(), | ||
| "tool_name": "Read", | ||
| }, | ||
| }, | ||
| } | ||
|
|
||
| # Number of omniclaude boundary event_schema labels not yet registered in | ||
| # SCHEMA_TEST_DATA. Decrement as schemas are added. The guard fails if this | ||
| # grows (regression) or shrinks without update (coverage improved, update needed). | ||
| # NOTE: event_schema labels in kafka_boundaries.yaml are informational and may | ||
| # not match importable Python class names 1:1 — some labels are placeholders. | ||
| KNOWN_COVERAGE_GAP = ( | ||
| 23 # 23 unique omniclaude boundary schemas pending coverage (1 covered by OMN-6284) |
There was a problem hiding this comment.
Track coverage against manifest labels, not class-name keys.
This file explicitly says event_schema labels and Python class names are not 1:1, but missing_count compares them directly anyway. The KNOWN_COVERAGE_GAP comment already suggests only one of the two registry entries is counted as covered, so this guard is measuring naming alignment rather than actual coverage. Please store the manifest label(s) in each SCHEMA_TEST_DATA entry and compute coverage from those values instead of the dict keys.
Also applies to: 222-235
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@tests/integration/cross_repo/test_kafka_schema_roundtrip.py` around lines 94
- 130, The current coverage guard compares dict keys rather than the manifest's
event_schema labels, causing false negatives; update SCHEMA_TEST_DATA entries
(e.g., the "ModelHookPromptSubmittedPayload" and "ModelHookToolExecutedPayload"
entries) to include the manifest label(s) used in the kafka manifest (e.g.,
"event_schema_label" or "manifest_labels"), then change the coverage computation
(the logic that builds missing_count around KNOWN_COVERAGE_GAP) to collect and
compare manifest labels from SCHEMA_TEST_DATA instead of using the dictionary
keys; also update the parallel check around lines referenced (the other
missing_count usage) to use those manifest label values so the guard measures
actual manifest coverage rather than Python class-name alignment.
Accept main's kafka_boundaries.yaml which includes OMN-6289 audit removals and additions (hostile-reviewer, llm-call-completed, routing-feedback-processed, pattern-learning topics). Resolve KNOWN_COVERAGE_GAP to 24 matching the actual unique omniclaude boundary event_schema count.
Extends OCC bundle to cover all 7 wave 2 release PRs. Adds 4 new dod_evidence items: - dod-release-oii-v0.24.0 (omniintelligence PR #657 @ 63ca7019) - dod-release-omem-v0.16.0 (omnimemory PR #324 @ 5da2e419) - dod-release-omninode-infra-v0.2.0 (omninode_infra PR #442 @ 25609ed0) - dod-release-omnidash-v1.0.0 (omnidash PR #102 @ 8508bd80) Updates self-receipt probe_command to verify all 7 release receipts exist. Updates contract title + summary to reflect full coverage. Evidence-Ticket: OMN-11348
* chore(OMN-11348): bind 2026-05-21 wave 2 batch release evidence Wave 2 OCC contract + receipts for the 2026-05-21 full org-wide release pipeline. Builds on OMN-11346 (wave 1 covered omnibase_infra v0.36.1, omnimarket v0.3.1, omniclaude v0.24.0). Tier 1 / Tier 2 receipts bundled in this PR: - dod-release-spi-v0.21.1 (omnibase_spi PR #211 @ e29bf28) - dod-release-compat-v0.4.1 (omnibase_compat PR #95 @ 9554d99) - dod-release-core-v0.42.0 (omnibase_core PR #1120 @ 1834272) - dod-occ-pr-self (self-binding) Tier 3 / Tier 4 dod_evidence items (oii, omem, infra, dash) will be appended in follow-up commits as those release PRs reach observable head SHAs, mirroring the OMN-11346 incremental pattern. Evidence-Ticket: OMN-11348 * fix(OMN-11348): set self-binding receipt pr_number to actual OCC PR dod-occ-pr-self had pr_number: 0 which fails ModelDodReceipt validation (>=1). Use real OCC PR number 1250 so receipt-gate accepts the receipt. Evidence-Ticket: OMN-11348 * fix(OMN-11348): rebind spi receipt to v0.21.0 PR #212 Team-lead switched from Option 2 (skip v0.21.0 → release v0.21.1) to Option 1 (delete orphan v0.21.0 tag → release fresh v0.21.0). Changes: - Renamed receipt dir dod-release-spi-v0.21.1 → dod-release-spi-v0.21.0 - Receipt YAML rebound to PR #212 @ 11a5721 (was PR #211 @ e29bf28) - Contract YAML evidence_item id + check_value updated - Self-receipt probe_command updated to reference new path - Title + summary updated Orphan remote v0.21.0 tag was deleted via: git push origin :refs/tags/v0.21.0 git tag -d v0.21.0 No GH Release existed for the orphan tag; PyPI omnibase-spi stops at 0.20.6, so no consumer was depending on it. Old PR #211 closed; new PR #212 cuts fresh v0.21.0 from current main. Evidence-Ticket: OMN-11348 * chore(OMN-11348): append Tier 3/4 release evidence to wave 2 bundle Extends OCC bundle to cover all 7 wave 2 release PRs. Adds 4 new dod_evidence items: - dod-release-oii-v0.24.0 (omniintelligence PR #657 @ 63ca7019) - dod-release-omem-v0.16.0 (omnimemory PR #324 @ 5da2e419) - dod-release-omninode-infra-v0.2.0 (omninode_infra PR #442 @ 25609ed0) - dod-release-omnidash-v1.0.0 (omnidash PR #102 @ 8508bd80) Updates self-receipt probe_command to verify all 7 release receipts exist. Updates contract title + summary to reflect full coverage. Evidence-Ticket: OMN-11348
…#1251) * fix(OMN-11348): refresh SHA pins for compat/core/oii/omem release PRs After OCC #1250 merged, the original release PR head SHAs needed PR_EVENT_BODY refresh (empty commit push) to clear stale webhook payload cache that caused "PR title/body does not cite an OMN ticket" failures even though the body contained OMN-11348. Refreshed SHAs in contract + receipts: - compat PR #95: 9554d993 -> c8c41c8c - core PR #1120: 1834272d -> 3159cb9d - oii PR #657: 63ca7019 -> dffac2f3 - omem PR #324: 5da2e419 -> cbcdd75d Tier 1 (spi #212) and Tier 4 (omninode_infra #442, omnidash #102) PRs already merged before OCC #1250 landed; their SHAs were correct in the merged OCC contract. Evidence-Ticket: OMN-11348 * fix(OMN-11348): rebind self-receipt to OCC PR #1251 for SHA refresh receipt-gate failed on PR #1251 with reason: pr_ticket_mismatch because the merged dod-occ-pr-self receipt has pr_number: 1250 (the original OCC PR). Since #1251 is a follow-up that updates the same contract for the same ticket, rebind the self-receipt to #1251 so receipt-gate finds the binding PR_NUMBER. Evidence-Ticket: OMN-11348
* evidence(OMN-6678): bind OCC receipts for May 22 merge sweep Consolidated central OCC contracts + PR-bound DoD receipts unblocking the verify/verify receipt-gate for 11 in-flight PRs across three repos. omniintelligence: OMN-6678/#667, OMN-6660/#666, OMN-11621/#665, OMN-11551/#664, OMN-11554/#663, OMN-11561/#662, OMN-11565/#661, OMN-11568/#660. omnibase_compat: OMN-11618/#103, OMN-11579/#102. onex_change_control: OMN-11616/#1380. Each ticket carries a PR-bound PASS receipt plus an OCC self-binding receipt; contract_sha256 computed post-yamlfmt so hash binding holds in CI. Evidence-Source: OCC#9999 Evidence-Ticket: OMN-6678 Evidence-Ticket: OMN-6660 Evidence-Ticket: OMN-11621 Evidence-Ticket: OMN-11551 Evidence-Ticket: OMN-11554 Evidence-Ticket: OMN-11561 Evidence-Ticket: OMN-11565 Evidence-Ticket: OMN-11568 Evidence-Ticket: OMN-11618 Evidence-Ticket: OMN-11579 Evidence-Ticket: OMN-11616 * evidence(OMN-6678): pin OCC self-binding receipts to PR #1384 Two-pass finalization: replace placeholder OCC PR number 9999 with the real consolidated PR #1384 across all self-binding receipts and contract dod_evidence entries. Removes the stale dod-occ-pr-9999 entry left in the OMN-11621 contract and restamps every OMN-11621 receipt contract_sha256 to the post-edit, post-yamlfmt contract hash. Compat self-binding receipts updated to pr_number 1384. Evidence-Source: OCC#1384 Evidence-Ticket: OMN-6678 Evidence-Ticket: OMN-6660 Evidence-Ticket: OMN-11621 Evidence-Ticket: OMN-11551 Evidence-Ticket: OMN-11554 Evidence-Ticket: OMN-11561 Evidence-Ticket: OMN-11565 Evidence-Ticket: OMN-11568 Evidence-Ticket: OMN-11618 Evidence-Ticket: OMN-11579 Evidence-Ticket: OMN-11616 * chore(OMN-6678): re-trigger CI with OCC#1384 body
Summary
tests/integration/cross_repo/test_topic_constants_match.py— a cross-repo smoke-check harness that scans source repos for topic constant definitions and verifies they match the boundary manifest inkafka_boundaries.yamltopic_patternregex, consumer files must contain thetopic_patternregex, and no orphaned boundaries (both files present)test_regex_scan_can_match_dead_code) that explicitly documents the scan's smoke-check nature — a pattern hit does not prove live wiring, only a missing hit proves driftkafka_boundaries.yamlwhose topic strings no longer exist in the referenced source files (discovered when running the new test)Test plan
OMNI_HOME=/Volumes/PRO-G40/Code/omni_home uv run pytest tests/integration/cross_repo/test_topic_constants_match.py -v— all 4 tests passpre-commit run --all-files— all hooks passuv run mypy tests/integration/cross_repo/test_topic_constants_match.py --strict— no issuesSummary by CodeRabbit
Removals
Tests
Chores