{
  "schema": "adfactory.feedback-integration/v1",
  "scope": "Current FILM continuation of immutable acceptedv2 music; no claim every remaining upstream musical metric was improved.",
  "rules": [
    {
      "id": "R01",
      "title": "Разделить источник истории, продукт и эталон вкуса",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "SHA каждого файла совпадает; бренд прочитан с кадра; неизвестный генератор/провайдер CustomTarasFinal остаётся unknown.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "pipeline.json",
          "function": "Постоянные требования music-first / scene-anchor"
        },
        {
          "path": "tools/music_first.py",
          "function": "Замороженные входы, полная семантическая карта, валидные временные интервалы"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R02",
      "title": "Планировать длительность до песни по смысловым блокам",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Inherited accepted v2 song evidence; no new song work authorized or performed. Prior remaining musical-gate gaps remain open and are linked.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/song/performed-song-passport-v01.json",
          "sha256": "8114037bde8ed685d51e5bf1f5e9c50b9eafe22bcff1273257d5d33bc75c5eb5"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/handoff/music-handoff-v01.json",
          "sha256": "0f9e9373e4e803f5106952e49a70972a317ec7a846712cc14b89b54bb1ea5bf3"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/song/master-acceptance-v01.json",
          "sha256": "0f6a206e992a024dd2d722de235f6c148acc0c386eae4d690e14dd50c93268b4"
        }
      ],
      "requiredCheck": "Проверить фактический LYRICS, семантическую полноту и комфортный спетый дубль. Нельзя исправлять потерю мысли только уменьшением длины.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": ".agents/skills/song-clone-ua/SKILL.md",
          "function": "Существующий музыкальный skill: композиция → прослушивание → lock"
        },
        {
          "path": "scripts/gen2.py",
          "function": "Предпокупочная проверка SONG_PLAN и STRESS_LEDGER"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_plan + validate_performed"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R03",
      "title": "Развести мысль, спетую фразу и карточку титров",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Фраза произносится и поётся целиком с понятным адресатом и сказуемым; ASR служит указателем, слух разрешает спор.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": ".agents/skills/song-clone-ua/SKILL.md",
          "function": "Существующий музыкальный skill: композиция → прослушивание → lock"
        },
        {
          "path": "scripts/gen2.py",
          "function": "Предпокупочная проверка SONG_PLAN и STRESS_LEDGER"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_plan + validate_performed"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R04",
      "title": "Создавать дыхание и музыкальные развороты до фиксации песни",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Inherited accepted v2 song evidence; no new song work authorized or performed. Prior remaining musical-gate gaps remain open and are linked.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/song/performed-song-passport-v01.json",
          "sha256": "8114037bde8ed685d51e5bf1f5e9c50b9eafe22bcff1273257d5d33bc75c5eb5"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/handoff/music-handoff-v01.json",
          "sha256": "0f9e9373e4e803f5106952e49a70972a317ec7a846712cc14b89b54bb1ea5bf3"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/song/master-acceptance-v01.json",
          "sha256": "0f6a206e992a024dd2d722de235f6c148acc0c386eae4d690e14dd50c93268b4"
        }
      ],
      "requiredCheck": "Слушающий критик подтверждает реальный отдых, не отсутствие оценки высоты тона. Кадр несёт функцию и во время паузы.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": ".agents/skills/song-clone-ua/SKILL.md",
          "function": "Существующий музыкальный skill: композиция → прослушивание → lock"
        },
        {
          "path": "scripts/gen2.py",
          "function": "Предпокупочная проверка SONG_PLAN и STRESS_LEDGER"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_plan + validate_performed"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R05",
      "title": "Паспортировать вокальную драматургию, а не только BPM",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Inherited accepted v2 song evidence; no new song work authorized or performed. Prior remaining musical-gate gaps remain open and are linked.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/song/performed-song-passport-v01.json",
          "sha256": "8114037bde8ed685d51e5bf1f5e9c50b9eafe22bcff1273257d5d33bc75c5eb5"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/handoff/music-handoff-v01.json",
          "sha256": "0f9e9373e4e803f5106952e49a70972a317ec7a846712cc14b89b54bb1ea5bf3"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/song/master-acceptance-v01.json",
          "sha256": "0f6a206e992a024dd2d722de235f6c148acc0c386eae4d690e14dd50c93268b4"
        }
      ],
      "requiredCheck": "Полный трек и локальные A/B-фрагменты слушаются отдельно от технической оценки. Pitch spread и RMS не доказывают эмоцию.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": ".agents/skills/song-clone-ua/SKILL.md",
          "function": "Существующий музыкальный skill: композиция → прослушивание → lock"
        },
        {
          "path": "scripts/gen2.py",
          "function": "Предпокупочная проверка SONG_PLAN и STRESS_LEDGER"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_plan + validate_performed"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R06",
      "title": "Отделить похожесть музыки от художественной состоятельности",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Inherited accepted v2 song evidence; no new song work authorized or performed. Prior remaining musical-gate gaps remain open and are linked.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/song/performed-song-passport-v01.json",
          "sha256": "8114037bde8ed685d51e5bf1f5e9c50b9eafe22bcff1273257d5d33bc75c5eb5"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/handoff/music-handoff-v01.json",
          "sha256": "0f9e9373e4e803f5106952e49a70972a317ec7a846712cc14b89b54bb1ea5bf3"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/song/master-acceptance-v01.json",
          "sha256": "0f6a206e992a024dd2d722de235f6c148acc0c386eae4d690e14dd50c93268b4"
        }
      ],
      "requiredCheck": "Гармонический алгоритм не определяет генератор и не отвергает песню автоматически. Новый музыкальный target — отдельное проверяемое решение.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": ".agents/skills/song-clone-ua/SKILL.md",
          "function": "Существующий музыкальный skill: композиция → прослушивание → lock"
        },
        {
          "path": "scripts/gen2.py",
          "function": "Предпокупочная проверка SONG_PLAN и STRESS_LEDGER"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_plan + validate_performed"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R07",
      "title": "Сохранять разговорную цель фразы и проверять ударения в пении",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Inherited accepted v2 song evidence; no new song work authorized or performed. Prior remaining musical-gate gaps remain open and are linked.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/song/performed-song-passport-v01.json",
          "sha256": "8114037bde8ed685d51e5bf1f5e9c50b9eafe22bcff1273257d5d33bc75c5eb5"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/handoff/music-handoff-v01.json",
          "sha256": "0f9e9373e4e803f5106952e49a70972a317ec7a846712cc14b89b54bb1ea5bf3"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/song/master-acceptance-v01.json",
          "sha256": "0f6a206e992a024dd2d722de235f6c148acc0c386eae4d690e14dd50c93268b4"
        }
      ],
      "requiredCheck": "Понятный смысл сохраняется после песенной редактуры; стресс подтверждён в контексте полной фразы, а не только текстовым знаком.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": ".agents/skills/song-clone-ua/SKILL.md",
          "function": "Существующий музыкальный skill: композиция → прослушивание → lock"
        },
        {
          "path": "scripts/gen2.py",
          "function": "Предпокупочная проверка SONG_PLAN и STRESS_LEDGER"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_plan + validate_performed"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R08",
      "title": "Сжимать формулировку без удаления причины и последствия",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Inherited accepted v2 song evidence; no new song work authorized or performed. Prior remaining musical-gate gaps remain open and are linked.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/song/performed-song-passport-v01.json",
          "sha256": "8114037bde8ed685d51e5bf1f5e9c50b9eafe22bcff1273257d5d33bc75c5eb5"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/handoff/music-handoff-v01.json",
          "sha256": "0f9e9373e4e803f5106952e49a70972a317ec7a846712cc14b89b54bb1ea5bf3"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-ten-c06fb16085-v01/song/master-acceptance-v01.json",
          "sha256": "0f6a206e992a024dd2d722de235f6c148acc0c386eae4d690e14dd50c93268b4"
        }
      ],
      "requiredCheck": "Ни один protected causal event не исчезает; визуальная компенсация не считается сохранённым спетым фактом без явного решения.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": ".agents/skills/song-clone-ua/SKILL.md",
          "function": "Существующий музыкальный skill: композиция → прослушивание → lock"
        },
        {
          "path": "scripts/gen2.py",
          "function": "Предпокупочная проверка SONG_PLAN и STRESS_LEDGER"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_plan + validate_performed"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R09",
      "title": "Сохранить мгновенный полный вокальный хук",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Слух и waveform вместе подтверждают вход; длительность тишины не равна доказательству целого слова.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": ".agents/skills/song-clone-ua/SKILL.md",
          "function": "Существующий музыкальный skill: композиция → прослушивание → lock"
        },
        {
          "path": "scripts/gen2.py",
          "function": "Предпокупочная проверка SONG_PLAN и STRESS_LEDGER"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_plan + validate_performed"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R10",
      "title": "Делать отдельное покрытие для взгляда и ответной реакции",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "На мобильном размере понятно, кто увидел что и что изменилось. Не навязывать всегда три плана или лимит 4.5 секунды.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_coverage + require_video_spec"
        },
        {
          "path": "tools/film_provider.py",
          "function": "validate_film_run / submit: принятый якорный кадр, исходные вложения и реальные receipts"
        },
        {
          "path": "tools/problem_quality.py",
          "function": "preflight + validate_export: состояния, рекомендатель и непрерывность"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R11",
      "title": "Задать видимую траекторию взгляда на новую проблемную зону",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "В экспортном фрагменте взгляд имеет правильного адресата и последовательность; отдельный crop зоны доступен для проверки.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_coverage + require_video_spec"
        },
        {
          "path": "tools/film_provider.py",
          "function": "validate_film_run / submit: принятый якорный кадр, исходные вложения и реальные receipts"
        },
        {
          "path": "tools/problem_quality.py",
          "function": "preflight + validate_export: состояния, рекомендатель и непрерывность"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R12",
      "title": "Паспортировать читаемость проблемы в кадре телефона",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Независимый просмотр узнаёт заданную проблему без подписи. Факт видимости шеи сам по себе не считается читаемостью заломов.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_coverage + require_video_spec"
        },
        {
          "path": "tools/film_provider.py",
          "function": "validate_film_run / submit: принятый якорный кадр, исходные вложения и реальные receipts"
        },
        {
          "path": "tools/problem_quality.py",
          "function": "preflight + validate_export: состояния, рекомендатель и непрерывность"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R13",
      "title": "Согласовать одежду и причёску с показом результата",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "В каждом утверждении результата зона реально открыта; скрытое состояние имеет объяснение и отдельное видимое доказательство в нужном beat.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_coverage + require_video_spec"
        },
        {
          "path": "tools/film_provider.py",
          "function": "validate_film_run / submit: принятый якорный кадр, исходные вложения и реальные receipts"
        },
        {
          "path": "tools/problem_quality.py",
          "function": "preflight + validate_export: состояния, рекомендатель и непрерывность"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R14",
      "title": "Состояния должны сохраняться между всеми появлениями",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Нет преждевременного результата до действия продукта; окончание полностью решает утверждённую проблему в рамках допустимого косметического результата.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_coverage + require_video_spec"
        },
        {
          "path": "tools/film_provider.py",
          "function": "validate_film_run / submit: принятый якорный кадр, исходные вложения и реальные receipts"
        },
        {
          "path": "tools/problem_quality.py",
          "function": "preflight + validate_export: состояния, рекомендатель и непрерывность"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R15",
      "title": "Сохранить одну визуальную систему между лицом и крупным планом кожи",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Before/result остаются тем же человеком и тем же визуальным миром. Красивое молодое лицо не считается успешной косметической трансформацией.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_coverage + require_video_spec"
        },
        {
          "path": "tools/film_provider.py",
          "function": "validate_film_run / submit: принятый якорный кадр, исходные вложения и реальные receipts"
        },
        {
          "path": "tools/problem_quality.py",
          "function": "preflight + validate_export: состояния, рекомендатель и непрерывность"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R16",
      "title": "Назвать физический поворот эмоции внутри каждого значимого действия",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Без титров различим нужный речевой акт: жалость, обида, любопытство, признание. Камера и движение рта не заменяют реакцию.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_coverage + require_video_spec"
        },
        {
          "path": "tools/film_provider.py",
          "function": "validate_film_run / submit: принятый якорный кадр, исходные вложения и реальные receipts"
        },
        {
          "path": "tools/problem_quality.py",
          "function": "preflight + validate_export: состояния, рекомендатель и непрерывность"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R17",
      "title": "Заканчивать действие и оставлять осмысленное удержание",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Нет обрезанного жеста или необъяснённого зависания; замедление не превращает действие в неподвижный постер.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_coverage + require_video_spec"
        },
        {
          "path": "tools/film_provider.py",
          "function": "validate_film_run / submit: принятый якорный кадр, исходные вложения и реальные receipts"
        },
        {
          "path": "tools/problem_quality.py",
          "function": "preflight + validate_export: состояния, рекомендатель и непрерывность"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R18",
      "title": "Ритм оценивать по событиям, а не по одному среднему плану",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Только очищенные интервалы идут в статистику; необычный долгий кадр получает просмотр по содержанию, не автоматический fail.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_coverage + require_video_spec"
        },
        {
          "path": "tools/film_provider.py",
          "function": "validate_film_run / submit: принятый якорный кадр, исходные вложения и реальные receipts"
        },
        {
          "path": "tools/problem_quality.py",
          "function": "preflight + validate_export: состояния, рекомендатель и непрерывность"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R19",
      "title": "Передавать в FILM фактический паспорт принятой песни",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Паспорт размечен по финальному принятому master, а не по черновику/таймкодам оригинала. Все ссылки и диапазоны входят в этот файл; предполагаемые паузы отделены от услышанных. При другой версии песни прежний handoff недействителен. После picture assembly проверяется неизменность принятого soundtrack и выбранные смысловые смещения.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_performed + validate_coverage: один неизменяемый master и фактические слова"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R20",
      "title": "Сохранить state-fades, но проверять наложенные лица",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Чистые before/result читаются отдельно; в середине нет непреднамеренного гибрида лиц. Длительность выбирается по фактическому материалу.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_coverage + require_video_spec"
        },
        {
          "path": "tools/film_provider.py",
          "function": "validate_film_run / submit: принятый якорный кадр, исходные вложения и реальные receipts"
        },
        {
          "path": "tools/problem_quality.py",
          "function": "preflight + validate_export: состояния, рекомендатель и непрерывность"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R21",
      "title": "Паспортировать изменение упаковки как изменение действия",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Предмет не телепортируется, анатомия и направление движения правдоподобны. Бренд и факты относятся к текущему goPure SKU.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_coverage + require_video_spec"
        },
        {
          "path": "tools/film_provider.py",
          "function": "validate_film_run / submit: принятый якорный кадр, исходные вложения и реальные receipts"
        },
        {
          "path": "tools/problem_quality.py",
          "function": "preflight + validate_export: состояния, рекомендатель и непрерывность"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R22",
      "title": "Проверять читаемую этикетку и экранное доказательство продукта",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse. Real readable final packshot; synthetic jar fine print in moving scenes is imperfect and disclosed.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Бренд читается на экспортном телефоном кадре и совпадает с утверждённой упаковкой; мелкие надписи не выдумываются.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_coverage + require_video_spec"
        },
        {
          "path": "tools/film_provider.py",
          "function": "validate_film_run / submit: принятый якорный кадр, исходные вложения и реальные receipts"
        },
        {
          "path": "tools/problem_quality.py",
          "function": "preflight + validate_export: состояния, рекомендатель и непрерывность"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R23",
      "title": "Титр поддерживает фразу и не скрывает лицо, шею или руку",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Все слова читаются и соответствуют звуку; лицо/зона/действие остаются доступны; численный reading-rate только диагностический до проверки человеком/моделью.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_coverage + require_video_spec"
        },
        {
          "path": "tools/film_provider.py",
          "function": "validate_film_run / submit: принятый якорный кадр, исходные вложения и реальные receipts"
        },
        {
          "path": "tools/problem_quality.py",
          "function": "preflight + validate_export: состояния, рекомендатель и непрерывность"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R24",
      "title": "CTA завершает историю в своём ритме",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Конец слушается как естественная кода; последняя фраза и карточка не обрываются. Проверить всю информацию и фактический срок чтения.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": ".agents/skills/song-clone-ua/SKILL.md",
          "function": "Существующий музыкальный skill: композиция → прослушивание → lock"
        },
        {
          "path": "scripts/gen2.py",
          "function": "Предпокупочная проверка SONG_PLAN и STRESS_LEDGER"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_plan + validate_performed"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R25",
      "title": "Сохранять продуктовую правду и локализацию при переносе мастерства",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Никаких неподдерживаемых гарантий, чужой формулы, вывода гражданства по внешности или удаления защищённых требований. Текущую формулу проверяют до новой генерации.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "pipeline.json",
          "function": "Постоянные требования music-first / scene-anchor"
        },
        {
          "path": "tools/music_first.py",
          "function": "Замороженные входы, полная семантическая карта, валидные временные интервалы"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R26",
      "title": "Не превращать один исходный план в обязательный один заказ",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Все исходные события сохранены независимо от числа заказов. Никаких 43/217 как универсальных констант для следующего оригинала.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "tools/music_first.py",
          "function": "validate_coverage + require_video_spec"
        },
        {
          "path": "tools/film_provider.py",
          "function": "validate_film_run / submit: принятый якорный кадр, исходные вложения и реальные receipts"
        },
        {
          "path": "tools/problem_quality.py",
          "function": "preflight + validate_export: состояния, рекомендатель и непрерывность"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R27",
      "title": "Сначала проверять измерительный инструмент",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse. Model locators are not native-frame measurements;37 outside-unit estimates explicitly rejected.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Некорректные данные дают unknown, а не pass/fail. Research-утилита dna_measurement_integrity.py уже воспроизводит найденную ошибку; production gate встроен в tools/music_first.py; неверные интервалы и несовпадающие привязки блокируют следующий этап.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "pipeline.json",
          "function": "Постоянные требования music-first / scene-anchor"
        },
        {
          "path": "tools/music_first.py",
          "function": "Замороженные входы, полная семантическая карта, валидные временные интервалы"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    },
    {
      "id": "R28",
      "title": "Проверять улучшения в порядке «песня → lock → видео»",
      "contract": "references/music-first-execution.md",
      "implementationStatus": "Applied in this new full-film clock, current actual-export review and source-bound same-adaptation reuse.",
      "newOutputEvidence": [
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/coverage-plan-v01.json",
          "sha256": "77aa7085169f2567c85ee5aab4354e0d2e666b3535f24c07b7fae2275d06147f"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-causal-adjudication-v01.json",
          "sha256": "87533442f03ee0e2e0d86846071b0f7410381f30e9ec76ef98beca771548c9f2"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/reviews/final-problem-quality-v01.json",
          "sha256": "ceb92a06d1a6dd0f37844ecc24cfac988913e3fabae59e1dcab5a94867c44ae0"
        },
        {
          "path": "/workspaces/UGS/AdFactorySongFormat/trees/492bb73a81/runs/targ-film-v2-492bb73a81-v01/film/export-audits/v01/locked-audio-proof.json",
          "sha256": "0a63a4afbd4ca4a33d6e9d2dd97faa6de07bf400398e3afef83ccbbec9a8abd5"
        }
      ],
      "requiredCheck": "Результат не объявляется 10/10 по среднему баллу. Ошибка/неизвестный POST сохраняются, одинаковая покупка не повторяется.",
      "inheritedPlacement": [
        {
          "path": "references/music-first-execution.md",
          "function": "R01–R28: обязательный контракт и входы/выходы/гейты"
        },
        {
          "path": "pipeline.json",
          "function": "Постоянные требования music-first / scene-anchor"
        },
        {
          "path": "tools/music_first.py",
          "function": "Замороженные входы, полная семантическая карта, валидные временные интервалы"
        },
        {
          "path": "tools/build_targ_improved_report.py",
          "function": "Публикация только по current acceptance для этих байтов и текущему problem-quality review"
        }
      ]
    }
  ]
}
