# 08 — Formato de saída > **Escopo:** O JSON de entrega: estrutura, regras e como o programa trata erros. > **Quando:** Fase 8 — ver a ordem de trabalho em `../SKILL.md`. O produto do seu trabalho é **este JSON**. É ele que vai para o programa gerar o FCPXML. Você nunca escreve XML. ## Estrutura ```json { "source": "0E6A8290.mp4", "actions": [ {"kind": "cut", "start": 21.9, "end": 127.6, "reason": "tomadas descartadas, frases interrompidas e conversa com a equipe"}, {"kind": "zoom", "start": 2.0, "end": 10.7, "params": {"scale": 1.15}, "reason": "abertura: \"Aquela mama\" (ênfase 0.42)"}, {"kind": "text", "start": 127.7, "end": 129.0, "params": {"content": "MASTOPEXIA"}, "reason": "fixa o termo central"}, {"kind": "marker", "start": 21.85, "end": 22.0, "reason": "EMENDA 1 — conferir junção entre tomadas"} ] } ``` ## Regras ### 1. Tempos em segundos da mídia ORIGINAL Exatamente como aparecem no `voice_timeline.json`. **Nunca compense para "depois do corte".** O programa faz esse deslocamento sozinho: ele resolve os cortes primeiro e reposiciona todo o resto. Se você compensar por conta própria, **todo destaque cai no frame errado** — e o erro é silencioso. ### 2. `end` sempre maior que `start` Ambos ≥ 0. Um `end <= start` é rejeitado. ### 3. Tipos `cut` · `zoom` · `text` · `marker` ### 4. Parâmetros por tipo | Tipo | `params` | |---|---| | `cut` | nenhum | | `zoom` | `scale` entre 1.0 e 3.0 (padrão 1.3 se omitido) | | `text` | `content` **obrigatório**, até 120 caracteres | | `marker` | opcional: `content` vira o nome do marcador | ### 5. `reason` — sempre preencha É o que o usuário lê para revisar sua decisão, e o que te obriga a **ter** uma. Um `reason` vazio é sinal de decisão sem critério. Inclua o dado que embasou: *"abertura: 'Aquela mama' (ênfase 0.42)"* é útil; *"zoom"* não é. Não é campo de log: o texto é **exibido na tela de revisão**, ao lado da frase, e é o que o editor lê antes de manter ou desfazer o que você decidiu. ### 6. Corte: alinhe à intenção A tela lê cada `cut` contra as frases da transcrição: - cobre **≥ 60%** de uma frase → aquela frase é **removida**; - toca só o **começo** ou só o **fim** → vira **trim** (a frase fica, aparada). Então corte a frase **inteira** quando quiser removê-la, e corte **só da borda até a palavra** quando quiser aparar uma hesitação. Um corte de meia frase é ambíguo — passa de 60% e apaga a linha toda. Detalhe: `10-revisao-humana.md`. ## Como o programa trata erros - **Ação inválida** → rejeitada e reportada **individualmente**. Uma linha malformada nunca derruba as outras. - **Ação apontando para material cortado** → descartada e reportada, nunca deslizada para o conteúdo vizinho. - **Ação fora da mídia** → reportada como não colocada. Você recebe o relatório dos três casos. **Repasse ao usuário** — nunca relate só os acertos.