film-audit: ninguna película sale sin estas comprobaciones
Dónde vive el kit: ejecuta cada comando de este skill desde la carpeta
reels-maker(el clon de github.com/thativanng/reels-maker que contienetemplate/ytools/). Si el proyecto no lo tiene, configúralo primero siguiendo el SETUP.md de ese repositorio.
La regla: una película solo llega a la persona cuando (1) la pasada de colisiones dice NO COLLISIONS, (2) cada preocupación de «¿X está sobre una cara?» tiene un número de píxeles, y (3) un auditor independiente ha firmado sin ningún MUST-FIX abierto. Una revisión a 1 fps por parte de quien la construyó es una comprobación preliminar, no una compuerta. Una corrección mueve otras cosas (mover un globo de diálogo una vez lo sacó del encuadre), por lo que cada ronda de correcciones necesita una re-visión estrecha de las ventanas que tocó.
Compuerta 1 · Colisiones en 3D (node tools/collide.mjs)
- La página expone
window.collide(t). Compara los bounding boxes de cada malla en AUD_M (cosas que se mueven) contra AUD_S (cosas que están quietas) y entre sí, después de reducir cada caja en 0.03. - Registra cada nuevo móvil y sólido, o la comprobación no podrá verlo. Cajas lanzadas, tazas llevadas, cubos que pasan y virus flotantes cuentan como móviles.
- Los contactos que deben ocurrir (una taza en una mano) se excluyen por nombre, en
HELD. - Las mallas de menos de 0.12 unidades de altura (decalcos de suelo, marcas viales, placas finas) se omiten, para que algo plano no genere una falsa alarma. Un móvil realmente fino necesita su propia comprobación.
- Ejecútalo a 40 fps (
STEP=.025, el predeterminado). A 10 fps falló dos contactos de un solo fotograma: cajas lanzadas atravesando las cabezas de dos personas. - La salida es una línea por par:
desde–hasta s A × B profundidad (fotogramas). Envía solo conNO COLLISIONS.
Compuerta 2 · Píxeles en pantalla (node tools/probe.mjs)
Algunos defectos nunca chocan en 3D. Una tapa de botella a 3 m detrás de la cabeza de alguien puede parecer que le crece del pelo. Mide la pantalla:
node tools/probe.mjs "4.4,4.6,4.8" "D.CUPS[0]" "head" # superposición de una taza y la cabeza del héroe, en píxeles
node tools/probe.mjs "24.5,26" "head" "pill" # ¿está la cabeza detrás del subtítulo?
node tools/probe.mjs "3.0,3.5" "D.GUESTS[1].v.root" # un rectángulo: ¿está esta persona dentro del encuadre?
- Lee
overlap: [x, y](ambos > 0 significa que están uno encima del otro),gapYeinside(A está completamente dentro de B). - En cualquier página, incluso 2D:
sel:<css selector>es lo que un elemento realmente pinta (sus letras, medidas línea por línea, más cualquier fondo, borde o imagen) ysafees la zona de seguridad de la plataforma (dewindow.FILM.safe). Cada palabra en pantalla debe estarinside: truecontrasafeen cada beat:node tools/probe.mjs --page reels/<name>/page.html --format 9:16 "2,6.4,10.4" "sel:.title,.line,.kicker,.handle,.cap" "safe" - Para probar una clave de cámara sin editar el archivo, pasa
PRE(se ejecuta antes de cada vez):PRE="window._CK.find(k => k[0] === 23.8)[1] = window._dbg.A(72.2, 10, 31, 72, 5.2, 1.5)" node tools/probe.mjs "25,28" "head". - Las cajas son conservadoras (un bounding box es más grande que la forma), por lo que unos pocos px de superposición pueden ser claros en la realidad. La decisión final la toma el recorte del auditor.
Revisa cada uno de estos con un número antes de renderizar:
- Cada palabra, pie de foto y logotipo dentro de la zona de seguridad de la plataforma (
safe, de template/formats.json). En reels orgánicos 9:16, esa es la banda central (la app cubre el cuarto inferior y la barra de botones derecha); en un reel de pago, todo por encima del 35% inferior. - Cualquier cosa cerca de una cara: gorras, pantallas detrás de la cabeza (el halo), cubos que pasan, accesorios en la boca
- El héroe contra la píldora de subtítulos durante los movimientos de cámara
- El globo de diálogo contra el borde del encuadre y los accesorios cercanos
- Personas y vehículos contra el borde del encuadre (≥24 px es seguro)
- Cosas voladoras (cajas lanzadas, monedas, grupos de virus) contra cada cabeza por la que pasan
Compuerta 3 · El auditor independiente
Inicia un agente NUEVO (nunca el constructor, nunca uno que haya visto la construcción) con references/auditor-brief.md.
- Lee el MP4 renderizado, no la página en vivo:
ffmpeg -i out/film.mp4 -vf fps=2 …, luego hojas con marca de tiempo (tools/sheet.py). - ≥2 fps para toda la película, ≥4 fps en cada ventana modificada, fotograma a fotograma (30 fps) en puntos de contacto como una recogida o una entrega.
- Responde por elemento: FIXED / NOT FIXED / REGRESSED / NEW, clasificado MUST-FIX / NICE-TO-FIX, luego una línea:
SIGN-OFFoNOT. - Una re-visión después de correcciones es estrecha: solo las ventanas que las correcciones tocaron, más una mirada breve de regresión. Puede ser más barato iniciar un agente nuevo que reanudar uno que carga todo su historial.
Lo que los auditores seguían encontrando (busca esto primero)
- Algo tocando o detrás de una cabeza: una tapa de botella en el pelo, alfileres de mapa detrás de la cabeza, un monitor brillando detrás de la cabeza, un cubo cruzando una barbilla
- Cosas atravesando cosas: camiones a través de edificios y entre sí, una camioneta estacionada debajo de un escritorio
- Lógica: un camión acoplándose de frente, el segundo camión adelantando al primero, una taza dejada en el borde de una mesa que debería caer
- Personas: dos personas tan juntas que sus cabezas se fusionan en una figura; alguien medio fuera del encuadre
- Movimiento: un salto de un fotograma (teletransporte), cosas cayendo por el suelo en 0.1 s, el héroe desapareciendo entre escenas
- Palabras: texto dentro de una zona que cubren los botones de la plataforma, chino partido en medio de una palabra, un banner desfasado con su escena, ortografía mixta UK/US, un número que nadie puede defender, el subtítulo cubriendo al héroe
- Sonido: silbidos, una señal que es inaudible bajo la música, señales que se desplazan después de un beat insertado