Restructure CI into tiers for 1.0 and close lint, coverage and dependency-automation gaps
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Ambito
- build-system, ci-cd, testing-qa, tooling
Direzione di ricerca
Start with the existing workflows named in the issue and docs/CI.md, then inspect tests/ci/test_workflow_concurrency.py and prototypes/structural/driver/main_test.go. Map the current jobs against the proposed Fast, Full, Deep, Breadth and Release tiers, including the listed Go, Rust and dependency checks. Done means the tiers, documentation, coverage artifact, fork-aware dependency automation, SHA-pinning check and schedule prohibition satisfy the acceptance checklist.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Current state (2026-09-22)
The workflows are ci.yml, structural-worker.yml, structural-prototype.yml and release-candidate.yml. Draft PRs run only a lightweight preflight. Ready PRs and main run the full set: vet, race tests and govulncheck (Linux only) on Linux/macOS/Windows; Linguist and scc conformance; and the structural worker on 5 platforms.
That design was shaped by private-repository minute costs, estimated in docs/CI.md at ~$2.26 per full cycle, with macOS runners 10× the Linux rate. Once the repository is public, standard GitHub-hosted runners and self-hosted runners are free and unlimited (docs). The constraint goes away, but the structure should be ready. Even then, deep tiers stay on-demand until the owner decides otherwise (see Scheduling policy).
Gaps
- No deep on-demand jobs: fuzzing campaigns, full-corpus oracles, benchmarks, mutation testing, upstream-drift checks.
- No coverage reporting. Measured first-party statement coverage is 82.6%, and nobody sees it.
- Linting is
go vetonly: no staticcheck or golangci-lint config. - No
cargo clippyorrustfmtfor the worker. - No Dependabot or Renovate for the Go modules, the Cargo workspace or Actions. Actions are already pinned to full commit SHAs with version comments; keep that and verify it automatically. Dependency automation must respect the maintained Enry/go-git forks: their updates go through canonical regeneration and provenance checks, not plain version bumps.
- govulncheck runs on Linux only.
- No linux-arm64 in the core test matrix.
- Ergonomics regression tests (
tests/ergonomics_v100/audit/regression_tests) and the npm registry conformance check aren't in CI. - No fuzzing, performance or oracle jobs (#87, #90, #84).
- A
time.Sleep(time.Minute)inprototypes/structural/driver/main_test.go.
Proposal: tiers
| Tier | Trigger | Contents |
|---|---|---|
| Fast | every push/PR, including drafts | build, unit and race tests (Linux), lint, clippy, deterministic cost-counter and allocation gates, Linguist conformance subset, metamorphic tests on generated trees |
| Full | ready PR and main |
all platforms including linux-arm64; full conformance; oracle subset; coverage report with per-package floors and diff coverage; ergonomics regression tests |
| Deep (on demand) | workflow_dispatch only; also run by the release workflow |
fuzz campaign; oracle harness on the golden corpus; macro-benchmarks on a stable runner when one exists; govulncheck/cargo-audit on all OSes |
| Breadth and drift (on demand) | workflow_dispatch only; also run by the release workflow |
full golden corpus on Linux/macOS/Windows; mutation testing; upstream drift: new Linguist, Enry, scc, BCA, Syft or Noir releases are run through the differential harness and an issue is opened with the diff |
| Release | dispatch | everything above at the release commit, plus the release-tier benchmark report and the artifact hardening in #13 |
Scheduling policy
All CI stays event-driven: push, pull_request and workflow_dispatch (the release workflow is dispatch-driven too). No workflow has a schedule: trigger until the owner explicitly enables scheduled work, planned for well after the repository is public, for cost-efficiency.
The deep workflows are still built now, runnable by hand and through local make targets, so that enabling a schedule later is a small, reviewed change.
Acceptance
- The tiers implemented, with job-level documentation in
docs/CI.mdof what each tier guarantees. - Lint configs (golangci-lint with staticcheck; clippy with
-D warnings), fork-aware Dependabot or Renovate, and an automated check that Actions stay SHA-pinned. - Coverage published per package as a workflow artifact, with no third-party service required. The floor starts at today's numbers and must not regress.
- No
schedule:triggers anywhere, enforced by a CI contract test (e.g. alongsidetests/ci/test_workflow_concurrency.py). Deep tiers run only viaworkflow_dispatchor the release workflow. Enabling schedules is a separate owner decision, well after the public flip.
Part of the 1.0 quality program: #83. Epic: #81.
- Lingua principale
- Go
- Stelle
- 0
- Fork
- 0
- Merge medio
- 5h 8m
- PR unite (30g)
- 54
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di war-and-code/dircue
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
war-and-code/dircue#200 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement follow-up
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
war-and-code/dircue#201 ·
I maintainer di solito rispondono entro 1 giorno
-
follow-up
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
war-and-code/dircue#179 ·
I maintainer di solito rispondono entro 1 giorno
-
follow-up
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
war-and-code/dircue#178 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement follow-up
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
war-and-code/dircue#172 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di war-and-code/dircue
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
kind/bug
Difficoltà 1/5 1-3 ore Idoneità per principianti 85/100
kubernetes-sigs/vsphere-csi-driver#4351 ·
I maintainer di solito rispondono entro 1 giorno
-
component/gpu-kubelet-plugin component/helm needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
kubernetes-sigs/dra-driver-nvidia-gpu#1559 ·
I maintainer di solito rispondono entro 1 giorno
-
workflow: redundant goroutine in scheduleRetryForse già presa @moodbased l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
JuliusBrussee/caveman#1266 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno