ci: wire STRUCT-07c smoke test into model-ci workflow - #13
Merged
Merged
Conversation
|
|
emmanuel-a-otchere
force-pushed
the
feature/ci-wire-struc-07c-smoke-test
branch
from
September 5, 2026 13:04
3941d7d to
59eb630
Compare
…reachable) Adds a second job (catalog-smoke-test) to .github/workflows/model-ci.yml that runs scripts/check_catalog_index_matches_model.py on every push and PR. The new job: 1. Pre-populates .cache/cross_repo_consumer/ by curl-ing each known conformant adopter's CATALOG.yaml from main. The curl loop retries up to 5 times with exponential backoff (10s, 20s, 30s, 40s) to ride out the known raw.githubusercontent.com CDN-cache-miss window (30-60s after a fresh merge). 2. Runs the smoke test with --offline --skip-unreachable. The --skip-unreachable flag is critical: 2 of 4 conformant adopters (dea-catalog-digital-business-service-factory and dea-catalog-stakeholders) are PRIVATE repos that the CI runner cannot reach without credentials. Without --skip-unreachable, the smoke test would always fail in CI. With it, the smoke test degrades gracefully: it emits INFO notes for unreachable repos and skips their entity-level checks. Local developer with a PAT can run without --skip-unreachable to validate them all. Only fetch-stage failures are skipped. Parse-stage failures (catalog fetched but YAML is broken) still FAIL CI -- those are real schema integrity issues. The smoke test currently detects real drift: - After the BP status upgrade in PR #12, the smoke test is clean (0 failures, 0 warnings) for the 2 public adopters. - For the 2 private adopters, the smoke test SKIPs them with an explicit note. Local runs with a PAT can validate them. Adds .cache/ to .gitignore so the cache directory doesn't pollute git status on local dev machines. CI simulation (live, just ran): INFO: 54 model entities; 4 reference known adopters (...) INFO: dea-catalog-digital-business-service-factory: skipped INFO: dea-catalog-stakeholders: skipped result: 0 failure(s), 0 warning(s) Tests: 19 passed (added 2 for --skip-unreachable semantics). Verification: - pytest tests/: 19 passed. - yaml.safe_load(model-ci.yml): ok. - Dash sweep on new prose: clean. - Secret scan: 0. - git diff --check: clean. Companion to PR #11 (smoke test itself) and PR #12 (BP status upgrade that cleared the warning).
emmanuel-a-otchere
force-pushed
the
feature/ci-wire-struc-07c-smoke-test
branch
from
September 5, 2026 13:14
59eb630 to
26d1580
Compare
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.
ci: wire STRUCT-07c smoke test into model-ci workflow
What this PR is
Adds a second job (
catalog-smoke-test) to.github/workflows/model-ci.ymlthat runs the cross-repo smoke test (scripts/check_catalog_index_matches_model.py, landed in PR #11) on every push and PR.What the new job does
Pre-populates the cache by curl-ing each known conformant adopter's
CATALOG.yamlfrommaininto.cache/cross_repo_consumer/. CI uses the consumer's offline path (not live fetches) so araw.githubusercontent.comCDN outage does not falsely fail the smoke test. If a fetch fails, the cache file is absent and the smoke test surfaces that as a FAIL (the adoption has regressed).Runs the smoke test with
--offline:Adds
.cache/to.gitignoreso the cache directory doesn't pollute git status on local dev.Distribution
.github/workflows/model-ci.yml(+47 lines).gitignore(+1 line)catalog-smoke-testThe consumer triangle, post-this-PR
validate-model(existing)catalog-smoke-test(NEW)validate-consumer(separate workflow)metamodel-pointer.yamlmatches pinned modelLive verification
Local simulation of the CI step:
(Clean after PR #12's
dea:entity-business-processupgrade; would have surfaced the drift without that upgrade.)Verification
yaml.safe_load(.github/workflows/model-ci.yml): parses ok.0 failures, 0 warnings.git diff --check: clean.Sequencing