| name | edit-lint |
| description | edit.json と任意の analysis.json / captions.json / メディアを決定的 CLI で検査し、PASS 後のフレーム視認とレポートまで QA を完了する。edit.json を書いた、または変更した直後、書き出し前、レビュー指摘を反映した後の再確認で使う。 |
編集結果を lint して QA を閉じる
Language: Respond in the user's language — 対話・質問・承認確認・レポートはユーザーの使用言語に合わせる(例: 英語で話しかけられたら英語で応答する)。
ハードルール
- 決定的であること: 同一入力 → 同一出力。LLM 判断・乱数・現在時刻を判定に混ぜない
(
checked_at の記録は可・判定には使わない)
- 外部 npm 依存ゼロ。ffmpeg / ffprobe は本体直叩き(ラッパーライブラリ禁止)
- 書き込みは
.akari/lint.json と .akari/reports/ のみ。edit.json を自動修正しない
(fix は人間/エージェントの編集として git diff に出す)
- ネットワーク禁止(完全ローカル・headless-first 不変条件どおりアプリ不要)
- 外部候補のコード転写禁止(loudcheck 等は設計参考のみ。survey の転記条件に
関わらず本 CLI は全量自作 — 依存ゼロ規律と同根)
- analysis.json / captions.json /
.akari/intake.json 不在をエラーにしない(skipped 報告。
プロジェクトの成長段階に関わらず常に走れる)
--media なしの既定実行はメディアをデコードしない(起動・CI で常用できる速さを守る)
- 視認に使うキーフレーム静止画・QA 生成物、ad-hoc な一時検証スクリプトはプロジェクトルート
直下に書かない。前者は
.akari/reports/、後者は .akari/work/ へ置く
(project-structure-v0 契約 §1)
実行手順
-
edit.json を保存した直後に、リポジトリルートから次を実行する。
node packages/edit-lint/bin/edit-lint.mjs <project-root|edit.json>
-
exit code と <project>/.akari/lint.json を確認する。0 は PASS、1 は FAIL、2 は入力や実行環境のエラーを表す。
-
FAIL なら findings[] を上から読み、指摘された edit.json、参照ファイル、overlay HTML、captions.json を手で修正する。CLI に自動修正させない。
-
同じコマンドを再実行し、error finding がなく verdict: "pass" になるまで繰り返す。analysis.json または captions.json が無い検査は skipped[] で確認する。
-
PASS 後に、カット境界と overlay の開始・終了フレームを実際に視認する。機械検査の PASS を意味的な品質確認の代わりにしない。
-
<project>/.akari/reports/edit-lint-report.html とフレーム視認結果を編集レポートへ反映し、checkpoint 状態と provenance を実態に合わせて閉じる。
音声も確認するときだけ --media を追加する。無音区間と音量値は既定で warning になり、次の明示閾値を指定した検査だけが FAIL になり得る。
node packages/edit-lint/bin/edit-lint.mjs <project> --media
node packages/edit-lint/bin/edit-lint.mjs <project> --media --silence-error-seconds 2 --max-volume-error-db -0.1
機械向けの標準出力が必要なら --json を追加する。状態の正本は常に .akari/lint.json とし、HTML は可視化にだけ使う。
.akari/intake.json(進め方フォームの保存先。契約: packages/schemas/intake.schema.json)が存在すれば、schema 検証と整合検査(未知の task ID・duration_s/keep_length の同時指定・status: submitted なのに submitted_at 欠落 等)を合わせて行う。不正値は error(FAIL)、status: "draft"(進め方が未確定)は warning に留める。
非スコープと拡張候補
黒フレーム、フリーズ、ビート、シーン、フラッシュフレーム、ギャップ、重複クリップ、オフラインメディア、セーフゾーン、フレームレート不整合は将来候補であり、現在の PASS 条件へ推測で追加しない。
公開契約
edit.json の検査対象は次の公開契約が定めるフィールドである。契約に無いフィールドの検査を推測で
足さず、契約が定めた検査(構造・id 一意性・範囲・参照整合)は既に実装済みである。