Si esta es tu primera vez leyendo esto, no te saltes la siguiente sección. Ahí explico en lenguaje plano qué es un schema, qué hace cada campo, y por qué cada primitivo tiene exactamente esos campos y no otros. Después podés navegar las 18 fichas con confianza.
Cuando un libro entra a una biblioteca, alguien le hace una ficha: título, autor, año, género, ISBN. Esos campos son los mismos para todos los libros, lo que cambia es el contenido. Sin ficha, el libro existe pero no se puede encontrar, clasificar ni cruzar con otros. La biblioteca queda como un cuarto con pilas de libros — no como una biblioteca.
El library de Umbra Studio es exactamente eso: un cuarto con muchas operaciones que ya funcionan (en Indietheka, en Transit, en lo que venga), pero que sin ficha quedan como prosa. El schema le pone once campos a cada operación — siempre los mismos once, llenos distinto en cada caso — para que después se puedan encontrar, componer, instanciar y medir.
Substrate es la capa más baja del library: las piezas más pequeñas y reutilizables. Lo que hay debajo de las verticales (Indietheka, Transit) y debajo de los meta-patrones que el Studio le vende a clientes. Si el substrate está bien definido, todo lo que se construya encima compone. Si está mal, se rompe en cada engagement nuevo.
Este documento muestra los 18 primitivos propuestos para v0.3, agrupados
en cuatro funciones operativas: Coordinación, Inputs, Outputs, y
Visibilidad y control. Tres son nuevos respecto al v0.2 (marcados NEW),
uno está renombrado (RENAMED) y catorce vienen del v0.2 confirmados por la
revisión de los agentes reales de Indietheka.
Cada primitivo tiene la misma estructura. La columna del medio explica qué significa el campo en lenguaje plano; la columna de la derecha lo aterriza con un ejemplo o analogía familiar. Lo que el campo no hace, también es importante — el schema está diseñado para no pretender hacer todo.
dominio.nombre-corto. Una vez publicado, no cambia.substrate (primitivo), vertical (aplicación de dominio) o meta (lo que vende el Studio).queue, editorial, seo, governance, etc. Permite filtrar.in_review, processing). La liberación explícita del lock al terminar, o un timeout que devuelve la fila al pool.queue.lock-and-release. El conjunto de pasos a ejecutar. Un manejador de éxito que escribe el estado final + outputs. Un manejador de fallo que revierte el estado a queued y anota el motivo.published con metadata del éxito (URL final, IDs creados, timestamps). O fila de vuelta en queued con un campo notes explicando qué falló para que la próxima corrida sepa qué reintentar.queued con nota de timeout.workflow.commit-then-verify-and-repair.
Published) o con flag específico (Published (metadesc out of range), Published (alt_text missing)). El trabajo nunca se reprocesa después de este punto — el flag es para acción humana, no para retry automático.workflow.transactional-attempt es más simple).
default cuando ninguna regla calza, para no perder el input.default — signal de que falta una regla. Revisión periódica del orden de las reglas (porque el orden importa: primera-coincidencia-gana).default. Reglas más usadas (validación de la jerarquía actual).unresolvable después de exhaustar la cascada — mejor que un asset incorrecto.unresolvable en categoría visible (un draft sin imagen necesita ojos antes de publicar).draft accesible al revisor. Tras aprobación, transición a published con timestamp y aprobador. Log de aprobación inmutable.--dry-run). Una convención de qué se simula (todos los writes, los API calls externos, las side effects) y qué se ejecuta de verdad (lectura, computación, validación).--dry-run antes de cada deploy. Revisión de divergencia entre dry-run y prod cuando se reporta — un dry-run que pasa pero prod falla es un bug serio del modo.