Saltar al contenido
Tórculo1.0 · borrador de trabajo

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

ramaquéestadoSPEC internoparte del estándar
estandarla 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.16Parte 1 (lengua), anexo de diagnósticos
vidala ficha anima por esqueleto, vida por defecto, actuar la voz, verbos de la vida, objetos vivosfusionada§3.15Parte 1 (verbos), Parte 3 (piezas)
piezasestá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 fotofusionada (2026-10-15)SPEC-PIEZAS.mdParte 3 (piezas) y perfil collage
futbolla 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 personajesfusionada (2026-10-15)SPEC-MESA-2.md §3.20Parte 1 (líneas de ficha y eventos), Parte 3 (piezas)
metrajemetraje real: ingesta, montaje por palabras, revelado, híbrido, intercambio, planilla, mesa entrevistafusionada (2026-10-15)SPEC-METRAJE.mdperfil «metraje» (Parte 1: líneas nuevas; órdenes nuevas)
generosgé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, canalfusionada (2026-10-15)SPEC-MESA-2.md §3.19perfil por género (Parte 1: líneas y órdenes nuevas)
tresdeescenario 3D, Blender por capas, 3D ligero, personaje 3D con vida, intercambio glTF/USD, GPU alquilada, lo generativo congeladofusionada (2026-10-15)SPEC-MESA-2.md §3.17perfil 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 ruta y MARIONETA nombre · de la foto x.jpg · … en el preámbulo (junto a PYTHON); los modificadores tras · de foto:|recorte:|prensada: y de clip…: (los parsea aspecto.collage_de); y, tras linea_de_ficha, aspecto.accion_declarada: QUIEN acción para 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 y mira, 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 con marioneta(…), personaje(…)… cuentan como bestiario.
  • formato/cli.py: mesa pieza … y mesa bestiario se despachan al principio de main (relanzan manim_saorin.estudio.cli en el Python de ManimGX).
  • La rama estandar también trajo un mesa bestiario (en ensena.py, lee el bestiario de un pliego). Al fusionar piezas, mesa bestiario queda 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í:

  1. Las líneas nuevas del pliego (forma exacta, con un ejemplo).
  2. Las órdenes nuevas de mesa (mesa xxx …).
  3. Qué perfil de conformidad toca (núcleo, cine, sonido, collage, 3D…).
  4. Si mesa lee las conoce: la rama estandar hizo 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 en formato/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: FORMATOS gana 9:16, 1:1 y 4:5; FORMATO admite el reencuadre tras ·: sigue a quien habla | sigue al sujeto | sigue a NOMBRE | centrado. Si generos tambié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 en metraje/lengua.py. REPARTO admite la voz filmada.
  • formato/cli.py: mesa ingesta|busca|monta|exporta|importa|planilla se despachan al principio de main a metraje/cli.py; mesa toca de un pliego con METRAJE va al montador de metraje.
  • formato/ensena.py: alta de las órdenes nuevas en el vocabulario.
  • Torculo: sentido/sentido/metraje.py y sentido metraje indexa|busca.
  • SPEC propio: SPEC-METRAJE.md (como SPEC-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, prefijos sobre la mano de X: y sobre «objeto»:; voz filmada en REPARTO; FORMATO 9:16 · 1:1 · 4:5 con reencuadre. Órdenes: mesa ingesta|casa|busca|monta|exporta| importa|planilla|entrevista. mesa lee y mesa explica ya 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.py solo tiene que dejar de forzar 1920×1080.
  • Arreglo común hecho por el camino (ya estaba también en master): sin clips/fichas.json no 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 en SPEC-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 en formato/aspecto.py y gx/ficha.py (piezas y vida añadían cosas distintas en el mismo sitio: se quedan las dos). mesa bestiario x.mesa es el de la lengua (lista piezas y acciones); mesa bestiario carpeta|x.py|x.toml, el del estudio. Nuevos errores de mesa lee que 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ámbulo GÉNERO, LIENZO, IDIOMA; formato 9:16 en las propiedades; las líneas de clip ecuación: rótulo: titular: fuente: dato: cita: llamada: paso: audiograma firma (generos/lineas.py).
  • formato/compilador.py: perfiles.aplica_doc al empezar y perfiles.aplica al acabar; el verbo genero; silencio 0 ya no se vuelve 3.
  • formato/cli.py: las órdenes de la productora se despachan al principio de main (antes que las del metraje); lee_pliego prensa las plantillas ({campo}, si {campo}:, variante X:).
  • formato/herramientas.py: el lint del género, las fuentes y la ortografía al final de lee; las cifras de contenido no cuentan en el porcentaje pobre.
  • formato/sonido.py (--lang del IDIOMA) y formato/tiempos.py (mlx-whisper local si no hay whisper.cpp).
  • composicion.py y gx/verbos.py: las cotas de la hoja salen de generos/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.py puede dejar de forzar 1920×1080.
  • Para tresde: el 3D matemático (ver: superficie) y los mapas de noticia quedan para vosotros; el perfil didáctico los 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_camara suma 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 lee las 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.wgsl y materia revela; en el fork, grafo.rs (pasada de clase grafo) y m.Pelicula (worktree ~/Developer/torculo/wt/manimgx-emulsion, rama emulsion de 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 X para 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-log siguen igual).