Índice de Erros (Sintoma → Localização da Correção)
Regra: Cada erro é arquivado após correção e inspeção visual humana. Correções com skill profissional associado são escritas nesse skill, aqui fica apenas o ponteiro; correções sem skill próprio (fluxo de engenharia/pipe de renderização) podem ter a correção curta inline (para ver a correção de um relance, sem pulo), mas com mais de cinco linhas deve ser movida para um arquivo profissional e depois alterada de volta para ponteiro. Este arquivo não deve ultrapassar 150 linhas; se ultrapassar, mova a correção inline mais longa primeiro.
Navegação por Família (Primeiro identifique a família, depois consulte o item, evite pular entre itens parentes próximos):
- Família de Renderização Travada/Suspensa/Desaparecida: Primeiro execute o autoteste inicial
render-service.cjs(a partir de 2026-07-24, ele intercepta automaticamente #37 volume public, #38 falha de assinatura, chrome não abre e usa o Chrome do sistema como fallback); se o autoteste passar e ainda travar → siga para #23 deadlock de concorrência → #25 dataless → #26 coleta do harness → #24 pacote npm corrompido. - Família de Falso Positivo QC: #29 caixa fantasma (portão null) / #31 fonte inchada na inicialização a frio (isenção qcAllow) / #32 caixa Place estica altura (inspeção visual, liberar como falso); QC reportar "zero violações" primeiro verifique a cobertura (#35).
| # | Categoria | Sintoma | Localização da Correção |
|---|---|---|---|
| 01 | Renderização | Chinês muda silenciosamente para Song / funciona às vezes, às vezes não | remotion-design-system §6 #01 (fonts.ts + FontGuard) |
| 02 | Fluxo de Engenharia | remotion still sai 〇, a imagem não muda após alterar o código | remotion-design-system §6 #02 |
| 03 | Fluxo de Engenharia | Imagem de comparação em miniatura julga erroneamente detalhes de fonte | remotion-design-system §6 #03 |
| 04 | Renderização | \uXXXX em propriedades JSX aparece literalmente (ex.: icon="✅") | remotion-design-system §6 #04 |
| 05 | Design | A réplica do placeholder desenhado pelo componente "parece bem diferente" | remotion-design-system §0 Regra de Ferro 4 (material real como corpo principal) |
| 06 | Renderização | Texto gradiente com backgroundClip:text fica escuro na saída | remotion-design-system §6 #06 (cor sólida + textShadow) |
| 07 | Design | Bloco de cor plana / fundo preto plano / logo falso parecem baratos | remotion-design-system references/texture.md (bloco gel + glow + vinheta + logo real) |
| 08 | Exportação | Bordas de texto MG com auréola/borrão, "qualidade do MG piorou" | remotion-design-system §6 #08 (config fixa jpeg100+crf15) |
| 34 | Estética de Design | Usuário diz "não é sofisticado / grosseiro / parece erro / não natural / não fluido / não suave" | design-system references/motion.md "Cinco Leis da Suavidade" — Tabela de Atribuição: ① Esqueleto pré-montado (estrutura não mencionada aparece antes) ② Por evitar, corta itens contínuos ③ Borda corta ou fica suspensa deixando lacuna (>2px é descontinuidade) ④ Movimento uniforme sem desaceleração para parada ⑤ Estado muda instantaneamente como um todo. Verifique item por item, proibido ajustar parâmetros por intuição; ao corrigir um, cuidado para não pisar em outro (0722-01 corrigiu "linha não atravessa círculo" mas pisou em "cortar" + "expor esqueleto", retrabalho de duas rodadas) |
| 09 | Fluxo de Engenharia | Renderização longa desaparece no meio / mp4 corrompido / pgrep julga erroneamente processo vivo | remotion-design-system §6 #09 (desanexar nohup + reconhecer linha + de log) |
| 10 | Montagem de Filme Longo | Cena nua / longa paralisia, MG todo comprimido na esquerda sem impacto | remotion-design-system references/layout.md (takeover/momento do protagonista) + remotion-assembly references/rhythm.md (auditoria de densidade) |
| 11 | Efeito Sonoro | Filme inteiro sem som / som soterrado inaudível / volume não atinge padrão | remotion-assembly references/audio.md (normas de volume + loudnorm masterização) |
| 12 | Montagem de Filme Longo | Elemento parado após entrada parece rígido / capítulo corta abruptamente em um frame sem saída | remotion-design-system references/motion.md (Breathe + disciplina de saída useExit) |
| 13 | Design | Texto em fundo claro fica cinza ilegível (texto nu sobre placa branca) | remotion-design-system §0 Regra 5 + references/texture.md |
| 14 | Montagem de Filme Longo | Cabeçalho/linha de sobrancelha no canto superior esquerdo sobrepõe texto | remotion-design-system references/layout.md (posição mutuamente exclusiva do cabeçalho) |
| 15 | Legendas | Quebra de palavra na legenda / fragmento de inglês / sem fundo | remotion-assembly references/subtitle.md (corte semântico + caixa de fundo + script de verificação) |
| 16 | Captura de Material | Réplica desenhada à mão do produto "não fica boa por mais que se ajuste" | remotion-assembly references/broll.md §0 Preâmbulo (sintetizador não é prancheta; quatro níveis de material + pipeline de coleta e edição) |
| 17 | Montagem de Filme Longo | IA diz que parece bem, mas usuário vê que é muito diferente (ponto cego de frame estático / miniatura engana) | remotion-assembly SKILL §2.5 Oficina Segmentada (medir antes de codificar + revisão dinâmica do usuário) |
| 18 | Captura de Material | Trecho de material parece "colado", não se integra ao filme | remotion-assembly references/broll.md Etapa 5 do pipeline (camada de uniformização de cor) |
| 19 | Temporização de Animação | Entrada do filme inteiro arrastada como PPT / duração do efeito não corresponde ao design | remotion-design-system references/motion.md §0 (quadros escritos em 60fps mas a composição é 30fps; converter segundos para quadros primeiro) |
| 20 | Design | Tamanho de montagem "não importa quanto ajuste, parece menor que a referência" | remotion-design-system references/specs.md (consulte a tabela de especificações antes de codificar, proibido estimativa visual) |
| 21 | Efeito Sonoro | Efeito sonoro soa barato/fraco, tanto a síntese quanto a amostra de referência são rejeitadas | remotion-assembly references/audio.md Regra 8 (solução correta = biblioteca profissional de efeitos sonoros: cache do剪映 → @remotion/sfx → Mixkit → CC0 → pacotes comerciais; qualidade deve ser aprovada pelo usuário em uma lista de audição, IA pode apenas filtrar defeitos de espectro) |
| 22 | Fluxo de Engenharia | Áudio e vídeo dessincronizam cada vez mais em vídeos de audição/montados | remotion-sfx SKILL §2 Regra de Montagem (proibido montagem com -c copy e -shortest: pequenas diferenças de duração se acumulam em deriva; deve-se travar comprimento igual + recodificação completa) |
| 23 | Fluxo de Engenharia | Renderização trava/excede tempo limite inexplicavelmente, repetidas tentativas repetem a trava | Proibido concorrência de renderização no mesmo projeto (alerta de zona de mina "concorrência quebra" confirmado): múltiplas sessões/processos órfãos colidem em deadlock. Diagnóstico = ps -o etime,pcpu (etime muito maior que o esperado + CPU 0% contínuo = morto, mate); timeout da ferramenta só mata bash, deixando node órfão causando colisão em cadeia; renderização deve ser com nohup em segundo plano real + reconhecer linha + de log (mesma família do erro #09); antes de renderizar, verifique o campo, mas o modo de verificação deve evitar auto-match: `pgrep -f "remotion render |
| 24 | Fluxo de Engenharia | Renderização reporta Named export not found/plugin is not a function e outros erros internos de pacote | Instalação concorrente de npm pode corromper pacotes (múltiplas sessões npm i simultâneas / processos se matam interrompendo escrita): sintoma = require retorna export vazio, TypeError interno da árvore de dependências; correção = pacote corrompido rm -rf node_modules/<pacote> + npm cache clean --force + reinstalar, corrupção múltipla diretamente rm -rf node_modules && npm ci (primeiro mova o binário do navegador em node_modules/.remotion para fora para proteger, depois exclua); disciplina = permitir apenas uma sessão manipulando npm no mesmo projeto por vez |
| 25 | Fluxo de Engenharia | Renderização permanentemente travada em porcentagem fixa do Bundling, árvore de processo 0% CPU, trocar Node/reinstalar dependências não adianta | Arquivo de material foi despejado pelo serviço de sync em casca dataless vazia (2026-07-16 caso sangrento: App de sync de terceiros ao desinstalar despejou 747MB de material principal, bundle copiar public/ leu arquivo bloqueado permanentemente, renderização em cadeia travou a noite toda). Diagnóstico = ls -lO public/** veja flag dataless; correção = restaure entidade do original/fonte de download (brctl inútil para provider já desinstalado); prevenção = verifique dataless na entrada de material (broll.md 2b), projeto não coloque em diretório gerenciado por sync. Variante (2026-07-28, iCloud despejou node_modules): CLI/Studio inicia e trava silenciosamente em 0% CPU, nem número de versão aparece ("Otimizar Armazenamento do Mac" despejou arquivos de dependência, pacote @remotion com quase 10k dataless, require espera download da nuvem); correção = reinstalar dependências em diretório entidade node_modules.nosync/ + link simbólico homônimo (nome *.nosync impede iCloud de sincronizar, cura recorrência); diretório antigo deve ser movido para fora da árvore do projeto (para ../.trash/) — renomear dentro do projeto causa varredura recursiva pelo watcher do Studio, segunda trava |
| 26 | Fluxo de Engenharia | Processo de renderização "desaparece do nada" com o fim da rodada do subagente/agent, não é deadlock de concorrência (#23) nem interrupção no meio da renderização longa (#09) | Quando a rodada do subagente termina, o harness coleta sua cadeia de processos filhos que estão em primeiro plano ou não foram completamente desanexados → renderização é morta no meio deixando fragmentos. Correção pertence à família #09: iniciar renderização deve desanexar completamente do shell pai (nohup + run_in_background/setsid, redirecionar todos os fds); julgar conclusão apenas pela linha +/linha final do log, não se o agent ainda está vivo; iniciar renderização longa dentro do subagente é especialmente fatal (limite da rodada = morte do processo); quando necessário, divida em "iniciar renderização desanexada nesta rodada → reconhecer log na próxima rodada" |
| 27 | Fluxo de Engenharia | Entrada .mjs/ESM do serviço de renderização import '@remotion/renderer' reporta does not provide an export named 'Fragment' | Quando package.json não tem type:module, carregar renderer com entrada ESM aciona falha de interoperabilidade react/jsx-runtime em sua construção ESM (confirmado no Node 24); correção = script de serviço mude para .cjs + require para contornar pela construção CommonJS (evidência: anotação no topo de scripts/render-service.cjs) |
| 28 | Fluxo de Engenharia | <Sequence layout="none" premountFor={N}> passa por tsc mas reporta premountFor não existe/tipo incompatível | SequenceProps do Remotion é união discriminada: premountFor é válido apenas no branch padrão/layout:"absolute-fill" (AbsoluteFillLayout), o branch {layout:"none"} não tem esta propriedade (tipo ver LayoutAndStyle em node_modules/remotion Sequence.d.ts). Correção = mídia que precisa de premount deve ser envolvida em Sequence de layout padrão (não escrever layout ou escrever absolute-fill); quando precisar de layout="none" para posicionamento, aninhe uma Sequence de layout padrão separada para a mídia receber premount. Derivada prática da zona de mina oficial ③ (premountFor) |
| 29 | Fluxo de Engenharia | Sonda QC reporta "sobreposição fantasma" falso positivo: o elemento naquele quadro é invisível a olho nu | Sonda QC (src/design/qc.tsx) em cada quadro pega [data-qc] e chama getBoundingClientRect para julgar sobreposição; se o elemento está invisível mas ainda no DOM (não escondido padrão ou totalmente opaco mas visualmente já cedeu), rect ainda existe → reporta sobreposição falsa (seg05 S5Appare hit). Lado da sonda só filtra opacity<0.15 e w/h<3, placeholder fantasma não é bloqueado. Correção = componente invisível deve retornar return null diretamente (método de portão null), sem nó não há rect; regras detalhadas de prevenção de sobreposição de placeholder em remotion-design-system references/layout.md §10.5. Outra variante (caixa Place estica altura) já listada separadamente como #32, correção siga #32 |
| 30 | Fluxo de Engenharia | Arquivo escrito por Bash "comando bem-sucedido" mas desaparece em segundos / Read não vê arquivo recém-criado / filme renderizado ls não existe | Nova sessão executa em sandbox por padrão: escrita de Bash não autorizada cai em cópia temporária da sandbox, comando termina e evapora (0719-01 teste confirmado: dados de legenda, 18 Scenes, 590MB de filme tudo evaporou, apenas 3 arquivos escritos pela ferramenta Write sobreviveram); escrever via caminho de link simbólico /tmp no projeto agrava o redirecionamento. Correção = antes de começar, passe pelo assembly SKILL §0.5 Passo 0 autoinspeção do ambiente; se não passar, pare e peça ao usuário para autorizar Bash/edição antes de continuar; proibido link simbólico para contornar caminhos chineses (adicione aspas duplas ao caminho inteiro), proibido dangerouslyDisableSandbox para auto-resgate, proibido copiar projeto para /tmp trabalhar; produtos de arquivo devem ser escritos preferencialmente com a ferramenta Write |
| 31 | Fluxo de Engenharia | QC reporta sobreposição apenas nos primeiros quadros do segmento, visualmente sem sobreposição (comum sub-zh × moldura) | Nos primeiros quadros de inicialização a frio, a fonte não foi carregada, a caixa de texto medida com fonte de fallback fica inchada, rect se intersecta é falso positivo de medição (0715-01 seg03 e 0715-02 S04 duas vezes confirmado, variante da família fantasma #29). Correção = após inspeção visual, isente com lista branca qcAllow para o par de elementos (as demais asserções permanecem), não mude layout por causa de alguns quadros de falso positivo |
| 32 | Fluxo de Engenharia | QC reporta em massa sobreposição de caixa place@72,* na zona esquerda, quadro renderizado visualmente não tem sobreposição | Caixa Place de zona esquerda paginada/agrupada tem bounding maior que o conteúdo visual (recipiente esticado), caixas intersectando ≠ interseção visual (0715-02 QC de filme inteiro 15 tipos de violação amostrados, todos deste tipo). Correção = após inspeção visual do quadro renderizado, liberar como falso; cura definitiva = altura da caixa Place deve corresponder ao conteúdo real ou o grupo deve receber qcAllow; sub-clearance que ultrapassa a linha de espaço livre julga verdadeiro/falso separadamente, não está nesta categoria |
| 33 | Renderização/Exportação | Um trecho do filme final com pessoa/vídeo congelado em frame estático, o mesmo trecho no original se move (comum em fundo 4K); a olho nu é "pessoa não se move", mas md5/mpdecimate não detecta | OffthreadVideo de fundo 4K durante renderização decodifica com travamento e repete frames (mais provável ao sobrepor animação SVG complexa) → mude a fonte do fundo para 1080p H264 (a composição já é 1080p, 4K é desperdício e atrapalha a decodificação), altere o componente principal para fonte 1080p e re-renderize para resolver. Diagnóstico deve usar ffmpeg -vf freezedetect=n=-50dB:d=0.3 — md5 todos diferentes ≠ imagem em movimento (ruído de compressão de frame estático também faz cada frame ter md5 diferente, engana), mpdecimate também é interferido por ruído, não confiável, apenas freezedetect com tolerância a ruído é preciso; trecho de material (pessoa saindo, material parado em si) reportar freeze é normal, não bug (0721-01 confirmado: trecho de pessoa de 63-69s congelado, após trocar fonte 4K para 1080p, freezedetect zero congelamento). Anexo: codificação de entrega sugerida -bf 0 -g 30 -movflags +faststart para melhorar compatibilidade do player (Remotion padrão gera muitos B-frames, alguns players travam ao seek) |
| 34 | Renderização | Trecho de material no filme final com grande área preta sólida/barra preta morta/vidro vazio, só uma faixa vertical na borda; tanto placeholder quanto material real podem sofrer; autoinspeção pós-renderização tende a perder (ponto de amostragem não caiu na janela de material presente) | OffthreadVideo com "caixa grande style width + objectFit/translate" escreve corte, o width não é aplicado no lado da renderização → conteúdo é renderizado na largura da caixa e depois truncado pelo deslocamento (0721-01 seis trechos confirmados: S02/S06/S07/S10/S13/S16, o único correto S14 usou "video 100% preenche caixa + transform scale overshoot"). Correção e comporta de aceitação pós-renderização = remotion-assembly references/broll.md Regra 12 |
| 35 | Fluxo de Engenharia | Membro da equipe/QC reporta "filme inteiro zero violações" mas na verdade há muitas sobreposições — falsa aprovação | Sonda QC (src/design/qc.tsx) montada dentro de cada Scene, só roda no intervalo de frames daquele trecho; Scene esquece de montar <QcProbe/> (só declara qc?:boolean mas não consome) → aquele trecho não tem asserções → summary limpo é falsa aprovação (0722-01 caso sangrento: 20 trechos apenas 1 montou sonda, reportou zero violações mas na verdade 8 tipos reais de violação). Correção já solidificada: sonda emite heartbeat de cobertura por frame QC{hb:1,n}, render-service.cjs qc verifica "quadros cobertos/frames renderizados", <90% ou 0 elemento durante todo o período → julga [FAIL] Cobertura insuficiente em vez de "zero violações". Disciplina: "zero violações" deve ser capaz de distinguir entre "testou e não há problemas" e "não testou nada"; no modo de produção, durante a fase de integração, execute primeiro um pequeno segmento de qc para confirmar a cobertura antes do filme inteiro. Adendo (2026-07-24 revisão encontrou): Sonda deve ser montada na raiz (raiz da montagem {qc ? <QcProbe/> : null}, como Koubo072101/072201) — quando montada dentro da Scene, useCurrentFrame retorna frame local (começa em 0), o número do frame do heartbeat fica desalinhado com o intervalo global: a cobertura de QC do filme inteiro/entre trechos pode falhar falsamente (frames locais de cada trecho se sobrepõem, deduplicados ≪ frames totais), e uma sonda ausente em um trecho pode ser mascarada por frames locais do trecho vizinho como falso PASS; render-service já adicionou filtro de intervalo de frame, mas a cobertura global só é garantida com montagem na raiz. Teste curto de QC de trecho único não detecta esta armadilha — para testar a grade, use cenários que disparam falha (intervalo entre trechos / remova uma sonda de propósito), não teste apenas trechos normais |
| 36 | Design | Texto MG da zona esquerda borrado no fundo claro quase ilegível, scrim parece não funcionar | InfoScrim (src/design/InfoScrim.tsx) gradiente padrão transparente à esquerda → escurecido à direita, só escurece o lado direito; MG de informação colocado à esquerda do filme (usuário decidiu informação à esquerda) → MG da zona esquerda nu na área mais clara (armário branco/parede clara) sem fundo (0722-01 confirmado; 0715-02 já havia batido na mesma armadilha, mas só corrigiu localmente no trecho, a lacuna base não foi preenchida). Correção = InfoScrim adicionar parâmetro side (padrão 'right' compatível com filmes antigos), para filmes com informação à esquerda passar side="left". Lição: defeito de base corrige na base ou registra, proibido corrigir apenas no trecho — correção local = deixar a armadilha para o próximo filme |
| 37 | Fluxo de Engenharia | Renderização travada no Bundling sem sair, copyfile ... ETIMEDOUT, processo vivo mas sem saída | public/footage/ acumulou muitos materiais antigos (0722-01 2GB/6 peças), Remotion bundle copia todo public/ para diretório temporário a cada vez → copyfile estoura tempo limite (diferencie de #25 dataless: é volume/tempo de cópia, o arquivo em si existe como entidade). Correção = mantenha apenas o material do filme atual em public/footage/, mova o resto para ../footage-hold/ (2GB→466MB, bundle de travado para 1.8s). Disciplina: após entregar a correção, não reverta cegamente — antes de reverter, pergunte "este filme precisa ser renderizado novamente?" (0722-01 mesma armadilha foi pisada duas vezes porque o material foi movido de volta após a entrega) |
| 38 | Fluxo de Engenharia | Qualquer processo que toca em arquivo trava permanentemente, kill -9 inútil, zumbis UE se acumulam; reinstalar dependências/trocar Node não adianta | Processo de verificação de assinatura de código do macOS (amfid/syspolicyd) travou → binários que precisam de verificação de assinatura não podem exec (diferente de #25 dataless, #37 volume, #23 deadlock, é nível de sistema). Diagnóstico: ffprobe -version (sistema) normal mas node_modules/@remotion/compositor-darwin-arm64/ffprobe -version trava permanentemente = assinatura travou; `ps -axo pid,stat,comm |
| 39 | Captura de Material | Grok imagem-para-vídeo três tipos de falha: resolução baixa padrão 736×400, ampliação borrada / elementos se transformam e增生 (morph) / composição específica é forçadamente "preenchida" | ① Resolução: se não mencionar explicitamente, usa padrão 736×400 (ampliação 2.6x borra halftone/borda de corte) — instrução deve fixar 720p(1280×720), testado 4/4 acerto; CLI resolution_name tem apenas duas opções 480p/720p, pedir 1080p cai de volta (2026-07-24 testado), 1080p deve usar xAI API (grok-imagine-video-1.5) ou trocar ferramenta. ② morph 增生: engrenagem cresce/calendário múltiplas células/anel se despedaça — no final do prompt, adicione restrição de bloqueio para o elemento propenso a崩 ("manter tamanho único original proibido增生", "número de células e cor não mudam", "anel contínuo não quebra"). ③ preenchimento forçado: "elementos esparsos + grande fundo vazio + figura humana vazia + fragmentos de rosto expostos" aciona modelo para preencher área vazia, preencher buraco vazio, crescer rosto completo (14ª execução 6 versões todas falharam) — não continue adicionando proibições, vá alterar a composição de entrada que o acionou (preencha os fragmentos/use linha de contorno para delimitar espaço negativo/remova fragmentos de rosto expostos, após alterar, execute de uma vez). Chamada gbro headless também precisa de --always-approve --permission-mode bypassPermissions --max-turns 10 para acionar ferramenta de vídeo. Veja detalhes em remotion-broll SKILL "Geração AI de B-roll Colagem" seção |
| 40 | Renderização | Avatar circular de crachá parece torto, cunha de fundo aparece dentro do anel dourado, ajustar ângulo com CSS piora | Proibido usar CSS rotate + deslocamento dentro do círculo de corte para corrigir avatar torto — rotação gira em torno do centro da img, a janela de visualização está descentralizada, ambos se somam ampliando a sensação de torto e rotacionando para fora revelando borda (0724-01 duas rodadas para corrigir). Solução correta = cozinhar imagem offline: PIL endireite a foto (alguns graus) depois corte "rosto centralizado em quadrado" salve como asset, NamePlate avatarImgStyle use 100%/left:0/top:0 adesivo direto em janela cheia; asset global public/assets/author-avatar.png já disponível, referencie diretamente |
| 41 | Fluxo de Engenharia | render-service segment renderiza filme inteiro reporta frame range 0-N is not inbetween 0-(N-1) | Parâmetros de início e fim de segment/splice são números de frame inclusive: filme inteiro = 0 (durationInFrames-1) (composição de 1355 frames passar 0 1354), copiar durationInFrames diretamente certamente reportará erro |
| 42 | Design | Usuário diz legenda "não é bonita" mas não sabe dizer o que está errado | Primeiro verifique se a linha em inglês está sendo renderizada com fonte chinesa — os glifos latinos de fonte chinesa são apenas para preenchimento, largura e espaçamento estão todos errados, é a causa número um de "não sei o que está estranho" (BilingualSub versão antiga linha en usava FONT.zh, 2026-07-26 confirmado). Correção = linha em inglês deve usar fonte ocidental proporcional FONT.subEn (Inter); verifique também o peso da linha em chinês, camada de legenda use FONT.subZh (PingFang SC) 400 fino, não use 700 da camada de embalagem. Julgamento de textura de fonte deve ser em corte local 1:1, miniatura não mostra (mesmo que #03); antes de alterar a versão, produza várias opções do mesmo frame para o usuário escolher, não aposte em uma opção |
| 43 | Montagem de Filme Longo | qc-master zero FAIL zero WARN, mas usuário diz "qualidade muito diferente / efeitos cada vez mais feios / legenda diferente do que o skill disse" | Inspeção técnica verifica "o filme está quebrado?"; não verifica "o filme usou a base?" — duas coisas diferentes, não use o sinal verde do primeiro como prova do segundo. 0727-01 confirmado: 25 trechos auto-construíram 324 linhas _kit.tsx recriando cards, efeito apenas quad fade-in deslocamento 0, design/motion zero referência, 25 trechos apenas 8 tinham saída, 77 legendas en todas vazias degradando para linha única em chinês; qc-master passou tudo. Correção = montagem ⓪ comporta node scripts/check-scenes.mjs src/koubo/scenes-<nome> (referência zero a motion / zero saída = FAIL) + verificação de falta de en em check-subs.mjs, ambas executadas após codificação e antes de iniciar renderização. Ordem de diagnóstico: primeiro verifique quais técnicas estão faltando, depois verifique se os parâmetros estão corretos — um comando check-scenes pode mostrar se você está reinventando a roda, mas ele cobre apenas um tipo de feiura (base não usada); cor/ritmo/fonte/composição cada um tem sua verdadeira origem (typography/rhythm/#42/layout), não trate um único caminho como diagnóstico universal. ⚠️ Lição anexa: na época, o parâmetro do comando check-subs foi passado errado (passou nome do filme em vez de caminho do arquivo) e reportou ENOENT, viu o erro e seguiu em frente, então linha inicial pendurada com palavra única, largura excedente de 16.5 caracteres também foram perdidos — script de verificação reportar erro ≠ verificação passou, se não rodar é como se não tivesse rodado |
Referência de classificação (reservada conforme sistema de filme base): Renderização / Temporização de Animação / Studio Execução Local / Exportação / Efeito Sonoro / Captura de Material / Montagem de Filme Longo / Design / Fluxo de Engenharia.
Zona de Mina de Alerta (44 itens no diretório de erros, captura de tela fornecida pelo usuário em 2026-07-16)
Regra: Aqui é mapa de zona de mina, não erro — apenas nome do sintoma, sem correção, a maioria ainda não pisamos. Ao atingir qualquer um: corrija + inspeção visual humana, depois promova para número oficial na tabela acima. Os que já correspondem a erros existentes estão marcados com pertencimento.
| Categoria | Armadilha (original) | Nosso Estado |
|---|---|---|
| Renderização | LOGO piscando / vídeo frame estático / ProRes transparente borda preta / efeito travado no canto superior esquerdo / imagem esticada / chrome de página / rosto obstruído / colisão com legenda / Emoji / Logo preto come preto | Já temos correspondência: colisão com legenda = #14 sobreposição; Emoji = #04 + especificação de ícone (ícone real lucide); rosto obstruído = proibido entrada de pessoa em três zonas (layout.md); Logo preto come preto = especificação de logo dark/light dupla versão (texture.md). Os outros 6 não pisamos, cuidado: vídeo frame estático (OffthreadVideo trava frame), imagem esticada (objectFit), chrome de página (captura de tela com borda do navegador no frame) |
| Animação/Temporização | Phase índice esquece break / efeito não sincroniza com narração / spring overshoot | Já temos correspondência: efeito não sincroniza com narração = §2.5 alinhamento palavra a palavra + visual principal com SRT; spring overshoot = motion.md §11 itens proibidos. Phase índice esquece break não pisamos (tipo switch branch esquece de escrever) |
| Studio/Execução Local | Studio fecha instantaneamente (SIGPIPE) / EMFILE estouro de handle / staticBase hash expirado / HEVC tela preta / id underscore / Studio+still concorrência quebra | Todos não pisamos. Cuidado com dois de alta probabilidade: HEVC tela preta (material de gravação de iPhone é HEVC, converter para H.264 antes de armazenar), Studio+still concorrência quebra (rodar still/render com Studio aberto pode colidir — nosso workflow frequentemente concorrente, se acertar, não suspeite primeiro do código) |
| Exportação | Disco C estoura / OOM / qualidade borrada / renderização lenta / julgamento Encoded falso | Já temos correspondência: qualidade borrada = #08 (jpeg100+crf15); julgamento Encoded falso = #09 critério de conclusão só reconhece linha + de log (mesmo tipo: texto de log ≠ sucesso). OOM/renderização lenta não pisamos (cuidado com filme longo 4K com número de frames concorrentes) |
| Efeito Sonoro | impact-heavy cheio no filme / cada grupo com whoosh / som na frente, movimento atrás | Já temos correspondência: impact-heavy cheio no filme = audio.md martelo SFX no filme inteiro ≤2 lugares (usuário rejeitou whoosh de abertura mesma lição); cada grupo com whoosh = sequência de golpes deve ter pop leve por item, não um som pesado por grupo. "Som na frente, movimento atrás" não pisamos, pendente para verificar (suspeito que seja regra de temporização de SFX frame com efeito frame desalinhado, definir quando acertar) |
| Captura de Material | yt-dlp 403 / fetch não usa proxy / Wikimedia GFW / Firefox cookie / PNG é na verdade HTML | Parcialmente já temos: pipeline de coleta yt-dlp em broll.md (nós baixando Lovable não encontramos 403, quando encontrar, primeiro adicione cookie/UA/proxy três peças). "PNG é na verdade HTML" armadilha típica: "imagem" baixada é na verdade página HTML de anti-hotlink — verifique com comando file antes de armazenar, esta regra é adotada diretamente como passo fixo do pipeline de material |
| Montagem de Filme Longo | Capítulo sem pausa para respirar / Host卡↔Chip colide | Já temos correspondência: Capítulo sem pausa para respirar = motion.md §1/§2 tela limpa entre capítulos; Host卡↔Chip colide = layout.md Regra 9 posição mutuamente exclusiva (mesmo tipo de sobreposição) |
| Design | Não replicar House Style / kicker overclaim / proporção não calculada / legenda repete | Não replicar House Style = toda a razão de ser do nosso design-system. kicker overclaim (texto do kicker exagera para além do que a narração diz), proporção não calculada (material deformado), legenda repete (legenda e texto MG repetem a mesma frase) três não pisamos — legenda repete cuidado: nossa decisão de chip e Stamp não repetir é o mesmo princípio |
| Zona de Mina Oficial (remotion-dev/skills claro, 2026-07-16 comparação, veja docs/官方skills对照.md) | ① CSS transition/animation/Tailwind animação = renderização certamente quebra (oficial FORBIDDEN, codex escreve código é o mais fácil de misturar) ② ffmpeg cortar sem recodificar = frame inicial congelado (uma das causas de "vídeo frame estático" do filme base, -c copy cortar proibido) ③ Sequence com mídia sem premountFor = primeiro frame trava/tela preta ④ @remotion/transitions consome duração total (dois planos sobrepostos, sistema de alinhamento duro SRT desalinhará o filme inteiro) ⑤ fetch dados externos sem delayRender = renderiza frame vazio | ①②④⑤ não pisamos, item de verificação pré-codificação; ③ premountFor já adotado conforme regra (Scene06 previne primeiro frame preto) → derivou novo erro prático #28 (premountFor com layout='none' tipo mutuamente exclusivo) |
| Fluxo de Engenharia | Escopo de modificação se expande / tamanho de fonte <48px / renderiza 4K automaticamente | Escopo de modificação se expande = exemplo negativo da disciplina de oficina segmentada "renderizar apenas aquele trecho/alterar apenas aquele trecho"; tamanho de fonte <48px (em 1080p, texto corporal abaixo de 48px o espectador não lê, precisa distinguir cenário de specs.md texto mínimo explicativo 20-22px: ele provavelmente se refere ao corpo da informação); renderiza 4K automaticamente (sem confirmação, inicia renderização grande queima máquina) — esta regra é adotada diretamente como disciplina: renderização só inicia com o escopo confirmado pelo usuário/plano |