Skip to content

[ci-gap][ci-health] CI hygiene: job timeouts everywhere + unambiguous workflow/job names #372

Description

@claude

Current score → target

CI health: coverage 3/5 → 5/5 (hygiene layer).

Defect class prevented

(a) Hung jobs burning runners and blocking merges for up to 6 hours (GitHub's default timeout-minutes is 360); (b) required-check misconfiguration — you cannot unambiguously require a check whose name is shared by two workflows.

Evidence

  • 8 jobs have no timeout-minutes: tests.yml, E2Etests.yml, psalm.yml, infection.yml, phpinsights.yml, deptrac.yml, symfony.yml, openapi-diff.yml (bats/schemathesis/load/memory have them).
  • psalm.yml and phpinsights.yml both declare name: code quality — two workflows, one display name.
  • graphql-diff.yml:18: the job's display name is "Openapi-diff" (wrong workflow).
  • Filename typo: tempate-sync-pat.ymltemplate-sync-pat.yml.

Proposed fix

  • Add timeout-minutes sized ~2× observed p95 runtime to the 8 jobs (e.g. tests 20, E2E 30, infection 45, psalm 15, phpinsights 15, deptrac 10, symfony 15, openapi-diff 15).
  • Rename: psalm.ymlname: psalm, phpinsights.ymlname: phpinsights; fix the graphql-diff job label; fix the filename typo.

Effort

S

Sequencing

Land before the branch-ruleset issue — the required-check list needs unambiguous names.

Acceptance criteria

  • All jobs have explicit timeouts
  • No duplicate workflow display names; job labels match their workflow; filename typo fixed
  • Proven: a seeded sleep infinity step is killed at the configured timeout instead of 360 min

Filed by an automated CI/CD verification-coverage audit (OpenSSF Scorecard baseline: aggregate 6.0/10, local mode — SAST 0, Fuzzing 0, Token-Permissions 0, Pinned-Dependencies 5, Vulnerabilities 4). Audit method: inventory → gap analysis → git-history evidence mining → 3-iteration adversarial critique loop.


Generated by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    ciContinuous integration pipelineci-healthCI pipeline health and governancequalityQuality engineering / verification coverage

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions