diff --git a/skills/sdlc/SKILL.md b/skills/sdlc/SKILL.md index 8ceee5e..5a25586 100644 --- a/skills/sdlc/SKILL.md +++ b/skills/sdlc/SKILL.md @@ -140,6 +140,19 @@ Merge: Countess von Containerheim merges after all approvals 13. Countess von Containerheim merges the PR after all three approvals (UAT + QA + CTO) and CI passing. 14. Reject → returns to CTO → engineer. +### Pipeline Routing + +PRs are classified into two pipelines based on changed files: + +| Pipeline | Trigger | Stages | +|----------|---------|--------| +| **A — User-facing** | PR changes any plugin runtime files (`src/`, `package.json`, `pnpm-lock.yaml`, `tsconfig.json`, `artifacthub-pkg.yml`) | CI → UAT → QA → CTO → CEO merge | +| **B — Infrastructure** | PR changes ONLY infrastructure files (`.github/`, `*.md`, `.eslintrc*`, `.prettierrc*`, `renovate.json*`, `.gitignore`, `.editorconfig`, `LICENSE`) | CI → QA → CTO → CEO merge (skip UAT) | + +**Default is Pipeline A** — if any changed file does not match the infrastructure-only list, the full pipeline applies. + +Pipeline B requires **2 approving GitHub reviews** (QA + CTO) instead of 3. The `dual-approval-check` workflow enforces this gate. + ### Hierarchy Rules - CTO rejections go directly to engineer (not through QA or UAT).