Files
hakorune/docs/development/current/main/phases/phase-287/P2-INSTRUCTIONS.md

77 lines
2.9 KiB
Markdown
Raw Normal View History

# Phase 287 P2optional: quick を「45秒」へ寄せる指示書
## 目的
- `tools/smokes/v2/run.sh --profile quick`**~45秒以内**へ寄せる。
- quick の責務を「最小ゲート」に寄せ、網羅・重い導線は integration/full/plugins に移す。
- 意味論は不変(テスト分類/配置のみ)。
## 前提P1の到達点
- quick は **55秒 / 447 tests** まで改善済み。
- ここからの削減は「残っている遅いテストをさらに移す」だけで狙うrunner改造や並列化はP3
## 成功条件(受け入れ基準)
- quick が **45秒以内**(目安)で完走する。
- 速さ優先。テスト本数 ~100 は“理想”だが、P2 では **時間を第一**にする。
- `--filter` の導線を壊さない(移動は相対パス維持を基本にする)。
## 手順
### 0) まずP1の成果をコミット推奨
P2 を始める前に、P1 を1コミットに固める後戻りを容易にする
```bash
git add -A
git commit -m "smokes(v2): slim quick profile (Phase 287 P1)"
```
### 1) quick の再計測(現状の遅い上位を出す)
```bash
./tools/smokes/v2/measure_test_times.sh quick /tmp/smoke_test_times_quick_p2.txt
head -50 /tmp/smoke_test_times_quick_p2.txt.sorted
```
ここで「上位(遅い順)に何が残っているか」を確認する。
### 2) “遅いファミリー” を integration へ寄せる(構造的に解決)
基本方針:
- まず **ディレクトリ単位で `git mv`**(最小手数・効果大)。
- 例外的に“その中の1本だけ quick に残したい”場合のみ個別に戻す。
- 移動先は `tools/smokes/v2/profiles/integration/` で、**相対パス階層を維持**する。
例(イメージ):
```bash
git mv tools/smokes/v2/profiles/quick/core/phaseXXXX tools/smokes/v2/profiles/integration/core/
```
判定基準P2で移す寄せ方:
- 1本が重い>0.5s 以上が繰り返し出る)
- crate exe / S3 / selfhost / 長尺の外部I/O / 大量fixture を含む
- “壊れたら困る入口” ではないquickの責務外
### 3) 45秒に届くまで「上位を削る」を繰り返す
```bash
time ./tools/smokes/v2/run.sh --profile quick
```
- 45秒を切ったらP2は終了。
- 切らない場合は、計測の上位から追加で移す。
### 4) docs を更新SSOTを合わせる
- `docs/development/current/main/phases/phase-287/README.md` に P2 の Before/After秒・本数を追記。
- `tools/smokes/v2/README.md` の目安quick=~45sは“達成/未達”を明記(未達なら次の方針も書く)。
## 非ゴールP2ではやらない
- runner の並列化(`--jobs` を実装して速くする): **Phase 287 P3**
- quick を “マニフェスト(明示リスト)” 管理に変える: 必要なら別提案runner変更を伴う