Repository navigation
fix(video_compose): accept the scene_plan artifact in the slideshow gate - #923
Open
executorrr86 wants to merge 1 commit into
Open
executorrr86 wants to merge 1 commit into
executorrr86 wants to merge 1 commit into
Conversation
Passing the canonical scene_plan artifact ({"version", "scenes": [...]})
made the pre-compose slideshow check iterate the dict's keys, fail with
"'str' object has no attribute 'get'" and silently skip scoring. The same
plan passed as its scenes list was scored and could block. Unwrap the
artifact to its scenes so both forms gate identically, and declare
scene_plan in input_schema so agents can discover it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SanHsien
added a commit
to SanHsien/OpenMontage
that referenced
this pull request
Nov 9, 2026
…open fixes Apply the upstream diff (67 merged PRs plus 3 direct commits), resolving 13 conflicts in favour of the fork where it already had a fix. Port OpenMontageInc#894 (Piper beside the interpreter), OpenMontageInc#913 (stale skill paths), OpenMontageInc#915 (explicit zero scene threshold) and OpenMontageInc#923 (scene_plan artifact in the slideshow gate) with tests. Replace the curl|bash hint in the MiniCut install message. Co-Authored-By: Claude Sonnet <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
video_composerender runs a slideshow-risk gate before rendering, and it reads an optionalscene_planinput. If an agent passes thescene_planartifact as it is stored ({"version": ..., "scenes": [...]}), the gate loops over the dict's keys and scoring fails with'str' object has no attribute 'get'. That error is only logged, so the check is skipped without notice. If the agent passes the same plan as its scenes list, the gate scores it and can block. This PR unwraps the artifact to itsscenes, so both forms get the same verdict.Related issue
None. Refs #518, which also normalizes this dict as part of a much larger change. This PR is the small piece that can be reviewed on its own.
Changes
video_compose.py,_pre_compose_validation: ifscene_planis a dict, use itsscenes(2 lines). If the dict has noscenesor the list is empty, the gate falls back to the cuts as before.video_compose.py,input_schema: declarescene_plan(arrayorobject).execute()already read it andidempotency_key_fieldsalready listed it, but the schema did not, so agents had no way to know the input existed.test_video_compose_scene_plan_artifact.py: 7 tests that use the real scorer, with no stubs.Testing
Gate verdicts with
renderer_family: cinematic-trailer(scores fromscore_slideshow_risk):mainmain. The 7th passes onmainonly because the crash skips the check; the other tests catch that case.pytest testswith this change: 2924 passed, 17 skipped.Checklist
make test-contracts/make test) where applicable.input_schemadescription documents the input.)🤖 Generated with Claude Code