Follow-up: strengthen test contracts, CI enforcement, release delivery, and quality triage
メンテナーはふだん 2 日以内に返信
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 18/100
- issue の種類
- 機能追加
- 明瞭さ
- 明確に書かれている
- 活発さ
- 停滞
- 技術スタック
- github-actions, typescript
調査の方向性
Start with the named workflow and test entry points: .github/workflows/test.yml, __tests__/testUtils.ts, __tests__/bundle/fakeGithub.ts, and the cited OWNERS and delayed-review tests. Then check the linked canonical issues #551 and #553 and the open pull request #557 to identify which follow-up, if any, remains available. Done means one clearly scoped section has explicit acceptance criteria and its behavior is verified; the umbrella tracker requires dispositions for every section before closure.
索引モデルが issue の本文から書いたものです。
説明
Is your feature request related to a problem? Please describe.
A review of the 100 most recently created issues and PRs identified recurring gaps in test effectiveness, CI enforcement, release delivery, and automated triage.
Review snapshot: October 21, 2026, against main at e3119adfdf11b3b9491f7a3ed807f48687e18733. The sample is 100 combined records, cncf/prow-github-actions#454 through cncf/prow-github-actions#553, created October 12-21 UTC: 78 PRs and 22 issues. Of these, 56 PRs changed only test files and 20 issues were quality findings.
This is a heavily automated-quality-focused sample, not evidence of 100 distinct production defects. The historical assertion defects cited below have been fixed. This issue tracks remaining test/process gaps and decisions, not newly reproduced production failures.
Describe the solution you'd like
P1: Make CI enforcement explicit
At review time, main branch protection had empty required-status-check lists, and the effective organization/repository rulesets added no required checks. The jobs run, but GitHub does not require them to pass before merging. The e2e-coverage job was intentionally introduced as reporting-only in cncf/prow-github-actions#488; .github/workflows/test.yml:65-79 still documents that policy.
- Require
build-testfor normal merges, with an explicitly documented exception/bypass policy. - Decide whether
e2e-coverageshould also be required; record the rationale and keep workflow documentation consistent with the decision.
This is a repository-settings/policy task, not a request to bypass existing protections or silently change the original reporting-only decision.
P1: Deliver merged features to release users
The latest stable release at review time was v3.0.1, published September 23, 2026. The floating v3 tag resolved to the same commit, 187c5e3cd95a329c43448e1bdb3b1f5249232e44; main was 218 commits ahead.
OWNERS groups from cncf/prow-github-actions#486 and delayed reviewer assignment from cncf/prow-github-actions#530 are documented on main but are not available through those release tags. Documentation examples still use @v3.0.1.
- Prepare a release plan with an appropriate version, compatibility review, and curated upgrade notes.
- Clearly mark newer functionality as unreleased until it is published.
- Verify the release candidate's committed action bundle and reusable workflow, then align documentation/version references using the existing release process.
Do not treat an issue's implementation being merged as proof that a supported release contains it.
P1: Strengthen assertions and the test harness
Near-100% coverage repeatedly failed to distinguish correct behavior from behavior-changing mutations:
- cncf/prow-github-actions#512 repaired assertion-free label-removal tests.
- cncf/prow-github-actions#531 and cncf/prow-github-actions#533 repaired fixtures that did not actually represent the cases their test names described.
- cncf/prow-github-actions#518 showed that an unexpected GraphQL request could be caught by application fallback handling without failing a test.
- cncf/prow-github-actions#532 documented mutations that survived both unit tests and the rebuilt bundle suite.
The specific examples are resolved, but no repeatable mutation runner is configured in the repository. __tests__/testUtils.ts:16-22 rejects unhandled requests without a general end-of-test assertion that one occurred. __tests__/bundle/fakeGithub.ts:94-100 records unmatched requests but answers them with a normal-looking 404, leaving each test responsible for detecting unexpected traffic.
- Establish bounded, repeatable mutation checks for selected high-risk behavior, with reproducible commands and reviewed equivalent-mutant exclusions. A repository-wide mutation gate is not required.
- Record unexpected API traffic and assert on it outside application error handling, with explicit allowances for intentional probes.
- Require affected tests to assert observable effects: exact writes, prohibited writes, meaningful outcomes, and fixture shapes where absent/null/case/order differences are the point.
When a unit-only mutation survives, check whether the rebuilt bundle already detects it before declaring a repository-wide gap or adding duplicate coverage.
P2: Add cross-request contracts for the new features
The following are recommended regression scenarios, not claims that the implementation currently fails them:
- OWNERS groups: serve a paginated team with the relevant member only on page two; exercise
/approveand automatic reviewer selection, not just/lgtm. Assert that page-two membership changes the actual approval/reviewer outcome. - OWNERS pagination failure: fail a subsequent membership page and assert the warning and fail-closed behavior rather than using incomplete membership.
- Delayed-review timeline: put the latest
ready_for_reviewevent on a subsequent page and assert that it determines whether assignment is due. - Delayed-review boundaries: cover both exact shifted-window boundaries and timestamps immediately outside them.
- Successive sweeps: run again against state updated by the first run or a manual reviewer assignment and assert no duplicate or unwanted reviewer requests.
- Scheduling outage recovery: explicitly document and test the chosen recovery expectation when missed runs exceed the lookback window. The current implementation intentionally excludes sufficiently old PRs; do not silently change this into unlimited catch-up.
Current evidence:
__tests__/bundle/ownersGroups.test.tscontains four single-page/lgtmscenarios;__tests__/utils/owners.test.tsstubspaginate.__tests__/cronJobTest/sweep.test.ts:497-572and__tests__/bundle/blunderbussDelay.test.tsserve single-page timelines.- The shared
FakeResponsein__tests__/bundle/fakeGithub.ts:11-14has no response-header support. Add the small capability needed to serve realLinkheaders before writing bundle pagination scenarios. Existing manually paged pull-list tests do not establish these new endpoints' pagination contracts.
P2: Judge tests by behavior, not percentage changes
cncf/prow-github-actions#465 was closed because its mid-retry gate-change scenario added no line/branch coverage. That alone does not establish behavioral redundancy. The current direct unit case at __tests__/plugins/tide.test.ts:134-140 supplies an always-false callback; it does not establish the complete caller's response to a gate changing during a retry.
- Reconsider a focused integration scenario where mergeability is initially unknown and LGTM disappears on the next read. Assert that additional retries stop and no merge occurs, or identify an existing scenario that proves the same contract.
- Use a failing regression/mutation or a concrete behavioral contract to justify adding/removing tests, rather than coverage percentage alone.
- Record the coverage-floor decision at the existing cncf/prow-github-actions#551; do not create another threshold tracker.
- Resolve the existing auth follow-up through cncf/prow-github-actions#553 or an explicitly linked replacement, rather than duplicating it.
Keep unit and bundle coverage reports separate. A whole-percentage global floor does not catch every single-branch regression. The known negative-count V8 reporting artifact is already documented and linked upstream by cncf/prow-github-actions#552; do not add ignores, remove useful behavior, or demand 100% to hide it. The replacement of cncf/prow-github-actions#510 by cncf/prow-github-actions#528 also illustrates why claims of unreachable behavior need evidence.
P2: Prevent unrelated findings from being consolidated again
cncf/prow-github-actions#466 accumulated 48 comments and required reopening after partial closure. Findings on cncf/prow-github-actions#521 and cncf/prow-github-actions#523 were also folded together using broad shared filenames such as test.ts or dist/index.js. The recent cleanup repaired the records; it did not verify or change the external Hive routing implementation.
- Have the Hive operator review deduplication/routing so concrete behavior and source symbols determine ownership, not shared generated files or basenames.
- Require a canonical owner and explicit acceptance criteria for each independent finding.
- Batch genuinely cohesive work, without treating unrelated findings as duplicates or opening one tracker per uncovered line.
Describe alternatives you've considered
Simply raising coverage thresholds, pursuing 100% coverage, or opening more single-branch test PRs would not address missing assertions, unenforced checks, unreleased features, or incorrect consolidation. Conversely, requiring every behavior to have both a unit and bundle test would create unnecessary duplication. Prefer a small set of behavior-driven scenarios and targeted mutation checks.
Additional context
This is an intentional umbrella follow-up, not a replacement for existing scoped issues. Each section may be delegated to a focused child issue/PR, which should reference this issue without automatically closing it.
Close this tracker only when every section has either shipped or has an explicit recorded disposition (including a linked canonical owner for deferred work). A single test PR must not close the whole tracker. Repository settings, release policy, and external Hive routing require maintainer/operator decisions; creating this issue does not authorize those changes.
Existing canonical follow-ups:
- cncf/prow-github-actions#551: e2e branch-floor decision.
- cncf/prow-github-actions#553: auth object-rejection bundle scenarios, open at review time.
- cncf/prow-github-actions#170: living advisory register; keep independently owned findings separate.
The review used issue/PR descriptions and dispositions, changed-file inventories, current source and tests, live branch-protection/ruleset settings, and release/tag comparisons. All counts and settings above describe the recorded review snapshot and should be refreshed before implementation.
- 主要言語
- TypeScript
- スター
- 132
- フォーク
- 24
- 平均マージ
- 1日 16時間
- マージ済み PR(30日)
- 214
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
cncf/prow-github-actions のほかの issue
-
[quality] milestone.ts, comments.ts and events.ts: nine behavioural Stryker survivors (join separator, isBotUser login arm, createComment message, skipReadOnlyForkRun payload guards)対応中かも @hivecommons-hive が今日担当しました。 オープンagent/quality needs-kind stage/040-covered-by-pr testing
難易度 2/5 1〜3時間 初心者へのやさしさ 35/100
cncf/prow-github-actions#584 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
[quality] owners.ts: 13 behavioural mutants survive the suite, incl. a shared group cache key that gives every team the first team's members対応中かも @hivecommons-hive が 2 日前に担当しました。 オープンagent/quality needs-kind stage/040-covered-by-pr testing
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
cncf/prow-github-actions#574 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
[quality] Unit msw servers reject unhandled requests but no test fails when the code under test swallows the rejection (158 tests run through fallbacks)対応中かも @hivecommons-hive が 3 日前に担当しました。 オープンagent/quality needs-kind stage/040-covered-by-pr testing
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
cncf/prow-github-actions#570 · コメント 3 件 ·
メンテナーはふだん 2 日以内に返信
-
[quality] bundle fake answers unrouted requests with a plain 404; the harness should assert on unexpected traffic outside application fallbacks対応中かも @hivecommons-hive が 4 日前に担当しました。 オープンagent/quality needs-kind stage/040-covered-by-pr testing
難易度 3/5 半日 初心者へのやさしさ 48/100
cncf/prow-github-actions#568 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
[quality] sweep.ts delayed-reviewers OWNERS guard (line 80 false arm) is covered by neither the unit nor the bundle suite対応中かも @hivecommons-hive が 4 日前に担当しました。 オープンagent/quality needs-kind stage/040-covered-by-pr testing
難易度 2/5 1〜3時間 初心者へのやさしさ 25/100
cncf/prow-github-actions#560 · コメント 2 件 ·
メンテナーはふだん 2 日以内に返信
cncf/prow-github-actions の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
outline/outline#14348 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug needs-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
[Bug]: Agent import retains quotes in .env API keys followed by inline comments対応中かも @yxr-2025 が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
elie222/rakazo#2322 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
awslabs/visual-asset-management-system#804 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
dsh-market/dsh-market#1027 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信