Files
Charon/docs/plans/archive/ci_optimization_spec.md
akanealw eec8c28fb3
Some checks are pending
Go Benchmark / Performance Regression Check (push) Waiting to run
Cerberus Integration / Cerberus Security Stack Integration (push) Waiting to run
Upload Coverage to Codecov / Backend Codecov Upload (push) Waiting to run
Upload Coverage to Codecov / Frontend Codecov Upload (push) Waiting to run
CodeQL - Analyze / CodeQL analysis (go) (push) Waiting to run
CodeQL - Analyze / CodeQL analysis (javascript-typescript) (push) Waiting to run
CrowdSec Integration / CrowdSec Bouncer Integration (push) Waiting to run
Docker Build, Publish & Test / build-and-push (push) Waiting to run
Docker Build, Publish & Test / Security Scan PR Image (push) Blocked by required conditions
Quality Checks / Auth Route Protection Contract (push) Waiting to run
Quality Checks / Codecov Trigger/Comment Parity Guard (push) Waiting to run
Quality Checks / Backend (Go) (push) Waiting to run
Quality Checks / Frontend (React) (push) Waiting to run
Rate Limit integration / Rate Limiting Integration (push) Waiting to run
Security Scan (PR) / Trivy Binary Scan (push) Waiting to run
Supply Chain Verification (PR) / Verify Supply Chain (push) Waiting to run
WAF integration / Coraza WAF Integration (push) Waiting to run
changed perms
2026-04-22 18:19:14 +00:00

3.9 KiB
Executable File

CI Pipeline Optimization Plan

1. Introduction

Overview: This plan optimizes the CI pipeline dependency graph so the e2e job starts as early as possible, while preserving quality gates. The primary change is to decouple lint from build-image, allowing both to run in parallel after setup completes.

Objectives:

  • Start e2e as soon as build-image finishes.
  • Keep lint as a required gate via pipeline-gate.
  • Preserve existing security scan behavior, especially early/parallel execution of security-codeql.

2. Research Findings

Existing workflow file:

Current dependency graph (relevant):

  • setup has no needs (fast input normalization).
  • lint has no needs.
  • build-image needs lint and setup.
  • e2e needs build-image.
  • pipeline-gate needs lint, build-image, integration-gate, e2e-gate, coverage-gate, codecov-gate, security-gate.
  • security-codeql has no needs and runs early/parallel.

Observation:

  • build-image is unnecessarily serialized behind lint, delaying downstream jobs (e2e, integrations, security image scans).
  • security-codeql already runs independently and should remain so.

3. Technical Specifications

3.1 Dependency Graph Changes

Target behavior:

  • lint runs in parallel with setup and build-image.
  • build-image depends only on setup.
  • e2e continues to depend on build-image.
  • pipeline-gate continues to enforce lint success.
  • security-codeql remains without needs.

Proposed change:

  • Update build-image.needs to only include setup.

3.2 EARS Requirements

  • WHEN the CI pipeline runs, THE SYSTEM SHALL start build-image after setup completes, without waiting for lint.
  • WHEN build-image completes successfully, THE SYSTEM SHALL start e2e as soon as it is scheduled.
  • WHEN lint fails, THE SYSTEM SHALL block the pipeline via pipeline-gate even if e2e or build-image succeed.
  • WHEN security scans are enabled, THE SYSTEM SHALL run security-codeql in parallel with other jobs without dependency on setup, lint, or build-image.

3.3 Error Handling and Edge Cases

  • If setup fails, build-image and its dependents must not run (existing behavior preserved).
  • If lint fails but build-image and e2e succeed, pipeline-gate must still fail.
  • If security-codeql is skipped (e.g., forked PR), security-gate must continue to interpret skip correctly (no change).

3.4 Risks and Mitigations

Risk Impact Mitigation
build-image could start before lint detects issues Failing lint might occur after expensive build/test work pipeline-gate still enforces lint success; cost is acceptable for speed
Misconfigured needs graph causes unintended skips Downstream jobs might not run Only remove lint from build-image.needs; do not change other gates

4. Implementation Plan

Phase 1: Playwright Tests (Behavioral Expectations)

  • No Playwright changes are required for this CI optimization. Confirm e2e workflow reuse remains unchanged.

Phase 2: Backend Implementation

  • Not applicable.

Phase 3: Frontend Implementation

  • Not applicable.

Phase 4: Integration and Testing

  • Validate the dependency graph in ci-pipeline.yml locally by reasoning and optional dry-run (no CI execution in this plan).
  • Confirm security-codeql retains no needs.

Phase 5: Documentation and Deployment

  • Update this plan only (no documentation changes elsewhere).

5. Acceptance Criteria

  • DoD: CI dependency graph reflects build-image depending only on setup.
  • DoD: lint remains a required gate in pipeline-gate.
  • DoD: security-codeql continues to run early/parallel (no needs).
  • DoD: e2e still depends on build-image only.

6. Complexity and Impact

  • Complexity: Low
  • Impact: Moderate CI speed-up for E2E and integration jobs