Skip to content
frontmatter
キー値
specdojo.idprj-0001:pjr-fz06-md060-test-timeout
specdojo.typeproject
specdojo.statusready
specdojo.rulebookspecdojo:pjr-rulebook
specdojo.part_ofprj-0001:pjr-index
specdojo.item_typeissue
specdojo.item_statusdone
specdojo.prioritymedium
specdojo.difficultyeasy
specdojo.registered_at2026-10-28T12:06:34Z
specdojo.completed_at2026-10-28T12:58:18Z
specdojo.conclusionMD060 のテストを markdownlint の CLI の起動から同一プロセスの lint API に変え、検査の範囲を保ったまま負荷の下でも数十ミリ秒で終わるようにした

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 の lint API 呼び出しへ変更した。子プロセスの起動と一時設定ファイルの作成・削除が不要になるため、上限の延長より処理の軽量化を選んだ。
  • 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