G-EDIT-TRIM-H: ASR呼び出し失敗時のロバスト性テストを追加、G-EDIT-TRIM-Iは既存実装を確認 - #63
rahiseko-alt wants to merge 2 commits into
Conversation
ASR(文字起こし)呼び出しが(a)タイムアウト(b)不正JSON(c)空words配列を返した場合でも、 trimパイプライン(pipeline.mjsのrenderSegment)が例外を投げず出力尺が入力尺と一致する ことをtests/trim-hi-asr-robustness-check.mjsで実測して確認した(12 PASS/0 FAIL)。 モック注入点はrenderSegmentのwords引数。対照として本物のwordsを渡すと尺が縮むことも 確認済み。本体コード(trim-plan.mjs等)は既にロバストだったためテスト追加のみ。 G-EDIT-TRIM-Iは既にtests/trim-plan-check.mjsに対応するテスト(時刻が壊れた語を無視)が 存在し20 PASSであることを確認したのみ(追加実装なし)。 両葉をdoingにし、docs/roadmap.htmlのdetail/handoffを更新(criteria本文は不変)。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014LU9XgyUv1kaJdG3t3XVyY
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
TOL_SEC=0.06はコメント「コマ周期1/15=0.067秒の半分より小さい」(=0.033秒未満) という主張と矛盾していた(0.06は半分を超えている)。trim-duration-check.mjsと 同じ値(0.025)へ揃え、1コマぶんの境界ズレを見逃さない厳しさに戻した。 実測(renderSegment実行、words=[])では入出力の尺差が0秒であることを確認済みで、 テストは0.025でも12 PASS/0 FAILのまま。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
調査の結果、両葉はGOAL達成に不要と判明したため削除する。 - PR #63の凍結verify文言が前提とするresolveWordsFromAsr()は本番コード に存在しない。ASRはレンダリング前の別プロセスで、pipeline.mjs側に ASR呼び出し自体が無いというアーキテクチャと食い違っていた (実装漏れでも単純誤記でもなく着手前の言語化ミス)。 - 両葉はstatus:todo(未着手)で、GOAL/STAGE-1の完了ゲートを構造的に ブロックする他ノードからの依存も無い。 - 永久に未実装のまま放置しても、trim-plan.mjsに既存の防御コード (語配列が空なら全区間keepにフォールバック、不正な語はfilterで除外) により実害発生確率は極めて低いことをコード読解とtrim-plan-check.mjs の実行(20 PASS)で確認した。 - 両葉はstatus:todoのため verify-criteria-freeze.mjs の凍結対象外 (凍結はstatus!=="todo"になった時点から。今回は基準変更ではなく削除)。 - ロードマップ全体を横断監査したが、同型の欠陥(凍結verifyが実装に 存在しない仕組みを前提にしている)を持つ他の葉は見つからなかった。 PR #63(feature/trim-hi-asr-robustness)はこの削除により対象を失うため 別途クローズする。
クローズします(マスター判断)このPRが対象とする 経緯
このPRで積み上げていただいた検証( Generated by Claude Code Generated by Claude Code |
調査の結果、両葉はGOAL達成に不要と判明したため削除する。 - PR #63の凍結verify文言が前提とするresolveWordsFromAsr()は本番コード に存在しない。ASRはレンダリング前の別プロセスで、pipeline.mjs側に ASR呼び出し自体が無いというアーキテクチャと食い違っていた (実装漏れでも単純誤記でもなく着手前の言語化ミス)。 - 両葉はstatus:todo(未着手)で、GOAL/STAGE-1の完了ゲートを構造的に ブロックする他ノードからの依存も無い。 - 永久に未実装のまま放置しても、trim-plan.mjsに既存の防御コード (語配列が空なら全区間keepにフォールバック、不正な語はfilterで除外) により実害発生確率は極めて低いことをコード読解とtrim-plan-check.mjs の実行(20 PASS)で確認した。 - 両葉はstatus:todoのため verify-criteria-freeze.mjs の凍結対象外 (凍結はstatus!=="todo"になった時点から。今回は基準変更ではなく削除)。 - ロードマップ全体を横断監査したが、同型の欠陥(凍結verifyが実装に 存在しない仕組みを前提にしている)を持つ他の葉は見つからなかった。 PR #63(feature/trim-hi-asr-robustness)はこの削除により対象を失うため 別途クローズする。 Co-authored-by: Claude <noreply@anthropic.com>
概要
tests/trim-hi-asr-robustness-check.mjsを新設し、video-shorts/package.jsonの test チェーンへ登録した。pipeline.mjsのexport renderSegmentのwords引数(cmdRender はtranscript.words || []を渡すだけで、実際の ASR は別プロセスsrc/transcribe.pyが事前に書く出荷経路のため)。mockTranscribe(scenario)で (a) タイムアウト (b) 不正JSON (c) 空words配列 を模し、resolveWordsFromAsr()が例外を投げず[]へ落とすことを確認したうえでrenderSegmentを実行。tests/trim-plan-check.mjsに対応するテスト「時刻が壊れた語は無視する(落ちない)」が存在し、20 PASS / 0 FAIL であることを確認。追加実装・追加テストは不要と判断。docs/roadmap.html: 両葉をstatus: "doing"にし、実施内容・確認結果をdetailに追記(criteria.text/criteria.verify本文は無変更)。meta.active/meta.next/meta.handoffも更新。ローカル確認
video-shortsのpnpm test(全体)はローカル実行時に同一ホスト上で他セッションの重いテスト(顔検出・モザイク処理)が並走しており、CPU競合により無関係なタイミング系テスト(M-5-B: モザイク処理の追加時間)が一時的にFAILした(この変更が触れていないface-mosaic-check.py側の性能しきい値テストで、trim/ASR経路とは無関係)。孤立環境である CI の結果を正とする。テスト計画
node video-shorts/tests/trim-plan-check.mjsが全PASSnode video-shorts/tests/trim-hi-asr-robustness-check.mjsが全PASS(新規)node scripts/verify-roadmap-evidence.mjsが緑BASE_REF=origin/main node scripts/verify-criteria-freeze.mjsが緑ci-green)が緑であることを確認Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_014LU9XgyUv1kaJdG3t3XVyY
Generated by Claude Code