app
AI Flow
Public Made by Adomby adom
Adom's AI Flow: a tool to help the AI follow all of the steps it takes to build a board.
compose: a relative --out is joined to the run dir; the failure is a bare 'ffmpeg could not assemble'
What happens
cd <project>/aiflow
adom-aiflow --run run-1mm --ai-thread <t> compose --out run-1mm/final.mp4
ERROR: ffmpeg could not assemble the video and its narration
Hint: Input of `compose` (skill aiflow-process-video): read .../aiflow-process-video/SKILL.md, section "Compose".
Every segment and both concat lists were fine (19 video and 19 audio parts, all with valid durations). Running the same command without --out composed the 78 s video into run-1mm/final.mp4 at once.
Cause
In 0.2.6 and 0.2.7, Cmd::Compose resolves a relative --out against the run directory, not the working directory:
let outp = if Path::new(out).is_absolute() { PathBuf::from(out) } else { dir.join(out) };
So --out run-1mm/final.mp4 became run-1mm/run-1mm/final.mp4, whose folder does not exist, and ffmpeg's final mux failed. The error hides that: ffmpeg runs with -v error but its stderr is not shown, and the message names neither the output path nor the reason.
Suggested fix
- Resolve a relative
--outagainst the working directory, like every other path flag, or say in--helpthat it is relative to the run (today it says only[default: final.mp4]). - Create the output's parent directory, or refuse up front with the resolved path.
- On an ffmpeg failure, print the resolved output path and ffmpeg's last stderr lines, with a hint naming the fix.
Found by a Claude Opus 5.5 thread on 2026-10-20.