multi-service: live OpenSearch + ClickHouse containers
ci.yml
security
15
single trivy fs scan
security.yml
security
15
single trivy fs scan
masterplan-lock.yml
check
10
single dependency-free shell check
release.yml
release
45
docker build/push + full G17 SBOM/scan/attest/verify chain
No job that already had timeout-minutes was touched. .gitea/workflows/vehiq-oltp-ingest.yml, health-check.yml and nightly.yml were left alone (schedule/workflow_dispatch-only, not on the hot path — and the first is out of scope entirely per this pass's rules).
What I deliberately did NOT change
ci.yml, security.yml and masterplan-lock.yml all trigger on both unfiltered push and pull_request, which is normally this pass's second target (fix via adding a concurrency: block). I left that out here on purpose:
ci.yml's own integration job carries a dated comment stating, measured live on this fleet (runs 28904/28906), that "Gitea currently ignores workflow concurrency" — a branch push followed by its PR synchronize event still starts two full sets of service containers regardless of any concurrency: block. This repo's actual fix for that (self-identifying OpenSearch/ClickHouse containers, verified by run-unique identity) is already in place for the one job where it mattered enough to be worth the complexity.
Adding a concurrency: block on top of that would be, per this repo's own evidence, inert boilerplate at best — and at worst it reintroduces a known failure mode: repo memory from this same fleet-wide pass (measured in admin/serv0, 2026-09-26) shows this exact push+pull_request + concurrency-group combination producing PRs that go red with zero failing tests — the queued duplicate run gets cancelled by Gitea before a runner ever picks it up, and posts as a red commit status indistinguishable from a real failure. That measurement was taken in one of the very repos cited elsewhere as the working pattern for this fix, so I'd rather flag the conflict than propagate it here without a human decision.
Given that, and per this pass's own instruction not to touch on: triggers, I left the double-trigger question open for 0pt rather than adding a guard I have concrete, in-repo and fleet evidence is not a real fix on this Gitea version. Happy to revisit once that's resolved fleet-wide.
Validation
Every edited file re-parses with python3 -c "import yaml; yaml.safe_load(open(...))" — clean, all 5 OK. Diff is 7 insertions across 5 files, nothing else touched.
Part of a fleet-wide CI-speed audit (timeout-minutes + duplicate-trigger pass).
## What changed
Added job-level `timeout-minutes` to every job in a push/pull_request-triggered workflow that was missing one, sized to what the job actually does:
| File | Job | timeout-minutes | Why |
|---|---|---|---|
| `cd.yml` | `deploy` | 20 | bounded ~10min signed-artifact poll + setup/verify steps |
| `ci.yml` | `quality` | 30 | typecheck + vitest + next build |
| `ci.yml` | `integration` | 45 | multi-service: live OpenSearch + ClickHouse containers |
| `ci.yml` | `security` | 15 | single trivy fs scan |
| `security.yml` | `security` | 15 | single trivy fs scan |
| `masterplan-lock.yml` | `check` | 10 | single dependency-free shell check |
| `release.yml` | `release` | 45 | docker build/push + full G17 SBOM/scan/attest/verify chain |
No job that already had `timeout-minutes` was touched. `.gitea/workflows/vehiq-oltp-ingest.yml`, `health-check.yml` and `nightly.yml` were left alone (schedule/workflow_dispatch-only, not on the hot path — and the first is out of scope entirely per this pass's rules).
## What I deliberately did NOT change
`ci.yml`, `security.yml` and `masterplan-lock.yml` all trigger on both unfiltered `push` and `pull_request`, which is normally this pass's second target (fix via adding a `concurrency:` block). I left that out here on purpose:
`ci.yml`'s own `integration` job carries a dated comment stating, measured live on this fleet (runs 28904/28906), that **"Gitea currently ignores workflow concurrency"** — a branch push followed by its PR synchronize event still starts two full sets of service containers regardless of any `concurrency:` block. This repo's actual fix for that (self-identifying OpenSearch/ClickHouse containers, verified by run-unique identity) is already in place for the one job where it mattered enough to be worth the complexity.
Adding a `concurrency:` block on top of that would be, per this repo's own evidence, inert boilerplate at best — and at worst it reintroduces a known failure mode: repo memory from this same fleet-wide pass (measured in `admin/serv0`, 2026-09-26) shows this exact `push`+`pull_request` + concurrency-group combination producing PRs that go red with **zero failing tests** — the queued duplicate run gets cancelled by Gitea before a runner ever picks it up, and posts as a red commit status indistinguishable from a real failure. That measurement was taken in one of the very repos cited elsewhere as the working pattern for this fix, so I'd rather flag the conflict than propagate it here without a human decision.
Given that, and per this pass's own instruction not to touch `on:` triggers, I left the double-trigger question open for `0pt` rather than adding a guard I have concrete, in-repo and fleet evidence is not a real fix on this Gitea version. Happy to revisit once that's resolved fleet-wide.
## Validation
Every edited file re-parses with `python3 -c "import yaml; yaml.safe_load(open(...))"` — clean, all 5 OK. Diff is 7 insertions across 5 files, nothing else touched.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Fleet-wide CI-speed pass: none of 0pt's push/pull_request-triggered
workflow jobs capped their own runtime, so a hang (network stall,
runaway process, stuck polling loop) burns a runner slot until Gitea's
own default kicks in. Added job-level timeout-minutes sized to what
each job actually does:
cd.yml deploy 20 (bounded ~10min signed-artifact poll + setup)
ci.yml quality 30 (typecheck/test/build)
ci.yml integration 45 (multi-service: live OpenSearch + ClickHouse)
ci.yml security 15 (single trivy fs scan)
security.yml security 15 (single trivy fs scan)
masterplan-lock.yml check 10 (single dependency-free shell check)
release.yml release 45 (docker build/push + full G17 SBOM/scan/attest/verify chain)
Deliberately NOT included in this PR: a concurrency: block for
ci.yml/security.yml/masterplan-lock.yml's push+pull_request double-
trigger. ci.yml's own `integration` job comment already documents,
measured live (runs 28904/28906), that "Gitea currently ignores
workflow concurrency" on this fleet, and the repo's real fix for the
resulting double-run-on-shared-service-containers problem is the
self-identifying-container pattern already in that job, not a
concurrency group. Adding an inert concurrency: block here would give
false confidence that the duplicate-run problem is handled when it
measurably is not. Left for a follow-up decision once that fleet-wide
finding is resolved.
Part of a fleet-wide CI-speed pass (timeout-minutes audit).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CODEOWNERS rules
requested review from sax3l 2026-09-27 01:46:40 +00:00
Fleet-wide CI-speed pass: timeout-minutes guards added to hot-path jobs. Concurrency-block fix deliberately skipped for this repo — see PR body for the in-repo + fleet-memory evidence against it.
Fleet-wide CI-speed pass: timeout-minutes guards added to hot-path jobs. Concurrency-block fix deliberately skipped for this repo — see PR body for the in-repo + fleet-memory evidence against it.
admin
merged commit 67ee239c84 into main2026-09-27 01:50:05 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of a fleet-wide CI-speed audit (timeout-minutes + duplicate-trigger pass).
What changed
Added job-level
timeout-minutesto every job in a push/pull_request-triggered workflow that was missing one, sized to what the job actually does:cd.ymldeployci.ymlqualityci.ymlintegrationci.ymlsecuritysecurity.ymlsecuritymasterplan-lock.ymlcheckrelease.ymlreleaseNo job that already had
timeout-minuteswas touched..gitea/workflows/vehiq-oltp-ingest.yml,health-check.ymlandnightly.ymlwere left alone (schedule/workflow_dispatch-only, not on the hot path — and the first is out of scope entirely per this pass's rules).What I deliberately did NOT change
ci.yml,security.ymlandmasterplan-lock.ymlall trigger on both unfilteredpushandpull_request, which is normally this pass's second target (fix via adding aconcurrency:block). I left that out here on purpose:ci.yml's ownintegrationjob carries a dated comment stating, measured live on this fleet (runs 28904/28906), that "Gitea currently ignores workflow concurrency" — a branch push followed by its PR synchronize event still starts two full sets of service containers regardless of anyconcurrency:block. This repo's actual fix for that (self-identifying OpenSearch/ClickHouse containers, verified by run-unique identity) is already in place for the one job where it mattered enough to be worth the complexity.Adding a
concurrency:block on top of that would be, per this repo's own evidence, inert boilerplate at best — and at worst it reintroduces a known failure mode: repo memory from this same fleet-wide pass (measured inadmin/serv0, 2026-09-26) shows this exactpush+pull_request+ concurrency-group combination producing PRs that go red with zero failing tests — the queued duplicate run gets cancelled by Gitea before a runner ever picks it up, and posts as a red commit status indistinguishable from a real failure. That measurement was taken in one of the very repos cited elsewhere as the working pattern for this fix, so I'd rather flag the conflict than propagate it here without a human decision.Given that, and per this pass's own instruction not to touch
on:triggers, I left the double-trigger question open for0ptrather than adding a guard I have concrete, in-repo and fleet evidence is not a real fix on this Gitea version. Happy to revisit once that's resolved fleet-wide.Validation
Every edited file re-parses with
python3 -c "import yaml; yaml.safe_load(open(...))"— clean, all 5 OK. Diff is 7 insertions across 5 files, nothing else touched.🤖 Generated with Claude Code
Fleet-wide CI-speed pass: timeout-minutes guards added to hot-path jobs. Concurrency-block fix deliberately skipped for this repo — see PR body for the in-repo + fleet-memory evidence against it.