Гамма каждого клипа — из метаданных
$ python3 $C/1503_color_apply/color_apply.py --project $P · гамма из XML Sony, DJI, BMD
⇒ {CODE}_gamma_cache.json, refused пуст · ✓ незнакомая гамма = отказ
Эталон: мерки и цели фильма
$ $V $SM/story_color_ref.py ref --ref-video <эталон> · profile --project $P
⇒ {CODE}_color_ref.json: цели фильма · ✓ отступление от эталона — с причиной
Базовый план: группы, проявка, look
$ $V $SM/story_color_plan.py --project $P · doc_cut: $V $DC/color_lab.py
⇒ группы «сцена · камера» · ✓ refused пуст
Группы → кубы 65³, потом каждый план
$ $V $SM/story_color_ref.py solve · plan · pieces · strip · pairs
⇒ {CODE}_color_v<N>.json, плёнка всех планов · ✓ лица 113–135, кожа 56° ± 6, C ≤ 38
Страница цвета: папки, 💬 к кадру
$ $V $SM/story_color_folders.py --project $P --target artifact --inline · portal
⇒ страница в Claude и на сайте · ✓ все планы по папкам, кадры целиком
Роман комментирует кадры
👤 Роман: 💬 у кадра или папки → «Send to Claude»
⇒ комментарии к кадрам · ✓ ответ и resolve в каждой ветке
«ок» → рендер на этом плане
$ $V $SC/sc_conform.py plan · render — план цвета {CODE}_color_v<N>.json
⇒ фильм на утверждённом цвете · ✓ рендер только после «ок»