chore(ci): merge-gated per-service test batteries (ADR-027) - #40
Merged
Conversation
Tests now run only on push to main (a merged PR or direct push) plus workflow_dispatch; the pull_request trigger is removed so in-flight branches no longer re-run the full suite on every push. tests.yml is restructured into a battery x Python-version matrix — one battery per .py service plus grouped core/cli/artifacts (11 batteries x 3.11/3.12/3.13 = 33 jobs) — so a failed check names the service and version. Releases stay gated on the same reusable workflow. Recorded in ADR-027.
Document the CI test topology decided on this branch: the test-on-merge trigger policy and its post-merge-feedback tradeoff, release gating, and the per-service battery matrix. Status Accepted; category Process.
Rename adr024-rac-not-content-store.md -> adr-024-rac-not-content-store.md to match the adr-NNN-slug.md convention every other ADR uses, and correct the heading, which read 'ADR-016' (a number owned by adr-016-relationships-as-structural-references.md) to 'ADR-024'.
Three ADR bodies carried wrong headings: adr-019-asset-management read 'ADR-017' (a number owned by adr-017-rac-managed-knowledge-not-work), and adr-025/adr-026 still had '# ADR-XXX' placeholders. Align each heading with its filename number and the '# ADR-NNN: Title' convention.
Collaborator
Author
Verification — manual
|
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.
Summary
Reshapes RAC's CI test pipeline and records the policy as ADR-027. Bundles the merged ADR filename/heading hygiene fixes from #39.
Changes:
tests.yml: the reusable suite is split into a per-service battery × Python-version matrix — 11 batteries (8.pyservices + groupedcore/cli/artifacts) × 3.11/3.12/3.13 = 33 named jobs (e.g.relationships (py3.11)), replacing the singlepytest (3.x)matrix.ci.yml: tests run only on merge tomain(push: [main]) plusworkflow_dispatch; thepull_requesttrigger is removed;cancel-in-progress: false.rac/decisions/adr-027-ci-test-topology.md: records the trigger policy, release gate, and battery topology.adr-024file rename + four heading-number corrections.Roadmap / ADR Trace
No roadmap item — CI infrastructure plus repository hygiene.
rac/decisions/adr-027-ci-test-topology.mdadr-008-agent-ready-architecture(service architecture the batteries mirror),adr-005-cli-first+adr-007-json-contract-stability(public contracts the release gate protects),adr-003-structured-outputs-first.Scope
Included
push: [main]) +workflow_dispatch;cancel-in-progress: falseso every merge is fully tested.Excluded
python-publish.yml— the release gate (release-build: needs: test) was already present; it now automatically enforces all 33 batteries because it calls the same reusable workflow.workflow_dispatchis the manual escape hatch.Categorynot added to adr-024).Product / Architecture Decisions
.pyservice, plus groupedcore/cli/artifacts; tests are selected by path, so no markers or source changes are required.name: <battery> (py<version>)surfaces the responsible service in the Actions UI (the original motivation).main, not on PRs (ADR-027). The post-merge-feedback tradeoff is accepted and documented; a regression is caught on themainrun and blocks the next release via the gate.cancel-in-progress: falseonmainbecause those runs gate releases and each merge should be tested in full.tests/test_*.pymaps to exactly one battery).User-Facing Contract
CLI / Human / JSON
None — no application behavior, schema, or exit-code changes. This PR is CI configuration plus documentation.
CI (developer-facing)
mainor manual dispatch: 33 named checks (core (py3.11),relationships (py3.12), …).Verification
Ran
Covered
core41,artifacts134,relationships72,index17).tests/test_*.pybelongs to exactly one battery — no test silently unrun.ci.ymlno longer triggers onpull_request;workflow_dispatchpresent for manual runs.mainor viaworkflow_dispatch, since tests no longer run on PRs.Review Path
.github/workflows/tests.yml— the battery × version matrix and per-batterypytestinvocation..github/workflows/ci.yml— trigger policy (push: [main]+workflow_dispatch, nopull_request).rac/decisions/adr-027-ci-test-topology.md— the recorded decision and its tradeoffs.rac/decisions/adr-019 / adr-024 / adr-025 / adr-026— bundled hygiene fixes (from fix(decisions): correct ADR filenames and heading numbers #39).Notes For Reviewer
CIworkflow via “Run workflow” (workflow_dispatch) on this branch.python-publish.ymlis intentionally untouched; it already consumes the reusable workflow, so the release gate now requires every battery.adr-024missingCategorysection;adr-019title ("Asset References") vs filename slug ("asset-management").