PJR-FZ06 MD060 の review テンプレートのテストが負荷で 5 秒の上限を超える
1. 課題内容
tests/src/exec/review-template-table.test.ts の MD060 のテストが、親の検証の負荷で 5.0〜5.7 秒かかり時間切れになる。PJR-EVAE・PJR-484B・PJR-0D0T の実行で落ち、そのたびに親の検証をやり直した
2. 影響範囲
| 観点 | 影響 |
|---|---|
| スコープ | tests/src/exec/review-template-table.test.ts の 1 件 |
| スケジュール | 親の検証の test-unit が落ち、そのたびに --resume で親の検証をやり直す時間がかかる |
| コスト | 再実行の時間。agent の利用枠は使わない |
| 品質 | 本当の失敗と時間切れの見分けに手間がかかり、本当の失敗を見落とすおそれがある |
3. 対応方針
| 項目 | 内容 |
|---|---|
| 原因 | テストが markdownlint を実際に走らせ、単独では 5 秒未満だが、親の検証の負荷の下で 5.0〜5.7 秒かかる |
| 対応策 | テストを軽くする(lint の対象や準備を減らす)か、このテストだけ上限を延ばす。どちらにするかは executor が決め、理由を記録する |
| 依存事項 | なし |
| 完了条件 | 検証の範囲(MD060 を有効にしたまま、生のテンプレートと展開した基準の表の両方を通す)を保ったまま、負荷の下でも上限を超えない |
4. 対応結果
tests/src/exec/review-template-table.test.tsの検査を、入力ごとの markdownlint CLI 起動から、既存の単体テストでも使用するmarkdownlint/syncのlintAPI 呼び出しへ変更した。子プロセスの起動と一時設定ファイルの作成・削除が不要になるため、上限の延長より処理の軽量化を選んだ。MD060: trueとテンプレート内の MD060 無効化を禁じる検査を維持し、9 件の生のテンプレートと、日本語・複数ロールを含む完了条件行を展開した 9 件の文書を引き続き検査する。検査対象が 0 件の場合も失敗させ、違反の文脈にはファイル名と原文・展開後の区別を含める。- CPU 負荷用の worker を 2 本動かした比較計測では、従来の CLI による 18 入力の検査は 3,042 ms、同期 API による同じ検査は 20 回の繰り返しで 18〜55 ms だった。MD060 に違反する表を別途入力し、同じ設定で MD060 違反を検出することも確認した。既定の 5 秒上限に対して十分な余裕を確認したが、実際の親検証での結果は親 runner の実行記録を正とする。
- 変更ファイルの Prettier 整形、個票の markdownlint、catalog 検証、登録簿の build(
--dry-run)が成功した。catalog 検証では、変更対象外の未作成文書についてbased_onの確認ができない旨の警告が出たが、終了コードは 0 だった。登録簿の生成結果は書き込んでいない。 - 単体テスト・統合テスト・型検査・全体 lint・schema 検査は、この pipeline で指定された親 runner の検証に委ねる。result は reporter / runner が記入する。
5. 関連ドキュメント
.github/instructions/vitest.instructions.md