<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Luis Torres</title>
    <description>The latest articles on DEV Community by Luis Torres (@ltorresu82).</description>
    <link>https://dev.to/ltorresu82</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1090788%2F83343dcb-e76d-4c9d-8958-645b996b4c13.jpg</url>
      <title>DEV Community: Luis Torres</title>
      <link>https://dev.to/ltorresu82</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ltorresu82"/>
    <language>en</language>
    <item>
      <title>Ley 21.719: el problema no es solo legal, también es arquitectónico</title>
      <dc:creator>Luis Torres</dc:creator>
      <pubDate>Wed, 03 Jun 2026 21:30:17 +0000</pubDate>
      <link>https://dev.to/ltorresu82/ley-21719-el-problema-no-es-solo-legal-tambien-es-arquitectonico-41g6</link>
      <guid>https://dev.to/ltorresu82/ley-21719-el-problema-no-es-solo-legal-tambien-es-arquitectonico-41g6</guid>
      <description>&lt;p&gt;La Ley 21.719, que moderniza la regulación chilena sobre protección de datos personales, debería abrir una conversación técnica importante en Chile: dejar de tratar los datos personales como si fueran simples campos de formulario.&lt;/p&gt;

&lt;p&gt;Durante años muchas organizaciones usaron el RUT, el email o el teléfono como llaves primarias, identificadores de integración o campos cómodos para cruzar información entre sistemas.&lt;/p&gt;

&lt;p&gt;Era práctico.&lt;/p&gt;

&lt;p&gt;Pero también creó arquitecturas donde el dato personal está demasiado distribuido, demasiado expuesto y demasiado difícil de gobernar.&lt;/p&gt;

&lt;p&gt;Mi tesis es simple: la Ley 21.719 no solo exige actualizar políticas de privacidad. En la práctica, también empuja a revisar cómo diseñamos identidad, integraciones, analítica, reportes, consentimiento y retención.&lt;/p&gt;

&lt;h2&gt;
  
  
  Del RUT como llave al RUT como dato gobernado
&lt;/h2&gt;

&lt;p&gt;En una arquitectura moderna, una persona no debería ser "el RUT" dentro de un sistema.&lt;/p&gt;

&lt;p&gt;Debería existir como una entidad interna representada por un identificador técnico no significativo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;person_id
customer_id
subject_id
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El RUT, el email, el teléfono, la dirección o el nombre deberían ser atributos personales gobernados, no la identidad estructural del sistema.&lt;/p&gt;

&lt;p&gt;Esto cambia la pregunta de diseño.&lt;/p&gt;

&lt;p&gt;Antes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;¿Cuál es el RUT del cliente?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Después:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;¿Qué dato personal necesito, para qué finalidad, bajo qué base legal,
durante cuánto tiempo y con qué evidencia de cumplimiento?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Tokenización: operar sin exponer de más
&lt;/h2&gt;

&lt;p&gt;La tokenización puede ser una herramienta muy útil en este cambio.&lt;/p&gt;

&lt;p&gt;En vez de que todos los sistemas guarden el RUT, email o teléfono real, pueden guardar tokens o identificadores internos. Solo una capa gobernada debería poder resolver esos tokens al dato real cuando exista una finalidad válida.&lt;/p&gt;

&lt;p&gt;Ejemplo conceptual:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sistema comercial:
cliente_id = 89231
rut_token = tok_7F92A1
email_token = tok_9CD114

Bóveda gobernada:
tok_7F92A1 -&amp;gt; 12.345.678-9
tok_9CD114 -&amp;gt; persona@correo.cl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esto no significa que el dato deje automáticamente de estar regulado. Si la organización puede volver desde el token al dato real, sigue existiendo tratamiento de datos personales.&lt;/p&gt;

&lt;p&gt;Pero reduce la exposición.&lt;/p&gt;

&lt;p&gt;Y eso importa.&lt;/p&gt;

&lt;p&gt;El RUT no debería viajar por todos los sistemas si muchos de ellos pueden operar con una referencia interna.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tokenizar no es anonimizar
&lt;/h2&gt;

&lt;p&gt;Este punto es importante.&lt;/p&gt;

&lt;p&gt;Tokenizar reduce exposición, pero no convierte mágicamente un dato personal en dato anónimo.&lt;/p&gt;

&lt;p&gt;Si la organización puede resolver el token y volver al RUT, email, teléfono o nombre real, entonces sigue existiendo un dato personal bajo gobierno. La diferencia es que ahora el acceso al dato real puede quedar concentrado, trazado y controlado.&lt;/p&gt;

&lt;p&gt;La anonimización real es otra cosa: implica que no sea razonablemente posible volver a identificar a la persona.&lt;/p&gt;

&lt;p&gt;Por eso el objetivo de tokenizar no debería ser "salirse de la ley".&lt;/p&gt;

&lt;p&gt;El objetivo debería ser diseñar sistemas que operen con menos exposición, menos replicación y más control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Una bóveda central de datos personales
&lt;/h2&gt;

&lt;p&gt;En empresas con muchos sistemas, el problema no es solo proteger una base de datos.&lt;/p&gt;

&lt;p&gt;El problema es saber:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;dónde están los datos personales,&lt;/li&gt;
&lt;li&gt;quién los consulta,&lt;/li&gt;
&lt;li&gt;para qué finalidad,&lt;/li&gt;
&lt;li&gt;bajo qué base legal,&lt;/li&gt;
&lt;li&gt;por cuánto tiempo se conservan,&lt;/li&gt;
&lt;li&gt;a qué proveedores se entregan,&lt;/li&gt;
&lt;li&gt;cómo se eliminan, bloquean o anonimizan.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por eso tiene sentido pensar en una bóveda central de datos personales o, más ampliamente, una capa central de gobierno de identidad y datos personales.&lt;/p&gt;

&lt;p&gt;Modelo conceptual:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CRM / ERP / BI / Soporte / Documentos
        |
        | usan person_id o tokens
        v
Capa de gobierno de datos personales
        |
        | valida finalidad, permisos, auditoría, retención
        v
Bóveda de datos personales
        |
        | contiene RUT, email, teléfono, dirección, datos sensibles
        v
Dato real solo cuando corresponde
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La bóveda no debería ser una base de datos más.&lt;/p&gt;

&lt;p&gt;Debería ser el punto donde se decide qué sistema puede acceder a qué dato, bajo qué contexto, con qué finalidad y dejando qué evidencia.&lt;/p&gt;

&lt;p&gt;También debería tener controles fuertes: cifrado, segregación de permisos, auditoría, monitoreo, gestión de llaves y reglas claras para resolver tokens.&lt;/p&gt;

&lt;p&gt;Centralizar sin gobierno solo mueve el riesgo a un lugar más crítico.&lt;/p&gt;

&lt;h2&gt;
  
  
  El consentimiento no es un checkbox
&lt;/h2&gt;

&lt;p&gt;Otra consecuencia técnica: el consentimiento no debería modelarse como una simple columna booleana.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;accepted_terms = true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eso dice muy poco.&lt;/p&gt;

&lt;p&gt;Un consentimiento útil para gobierno debería registrar al menos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;quién consintió,&lt;/li&gt;
&lt;li&gt;cuándo,&lt;/li&gt;
&lt;li&gt;para qué finalidad,&lt;/li&gt;
&lt;li&gt;bajo qué versión del texto,&lt;/li&gt;
&lt;li&gt;por qué canal,&lt;/li&gt;
&lt;li&gt;cómo puede revocarlo,&lt;/li&gt;
&lt;li&gt;qué sistemas usan esa autorización.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El consentimiento debería ser un evento auditable, no solo un checkbox.&lt;/p&gt;

&lt;h2&gt;
  
  
  Los derechos de las personas son capacidades de plataforma
&lt;/h2&gt;

&lt;p&gt;Acceso, rectificación, supresión, oposición, bloqueo, portabilidad y revocación del consentimiento no son solo temas de atención al cliente.&lt;/p&gt;

&lt;p&gt;Son capacidades que la arquitectura debería soportar.&lt;/p&gt;

&lt;p&gt;Si una organización tiene CRM, ERP, mesa de ayuda, analítica, almacenamiento documental, email, OCR, reportes, integraciones y planillas, responder correctamente a una solicitud de una persona titular no es trivial.&lt;/p&gt;

&lt;p&gt;Se necesita poder localizar datos, corregirlos, bloquearlos, exportarlos o eliminarlos en todos los sistemas relevantes.&lt;/p&gt;

&lt;p&gt;Si no existe trazabilidad, inventario y gobierno transversal, estos derechos terminan dependiendo de procesos manuales frágiles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Retención por diseño
&lt;/h2&gt;

&lt;p&gt;Muchas organizaciones guardan datos "por si acaso".&lt;/p&gt;

&lt;p&gt;La nueva lógica de protección de datos empuja a justificar la conservación.&lt;/p&gt;

&lt;p&gt;Cada dato debería tener una política asociada:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dato: email
finalidad: contacto operacional
base legal: según el caso aplicable
retención: mientras exista la relación y por el plazo definido
acción final: eliminar, anonimizar o bloquear
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La retención indefinida es una deuda técnica con forma legal.&lt;/p&gt;

&lt;h2&gt;
  
  
  La planilla Excel también es tratamiento
&lt;/h2&gt;

&lt;p&gt;Este punto suele olvidarse.&lt;/p&gt;

&lt;p&gt;No basta proteger el sistema principal si después los datos terminan en exportaciones, reportes, correos, planillas, carpetas compartidas, dashboards, logs o respaldos sin control.&lt;/p&gt;

&lt;p&gt;La fuga muchas veces no ocurre en el core transaccional.&lt;/p&gt;

&lt;p&gt;Ocurre en la planilla exportada "temporalmente" que nadie gobierna.&lt;/p&gt;

&lt;h2&gt;
  
  
  Los proveedores también son parte de la arquitectura
&lt;/h2&gt;

&lt;p&gt;Cloud, email, OCR, analítica, CRM externo, storage, herramientas de IA, mesa de ayuda y marketing automation pueden tratar datos personales.&lt;/p&gt;

&lt;p&gt;Por eso el perímetro real de protección de datos incluye proveedores, contratos, instrucciones de tratamiento, subencargados, transferencias internacionales y medidas de seguridad.&lt;/p&gt;

&lt;p&gt;En protección de datos, la arquitectura también incluye a tus proveedores.&lt;/p&gt;

&lt;h2&gt;
  
  
  Seguridad de la información no es lo mismo que protección de datos
&lt;/h2&gt;

&lt;p&gt;Este punto también suele confundirse.&lt;/p&gt;

&lt;p&gt;ISO 27001, cifrado, backups, monitoreo, control de acceso, tokenización o anonimización ayudan mucho. Son controles relevantes para reducir riesgo.&lt;/p&gt;

&lt;p&gt;Pero no reemplazan el cumplimiento de protección de datos personales.&lt;/p&gt;

&lt;p&gt;La seguridad de la información pregunta principalmente:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;¿Cómo protegemos la confidencialidad, integridad y disponibilidad de la información?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;La protección de datos personales agrega otras preguntas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;¿Por qué tratamos este dato personal?&lt;/li&gt;
&lt;li&gt;¿Cuál es la base legal?&lt;/li&gt;
&lt;li&gt;¿La finalidad es legítima y específica?&lt;/li&gt;
&lt;li&gt;¿El dato es proporcional o estamos pidiendo de más?&lt;/li&gt;
&lt;li&gt;¿Cuánto tiempo lo conservamos?&lt;/li&gt;
&lt;li&gt;¿Cómo ejerce sus derechos la persona titular?&lt;/li&gt;
&lt;li&gt;¿Qué evidencia tenemos de cumplimiento?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Una empresa puede tener buenos controles de seguridad y aun así tratar datos personales sin finalidad clara, conservarlos indefinidamente o no poder responder una solicitud de supresión, acceso o rectificación.&lt;/p&gt;

&lt;p&gt;Por eso anonimizar, seudonimizar, tokenizar o cifrar son medios.&lt;/p&gt;

&lt;p&gt;No son el cumplimiento completo.&lt;/p&gt;

&lt;p&gt;La finalidad es que el tratamiento sea lícito, proporcional, transparente, seguro y demostrable.&lt;/p&gt;

&lt;h2&gt;
  
  
  El cumplimiento se demuestra
&lt;/h2&gt;

&lt;p&gt;Una de las ideas más relevantes de la Ley 21.719 es la responsabilidad.&lt;/p&gt;

&lt;p&gt;No basta decir que se cumple.&lt;/p&gt;

&lt;p&gt;Hay que poder demostrarlo.&lt;/p&gt;

&lt;p&gt;Eso implica logs, políticas, controles, contratos, inventarios, registros de consentimiento, trazabilidad de accesos, gestión de incidentes, retención, bloqueo, eliminación y decisiones documentadas.&lt;/p&gt;

&lt;p&gt;La protección de datos no se resuelve solo con políticas en PDF.&lt;/p&gt;

&lt;p&gt;Se resuelve con arquitectura, gobierno y evidencia.&lt;/p&gt;

&lt;h2&gt;
  
  
  Una ruta práctica
&lt;/h2&gt;

&lt;p&gt;Si tuviera que ordenar este cambio en pasos técnicos, partiría por algo así:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inventariar tratamientos y sistemas que almacenan o procesan datos personales.&lt;/li&gt;
&lt;li&gt;Identificar dónde se usa RUT, email o teléfono como llave técnica.&lt;/li&gt;
&lt;li&gt;Separar identidad interna de atributos personales.&lt;/li&gt;
&lt;li&gt;Definir políticas de finalidad, base legal, acceso y retención por tipo de dato.&lt;/li&gt;
&lt;li&gt;Tokenizar o seudonimizar donde el dato real no sea necesario.&lt;/li&gt;
&lt;li&gt;Crear una capa gobernada para resolver datos reales solo cuando corresponda.&lt;/li&gt;
&lt;li&gt;Registrar consentimiento, accesos, exportaciones, eliminaciones y bloqueos como eventos auditables.&lt;/li&gt;
&lt;li&gt;Revisar proveedores, integraciones, reportes, BI, logs y planillas.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No todo esto se implementa de una vez.&lt;/p&gt;

&lt;p&gt;Pero sí se puede comenzar dejando de diseñar nuevos sistemas alrededor del RUT como identificador principal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cierre
&lt;/h2&gt;

&lt;p&gt;La Ley 21.719 no debería leerse solo como una obligación legal.&lt;/p&gt;

&lt;p&gt;También es una señal de madurez arquitectónica.&lt;/p&gt;

&lt;p&gt;En Chile deberíamos dejar atrás sistemas donde el RUT, email o teléfono viajan por todas partes como llaves técnicas.&lt;/p&gt;

&lt;p&gt;El futuro debería ser otro: identificadores internos, tokenización, bóvedas de datos personales, trazabilidad, retención, derechos automatizables y gobierno centralizado.&lt;/p&gt;

&lt;p&gt;El desafío no es llenar formularios de cumplimiento.&lt;/p&gt;

&lt;p&gt;Es rediseñar cómo las organizaciones capturan, usan, comparten, protegen y eliminan datos personales.&lt;/p&gt;

&lt;p&gt;Si todos los sistemas necesitan el RUT para funcionar, probablemente el problema no es solo legal.&lt;/p&gt;

&lt;p&gt;Es de diseño.&lt;/p&gt;




&lt;h2&gt;
  
  
  Fuentes y alcance
&lt;/h2&gt;

&lt;p&gt;La ley no dice literalmente "use una bóveda central" ni "tokenice el RUT".&lt;/p&gt;

&lt;p&gt;Eso sería una decisión de arquitectura.&lt;/p&gt;

&lt;p&gt;Lo que sí establece son principios y obligaciones que hacen razonables estas soluciones: licitud, finalidad, proporcionalidad, calidad, responsabilidad, seguridad, transparencia, confidencialidad, derechos de las personas titulares, reglas de conservación, supresión o anonimización, y deberes del responsable y de quienes tratan datos bajo su responsabilidad.&lt;/p&gt;

&lt;p&gt;Desde esa base, identificadores internos, seudonimización, tokenización, bóvedas de datos personales, trazabilidad y retención por diseño son formas técnicas de implementar mejor esos principios.&lt;/p&gt;

&lt;p&gt;Fuentes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.bcn.cl/leychile/Navegar?idNorma=1209272&amp;amp;idParte=10527471&amp;amp;idVersion=2026-12-01" rel="noopener noreferrer"&gt;Ley 21.719 en Ley Chile, Biblioteca del Congreso Nacional&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://obtienearchivo.bcn.cl/obtienearchivo?id=repositorio%2F10221%2F37137%2F1%2FInforme_12_25_Ley_Datos_Personales_rev.pdf" rel="noopener noreferrer"&gt;Síntesis BCN sobre la Ley 21.719&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Nota: esta publicación es una reflexión técnica y arquitectónica sobre protección de datos personales. No constituye asesoría legal.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>privacy</category>
      <category>data</category>
      <category>security</category>
    </item>
    <item>
      <title>Los agentes de código necesitan memoria durable, no solo contexto</title>
      <dc:creator>Luis Torres</dc:creator>
      <pubDate>Sat, 30 May 2026 17:02:47 +0000</pubDate>
      <link>https://dev.to/ltorresu82/los-agentes-de-codigo-necesitan-memoria-durable-no-solo-contexto-2hia</link>
      <guid>https://dev.to/ltorresu82/los-agentes-de-codigo-necesitan-memoria-durable-no-solo-contexto-2hia</guid>
      <description>&lt;p&gt;Este texto nace de una práctica concreta usando agentes de código en repos reales.&lt;br&gt;
El problema no fue que faltara contexto, sino que algunas decisiones importantes&lt;br&gt;
quedaban en lugares donde el repositorio no podía recordarlas.&lt;/p&gt;

&lt;p&gt;Cuando trabajamos con agentes de código, es normal pensar primero en contexto:&lt;br&gt;
archivos relevantes, instrucciones del proyecto, historial de la conversación,&lt;br&gt;
errores recientes, logs, planes y pruebas.&lt;/p&gt;

&lt;p&gt;Todo eso ayuda al agente a resolver la tarea actual.&lt;/p&gt;

&lt;p&gt;Pero hay un problema distinto que aparece rápido en repos reales: algunas decisiones&lt;br&gt;
técnicas no deberían vivir solo en el chat.&lt;/p&gt;

&lt;p&gt;Si una decisión cambia una frontera de servicio, define qué sistema es fuente de&lt;br&gt;
verdad, fija un contrato de API, decide un runtime productivo o establece una&lt;br&gt;
política técnica como "no usar fallbacks silenciosos", esa decisión afecta el trabajo&lt;br&gt;
futuro. No basta con que el agente actual la entienda. El repositorio también debe&lt;br&gt;
recordarla.&lt;/p&gt;

&lt;p&gt;Ahí entra la idea de memoria durable del repo.&lt;/p&gt;
&lt;h2&gt;
  
  
  El problema
&lt;/h2&gt;

&lt;p&gt;Un agente puede recordar contexto durante una sesión. Incluso puede tener memoria&lt;br&gt;
privada entre sesiones, dependiendo de la herramienta. Pero esa memoria no siempre es:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;visible para el equipo;&lt;/li&gt;
&lt;li&gt;revisable en pull requests;&lt;/li&gt;
&lt;li&gt;versionada junto al código;&lt;/li&gt;
&lt;li&gt;portable entre herramientas;&lt;/li&gt;
&lt;li&gt;explícita sobre qué decisiones están aceptadas y cuáles siguen en evaluación.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eso importa porque muchas decisiones técnicas condicionan cambios futuros.&lt;/p&gt;

&lt;p&gt;Por ejemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Este servicio es la fuente de verdad del workflow".&lt;/li&gt;
&lt;li&gt;"Esta API es la única frontera válida para herramientas de agentes".&lt;/li&gt;
&lt;li&gt;"Si falta configuración obligatoria, el sistema debe fallar claro".&lt;/li&gt;
&lt;li&gt;"El entorno local debe activarse con un perfil explícito".&lt;/li&gt;
&lt;li&gt;"Esta integración es candidata, pero todavía no está aceptada".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si esas reglas quedan solo en una conversación, el próximo desarrollador o agente puede&lt;br&gt;
volver a discutirlas, duplicarlas o romperlas sin saberlo.&lt;/p&gt;
&lt;h2&gt;
  
  
  ADRs como memoria del repositorio
&lt;/h2&gt;

&lt;p&gt;Una forma simple de resolverlo es usar ADRs: Architecture Decision Records.&lt;/p&gt;

&lt;p&gt;Un ADR no tiene que ser largo. De hecho, mientras más corto y concreto, mejor. Su valor&lt;br&gt;
está en registrar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;qué decisión se tomó;&lt;/li&gt;
&lt;li&gt;por qué era necesaria;&lt;/li&gt;
&lt;li&gt;qué consecuencias debe respetar el trabajo futuro;&lt;/li&gt;
&lt;li&gt;si está aceptada, propuesta, pendiente o reemplazada.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La pregunta de corte que uso es esta:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Si otro agente o desarrollador toca esta parte en dos meses, ¿necesita conocer esta&lt;br&gt;
decisión para no romper la arquitectura?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Si la respuesta es sí, probablemente debe vivir como ADR, actualización de ADR o&lt;br&gt;
candidato pendiente.&lt;/p&gt;

&lt;p&gt;Si la respuesta es no, probablemente basta con código, tests o documentación de&lt;br&gt;
implementación.&lt;/p&gt;
&lt;h2&gt;
  
  
  No todo merece un ADR
&lt;/h2&gt;

&lt;p&gt;El objetivo no es documentar todo.&lt;/p&gt;

&lt;p&gt;Cambiar el texto de un botón, refactorizar una función local o ajustar un detalle visual&lt;br&gt;
normalmente no necesita un ADR. Son cambios importantes para el producto, pero no&lt;br&gt;
necesariamente gobiernan decisiones futuras de arquitectura.&lt;/p&gt;

&lt;p&gt;En cambio, mover la fuente de verdad de un workflow desde un servicio backend hacia&lt;br&gt;
constantes del frontend sí debería encender una alerta. Eso cambia ownership, contratos&lt;br&gt;
y expectativas futuras. Si ya existía una decisión previa, no basta con editar código:&lt;br&gt;
hay que actualizarla o reemplazarla explícitamente.&lt;/p&gt;

&lt;p&gt;La memoria durable no busca generar burocracia. Busca evitar que decisiones importantes&lt;br&gt;
queden invisibles.&lt;/p&gt;
&lt;h2&gt;
  
  
  Qué hace Decision Memory
&lt;/h2&gt;

&lt;p&gt;Decision Memory es un skill open source para agentes de código. Su trabajo es ayudar al&lt;br&gt;
agente a decidir si una decisión técnica debe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;crear un ADR;&lt;/li&gt;
&lt;li&gt;actualizar un ADR existente;&lt;/li&gt;
&lt;li&gt;reemplazar una decisión previa;&lt;/li&gt;
&lt;li&gt;quedar como candidata pendiente;&lt;/li&gt;
&lt;li&gt;o mantenerse como documentación de implementación.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La idea no es que el agente escriba más documentación por defecto. La idea es que, cuando&lt;br&gt;
detecte una decisión durable, ayude a moverla desde memoria temporal hacia memoria&lt;br&gt;
versionada del repositorio.&lt;/p&gt;

&lt;p&gt;También ayuda a detectar señales de deuda técnica oculta:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fallbacks silenciosos;&lt;/li&gt;
&lt;li&gt;configuración inventada por defecto;&lt;/li&gt;
&lt;li&gt;mocks o no-ops en runtime productivo;&lt;/li&gt;
&lt;li&gt;decisiones temporales sin criterio de salida;&lt;/li&gt;
&lt;li&gt;duplicación de reglas de dominio entre frontend y backend.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Memoria de agente vs memoria de repo
&lt;/h2&gt;

&lt;p&gt;La memoria del agente sigue siendo útil. Sirve para preferencias, patrones recurrentes,&lt;br&gt;
comandos habituales y contexto operativo.&lt;/p&gt;

&lt;p&gt;Pero las decisiones arquitectónicas deberían estar donde el equipo pueda revisarlas:&lt;br&gt;
en el repositorio.&lt;/p&gt;

&lt;p&gt;Una división práctica es:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;memoria del agente para preferencias y hábitos de trabajo;&lt;/li&gt;
&lt;li&gt;instrucciones del repo para reglas operativas del agente;&lt;/li&gt;
&lt;li&gt;ADRs para decisiones técnicas que condicionan arquitectura futura;&lt;/li&gt;
&lt;li&gt;documentación de implementación para detalles locales;&lt;/li&gt;
&lt;li&gt;candidatos pendientes para ideas relevantes que todavía no están validadas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esa separación reduce ambigüedad. También permite que distintas herramientas lean el&lt;br&gt;
mismo repositorio sin depender de la memoria privada de una sesión o de un proveedor.&lt;/p&gt;
&lt;h2&gt;
  
  
  Ejemplo de uso
&lt;/h2&gt;

&lt;p&gt;Una pregunta útil para un agente sería:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Usa decision-memory para evaluar esta decisión:
mover la fuente de verdad del workflow desde el backend hacia constantes del frontend.

No edites archivos. Clasifica si requiere un nuevo ADR, actualizar un ADR existente,
reemplazar una decisión previa o quedar como documentación de implementación.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Una respuesta esperada sería:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Clasificación: requiere ADR o actualización de ADR existente.

Razón: cambia la fuente de verdad, el ownership del dominio y el contrato entre backend
y frontend. Futuros cambios necesitarán conocer esta decisión para no reconstruir estados
paralelos ni romper la arquitectura.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Proyecto
&lt;/h2&gt;

&lt;p&gt;El skill está publicado como open source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/ltorresu82/skills" rel="noopener noreferrer"&gt;https://github.com/ltorresu82/skills&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;skills.sh: &lt;a href="https://www.skills.sh/ltorresu82/skills/decision-memory" rel="noopener noreferrer"&gt;https://www.skills.sh/ltorresu82/skills/decision-memory&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instalación:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add ltorresu82/skills &lt;span class="nt"&gt;--skill&lt;/span&gt; decision-memory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La tesis es simple: los agentes de código no necesitan solo más contexto. Necesitan mejor&lt;br&gt;
memoria. Y las decisiones que gobiernan el futuro de un sistema deberían vivir cerca del&lt;br&gt;
código, versionadas y visibles para humanos y agentes.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>opensource</category>
      <category>software</category>
    </item>
  </channel>
</rss>
