kx system
hyperlynxt | teo
atlas · convenciones

Convenciones

Naming, frontmatter, cómo se escribe cada cosa.

Fuente en la bóveda: 01 - matriz/Mapa de Convenciones.md

Cómo se nombran, se ubican y se escriben las cosas. El lugar donde se encuentra, en sentido operativo, cómo se crea algo nuevo en este sistema.

Se divide en dos por alcance: lo transversal a toda la bóveda vive en el CLAUDE.md raíz; lo propio de la capa sistema vive acá y en el CLAUDE.md de esa capa. Si algo aplica a más de un módulo, va arriba, no acá.

Había una tercera sede y ya no existe. Convenciones/ en la raíz de la bóveda se disolvió el 26.08.17: tenía un solo archivo (Templates.md, la mecánica de frontmatter compartida entre templates de Templater) y ese material se absorbió en Mapa de Instancias.md, que por convención es donde viven los templates. Cierra el pendiente que este mismo archivo tenía abierto desde el 26.07.26 sobre cuál de los dos era la fuente.

No entra acá el vocabulario en sí (ids, estados, tipos). Eso es Mapa de Taxonomia.md. Esta área es sobre la forma; esa, sobre las palabras.

Inventario

6 convenciones
construyendo 2 activo 4
construyendo 2
KX-P11

CLAUDE.md jerárquico

Raíz liviano + un CLAUDE.md por subcarpeta de trabajo real, cada uno con sus propias convenciones. Ya aplicado en 01 - sesiones (KX-M01) y kx-life/99 - deprecated (KX-M06), pendiente de extender al resto.

kx infraestructura moduletocado 25 de jul de 2026
KX-P25

Contexto.md por módulo

Cada modulo lleva un Contexto.md al lado de su CLAUDE.md, y la division entre los dos es la que hace que la convencion sirva: el CLAUDE.md dice como funciona el modulo (naming, frontmatter, pipeline, convenciones), el Contexto.md dice que trae Teo a ese dominio (su perspectiva, su voz, que leyo, que busca extraer). Son dos archivos porque se editan por motivos distintos y a ritmos distintos. Decidida el 26.08.15 (KX-S14), a partir de que Teo pidiera que cada modulo fuera un mini ecosistema con su propio contexto, sin encapsularse del resto. Tres argumentos la sostienen: el contexto de un modulo solo importa adentro de ese modulo (en ensayos no hace falta saber su relacion con su familia), cargar solo lo que aplica gasta menos tokens que tener todo en el agente, y es lo que permite entrar y salir de modulos trabajando con foco. Se apoya mecanicamente en la convencion de CLAUDE.md jerarquico (KX-P11), que ya hace que Claude Code cargue solo la carpeta donde se trabaja. Estado construyendo: tres andamios escritos (ensayos, stream journals, megathreads), todos con el contenido vacio a la espera de que Teo lo dicte (KX-T81), y los modulos sin carpeta todavia sin resolver.

kx sistemainicio 15 de ago de 2026tocado 15 de ago de 2026
activo 4
KX-P18

patch notes mensual del sistema

El log de eventos del sistema: un archivo por mes en _ kx system factory (KX-M04)/Patch Notes/, una seccion por dia, el dia mas reciente arriba. Formato de linea con area, verbo fijo y una linea de resumen. Se registra solo lo que cambia el estado de un objeto o cierra una decision. Arranca con backfill retroactivo de julio 2026. Pendiente: la vista semanal abstracta, que un archivo markdown no puede agrupar sin leerlo entero.

kx sistematocado 01 de ago de 2026
KX-P19

molde de archivo de area

Las once areas de 01 - matriz (una por archivo, con el prefijo Mapa de) y las seis de 02 - contexto personal, cada una con el mismo molde de cinco secciones: que es esta area, convenciones, decisiones fechadas, abierto, y donde se ve el inventario. La regla que lo sostiene, desde el reencuadre del 26.07.26: el archivo de la Matriz es la fuente y la coleccion es el indice derivado, asi que la entrada de cada item va completa. Reemplaza a la regla anterior de que la prosa nunca enuncia inventario, retirada por prohibir justo el contenido que la Matriz necesita. Encabezados desde #### para abajo.

kx sistematocado 01 de ago de 2026
KX-P22

design system de /kx/

El sistema de diseño único de toda la constelación /kx/, construido el 26.08.01. kx-tokens.css con las cuatro rampas de taxonomía (estado, tipo de pieza, tipo de tarea, autoría) declaradas como par claro/oscuro, sin compartir hue entre rampas donde puedan aparecer juntas. Paleta pastel verde/violeta/gold como acento primario, con pastillas de apoyo (rosa, cielo, arcilla, pizarra) para lo no taxonómico. Fondo pergamino con la textura de papel conservada, a pedido explícito. KxShell.astro como chrome único: topbar, breadcrumbs, footer, toggle de tema que persiste en localStorage y gana sobre prefers-color-scheme en las dos direcciones. Once componentes en src/components/kx/: Kicker, Pastilla, TarjetaObjeto, Medidor, Timeline (+TimelineItem), TablaDatos (ordenable, con filtrado integrado), BarraFiltros (chips acumulables, refleja query string, dispara el evento kx:filtros), Matriz, BloqueHistoria, Carriles, Grafo. Verificado con build limpio y probado en vivo: filtros, orden de columnas y el toggle de tema funcionan sobre datos reales en /kx/atlas/piezas/. Cero emojis en todo lo construido.

kx sistematocado 01 de ago de 2026
KX-P24

core y dimensiones del agente

La division interna del agente, decidida el 26.08.15 (KX-S13). No es tematica, es de frecuencia de carga, y sale de una distincion que Teo hizo explicita: hay contexto que tiene que estar en todo momento y en cada accion, y hay contexto que se puede ir a buscar cuando amerite. 00 - core/ se lee siempre y se mantiene corto a proposito, porque todo lo que se agregue ahi se paga en cada prompt; 01 - dimensiones/ se busca cuando la tarea lo pide. El criterio para mover algo de una a otra: si no saberlo cambia como se procesa un mensaje cualquiera, es core; si solo importa cuando el tema aparece, es dimension. Mecanicamente se apoya en la convencion de CLAUDE.md jerarquico (KX-P11) que ya existia: lo que el CLAUDE.md raiz trae es core, lo que apunta se busca. La convencion incluye ademas el reencuadre de quien escribe: la IA escribe contexto personal solo a traves del pipeline de context journals, y sigue prohibido inferirlo de un system journal, una stream journal o una conversacion suelta. Adentro del pipeline se escribe lo mas cerca posible de las palabras de Teo, porque es el unico material de la boveda donde parafrasear es una perdida.

kx agentetocado 15 de ago de 2026

Convenciones

Archivos y carpetas

  • El nivel de una carpeta se lee en dónde está. En la raíz hay dos carpetas y nada más, y con eso alcanza:
| Dónde está | Nivel | Ejemplos |
|---|---|---|
| Hija directa de la raíz | Las dos carpetas madre, y no hay más | `agente/`, `proyectos/` |
| Adentro de `agente/` | Agente y sistema | `agente/00 - teo/`, `agente/01 - sistema/` |
| Adentro de `proyectos/` | Proyecto | `proyectos/kx-life/`, `proyectos/hyperlynkx-page/` |
| Adentro de un proyecto, numerada con código | Módulo | `proyectos/kx-life/01 - stream journals (KX-M01)/` |
| `Y - {Nombre}` | Fuera del sistema, lo llena Teo | `proyectos/kx-life/98 - outer rim/Y - Testing Files/` |

Esto reemplaza a la regla del 26.08.15, que marcaba el nivel con el prefijo del nombre: guion bajo adelante para agente y sistema, nombre plano para proyecto, numerado para módulo. Funcionó mientras las cinco carpetas eran hermanas en la raíz, porque ahí el nombre era la única señal disponible. Con dos carpetas madre el prefijo dejó de tener trabajo, y los guiones bajos se fueron el 26.08.17 junto con la reestructuración. Un prefijo que codifica algo que la ubicación ya dice es ruido que hay que mantener sincronizado a mano.

Desde el 26.08.15 las carpetas Y - viven adentro de un outer rim, junto con intellectual testing formats/ (única carpeta suelta sin prefijo Y - que también se movió ahí). No es un nivel nuevo de la escalera de capas: es una bolsa de contención para lo que ya era «fuera del sistema», nada más. El prefijo Y - {Nombre} de cada carpeta de adentro no cambia.

El 26.08.17 la bolsa se partió en dos y bajó un nivel. outer-rim/ estaba en la raíz de la bóveda y servía a dos capas a la vez, que es lo que la volvía insostenible: adentro tenía las carpetas de Teo y también Y - Descartado/, el tacho de los documentos de diseño superados del Atlas. Quedó así:

| Antes | Ahora | Por qué |
|---|---|---|
| `outer-rim/Y - Descartado/` | `agente/01 - sistema/02 - diseño/descartado/` | Es el tacho del sistema. Con outer-rim bajando a un proyecto, quedaba el sistema tirando adentro de `kx-life` |
| Las otras seis carpetas | `proyectos/kx-life/98 - outer rim/` | Son de Teo y de vida. El `98` las pone al final del orden, antes de `99 - deprecated` |

Y aparece el par que le faltaba: proyectos/kx-life/00 - inner rim/, para lo que todavía no tiene categoría. La distinción entre los dos rims es de estado y no de tema: el inner puede entrar al sistema, el outer está afuera a propósito. Los tres prefijos de borde de proyectos/kx-life/ quedan leyéndose solos: 00 lo no clasificado, 98 lo que está afuera, 99 lo que el sistema dejó de usar.

  • Un nombre plano en la raíz es siempre un proyecto. Es la regla que evita que el próximo proyecto se disfrace de módulo, que es exactamente lo que pasó con la página hasta el 26.08.15.
  • Adentro de un proyecto, los módulos van numerados con el código entre paréntesis: {NN} - {nombre} (KX-M{NN}). El número es de orden y se puede cambiar libremente; el código es el id fijo y no se toca al reordenar. Aplicado el 26.08.17: 05 - megathreads (KX-M05) pasó a 04 - megathreads (KX-M05) para tapar el hueco que había dejado system factory al salir de kx-life, y el código quedó igual.
  • Los prefijos de borde no llevan código, porque no son módulos. 00 es lo que todavía no está clasificado (00 - inner rim/), 98 lo que está afuera del sistema a propósito (98 - outer rim/), 99 lo que el sistema deja de usar (99 - deprecated/), al final del orden a propósito.
  • Sacar el código del nombre de una carpeta no es renombrar el id. Los dos casos se resolvieron el 26.08.17: 99 - deprecated perdió su (KX-M06) porque es un tacho y no un módulo (nunca tuvo entrada en Mapa de Modulos.md), y _ kx system factory (KX-M04)/ perdió el suyo al fusionarse con el Atlas en agente/01 - sistema/, donde el nombre de la carpeta ya no es el de un módulo. Los ids KX-M06 y KX-M04 siguen vivos y no se reusan nunca. Esto reemplaza a la regla anterior de este archivo, que decía que a KX-M04 no se le sacaba el código: valía mientras esa carpeta siguiera siendo un módulo heredado, y dejó de valer cuando dejó de ser una carpeta de módulo.
  • Instancias con fecha primero: {AA.MM.DD} - {tipo}[ - {romano}].
  • Archivos de área y de referencia con nombre descriptivo en Title Case, sin fecha. El nombre es la identidad y otros archivos lo citan, así que renombrarlo es un cambio con costo, no cosmético.
  • Homogeneización: antes de inventar un nombre nuevo, reusar uno que ya exista en el sistema. La consistencia entre plataformas (carpetas, grupos de WhatsApp, proyectos de Claude) es un principio de diseño explícito.

Encabezados

En este módulo, nunca #, ## ni ###. Se arranca en #### y se anida con ##### y ######. El nombre del archivo ya hace de título en Obsidian.

La excepción son los documentos que se publican en la página, que necesitan jerarquía normal porque Astro genera los anchors de navegación a partir de los ## y ###.

Frontmatter

  • Comillas dobles en fechas y en todo string que pueda romper el parseo de YAML.
  • titulo vacío al crear, lo completa la skill de procesamiento.
  • Un campo nuevo se agrega cuando hay una pregunta que no se puede contestar sin él, no por completitud.
  • Lo que se puede derivar de otra cosa no se declara. Ejemplo aplicado: el área de una pieza se deriva de su tipo, así que kx-piezas no lleva campo area.
  • Un campo de lifecycle nuevo lleva el tipo de instancia en el nombre, namespaced con _. No estado a secas: estado_autopoiesis, estado_journal, estado_jornada, estado_contexto. El nombre bare queda reservado para cuando de verdad no hay ambigüedad posible en el sistema entero. Ya van cuatro instancias con enums distintos, así que la regla dejó de ser preventiva.

Cómo se agrega información

  • Fecha en todo lo que se agrega. Cada decisión, cada línea de patch notes, cada nota de área lleva su {AA.MM.DD}.
  • Granularidad por destino: el patch notes lleva una línea por evento; la entrada de la Matriz lleva la descripción completa y con qué se conecta; el objeto de la colección lleva el estado en una línea. La misma cosa se cuenta tres veces con tres niveles de detalle, y eso no es duplicación mientras cada uno cuente lo suyo.
  • La Matriz es la fuente, la colección es el índice derivado. Ver el CLAUDE.md del módulo. Reemplaza a la regla anterior de este archivo ("la prosa nunca enuncia inventario"), retirada el 26.07.26 por prohibir justo el contenido que la Matriz necesita tener.
  • Nunca borrar información de Teo. Lo que no encaja se lista verbatim como "sin clasificar" en el reporte de corrida.

Estilo

  • Nunca em-dashes. Regla dura de todo el sistema, sin excepciones.
  • Palabras dudosas de dictado: se marcan inline, nunca se adivina el reemplazo.
  • Sin tracking de métricas que no se pidió (conteos de palabras, porcentajes de muletillas).

Decisiones

9
17 de ago de 2026

el nombre de una carpeta dice su nivel, y por eso el código sale cuando el nivel cambia

KX-S15. La regla de que el nombre de una carpeta de primer nivel dice a qué nivel pertenece ya existía desde el 26.08.15. Lo que se agrega es la contracara, que faltaba: cuando una carpeta cambia de nivel, el nombre tiene que cambiar con ella.

El caso que lo forzó son los dos códigos heredados. 99 - deprecated (KX-M06) llevaba código de módulo sin ser un módulo, y sin tener entrada en Mapa de Modulos.md; agente/01 - sistema/ lo arrastra de cuando era un módulo entre otros y deja de serlo con la fusión. La regla anterior de este archivo decía que a KX-M04 no se le sacaba «porque los ids no se renombran nunca», y ahí estaba el error de razonamiento que conviene dejar escrito: el id y el nombre de la carpeta son dos cosas. Sacar (KX-M06) del nombre no toca el id KX-M06, que sigue vivo, deprecado y sin reusarse. Confundirlos hacía que un nombre de carpeta quedara congelado por una regla que protegía otra cosa.

Se aplicó de una sola vez el mismo día, junto con el renumerado de proyectos/kx-life/ (megathreads de 05 a 04, cerrando el hueco que había dejado system factory al salir) y la partición de outer-rim/ en un inner rim y un outer rim.

Ver el diagnóstico completo y el resto de la reestructuración en 02 - diseño/planes y reencuadre/Plan de Reestructuracion - Jerarquia de la Boveda.md. Los pasos 1 a 3 están ejecutados, del 4 al 6 no.

15 de ago de 2026

cada módulo lleva su Contexto.md, separado del CLAUDE.md

KX-S14. Teo pidió que cada módulo fuera «un mini ecosistema en sí mismo», con su propio contexto, aclarando dos veces que no quiere encapsularlos ni volverlos independientes. La convención que salió: un Contexto.md al lado del CLAUDE.md de cada módulo, y la separación entre los dos es lo que hace que sirva.

| Archivo | Contesta | Se edita cuando |
|---|---|---|
| `CLAUDE.md` | Cómo funciona este módulo: naming, frontmatter, pipeline | Cambia una convención |
| `Contexto.md` | Qué trae Teo a este dominio: su perspectiva, su voz, qué leyó, qué busca | Teo dicta algo nuevo sobre sí mismo en ese dominio |

Tres argumentos, y el primero es el que decide: el contexto de un módulo solo importa adentro de ese módulo. En ensayos no hace falta saber la relación de Teo con su familia; sí hace falta saber con qué voz escribe. El segundo es de costo, y Teo lo señaló solo: cargar únicamente lo que aplica gasta menos que tener todo en el agente. El tercero es lo que habilita, que es entrar y salir de módulos trabajando con foco.

Se descartó meterlo adentro del CLAUDE.md de cada carpeta, que era gratis mecánicamente porque la convención de CLAUDE.md jerárquico (KX-P11) ya carga la carpeta donde se trabaja. Mezcla dos cosas que se editan por motivos distintos y a ritmos distintos. También se descartó una carpeta de módulos adentro del agente: dejaba todo el contexto junto, y rompía justo el mini ecosistema que se pedía.

Dónde está el límite con el agente, que es la parte que se va a poder equivocar: si el dato describe a Teo en general, va al agente; si describe a Teo en ese dominio, va al módulo. Su voz de escritura va a ensayos, su neurodivergencia va al agente, aunque la segunda explique la primera.

15 de ago de 2026

la IA sí escribe contexto personal, pero solo por el pipeline de context journals

Mientras el contexto personal vivió en 00 - kx atlas system/02 - contexto personal/ (nombre de entonces, hoy _ kx atlas system), la regla fue dura y sin excepciones prácticas: lo llena Teo, la IA no escribe ahí, porque el contexto personal mal parafraseado es peor que vacío. La carpeta se mudó al agente el 26.08.15 y el pipeline de context journals la vuelve inaplicable tal cual estaba: si Teo dicta veinte context journals y nadie los procesa, no hay contexto.

La regla se reencuadra en vez de retirarse, y la diferencia es la fuente del material:

| | Antes | Ahora |
|---|---|---|
| Material dictado por Teo **para** contexto (context journal) | No existía | Se procesa y se escribe |
| Contexto inferido de un system journal, una stream journal o una conversación | Prohibido | **Sigue prohibido** |

El riesgo que la regla original protegía no era que la IA escribiera, era que inventara: que dedujera quién es Teo de material dictado con otro propósito y lo dejara escrito como si él lo hubiera dicho. Eso no cambió.

Y adentro del pipeline se mantiene la restricción de fondo, que ya estaba escrita en la spec de procesar-system-journal para el caso de pedido explícito: se escribe lo más cerca posible de las palabras de Teo. Es el único material de la bóveda donde parafrasear es una pérdida y no una mejora, porque las palabras exactas con las que alguien describe su propia experiencia son el dato.

15 de ago de 2026

el contexto se procesa con el modelo más capaz, no con el más barato

Teo lo dejó dicho sin ambigüedad: «para el contexto voy a utilizar el modelo de Opus 5». El motivo es de exigencia y no de preferencia: el material se analiza desde la psicología y la neurología académicas, no como una lista de gustos, y la diferencia entre un modelo y otro se paga en calidad de análisis sobre el archivo que después alimenta todo lo demás.

Es la primera convención del sistema que fija un modelo para una tarea, así que conviene acotarla: aplica al procesamiento de context journals y a las dimensiones del agente, no a la bóveda entera. Limpieza, treats y quotes no la necesitan.

Nota de vigencia, porque este es el tipo de convención que envejece sola: nombra un modelo puntual, y un nombre de modelo caduca antes que el criterio. Lo que hay que preservar cuando eso pase es el criterio, que es usar el más capaz disponible.

01 de ago de 2026

un objeto entra al Atlas cuando se empieza a implementar, no cuando se termina

El criterio de cuándo algo se carga en la Matriz y en las colecciones: en el momento en que se empiezan a crear carpetas y archivos, con el estado más bajo que corresponda (idea o construyendo), y se sube después a medida que Teo diga que está terminado.

La alternativa era esperar a que la cosa estuviera hecha para registrarla. Se descarta porque produce el peor error posible en un sistema que existe para saber dónde estás parado: el Atlas mostraría menos de lo que hay, y justo se comería lo que está en obra, que es lo único que uno necesita ver cuando vuelve el sábado. Que un objeto exista en estado idea no es ruido, es el dato.

Encaja con la distinción entre activo y finalizado que ya está en Mapa de Taxonomia.md, y es la misma preferencia de fondo: que el estado del sistema nunca mienta hacia el lado optimista.

01 de ago de 2026

el patch notes también contesta dónde lo dejé

La convención de registrar todo cambio ya existía. Lo que se agrega es el segundo propósito, que cambia qué se espera de ella: además del linaje de actualizaciones y de poder verificar si una corrida se ejecutó o no, el patch notes es lo que contesta en qué estaba trabajando cuando se retoma después de unos días.

Es el mismo dato leído de dos formas, y por eso no compite con la Matriz: la Matriz dice qué existe hoy, el patch notes dice qué se movió último. La consecuencia operativa es que la regla sube de alcance: Teo la quiere en el CLAUDE.md raíz y no solo en el del Atlas, porque aplica a cualquier sesión que toque la bóveda (KX-T54).

01 de ago de 2026

los campos de lifecycle se namespacean por tipo de instancia

Motivo concreto: Teo preguntó si el estado nuevo de los system journals (sin-procesar/procesada) se compartía con el de las stream journals. La respuesta era no (las stream journals usan estado_journal, con su propio catálogo de valores, ni siquiera tienen colección de página), pero la pregunta expuso el problema real: estado a secas ya lo usan kx-modulos, kx-piezas y kx-tareas, cada uno con un enum distinto, y ahora también los system journals.

No hay riesgo técnico. Cada colección tiene su propio schema de Zod, y el frontmatter de un archivo no interfiere con el de otro. El riesgo es humano y de proceso: destilar-sesion-kx lee varias colecciones a la vez y escribe en varias a la vez, y un nombre de campo genérico repetido con significados distintos en cada esquema es justo el tipo de cosa que se termina escribiendo en el archivo equivocado, o con el valor del enum que no corresponde.

La regla: todo campo de lifecycle nuevo (estado, o lo que cumpla ese rol) lleva el tipo de instancia como sufijo namespaced: estado_autopoiesis para los system journals, estado_journal para las stream journals (que ya lo hacía, sin que fuera una regla escrita hasta ahora), estado_jornada para las jornadas de implementación.

Qué NO se tocó. kx-modulos, kx-piezas y kx-tareas siguen con estado a secas. La regla es hacia adelante, sobre lo que se crea de acá en más; renombrar esos tres campos existentes (que tocaría el schema, cada objeto de las tres colecciones, y toda la documentación que los cita) es un cambio bastante más grande, y no se pidió. Queda anotado en "Abierto" por si en algún momento se decide hacerlo.

26 de jul de 2026

el nivel de encabezado arranca en cuatro

Preferencia explícita de Teo: los subtítulos grandes no le gustan. Aplica a todo archivo de este módulo, con la excepción de los publicables.

26 de jul de 2026

CLAUDE.md jerárquico, uno por carpeta de trabajo real

Cada carpeta con convenciones propias lleva su CLAUDE.md, para que una sesión cargue solo lo que necesita en vez de todo el contexto de la bóveda. El raíz se mantiene corto a propósito y funciona como mapa, no como manual.

Abierto

  • kx-modulos, kx-piezas y kx-tareas siguen con estado a secas, sin namespacear. La convención nueva del 26.08.01 es hacia adelante; renombrar los tres campos existentes es un cambio más grande (schema, todos los objetos, toda la documentación que los cita), sin pedir todavía.
  • ~~Dónde caen los archivos que no encajan en ningún módulo (KX-T52).~~ Cerrado el 26.08.17: es proyectos/kx-life/00 - inner rim/, y además es el destino por default de toda nota nueva de Obsidian. La reconciliación contra Y - Testing Files/ quedó hecha: testing files es para calibrar skills y vive en el outer rim, el inner rim es para captura sin clasificar.
  • KX-T23: diccionario de dictado, la lista de reemplazos ya confirmados versus el marcador inline para casos nuevos.
  • KX-T18: catálogo de banderas. El formato BANDERA: TIPO está propuesto pero los tipos no están definidos.
  • KX-T28: frontmatter de evento, mecanismo en duda.
  • KX-T43: research de properties.
  • ~~El material de Convenciones/Templates.md no está reflejado acá ni al revés.~~ Cerrado el 26.08.17: la fuente es Mapa de Instancias.md, que absorbió el material entero, y Convenciones/ se disolvió.
  • La numeración de la mitad teo/ es una excepción razonada y hay que defenderla. Cuando se ejecute el paso 4, los números se van de la capa sistema y se quedan en 00 - core/ y 01 - dimensiones/, porque ahí codifican frecuencia de carga. Si alguna corrida futura los saca «por consistencia», se pierde la única señal en el árbol de qué se lee siempre y qué se busca.