feat(cli): add batch manifest mode - #1243
Conversation
|
Thank you for the comprehensive batch-mode implementation and documentation. I also verified that the README additions are confined to the CLI section and do not alter sponsor content or provider ordering. The existing CLI suite passes with 48 tests and 18 subtests, and Ruff passes. I found one merge-blocking side effect during real boundary testing. Please separate side-effect-free validation from material preparation, then either share one source-to-managed-path map across the whole batch or clean up all batch-created copies if preflight fails. Regression tests should verify that a rejected later entry leaves no files behind and that repeated references to the same source reuse one prepared copy. As a smaller validation gap, manifest objects can override Thanks again—after the preflight/copy behavior is corrected, I can re-run the batch and path tests promptly. |
Validate every batch entry before copying local materials, reuse one managed copy per resolved source, and clean up all batch-created files when preparation fails. Reject unsafe clip speeds and keep trusted custom audio support after rebasing onto current main.
21ef267 to
50091bd
Compare
|
Addressed the review feedback in Changes:
Added regressions covering a missing later material leaving the managed directory empty, repeated references creating one copy, copy-failure cleanup, and invalid clip speed. The complete CLI suite now passes: |
|
Hi @lihuiyang1024, thank you for addressing the previous review so thoroughly. The side-effect-free validation, shared material copies, cleanup behavior, and clip-speed validation now look good. I applied the updated branch to the latest main; the CLI tests passed with 77 tests and 18 subtests, and the full suite passed with 763 tests and 6973 subtests. One preflight gap remains. Because the manifest currently accepts every VideoParams field, nullable schema fields can still bypass batch validation. I reproduced both cases with a valid local MP4 and WAV using stop_at=video:
If either appears in a later entry, earlier tasks may already have started, which conflicts with the documented all-entry preflight behavior. Could you please reject null or invalid values for runtime-required fields, or define an explicit supported manifest field set, and add regression coverage ensuring a later invalid nullable field prevents every task from starting? Everything else looks good. Thank you again! |
Reject explicit null video_aspect and video_concat_mode values during all-entry batch preflight so invalid later entries cannot fail after earlier tasks have started.
|
Addressed the remaining nullable-field preflight gap in Batch validation now rejects explicit The complete CLI suite now passes with |
|
Thank you @lihuiyang1024 for the comprehensive implementation and for addressing each round of review so carefully. I retested the final update, including the nullable-field preflight cases, the CLI suite, and the full test suite. Everything now passes and the batch manifest behavior looks solid. Thanks again for your contribution! |
Summary
--batch-filefor UTF-8 JSON arrays and JSONL manifestsVideoParamsfieldsCompatibility
The existing single-task path is unchanged unless
--batch-fileis supplied.--task-idremains available for single tasks and is mutually exclusive with batch mode.Closes #1155.
Tests
14 passedplus 2 subtests43 passedplus 18 subtests; four existing default-video tests require font assets omitted by the local sparse checkoutgit diff --checkpass