Fix review/rejoin treating a selected stale take as current - #409
Merged
IAnMove merged 1 commit intoSep 12, 2026
Conversation
Backfill used a Studio selection as playback authority and also cleared video_stale. After an image rerun the selected take no longer matches the new start frame, but load, prompt edits, and review persist then let Rejoin assemble that outdated video. Keep the selection for playback and leave video_stale for callers that gate export. Co-authored-by: ignaciodelcano+dcl <ignaciodelcano+dcl@gmail.com>
PR Review — Loreframe StudioRisk: low Automated review from Findings
Changed files
CONTRIBUTING checklist
Posted by the repo PR review workflow. Re-runs on each push to the PR. |
Code healthQuality score: 63.8/100Higher is better. The score is a trend dashboard; the independent ratchet below remains the CI gate.
Change vs PR base: +0.0 points.
Markdown, JSON catalogs and tests are out of this table. Only Most complex functions
Trend vs baseline
Warnings
Ratchet passed. |
IAnMove
changed the base branch from
development
to
cursor/critical-bug-management-48e0
September 12, 2026 18:42
IAnMove
merged commit Sep 12, 2026
35806db
into
cursor/critical-bug-management-48e0
12 checks passed
25 tasks
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.
Resumen ejecutivo
Qué cambia
Si el director ya había elegido una toma y luego regenera el fotograma inicial, guardar una nota o pulsar Rejoin ya no trata ese vídeo viejo como actual.
Para qué sirve
Evita montar la película final con un plano que ya no corresponde a la imagen de partida.
Impacto para el usuario
Rejoin y el guardado de revisión siguen respetando la toma elegida para reproducirla, pero piden regenerar el vídeo cuando esa toma quedó obsoleta.
Riesgo
Estado
Summary
_backfill_clip_video_attemptspromotedselected_video_filenametovideo_filenameand also setvideo_stale=False. That is correct for playback authority, but it erased an intentional stale mark afterrerun_clip_image.load_pipeline_state(GET, Rejoin) and_update_saved_pipeline(prompt edits; also the projection#406now persists) then treated the old take as current. Rejoin assembled a movie whose start frame no longer matched the video.The backfill still uses the selection for playback. It no longer clears
video_stale. Explicit take changes (_select_take,select_clip_video_attempt, video rerun) still setvideo_stale=False.Overview
selected_video_filename).video_stale=Truewhile the selected take remains.After this change, step 3 keeps
video_stale=Trueand Rejoin refuses until the video is regenerated.Detailed changes
Backend
app/services/director_pipeline.py: when a selected take exists, copy it tovideo_filenameonly.UI and Wizard
Unchanged. The desk already keeps stale when re-persisting the current take (
re-persisting the current take does not clear a stale clip).Data, provenance and compatibility
No migration. Existing checkpoints that already lost
video_stalestay as they are; new loads no longer drop a present flag.Files and ownership
app/services/director_pipeline.py— root-cause one-liner in the GET/persist projection.tests/test_director_cancellation.py— Rejoin + notes persist with selected+stale.tests/test_director_review.py— review notes keep stale and the existing approval tag._select_take/ video rerun still clear stale when the user picks or generates a new take.Validation
Date (UTC): 2026-09-12
Base SHA: 60e867a
Head SHA: acf3c51
Validation scope: focused
python scripts/verify_clean_repo.py— PASSpython -m compileall -q app/services/director_pipeline.py app/services/director_review.py— PASSFocused Python tests:
pytest -q tests/test_director_review.py(5 passed) andtest_rejoin_rejects_stale_video_even_when_a_take_is_selectedplus image-rerun / history-rejoin cases (all passed)cd ui && npm run i18n:check— N/A (no UI files)UI tests — N/A
cd ui && npm run lint -- --max-warnings=0— N/Acd ui && npm run build— N/Agit diff --check— PASSE2E/smoke checks: N/A — no video generation; temp files and mocked concatenate only
Code quality
main: pending CICI and review
CI of this HEAD: pending
Independent agent review of this HEAD: pending
Human merge click (operational, not code review): pending
Reviewed at current HEAD
Earlier review; HEAD has changed since (stale)
Pending
Unavailable
Coste de la tarea
Notes and limitations
Does not restore
video_staleon checkpoints that already persistedfalseafter a notes save on#406or a prompt edit. Does not change the rule that choosing a different take clears stale.Follow-up work
#406still awaits review (sidecar-recovered takes). This fix is ondevelopmentso that PR inherits it when it rebases or when both merge.#405(Approve after notes blur) and#408(cut-paper mouth before first word) remain open; not this bug.Checklist