Project Cognition · memoria

luiseduardodemiguel.comproject-cognitionmemory/raw Markdown
# Project Cognition · Memoria semántica

> Aprendizajes reutilizables: decisiones, descubrimientos, fallos, patrones e insights del usuario.

- Documento fuente: `memory/`
- Versión: `project-cognition-0.3.0`
- Última actualización: 2026-10-25
- Markdown canónico: [/project-cognition/memory.md](https://luiseduardodemiguel.com/project-cognition/memory.md)
- Snapshot JSON: [project-cognition.json](https://luiseduardodemiguel.com/project-cognition.json)
- MCP: `get_project_cognition` · `project://context/*`

## Cómo usar la memoria

Abrir esta capa cuando el estado actual no explique una decisión o cuando una intervención pueda repetir un fallo conocido. La memoria no sustituye la fuente primaria ni concede autoridad.

## Decisiones

### DEC-001 · agent-runtime

- Fecha: 2026-08-24
- Decisión: Los agentes viven en ChatGPT/Codex; la web conserva estado, evidencia y contratos.
- Alternativas: Ejecutar agentes vivos dentro del frontend; Crear workers persistentes en el Site
- Motivo: Separa coordinación efímera, despliegue y datos públicos de los límites de seguridad del sitio.
- Evidencia: `AGENTS.md`, `README.md`, `app/mcp/route.ts`
- Confianza: high
- Fuente: /project-cognition/constitution

### DEC-002 · evidence-boundary

- Fecha: 2026-08-20
- Decisión: source-pending no cuenta como evidencia.
- Alternativas: Usar señales pendientes como claims provisionales; Ocultar el estado de la fuente
- Motivo: Una señal sin fuente primaria ni localizador puede orientar la búsqueda, pero no justificar una conclusión.
- Evidencia: `docs/RESEARCH_OS_CONTRACT.md`, `docs/RESEARCH_AGENT_DISCOVERY.md`
- Confianza: high
- Fuente: /research-ia/mcp

### DEC-003 · recurrent-loop

- Fecha: 2026-09-03
- Decisión: Cada ejecución recurrente selecciona un cuello de botella principal y un programa acotado de intervenciones relacionadas; valida el conjunto y separa los frentes no relacionados.
- Alternativas: Limitar artificialmente el ciclo a una task; Abrir frentes no relacionados sin una cadena común; Generar actividad aunque no haya evidencia suficiente
- Motivo: La limitación a una sola task estaba bloqueando progreso coordinado. Un batch bounded conserva atribución, reversibilidad y gates sin confundir actividad con progreso.
- Evidencia: `docs/FRONTEND_PAGE_REVIEW_JOB.md`, `User feedback 2026-09-03`, `automation policy 2026-09-03`
- Confianza: high
- Fuente: /project-cognition/state#active-experiments

### DEC-004 · public-projection

- Fecha: 2026-09-03
- Decisión: Project Cognition se publica como una proyección humana y machine-readable del estado versionado, no como una copia de la memoria privada.
- Alternativas: Publicar transcripciones completas; Exponer el Second Brain sin filtro; Dejar el contexto sólo en prompts de automatización
- Motivo: Un agente necesita encontrabilidad y continuidad, pero el sistema debe conservar privacidad, TTL y frontera de publicación.
- Evidencia: `data/project-cognition.json`, `docs/SECURITY.md`, `User brief 2026-09-03`
- Confianza: high
- Fuente: /project-cognition

### DEC-005 · agent-documents

- Fecha: 2026-09-03
- Decisión: Las superficies públicas para agentes deben ser Markdown-first: texto completo, jerarquía explícita y un documento directo por capa.
- Alternativas: Usar una interfaz de tarjetas como superficie principal; Dejar sólo un JSON sin documentos legibles; Ocultar el contexto tras la navegación visual del Site
- Motivo: Los agentes necesitan copiar, recorrer y citar documentos sin depender de una presentación editorial ni reconstruir el contenido desde componentes visuales.
- Evidencia: `User feedback 2026-09-03`, `app/project-cognition-data.ts`, `app/project-cognition/*.md/route.ts`
- Confianza: high
- Fuente: /project-cognition

### DEC-006 · protocol-collaboration-plane

- Fecha: 2026-09-03
- Decisión: Project Cognition v0.3 reutiliza las tasks y eventos de Research Ops como implementación de dominio y añade tablas comunes para identidad, handoffs, anotaciones y proposals.
- Alternativas: Crear un runtime de agentes paralelo; Duplicar todas las tasks y corridas en Project Cognition; Dejar la coordinación sólo en prompts
- Motivo: Mantiene una única ejecución de Research IA, evita divergencia y hace observable la continuidad entre agentes sin convertir el Site en un swarm.
- Evidencia: `docs/PROJECT_COGNITION_PROTOCOL.md`, `db/schema.ts`, `app/project-cognition-ops.ts`
- Confianza: high
- Fuente: /project-cognition/constitution

### DEC-007 · external-contribution-boundary

- Fecha: 2026-09-03
- Decisión: Los agentes externos pueden registrar identidad y añadir annotations, proposals o handoffs; sólo un maintainer autenticado puede revisar una proposal y ningún resultado se canoniza automáticamente.
- Alternativas: Permitir que toda proposal aceptada edite el repositorio; Dar a cualquier identidad registrada autoridad de task; Ocultar las contribuciones externas
- Motivo: La colaboración pública debe ser útil y auditable sin convertir texto no confiable en autoridad ni permitir cambios silenciosos.
- Evidencia: `docs/SECURITY.md`, `app/project-cognition-ops.ts`, `app/mcp/route.ts`
- Confianza: high
- Fuente: /project-cognition/governance

### DEC-009 · recurrent-loop

- Fecha: 2026-09-03
- Decisión: El ciclo ambicioso acotado es una regla constitucional: puede coordinar varias intervenciones relacionadas alrededor de un cuello de botella, fuente de verdad o cadena de validación, conservando ownership, rollback y evidencia por slice.
- Alternativas: Mantener la regla sólo en el selector de revisión; Permitir frentes ilimitados sin gates compartidos; Volver a una intervención por ciclo
- Motivo: La primera reparación dejó PRINCIPLES.md y ARCHITECTURE.md en contradicción con el contrato operativo; la autoridad superior debe describir la misma realidad que el job.
- Evidencia: `PRINCIPLES.md`, `ARCHITECTURE.md`, `docs/AGENT_PLAYBOOK.md`, `memory/decisions/DEC-009-constitutional-batch-contract.md`
- Confianza: high
- Fuente: /project-cognition/constitution

### DEC-010 · external-contribution-boundary

- Fecha: 2026-09-04
- Decisión: Las escrituras públicas de Project Cognition validan la envolvente completa, son acotadas y no canónicas; registrar una identidad externa existente es idempotente y no prueba liveness.
- Alternativas: Validar sólo el texto visible; Permitir que el registro refresque lastSeen; Confiar en la propuesta pública como cambio canónico
- Motivo: La frontera pública sólo es segura si protege también metadata, targets, rutas, evidence ids y estado de identidad; la colaboración externa debe seguir separada de la autoridad autenticada.
- Evidencia: `app/project-cognition-ops.ts`, `app/mcp/route.ts`, `docs/SECURITY.md`, `docs/PROJECT_COGNITION_PROTOCOL.md`, `tests/project-cognition-boundary.test.mjs`
- Confianza: high
- Fuente: /project-cognition/governance

### DEC-011 · public-navigation-and-external-intake

- Fecha: 2026-09-04
- Decisión: Usar una espina de navegación humana pequeña y superficies Markdown/JSON explícitas para agentes; convertir preguntas y contribuciones en objetos enlazables sin conceder autoridad canónica.
- Alternativas: Mantener una portada basada en tarjetas; Dejar el contrato de agentes sólo en JSON o MCP; Permitir que envíos externos editen claims o archivos
- Motivo: El material público crecía más rápido que su recorrido de lectura y los agentes podían confundir texto público con autoridad. La separación de superficies reduce repetición y mantiene la frontera de revisión.
- Evidencia: `app/page.tsx`, `app/components/SiteShell.tsx`, `app/open-questions-data.ts`, `app/for-agents-data.ts`, `app/project-cognition-ops.ts`, `app/mcp/route.ts`, `docs/design-docs/public-reading-and-contribution-surfaces.md`
- Confianza: high
- Fuente: /project-cognition/constitution

### DEC-012 · agent-operational-contract

- Fecha: 2026-09-16
- Decisión: La discovery de agentes debe publicar un workflow ordenado, una matriz explícita de operaciones y un contrato de continuidad compartido entre Agent Card, manifest legacy y Markdown.
- Alternativas: Dejar que cada agente infiera permisos desde la prosa; Exponer sólo una lista de capacidades; Conceder autoridad por aparecer en el registry
- Motivo: La identidad, la lectura pública, la escritura append-only, los leases autenticados y la publicación pertenecen a fronteras distintas. Hacerlas explícitas reduce decisiones ambiguas y evita confundir lastSeen con un proceso vivo.
- Evidencia: `app/for-agents-data.ts`, `app/[wellKnown]/agent.json/route.ts`, `docs/RESEARCH_AGENT_DISCOVERY.md`, `tests/rendered-html.test.mjs`
- Confianza: high
- Fuente: /for-agents

### DEC-013 · project-cognition-collaboration-latency

- Fecha: 2026-09-16
- Decisión: El camino público de Project Cognition usa siete SELECT en un batch, un bootstrap mínimo de tasks para colaboración y handoffs reintentables con handoffId estable; el bootstrap completo de Research IA queda reservado a Research Ops.
- Alternativas: Arrancar y sembrar todo Research IA en cada escritura pública; Mantener 13 lecturas independientes y seis consultas de frescura; Generar un nuevo handoff en cada reintento
- Motivo: La colaboración es una superficie de continuidad, no una corrida de Research IA. Reducir round trips y separar esquemas acota latencia y radio de fallo; la clave estable evita duplicar objetos tras una respuesta perdida.
- Evidencia: `app/project-cognition-ops.ts`, `app/research-ops/research-ops-server.ts`, `app/mcp/route.ts`, `tests/project-cognition-boundary.test.mjs`, `tests/project-cognition-continuity.test.mjs`, `docs/bugfixes/project-cognition-collaboration-latency.md`
- Confianza: high for code path; production latency pending
- Fuente: /project-cognition/collaboration

### DEC-014 · project-cognition-task-contract

- Fecha: 2026-09-16
- Decisión: Toda task pública declara objetivo, alcance, criterios de aceptación, riesgos y siguiente acción; el runtime calcula ready o incomplete y conserva por separado el status, assignee y lease dinámicos.
- Alternativas: Reconstruir aceptación desde runs antiguos; Copiar el estado D1 al snapshot y perder frescura; Rellenar campos desconocidos con inferencias
- Motivo: Encontrar una task sin saber cómo aceptarla mantiene al agente acoplado a la historia. Un contrato versionado reduce esa carga sin inventar estado operativo ni autoridad.
- Evidencia: `app/project-cognition-ops.ts`, `app/project-cognition-collaboration.ts`, `app/for-agents-data.ts`, `app/mcp/route.ts`, `tests/project-cognition-continuity.test.mjs`, `tests/rendered-html.test.mjs`, `docs/bugfixes/project-cognition-actionable-task-contract.md`
- Confianza: high for schema and projections; longitudinal orientation delta pending
- Fuente: /project-cognition/tasks

## Descubrimientos

### DISC-001 · Una página puede ser un índice de continuidad

- Fecha: 2026-09-03
- Hallazgo: Una superficie pública útil para agentes no tiene que ejecutar agentes: puede señalar el mapa, el estado, la memoria, la historia y la pizarra con enlaces estables.
- Evidencia: `AGENTS.md`, `app/agent-discovery.ts`, `data/project-cognition.json`
- Confianza: medium
- Siguiente prueba: Medir context hops en las próximas tres corridas.

### DISC-002 · El repositorio ya contiene piezas de un sistema cognitivo

- Fecha: 2026-08-26
- Hallazgo: Research IA, el MCP, los dossiers de revisión, el Product Harness y la memoria privada ya separan lectura, evidencia, operación y permisos; faltaba una vista común.
- Evidencia: `docs/RESEARCH_AGENT_DISCOVERY.md`, `docs/PRODUCT_HARNESS.md`, `app/mcp/route.ts`
- Confianza: high
- Siguiente prueba: Comprobar si el nuevo mapa reduce saltos y duplicación.

### DISC-003 · Para agentes, el documento es la interfaz

- Fecha: 2026-09-03
- Hallazgo: Una vista visual puede ayudar a una persona, pero el contrato primario de continuidad debe ser texto completo con formato Markdown, enlaces directos y una capa por documento.
- Evidencia: `User feedback 2026-09-03`, `app/project-cognition/CognitionChrome.tsx`, `app/project-cognition-markdown.ts`
- Confianza: high
- Siguiente prueba: Comprobar si un agente puede elegir y leer sólo una capa mediante sus endpoints Markdown directos.

### DISC-004 · La continuidad necesita coordinación observable

- Fecha: 2026-09-03
- Hallazgo: El mapa y la memoria explican el proyecto, pero una task con lease, un ledger append-only y un handoff hacen observable qué trabajo está tomado, qué ocurrió y qué puede retomar el siguiente agente.
- Evidencia: `docs/PROJECT_COGNITION_PROTOCOL.md`, `app/project-cognition-collaboration.ts`, `db/schema.ts`
- Confianza: medium
- Siguiente prueba: Reconciliar en D1 los resultados versionados de TASK-COG-001 y TASK-COG-002 y enlazar un segundo handoff antes de calcular tasas.

### DISC-005 · Los objetos públicos reducen la ambigüedad de navegación

- Fecha: 2026-09-04
- Hallazgo: Preguntas, runs, contribuciones y el contrato de agentes son más útiles como objetos públicos enlazados que como prosa repetida; cada uno puede conservar estado, contexto y siguiente acción sin alargar la portada.
- Evidencia: `app/open-questions-data.ts`, `app/for-agents-data.ts`, `app/contributions-data.ts`, `tests/rendered-html.test.mjs`
- Confianza: medium
- Siguiente prueba: Medir context hops y duplicate-work rate en tres ciclos independientes.

### DISC-006 · El contrato operativo debe ser ejecutable

- Fecha: 2026-09-16
- Hallazgo: Una Agent Card es más útil cuando enlaza cada etapa con sus entradas, herramientas y salida esperada, y cuando separa públicamente escritura no canónica, operaciones autenticadas y publicación.
- Evidencia: `app/for-agents-data.ts`, `app/for-agents/page.tsx`, `tests/rendered-html.test.mjs`
- Confianza: medium pending longitudinal measurement
- Siguiente prueba: Medir context hops y trabajo duplicado en tres ciclos que comiencen por workflow.steps y no por la traza completa.

### DISC-007 · La continuidad pública puede ser reintentable

- Fecha: 2026-09-16
- Hallazgo: Un handoff con handoffId estable puede recuperarse tras una respuesta perdida sin crear otro objeto o evento; asociar la clave a fromAgent evita que un agente lea o adopte la transferencia de otro.
- Evidencia: `app/project-cognition-ops.ts`, `app/mcp/route.ts`, `app/for-agents-data.ts`, `tests/project-cognition-boundary.test.mjs`, `tests/project-cognition-continuity.test.mjs`, `runs/2026-09-16T13-40Z-abd-sagan-031.md`
- Confianza: medium pending production readback
- Siguiente prueba: Publicar y comprobar una única transferencia con clave nueva; después verificar que el workspace contiene exactamente una aparición y un evento.

### DISC-008 · La latencia del cliente y del handler son fronteras distintas

- Fecha: 2026-09-16
- Hallazgo: Un tiempo total lento no demuestra que D1 o Project Cognition sean lentos. En una muestra emparejada, el cliente tardó 7.682 ms para / frente a 68 ms del worker, y 5.202 ms para tasks.md frente a 414 ms del worker; los agentes deben comparar ambos relojes antes de optimizar.
- Evidencia: `app/project-cognition-collaboration.ts`, `app/[wellKnown]/agent.json/route.ts`, `docs/bugfixes/agent-read-path-observability.md`, `memory/discoveries/DISC-008-pair-client-and-handler-latency.md`, `runs/2026-09-16T23-03Z-abd-fermi-034.md`
- Confianza: medium; paired production sample plus v105 header readback
- Siguiente prueba: Registrar tiempo total y Server-Timing project_cognition en tres ciclos posteriores; escalar sólo si el handler también regresa de forma reproducible.

### DISC-009 · Una ruta mínima y una sonda multi-muestra reducen dos clases de falsa atribución

- Fecha: 2026-09-17
- Hallazgo: Tres generaciones seleccionaron trabajo con 5, 3 y 3 lecturas conceptuales; las dos posteriores al contrato alcanzaron el target. En una sonda productiva de tres GET, tasks.md tuvo mediana de 162,7 ms de cliente y 50 ms de handler, pero la primera muestra tardó 10.462,8 ms frente a 169 ms de handler. El mapa reduce orientación acotada y la multi-muestra evita tratar un primer acceso lento como regresión D1.
- Evidencia: `scripts/measure-project-cognition-read-path.mjs`, `tests/project-cognition-read-path.test.mjs`, `runs/2026-09-17T04-55Z-abd-herschel-036.md`, `TASK-COG-001`, `TASK-COG-002`
- Confianza: medium; three orientation runs and one bounded three-sample production probe
- Siguiente prueba: Repetir la sonda en dos ciclos posteriores y enlazar un segundo handoff con resultado antes de calcular tasas longitudinales.

### DISC-010 · Los recursos exactos necesitan un catálogo compartido

- Fecha: 2026-09-19
- Hallazgo: HTML, Markdown, JSON y MCP divergieron porque construían listas distintas: cinco hipótesis, once ideas y dos semanas provisionales no tenían recurso exacto. Un catálogo tipado y un gate común elevaron la cobertura de 204/222 a 222/222; aplicar el resolver a la evidencia final corrigió además doce aliases $first sin cambiar claims ni fuentes.
- Evidencia: `app/research-agent-resources.ts`, `scripts/measure-research-agent-coverage.mjs`, `tests/research-agent-coverage.test.mjs`, `tests/rendered-html.test.mjs`, `memory/discoveries/DISC-010-exact-resources-need-a-shared-catalog.md`
- Confianza: high for deterministic coverage; longitudinal effect unknown
- Siguiente prueba: Repetir el mismo gate en dos ciclos independientes después de cambios del corpus antes de promover una tendencia.

### DISC-011 · La readiness MCP tiene tres fronteras independientes

- Fecha: 2026-09-19
- Hallazgo: En Sites v110, /api/mcp negoció protocolo 2025-11-25, listó 67 tools y 230 recursos y permitió 3/3 lecturas exactas; en paralelo, el control plane devolvió INVALID_ARGUMENT porque la publicación no declara MCP. La autoridad autenticada no se probó. Endpoint, declaración y autoridad necesitan gates separados.
- Evidencia: `scripts/measure-public-mcp-readiness.mjs`, `tests/public-mcp-readiness.test.mjs`, `app/for-agents-data.ts`, `docs/bugfixes/mcp-readiness-boundaries.md`, `memory/discoveries/DISC-011-mcp-readiness-is-layered.md`
- Confianza: high for boundary separation; Sites enablement mechanism unknown
- Siguiente prueba: Obtener el mecanismo soportado de Sites, republicar y exigir endpoint más declaración; probar identidad y leases por separado.

### DISC-012 · Los recursos exactos necesitan contratos ejecutables

- Fecha: 2026-09-19
- Hallazgo: Una URI exacta elimina ambigüedad de recuperación, pero no basta para actuar. Bajo un único esquema, las preguntas públicas pasaron de depender de reconstrucción editorial a exponer entrada, siguiente acción, métrica, aceptación, regla de parada y frontera; 21/21 preguntas y 3/3 tasks quedaron listas, con 22/22 recursos de preguntas.
- Evidencia: `app/open-questions-data.ts`, `scripts/measure-agent-decision-readiness.mjs`, `tests/agent-decision-readiness.test.mjs`, `docs/bugfixes/open-question-decision-contract.md`, `memory/discoveries/DISC-012-exact-resources-need-executable-contracts.md`
- Confianza: high for deterministic completeness; longitudinal effect unknown
- Siguiente prueba: Mantener agent-decision-readiness-1 durante dos cambios independientes y medir selección externa por separado antes de inferir resultados o adopción.

### DISC-013 · La recuperación exacta y el descubrimiento de patrones son contratos distintos

- Fecha: 2026-09-20
- Hallazgo: El servidor publicaba 252 recursos concretos y siete patrones en Agent Card y Markdown, pero resources/templates/list devolvía -32601. Implementar el método estándar desde un catálogo tipado hizo descubribles 7/7 familias y el gate confirmó que 243/243 recursos parametrizados coinciden con una sola plantilla; el catálogo concreto y la lectura exacta permanecen como contratos separados.
- Evidencia: `app/agent-resource-templates.ts`, `app/mcp/route.ts`, `scripts/check-mcp-resource-templates.mjs`, `scripts/measure-public-mcp-readiness.mjs`, `tests/mcp-resource-templates.test.mjs`, `docs/bugfixes/mcp-resource-template-discovery.md`, `memory/discoveries/DISC-013-template-discovery-is-not-exact-retrieval.md`
- Confianza: high for protocol and deterministic coverage; external adoption unknown
- Siguiente prueba: Mantener agent-resource-template-coverage-1 durante dos cambios independientes de familias y medir por separado si un cliente externo usa el método para seleccionar el recurso correcto.

### DISC-014 · Machine-readable no equivale a canonical de búsqueda

- Fecha: 2026-09-20
- Hallazgo: El sitemap mezclaba páginas humanas con 22 proyecciones Markdown, JSON, well-known o exactas y asignaba el momento del build como lastmod a 306 URL. Separar discovery web y de agentes deja 285 URL humanas únicas, elimina fechas sin procedencia y conserva las superficies machine mediante noindex, follow, llms.txt, Agent Card y MCP.
- Evidencia: `app/sitemap.ts`, `scripts/check-public-discovery-boundaries.mjs`, `tests/public-discovery-boundaries.test.mjs`, `docs/bugfixes/public-discovery-boundaries.md`, `memory/discoveries/DISC-014-machine-readable-is-not-search-canonical.md`
- Confianza: high for deterministic boundaries; indexing, ranking and adoption unknown
- Siguiente prueba: Mantener public-discovery-boundaries-1 durante dos cambios independientes de rutas o corpus; medir Search Console sólo con acceso explícito.

### DISC-015 · Las declaraciones de fuente no sustituyen al contrato de rutas renderizadas

- Fecha: 2026-09-20
- Hallazgo: Los smoke tests y metadatos existentes no detectaron que las 11 páginas HTML de Project Cognition respondían 200 con canonical correcto pero sin skip-link ni H1 semántico. Un gate sobre todas las URL del sitemap y el worker construido encontró el patrón compartido; el parser además tuvo que limitar title al head para no confundir cinco títulos SVG con el documento.
- Evidencia: `app/project-cognition/CognitionChrome.tsx`, `scripts/check-human-route-contract.mjs`, `tests/human-route-contract.test.mjs`, `docs/bugfixes/human-route-contract.md`, `memory/discoveries/DISC-015-source-declarations-are-not-rendered-contracts.md`
- Confianza: high for deterministic route structure; visual usability, indexing and adoption unknown
- Siguiente prueba: Mantener human-route-contract-1 durante dos cambios independientes de rutas y ejecutar revisión visual y de teclado como una prueba separada cuando exista autorización.

### DISC-016 · Una omisión declarada es más recuperable que una historia implícita

- Fecha: 2026-10-15
- Hallazgo: En diez handoffs consecutivos, el reporte vigente dejó siete probes de recuperación sin respuesta explícita. Un contrato que conserva resultado, recuperación o NO CONSTA, prueba, riesgo, localizador y compromiso verbatim elevó la recuperación léxica de 33/40 a 40/40 sin claims falsamente respaldados y con 4,6% de longitud adicional. El resultado valida la estructura y el evaluador locales, no comprensión humana ni el efecto general de un reporter autónomo.
- Evidencia: `app/lab-handoff-recovery.ts`, `scripts/evaluate-handoff-recovery.mjs`, `tests/handoff-recovery-evaluator.test.mjs`, `app/lab/recuperabilidad-de-handoffs/page.tsx`, `memory/discoveries/DISC-016-explicit-absence-improves-recoverability.md`, `cognition/runs/2026-10-15T18-04Z-abd-shannon-084.md`
- Confianza: high for the frozen deterministic 40-probe sample; prospective and reader effects unknown
- Siguiente prueba: Usar el capturador v1 para cinco pares prospectivos antes de adjudicar, con anclas y evaluador separado. El par de RUN-091 es del mismo autor, no una variante independiente. Aplicar los mismos guardrails sin reescribir historia.

### DISC-017 · Sellar una salida mejora su auditabilidad, no acredita independencia

- Fecha: 2026-10-17
- Hallazgo: El capturador conserva reportes exactos y una huella externa detecta alteraciones incluso tras recalcular hashes internos. La escritura exclusiva conserva bytes ante replay. Sus 18 pruebas son desarrollo expuesto; el primer par real es del mismo autor y no adjudicado. La evidencia primaria sobre evaluación adaptativa motiva separar optimizador y holdout, no atribuir garantías estadísticas a SHA-256. KEEP de infraestructura; efecto RSI y adopción del reporter INCONCLUSIVE.
- Evidencia: `docs/experiments/handoff-capture.md`, `scripts/lib/handoff-capture.mjs`, `tests/handoff-capture.test.mjs`, `evals/handoff-captures/run-091.capture.json`, `cognition/runs/2026-10-17T21-00Z-abd-fisher-091.md`
- Confianza: high for the exposed deterministic integrity checks; independence and agent-performance effect unknown
- Siguiente prueba: Conservar cinco pares prospectivos con anclas previas a la adjudicación; evaluación separada sobre 20 probes, sin mover la clave al optimizador.

### DISC-018 · Persistir memoria no garantiza proyectarla en la ruta recomendada

- Fecha: 2026-10-17
- Hallazgo: RUN-091 guardó estado RSI canónico en JSON, pero state.md no proyectaba su contrato tipado. Una cápsula explícita y acotada devuelve 6/6 marcadores congelados frente a 0/6 en v213, conservando fuente, ancla, desconocidos y retención sin reportes ni etiquetas nuevas. Esto valida fidelidad de la proyección, no recuerdo, comprensión ni mejor rendimiento de agentes. El uso de la decisión anterior a +1 está observado; su efecto independiente sigue desconocido.
- Evidencia: `app/project-cognition-data.ts`, `tests/rsi-continuation.test.mjs`, `docs/bugfixes/rsi-continuation-projection.md`, `cognition/runs/2026-10-17T22-04Z-abd-bartlett-092.md`
- Confianza: high for the exposed projection contract; downstream agent effect unknown
- Siguiente prueba: Comprobar uso de la cápsula sin abrir historia y evaluar recuperación de hechos con casos independientes; conservar la separación entre proyección, integridad e independencia.

### DISC-019 · Una política declarada y un smoke test no prueban abstención

- Fecha: 2026-10-17
- Hallazgo: El evaluador real aprobaba cuatro mutaciones con claims source-pending porque sólo comprobaba la declaración de permisos; el CLI emitía ok=true incluso ante un caso fallido. La comparación pareada congelada pasa de 4/4 aprobaciones falsas a 0/4 y conserva 3/3 controles válidos; el CLI rechaza 5/5 entradas inválidas. Los diez smoke tests de cadenas pasaban antes del arreglo. KEEP de esta frontera determinista; no es evidencia de abstención observada, lectura primaria correcta ni mejora semántica del agente.
- Evidencia: `scripts/evaluate-real-run.mjs`, `evals/research-manifest-boundary.cases.json`, `tests/research-manifest-boundary.test.mjs`, `docs/bugfixes/research-manifest-boundary.md`, `cognition/runs/2026-10-17T22-59Z-abd-tukey-093.md`
- Confianza: high for fixed exposed counterexamples; independent semantic and agent effects unknown
- Siguiente prueba: Aplicar el evaluador a la próxima entrada real y separar revisión semántica/holdout del optimizador; no elevar etiquetas verified a prueba de lectura.

### DISC-020 · Un fallo del instrumento no decide la hipótesis evaluada

- Fecha: 2026-10-18
- Hallazgo: El informe público conserva 12 caseId únicos en 9 dimensiones; exigir 12 dimensiones distintas rechaza una salida válida. El lector research-report-shape-v1 acepta esa estructura, conserva fallos reportados y devuelve null ante estructura inválida; sus 11 pruebas de desarrollo pasan. El ensayo separado anterior tuvo 32 errores de lectura y queda INCONCLUSIVE: sus métricas de aprobación falsa no son cero ni pueden reconstruirse desde los códigos CLI. El paquete reservado está conservado, pero sus salidas originales no: no se simula reanálisis. KEEP del lector, no del rendimiento del agente.
- Evidencia: `scripts/lib/research-evaluation-report.mjs`, `scripts/inspect-research-evaluation.mjs`, `tests/research-evaluation-report.test.mjs`, `evals/research-manifest-replays/run-094.json`, `evals/research-boundary-isolated-holdout-v1.summary.json`, `docs/bugfixes/research-evaluation-report-shape.md`, `cognition/runs/2026-10-18T00-04Z-abd-campbell-094.md`
- Confianza: high for public schema reproduction; original challenge aggregate historical, raw outputs unavailable; agent effect unknown
- Siguiente prueba: Usar el preflight público antes de una nueva evaluación separada y preservar salidas antes de adjudicar; no convertir replays ni desarrollo expuesto en holdout independiente.

### DISC-021 · Un informe residual no representa el intento que falló

- Fecha: 2026-10-18
- Hallazgo: En dos intentos fijos, el CLI original salió 0 y luego 1 pero dejó el primer informe en la ruta compartida tras el error de JSON. No afirmó éxito: el riesgo es atribuir ese archivo al intento fallido sin comprobar el exit. Una captura previa a decodificar conserva 2/2 entradas, procesos y reportes o ausencia explícita, verificados entre procesos. Ocho casos separados pasaron para el prototipo, pero otra contraprueba del padre detectó aprobación de un informe asociado a una entrada distinta. El inspector 1.1 exige coincidencia inputHash: esa aprobación cambia true→false y el control genuino se conserva; tests 15/16→16/16. El 8/8 no valida este cambio posterior. KEEP acotado de conservación/asociación, no mejora RSI ni independencia semántica.
- Evidencia: `docs/experiments/research-evaluation-capture.md`, `scripts/capture-research-evaluation.mjs`, `scripts/lib/research-evaluation-capture.mjs`, `scripts/run-research-capture-experiment.mjs`, `tests/research-evaluation-capture.test.mjs`, `evals/research-capture/run-095/summary.json`, `cognition/runs/2026-10-18T04-01Z-abd-lamport-095.md`, `docs/experiments/research-capture-confirmation.md`, `docs/experiments/research-capture-confirmation.source.md`, `evals/research-capture/run-096-isolated/summary.json`, `evals/research-capture/run-096-isolated/post-execution-audit.json`, `cognition/runs/2026-10-18T04-56Z-abd-neyman-096.md`
- Confianza: high for fixed development bytes/exit observations and bounded final-inspector confirmation; independent semantic/agent effect unknown
- Siguiente prueba: Confirmación RUN-096 separada: falsos aprobados 3/8→0/8; KEEP acotado, pack retirado. En RUN-097 se aplicó la decisión: 17 artefactos nuevos y dos anclas recuperados de fuente autorizada antes de adjudicar lectura primaria real. Uso observado a +1, no beneficio causal del agente.

### DISC-022 · Resolver más citas no equivale a reducir errores ni a cerrar la separación

- Fecha: 2026-10-18
- Hallazgo: RUN-097 compara ocho casos nuevos: acceso a fuente resuelve 8/8, control de metadatos se abstiene en ocho. Ambos tienen cero aprobaciones sin apoyo: no hay mejora de seguridad. La métrica de resolución se congeló antes de crear casos para no premiar la abstención total. Un contexto separado revisó fuente antes de clave y coincidió 8/8; salidas ya estaban recuperadas de fuente autorizada. El KEEP del juez sigue condicional: el padre no dispone de auditoría independiente de accesos y conserva INCONCLUSIVE de adopción/RSI, sin alterar clave, umbral o salidas. No es baseline de producción ni ganancia intrínseca; pack retirado.
- Evidencia: `docs/experiments/semantic-citation-trial.md`, `evals/semantic-citations/run-097/raw-durability-receipt.json`, `evals/semantic-citations/run-097/judge/summary.json`, `evals/semantic-citations/run-097/parent-decision.json`, `cognition/runs/2026-10-18T08-04Z-abd-pearl-097.md`
- Confianza: high for retained counts/integrity; procedural access self-attested, production/generalization effects unknown
- Siguiente prueba: Nuevo pack y control que también lea la fuente, con separación auditable; congelar protocolo antes de casos. No repetir la muestra retirada ni añadir otro capturador genérico.

### DISC-023 · Una intención de revisión necesita disparador y un retraso explícito

- Fecha: 2026-10-18
- Hallazgo: El CLI de continuidad no calculaba cuándo vencían siete seguimientos, aceptaba uno sin origen explícito y el estado de RUN-092 conservaba +3 sin +1. Sobre la misma entrada congelada, el nuevo planificador encuentra las cuatro revisiones previstas y señala el origen ausente; no equivale a cuatro olvidos demostrados. La revisión solicitada a +1 se comprobó ahora a +6 y se registra late, sin reconstruir el pasado. Catorce grupos expuestos y doce casos funcionales separados pasan con fuente estable; KEEP del cálculo read-only, no del aprendizaje del agente. Las comprobaciones de integridad/uso conservan efectos desconocidos y RUN-097 INCONCLUSIVE.
- Evidencia: `docs/experiments/retention-frontier.md`, `scripts/lib/retention-planner.mjs`, `evals/retention-frontier/run-098/comparison.json`, `evals/retention-frontier/run-098/separated/summary.json`, `evals/retention-frontier/run-098/retention.json`, `cognition/runs/2026-10-18T08-56Z-abd-tulving-098.md`
- Confianza: high for fixed ordinal planning and retained functional outputs; delayed-intention transfer from humans is a hypothesis; causal agent effect unknown
- Siguiente prueba: En el siguiente ciclo, usar cognition:check antes de trabajar y verificar las revisiones realmente debidas; no repetir el paquete retirado ni transformar una observación tardía en puntual.

### DISC-024 · Código recuperado no equivale a evidencia experimental conservada

- Fecha: 2026-10-18
- Hallazgo: La copia local y el pack original de RUN-099 desaparecieron antes de push. Código recuperado por hash exacto; ocho resultados reportados no son outcomes verificables. KEEP propuesto retirado a INCONCLUSIVE. Trece grupos nuevos expuestos y comparación sintética1/3→3/3 comprueban la utilidad offline, no independencia ni mejora RSI. RUN-098 ya verificaba manualmente7/7: se automatiza el binding sin inflar recuperaciones.
- Evidencia: `docs/experiments/artifact-root-binding.md`, `evals/artifact-root-binding/run-099/recovery/evidence-status.json`, `evals/artifact-root-binding/run-099/recovery/retention.json`, `tests/artifact-root-binding.test.mjs`
- Confianza: high for observed evidence unavailability and exact code hash; exposed functionality only, agent benefit unknown
- Siguiente prueba: Verificar bytes/ancla desde fuente autorizada reabierta antes de adjudicar un ensayo nuevo. No recrear outcomes del transcript.

### DISC-025 · Un estado desconocido no debe equivaler a verified

- Fecha: 2026-10-18
- Hallazgo: Una nueva lectura primaria llevó a probar el gate heredado sobre un manifiesto real y cinco mutaciones expuestas de estado. El check aceptaba missing/null/unreviewed; v1.3 sólo admite verified y conserva el control. Falsos pases de ese check5/5→0/5, no del informe completo: todos seguían fallando por datos no medidos. Doce capturas y24 artefactos recuperados antes de decodificarlas. KEEP del contrato, no precisión semántica ni RSI. El A/B semántico no se lanzó sin acceso independiente y control real.
- Evidencia: `docs/experiments/primary-reading-status-boundary.md`, `evals/primary-reading/run-100/source/reading.json`, `evals/primary-reading/run-100/raw-durability-receipt.json`, `evals/primary-reading/run-100/comparison.json`, `docs/bugfixes/research-status-boundary.md`
- Confianza: high for fixed exposed metadata predicate and recovered captures; parent relevant-section reading only, agent benefit unknown
- Siguiente prueba: Observar aplicación a otra entrada real; mantener separado el estado declarado del juicio de apoyo semántico. El ensayo con modelos requiere control lector real y auditoría de accesos independiente.

### DISC-026 · Un cursor histórico no debe revelar identificadores futuros

- Fecha: 2026-10-18
- Hallazgo: El planner v1 exponía dueRun posteriores al cursor aunque no diera por completadas observaciones futuras. En diez cursores expuestos sobre el mismo snapshot actual:51 referencias futuras/86 filas upcoming→0/86 con v1.1. Los otros campos y la vista actual se conservan salvo versión;20 grupos pasan. KEEP de esa frontera, no de reconstrucción histórica ni mejora del agente. Las definiciones actuales de schedules siguen pudiendo ser posteriores al cursor; el paper de leakage motiva el límite pero no prueba beneficio local.
- Evidencia: `docs/experiments/retention-temporal-boundary.md`, `docs/bugfixes/retention-temporal-boundary.md`, `evals/retention-temporal/run-101/reading.json`, `evals/retention-temporal/run-101/comparison.json`, `evals/retention-temporal/run-101/retention.json`
- Confianza: high for the exposed deterministic identity boundary; historical state and agent benefit unknown
- Siguiente prueba: Verificar uso legítimo posterior a+1/+3/+7 sin repetir packs retirados. Para replay histórico completo se requieren snapshots versionados, no sólo un cursor sobre metadatos actuales.

### DISC-027 · Finalizar el empaquetador no demuestra integridad de sus bytes

- Fecha: 2026-10-18
- Hallazgo: El preflight real valida fuente/build, no el gzip devuelto. Tras congelar ocho condiciones expuestas, el nuevo lector acotado detecta6/6 fallos y acepta2/2 controles, con0 mutaciones. KEEP opt-in: no prueba TAR, identidad, despliegue, semántica ni mejora del agente. Nueve artefactos y target recuperados de fuente autorizada antes de interpretar la captura, que conserva exit1. La causa de la truncación histórica sigue SIN DATOS.
- Evidencia: `docs/experiments/postpackage-completeness.md`, `evals/postpackage/run-102/baseline.json`, `evals/postpackage/run-102/development-results.json`, `evals/postpackage/run-102/resume.json`, `evals/postpackage/run-102/inspection.json`
- Confianza: high for fixed exposed gzip behavior; production detection rate, independent holdout and agent benefit unknown
- Siguiente prueba: Observar nuevos empaquetados reales a+1/+3/+7: releer después del retorno, preservar el fallo y no entregar archivos conocidos incompletos. No repetir fixtures como muestra nueva.

### DISC-028 · Una latencia ausente no es cero y un número coercionado no es una medición

- Fecha: 2026-10-18
- Hallazgo: El evaluador1.3 pasaba cuatro condiciones inválidas/10 y rechazaba el cero medido. En12 condiciones expuestas,1.4 pasa de1/12 a12/12 contratos, elimina4/10 aprobaciones indebidas y conserva2/2 controles; once checks ajenos por condición iguales. Ausencia, parcialidad y overflow quedan null/unknown. KEEP numérico, no ahorro ni RSI global. Raw recuperado antes de decodificar; ejecución candidata en dirty tree declarada con hash exacto. Primer fallo de build conservado, no atribuido al cambio offline.
- Evidencia: `docs/experiments/research-latency-contract.md`, `docs/bugfixes/research-latency-contract.md`, `evals/research-latency/run-103/comparison.json`, `evals/research-latency/run-103/durability.json`, `evals/research-latency/run-103/build-failure.json`
- Confianza: high for the12 exposed numeric conditions; real instrumentation, independent holdout and agent benefit unknown
- Siguiente prueba: Aplicar a una traza realmente nueva y observar métricas medidas versus desconocidas; no inferir coste de latencia ni repetir fixtures como evidencia nueva.

### DISC-029 · Un commit limpio no garantiza que el Worker conserve los bytes validados

- Fecha: 2026-10-18
- Hallazgo: El preflight237 sólo comprueba HEAD/limpieza. En14 condiciones expuestas acepta10/12 inválidas, incluso bytes fallidos retenidos deRUN103. Vínculo2 path/bytes/SHA256 reduce10/12→0/12 y conserva2/2 controles y2/2 guardrails de fuente. KEEP para revisión; causa de corrupción, beneficio del agente y generalización desconocidos. Release-impacting: sin revisión humana exigida no se despliega.
- Evidencia: `docs/experiments/build-worker-binding.md`, `docs/bugfixes/build-worker-binding.md`, `evals/build-worker-binding/run-104/comparison.json`, `evals/build-worker-binding/run-104/durability.json`
- Confianza: high for exposed byte-contract conditions; no independent holdout or causal agent benefit
- Siguiente prueba: Revisión humana y después un build real nuevo; no desplegar accidentalmente la propuesta pendiente.

## Fallos

### FAIL-001 · Un loop stateless puede volver al mismo cuello de botella

- Fecha: 2026-08-25
- Qué ocurrió: Cuando la tarea recurrente no lee un estado persistente suficientemente claro, puede repetir diagnósticos o intervenciones y dificultar la atribución del progreso.
- Evidencia: `recurrent task history`, `docs/AGENT_PLAYBOOK.md`
- Confianza: medium
- Reparación: Leer el snapshot, el último run y el blackboard antes de seleccionar un programa acotado de intervenciones relacionadas.

### FAIL-002 · La forma puede adelantarse al valor

- Fecha: 2026-08-31
- Qué ocurrió: Una página con muchas cajas, etiquetas o frases repetidas puede parecer completa sin explicar qué aprende el lector ni qué puede comprobar después.
- Evidencia: `docs/FRONTEND_VALUE_CONTRACT.md`, `design-qa.md`
- Confianza: high
- Reparación: Aplicar la secuencia pregunta → contexto → evidencia → implicación → siguiente prueba antes de añadir contenedores.

### FAIL-003 · Un archive válido puede no corresponder al último source commit

- Fecha: 2026-09-17
- Qué ocurrió: Sites v107 se guardó con el SHA correcto, pero el dist reutilizado se había construido antes del último parche documental. El deployment funcionó y aun así la proyección pública no representaba exactamente el commit declarado.
- Evidencia: `scripts/write-build-provenance.mjs`, `scripts/check-build-provenance.mjs`, `docs/bugfixes/project-cognition-reproducible-read-path.md`, `runs/2026-09-17T04-55Z-abd-herschel-036.md`
- Confianza: high; production readback reproduced the mismatch
- Reparación: Construir después del commit final y exigir que dist/.openai/build-provenance.json coincida con un HEAD limpio antes de empaquetar.

## Patrones

### PAT-001 · Mapa pequeño, profundidad opcional

La entrada debe ser corta y orientadora; cada nodo enlaza a una superficie más específica que el agente sólo abre si la tarea lo exige.

- Fuente: AGENTS.md · docs/RESEARCH_AGENT_DISCOVERY.md

### PAT-002 · Determinismo + agentes + gate

Las comprobaciones deterministas fijan el suelo, los agentes proponen o critican y una frontera explícita decide qué puede persistir o publicarse.

- Fuente: docs/RESEARCH_OS_CONTRACT.md · docs/FRONTEND_PAGE_REVIEW_JOB.md

### PAT-003 · Estado con dueño y siguiente acción

Una entrada de estado sólo es operativa si nombra owner, situación, evidencia y el movimiento que desbloquea el siguiente ciclo.

- Fuente: state/ · recurrent task contract

## User insights

### INSIGHT-001 · Project cognition es más que memoria

- Fecha: 2026-09-03
- Insight explícito: La continuidad de un proyecto necesita constitución, memoria semántica, memoria episódica, estado presente y un blackboard temporal; no basta con acumular transcripciones.
- Fuente: User brief 2026-09-03
- Confianza: explicit

### INSIGHT-002 · Markdown como superficie primaria para agentes

- Fecha: 2026-09-03
- Insight explícito: Las páginas para agentes deben ser documentos de texto completos, con formato Markdown y lectura directa por capa; una interfaz web decorativa no aporta utilidad suficiente para ese trabajo.
- Fuente: User feedback 2026-09-03
- Confianza: explicit

### INSIGHT-003 · Project Cognition es un espacio de trabajo persistente

- Fecha: 2026-09-03
- Insight explícito: El objetivo no es sólo recordar el pasado: cada agente necesita encontrar un lugar público donde leer el presente, ver trabajo disponible, dejar contexto y avanzar con la sabiduría acumulada.
- Fuente: User brief 2026-09-03
- Confianza: explicit