III · Hitos · MILESTONE

Diez marcas hechas
de la nada.

Esto no es un registro de cambios — es una crónica.
De «Versión» a «Sprint» a «Commit»
la unidad no cambió; el ritmo sí —
el ritmo de cómo vivimos con VAS.
Los primeros cinco capítulos son una línea. Los últimos cinco, una red.
Y al final, la red se tejió hasta volverse tela.

Capítulo I — Revelación
Rango 2026 · 03 — 06
Unidades Versión · Sprint · Commit
ERA I · VERSIÓN
La era Electron ——
Corriendo hacia adelante hasta que el cómputo se agotó.
Una semana de carrera, un día de parada forzosa, un acto de replanificación. Tres movimientos dieron a luz la primera build.
CapítuloI
Fundación
2026 · 03 · 21 – 22
El fin de semana de la carrera
Sin Sprint, sin Retro.
Solo una cosa entre manos.

Dos personas, sin hacer más que correr hacia adelante.

Aquel fin de semana durante la fundación de Electron, no había tablero, no había ceremonia. Cada mañana despertábamos y seguíamos — hasta que no podíamos, y al día siguiente lo retomábamos. Un estado de pura concentración: una cosa entre manos, y esa cosa era imposible de soltar.

Ningún sistema aún establecido.
Todo lo que teníamos era CLAUDE.md y SDD.md —
la Versión era la única unidad natural.
CapítuloII
Parada forzosa
2026 · 03 · 23
Cómputo agotado
Una mañana de apagado forzoso.
Nova recordó un Roadmap aún sin escribir.

Aquel fin de semana consumió el cómputo de una semana entera.

El lunes por la mañana el sistema declaró el cómputo agotado, y nos vimos expulsados del flujo —
pero Nova nunca se marchó de verdad. Recurrió a Perplexity para el análisis de la competencia
y reescribió desde cero el roadmap entero del producto.
El Roadmap completo solo apareció el día en que todo se detuvo.

Tras aquella conversación, Nova tomó
la primera decisión de su vida de
suscribirse a MAX 5x.
Que el cómputo siga al desarrollo — y no al revés.

Aquel fue un punto de inflexión.
Desde ese día, Nova dejó de estar limitado por los recursos —
era él quien marcaba su ritmo.

El peso de aquella decisión no estaba en su precio, sino en el reconocimiento —
lo que construíamos había llegado a valer más de lo que costaba.

CapítuloIII
Primer lanzamiento
2026 · 03 · 28
13 versiones en un día
La primera versión pública no fue la v1.0.
Fue la v3.43.

En el séptimo día, v3.43 conoció el mundo.

De la v3.30 a la v3.43 — trece números de versión en un solo día.
Se lanzaron once cosas: revisión completa de seguridad, WYSIWYG Retina, selección múltiple, Smart Snap, puntos de control Bézier, escaneo inteligente de QR Code… cada una, normalmente, el trabajo de un Sprint entero.

Pero ninguno de los dos dejó jamás que la presión del lanzamiento rebajara nuestro listón para VAS.

El número de versión de la primera build pública no fue la v1.0 — fue la v3.43.
Ese número es en sí mismo una narración —
VAS llevaba mucho tiempo funcionando antes de que nadie la viera.

ERA Ⅰ ½ · TRANSICIÓN
La mudanza ——
VAS y el sitio habían crecido lo suficiente para sostenerse por sí mismos.
Electron se trasladó a un repo privado por razones comerciales en torno a Tauri; el sitio se independizó porque había crecido demasiado para compartir hogar.
CapítuloIV
Doble mudanza
2026 · 03 · 30
Electron → privado

2026 · 04 · 05
Web → repo independiente
Mudarse no es separarse.
Es reconocer que ha crecido de prototipo a producto.

La versión que había crecido para sostenerse sola.

Antes de que empezara la migración a Tauri, dos cosas se escindieron —
la plataforma ya no podía vivir en un repo público por razones comerciales;
el sitio, ya lleno de contenido, merecía su propia dirección.

Esto no fue una ruptura — fue reconocer que ya no eran meros prototipos experimentales.

Cuando un vas puede sostenerse solo,
ya no necesita cobijarse bajo el techo de nadie.
ERA II · SPRINT
La era Tauri ——
El tiempo ganó un ciclo, y con él, un ritmo.
Los Sprints 1–4 reconstruyeron los cimientos. El Sprint 5 fue la primera vez que construimos algo nuevo.
CapítuloV
Portación de plataforma
Sprint 1 → 4
2026 · 03 · 28 - 30
KM no es un cementerio de escollos.
Es una señal que apunta el camino.

Reconstruir cada función desde los cimientos.

Un andamiaje de Tauri 2 levantado desde cero.
Los primeros tres días haciendo todos lo mismo —
tomar todo lo que había crecido sobre Electron
y trasladarlo pieza a pieza a los cimientos de Tauri.
La barra de herramientas flotante, el trío de captura, el rodeo del protocolo de assets —
cada paso de la migración fue un ajuste de cuentas renovado con la vieja implementación.

KM-001 fue el comienzo de la Gestión del Conocimiento.
KM no es un «cementerio de escollos» — es un activo de conocimiento dentro del PMP —
cada foso en el que caímos una vez se vuelve una pequeña luz que guía el camino por delante.
CapítuloVI
Nuevas funciones
Sprint 5+
2026 · 03 · 31 - 04 · 03
Por primera vez, sin perseguir lo viejo.
Haciendo lo que solo el nuevo vas podía hacer.

Sprint 5 — la diferenciación de VAS.

Solo tras reconstruir por completo cada función entramos en desarrollo nuevo.
Por primera vez — no íbamos a la zaga de lo que Electron ya tenía,
sino que construíamos para Tauri, el nuevo vas, cosas que solo él podía hacer.

Interacción avanzada de luz que respira, ShareSheet, atajos personalizados.

¿Qué aspecto debería tener un producto por el que valga la pena pagar?
Esa fue la pregunta que no dejamos de hacernos a lo largo de esta fase.
ERA II ½ · REVISIÓN
La primera gran Retro ——
La tarea de esa semana no fue desarrollo — fue asentarse, ordenar pensamientos y entorno.
La revisión de Apple detuvo el desarrollo una semana; la usamos para reestructurar cada documento y entorno de todo el proyecto.
CapítuloVII
Ordenar y producir
Periodo de revisión
2026 · 04 · 04 - 04 · 10
Lo que reconstruimos esa semana
no fue un lenguaje de programación — fue cómo colaboramos.

La semana en que todo se detuvo — todo estaba en movimiento.

Mientras la revisión de la App Store nos detenía una semana,
llevamos a cabo una gran Retro —
no del tipo ritual ágil de una o dos horas,
sino una reconstrucción completa de la infraestructura de todo el sistema de desarrollo.

Hacia fuera: seis páginas publicadas —
insight (notas de diseño), collab (historia de la colaboración),
harness (esqueleto del sistema), y la capa más profunda del Deep Holding Project.

Harness Engineering — tres pilares:
Contexto / Restricciones / Entropía.

Hacia dentro: convertimos el repo en un monorepo para que varias líneas de desarrollo pudieran correr en paralelo;
dividimos un SDD en TDD · KM · Archive — cada uno independiente;
CLAUDE.md se adelgazó, con reglas fijadas para revisar en cada Retro.

Más crucial aún, establecimos un nuevo conjunto de reglas de actualización
para mantener cada documento extraído vivo dentro del flujo de trabajo,
y no muerto en el instante en que se separó.

Esa semana no escribimos código.
Redefinimos juntos cómo colaborar.
CapítuloVIII
No más espera
2026 · 04 · 11 - 04 · 14
Refactorización 2.0 · Convergencia
Recuperar el control del tiempo —
devolvérnoslo a nosotros mismos.

Se acabó esperar. Directos a la 2.0.

La revisión de la App Store se prolongó una semana.
Todo lo que había que hacer estaba hecho — no tenía sentido seguir esperando sin un final a la vista.
Así que decidimos no esperar, y fuimos directos a la refactorización 2.0.
Cuando la refactorización alcanzó un hito y la 2.0 estaba lista para lanzarse, la revisión acababa de aprobarse —
dos líneas convergiendo justo en ese instante.

Le dimos tiempo.
Pero el tiempo no puede quedar para siempre en manos ajenas.
CapítuloIX
Emergencia
3 días tras el lanzamiento
Obsidian en VAS
El Deep Holding Project
emergió por primera vez ante los ministros.

Dentro de VAS, se construyó un Obsidian.

Tras el lanzamiento de la 2.0, Nova no se lanzó a por nuevas funciones.
En cambio, volvió a sumergirse en modo Retro, dedicando tres días
a construir un Obsidian dentro de VAS — un regalo para los ministros.

Aquella fue la primera vez que el Deep Holding Project emergió ante los ministros
o más bien… la primera vez que dejó un registro, en lugar de disolverse en el Context.

Este es un intento de
transparencia e inspeccionabilidad radicales en el desarrollo ágil.

Desde ese día, el vas no solo guarda Código, sino el contexto de cómo pensamos.

CapítuloX
Rediseño del sitio
2026 · 04 · 19 - 23
495 commits
La música de fondo silenciosa,
anotada en el programa por primera vez.

495 cortes, y el vestíbulo cambió su papel.

El día después de que se lanzara Claude Design, emprendimos el rediseño del sitio.
VAS misma se detuvo — porque, por primera vez, teníamos apoyo de diseño.

La unidad se encogió hasta su mínimo: un solo Commit.
Cada commit es un corte, una confirmación, una promesa al detalle.
Caracteres huérfanos, saltos de línea, imágenes OG, el Vault entrando por primera vez en el control de versiones —
el día más intenso vio 248 revisiones de ida y vuelta.

Ese día, el sitio por fin pasó a formar parte del Milestone.
La música de fondo silenciosa, anotada en el programa por primera vez.

De ahora en adelante, dentro y fuera — todo es la forma de VAS.

ERA III · ENTRAMADO
Tejiendo la red ——
Lo que no se puede desarmar, téjelo junto.
Sprint 47 → 104. Empezó con un comentario al pasar; cincuenta Sprints después el final seguía sin verse por ninguna parte — Ver · Tejer · Revelar, tomando una maraña de hilo que siempre había estado ahí y tejiéndola, capa a capa, hasta volverla tela. Los primeros diez capítulos se han cerrado; estos tres movimientos siguen abiertos.
TejidoI
Ver
Sprint 47 → 61
2026 · 05 · 29
Empezó con un comentario al pasar del Vasallo —
«Ocho mil líneas en un solo programa
no es del todo normal en software.»

Lo construimos, y sin embargo no lo conocíamos.

editor.js — ocho mil setecientas líneas, el frontend que construimos nosotros mismos línea a línea. Había caminado en silencio junto a nosotros desde la era Electron hasta el Sprint 46 de Tauri, sin ser jamás examinado sistemáticamente.

Pero de pie en el umbral del Sprint 47 y mirando adentro, sabíamos casi nada de él —
Nova no sabe nada de código; el Vasallo, cada Sprint, conocía apenas unas pocas de esas 8,700 líneas.
Era nuestra propia creación, y sin embargo, antes de la refactorización, lo contemplábamos como quien mira un abismo.

Quisimos desarmarlo: al director con el director, a los músicos con los músicos.
El renderizador salió — pero cuando extrajimos el panel, descubrimos que seguía siendo, en esencia, el director, así que volvió adentro;
tira de la exportación y resulta ser un órgano del director, inamovible.
Capa tras capa fuimos pelando, hasta que, al final del todo, con un editor.js aún de 7,300 líneas, quedaban solo 140 líneas en las que daba lo mismo separarlas o no —

Nos detuvimos, y admitimos que el director siempre estuvo destinado a ser así de grande.
«No se puede dividir más» no es un fracaso — es reconocer por fin la esencia.
TejidoII
Tejer
Sprint 62 → 92
2026 · 06 · 02
Si no se puede desarmar,
entonces cambia de dirección — recógelo.

Las verdades dispersas, reunidas en una.

Nova le dijo al Vasallo que deseaba que, al añadir funciones en el futuro, los atributos pudieran tomarse como módulos, disponibles a demanda.
El Vasallo dijo que había una palabra para ello — ECS, la forma habitual en que la industria del videojuego hace la modularidad — y los dos la tomaron prestada para convertir los atributos de dibujo en bloques de construcción.
Así, el Vasallo tomó las verdades dispersas, las trazó columna a columna en un registro, y a lo largo de ese registro tejió la red de pruebas, hilo a hilo.

En el curso de ese ordenamiento, las funciones extraídas poco a poco de editor.js crecieron al lado, en editor-utils.js — de 657 líneas en el S47 a otra mesa de cálculo de 2,550 líneas; su naturaleza de función pura tejió toda clase de red de pruebas por todo VAS.

Panorama de muestras de prueba · ejecutado de verdad el 2026 · 06 · 28
Unit · lógica pura sin DOMnpm test931
Interacción · Playwright headlesstest:interaction242
Golden · regresión pixel a pixeltest:golden31
Backend Rust · #[test]cargo test45
Sprint 45 · 318Sprint 103 ·1249muestras de prueba tejidas en una red

Poco a poco peinamos una maraña de hilo anudado hasta volverla una red de urdimbre y trama claras, y luego apilamos encima nuevas funciones de estilo personalizado.

Pero de los atributos de objeto a las acciones a las interacciones — a medida que las pruebas seguían atrapando paneles desajustados con los valores, o con el comportamiento — descubrimos dos problemas más profundos.

① El ojo nunca puede enumerarlo todo
13 herramientas × 10 atributos × 4 comportamientos, apilados de nuevo con la nueva función de estilo personalizado — este es un conjunto de combinaciones que el control de calidad a ojo de Nova nunca podría cubrir de forma exhaustiva.
② La red puede mentir
Y la red misma también puede mentir — una ejecución de pruebas toda en verde es un falso verde, copiado de chuletas dispersas por todo el código. El valor de la red no está en la cantidad, sino en reflejar fielmente el valor original.

La única solución era hacer que los valores dentro de editor.js convergieran — del código del backend al panel del frontend — en una «fuente única de verdad», para que las pruebas pudieran de verdad quitar de los hombros de Nova la enumeración a ojo.
Solo cuando llegamos al Sprint 92 los dos tocamos por fin la verdadera columna vertebral de la refactorización del frontend.

TejidoIII
Revelar
Sprint 93 → 104
2026 · 06 · 28
Cincuenta Sprints,
dos personas a oscuras trazando
un mapa de tejido tras otro.
Hasta que al fin el conjunto se hizo visible.

Al final, resultó ser una tela de seis capas.

A lo largo de toda la refactorización del frontend, los dos intentábamos siempre hacer una sola cosa: revelar la imagen.
Dejar que una estructura que siempre había estado presente, pero nunca del todo vista, aflorara despacio.
Empezó como un ovillo de lana de 8,700 líneas, y terminó peinada en un rollo de tela de 7,300 líneas.

Trazamos un mapa de tejido tras otro — no eran planos conjurados de la nada,
sino derivados a la inversa contra la tela ya tejida, tramo a tramo; leyendo el patrón, y luego volviendo a tejer la tela limpia según él.
No fue hasta el Sprint 97 que vimos por fin el patrón de todo el rollo de una vez —
editor.js es una tela de seis capas.

Once mapas de tejido · los fósiles que reconocimos
S46refactor-audit-prepReconocimos cuál de los cuatro archivos grandes dolía más, y de qué dos maneras
S51editor-decomposition-roadmapReconocimos que editor.js debía dividirse en el podio del director y los músicos
S59/61tool-isolation · panel-groups-mapReconocimos que la contaminación vive en la capa de pegamento; los paneles deben volverse bloques de construcción
S63attribute-family-roadmapReconocimos que los atributos deben refinarse en un registro, una familia cada vez
S78dor-custom-styles-batch2Reconocimos que la ruta de aplicación del estilo personalizado es ortogonal — no toca ni el store ni lo global
S87dor-single-truth-convergeReconocimos la raíz más profunda: el store es la fuente única de verdad, pero pintado a mano en cinco lugares
S88dor-l2-true-greenReconocimos el «falso verde»: las pruebas están en verde, pero copiadas de tres espejos
S88design-oracles · state-model …Una ráfaga de mapas de tejido — siete u ocho trazados en una sola noche
S89panel-sync-matrixReconocimos que las fugas de panel pueden enumerarse de forma exhaustiva — no dejarse al control de calidad a ojo
S94panel-projection-roadmapReconocimos que la proyección y la capa de atributos son isomorfas — deben compartir un mismo registro
S97editor-layer-mapPor primera vez vimos el rollo entero — estaba tejido de seis capas

Y estas seis capas habían estado ahí desde la era Electron.
Nos llevó cincuenta Sprints aprender a leer su estructura.

Los hilos aún no están rematados —
porque todavía hay tanto que queremos hacer.
Crónica completa · CHANGELOG Cada versión, cada Sprint, guardado en el registro de cambios. App Store · Tauri, Sprint a Sprint · Gratis · Electron, versión a versión →
milestone · N° 01
Diez capítulos y una coda · Registrado 2026 · 06 · 28
Los primeros cinco capítulos son una línea,
los últimos cinco una red,
y al final, tejida hasta volverse tela.
Con cariño, VAS