Restructure CI into tiers for 1.0 and close lint, coverage and dependency-automation gaps
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 35/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 領域
- build-system, ci-cd, testing-qa, tooling
調査の方向性
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.
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- Go
- スター
- 0
- フォーク
- 0
- 平均マージ
- 11時間 3分
- マージ済み PR(30日)
- 5
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
war-and-code/dircue のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
war-and-code/dircue#200 ·
-
enhancement follow-up
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
war-and-code/dircue#201 ·
-
follow-up
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
war-and-code/dircue#179 ·
-
follow-up
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
war-and-code/dircue#178 ·
-
enhancement follow-up
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
war-and-code/dircue#172 ·
war-and-code/dircue の issue をすべて見る
似ている issue
-
agent-butler-finding bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
jordansmall/spindrift#6414 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
Icinga/icinga-kubernetes#294 ·
メンテナーはふだん 4 日以内に返信
-
Cluster details: the Control Plane version field has a different border color than its icon boxオープンkind/design sig/ui
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
kubermatic/dashboard#8449 ·
メンテナーはふだん 1 日以内に返信
-
needs-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
cli/cli#14962 · コメント 1 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
model-drift
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
メンテナーはふだん 1 日以内に返信