MÓDULO 1.5

🏷️ Dueños de la información

Hecho, preferencia, hipótesis, decisión. Cuando tienes tres versiones de la misma información repartidas entre la memoria, CLAUDE.md y sesiones antiguas, ¿cuál vale? Este módulo da la respuesta: cada tipo de información tiene un dueño, un origen, una fecha y una regla de actualización. Eso es lo que hace que el "cerebro" sobreviva al cambio de modelo sin convertirse en un desorden.

6
Temas
~30
Minutos
Básico
Nivel
Fundamento
Tipo
1

🧩 Los cuatro tipos y por qué mezclarlos rompe todo

Toda información que vive en tu workspace es de uno de cuatro tipos: un hecho (algo verificado, con fuente), una preferencia (cómo te gusta que se hagan las cosas), una hipótesis (algo que parece verdad, pero nadie confirmó) o una decisión (una elección aceptada, con contexto y consecuencias). El error más común de quien usa agentes es meter todo en la misma bolsa: la memoria automática de Claude guarda "el usuario prefiere X" junto a "el puerto del servidor es 8000" junto a "creo que el build se rompió por culpa del caché". Tres tipos distintos, tratados como iguales.

Hecho "inemaimg corre en el puerto 8000" dueño: quien verificó regla: solo cambia con nueva fuente vive en context/overview.md Preferencia "nunca uses menú interactivo" dueño: el humano regla: solo el humano la cambia vive en AGENTS.md Hipótesis "creo que 71 skills se portan" dueño: quien la propuso regla: se vuelve hecho o muere vive en overview "Hipótesis" Decisión "docs/ queda fuera de git" dueño: el humano la acepta regla: nueva decisión la revoca vive en context/decisions/

Lee cada caja de arriba hacia abajo: el tipo, un ejemplo real de este curso, quién es el dueño, la regla que cambia la información y dónde vive. Solo el hecho tiene brillo porque es el único que exige fuente; la hipótesis tiene borde punteado porque es provisional por definición.

¿Nuevo aquí? "Fuente" es de dónde vino la información: un archivo, un comando que ejecutaste, una página. Un hecho sin fuente es solo una frase que alguien escribió algún día. "Provenance" (procedencia) es la palabra técnica para eso: el rastro de origen de un dato. Lo vamos a usar bastante en este módulo.

✓ Separado por tipo

  • Un agente nuevo sabe en qué puede confiar y qué necesita verificar.
  • Una preferencia no se convierte en "verdad sobre el mundo".
  • La hipótesis envejece y se descarta sin piedad.
  • La decisión tiene contexto: se puede revocar sabiendo el porqué.

✗ Todo en la misma bolsa

  • Un "creo que" de hace tres meses se convierte en instrucción obligatoria.
  • El agente cita una suposición como si fuera un hecho verificado.
  • Nadie sabe quién puede cambiar qué.
  • Al cambiar de modelo, el ruido migra junto con la señal.

Conceptos clave

Hecho

Verificado, con fuente y fecha. Cambia solo con una nueva fuente.

Preferencia

Cómo lo quiere el dueño. Solo el dueño la modifica.

Hipótesis

Provisional. O se convierte en hecho o se descarta.

Decisión

Elección aceptada con contexto y consecuencias.

2

📇 Origen, alcance, fecha, estado, regla de actualización

El Prompt B (el megaprompt de workspace portátil) pide que toda nota durable registre cinco cosas: un ID, el alcance (¿vale para este proyecto? ¿para este cliente? ¿para todo?), la fuente, la fecha de observación y el estado (borrador, aceptado, revocado), más una regla de cuándo revisar o expirar. Parece burocracia. No lo es: es lo mínimo para que un agente que nunca vio el proyecto pueda responder "¿de dónde salió esto y todavía vale?".

Nota durable de ejemplo — el encabezado que el template context/overview.md del kit ya trae

# Overview — agente-claude-codex
- ID: overview | Alcance: este repo | Fuente: docs/ (3 textos + PDF) y auditoría local
- Fecha de observación: 2026-09-13 | Status: aceptado | Revisar en: al cambiar la versión de Codex o de Claude Code

## Hechos verificados (2026-09-13)
- Codex CLI 0.154.0 no tiene comando `import`; el import "un clic" es de la app de escritorio.
- polyskill 0.1.0 instalado globalmente.

## Preferencias del dueño
- Auditoría primero, sin copia masiva, secretos afuera.

## Hipótesis (no verificadas)
- La clasificación heurística de 71 skills como "reutilizable" es correcta en la mayoría; necesita muestreo.

Fíjate que el mismo archivo tiene tres secciones separadas: hechos (con fecha), preferencias e hipótesis. Un agente que lee esto sabe exactamente con qué peso tratar cada línea. Y el campo "Revisar en" dice cuándo el hecho puede haber envejecido: cuando Codex cambie de versión, la línea sobre el import necesita verificarse de nuevo.

1

ID y alcance

Un nombre estable para que otros archivos lo citen, y la respuesta a "¿vale dónde?". Un hecho de cliente nunca tiene alcance global.

2

Fuente y fecha de observación

De dónde vino y cuándo se vio. "Fecha de observación" no es "fecha de escritura": es cuándo se comprobó la realidad.

3

Estado y regla de revisión

Borrador, aceptado o revocado. Y el disparador de revisión: una fecha, o un evento ("cuando Codex se actualice").

¿Nuevo aquí? "Alcance" es hasta dónde llega una información: global (vale para ti en cualquier proyecto), de proyecto (vale solo aquí) o de cliente (vale solo para ese cliente). Confundir el alcance es como poner la contraseña de un cliente en el archivo de reglas generales: la información correcta, en el lugar equivocado, se convierte en problema.

Conceptos clave

Nota durable

Información que sobrevive a la sesión y necesita metadatos.

Fecha de observación

Cuándo se comprobó la realidad, no cuándo se escribió el texto.

Estado

Borrador, aceptado, revocado. Dice si se puede confiar.

Regla de revisión

El disparador que obliga a volver a comprobar el hecho.

3

⚖️ Provenance vence al timestamp

Cuando dos versiones de una información se contradicen, el instinto es quedarse con la más reciente. El Prompt B prohíbe exactamente eso: resuelve conflictos por procedencia y decisión aceptada, no por "cuál timestamp es más nuevo". ¿Por qué? Porque la versión más nueva puede ser una suposición de una sesión apurada, y la antigua puede ser un hecho verificado con fuente. La fecha de escritura no mide confiabilidad.

Mismo hecho, dos versiones: "¿en qué puerto corre el inemaimg?" Versión A · 2026-08-20 "puerto 8000" · fuente: curl localhost:8000/health status: aceptado ✓ GANA (tiene procedencia) Versión B · 2026-09-10 "creo que es 8080" · fuente: ninguna status: hipótesis superseded_by: A más nueva, pero pierde B no se borra: queda oculta, apuntando a A. Si algún día B consigue fuente, el enlace se invierte.

La versión de la izquierda es más antigua y gana porque tiene fuente y status aceptado. La de la derecha es más nueva y pierde: sin fuente, es hipótesis. Recibe superseded_by (sustituida por) y queda punteada, pero no se borra.

🔬 Cómo lo hace el openpcbotv3 de verdad

El bot v3 de esta máquina tiene una consolidación nocturna de memoria. Fusiona duplicados y, cuando detecta una contradicción entre dos memorias, la antigua recibe superseded_by apuntando a la nueva, y nunca se borra. El mismo mecanismo sirve para el camino inverso: si la "nueva" es la que pierde, es ella la que recibe la marca. El punto es que nada desaparece; solo cambia lo que está vigente.

  • Borrar destruye el rastro. Pierdes el "por qué creíamos eso".
  • Ocultar preserva el rastro y mantiene una sola versión activa.
  • Backup antes de cada ronda de consolidación, porque equivocarse aquí borra contexto.

¿Nuevo aquí? "Timestamp" es el sello de fecha y hora de cuando algo fue guardado. "Superseded" (sustituido) es el estado de una información que fue reemplazada por otra más confiable. Guardar la sustituida con un puntero a la ganadora es lo que permite reconstruir la historia después.

Conceptos clave

Procedencia

El rastro de origen. Decide quién gana un conflicto.

Decisión aceptada

Gana a cualquier versión sin aceptación, nueva o vieja.

superseded_by

Marca la versión que perdió, sin borrar.

Timestamp no es confianza

Reciente no significa correcto.

4

⬆️ Promover un hecho: de memoria bruta a overview aprobado

Claude Code guarda memoria por su cuenta: en esta máquina son 869 archivos en 227 carpetas. Ninguno pasó por aprobación. Eso no es fuente de verdad; es materia prima. El Prompt B dice "promueve hechos verificados deliberadamente desde la memoria nativa o desde las conversaciones". Promover es el acto consciente de tomar una línea de la memoria bruta, verificarla, darle fuente y fecha, y solo entonces guardarla en context/overview.md como hecho aceptado.

1

Memoria bruta guardada

El agente escribió "el usuario usa flux2-klein por defecto" en una sesión cualquiera. Sin fuente, sin fecha.

2

Propuesta

Al tocar el proyecto, el agente propone: "esto parece una preferencia estable; ¿promover al overview?"

3

Verificación y aprobación humana

Tú confirmas (o corriges: "es preferencia, no hecho"). Gana fuente ("regla global del CLAUDE.md"), fecha y status aceptado.

4

Guardado en el lugar correcto

Va a la sección correcta del overview. La memoria bruta sigue existiendo como evidencia, por separado.

🗃️ El vault del openpcbotv3: "el bot propone, tú apruebas"

El bot v3 mantiene dos archivos curados, ~/vault/MEMORY.md y USER.md. El bot propone entradas; nada se escribe sin que tú apruebes. El USER.md entra en todo prompt. Es la misma idea de promoción, ya funcionando: la memoria automática de la base de datos es materia prima; el vault es el overview aprobado. El plan de migración de esta máquina usa ese vault como overview global de hechos personales.

En la Ruta 3, Proyecto 3, conectas Claude, Codex y el dsh para que lean el mismo USER.md.

✓ Promover

  • Un hecho a la vez, al tocar el proyecto.
  • Con verificación y aprobación humana.
  • Gana ID, alcance, fuente, fecha, status.
  • Evidencia bruta preservada aparte.

✗ Copiar en masa

  • Volcar los 869 archivos de memoria en context/.
  • Arrastrar suposiciones, duplicados y hechos muertos junto con todo.
  • Sin fuente: el agente nuevo no sabe en qué confiar.
  • El ruido de Claude se convierte en ruido de Codex.

Conceptos clave

Materia prima

Memoria nativa y sesiones: evidencia, no fuente.

Promoción

Acto deliberado de verificar y registrar con metadatos.

Propone → aprueba

El agente sugiere, el humano decide. Nada automático.

Bóveda curada

MEMORY.md y USER.md: el resumen aprobado de openpcbotv3.

5

🔁 Índices reconstruibles a partir de las fuentes

Búsqueda semántica, embeddings, base de datos de vectores, caché de resúmenes: todo eso es índice, y un índice es derivado. El Prompt B cierra la sección de propiedad con una regla simple: "haga que los índices de búsqueda sean reconstruibles a partir de los registros fuente que usted posee". Si el índice se corrompe, si cambia de herramienta o de modelo de embedding, usted ejecuta el build de nuevo y vuelve. Si la única copia de la información está dentro del índice, la perdió.

📊 Ejemplos reales de esta máquina

  • openpcbotv3: los vectores bge-m3 se reindexan por cron cada 15 min a partir de la tabla de memorias. Borrar el índice no pierde nada.
  • Catálogo INEMA: courses.data.json, cursos.json, base.json son todos generados. La fuente es courses.ts y Portal.tsx. Editar el generado a mano es el error que la skill del portal prohíbe.
  • Kit de migración: relatorios/auditoria-*.md lo genera audit.sh. Lo ejecutó de nuevo, lo rehízo.

¿Nuevo aquí? "Embedding" es una forma de transformar texto en números para que un programa encuentre textos parecidos. "Índice" es cualquier estructura armada para encontrar cosas más rápido. Ambos son copias transformadas del original. Regla práctica: si no puede borrarlo y regenerarlo, no es índice, es fuente disfrazada.

⚠️ El error a evitar

Dejar que la memoria del agente viva solo en una base de datos vectorial propietaria. Cambió de modelo, el embedding antiguo ya no sirve. Cambió de herramienta, la base no abre. Sin la fuente en Markdown, el "cerebro" desaparece junto con el modelo. Es lo opuesto de lo que este curso enseña.

Conceptos clave

Fuente vs derivado

Fuente es lo que usted edita; derivado es lo que el build genera.

Reconstruible

Borrar y regenerar sin pérdida. La prueba definitiva.

Índice

Búsqueda, vectores, caché. Siempre derivado.

Markdown como fuente

Se abre en cualquier lugar, con cualquier modelo.

6

🔐 Secretos y material en bruto quedan fuera

Dos tipos de contenido nunca entran al núcleo portátil: secretos (claves de API, tokens, contraseñas) y estado nativo en bruto (sesiones JSONL, base de memoria de Claude, exports de chat completos). Los mega-prompts repiten esto en casi todas las secciones: "mantenga secretos y memoria privada en bruto fuera de reportes y repositorios", "preserve la evidencia en bruto por separado". El núcleo portátil es lo que usted publicaría; el resto se queda en su lugar, referenciado, nunca copiado.

✓ Entra al núcleo

  • La regla "las keys están en ~/projetos/openpcbotv2/.env" (la referencia).
  • Hechos promovidos, decisiones, tareas, handoffs.
  • El nombre del MCP registrado (magnific, metricool).
  • Un snapshot curado y fechado de contexto.

✗ Queda fuera

  • El valor de la clave (nunca impreso, nunca copiado).
  • Los 2,3 GB de sesiones JSONL de Claude.
  • La carpeta ~/.claude o ~/.codex copiada entera.
  • Material de terceros sin licencia (el docs/ del kit quedó fuera del git por eso).

🧭 El caso del dsh-sandbox

La carpeta ~/projetos de esta máquina tiene 269 archivos de secretos. Por eso el dsh-sandbox amarra montaje y proveedor: el modo local monta los proyectos pero solo habla con Ollama; el modo remoto habla con OpenRouter pero no ve los proyectos. Juntar los dos exige escribir "CONFIRMO". Es la regla de este tema convirtiéndose en mecanismo: el secreto puede existir en la máquina, pero el ejecutor que habla con afuera no puede verlo.

¿Nuevo aquí? "Evidencia en bruto" es el material original sin tratamiento: la transcripción entera, el log completo, el export del chat. Es valiosa para auditar después, pero no es para leerse en cada sesión. Queda archivada, con un puntero en context/sources.md que dice dónde está y de cuándo es.

Conceptos clave

Referenciar, no copiar

El núcleo dice dónde está la clave, nunca cuál es.

Estado nativo en bruto

Sesiones y memoria automática se quedan donde nacieron.

Snapshot curado

Recorte aprobado, con fuente y fecha, en vez del bruto.

Publicable por construcción

Si no puede ir a un repo, no está en el núcleo.

Autoverificación (opcional): dos anotaciones se contradicen. La de agosto dice "puerto 8000" con fuente; la de septiembre dice "creo que es 8080" sin fuente. ¿Cuál vale?

🎯 Resumen del módulo

Cuatro tipos — hecho, preferencia, hipótesis y decisión tienen dueños y reglas distintos; mezclarlos rompe todo.
Metadatos mínimos — ID, alcance, fuente, fecha de observación, estado y regla de revisión.
La procedencia vence al timestamp — el conflicto se resuelve por fuente y decisión aceptada; el perdedor recibe superseded_by, nunca se borra.
Promover, no copiar — la memoria nativa es materia prima; el vault curado (propone → aprueba) es el overview.
Índices reconstruibles, secretos afuera — lo derivado se regenera; la clave y el estado bruto quedan referenciados, nunca en el núcleo.

Próximo módulo:

1.6 — Audit antes de implement: analizar → planificar → simular