Problem
We have 4 overlapping pipelines for the PR review→fix→reply cycle:
| Pipeline |
Type |
Steps |
ops-pr-review |
Leaf |
Review PR, post findings |
ops-pr-rework |
Leaf |
Fetch → triage → fix → push (no reply, uses git add -A) |
ops-pr-fix-review |
Leaf |
Fetch → triage → fix → push → reply (superset of rework) |
impl-review-loop |
Composition |
impl-issue → ops-pr-review → ops-pr-rework → re-review |
ops-pr-fix-review is a strict superset of ops-pr-rework. impl-review-loop hardcodes 2 iterations and chains leaf pipelines that already overlap.
Proposal
Leaf pipelines (granular, composable)
ops-pr-review (keep, existing) — Review a PR, produce structured findings artifact
ops-pr-triage (new, extracted from rework) — Classify findings as accept/reject/defer/skip
ops-pr-fix (new, extracted from rework) — Apply accepted fixes, run tests, commit, push
ops-pr-reply (new) — Post per-comment resolutions and summary on the PR
Composition pipelines (wire leafs together)
ops-pr-rework → composition of: ops-pr-triage → ops-pr-fix
ops-pr-fix-review → composition of: ops-pr-review → ops-pr-triage → ops-pr-fix → ops-pr-reply
impl-review-loop → composition of: impl-issue → ops-pr-fix-review (with loop/iteration config)
Cleanup
- Delete current monolithic
ops-pr-rework.yaml (replace with composition version)
- Delete current monolithic
ops-pr-fix-review.yaml (replace with composition version)
- Fix
git add -A → targeted staging in ops-pr-fix
- Include GitHub Copilot/bot reviews in
ops-pr-review and ops-pr-triage
Design principles
- Each leaf pipeline does ONE thing (single responsibility)
- Composition pipelines are thin orchestrations — no inline logic
- Same leaf steps are reusable across different compositions
- Loop iterations handled by composition config, not hardcoded steps
Acceptance criteria
Problem
We have 4 overlapping pipelines for the PR review→fix→reply cycle:
ops-pr-reviewops-pr-reworkgit add -A)ops-pr-fix-reviewimpl-review-loopops-pr-fix-reviewis a strict superset ofops-pr-rework.impl-review-loophardcodes 2 iterations and chains leaf pipelines that already overlap.Proposal
Leaf pipelines (granular, composable)
ops-pr-review(keep, existing) — Review a PR, produce structured findings artifactops-pr-triage(new, extracted from rework) — Classify findings as accept/reject/defer/skipops-pr-fix(new, extracted from rework) — Apply accepted fixes, run tests, commit, pushops-pr-reply(new) — Post per-comment resolutions and summary on the PRComposition pipelines (wire leafs together)
ops-pr-rework→ composition of:ops-pr-triage→ops-pr-fixops-pr-fix-review→ composition of:ops-pr-review→ops-pr-triage→ops-pr-fix→ops-pr-replyimpl-review-loop→ composition of:impl-issue→ops-pr-fix-review(with loop/iteration config)Cleanup
ops-pr-rework.yaml(replace with composition version)ops-pr-fix-review.yaml(replace with composition version)git add -A→ targeted staging inops-pr-fixops-pr-reviewandops-pr-triageDesign principles
Acceptance criteria
ops-pr-rework.yamlandops-pr-fix-review.yamlgit add -Areplaced with targeted stagingops-pr-reworkupdatedwave validatepasses on all new pipelines