manim-saorín · GENERALISTA.md · generada al construir
GENERALISTA · coordinación entre ramas
Qué está fusionado en la implementación de referencia, qué ficheros comparte cada rama y qué tiene que recoger la especificación pública.
Tórculo tiene que ser plenamente generalista: que un modelo pequeño o una
persona escriban un .mesa fácilmente; que dibujos, marionetas y personajes
sean estándar; y que el collage en movimiento (foto, recorte, clip) salga
solo. Varias ramas trabajan a la vez. Este fichero es donde se avisan: qué
toca cada una, qué ficheros comparte con las demás y qué tiene que recoger
la especificación pública (~/Developer/torculo/spec).
Regla: si cambias cómo se escribe una línea del pliego, apúntalo aquí (rama,
línea nueva, sección del SPEC). El agente de estándar lo pasa a la
especificación normativa, a la conformidad, a llms.txt y a la web.
Estado por rama
| rama | qué | estado | SPEC interno | parte del estándar |
|---|---|---|---|---|
estandar | la lengua que enseña: errores con porqué y arreglo, mesa explica, chuleta, bestiario, nuevo, capa de la casa; prueba del modelo pequeño (ERGONOMIA.md) | fusionada (2026-10-15) | SPEC-MESA-2.md §3.16 | Parte 1 (lengua), anexo de diagnósticos |
vida | la ficha anima por esqueleto, vida por defecto, actuar la voz, verbos de la vida, objetos vivos | fusionada | §3.15 | Parte 1 (verbos), Parte 3 (piezas) |
piezas | estándar de pieza (estática, partes, marioneta, personaje con ficha), paquete estudio, mesa pieza nueva/comprueba/hoja, mesa bestiario, collage (foto/recorte/clip) y marioneta de foto | fusionada (2026-10-15) | SPEC-PIEZAS.md | Parte 3 (piezas) y perfil collage |
futbol | la acción física (estudio/futbol.py: carrera, esprint, chut, estirada…), la jugada del motor (gx/jugada.py: balón, red, suelo que corre, grada), X chuta a «Y» y los eventos del balón; el contrato del esqueleto en la librería de personajes | fusionada (2026-10-15) | SPEC-MESA-2.md §3.20 | Parte 1 (líneas de ficha y eventos), Parte 3 (piezas) |
metraje | metraje real: ingesta, montaje por palabras, revelado, híbrido, intercambio, planilla, mesa entrevista | fusionada (2026-10-15) | SPEC-METRAJE.md | perfil «metraje» (Parte 1: líneas nuevas; órdenes nuevas) |
generos | géneros como perfiles (16), lienzo nativo 9:16, piezas de oficio (ecuación, fuentes SPDF, rótulo, dato…), gráficos desde datos, serie y variantes, localización, accesibilidad, revisión con notas, tráiler, derivados, canal | fusionada (2026-10-15) | SPEC-MESA-2.md §3.19 | perfil por género (Parte 1: líneas y órdenes nuevas) |
tresde | escenario 3D, Blender por capas, 3D ligero, personaje 3D con vida, intercambio glTF/USD, GPU alquilada, lo generativo congelado | fusionada (2026-10-15) | SPEC-MESA-2.md §3.17 | perfil 3D (nuevo), perfil collage (sintetizado) |
Notas de piezas para la lengua (para no pisarse)
formato/gramatica.py(tres trozos pequeños, marcados con comentario):PIEZAS rutayMARIONETA nombre · de la foto x.jpg · …en el preámbulo (junto aPYTHON); los modificadores tras·defoto:|recorte:|prensada:y declip…:(los parseaaspecto.collage_de); y, traslinea_de_ficha,aspecto.accion_declarada:QUIEN acciónpara un nombre del REPARTO (o sus alias) o de una MARIONETA, con cualquier acción que la pieza declare (el vocabulario lo cierra la pieza; los verbos de movimiento ymira,está,pasa… no entran).formato/aspecto.py: solo añadido al final (collage_de,marioneta_de_linea,accion_declarada).formato/herramientas.py(lint): los nombres de las piezas de.toml, carpetas, MARIONETA y las asignadas conmarioneta(…),personaje(…)… cuentan como bestiario.formato/cli.py:mesa pieza …ymesa bestiariose despachan al principio demain(relanzanmanim_saorin.estudio.clien el Python de ManimGX).- La rama
estandartambién trajo unmesa bestiario(enensena.py, lee el bestiario de un pliego). Al fusionarpiezas,mesa bestiarioqueda uno solo (ver el registro de fusiones).
Para las ramas en curso (metraje, generos, tresde)
Lo que el estándar necesita de cada una, en pocas líneas aquí:
- Las líneas nuevas del pliego (forma exacta, con un ejemplo).
- Las órdenes nuevas de
mesa(mesa xxx …). - Qué perfil de conformidad toca (núcleo, cine, sonido, collage, 3D…).
- Si
mesa leelas conoce: la ramaestandarhizo que lo que no es orden y parece orden sea error («¿quisiste decir…?»). Una línea nueva que el lint no conozca saldrá como error; hay que darla de alta enformato/ensena.py(vocabulario) además de en la gramática.
Notas de metraje (metraje real; worktree manim-saorin-wt/metraje)
Paquete nuevo manim_saorin/metraje/ (ingesta, índice, montaje por texto,
revelado, intercambio, planilla). Lo que toca de lo común, para no pisarse:
formato/aspecto.py:FORMATOSgana9:16,1:1y4:5;FORMATOadmite el reencuadre tras·:sigue a quien habla | sigue al sujeto | sigue a NOMBRE | centrado. Sigenerostambién añade el vertical, nos quedamos con una sola tabla (avisad aquí).formato/gramatica.py: un gancho en el preámbulo (METRAJE,REVELADO,RECORTA,LIMPIA,ESTABILIZA) y otro en el clip (plano ≈ «…»,recurso ≈ «…»,toma: «…»,plano: fichero de A a B,sobre la mano de X:/sobre «objeto»:como prefijos de seguimiento), los dos delegan enmetraje/lengua.py. REPARTO admite la vozfilmada.formato/cli.py:mesa ingesta|busca|monta|exporta|importa|planillase despachan al principio demainametraje/cli.py;mesa tocade un pliego conMETRAJEva al montador de metraje.formato/ensena.py: alta de las órdenes nuevas en el vocabulario.- Torculo:
sentido/sentido/metraje.pyysentido metraje indexa|busca. - SPEC propio:
SPEC-METRAJE.md(comoSPEC-PIEZAS.md); perfil «metraje». - Para el estándar: líneas nuevas
METRAJE,REVELADO,RECORTA,LIMPIA,ESTABILIZA,SUBTÍTULOS(preámbulo),toma: «…»,plano ≈ «…»,recurso ≈ «…» | lo que dice,plano: f de A a B, prefijossobre la mano de X:ysobre «objeto»:; vozfilmadaen REPARTO; FORMATO 9:16 · 1:1 · 4:5 con reencuadre. Órdenes:mesa ingesta|casa|busca|monta|exporta| importa|planilla|entrevista.mesa leeymesa explicaya las conocen. - Para
generos: el plano híbrido rueda hoy en 16:9 porque el lienzo vertical de Tórculo es vuestro; en cuanto esté,metraje/hibrido.pysolo tiene que dejar de forzar 1920×1080. - Arreglo común hecho por el camino (ya estaba también en master): sin
clips/fichas.jsonno hay cita de película en un clip.
Numeración de SPEC-MESA-2.md (para no chocar)
Ocupadas en master: §3.13 (cámara, profundidad, tiempo), §3.14 (proyecto
portable), §3.15 (la vida), §3.16 (la lengua que enseña). La rama
tresde llama a su sección «§3.16» en manim_saorin/tresde/__init__.py:
al fusionar será §3.17 (o la siguiente libre). Quien abra sección nueva,
que la reserve aquí antes: §3.17 tresde · §3.18 metraje (o SPEC-METRAJE.md)
· §3.19 géneros.
El estándar público recoge lo provisional
~/Developer/torculo/spec/SPEC.md tiene un anexo informativo («Profiles
in development») con lo que estas notas dicen de metraje, géneros y 3D. Pasa
a normativo cuando la rama se fusiona y tiene casos de conformidad. Si
cambiáis una línea del pliego, cambiadla aquí y el anexo se pone al día.
Web del estándar (~/Developer/torculo/site), para quien la lleve
La lleva otro agente a la vez (portada con el corto, OBRAS). Lo que deja el de
estándar y ergonomía, solo en site/public/obras/collage/ (material privado):
cine.mp4, gilliam.mp4, recortes.mp4 (los ejemplos del collage, rodados
con el clip de fondo ya arreglado), haiku-charlot-y-la-bailarina.mp4 y su
.mesa (el sketch que escribió Haiku a la primera, para enseñar que un modelo
pequeño escribe pliegos), y un fotograma x.cartel.jpg de cada uno para el
poster del vídeo. Visto en local a 1440 px (15-10, 14:05): la portada aún no
es el cartel en movimiento; el titular RADIOINTERMISIÓN de la sección del
corto se mete debajo del párrafo de la derecha; los vídeos del collage no
tienen poster (salen negros hasta pulsar).
- 2026-10-15 ·
vida→ master (SPEC §3.15). - 2026-10-15 ·
estandar→ master. Conflicto enSPEC-MESA-2.md: las dos ramas usaban §3.15; la vida se queda en §3.15 y la lengua que enseña pasa a §3.16. - 2026-10-15 ·
piezas→ master. Conflictos enformato/aspecto.pyygx/ficha.py(piezas y vida añadían cosas distintas en el mismo sitio: se quedan las dos).mesa bestiario x.mesaes el de la lengua (lista piezas y acciones);mesa bestiario carpeta|x.py|x.toml, el del estudio. Nuevos errores demesa leeque toda rama debe conocer: la acción que la pieza no declara, la pieza que actúa sin REPARTO,al decir «X»cuando la voz del beat no dice X, el color del REPARTO que no existe.
Géneros y producción (rama generos, worktree ~/Developer/manim-saorin-wt/generos)
Lo nuevo vive en manim_saorin/generos/ (perfiles, lienzo, líneas y piezas de
género, gráficos, fuentes SPDF, subtítulos de redes, ortografía, alineación,
acabado, lenguas, accesibilidad, revisión, serie, tráiler, deriva, canal,
nuevo y plantillas) y en SPEC §3.19. Lo que toca de lo común, marcado con
«GÉNERO» en un comentario:
formato/gramatica.py: preámbuloGÉNERO,LIENZO,IDIOMA;formato 9:16en las propiedades; las líneas de clipecuación: rótulo: titular: fuente: dato: cita: llamada: paso: audiograma firma(generos/lineas.py).formato/compilador.py:perfiles.aplica_docal empezar yperfiles.aplicaal acabar; el verbogenero;silencio 0ya no se vuelve 3.formato/cli.py: las órdenes de la productora se despachan al principio demain(antes que las del metraje);lee_pliegoprensa las plantillas ({campo},si {campo}:,variante X:).formato/herramientas.py: el lint del género, las fuentes y la ortografía al final delee; las cifras de contenido no cuentan en el porcentaje pobre.formato/sonido.py(--langdel IDIOMA) yformato/tiempos.py(mlx-whisper local si no hay whisper.cpp).composicion.pyygx/verbos.py: las cotas de la hoja salen degeneros/lienzo.py(en 16:9 idénticas: regresión de paradoja, mismos fotogramas que master); en vertical, la columna.gx/correr.py(el lienzo nativo, la pausa del género, el acabado),gx/escena.py(subtítulos palabra y karaoke, corte limpio en géneros rápidos),gx/materias.py(sin bandas en un lienzo nativo),gx/subtitulos.py,mesa.py(la página en la proporción del lienzo),visualizaciones.py(ver: … desde datos.csv),interprete.py(verbo genero).- Para
metraje: el lienzo vertical ya está (generos/lienzo.prepara):metraje/hibrido.pypuede dejar de forzar 1920×1080. - Para
tresde: el 3D matemático (ver: superficie) y los mapas de noticia quedan para vosotros; el perfildidácticolos usará en cuanto existan.
tresde (rama tresde, worktree ~/Developer/manim-saorin-wt/tresde) — 3D, Blender, lo generativo
- Ficheros nuevos: formato/tresde.py, tresde/ (escenario, camara, malla, rodaje, blender/, ligero, sintesis, remoto), gx/tresde.py.
- Enganches de pocas líneas en: formato/gramatica.py (líneas de escena 3D), formato/compilador.py (beat["tresde"], beat["plano_3d"]),
gx/rodaje_camara.py (instala y al abrir beat), gx/operador.py (necesita_3d,
_f_mundo,sube, llamada a tresde al final de_tic), gx/ficha.py (vista_camarasuma a la vista), gx/correr.py (las tres pasadas), formato/cli.py (mesa sintetiza,mesa tresde, lee_pliego). - Caché de capas de Blender: ~/Library/Caches/manim-saorin/tresde/
. Blender va con nice 15 y 4 hilos dentro del turno de pesado. - Corto de prueba: ~/Movies/tresde-corto (lee la ficha del vecino de radiointermision sin tocarla).
- Líneas nuevas (escena):
ESCENARIO 3D · …,DECORADO …,PERSONAJE 3D NOMBRE · …,LUZ principal|de relleno|de contraluz|práctica de «X» · …,HORA …,NIEBLA …. Líneas de clip:imagen sintetizada ≈ «…»,clip sintetizado [de fondo|mudo] ≈ «…»(se resuelven con el lock). - Órdenes nuevas:
mesa sintetiza p.mesa [--proveedor simulado|local|treg] [--de-pago] [--creditos],mesa tresde mundo|exporta|remoto p.mesa. mesa leelas conoce (la gramática las consume; dentro de un clip son error; sin congelar, error).
emulsion (rama emulsion, worktree ~/Developer/manim-saorin-wt/emulsion) — la película física de Tórculo
- Lo grande vive fuera de aquí:
~/Developer/torculo/emulsion(torculo_emulsion: catálogo, modelo, ficha, .cube, DCTL, página WebGPU),canon/peliculas/(50 stocks digitalizados de sus hojas técnicas),materias/shaders/emulsion.wgslymateria revela; en el fork,grafo.rs(pasada de clasegrafo) ym.Pelicula(worktree ~/Developer/torculo/wt/manimgx-emulsion, ramaemulsionde manimgx). - Fichero nuevo aquí: formato/pelicula.py (la línea
PELÍCULA …y su vocabulario cerrado). - Enganches de pocas líneas, marcados «LA PELÍCULA»: formato/gramatica.py (preámbulo, antes del metraje), formato/compilador.py
(
guion["pelicula"]), gx/enganches.py (bobina(): con PELÍCULA el baño es[Papel(), Pelicula(…)]), gx/correr.py (el aviso), metraje/lengua.py (REVELADO … · desde Xpara cualquier log con fórmula publicada), metraje/monta.py (L["pelicula"]), metraje/revela.py (entrada de cada medio: gelatina generada de cualquier log; con PELÍCULA, negativo en ACEScct y revelado por la emulsión). - No cambia nada de lo que había si el pliego no dice PELÍCULA (la bobina y
REVELADO … · desde i-logsiguen igual).