PLAT-02: Distributed caching strategy and cache-invalidation semantics #1615
Workflow file for this run
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
| # ============================================================================= | |
| # CI Required — PR merge gate | |
| # ============================================================================= | |
| # | |
| # Workflow Topology (see docs/analysis/2026-02-21_ci-github-actions-expansion-plan.md): | |
| # | |
| # ci-required.yml PR/push/merge_group gate (this file) | |
| # ├── reusable-docs-governance.yml docs + golden-principles + ops governance | |
| # ├── reusable-backend-architecture.yml architecture boundary tests | |
| # ├── reusable-backend-unit.yml domain / application / CLI unit tests (Ubuntu + Windows) | |
| # ├── reusable-api-integration.yml API integration tests (Ubuntu + Windows) | |
| # ├── reusable-frontend-unit.yml lint + typecheck + build + unit tests (Ubuntu + Windows) | |
| # ├── reusable-container-images.yml compose validation + image build + artifact export | |
| # └── reusable-e2e-smoke.yml Playwright smoke (depends on all above) | |
| # | |
| # ci-extended.yml optional PR lane (label/path/manual dispatch) | |
| # ├── actionlint workflow lint | |
| # ├── dependency-review (PR only) | |
| # ├── reusable-dependency-security-signals.yml (label: security) | |
| # ├── reusable-openapi-guardrail.yml | |
| # ├── reusable-backend-solution.yml (label: testing) | |
| # ├── reusable-e2e-smoke.yml (label: testing) | |
| # ├── reusable-demo-director-smoke.yml (label: automation) | |
| # ├── reusable-load-concurrency-harness.yml (label: testing) | |
| # └── reusable-container-integration.yml (label: testing) — Testcontainers PostgreSQL | |
| # | |
| # ci-nightly.yml scheduled regression (03:25 UTC daily) | |
| # ├── reusable-openapi-guardrail.yml | |
| # ├── reusable-backend-solution.yml | |
| # ├── reusable-e2e-smoke.yml | |
| # ├── reusable-load-concurrency-harness.yml | |
| # └── reusable-container-images.yml | |
| # | |
| # nightly-quality.yml scheduled quality signals (03:55 UTC daily) | |
| # ├── backend coverage (domain + application) | |
| # ├── frontend coverage | |
| # └── reusable-dependency-security-signals.yml | |
| # | |
| # ci-release.yml release lane (tag/release/manual) | |
| # ├── release build verification (backend + frontend) | |
| # ├── reusable-sbom-provenance.yml (CycloneDX SBOM + SLSA provenance, #103) | |
| # └── reusable-container-images.yml | |
| # | |
| # release-security.yml release security deep scan (tag/release/manual) | |
| # ├── dependency inventory + vulnerability scan + enforcement | |
| # ├── reusable-sbom-provenance.yml (CycloneDX SBOM + SLSA provenance, #103) | |
| # └── reusable-container-images.yml | |
| # | |
| # pages-frontend.yml GitHub Pages deploy (main push, frontend paths) | |
| # | |
| # Design principles: | |
| # - ci-required.yml is the merge gate: fast, deterministic, no opt-out | |
| # - Reusable workflows use workflow_call for composition by multiple callers | |
| # - ci-extended.yml runs heavier checks on label/path/manual triggers | |
| # - Nightly workflows shift expensive suites off the PR critical path | |
| # - Release workflows emit dependency + provenance artifacts | |
| # - Least-privilege permissions per job; no global elevation | |
| # - Third-party actions pinned to immutable references where feasible | |
| # ============================================================================= | |
| name: CI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - master | |
| pull_request: | |
| merge_group: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| docs-governance: | |
| name: Docs Governance | |
| uses: ./.github/workflows/reusable-docs-governance.yml | |
| with: | |
| node-version: 24.13.1 | |
| backend-architecture: | |
| name: Backend Architecture | |
| uses: ./.github/workflows/reusable-backend-architecture.yml | |
| with: | |
| dotnet-version: 8.0.x | |
| backend-unit: | |
| name: Backend Unit | |
| uses: ./.github/workflows/reusable-backend-unit.yml | |
| with: | |
| dotnet-version: 8.0.x | |
| api-integration: | |
| name: API Integration | |
| uses: ./.github/workflows/reusable-api-integration.yml | |
| with: | |
| dotnet-version: 8.0.x | |
| frontend-unit: | |
| name: Frontend Unit | |
| uses: ./.github/workflows/reusable-frontend-unit.yml | |
| with: | |
| node-version: 24.13.1 | |
| container-images: | |
| name: Container Images | |
| uses: ./.github/workflows/reusable-container-images.yml | |
| e2e-smoke: | |
| name: E2E Smoke | |
| needs: | |
| - docs-governance | |
| - backend-architecture | |
| - backend-unit | |
| - api-integration | |
| - frontend-unit | |
| uses: ./.github/workflows/reusable-e2e-smoke.yml | |
| with: | |
| dotnet-version: 8.0.x | |
| node-version: 24.13.1 |