{
 "title": "Итерация 3: песня, которая дышит — варианты A, B и контроль C рядом с версией 2 и Targ",
 "summary": "Та же goPure-адаптация, тот же Targ как единственный музыкальный источник — но как вдохновение, а не часы. Текст переписан в песенную форму с бюджетом слогов, хук возвращается три раза, после каждой мысли — пауза, кода — один факт на фразу; темп, тональность и вес сида стали параметрами варианта; каждый дубль измерен таблицей дыхания до прослушивания, слепые рецензенты отвечали на вопросы «песня или нарратив», «дышит ли», «слышен ли каждый факт коды».",
 "decision": "Приёмка агентская по раскрытым gates и слепым прослушиваниям. Оценка владельца не получена; «10/10» никем не присваивается.",
 "at": "2026-09-17T09:31:07.949144+00:00",
 "tracks": [
  {
   "id": "targ",
   "label": "English Targ · 10/10 владельца",
   "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/full-targ.mp3",
   "sha256": "892f7adab0c149e1ff568621947df665088290ff75eda24bd978fa8a4325d54f",
   "duration": 194.489,
   "note": "128 kbps · постоянный gain",
   "parent": {
    "path": "/workspaces/UGS/LevchykUGS/data/music_dna_raw/targ.mp4",
    "sha256": "1ad8be404d1599942b378b8d5fb5322351684fe74b08f1fcc29502d59cfd4ee6"
   },
   "parentRange": [
    0,
    194.488934
   ],
   "gainDb": -3.8
  },
  {
   "id": "v2",
   "label": "UA версия 2 (2026-09-16) · принята агентом",
   "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/full-v2.mp3",
   "sha256": "9061cbe04f6e40fc24dff80e529ba567a45e0fa68b9537c81f26c7018076584d",
   "duration": 197.104,
   "note": "128 kbps · постоянный gain",
   "parent": {
    "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/baselines/v2-master.wav",
    "sha256": "81bf1b7930e3e930bd3155d1328c6f00780da6a92a65b4e0a034aea23e2e8865"
   },
   "parentRange": [
    0,
    197.103991
   ],
   "gainDb": -4.2
  },
  {
   "id": "A",
   "label": "UA вариант A · Балада з приспівом · принят агентом",
   "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/full-A.mp3",
   "sha256": "afb4bf4629ebb60c62c0b3149e1df329bce148ed3ba38c286f82676919155dbb",
   "duration": 228.024,
   "note": "128 kbps · постоянный gain",
   "parent": {
    "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-A-v01/gopure-targ-uk-master.wav",
    "sha256": "ba6a35af1a31bad5634cdbb10180f71708d333f3044000923117d5ce19d028cc"
   },
   "parentRange": [
    0,
    228.023991
   ],
   "gainDb": -3.7
  },
  {
   "id": "B",
   "label": "UA вариант B · Фолк-поп з рефреном-запитанням · принят агентом",
   "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/full-B.mp3",
   "sha256": "6c72d3d73813d62c8e3b383959c74b9fa384a22e4816934d6fc16ce1ce9dcea1",
   "duration": 233.174,
   "note": "128 kbps · постоянный gain",
   "parent": {
    "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-B-v01/gopure-targ-uk-master.wav",
    "sha256": "02da265d2ae7b36047228daf32f93c73346b0be5a2060e84942a062338827616"
   },
   "parentRange": [
    0,
    233.173991
   ],
   "gainDb": -4.2
  },
  {
   "id": "C",
   "label": "UA вариант C · Контроль: текст v2 в дышащей форме · контроль",
   "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/full-C.mp3",
   "sha256": "f3427bff3f56e3a633394f93c9b29a0c222753ef81ed64c368d885bcc4abcd90",
   "duration": 201.072,
   "note": "128 kbps · постоянный gain",
   "parent": {
    "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/takes/take_C1a_2.mp3",
    "sha256": "381331bdf01846c84e7c2410cd3f8fb7eca4975d4c643f681b8ee1b1ebea99e8"
   },
   "parentRange": [
    0,
    201.072
   ],
   "gainDb": -3.8
  }
 ],
 "variants": [
  {
   "id": "A",
   "name": "Балада з приспівом",
   "tempo": "90–94 BPM, 4/4",
   "form": "V1 · PreCh · V2 · Ch1 · V3 · V4(slow) · V5 · Ch2 · Bridge · Ch3(climax) · Outro(half-time)",
   "hook": "Я дивлюсь у дзеркало — і бачу",
   "status": "accepted",
   "statusLabel": "принят агентом",
   "note": "Дубль A1a_1 (215 с, первый раунд) → та же запись с поднятым вокалом по секциям, presence, тактом гитары перед брендом и тактом музыки без голоса после каждого факта коды (228 с). P0 открыты две строки: паузы на границах мыслей 0,40 (цель 0,80) и плотнейшая секция — диалог с Ларисой — 3,26 (цель 3,2). Альтернатива candA-r2b (дубль A2c_2 с тегами [Pause]) проходит плотность (3,11) и уступает по слепому сравнению «на долю»; опубликована рядом.",
   "audio": {
    "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-A-v01/gopure-targ-uk-master.wav",
    "sha256": "ba6a35af1a31bad5634cdbb10180f71708d333f3044000923117d5ce19d028cc"
   },
   "mp3": {
    "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-A-v01/gopure-targ-uk-master.mp3",
    "sha256": "ce9d26ed1ab7b7ff11978df1f915951686269b93624aab14156c610b6f661ed7"
   },
   "gates": {
    "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/gates/master-candA-r1e.gates.json",
    "passed": 10,
    "total": 17,
    "p0Failed": [
     "restBoundaryShare",
     "maxSectionRate"
    ],
    "rows": [
     {
      "id": "asrLineMatch",
      "label": "ASR: доля совпавших строк",
      "priority": "P0",
      "value": 0.99,
      "target": 0.95,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "restBoundaryShare",
      "label": "Доля запланированных границ мыслей с паузой ≥ 0,6 с (ASR-часы, подтверждено стемом)",
      "priority": "P0",
      "value": 0.396,
      "target": 0.8,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "maxSectionRate",
      "label": "Самая плотная секция, слог/с по спетому интервалу",
      "priority": "P0",
      "value": 3.26,
      "target": 3.2,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "sungRate",
      "label": "Вся песня, слог/с по спетому интервалу",
      "priority": "P0",
      "value": 2.7,
      "target": 2.8,
      "direction": "<=",
      "pass": true
     },
     {
      "id": "hookReturns",
      "label": "Возвраты хук-строки (≥ 3 позиции, ≥ 20 с между ними)",
      "priority": "P0",
      "value": 3,
      "target": 3,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "codaFactsRested",
      "label": "Факты коды спеты (ASR) и каждый с паузой ≥ 0,5 с после",
      "priority": "P0",
      "value": 6,
      "target": 6,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "noFragmentation",
      "label": "Без фрагментации: фраз ≤ 2 слов ≤ 15 %; промежутков ≥ 2 с ≤ секций + 2; пауз ≥ 2 с не более чем после 35 % фраз",
      "priority": "P0",
      "value": 1,
      "target": 1,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "restCount",
      "label": "Пауз ≥ 0,6 с на границах мыслей (число)",
      "priority": "P1",
      "value": 0.396,
      "target": 0.8,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "restMedian",
      "label": "Медианная пауза на границах мыслей, с",
      "priority": "P1",
      "value": 1.44,
      "target": 0.8,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "chorusLift",
      "label": "Медиана высоты припева/рефрена − медиана куплетов, полутона",
      "priority": "P1",
      "value": 4.4,
      "target": 2,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "climaxPlacement",
      "label": "Фраза с наивысшим p90 — в запланированной секции кульминации",
      "priority": "P1",
      "value": 0,
      "target": 1,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "contourStepMatch",
      "label": "Доля запланированных шагов up/down/same, совпавших с медианами фраз (± 1 st)",
      "priority": "P1",
      "value": 0.341,
      "target": 0.6,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "codaSettles",
      "label": "Медиана коды ≤ медиана припева − 2 st",
      "priority": "P1",
      "value": 1,
      "target": 1,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "phraseRateCV",
      "label": "CV скорости подачи по фразам",
      "priority": "P1",
      "value": 0.272,
      "target": 0.35,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "lowPitchedPhraseShare",
      "label": "Доля фраз ≥ 1 с с pitched-share < 0,15 (прокси речитатива)",
      "priority": "P1",
      "value": 0.16,
      "target": 0.1,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "vocMinusMusicWorst",
      "label": "Вокал минус музыка, худший блок кроме коды, dB",
      "priority": "P1",
      "value": -0.3,
      "target": -1.0,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "airBeforeBrand",
      "label": "Воздух без слов перед брендом, с",
      "priority": "P1",
      "value": 2.29,
      "target": 1.2,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "centroid",
      "label": "Центроид вокала, Гц",
      "priority": "info",
      "value": 3710.0,
      "target": 3600,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "registerSpread",
      "label": "Разброс медиан фраз (10–90 перц.), полутона",
      "priority": "info",
      "value": 7.2,
      "target": 10.0,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "lowRegisterShare",
      "label": "Доля фраз в речевом регистре (< MIDI 58)",
      "priority": "info",
      "value": 0.071,
      "target": 0.14,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "sustained05",
      "label": "Нот ≥ 0,5 с (долгие ноты желательны)",
      "priority": "info",
      "value": 16,
      "target": 10,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "sustainedTimeShare",
      "label": "Доля голосового времени в нотах ≥ 0,5 с",
      "priority": "info",
      "value": 0.146,
      "target": 0.09,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "heldNonFocus",
      "label": "Слов ≥ 0,9 с вне фокуса фразы",
      "priority": "info",
      "value": 34,
      "target": 10,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "lra",
      "label": "LRA short-term, LU",
      "priority": "info",
      "value": 6.07,
      "target": 5.0,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "careSeconds",
      "label": "Блок ухода, с",
      "priority": "info",
      "value": null,
      "target": 20.0,
      "direction": "<=",
      "pass": null
     },
     {
      "id": "careRate",
      "label": "Блок ухода, слог/с",
      "priority": "info",
      "value": null,
      "target": 3.6,
      "direction": "<=",
      "pass": null
     },
     {
      "id": "codaRate",
      "label": "Кода, слог/с",
      "priority": "info",
      "value": 1.75,
      "target": 3.2,
      "direction": "<=",
      "pass": true
     },
     {
      "id": "instrumentalSpans",
      "label": "Инструментальных промежутков ≥ 1 с (без хвоста)",
      "priority": "info",
      "value": 22,
      "target": 3,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "rateCV",
      "label": "CV скорости подачи по фразам (старый расчёт)",
      "priority": "info",
      "value": 0.272,
      "target": 0.35,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "thirds",
      "label": "Терции среди интервалов нот",
      "priority": "info",
      "value": 0.128,
      "target": 0.18,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "fallingEnds",
      "label": "Падающих окончаний фраз",
      "priority": "info",
      "value": 0.286,
      "target": 0.42,
      "direction": "<=",
      "pass": true
     },
     {
      "id": "duration",
      "label": "Длительность, с (свободная переменная)",
      "priority": "info",
      "value": 228.02,
      "target": 260.0,
      "direction": "<=",
      "pass": true
     }
    ]
   },
   "prediction": {
    "syllables": 536,
    "phrases": 50,
    "plannedRests": 49,
    "thoughtBoundaries": 49,
    "restBoundaryShare": 1.0,
    "sungRate": 2.72,
    "maxSectionRate": 3.45,
    "hookReturns": 3,
    "codaFactsRested": 6,
    "duration": 256.5,
    "sections": [
     {
      "id": "v1",
      "kind": "verse",
      "syllables": 67,
      "phrases": 6,
      "plannedRests": 6,
      "predictedSungSeconds": 21.8,
      "predictedRate": 3.07,
      "predictedSeconds": 26.3
     },
     {
      "id": "pc",
      "kind": "prechorus",
      "syllables": 23,
      "phrases": 3,
      "plannedRests": 3,
      "predictedSungSeconds": 9.2,
      "predictedRate": 2.49,
      "predictedSeconds": 14.1
     },
     {
      "id": "v2",
      "kind": "verse",
      "syllables": 59,
      "phrases": 5,
      "plannedRests": 5,
      "predictedSungSeconds": 19.2,
      "predictedRate": 3.07,
      "predictedSeconds": 23.0
     },
     {
      "id": "ch1",
      "kind": "chorus",
      "syllables": 53,
      "phrases": 5,
      "plannedRests": 5,
      "predictedSungSeconds": 21.3,
      "predictedRate": 2.49,
      "predictedSeconds": 27.6
     },
     {
      "id": "v3",
      "kind": "verse",
      "syllables": 64,
      "phrases": 6,
      "plannedRests": 6,
      "predictedSungSeconds": 18.6,
      "predictedRate": 3.45,
      "predictedSeconds": 25.7
     },
     {
      "id": "v4",
      "kind": "verse",
      "syllables": 57,
      "phrases": 5,
      "plannedRests": 4,
      "predictedSungSeconds": 21.2,
      "predictedRate": 2.68,
      "predictedSeconds": 26.9
     },
     {
      "id": "v5",
      "kind": "verse",
      "syllables": 26,
      "phrases": 2,
      "plannedRests": 2,
      "predictedSungSeconds": 8.5,
      "predictedRate": 3.07,
      "predictedSeconds": 12.6
     },
     {
      "id": "ch2",
      "kind": "chorus",
      "syllables": 46,
      "phrases": 4,
      "plannedRests": 4,
      "predictedSungSeconds": 18.5,
      "predictedRate": 2.49,
      "predictedSeconds": 24.1
     },
     {
      "id": "br",
      "kind": "bridge",
      "syllables": 56,
      "phrases": 5,
      "plannedRests": 5,
      "predictedSungSeconds": 18.3,
      "predictedRate": 3.07,
      "predictedSeconds": 24.6
     },
     {
      "id": "ch3",
      "kind": "chorus",
      "syllables": 34,
      "phrases": 3,
      "plannedRests": 3,
      "predictedSungSeconds": 13.6,
      "predictedRate": 2.49,
      "predictedSeconds": 18.5
     },
     {
      "id": "coda",
      "kind": "coda",
      "syllables": 51,
      "phrases": 6,
      "plannedRests": 6,
      "predictedSungSeconds": 26.6,
      "predictedRate": 1.92,
      "predictedSeconds": 31.1
     }
    ],
    "model": {
     "bpm": 92,
     "sylPerBar": {
      "verse": 8.0,
      "prechorus": 6.5,
      "chorus": 6.5,
      "bridge": 8.0,
      "coda": 5.0,
      "v3": 9.0,
      "v4": 7.0
     },
     "restSeconds": 0.75
    }
   },
   "trend": {
    "v2": {
     "restBoundaryShare": 0.034,
     "maxSectionRate": 4.61,
     "sungRate": 3.61,
     "hookReturns": 0,
     "codaFactsRested": 0,
     "syllables": 665,
     "duration": 197.103991
    },
    "predicted": {
     "restBoundaryShare": 1.0,
     "maxSectionRate": 3.45,
     "sungRate": 2.72,
     "hookReturns": 3,
     "codaFactsRested": 6,
     "syllables": 536,
     "duration": 256.5
    },
    "moves": {
     "restBoundaryShare": true,
     "maxSectionRate": true,
     "sungRate": true,
     "hookReturns": true,
     "codaFactsRested": true
    },
    "allMove": true,
    "control": false
   },
   "plan": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/song-plan-A-v01.json",
   "lyrics": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/lyrics-stressed-A-v01.txt",
   "stressLedger": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/stress-ledger-A-v01.json",
   "passport": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/performed-song-passport-A-v01.json",
   "takes": [
    {
     "tag": "A1a_1",
     "note": "215 с; 2,67 слог/с, плотнейшая 3,26 (Лариса), хук ×3, лифт припева +4,4 st, ASR 0,99, паузы 0,33, кода 3/6 — база принятого мастера"
    },
    {
     "tag": "A1a_2",
     "note": "224 с; 2,48 слог/с, паузы 0,35, кода 6/6, но две первые строки не распознаны (ASR 0,94) — отклонён"
    },
    {
     "tag": "A2a_1 / A2a_2",
     "note": "строфа на мысль: 210/217 с; паузы 0,27/0,25 — раскладка не добавила пауз; A2a_2 с пропусками строк"
    },
    {
     "tag": "A2b_1 / A2b_2",
     "note": "куплеты с многоточием: 231/188 с; 4–7 строк проглочено — отклонены"
    },
    {
     "tag": "A2c_1 / A2c_2",
     "note": "тег [Pause] после каждой мысли: 219/217 с; паузы 0,44/0,31 (лучшие), без фрагментации, ASR 0,98/1,0; A2c_2 → candA-r2b (11/17, только паузы открыты), в слепом сравнении «на долю» позади A1a_1"
    }
   ],
   "verdicts": {
    "song, not narration": "whole-r1b: SONG; whole-A-final: «clear SONG», ранг 1 из трёх; whole-A-pairs: «Song», но рецензент ставит v2 выше за драйв",
    "breathes": "whole-r1b: «breathes best»; whole-A-final: «breathes best» (≈ 11 пауз/мин); whole-A-pairs: «breathes best» (10–12/мин)",
    "coda intelligible": "все три whole-обзора: каждый факт слышен и «lands with time to breathe»; p3-coda: факты разделены 1,3–2,8 с, 3,5 с гитары перед брендом, бренд артикулирован",
    "sung throughout": "два whole-обзора: спето насквозь (кода как musical parlando в ритме и тональности); p3-coda-A-pairs2: блок заказа услышан как spoken voiceover; строки высоты: три последних факта без стабильной высоты — главная открытая строка A",
    "hook returns": "«Я дивлюсь у дзеркало… і бачу» ×3 (чужу → світло → себе) — услышан всеми рецензентами; измерено 3",
    "mentor scene": "вопрос спет прямо, без игры; «Стій» не как остановка; список общий — P1-пробелы"
   },
   "reviews": [
    "whole-r1b-v01",
    "whole-A-final-v01",
    "whole-A-pairs-v01",
    "p1-mentor-A-pairs2-v01",
    "p3-coda-A-pairs2-v01"
   ]
  },
  {
   "id": "B",
   "name": "Фолк-поп з рефреном-запитанням",
   "tempo": "110–114 BPM, 4/4",
   "form": "V1 · R1 · V2 · V3 · R2 · V4 · V5(softer) · V6 · R3 · Bridge(climax) · Outro(half-time)",
   "hook": "Дивлюсь на себе — і що я бачу?",
   "status": "accepted",
   "statusLabel": "принят агентом",
   "note": "Дубль B1a_2 (222 с) → та же запись с поднятым вокалом по секциям, presence и тактом музыки без голоса после каждого факта коды (233 с). P0 не выполнена одна строка: паузы на границах мыслей 0,33 (цель 0,80).",
   "audio": {
    "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-B-v01/gopure-targ-uk-master.wav",
    "sha256": "02da265d2ae7b36047228daf32f93c73346b0be5a2060e84942a062338827616"
   },
   "mp3": {
    "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-B-v01/gopure-targ-uk-master.mp3",
    "sha256": "1ae896be201f36659c7467633e03fe72a8d9839cf8911c05593cf249f3e73465"
   },
   "gates": {
    "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/gates/master-candB-r1e.gates.json",
    "passed": 11,
    "total": 17,
    "p0Failed": [
     "restBoundaryShare"
    ],
    "rows": [
     {
      "id": "asrLineMatch",
      "label": "ASR: доля совпавших строк",
      "priority": "P0",
      "value": 1.0,
      "target": 0.95,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "restBoundaryShare",
      "label": "Доля запланированных границ мыслей с паузой ≥ 0,6 с (ASR-часы, подтверждено стемом)",
      "priority": "P0",
      "value": 0.333,
      "target": 0.8,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "maxSectionRate",
      "label": "Самая плотная секция, слог/с по спетому интервалу",
      "priority": "P0",
      "value": 3.01,
      "target": 3.2,
      "direction": "<=",
      "pass": true
     },
     {
      "id": "sungRate",
      "label": "Вся песня, слог/с по спетому интервалу",
      "priority": "P0",
      "value": 2.68,
      "target": 2.8,
      "direction": "<=",
      "pass": true
     },
     {
      "id": "hookReturns",
      "label": "Возвраты хук-строки (≥ 3 позиции, ≥ 20 с между ними)",
      "priority": "P0",
      "value": 3,
      "target": 3,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "codaFactsRested",
      "label": "Факты коды спеты (ASR) и каждый с паузой ≥ 0,5 с после",
      "priority": "P0",
      "value": 6,
      "target": 6,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "noFragmentation",
      "label": "Без фрагментации: фраз ≤ 2 слов ≤ 15 %; промежутков ≥ 2 с ≤ секций + 2; пауз ≥ 2 с не более чем после 35 % фраз",
      "priority": "P0",
      "value": 1,
      "target": 1,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "restCount",
      "label": "Пауз ≥ 0,6 с на границах мыслей (число)",
      "priority": "P1",
      "value": 0.333,
      "target": 0.8,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "restMedian",
      "label": "Медианная пауза на границах мыслей, с",
      "priority": "P1",
      "value": 2.25,
      "target": 0.8,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "chorusLift",
      "label": "Медиана высоты припева/рефрена − медиана куплетов, полутона",
      "priority": "P1",
      "value": 0.1,
      "target": 2,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "climaxPlacement",
      "label": "Фраза с наивысшим p90 — в запланированной секции кульминации",
      "priority": "P1",
      "value": 1,
      "target": 1,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "contourStepMatch",
      "label": "Доля запланированных шагов up/down/same, совпавших с медианами фраз (± 1 st)",
      "priority": "P1",
      "value": 0.34,
      "target": 0.6,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "codaSettles",
      "label": "Медиана коды ≤ медиана припева − 2 st",
      "priority": "P1",
      "value": 1,
      "target": 1,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "phraseRateCV",
      "label": "CV скорости подачи по фразам",
      "priority": "P1",
      "value": 0.2,
      "target": 0.35,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "lowPitchedPhraseShare",
      "label": "Доля фраз ≥ 1 с с pitched-share < 0,15 (прокси речитатива)",
      "priority": "P1",
      "value": 0.058,
      "target": 0.1,
      "direction": "<=",
      "pass": true
     },
     {
      "id": "vocMinusMusicWorst",
      "label": "Вокал минус музыка, худший блок кроме коды, dB",
      "priority": "P1",
      "value": -1.9,
      "target": -1.0,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "airBeforeBrand",
      "label": "Воздух без слов перед брендом, с",
      "priority": "P1",
      "value": 2.24,
      "target": 1.2,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "centroid",
      "label": "Центроид вокала, Гц",
      "priority": "info",
      "value": 3143.0,
      "target": 3600,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "registerSpread",
      "label": "Разброс медиан фраз (10–90 перц.), полутона",
      "priority": "info",
      "value": 8.6,
      "target": 10.0,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "lowRegisterShare",
      "label": "Доля фраз в речевом регистре (< MIDI 58)",
      "priority": "info",
      "value": 0.0,
      "target": 0.14,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "sustained05",
      "label": "Нот ≥ 0,5 с (долгие ноты желательны)",
      "priority": "info",
      "value": 12,
      "target": 10,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "sustainedTimeShare",
      "label": "Доля голосового времени в нотах ≥ 0,5 с",
      "priority": "info",
      "value": 0.094,
      "target": 0.09,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "heldNonFocus",
      "label": "Слов ≥ 0,9 с вне фокуса фразы",
      "priority": "info",
      "value": 37,
      "target": 10,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "lra",
      "label": "LRA short-term, LU",
      "priority": "info",
      "value": 5.84,
      "target": 5.0,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "careSeconds",
      "label": "Блок ухода, с",
      "priority": "info",
      "value": null,
      "target": 20.0,
      "direction": "<=",
      "pass": null
     },
     {
      "id": "careRate",
      "label": "Блок ухода, слог/с",
      "priority": "info",
      "value": null,
      "target": 3.6,
      "direction": "<=",
      "pass": null
     },
     {
      "id": "codaRate",
      "label": "Кода, слог/с",
      "priority": "info",
      "value": 1.5,
      "target": 3.2,
      "direction": "<=",
      "pass": true
     },
     {
      "id": "instrumentalSpans",
      "label": "Инструментальных промежутков ≥ 1 с (без хвоста)",
      "priority": "info",
      "value": 16,
      "target": 3,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "rateCV",
      "label": "CV скорости подачи по фразам (старый расчёт)",
      "priority": "info",
      "value": 0.2,
      "target": 0.35,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "thirds",
      "label": "Терции среди интервалов нот",
      "priority": "info",
      "value": 0.128,
      "target": 0.18,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "fallingEnds",
      "label": "Падающих окончаний фраз",
      "priority": "info",
      "value": 0.431,
      "target": 0.42,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "duration",
      "label": "Длительность, с (свободная переменная)",
      "priority": "info",
      "value": 233.17,
      "target": 260.0,
      "direction": "<=",
      "pass": true
     }
    ]
   },
   "prediction": {
    "syllables": 537,
    "phrases": 52,
    "plannedRests": 52,
    "thoughtBoundaries": 52,
    "restBoundaryShare": 1.0,
    "sungRate": 2.75,
    "maxSectionRate": 3.5,
    "hookReturns": 3,
    "codaFactsRested": 6,
    "duration": 250.8,
    "sections": [
     {
      "id": "v1",
      "kind": "verse",
      "syllables": 73,
      "phrases": 6,
      "plannedRests": 6,
      "predictedSungSeconds": 24.1,
      "predictedRate": 3.03,
      "predictedSeconds": 28.3
     },
     {
      "id": "r1",
      "kind": "refrain",
      "syllables": 33,
      "phrases": 4,
      "plannedRests": 4,
      "predictedSungSeconds": 15.7,
      "predictedRate": 2.1,
      "predictedSeconds": 20.7
     },
     {
      "id": "v2",
      "kind": "verse",
      "syllables": 62,
      "phrases": 6,
      "plannedRests": 6,
      "predictedSungSeconds": 20.4,
      "predictedRate": 3.03,
      "predictedSeconds": 24.6
     },
     {
      "id": "v3",
      "kind": "verse",
      "syllables": 41,
      "phrases": 4,
      "plannedRests": 4,
      "predictedSungSeconds": 13.5,
      "predictedRate": 3.03,
      "predictedSeconds": 18.5
     },
     {
      "id": "r2",
      "kind": "refrain",
      "syllables": 14,
      "phrases": 2,
      "plannedRests": 2,
      "predictedSungSeconds": 6.7,
      "predictedRate": 2.1,
      "predictedSeconds": 10.2
     },
     {
      "id": "v4",
      "kind": "verse",
      "syllables": 63,
      "phrases": 6,
      "plannedRests": 6,
      "predictedSungSeconds": 18.0,
      "predictedRate": 3.5,
      "predictedSeconds": 24.3
     },
     {
      "id": "v5",
      "kind": "verse",
      "syllables": 49,
      "phrases": 4,
      "plannedRests": 4,
      "predictedSungSeconds": 17.5,
      "predictedRate": 2.8,
      "predictedSeconds": 22.4
     },
     {
      "id": "v6",
      "kind": "verse",
      "syllables": 58,
      "phrases": 5,
      "plannedRests": 5,
      "predictedSungSeconds": 19.1,
      "predictedRate": 3.03,
      "predictedSeconds": 24.8
     },
     {
      "id": "r3",
      "kind": "refrain",
      "syllables": 15,
      "phrases": 2,
      "plannedRests": 2,
      "predictedSungSeconds": 7.1,
      "predictedRate": 2.1,
      "predictedSeconds": 10.7
     },
     {
      "id": "br",
      "kind": "bridge",
      "syllables": 78,
      "phrases": 7,
      "plannedRests": 7,
      "predictedSungSeconds": 25.7,
      "predictedRate": 3.03,
      "predictedSeconds": 32.8
     },
     {
      "id": "coda",
      "kind": "coda",
      "syllables": 51,
      "phrases": 6,
      "plannedRests": 6,
      "predictedSungSeconds": 27.3,
      "predictedRate": 1.87,
      "predictedSeconds": 31.5
     }
    ],
    "model": {
     "bpm": 112,
     "sylPerBar": {
      "verse": 6.5,
      "refrain": 4.5,
      "bridge": 6.5,
      "coda": 4.0,
      "v4": 7.5,
      "v5": 6.0
     },
     "restSeconds": 0.7
    }
   },
   "trend": {
    "v2": {
     "restBoundaryShare": 0.034,
     "maxSectionRate": 4.61,
     "sungRate": 3.61,
     "hookReturns": 0,
     "codaFactsRested": 0,
     "syllables": 665,
     "duration": 197.103991
    },
    "predicted": {
     "restBoundaryShare": 1.0,
     "maxSectionRate": 3.5,
     "sungRate": 2.75,
     "hookReturns": 3,
     "codaFactsRested": 6,
     "syllables": 537,
     "duration": 250.8
    },
    "moves": {
     "restBoundaryShare": true,
     "maxSectionRate": true,
     "sungRate": true,
     "hookReturns": true,
     "codaFactsRested": true
    },
    "allMove": true,
    "control": false
   },
   "plan": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/song-plan-B-v01.json",
   "lyrics": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/lyrics-stressed-B-v01.txt",
   "stressLedger": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/stress-ledger-B-v01.json",
   "passport": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/performed-song-passport-B-v01.json",
   "takes": [
    {
     "tag": "B1a_1",
     "note": "194 с; 3,14 слог/с, секция «Лариса» 4,71 — отклонён"
    },
    {
     "tag": "B1a_2",
     "note": "222 с; 2,65 слог/с, плотнейшая 3,01, хук ×3, ASR 100 %, паузы 0,28, кода 4/6; слепой обзор: «most song»; база принятого кандидата"
    },
    {
     "tag": "B2a_1",
     "note": "183 с (строфа на мысль); 3,16 слог/с, паузы 0,04 — отклонён"
    },
    {
     "tag": "B2a_2",
     "note": "213 с (строфа на мысль); 2,82 слог/с, паузы 0,10, кода 3/6 — раскладка не добавила пауз; отклонён"
    }
   ],
   "verdicts": {
    "song, not narration (whole-r1b, whole-B-final)": "SONG in both blind reviews; refrain returns 3×",
    "breathes (whole-r1b)": "ranked first «most song», rests ≈ 6–9 per minute at stanza level; measured rests at planned boundaries 0.33",
    "coda intelligible (whole-B-final, p3-coda)": "all six facts «landed», 1.5–3.3 s of landing time each (inserted bars), brand identified with a soft onset",
    "sung throughout": "whole-B-final hears the calm coda as soft spoken-word; pitch rows: medians MIDI 60–69, pitched share 0.2–0.64 for five of six facts; the earlier reviewer heard it sung — open for the owner's ear",
    "mentor scene (p1-mentor)": "no melodic play on the question, no chuckle on «Сміється», no stop on «Стій» — P1 gaps"
   },
   "reviews": [
    "whole-r1b-v01",
    "whole-B-final-v01",
    "p1-mentor-B-final-v01",
    "p3-coda-B-final-v01"
   ]
  },
  {
   "id": "C",
   "name": "Контроль: текст v2 в дышащей форме",
   "tempo": "96 BPM",
   "form": "девять секций v2 с тегами [Verse]/[Bridge]/[Outro], без припева; паузы после каждой строки-мысли; филлы только между секциями",
   "hook": "—",
   "status": "control",
   "statusLabel": "контроль",
   "note": "Контроль: слова версии 2 дословно в дышащей форме (теги, паузы, филлы, 96 BPM, audioWeight 0,60). Измерено: 197–201 с, 3,49–3,50 слог/с, плотнейшая секция 4,4, паузы 0,02–0,05, без хука — текст не изменился, и музыка одна дышать не начала; сид при 0,60 удержал и темп, и длину. Не покупался повторно, не рецензировался.",
   "audio": {
    "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/takes/take_C1a_2.mp3",
    "sha256": "381331bdf01846c84e7c2410cd3f8fb7eca4975d4c643f681b8ee1b1ebea99e8"
   },
   "mp3": null,
   "gates": {
    "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/gates/take_C1a_2.gates.json",
    "passed": 4,
    "total": 17,
    "p0Failed": [
     "restBoundaryShare",
     "maxSectionRate",
     "sungRate",
     "hookReturns",
     "codaFactsRested"
    ],
    "rows": [
     {
      "id": "asrLineMatch",
      "label": "ASR: доля совпавших строк",
      "priority": "P0",
      "value": 0.992,
      "target": 0.95,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "restBoundaryShare",
      "label": "Доля запланированных границ мыслей с паузой ≥ 0,6 с (ASR-часы, подтверждено стемом)",
      "priority": "P0",
      "value": 0.052,
      "target": 0.8,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "maxSectionRate",
      "label": "Самая плотная секция, слог/с по спетому интервалу",
      "priority": "P0",
      "value": 4.42,
      "target": 3.2,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "sungRate",
      "label": "Вся песня, слог/с по спетому интервалу",
      "priority": "P0",
      "value": 3.5,
      "target": 2.8,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "hookReturns",
      "label": "Возвраты хук-строки (≥ 3 позиции, ≥ 20 с между ними)",
      "priority": "P0",
      "value": 0,
      "target": 3,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "codaFactsRested",
      "label": "Факты коды спеты (ASR) и каждый с паузой ≥ 0,5 с после",
      "priority": "P0",
      "value": 3,
      "target": 6,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "noFragmentation",
      "label": "Без фрагментации: фраз ≤ 2 слов ≤ 15 %; промежутков ≥ 2 с ≤ секций + 2; пауз ≥ 2 с не более чем после 35 % фраз",
      "priority": "P0",
      "value": 1,
      "target": 1,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "restCount",
      "label": "Пауз ≥ 0,6 с на границах мыслей (число)",
      "priority": "P1",
      "value": 0.052,
      "target": 0.8,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "restMedian",
      "label": "Медианная пауза на границах мыслей, с",
      "priority": "P1",
      "value": 0.88,
      "target": 0.8,
      "direction": ">=",
      "pass": true
     },
     {
      "id": "chorusLift",
      "label": "Медиана высоты припева/рефрена − медиана куплетов, полутона",
      "priority": "P1",
      "value": null,
      "target": 2,
      "direction": ">=",
      "pass": null
     },
     {
      "id": "climaxPlacement",
      "label": "Фраза с наивысшим p90 — в запланированной секции кульминации",
      "priority": "P1",
      "value": 0,
      "target": 1,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "contourStepMatch",
      "label": "Доля запланированных шагов up/down/same, совпавших с медианами фраз (± 1 st)",
      "priority": "P1",
      "value": 0.322,
      "target": 0.6,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "codaSettles",
      "label": "Медиана коды ≤ медиана припева − 2 st",
      "priority": "P1",
      "value": null,
      "target": 1,
      "direction": ">=",
      "pass": null
     },
     {
      "id": "phraseRateCV",
      "label": "CV скорости подачи по фразам",
      "priority": "P1",
      "value": 0.226,
      "target": 0.35,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "lowPitchedPhraseShare",
      "label": "Доля фраз ≥ 1 с с pitched-share < 0,15 (прокси речитатива)",
      "priority": "P1",
      "value": 0.033,
      "target": 0.1,
      "direction": "<=",
      "pass": true
     },
     {
      "id": "vocMinusMusicWorst",
      "label": "Вокал минус музыка, худший блок кроме коды, dB",
      "priority": "P1",
      "value": -3.7,
      "target": -1.0,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "airBeforeBrand",
      "label": "Воздух без слов перед брендом, с",
      "priority": "P1",
      "value": 0.04,
      "target": 1.2,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "centroid",
      "label": "Центроид вокала, Гц",
      "priority": "info",
      "value": 3180.0,
      "target": 3600,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "registerSpread",
      "label": "Разброс медиан фраз (10–90 перц.), полутона",
      "priority": "info",
      "value": 7.3,
      "target": 10.0,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "lowRegisterShare",
      "label": "Доля фраз в речевом регистре (< MIDI 58)",
      "priority": "info",
      "value": 0.1,
      "target": 0.14,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "sustained05",
      "label": "Нот ≥ 0,5 с (долгие ноты желательны)",
      "priority": "info",
      "value": 15,
      "target": 10,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "sustainedTimeShare",
      "label": "Доля голосового времени в нотах ≥ 0,5 с",
      "priority": "info",
      "value": 0.134,
      "target": 0.09,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "heldNonFocus",
      "label": "Слов ≥ 0,9 с вне фокуса фразы",
      "priority": "info",
      "value": 17,
      "target": 10,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "lra",
      "label": "LRA short-term, LU",
      "priority": "info",
      "value": 5.76,
      "target": 5.0,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "careSeconds",
      "label": "Блок ухода, с",
      "priority": "info",
      "value": null,
      "target": 20.0,
      "direction": "<=",
      "pass": null
     },
     {
      "id": "careRate",
      "label": "Блок ухода, слог/с",
      "priority": "info",
      "value": null,
      "target": 3.6,
      "direction": "<=",
      "pass": null
     },
     {
      "id": "codaRate",
      "label": "Кода, слог/с",
      "priority": "info",
      "value": 2.52,
      "target": 3.2,
      "direction": "<=",
      "pass": true
     },
     {
      "id": "instrumentalSpans",
      "label": "Инструментальных промежутков ≥ 1 с (без хвоста)",
      "priority": "info",
      "value": 5,
      "target": 3,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "rateCV",
      "label": "CV скорости подачи по фразам (старый расчёт)",
      "priority": "info",
      "value": 0.226,
      "target": 0.35,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "thirds",
      "label": "Терции среди интервалов нот",
      "priority": "info",
      "value": 0.093,
      "target": 0.18,
      "direction": ">=",
      "pass": false
     },
     {
      "id": "fallingEnds",
      "label": "Падающих окончаний фраз",
      "priority": "info",
      "value": 0.45,
      "target": 0.42,
      "direction": "<=",
      "pass": false
     },
     {
      "id": "duration",
      "label": "Длительность, с (свободная переменная)",
      "priority": "info",
      "value": 201.06,
      "target": 260.0,
      "direction": "<=",
      "pass": true
     }
    ]
   },
   "prediction": {
    "syllables": 665,
    "phrases": 60,
    "plannedRests": 59,
    "thoughtBoundaries": 59,
    "restBoundaryShare": 1.0,
    "sungRate": 3.3,
    "maxSectionRate": 3.44,
    "hookReturns": 0,
    "codaFactsRested": 6,
    "duration": 257.3,
    "sections": [
     {
      "id": "s1",
      "kind": "verse",
      "syllables": 86,
      "phrases": 9,
      "plannedRests": 9,
      "predictedSungSeconds": 25.0,
      "predictedRate": 3.44,
      "predictedSeconds": 31.3
     },
     {
      "id": "s2",
      "kind": "verse",
      "syllables": 89,
      "phrases": 8,
      "plannedRests": 8,
      "predictedSungSeconds": 25.9,
      "predictedRate": 3.44,
      "predictedSeconds": 34.0
     },
     {
      "id": "s3",
      "kind": "verse",
      "syllables": 74,
      "phrases": 6,
      "plannedRests": 6,
      "predictedSungSeconds": 21.5,
      "predictedRate": 3.44,
      "predictedSeconds": 25.7
     },
     {
      "id": "s4",
      "kind": "verse",
      "syllables": 87,
      "phrases": 8,
      "plannedRests": 7,
      "predictedSungSeconds": 25.3,
      "predictedRate": 3.44,
      "predictedSeconds": 32.7
     },
     {
      "id": "s5",
      "kind": "verse",
      "syllables": 66,
      "phrases": 5,
      "plannedRests": 5,
      "predictedSungSeconds": 19.2,
      "predictedRate": 3.44,
      "predictedSeconds": 22.7
     },
     {
      "id": "s6",
      "kind": "verse",
      "syllables": 88,
      "phrases": 8,
      "plannedRests": 8,
      "predictedSungSeconds": 25.6,
      "predictedRate": 3.44,
      "predictedSeconds": 33.7
     },
     {
      "id": "s7",
      "kind": "bridge",
      "syllables": 84,
      "phrases": 7,
      "plannedRests": 7,
      "predictedSungSeconds": 24.4,
      "predictedRate": 3.44,
      "predictedSeconds": 31.8
     },
     {
      "id": "s8",
      "kind": "verse",
      "syllables": 41,
      "phrases": 3,
      "plannedRests": 3,
      "predictedSungSeconds": 11.9,
      "predictedRate": 3.44,
      "predictedSeconds": 16.5
     },
     {
      "id": "s9",
      "kind": "coda",
      "syllables": 50,
      "phrases": 6,
      "plannedRests": 6,
      "predictedSungSeconds": 22.7,
      "predictedRate": 2.2,
      "predictedSeconds": 26.9
     }
    ],
    "model": {
     "bpm": 96,
     "sylPerBar": {
      "verse": 8.6,
      "bridge": 8.6,
      "coda": 5.5
     },
     "restSeconds": 0.7
    }
   },
   "trend": {
    "v2": {
     "restBoundaryShare": 0.034,
     "maxSectionRate": 4.61,
     "sungRate": 3.61,
     "hookReturns": 0,
     "codaFactsRested": 0,
     "syllables": 665,
     "duration": 197.103991
    },
    "predicted": {
     "restBoundaryShare": 1.0,
     "maxSectionRate": 3.44,
     "sungRate": 3.3,
     "hookReturns": 0,
     "codaFactsRested": 6,
     "syllables": 665,
     "duration": 257.3
    },
    "moves": {
     "restBoundaryShare": true,
     "maxSectionRate": true,
     "sungRate": true,
     "hookReturns": false,
     "codaFactsRested": true
    },
    "allMove": false,
    "control": true
   },
   "plan": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/song-plan-C-v01.json",
   "lyrics": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/lyrics-stressed-C-v01.txt",
   "stressLedger": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/stress-ledger-C-v01.json",
   "passport": null,
   "takes": [
    {
     "tag": "C1a_1",
     "note": "197 с; 3,49 слог/с; ASR 0,975"
    },
    {
     "tag": "C1a_2",
     "note": "201 с; 3,50 слог/с; ASR 0,992 — показан в отчёте как контроль"
    }
   ],
   "verdicts": {},
   "reviews": []
  }
 ],
 "pairs": [
  {
   "id": "store",
   "title": "Крамниця: погляд і жалість",
   "purpose": "Список, голос из соседнего ряда, сканирование шеи, «не злість — жалість», «колишня версія».",
   "thoughts": [
    "t10",
    "t11",
    "t12",
    "t13",
    "t14",
    "t15"
   ],
   "tracks": [
    {
     "id": "targ",
     "label": "English Targ · 10/10 владельца",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/store-targ.mp3",
     "sha256": "8d5df0dbcbc7d2dd2a58d787294dfe93a0bb553ce3440fb844f2e186077b3fe3",
     "duration": 30.6,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/LevchykUGS/data/music_dna_raw/targ.mp4",
      "sha256": "1ad8be404d1599942b378b8d5fb5322351684fe74b08f1fcc29502d59cfd4ee6"
     },
     "parentRange": [
      32.7,
      63.3
     ],
     "gainDb": -3.8
    },
    {
     "id": "v2",
     "label": "UA версия 2 (2026-09-16) · принята агентом",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/store-v2.mp3",
     "sha256": "3d46f9abc66ec371394c34bcfbc8398ba2f13abc2a565b8478d5c3ed9f0d3bb5",
     "duration": 28.06,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/baselines/v2-master.wav",
      "sha256": "81bf1b7930e3e930bd3155d1328c6f00780da6a92a65b4e0a034aea23e2e8865"
     },
     "parentRange": [
      32.28,
      60.34
     ],
     "gainDb": -4.2
    },
    {
     "id": "A",
     "label": "UA вариант A · Балада з приспівом · принят агентом",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/store-A.mp3",
     "sha256": "8c7728a137b9fab86cb01d6625b69ad72b7ef84eff67f4a323af10d098f2efee",
     "duration": 38.2,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-A-v01/gopure-targ-uk-master.wav",
      "sha256": "ba6a35af1a31bad5634cdbb10180f71708d333f3044000923117d5ce19d028cc"
     },
     "parentRange": [
      36.82,
      75.02
     ],
     "gainDb": -3.7
    },
    {
     "id": "B",
     "label": "UA вариант B · Фолк-поп з рефреном-запитанням · принят агентом",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/store-B.mp3",
     "sha256": "da86f5c54b9b86fdce4c9bdcb46152e98e08d9b8a485a9dca9be97fc15e44669",
     "duration": 42.14,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-B-v01/gopure-targ-uk-master.wav",
      "sha256": "02da265d2ae7b36047228daf32f93c73346b0be5a2060e84942a062338827616"
     },
     "parentRange": [
      43.46,
      85.6
     ],
     "gainDb": -4.2
    },
    {
     "id": "C",
     "label": "UA вариант C · Контроль: текст v2 в дышащей форме · контроль",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/store-C.mp3",
     "sha256": "a0eb5ac048fb17136abbb2d471721eac001ef9bc7cc924f427727d7033bbf86c",
     "duration": 27.76,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/takes/take_C1a_2.mp3",
      "sha256": "381331bdf01846c84e7c2410cd3f8fb7eca4975d4c643f681b8ee1b1ebea99e8"
     },
     "parentRange": [
      33.52,
      61.28
     ],
     "gainDb": -3.8
    }
   ]
  },
  {
   "id": "mentor",
   "title": "Лариса: вопрос, список, «Стій»",
   "purpose": "Подводка к танцам, вопрос «Чим ти користуєшся?», смех, список, остановка на «Стій»; слышны ли паузы между мыслями.",
   "thoughts": [
    "t20",
    "t21",
    "t22",
    "t23",
    "t24"
   ],
   "tracks": [
    {
     "id": "targ",
     "label": "English Targ · 10/10 владельца",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/mentor-targ.mp3",
     "sha256": "1f5e5fbaddb9139d5958b0739455c3c5c58eb54a4e5b2ffb8afc754e5e99f793",
     "duration": 28.4,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/LevchykUGS/data/music_dna_raw/targ.mp4",
      "sha256": "1ad8be404d1599942b378b8d5fb5322351684fe74b08f1fcc29502d59cfd4ee6"
     },
     "parentRange": [
      80.7,
      109.1
     ],
     "gainDb": -3.8
    },
    {
     "id": "v2",
     "label": "UA версия 2 (2026-09-16) · принята агентом",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/mentor-v2.mp3",
     "sha256": "9e9d3ba9daeeeb76264f2d9da901fcfdd9840299586570f791f3a1f5d15b6a26",
     "duration": 20.54,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/baselines/v2-master.wav",
      "sha256": "81bf1b7930e3e930bd3155d1328c6f00780da6a92a65b4e0a034aea23e2e8865"
     },
     "parentRange": [
      75.96,
      96.5
     ],
     "gainDb": -4.2
    },
    {
     "id": "A",
     "label": "UA вариант A · Балада з приспівом · принят агентом",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/mentor-A.mp3",
     "sha256": "528a4ed366ba7a980c0e660bcb56ede7f3e149d61e52c2b18c58e73cb2bcdb57",
     "duration": 20.86,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-A-v01/gopure-targ-uk-master.wav",
      "sha256": "ba6a35af1a31bad5634cdbb10180f71708d333f3044000923117d5ce19d028cc"
     },
     "parentRange": [
      81.04,
      101.9
     ],
     "gainDb": -3.7
    },
    {
     "id": "B",
     "label": "UA вариант B · Фолк-поп з рефреном-запитанням · принят агентом",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/mentor-B.mp3",
     "sha256": "b031b7f6ab96db3db746521ca5230933e21632b2ed9377c8a2279e42b788644e",
     "duration": 25.32,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-B-v01/gopure-targ-uk-master.wav",
      "sha256": "02da265d2ae7b36047228daf32f93c73346b0be5a2060e84942a062338827616"
     },
     "parentRange": [
      87.46,
      112.78
     ],
     "gainDb": -4.2
    },
    {
     "id": "C",
     "label": "UA вариант C · Контроль: текст v2 в дышащей форме · контроль",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/mentor-C.mp3",
     "sha256": "ff3c1acbe03826c4177774afd18ae1dffc4e9b30196a426d4b2b2cfc01c5b966",
     "duration": 21.44,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/takes/take_C1a_2.mp3",
      "sha256": "381331bdf01846c84e7c2410cd3f8fb7eca4975d4c643f681b8ee1b1ebea99e8"
     },
     "parentRange": [
      74.48,
      95.92
     ],
     "gainDb": -3.8
    }
   ]
  },
  {
   "id": "care",
   "title": "Банка и ритуал",
   "purpose": "Банка, ингредиенты, ритуал, «Комфортно»: самая плотная секция версии 2 — дышит ли теперь.",
   "thoughts": [
    "t25",
    "t26",
    "t27"
   ],
   "tracks": [
    {
     "id": "targ",
     "label": "English Targ · 10/10 владельца",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/care-targ.mp3",
     "sha256": "d488740619791f817a8c7654b1aeb85745673a1e2fbcc3aa0ece8ee33ea52761",
     "duration": 14.7,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/LevchykUGS/data/music_dna_raw/targ.mp4",
      "sha256": "1ad8be404d1599942b378b8d5fb5322351684fe74b08f1fcc29502d59cfd4ee6"
     },
     "parentRange": [
      108.5,
      123.2
     ],
     "gainDb": -3.8
    },
    {
     "id": "v2",
     "label": "UA версия 2 (2026-09-16) · принята агентом",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/care-v2.mp3",
     "sha256": "43c613d82e87dd543f0f98cfdf2aa25bec4f4896ded498474f80dfe056cce73a",
     "duration": 17.76,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/baselines/v2-master.wav",
      "sha256": "81bf1b7930e3e930bd3155d1328c6f00780da6a92a65b4e0a034aea23e2e8865"
     },
     "parentRange": [
      95.6,
      113.36
     ],
     "gainDb": -4.2
    },
    {
     "id": "A",
     "label": "UA вариант A · Балада з приспівом · принят агентом",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/care-A.mp3",
     "sha256": "f4a17ae52909e748fe80a52d97c65b4d20634f4071a7eb42c35091ce4998a7ac",
     "duration": 23.6,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-A-v01/gopure-targ-uk-master.wav",
      "sha256": "ba6a35af1a31bad5634cdbb10180f71708d333f3044000923117d5ce19d028cc"
     },
     "parentRange": [
      101.98,
      125.58
     ],
     "gainDb": -3.7
    },
    {
     "id": "B",
     "label": "UA вариант B · Фолк-поп з рефреном-запитанням · принят агентом",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/care-B.mp3",
     "sha256": "4129d8aad857dad88fcfc51c08cfef88676c329aa7a09e90f8af22649fc14486",
     "duration": 18.94,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-B-v01/gopure-targ-uk-master.wav",
      "sha256": "02da265d2ae7b36047228daf32f93c73346b0be5a2060e84942a062338827616"
     },
     "parentRange": [
      111.68,
      130.62
     ],
     "gainDb": -4.2
    },
    {
     "id": "C",
     "label": "UA вариант C · Контроль: текст v2 в дышащей форме · контроль",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/care-C.mp3",
     "sha256": "4ee0ab79ac255e3f4404e3f57a57e15129652b53ddc4f7676b07c3472ff24795",
     "duration": 19.52,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/takes/take_C1a_2.mp3",
      "sha256": "381331bdf01846c84e7c2410cd3f8fb7eca4975d4c643f681b8ee1b1ebea99e8"
     },
     "parentRange": [
      96.6,
      116.12
     ],
     "gainDb": -3.8
    }
   ]
  },
  {
   "id": "change",
   "title": "Три тижні · шість · відкрита шия",
   "purpose": "Зеркало, дочь, шестая неделя, открытая шея; подъём мелодии к результату.",
   "thoughts": [
    "t28",
    "t29",
    "t30",
    "t31"
   ],
   "tracks": [
    {
     "id": "targ",
     "label": "English Targ · 10/10 владельца",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/change-targ.mp3",
     "sha256": "e75e571e12696a36140fb9ad2e2e51ab3ff4c6ca98ab258c616386762d1a1bd0",
     "duration": 24.1,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/LevchykUGS/data/music_dna_raw/targ.mp4",
      "sha256": "1ad8be404d1599942b378b8d5fb5322351684fe74b08f1fcc29502d59cfd4ee6"
     },
     "parentRange": [
      122.6,
      146.7
     ],
     "gainDb": -3.8
    },
    {
     "id": "v2",
     "label": "UA версия 2 (2026-09-16) · принята агентом",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/change-v2.mp3",
     "sha256": "265179da0af089a0268a032e8ed33cbc713898ff6effbdfd7e62d86d20e43796",
     "duration": 23.82,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/baselines/v2-master.wav",
      "sha256": "81bf1b7930e3e930bd3155d1328c6f00780da6a92a65b4e0a034aea23e2e8865"
     },
     "parentRange": [
      112.46,
      136.28
     ],
     "gainDb": -4.2
    },
    {
     "id": "A",
     "label": "UA вариант A · Балада з приспівом · принят агентом",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/change-A.mp3",
     "sha256": "51dca331516e65b71d7d034d4a98b140c9f2e0cdb51ef0281f3617bcf1cc1253",
     "duration": 30.0,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-A-v01/gopure-targ-uk-master.wav",
      "sha256": "ba6a35af1a31bad5634cdbb10180f71708d333f3044000923117d5ce19d028cc"
     },
     "parentRange": [
      124.48,
      154.48
     ],
     "gainDb": -3.7
    },
    {
     "id": "B",
     "label": "UA вариант B · Фолк-поп з рефреном-запитанням · принят агентом",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/change-B.mp3",
     "sha256": "16f4d16b72bee6a69a7580e1653864888495a21e327f3aba0c9a57e0fddcb312",
     "duration": 27.7,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-B-v01/gopure-targ-uk-master.wav",
      "sha256": "02da265d2ae7b36047228daf32f93c73346b0be5a2060e84942a062338827616"
     },
     "parentRange": [
      129.52,
      157.22
     ],
     "gainDb": -4.2
    },
    {
     "id": "C",
     "label": "UA вариант C · Контроль: текст v2 в дышащей форме · контроль",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/change-C.mp3",
     "sha256": "32e56c0492a3ce83cbc45f523c00bf509bfb5ee92d0781a0098a87d983cc0eda",
     "duration": 24.1,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/takes/take_C1a_2.mp3",
      "sha256": "381331bdf01846c84e7c2410cd3f8fb7eca4975d4c643f681b8ee1b1ebea99e8"
     },
     "parentRange": [
      115.02,
      139.12
     ],
     "gainDb": -3.8
    }
   ]
  },
  {
   "id": "coda",
   "title": "Своя · бренд · условия",
   "purpose": "«Дякую», «свою ціную», один такт воздуха, бренд, каждый факт заказа в своей фразе с паузой.",
   "thoughts": [
    "t36",
    "t37",
    "t38",
    "t39"
   ],
   "tracks": [
    {
     "id": "targ",
     "label": "English Targ · 10/10 владельца",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/coda-targ.mp3",
     "sha256": "de8a44574b01df08637bf310a7b7d20ec62df2fa2bfc95067505ffbba61e244e",
     "duration": 15.5,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/LevchykUGS/data/music_dna_raw/targ.mp4",
      "sha256": "1ad8be404d1599942b378b8d5fb5322351684fe74b08f1fcc29502d59cfd4ee6"
     },
     "parentRange": [
      173.3,
      188.8
     ],
     "gainDb": -3.8
    },
    {
     "id": "v2",
     "label": "UA версия 2 (2026-09-16) · принята агентом",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/coda-v2.mp3",
     "sha256": "ee6748f497187f732e53a7db6bd5164a3bbe751345bdec9c4e16b8b949865f8e",
     "duration": 32.24,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/baselines/v2-master.wav",
      "sha256": "81bf1b7930e3e930bd3155d1328c6f00780da6a92a65b4e0a034aea23e2e8865"
     },
     "parentRange": [
      159.3,
      191.54
     ],
     "gainDb": -4.2
    },
    {
     "id": "A",
     "label": "UA вариант A · Балада з приспівом · принят агентом",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/coda-A.mp3",
     "sha256": "eaacd3b6bf0791ff420b12d5ffb319352281d8aad8cfabe15a0245ecbe8cfd3f",
     "duration": 45.52,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-A-v01/gopure-targ-uk-master.wav",
      "sha256": "ba6a35af1a31bad5634cdbb10180f71708d333f3044000923117d5ce19d028cc"
     },
     "parentRange": [
      177.38,
      222.9
     ],
     "gainDb": -3.7
    },
    {
     "id": "B",
     "label": "UA вариант B · Фолк-поп з рефреном-запитанням · принят агентом",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/coda-B.mp3",
     "sha256": "077caf5e43259995839624b1a83f02daf3091f57a662fc472b4494329596ebba",
     "duration": 46.87,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/accepted-B-v01/gopure-targ-uk-master.wav",
      "sha256": "02da265d2ae7b36047228daf32f93c73346b0be5a2060e84942a062338827616"
     },
     "parentRange": [
      181.78,
      228.65
     ],
     "gainDb": -4.2
    },
    {
     "id": "C",
     "label": "UA вариант C · Контроль: текст v2 в дышащей форме · контроль",
     "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/audio/coda-C.mp3",
     "sha256": "aeb276de465cd656c70c7f5c0dbf6db041f9fc5b11f071111f8e35b1b9bb9bdf",
     "duration": 34.36,
     "note": "128 kbps · постоянный gain",
     "parent": {
      "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/takes/take_C1a_2.mp3",
      "sha256": "381331bdf01846c84e7c2410cd3f8fb7eca4975d4c643f681b8ee1b1ebea99e8"
     },
     "parentRange": [
      161.72,
      196.08
     ],
     "gainDb": -3.8
    }
   ]
  }
 ],
 "trend": [
  {
   "id": "asrLineMatch",
   "label": "ASR: доля совпавших строк",
   "priority": "P0",
   "target": 0.95,
   "direction": ">=",
   "targ": null,
   "v0": null,
   "v1": null,
   "v2": 0.992,
   "predA": null,
   "measA": 0.99,
   "passA": true,
   "predB": null,
   "measB": 1.0,
   "passB": true,
   "predC": null,
   "measC": 0.992,
   "passC": true
  },
  {
   "id": "restBoundaryShare",
   "label": "Доля запланированных границ мыслей с паузой ≥ 0,6 с (ASR-часы, подтверждено стемом)",
   "priority": "P0",
   "target": 0.8,
   "direction": ">=",
   "targ": 0.097,
   "v0": 0.0,
   "v1": 0.102,
   "v2": 0.069,
   "predA": 1.0,
   "measA": 0.396,
   "passA": false,
   "predB": 1.0,
   "measB": 0.333,
   "passB": false,
   "predC": 1.0,
   "measC": 0.052,
   "passC": false
  },
  {
   "id": "maxSectionRate",
   "label": "Самая плотная секция, слог/с по спетому интервалу",
   "priority": "P0",
   "target": 3.2,
   "direction": "<=",
   "targ": 3.64,
   "v0": 4.7,
   "v1": 4.13,
   "v2": 4.61,
   "predA": 3.45,
   "measA": 3.26,
   "passA": false,
   "predB": 3.5,
   "measB": 3.01,
   "passB": true,
   "predC": 3.44,
   "measC": 4.42,
   "passC": false
  },
  {
   "id": "sungRate",
   "label": "Вся песня, слог/с по спетому интервалу",
   "priority": "P0",
   "target": 2.8,
   "direction": "<=",
   "targ": 3.26,
   "v0": 3.86,
   "v1": 3.62,
   "v2": 3.61,
   "predA": 2.72,
   "measA": 2.7,
   "passA": true,
   "predB": 2.75,
   "measB": 2.68,
   "passB": true,
   "predC": 3.3,
   "measC": 3.5,
   "passC": false
  },
  {
   "id": "hookReturns",
   "label": "Возвраты хук-строки (≥ 3 позиции, ≥ 20 с между ними)",
   "priority": "P0",
   "target": 3,
   "direction": ">=",
   "targ": 0,
   "v0": 0,
   "v1": 0,
   "v2": 0,
   "predA": 3,
   "measA": 3,
   "passA": true,
   "predB": 3,
   "measB": 3,
   "passB": true,
   "predC": 0,
   "measC": 0,
   "passC": false
  },
  {
   "id": "codaFactsRested",
   "label": "Факты коды спеты (ASR) и каждый с паузой ≥ 0,5 с после",
   "priority": "P0",
   "target": 6,
   "direction": ">=",
   "targ": 0,
   "v0": 0,
   "v1": 0,
   "v2": 1,
   "predA": 6,
   "measA": 6,
   "passA": true,
   "predB": 6,
   "measB": 6,
   "passB": true,
   "predC": 6,
   "measC": 3,
   "passC": false
  },
  {
   "id": "noFragmentation",
   "label": "Без фрагментации: фраз ≤ 2 слов ≤ 15 %; промежутков ≥ 2 с ≤ секций + 2; пауз ≥ 2 с не более чем после 35 % фраз",
   "priority": "P0",
   "target": 1,
   "direction": ">=",
   "targ": null,
   "v0": null,
   "v1": null,
   "v2": 1,
   "predA": null,
   "measA": 1,
   "passA": true,
   "predB": null,
   "measB": 1,
   "passB": true,
   "predC": null,
   "measC": 1,
   "passC": true
  },
  {
   "id": "restCount",
   "label": "Пауз ≥ 0,6 с на границах мыслей (число)",
   "priority": "P1",
   "target": 0.8,
   "direction": ">=",
   "targ": null,
   "v0": null,
   "v1": null,
   "v2": 0.069,
   "predA": null,
   "measA": 0.396,
   "passA": false,
   "predB": null,
   "measB": 0.333,
   "passB": false,
   "predC": null,
   "measC": 0.052,
   "passC": false
  },
  {
   "id": "restMedian",
   "label": "Медианная пауза на границах мыслей, с",
   "priority": "P1",
   "target": 0.8,
   "direction": ">=",
   "targ": 0.78,
   "v0": 1.06,
   "v1": 1.11,
   "v2": 1.1,
   "predA": null,
   "measA": 1.44,
   "passA": true,
   "predB": null,
   "measB": 2.25,
   "passB": true,
   "predC": null,
   "measC": 0.88,
   "passC": true
  },
  {
   "id": "chorusLift",
   "label": "Медиана высоты припева/рефрена − медиана куплетов, полутона",
   "priority": "P1",
   "target": 2,
   "direction": ">=",
   "targ": null,
   "v0": null,
   "v1": null,
   "v2": null,
   "predA": null,
   "measA": 4.4,
   "passA": true,
   "predB": null,
   "measB": 0.1,
   "passB": false,
   "predC": null,
   "measC": null,
   "passC": null
  },
  {
   "id": "climaxPlacement",
   "label": "Фраза с наивысшим p90 — в запланированной секции кульминации",
   "priority": "P1",
   "target": 1,
   "direction": ">=",
   "targ": null,
   "v0": null,
   "v1": null,
   "v2": 0,
   "predA": null,
   "measA": 0,
   "passA": false,
   "predB": null,
   "measB": 1,
   "passB": true,
   "predC": null,
   "measC": 0,
   "passC": false
  },
  {
   "id": "contourStepMatch",
   "label": "Доля запланированных шагов up/down/same, совпавших с медианами фраз (± 1 st)",
   "priority": "P1",
   "target": 0.6,
   "direction": ">=",
   "targ": null,
   "v0": null,
   "v1": null,
   "v2": 0.421,
   "predA": null,
   "measA": 0.341,
   "passA": false,
   "predB": null,
   "measB": 0.34,
   "passB": false,
   "predC": null,
   "measC": 0.322,
   "passC": false
  },
  {
   "id": "codaSettles",
   "label": "Медиана коды ≤ медиана припева − 2 st",
   "priority": "P1",
   "target": 1,
   "direction": ">=",
   "targ": null,
   "v0": null,
   "v1": null,
   "v2": null,
   "predA": null,
   "measA": 1,
   "passA": true,
   "predB": null,
   "measB": 1,
   "passB": true,
   "predC": null,
   "measC": null,
   "passC": null
  },
  {
   "id": "phraseRateCV",
   "label": "CV скорости подачи по фразам",
   "priority": "P1",
   "target": 0.35,
   "direction": ">=",
   "targ": 0.328,
   "v0": 0.207,
   "v1": 0.272,
   "v2": 0.199,
   "predA": null,
   "measA": 0.272,
   "passA": false,
   "predB": null,
   "measB": 0.2,
   "passB": false,
   "predC": null,
   "measC": 0.226,
   "passC": false
  },
  {
   "id": "lowPitchedPhraseShare",
   "label": "Доля фраз ≥ 1 с с pitched-share < 0,15 (прокси речитатива)",
   "priority": "P1",
   "target": 0.1,
   "direction": "<=",
   "targ": null,
   "v0": null,
   "v1": null,
   "v2": 0.15,
   "predA": null,
   "measA": 0.16,
   "passA": false,
   "predB": null,
   "measB": 0.058,
   "passB": true,
   "predC": null,
   "measC": 0.033,
   "passC": true
  },
  {
   "id": "vocMinusMusicWorst",
   "label": "Вокал минус музыка, худший блок кроме коды, dB",
   "priority": "P1",
   "target": -1.0,
   "direction": ">=",
   "targ": -1.0,
   "v0": null,
   "v1": -4.4,
   "v2": 0.7,
   "predA": null,
   "measA": -0.3,
   "passA": true,
   "predB": null,
   "measB": -1.9,
   "passB": false,
   "predC": null,
   "measC": -3.7,
   "passC": false
  },
  {
   "id": "airBeforeBrand",
   "label": "Воздух без слов перед брендом, с",
   "priority": "P1",
   "target": 1.2,
   "direction": ">=",
   "targ": 2.3,
   "v0": null,
   "v1": 0.0,
   "v2": 0.16,
   "predA": null,
   "measA": 2.29,
   "passA": true,
   "predB": null,
   "measB": 2.24,
   "passB": true,
   "predC": null,
   "measC": 0.04,
   "passC": false
  },
  {
   "id": "centroid",
   "label": "Центроид вокала, Гц",
   "priority": "info",
   "target": 3600,
   "direction": ">=",
   "targ": 3853,
   "v0": null,
   "v1": 3215.0,
   "v2": 3793.0,
   "predA": null,
   "measA": 3710.0,
   "passA": true,
   "predB": null,
   "measB": 3143.0,
   "passB": false,
   "predC": null,
   "measC": 3180.0,
   "passC": false
  },
  {
   "id": "registerSpread",
   "label": "Разброс медиан фраз (10–90 перц.), полутона",
   "priority": "info",
   "target": 10.0,
   "direction": ">=",
   "targ": 12.0,
   "v0": null,
   "v1": 7.2,
   "v2": 11.8,
   "predA": null,
   "measA": 7.2,
   "passA": false,
   "predB": null,
   "measB": 8.6,
   "passB": false,
   "predC": null,
   "measC": 7.3,
   "passC": false
  },
  {
   "id": "lowRegisterShare",
   "label": "Доля фраз в речевом регистре (< MIDI 58)",
   "priority": "info",
   "target": 0.14,
   "direction": ">=",
   "targ": 0.16,
   "v0": null,
   "v1": 0.083,
   "v2": 0.19,
   "predA": null,
   "measA": 0.071,
   "passA": false,
   "predB": null,
   "measB": 0.0,
   "passB": false,
   "predC": null,
   "measC": 0.1,
   "passC": false
  },
  {
   "id": "sustained05",
   "label": "Нот ≥ 0,5 с (долгие ноты желательны)",
   "priority": "info",
   "target": 10,
   "direction": "<=",
   "targ": 8,
   "v0": null,
   "v1": 20,
   "v2": 11,
   "predA": null,
   "measA": 16,
   "passA": false,
   "predB": null,
   "measB": 12,
   "passB": false,
   "predC": null,
   "measC": 15,
   "passC": false
  },
  {
   "id": "sustainedTimeShare",
   "label": "Доля голосового времени в нотах ≥ 0,5 с",
   "priority": "info",
   "target": 0.09,
   "direction": "<=",
   "targ": 0.085,
   "v0": null,
   "v1": 0.146,
   "v2": 0.118,
   "predA": null,
   "measA": 0.146,
   "passA": false,
   "predB": null,
   "measB": 0.094,
   "passB": false,
   "predC": null,
   "measC": 0.134,
   "passC": false
  },
  {
   "id": "heldNonFocus",
   "label": "Слов ≥ 0,9 с вне фокуса фразы",
   "priority": "info",
   "target": 10,
   "direction": "<=",
   "targ": 9,
   "v0": null,
   "v1": 30,
   "v2": 8,
   "predA": null,
   "measA": 34,
   "passA": false,
   "predB": null,
   "measB": 37,
   "passB": false,
   "predC": null,
   "measC": 17,
   "passC": false
  },
  {
   "id": "lra",
   "label": "LRA short-term, LU",
   "priority": "info",
   "target": 5.0,
   "direction": "<=",
   "targ": 4.3,
   "v0": null,
   "v1": 6.26,
   "v2": 4.26,
   "predA": null,
   "measA": 6.07,
   "passA": false,
   "predB": null,
   "measB": 5.84,
   "passB": false,
   "predC": null,
   "measC": 5.76,
   "passC": false
  },
  {
   "id": "careSeconds",
   "label": "Блок ухода, с",
   "priority": "info",
   "target": 20.0,
   "direction": "<=",
   "targ": 14.6,
   "v0": null,
   "v1": 25.04,
   "v2": null,
   "predA": null,
   "measA": null,
   "passA": null,
   "predB": null,
   "measB": null,
   "passB": null,
   "predC": null,
   "measC": null,
   "passC": null
  },
  {
   "id": "careRate",
   "label": "Блок ухода, слог/с",
   "priority": "info",
   "target": 3.6,
   "direction": "<=",
   "targ": 3.08,
   "v0": null,
   "v1": 4.07,
   "v2": null,
   "predA": null,
   "measA": null,
   "passA": null,
   "predB": null,
   "measB": null,
   "passB": null,
   "predC": null,
   "measC": null,
   "passC": null
  },
  {
   "id": "codaRate",
   "label": "Кода, слог/с",
   "priority": "info",
   "target": 3.2,
   "direction": "<=",
   "targ": 1.8,
   "v0": null,
   "v1": 3.39,
   "v2": 3.41,
   "predA": null,
   "measA": 1.75,
   "passA": true,
   "predB": null,
   "measB": 1.5,
   "passB": true,
   "predC": null,
   "measC": 2.52,
   "passC": true
  },
  {
   "id": "instrumentalSpans",
   "label": "Инструментальных промежутков ≥ 1 с (без хвоста)",
   "priority": "info",
   "target": 3,
   "direction": "<=",
   "targ": 0,
   "v0": null,
   "v1": 5,
   "v2": 3,
   "predA": null,
   "measA": 22,
   "passA": false,
   "predB": null,
   "measB": 16,
   "passB": false,
   "predC": null,
   "measC": 5,
   "passC": false
  },
  {
   "id": "rateCV",
   "label": "CV скорости подачи по фразам (старый расчёт)",
   "priority": "info",
   "target": 0.35,
   "direction": ">=",
   "targ": 0.39,
   "v0": null,
   "v1": 0.275,
   "v2": 0.199,
   "predA": null,
   "measA": 0.272,
   "passA": false,
   "predB": null,
   "measB": 0.2,
   "passB": false,
   "predC": null,
   "measC": 0.226,
   "passC": false
  },
  {
   "id": "thirds",
   "label": "Терции среди интервалов нот",
   "priority": "info",
   "target": 0.18,
   "direction": ">=",
   "targ": 0.24,
   "v0": null,
   "v1": 0.101,
   "v2": 0.166,
   "predA": null,
   "measA": 0.128,
   "passA": false,
   "predB": null,
   "measB": 0.128,
   "passB": false,
   "predC": null,
   "measC": 0.093,
   "passC": false
  },
  {
   "id": "fallingEnds",
   "label": "Падающих окончаний фраз",
   "priority": "info",
   "target": 0.42,
   "direction": "<=",
   "targ": 0.39,
   "v0": null,
   "v1": 0.433,
   "v2": 0.345,
   "predA": null,
   "measA": 0.286,
   "passA": true,
   "predB": null,
   "measB": 0.431,
   "passB": false,
   "predC": null,
   "measC": 0.45,
   "passC": false
  },
  {
   "id": "duration",
   "label": "Длительность, с (свободная переменная)",
   "priority": "info",
   "target": 260.0,
   "direction": "<=",
   "targ": 194.489,
   "v0": 197.726,
   "v1": 203.240998,
   "v2": 197.1,
   "predA": 256.5,
   "measA": 228.02,
   "passA": true,
   "predB": 250.8,
   "measB": 233.17,
   "passB": true,
   "predC": 257.3,
   "measC": 201.06,
   "passC": true
  }
 ],
 "contour": {
  "A": {
   "chorusLift": 4.4,
   "climax": {
    "planned": "ch3",
    "measured": "ch1",
    "p90": 72.0,
    "ok": false
   },
   "stepMatch": 0.341,
   "codaSettles": {
    "coda": 60.0,
    "chorus": 66.9,
    "ok": true
   },
   "sections": [
    {
     "id": "v1",
     "kind": "verse",
     "title": "Зустріч",
     "plannedShape": "rise",
     "climaxPhrase": null,
     "measuredMedian": 60.0,
     "measuredP90": 69.0,
     "sylPerSungSec": 2.61,
     "rests": 3,
     "plannedRests": 6
    },
    {
     "id": "pc",
     "kind": "prechorus",
     "title": "Слід",
     "plannedShape": "level",
     "climaxPhrase": null,
     "measuredMedian": 65.1,
     "measuredP90": 69.0,
     "sylPerSungSec": 2.38,
     "rests": 0,
     "plannedRests": 3
    },
    {
     "id": "v2",
     "kind": "verse",
     "title": "Крамниця",
     "plannedShape": "arch",
     "climaxPhrase": null,
     "measuredMedian": 65.0,
     "measuredP90": 69.0,
     "sylPerSungSec": 2.67,
     "rests": 2,
     "plannedRests": 5
    },
    {
     "id": "ch1",
     "kind": "chorus",
     "title": "Дзеркало I",
     "plannedShape": "peak",
     "climaxPhrase": "p17",
     "measuredMedian": 65.0,
     "measuredP90": 72.0,
     "sylPerSungSec": 2.63,
     "rests": 1,
     "plannedRests": 5
    },
    {
     "id": "v3",
     "kind": "verse",
     "title": "Лариса",
     "plannedShape": "arch",
     "climaxPhrase": "p22",
     "measuredMedian": 59.9,
     "measuredP90": 69.0,
     "sylPerSungSec": 3.26,
     "rests": 1,
     "plannedRests": 6
    },
    {
     "id": "v4",
     "kind": "verse",
     "title": "Банка",
     "plannedShape": "level",
     "climaxPhrase": null,
     "measuredMedian": 62.5,
     "measuredP90": 69.0,
     "sylPerSungSec": 2.61,
     "rests": 2,
     "plannedRests": 4
    },
    {
     "id": "v5",
     "kind": "verse",
     "title": "Три тижні",
     "plannedShape": "rise",
     "climaxPhrase": null,
     "measuredMedian": 61.5,
     "measuredP90": 69.0,
     "sylPerSungSec": 2.51,
     "rests": 0,
     "plannedRests": 2
    },
    {
     "id": "ch2",
     "kind": "chorus",
     "title": "Дзеркало II",
     "plannedShape": "peak",
     "climaxPhrase": "p34",
     "measuredMedian": 66.9,
     "measuredP90": 70.8,
     "sylPerSungSec": 2.48,
     "rests": 1,
     "plannedRests": 4
    },
    {
     "id": "br",
     "kind": "bridge",
     "title": "Червень",
     "plannedShape": "level",
     "climaxPhrase": null,
     "measuredMedian": 65.0,
     "measuredP90": 71.5,
     "sylPerSungSec": 2.52,
     "rests": 3,
     "plannedRests": 5
    },
    {
     "id": "ch3",
     "kind": "chorus",
     "title": "Дзеркало III",
     "plannedShape": "peak",
     "climaxPhrase": "p44",
     "measuredMedian": 67.0,
     "measuredP90": 69.9,
     "sylPerSungSec": 2.67,
     "rests": 1,
     "plannedRests": 3
    },
    {
     "id": "coda",
     "kind": "coda",
     "title": "Ґоу П’юр",
     "plannedShape": "fall",
     "climaxPhrase": null,
     "measuredMedian": 60.0,
     "measuredP90": 60.2,
     "sylPerSungSec": 3.21,
     "rests": 5,
     "plannedRests": 6
    }
   ]
  },
  "B": {
   "chorusLift": 0.1,
   "climax": {
    "planned": "br",
    "measured": "br",
    "p90": 73.9,
    "ok": true
   },
   "stepMatch": 0.34,
   "codaSettles": {
    "coda": 62.5,
    "chorus": 65.1,
    "ok": true
   },
   "sections": [
    {
     "id": "v1",
     "kind": "verse",
     "title": "Зустріч",
     "plannedShape": "rise",
     "climaxPhrase": null,
     "measuredMedian": 65.0,
     "measuredP90": 72.0,
     "sylPerSungSec": 2.86,
     "rests": 2,
     "plannedRests": 6
    },
    {
     "id": "r1",
     "kind": "refrain",
     "title": "Рефрен I",
     "plannedShape": "arch",
     "climaxPhrase": "p07",
     "measuredMedian": 65.1,
     "measuredP90": 72.0,
     "sylPerSungSec": 2.25,
     "rests": 1,
     "plannedRests": 4
    },
    {
     "id": "v2",
     "kind": "verse",
     "title": "Крамниця",
     "plannedShape": "arch",
     "climaxPhrase": null,
     "measuredMedian": 64.8,
     "measuredP90": 69.0,
     "sylPerSungSec": 2.98,
     "rests": 3,
     "plannedRests": 6
    },
    {
     "id": "v3",
     "kind": "verse",
     "title": "Машина",
     "plannedShape": "fall",
     "climaxPhrase": null,
     "measuredMedian": 66.0,
     "measuredP90": 70.0,
     "sylPerSungSec": 2.84,
     "rests": 0,
     "plannedRests": 4
    },
    {
     "id": "r2",
     "kind": "refrain",
     "title": "Рефрен II",
     "plannedShape": "arch",
     "climaxPhrase": "p21",
     "measuredMedian": 63.5,
     "measuredP90": 67.1,
     "sylPerSungSec": 2.83,
     "rests": 1,
     "plannedRests": 2
    },
    {
     "id": "v4",
     "kind": "verse",
     "title": "Лариса",
     "plannedShape": "arch",
     "climaxPhrase": "p25",
     "measuredMedian": 67.0,
     "measuredP90": 72.0,
     "sylPerSungSec": 2.72,
     "rests": 0,
     "plannedRests": 6
    },
    {
     "id": "v5",
     "kind": "verse",
     "title": "Банка",
     "plannedShape": "level",
     "climaxPhrase": null,
     "measuredMedian": 63.5,
     "measuredP90": 72.0,
     "sylPerSungSec": 2.75,
     "rests": 0,
     "plannedRests": 4
    },
    {
     "id": "v6",
     "kind": "verse",
     "title": "Зміна",
     "plannedShape": "rise",
     "climaxPhrase": null,
     "measuredMedian": 65.0,
     "measuredP90": 70.0,
     "sylPerSungSec": 2.7,
     "rests": 1,
     "plannedRests": 5
    },
    {
     "id": "r3",
     "kind": "refrain",
     "title": "Рефрен III",
     "plannedShape": "peak",
     "climaxPhrase": "p39",
     "measuredMedian": 65.5,
     "measuredP90": 69.6,
     "sylPerSungSec": 3.01,
     "rests": 1,
     "plannedRests": 2
    },
    {
     "id": "br",
     "kind": "bridge",
     "title": "Червень і своя",
     "plannedShape": "peak",
     "climaxPhrase": "p46",
     "measuredMedian": 66.0,
     "measuredP90": 73.9,
     "sylPerSungSec": 2.42,
     "rests": 3,
     "plannedRests": 7
    },
    {
     "id": "coda",
     "kind": "coda",
     "title": "Ґоу П’юр",
     "plannedShape": "fall",
     "climaxPhrase": null,
     "measuredMedian": 62.5,
     "measuredP90": 70.0,
     "sylPerSungSec": 2.48,
     "rests": 5,
     "plannedRests": 6
    }
   ]
  },
  "C": {
   "chorusLift": null,
   "climax": {
    "planned": "s8",
    "measured": "s7",
    "p90": 72.5,
    "ok": false
   },
   "stepMatch": 0.322,
   "codaSettles": null,
   "sections": [
    {
     "id": "s1",
     "kind": "verse",
     "title": "Зустріч",
     "plannedShape": "level",
     "climaxPhrase": null,
     "measuredMedian": 60.0,
     "measuredP90": 65.1,
     "sylPerSungSec": 3.63,
     "rests": 0,
     "plannedRests": 9
    },
    {
     "id": "s2",
     "kind": "verse",
     "title": "Слід і крамниця",
     "plannedShape": "level",
     "climaxPhrase": null,
     "measuredMedian": 65.0,
     "measuredP90": 72.0,
     "sylPerSungSec": 3.25,
     "rests": 0,
     "plannedRests": 8
    },
    {
     "id": "s3",
     "kind": "verse",
     "title": "Жалість і машина",
     "plannedShape": "level",
     "climaxPhrase": null,
     "measuredMedian": 65.0,
     "measuredP90": 70.1,
     "sylPerSungSec": 3.49,
     "rests": 0,
     "plannedRests": 6
    },
    {
     "id": "s4",
     "kind": "verse",
     "title": "Лариса",
     "plannedShape": "level",
     "climaxPhrase": "p31",
     "measuredMedian": 65.0,
     "measuredP90": 72.1,
     "sylPerSungSec": 4.42,
     "rests": 1,
     "plannedRests": 7
    },
    {
     "id": "s5",
     "kind": "verse",
     "title": "Банка",
     "plannedShape": "level",
     "climaxPhrase": null,
     "measuredMedian": 64.7,
     "measuredP90": 70.0,
     "sylPerSungSec": 3.69,
     "rests": 0,
     "plannedRests": 5
    },
    {
     "id": "s6",
     "kind": "verse",
     "title": "Зміна",
     "plannedShape": "level",
     "climaxPhrase": "p41",
     "measuredMedian": 65.0,
     "measuredP90": 70.6,
     "sylPerSungSec": 3.83,
     "rests": 0,
     "plannedRests": 8
    },
    {
     "id": "s7",
     "kind": "bridge",
     "title": "Червень",
     "plannedShape": "level",
     "climaxPhrase": null,
     "measuredMedian": 65.0,
     "measuredP90": 72.5,
     "sylPerSungSec": 3.54,
     "rests": 0,
     "plannedRests": 7
    },
    {
     "id": "s8",
     "kind": "verse",
     "title": "Своя",
     "plannedShape": "level",
     "climaxPhrase": "p54",
     "measuredMedian": 65.0,
     "measuredP90": 70.0,
     "sylPerSungSec": 3.07,
     "rests": 0,
     "plannedRests": 3
    },
    {
     "id": "s9",
     "kind": "coda",
     "title": "Ґоу П’юр",
     "plannedShape": "level",
     "climaxPhrase": null,
     "measuredMedian": 60.0,
     "measuredP90": 65.1,
     "sylPerSungSec": 2.52,
     "rests": 2,
     "plannedRests": 6
    }
   ]
  }
 },
 "rounds": [
  {
   "tag": "A1a",
   "variant": "A",
   "params": "AW=0.35 SW=0.75 WC=0.15",
   "status": "SUCCESS",
   "takes": "take_A1a_1 214.824s; take_A1a_2 224.424s",
   "gates": "take_A1a_1: 7/17, P0 fail 3 (restBoundaryShare, maxSectionRate, codaFactsRested); rate 2.67, rests 0.333, hook 3, coda 3; take_A1a_2: 6/17, P0 fail 3 (asrLineMatch, restBoundaryShare, maxSectionRate); rate 2.48, rests 0.354, hook 3, coda 6",
   "note": ""
  },
  {
   "tag": "A2a",
   "variant": "A",
   "params": "AW=0.35 SW=0.75 WC=0.15",
   "status": "SUCCESS",
   "takes": "take_A2a_1 209.64s; take_A2a_2 217.224s",
   "gates": "take_A2a_1: 8/17, P0 fail 3 (restBoundaryShare, maxSectionRate, codaFactsRested); rate 2.74, rests 0.271, hook 3, coda 3; take_A2a_2: 7/17, P0 fail 4 (asrLineMatch, restBoundaryShare, maxSectionRate, sungRate); rate 2.95, rests 0.25, hook 3, coda 6",
   "note": ""
  },
  {
   "tag": "A2b",
   "variant": "A",
   "params": "AW=0.35 SW=0.75 WC=0.15",
   "status": "SUCCESS",
   "takes": "take_A2b_1 230.832s; take_A2b_2 188.424s",
   "gates": "take_A2b_1: 6/17, P0 fail 5 (asrLineMatch, restBoundaryShare, maxSectionRate, sungRate, codaFactsRested); rate 2.98, rests 0.292, hook 3, coda 4; take_A2b_2: 6/17, P0 fail 5 (asrLineMatch, restBoundaryShare, maxSectionRate, sungRate, codaFactsRested); rate 3.66, rests 0.104, hook 3, coda 5",
   "note": ""
  },
  {
   "tag": "A2c",
   "variant": "A",
   "params": "AW=0.35 SW=0.75 WC=0.15",
   "status": "SUCCESS",
   "takes": "take_A2c_1 219.24s; take_A2c_2 217.224s",
   "gates": "take_A2c_1: 6/17, P0 fail 3 (restBoundaryShare, maxSectionRate, codaFactsRested); rate 2.65, rests 0.438, hook 3, coda 5; take_A2c_2: 8/17, P0 fail 2 (restBoundaryShare, codaFactsRested); rate 2.65, rests 0.312, hook 3, coda 4",
   "note": ""
  },
  {
   "tag": "B1a",
   "variant": "B",
   "params": "AW=0.40 SW=0.70 WC=0.20",
   "status": "SUCCESS",
   "takes": "take_B1a_1 194.04s; take_B1a_2 222.024s",
   "gates": "take_B1a_1: 6/17, P0 fail 4 (restBoundaryShare, maxSectionRate, sungRate, codaFactsRested); rate 3.14, rests 0.196, hook 3, coda 2; take_B1a_2: 9/17, P0 fail 2 (restBoundaryShare, codaFactsRested); rate 2.65, rests 0.275, hook 3, coda 4",
   "note": ""
  },
  {
   "tag": "B2a",
   "variant": "B",
   "params": "AW=0.40 SW=0.70 WC=0.20",
   "status": "SUCCESS",
   "takes": "take_B2a_1 183.192s; take_B2a_2 212.832s",
   "gates": "take_B2a_1: 6/17, P0 fail 4 (restBoundaryShare, maxSectionRate, sungRate, codaFactsRested); rate 3.16, rests 0.157, hook 3, coda 3; take_B2a_2: 7/17, P0 fail 4 (restBoundaryShare, maxSectionRate, sungRate, codaFactsRested); rate 2.82, rests 0.098, hook 3, coda 3",
   "note": ""
  },
  {
   "tag": "C1a",
   "variant": "C",
   "params": "AW=0.60 SW=0.55 WC=0.10",
   "status": "SUCCESS",
   "takes": "take_C1a_1 197.232s; take_C1a_2 201.072s",
   "gates": "take_C1a_1: 4/17, P0 fail 5 (restBoundaryShare, maxSectionRate, sungRate, hookReturns, codaFactsRested); rate 3.49, rests 0.172, hook 0, coda 3; take_C1a_2: 4/17, P0 fail 5 (restBoundaryShare, maxSectionRate, sungRate, hookReturns, codaFactsRested); rate 3.5, rests 0.052, hook 0, coda 3",
   "note": ""
  }
 ],
 "credits": [
  {
   "at": "2026-09-17T03:52:24.692533+00:00",
   "tag": "session-start",
   "kind": "balance",
   "creditsBefore": null,
   "creditsAfter": 121140.56,
   "consumed": 0,
   "status": "balance at the start of song iteration 3; ceiling for this session 400 credits"
  },
  {
   "at": "2026-09-17T07:27:07.526903+00:00",
   "tag": "B1a",
   "kind": "suno-v6-cover",
   "creditsBefore": 108946.11,
   "creditsAfter": 108774.11,
   "consumed": 172.0,
   "status": "SUCCESS"
  },
  {
   "at": "2026-09-17T07:27:16.307885+00:00",
   "tag": "A1a",
   "kind": "suno-v6-cover",
   "creditsBefore": 108946.11,
   "creditsAfter": 108774.11,
   "consumed": 172.0,
   "status": "SUCCESS"
  },
  {
   "at": "2026-09-17T07:27:20.778545+00:00",
   "tag": "C1a",
   "kind": "suno-v6-cover",
   "creditsBefore": 109009.11,
   "creditsAfter": 108690.11,
   "consumed": 319.0,
   "status": "SUCCESS"
  },
  {
   "at": "2026-09-17T07:57:09.949780+00:00",
   "tag": "A2a",
   "kind": "suno-v6-cover",
   "creditsBefore": 104057.11,
   "creditsAfter": 103716.11,
   "consumed": 341.0,
   "status": "SUCCESS"
  },
  {
   "at": "2026-09-17T07:57:53.576741+00:00",
   "tag": "A2b",
   "kind": "suno-v6-cover",
   "creditsBefore": 104057.11,
   "creditsAfter": 103532.11,
   "consumed": 525.0,
   "status": "SUCCESS"
  },
  {
   "at": "2026-09-17T07:58:40.113315+00:00",
   "tag": "B2a",
   "kind": "suno-v6-cover",
   "creditsBefore": 104057.11,
   "creditsAfter": 103437.81,
   "consumed": 619.3,
   "status": "SUCCESS"
  },
  {
   "at": "2026-09-17T08:17:57.159922+00:00",
   "tag": "A2c",
   "kind": "suno-v6-cover",
   "creditsBefore": 100493.81,
   "creditsAfter": 100481.81,
   "consumed": 12.0,
   "status": "SUCCESS"
  }
 ],
 "reviews": [
  {
   "name": "composition-v01",
   "status": "returned",
   "files": [
    "evaluation.json",
    "receipt.json",
    "inputs.json",
    "request.json",
    "adjudication-B-v01.json",
    "adjudication-A-v01.json",
    "adjudication-C-v01.json"
   ]
  },
  {
   "name": "p1-mentor-A-pairs-v01",
   "status": "returned",
   "files": [
    "evaluation.json",
    "receipt.json",
    "inputs.json",
    "request.json"
   ]
  },
  {
   "name": "p1-mentor-A-pairs2-v01",
   "status": "returned",
   "files": [
    "evaluation.json",
    "receipt.json",
    "inputs.json",
    "request.json"
   ]
  },
  {
   "name": "p1-mentor-B-final-v01",
   "status": "returned",
   "files": [
    "evaluation.json",
    "receipt.json",
    "inputs.json",
    "request.json"
   ]
  },
  {
   "name": "p3-coda-A-pairs-v01",
   "status": "returned",
   "files": [
    "evaluation.json",
    "receipt.json",
    "inputs.json",
    "request.json"
   ]
  },
  {
   "name": "p3-coda-A-pairs2-v01",
   "status": "returned",
   "files": [
    "evaluation.json",
    "receipt.json",
    "inputs.json",
    "request.json"
   ]
  },
  {
   "name": "p3-coda-B-final-v01",
   "status": "returned",
   "files": [
    "evaluation.json",
    "receipt.json",
    "inputs.json",
    "request.json"
   ]
  },
  {
   "name": "whole-A-final-v01",
   "status": "returned",
   "files": [
    "evaluation.json",
    "receipt.json",
    "inputs.json",
    "request.json"
   ]
  },
  {
   "name": "whole-A-pairs-v01",
   "status": "returned",
   "files": [
    "evaluation.json",
    "receipt.json",
    "inputs.json",
    "request.json"
   ]
  },
  {
   "name": "whole-B-final-v01",
   "status": "returned",
   "files": [
    "evaluation.json",
    "receipt.json",
    "inputs.json",
    "request.json"
   ]
  },
  {
   "name": "whole-r1-v01",
   "status": "no-returned-receipt",
   "files": []
  },
  {
   "name": "whole-r1b-v01",
   "status": "returned",
   "files": [
    "evaluation.json",
    "receipt.json",
    "inputs.json",
    "request.json"
   ]
  }
 ],
 "changes": [
  {
   "aspect": "Текст и бюджет",
   "before": "665 слогов, 59 фраз, каждая мысль на часах Targ; второй половине не хватало пауз",
   "changed": "39 мыслей → 50–52 фраз, 536–537 слогов (бюджет 520 + 3 %), одна мысль — одна фраза, пауза после каждой; две панели опровергателей (native, advertorial), композиционный обзор A/B/C против v2",
   "heard": "см. строки restBoundaryShare, sungRate, maxSectionRate"
  },
  {
   "aspect": "Форма и хук",
   "before": "нет припева, нет возвращающейся строки",
   "changed": "A: припев с хуком «Я дивлюсь у дзеркало — і бачу …» (чужу → світло → себе); B: рефрен-вопрос «Дивлюсь на себе — і що я бачу?» с тремя ответами; C: без хука (контроль)",
   "heard": "см. hookReturns и слепой вердикт «song, not narration»"
  },
  {
   "aspect": "Кода",
   "before": "6 фактов за 15 с при 3,3 слог/с; 0/6 с паузой после",
   "changed": "[Outro — half-time]: бренд, форма (ім’я й телефон), осмотр, оплата после осмотра, 60 днів, ссылка — каждый в своей фразе с паузой",
   "heard": "см. codaFactsRested и вопрос рецензентам о разборчивости коды"
  },
  {
   "aspect": "Контур",
   "before": "таблица регистров Targ как авторитет",
   "changed": "formPlan.contour по секциям (rise/arch/peak/fall) и шаг up/down/same по фразам; кульминация в третьем припеве (A) / в мосту (B)",
   "heard": "см. chorusLift, climaxPlacement, contourStepMatch"
  },
  {
   "aspect": "Сид и темп",
   "before": "cover Targ при audioWeight 0,88–0,90 → 103,4 BPM и 192–203 с во всех дублях v0–v2",
   "changed": "cover Targ при AW 0,35 (A, 92 BPM баллада) / 0,40 (B, 112 BPM фолк-поп) / 0,60 (C, 96 BPM); темп и длительность свободны",
   "heard": "см. измеренный темп и длительность дублей"
  },
  {
   "aspect": "Гейты",
   "before": "17 Targ-относительных строк; sustained/held/duration наказывали пение",
   "changed": "таблица дыхания P0/P1 (tools/song_breathing.py); старые строки — info; ledger ударений: исправлен унаследованный кисло́ти → ки́слоти",
   "heard": "см. таблицу тренда"
  }
 ],
 "open": [
  "restBoundaryShare: ни один дубль не достиг 0,80 — лучшие 0,27–0,35 (версия 2: 0,07); провайдер поёт легато, три раскладки текста (строфа, куплет с многоточием, [Pause]) — см. таблицу раундов; цель остаётся открытой гипотезой H2, слепые рецензенты при этом слышат паузы на уровне строф (6–7 в минуту) и называют кандидатов песнями, которые дышат.",
  "Слепые рецензенты расходятся о «song, not narration» для A против v2: два обзора (r1b, A-final) ставят A выше v2, третий (A-pairs) — v2 выше за «драйв», при этом все три называют A «дышит лучше всех»; для B оба обзора ставят B выше v2.",
  "codaFactsRested: в сырых дублях 3–6 из 6; в принятых кандидатах — за счёт правки того же дубля (такт музыки без голоса после каждого факта), раскрытой в провенансе и рецензентам.",
  "climaxPlacement (A): самая высокая фраза — в первом припеве, а не в третьем; лифт припева +4,4 st есть.",
  "chorusLift (B): рефрен-вопрос сидит на высоте куплетов (+0,2 st) — поднимается только его конец.",
  "Темп: cover при audioWeight 0,35 сохранил 103,4 BPM Targ (A), при 0,40 — 107,7 (B); форма и длина освободились, темп — нет.",
  "Панель текста: четыре агента-лирика превысили лимит вывода; текст — судья + опровергатели + режиссёр; бюджет 520 → 536 после правок опровергателей.",
  "Все прослушивания — модельные; оценка владельца не получена."
 ],
 "limitations": [
  "Все прослушивания — модельные (Gemini 3.8 Flash, 56 kbps mono для целых песен); слух владельца решает.",
  "Строки таблицы — оценки на стемах Demucs, ASR-часах (±0,25 с) и медианах высоты pYIN (±1 полутон); они отсеивают дубли, не принимают их.",
  "Панель текста: четыре агента-лирика первого прогона превысили лимит вывода; судья работал с эскизом режиссёра, опровергатели — с судейским и с финальным текстом; финальные правки — решения режиссёра, задокументированные в adjudication.",
  "Cover Suno при низком audioWeight — новый режим для проекта; первый раунд измеряет, следует ли темп и длина за стилем, а не за сидом."
 ],
 "verification": [
  "tools/verify_song_v3_report.py --full: каждый опубликованный файл по SHA256, HTTP 206 на медиа (см. verification/report-v01.json)",
  "tools/verify_song_v3_browser.mjs: десктоп и мобильный рендер / и /plan/, загрузка метаданных всех плееров и перемотка (verification/report-v01-browser.json)",
  "python3 -m unittest tests.test_song_breathing tests.test_form_plan tests.test_performance_plan tests.test_music_first",
  "music_first.validate_performed на каждом принятом паспорте (song/performed-song-check-*-v01.json)"
 ],
 "planRevisions": [
  {
   "version": "v01.3",
   "at": "2026-09-17T08:45Z",
   "change": "После раунда 1: (1) детектор пауз исправлен — часы слов faster-whisper непрерывны (конец слова = начало следующего), поэтому паузы измеряются только по вокальному стему (порог −40 dB, окно от −0,6 с до +1,2 с вокруг границы); базовая строка v2 пересчитана (0,03 → 0,07); (2) сид при audioWeight 0,35 освободил форму и длину (215–224 с), но не темп (103,4 BPM = Targ); при 0,60 (контроль) — ни того, ни другого; (3) три гипотезы раскладки текста для пауз (строфа на мысль, куплеты с многоточием, тег [Pause]) куплены как раунд 2; (4) паузы после фактов коды добавляются правкой того же дубля (такт музыки без голоса после каждого факта) с раскрытым провенансом."
  },
  {
   "version": "v01.2",
   "at": "2026-09-17T06:40Z",
   "change": "Бюджет слогов A 480 → 520 и B 460 → 520 решением режиссёра: опровергатели (native, advertorial) показали, что срез до 480 удалял причинные связки (крамниця, «щодня бачила», «все підряд», «підійшла», «залиш», «сіла»), а не под-детали; плотность на такт в модели не меняется, растёт только спетый интервал (прогноз длительности A ≈ 250 с при 90 BPM — темп A поднят до 92 в STYLE)."
  },
  {
   "version": "v01.1",
   "at": "2026-09-17T04:00Z",
   "change": "Строка noFragmentation: пороги уточнены при реализации tools/song_breathing.py — «ответ» после строки считается от 2 с (пауза 0,6–1,5 с между мыслями желательна и не может быть флагом), доля фраз ≤ 2 слов ≤ 15 % (запланированные односложные ответы рефрена в B и короткие факты коды легитимны)."
  }
 ],
 "planUrl": "/plan/",
 "v2Gates": {
  "path": "/workspaces/UGS/AdFactorySongFormat/trees/08f0d414c5/runs/targ-song-v3-08f0d414c5-v01/song/gates/baseline-v2-master.gates.json",
  "passed": 4,
  "total": 17,
  "p0Failed": [
   "restBoundaryShare",
   "maxSectionRate",
   "sungRate",
   "hookReturns",
   "codaFactsRested"
  ]
 }
}
