Skip to content

feat(cli-push-runner): stage 別の所要時間ログを追加 (push パイプライン改善 T0) - #278

Merged
aloekun merged 1 commit into
masterfrom
feat/push-runner-stage-timing
Jul 16, 2026
Merged

feat(cli-push-runner): stage 別の所要時間ログを追加 (push パイプライン改善 T0)#278
aloekun merged 1 commit into
masterfrom
feat/push-runner-stage-timing

Conversation

@aloekun

@aloekun aloekun commented Jul 16, 2026

Copy link
Copy Markdown
Owner

概要

docs/push-pipeline-fix-plan.mdT0 (stage 別計測ログ + before 記録) です。
以降の改善タスク (T1 Ollama eval 除外 / T10 policy shadow / T11 docs-only routing /
T12 post-takt re-gate) の効果を before/after で比較するための計測基盤を先に敷きます。

before 値は同計画 §1 のベースライン表 (2026-07-16 調査、.takt/runs/ 直近 20 run) を
そのまま使い、再計測はしていません。

変更内容

  • src/cli-push-runner/src/log.rs: timed() ヘルパーを追加。f() の実行時間を計測し、
    stage=<name> elapsed=<秒>s の書式で記録して戻り値をそのまま返す。
  • src/cli-push-runner/src/main.rs: run_pipeline の 5 stage
    (pre_checks / quality_gate / diff / takt / push) を timed() で包む。
  • docs/push-pipeline-fix-plan.md: §1 の計測方法にログ書式を明記、§5 T0 に実施結果、
    §8 判定記録に T0 の行を追加。

設計方針

  • 成否を見ずに記録する: 中断で終わった run でも、その stage にかかった時間が
    after 計測に残る。
  • 小数第 1 位まで出す: 計画の例は elapsed=312s だが、pre_checks のような一瞬で
    終わる stage が elapsed=0s と出ると「未計測」と紛らわしいため。
  • skip 用の行は追加しない: 空 diff で takt を skip した run では stage=takt 行が
    出ないが、skip 自体は既存の「diff が空のため…」行で判別できる。
  • doc コメントから計画ファイルを参照しない: 計画ファイルは T99 で削除される前提の
    ため、format_stage_elapsed() の doc は書式契約を自己完結して書いている
    (計画 §1 → コードへの一方向参照のみ)。

テスト

  • log.rs に書式を固定するテスト 2 件を追加 (after 計測がこの書式に依存するため)。
  • cargo test -p cli-push-runner 186 件パス / cargo clippy --all-targets クリーン。
  • 配布 exe を再ビルドし、サンドボックスの jj リポジトリで 2 経路
    (空 diff → push / diff あり → takt 失敗) を実行して全 stage の行を確認。

実測 (この PR 自身の pnpm push、dogfood)

stage 実測
pre_checks 1.2s
quality_gate 93.9s
diff 0.1s
takt 149.4s (reviewers APPROVE、fix iteration なし)
push 2.5s
合計 247s

follow-up (本 PR では対応せず)

  • 次は T1 (Ollama eval を quality_gate から除外)。ただし本 run の quality_gate は 93.9s で、
    計画 §1 が引く 269s の実測記録より大幅に短い。T1 実施前に --ignored スイートの
    内訳を確認し、期待効果 (-2〜4.5 分/push) の見積りを検証する必要がある
    (ローカル LLM 環境が ADR-040 記録時から変わっている可能性)。

Summary by CodeRabbit

  • 改善
    • パイプラインの各ステージ(事前チェック、品質ゲート、差分確認、Takt、Push)の経過時間をログで確認できるようになりました。
    • ステージが失敗・中断した場合も、経過時間が記録されます。
    • 空の差分などでTakt処理をスキップした場合は、不要なステージログを出力しません。
  • ドキュメント
    • 計測ログの確認手順と完了判定の記録を更新しました。

pre_checks / quality_gate / diff / takt / push の 5 stage を `timed()` で包み、
`stage=<name> elapsed=<秒>s` の書式で所要時間を記録する。以降の改善タスク
(T1 Ollama eval 除外, T10 policy shadow, T11 docs-only routing 等) の効果を
before/after で比較するための計測基盤。

- 記録は stage の成否を見ずに行い、中断で終わった run でも時間が残る
- 小数第 1 位まで出すことで「一瞬で終わった stage」と「未計測」を区別する
- before 値は docs/push-pipeline-fix-plan.md §1 のベースライン表を使う

配布 exe を再ビルドし、サンドボックス jj リポジトリで 2 経路
(空 diff → push / diff あり → takt) を実行して全 stage の行を確認済み。

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

coderabbitai Bot commented Jul 16, 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: 60a9ac8d-c1dd-46b0-82e4-cbd8d132a6b2

📥 Commits

Reviewing files that changed from the base of the PR and between eac9907 and 90d2b8b.

📒 Files selected for processing (3)
  • docs/push-pipeline-fix-plan.md
  • src/cli-push-runner/src/log.rs
  • src/cli-push-runner/src/main.rs

📝 Walkthrough

Walkthrough

timed によるステージ経過時間の計測と標準形式でのログ出力を追加し、run_pipeline の各ステージへ適用しました。計測仕様、検証方法、実装結果を作業計画書へ追記しています。

Changes

パイプライン計測

Layer / File(s) Summary
計測ヘルパーとログ形式
src/cli-push-runner/src/log.rs
format_stage_elapsed()timed() を追加し、処理の成否にかかわらず stageelapsed を記録します。出力形式と戻り値透過性のテストも追加しています。
パイプラインへの計測適用
src/cli-push-runner/src/main.rs, docs/push-pipeline-fix-plan.md
pre_checksquality_gatedifftaktpush の実行へ計測を適用し、既存の中断・スキップ条件を維持します。計測仕様とT0の実装結果を計画書へ追記しています。

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 stage別の所要時間ログ追加と cli-push-runner の push パイプライン改善 T0 を適切に要約しています。
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 feat/push-runner-stage-timing

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 チェックのみ pending(Review in progress)。他の CI チェックは存在しない。mergeStateStatus は UNSTABLE(pending チェックが原因と推測)、mergeable は MERGEABLE
  • レビュー状況: CodeRabbit — レビュー未完了(walkthrough 生成中、まだ指摘コメントなし)。人間レビューアーによる review/inline comment/conversation comment はまだ 0 件
  • Verdict: approved(現時点で applicable な指摘が 0 件のため。ただし CodeRabbit のレビューが未完了である点に留意 — 完了後に新規指摘が出る可能性あり)

Applicable Findings (Critical / High / Major)

(該当なし)

Applicable Findings (Medium 以下)

(該当なし)

Filtered (not applicable)

(該当なし — レビュー指摘自体がまだ存在しない)

診断: 変更概要 (レビュー指摘が無いための軽量サマリー)

3 ファイル変更、いずれも push-pipeline-fix-plan.md の T0 タスク(stage 別所要時間ログの追加)に対応する内容:

ファイル 変更の性質
docs/push-pipeline-fix-plan.md ドキュメントのみ。T0 の実施結果・受け入れ基準達成の記録を追記(判定テーブルも更新)
src/cli-push-runner/src/log.rs 新規関数 format_stage_elapsed() / timed() を追加し、unit test 2 件を同梱。既存関数への変更なし
src/cli-push-runner/src/main.rs 既存 5 箇所(pre_checks / quality_gate / diff / takt / push)の呼び出しを timed() でラップ。分岐・エラー処理ロジック自体は変更なし

ロジック変更は計測用ラッパーの追加のみで、既存の制御フロー(成否判定・中断処理)には手を加えていない。ADR-035 の docs-only 基準には該当しない(コード変更を含むため)。

次のアクション

  • CodeRabbit のレビューが完了次第、次回イベントで再分析すること(現時点では待機せず終了)。
  • 現状は指摘 0 件・軽微な機能追加のみのため、人間側での追加対応は不要。マージ判断は CodeRabbit レビュー完了後に行うことを推奨。

@aloekun
aloekun merged commit a05ddcc into master Jul 16, 2026
1 check passed
@aloekun
aloekun deleted the feat/push-runner-stage-timing branch July 16, 2026 14:07
aloekun added a commit that referenced this pull request Jul 16, 2026
)

* docs(push-pipeline-fix-plan): T0 の初回実測を記録し T1 の前提検証を申し送り

T0 (PR #278) の dogfood push で得た stage 別実測を §5 T0 に記録した。
あわせて、その実測が T1 の前提と食い違う点を T1 セクションに申し送りとして残す。

- quality_gate 実測 93.9s に対し、T1 が根拠に引く 269s は約 3 倍。
  T1 の期待効果 (-2〜4.5 分/push) と受け入れ基準 (269s → 90s 未満) は
  そのままでは使えない可能性が高い。
- 想定原因はローカル LLM 環境の更新 (ADR-040 記録時 RTX 3070 8GB →
  現 RTX PRO 5000 48GB)。ADR-040 の resource 数値は stale。
- T1 着手前に `--ignored` スイート全体と eval テスト単体を実測し、
  前提が生きているかを判定してから方針を決める手順を記載。

T1 は別セッションで実施するため、そのセッションが本ファイルだけで
判断できるよう計測コマンドと判断分岐まで書き下している。

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

* perf(cli-finding-classifier): Ollama eval を env opt-in 化し quality_gate から除外 (push パイプライン改善 T1)

assert を持たない計測専用テスト run_lint_screen_against_all_fixtures が、
quality_gate と takt fix step の `cargo test -- --ignored` に巻き込まれて
毎 push 実行されていた。LINT_SCREEN_EVALS が truthy のときだけ走るよう
テスト側にガードを入れる (呼出箇所が gate / fix / 手動と複数あるため
コマンド側では漏れる)。

実測 (2026-07-16, Ollama 起動状態):
- --ignored スイート全体: 63s → 21s (-42s)
- eval 単体: 41.3s → 0s (skip)
- opt-in 経路は 15 fixture が正常実行され agreement 86.7% (GO)

なお計画が根拠に引いていた 269s は再現せず 63s だった (GPU 更新により
mistral:7b の推論が高速化)。期待効果を -2〜4.5 分/push → -42s/push に
下方修正し、ADR-040 の resource 数値が stale である旨を記録した。

step_timeout: 600 → 300。600 に上げた主因 (eval) が消えたため実測ベースで
right-size。cold build 実測の最遅コマンドは cargo test の 28s で、約 10 倍の
マージンを確保。step_timeout は group 単位でなくコマンド単位の適用。

tests/lint_screen_evals.rs は変更前から 799 行 (上限 800) でガード追加分が
入らないため、main.rs (schema/metrics) と e2e.rs (実 Ollama 呼出) に分割した。
Cargo が tests/<name>/main.rs を test target として認識するため target 名と
起動コマンドは不変。

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

---------

Co-authored-by: Claude Opus 4.8 (1M context) <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