Skip to content

fix(push-runner): quality_gate 失敗 step の出力を全量表示 (push パイプライン改善 R1) - #292

Merged
aloekun merged 1 commit into
masterfrom
fix/quality-gate-failure-full-output
Jul 18, 2026
Merged

fix(push-runner): quality_gate 失敗 step の出力を全量表示 (push パイプライン改善 R1)#292
aloekun merged 1 commit into
masterfrom
fix/quality-gate-failure-full-output

Conversation

@aloekun

@aloekun aloekun commented Jul 18, 2026

Copy link
Copy Markdown
Owner

Summary

  • quality_gate の step 失敗時、出力を run_cmd_shell_capped (40 行 silent truncate) で表示していたため cargo test の失敗一覧が消えて診断できなかった問題を修正
  • step 実行を run_step に集約し run_cmd_shell_unlimited へ切替え、失敗経路は全量表示・成功経路は従来どおり quiet (退行なし)
  • 回帰テスト mod r1_failure_output_not_truncated 2 本を追加 (cap の外の診断行が残ること + 成功 step 非退行)
  • run_cmd_shell_unlimited は T5 (PR fix(cli-push-runner): push 拒否検知の 40 行 truncate 依存を修正 (push T5) #282) で追加済みのため lib-subprocess は無変更

Context

  • Why: push パイプライン改善計画 (plan2) の残タスク R1。T5 が push stage で確立した「判定は exit status・失敗経路は診断を落とさない」原則の残り半分を quality_gate に横展開する。
  • Trigger: 2026-07-16 の push パイプライン調査で backlog 化 (§6 項目 1)、2026-07-18 にユーザー判定で採用確定 (T13)。
  • Scope decision: 変更は stages/quality_gate.rs に閉じる。判定 (ok) は exit status 由来で出力量に依存しないため、全量保持のコストは失敗 step の診断のためだけに払う。capped_reporting + cap 引き上げ案は truncate を明示するだけで受け入れ基準「truncate されず表示」を満たさず不採用。

Validation

  • cargo test -p cli-push-runner: 252 pass (R1 の 2 本追加、250 → 252)
  • cargo clippy -p cli-push-runner --all-targets --all-features: warning 0
  • 回帰テストが素通りしない実証: run_step を capped 版に戻すと bad が「40 行に切り詰め」で fail、good は通る
  • pnpm push pre-push review (pre-push-review-refute): verdict=APPROVE (2026-07-18、security + simplicity 両 reviewer 承認)
  • exe 再ビルド + dogfood push で quality_gate 全 group PASS

References

Summary by CodeRabbit

  • バグ修正
    • 品質チェック失敗時の診断出力が途中で切り詰められず、問題の原因を確認しやすくなりました。
    • 成功時の出力抑制と判定動作は従来どおり維持されています。
  • テスト
    • 長い出力を伴う失敗ケースと、成功ケースの回帰テストを追加しました。
  • ドキュメント
    • 出力改善の実装内容と検証結果を計画書に追記しました。

- 失敗 step の出力を run_cmd_shell_capped (MAX_LINES=40 行の silent truncate) から
  run_cmd_shell_unlimited へ切替え、cargo test の失敗一覧が消えず全量表示されるよう修正
  (T5「失敗経路は診断を落とさない」原則の残り半分)。成功経路は従来どおり quiet で退行なし
- step 実行を run_step に集約し、判定は exit status・表示は全量の根拠を doc に明記。
  run_cmd_shell_unlimited は T5 で追加済みのため lib-subprocess は無変更
- 回帰テスト mod r1_failure_output_not_truncated 2 本 (cli-push-runner 252 passed)。
  capped 版に戻すと bad が「40 行に切り詰め = R1 の不具合」で fail = 素通りしない証跡
- plan2 §3 R1 に実施結果を記録 (§1 表と PR 番号 backfill は push/マージ時)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 18, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: fb7b78e2-3e60-451d-994e-50d1f87b3bb6

📥 Commits

Reviewing files that changed from the base of the PR and between bcf6842 and 76314b3.

📒 Files selected for processing (2)
  • docs/push-pipeline-fix-plan2.md
  • src/cli-push-runner/src/stages/quality_gate.rs

📝 Walkthrough

Walkthrough

quality_gate の失敗時 step 実行を無制限出力取得へ変更し、pre と command に適用した。40 行を超える失敗出力と成功経路の回帰テスト、および実装結果の文書記録を追加した。

Changes

Quality gate output handling

Layer / File(s) Summary
失敗時の無制限出力取得
src/cli-push-runner/src/stages/quality_gate.rs
run_steprun_cmd_shell_unlimited を使用し、run_group の pre と command 実行で失敗時の全量出力を保持するよう変更した。
回帰テストと実施記録
src/cli-push-runner/src/stages/quality_gate.rs, docs/push-pipeline-fix-plan2.md
40 行を超える失敗出力と成功 step の挙動を検証するテストを追加し、実装方針・テスト結果・ビルド結果を文書化した。

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed quality_gate の失敗 step 出力を全量表示する変更を端的に表しており、主な変更内容と一致しています。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/quality-gate-failure-full-output

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

🤖 PR Monitor 分析 (GitHub Actions バックストップ)

  • トリガー: issue_comment (created) / 実行 run
  • CI: CodeRabbit のみが check として登録されており pending (Review in progress)。他の失敗 check なし。mergeStateStatusUNSTABLE (pending check 由来と推定)、mergeableMERGEABLE
  • レビュー状況: CodeRabbit はレビュー未着 (walkthrough 生成中のプレースホルダコメントのみ、findings なし)。人間レビューも reviews API 上 0 件。
  • Verdict: approved (現時点で applicable な findings が 0 件のため .takt/facets/instructions/analyze-coderabbit.md Step 4 の規則「findings array が空なら approved」に従う。CodeRabbit 未着のため今後 findings が追加され次第、再評価が必要)

Applicable Findings (Critical / High / Major)

該当なし (レビュー未着・指摘 0 件)

Applicable Findings (Medium 以下)

該当なし

Filtered (not applicable)

該当なし

変更概要 (軽量サマリー)

  • docs/push-pipeline-fix-plan2.md: R1 タスクの実施結果セクションを追記 (+28 行)。方針・実装範囲・回帰テスト内容・検証範囲の記録で、コード変更なし。
  • src/cli-push-runner/src/stages/quality_gate.rs: quality_gate の step 出力を run_cmd_shell_capped (40 行 truncate) から run_cmd_shell_unlimited に切替える run_step ヘルパーを追加。失敗 step は全量出力、成功 step は従来どおり非表示 (quiet 維持)。ADR-049 の流儀に沿った回帰テスト2本 (failing_step_output_is_not_truncated, passing_step_still_succeeds) を追加。

次のアクション

  • CodeRabbit のレビュー完了を待って再度本 workflow (issue_comment トリガー等) が走った際に findings の有無を再評価する。
  • 現時点で CI 失敗・レビュー指摘なし。ローカルセッションでは push 前チェックリスト (cargo test / clippy) が plan2.md の記載通り完了していることを確認済みなので、CodeRabbit 完了後に問題なければマージ判断へ進めてよい。

@aloekun
aloekun merged commit c77211e into master Jul 18, 2026
1 check passed
@aloekun
aloekun deleted the fix/quality-gate-failure-full-output branch July 18, 2026 06:53
aloekun added a commit that referenced this pull request Jul 18, 2026
#293)

* perf(pre-push-review): loop_monitor judge を haiku 化 (push パイプライン改善 R2)

loop_monitor の stall-detection judge を sonnet → haiku に変更。judge は cycle が
threshold 回反復した時に Healthy/Unproductive の 2 択 routing を返すだけで、コード
読解や修正判断を伴わない。より複雑な 3 分類 (approved/needs_fix/user_decision) を
既に haiku で捌く post-pr-review.yaml の analyze step に前例がある。

対象は pre-push-review.yaml (L30) と pre-push-review-refute.yaml (L39) の両方。
refute_enabled = true のため実走は refute 側だが、kill-switch (refute_enabled =
false) で非 refute 側へ即戻せる設計 (ADR-047) のため、片方だけ変えると戻した瞬間に
効果が消え気付けない (原則 6 / T10 で実際に起きた罠)。両 judge に「もう片方と揃えよ」
inline コメントを追加して同期義務を明記した。

yaml 設定変更のみで Rust 変更なし (exe 再ビルド不要)。takt prompt で両 workflow が
正常にパースされることを確認済み。完了記録は docs/push-pipeline-fix-plan2.md §3 R2 に追記。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(push-pipeline): R1 (#292 マージ済み) を §1 表に backfill

R1 (quality_gate 失敗 step 全量表示) が #292 としてマージされたため
push-pipeline-fix-plan2.md を更新:
- §1「これまでに実装した内容」表に R1 行 (#292) を追加
- §3 R1 のステータスを「実装済み・未 push」→「マージ済み #292」に更新
- §3 R1 の「§1 backfill は push/マージ時に実施」ノートを実施済みに更新

R1 当該ノートが「§1 表への行追加は push/マージ時に実施」としていたライドアロン
doc 更新。R2 (親コミット) と同一 PR に含める。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
aloekun added a commit that referenced this pull request Aug 12, 2026
…r 7 日差し戻し

棚卸し (35 ファイル全件調査) の採否確定分を一括反映する。

判定確定 (bounded lifetime):
- ADR-056 採用 (速度目標取り下げ、二重 miss 10 件/6 PR の実測を記録し却下条件を精緻化)
- ADR-057 採用 (51 docs-only run / 誤 skip 0 / -54.2s/run。templates へ default-ON 反映)
- ADR-058 採用 (changed_block 1 件は flaky 誤 block と確定、真の検出 0 件を正直に記録)
- ADR-059 採用 (CLI=描画 / VSCode=非描画で defense-in-depth が代替。第 2 弾展開は見送り)
- auto-push gate B1-loop NO-GO (観測手段欠落 + 経路消滅。ADR-043 amendment へ転記)
- 順位 247 継続 (延長 1 回目)、順位 319 dogfood 不合格 (29 PR 実測 69% 重複) を記帳

計画書の退役:
- file-length-enforcement-plan.md 削除 (全 6 PR 完了、分割制約は dev-conventions へ移設)
- weekly-review-notification-plan.md 削除 (削除条件決着を ADR-059 § 確定判定へ転記)
- todo2.md 退役 (ADR-032 ブロックは ADR-057 実現で廃止、残 2 タスクを todo22 へ移送)
- auto-push-gate-dogfood.md 削除 (NO-GO 判定、ADR-043 amendment へ転記)

台帳整理:
- ADR-030 Phase E (旧機構廃止) を撤回し順位 27 決着 (ADR-030 § 撤回記録)
- 順位 51/225/11/20/21/22/333 を削除、todo14 孤児 4 件を採番 (433-436)
- 新規起票 7 件 (437-443: rules 採否 / branch 回収 / gate telemetry / weekly-review 保存 /
  docs-lint 1:1 検査 / security facet 敵対的観点 / flaky 当たり面)
- グローバル文書対象 17 エントリに旧環境実査の Status update 注記
- push-pipeline-fix-plan/plan2 の stale 記載を #292/#293/#294 マージ済みに更新

運用変更:
- weekly reminder_threshold_days 30→7 差し戻し (ADR-070 の 30 日は routine 正常稼働が
  前提だが成果物デリバリ未確立のため。再引き上げは保存問題解消後に再評価)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
aloekun added a commit that referenced this pull request Aug 12, 2026
…r 7 日差し戻し (#392)

棚卸し (35 ファイル全件調査) の採否確定分を一括反映する。

判定確定 (bounded lifetime):
- ADR-056 採用 (速度目標取り下げ、二重 miss 10 件/6 PR の実測を記録し却下条件を精緻化)
- ADR-057 採用 (51 docs-only run / 誤 skip 0 / -54.2s/run。templates へ default-ON 反映)
- ADR-058 採用 (changed_block 1 件は flaky 誤 block と確定、真の検出 0 件を正直に記録)
- ADR-059 採用 (CLI=描画 / VSCode=非描画で defense-in-depth が代替。第 2 弾展開は見送り)
- auto-push gate B1-loop NO-GO (観測手段欠落 + 経路消滅。ADR-043 amendment へ転記)
- 順位 247 継続 (延長 1 回目)、順位 319 dogfood 不合格 (29 PR 実測 69% 重複) を記帳

計画書の退役:
- file-length-enforcement-plan.md 削除 (全 6 PR 完了、分割制約は dev-conventions へ移設)
- weekly-review-notification-plan.md 削除 (削除条件決着を ADR-059 § 確定判定へ転記)
- todo2.md 退役 (ADR-032 ブロックは ADR-057 実現で廃止、残 2 タスクを todo22 へ移送)
- auto-push-gate-dogfood.md 削除 (NO-GO 判定、ADR-043 amendment へ転記)

台帳整理:
- ADR-030 Phase E (旧機構廃止) を撤回し順位 27 決着 (ADR-030 § 撤回記録)
- 順位 51/225/11/20/21/22/333 を削除、todo14 孤児 4 件を採番 (433-436)
- 新規起票 7 件 (437-443: rules 採否 / branch 回収 / gate telemetry / weekly-review 保存 /
  docs-lint 1:1 検査 / security facet 敵対的観点 / flaky 当たり面)
- グローバル文書対象 17 エントリに旧環境実査の Status update 注記
- push-pipeline-fix-plan/plan2 の stale 記載を #292/#293/#294 マージ済みに更新

運用変更:
- weekly reminder_threshold_days 30→7 差し戻し (ADR-070 の 30 日は routine 正常稼働が
  前提だが成果物デリバリ未確立のため。再引き上げは保存問題解消後に再評価)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant