Diario
Secciones
Ajustes de lectura
Voz natural grabada para este curso, la misma en todos los navegadores.
Ninguna voz para este idioma en este navegador.
Más voces
Código y términos técnicos en inglés
Desactivado: la voz de la página lo lee todo, sin pausa entre dos voces.
Ninguna voz para este idioma en este navegador.
Más voces
Más voces: Microsoft Edge ofrece voces naturales en línea, y Windows (Configuración › Hora e idioma › Voz), macOS y Android instalan otras.
Progreso
Sección titulada «Progreso»- Claude Code y la CLI de Codex instalados en Windows; versiones anotadas abajo
- CI: el hook, el servidor MCP (cliente del SDK y sesiones raw en las dos eras del protocolo) y los archivos de configuración, en Linux, Windows y macOS, sin agente ni clave de API
- Lección 1: agentes, herramientas y permisos
- Lección 2: contexto de proyecto,
CLAUDE.md,AGENTS.md, memoria y compactación - Lección 3: hooks, skills y subagentes
- Lección 4: MCP, un servidor C# para ambos agentes
- Lección 5: skills de Matt Pocock y workflow de tracer bullets
- Lección 6: laboratorio acotado de aislamiento Sandcastle
- Lección 7: ciclo de Compound Engineering y aprendizaje duradero
- Sesiones de Codex: todas las capturas que necesitan el modelo (límite de uso hasta el 2026-09-19)
- Lección 8: trabajar en GuitarAlchemist/ga
- Un formato de observación para ejecuciones de modelos, skills y subagentes, y su primera observación (2026-09-26)
El software que enseña este curso es Claude Code, la CLI de Codex y, por la lección sobre MCP, el servidor MCP de GuitarAlchemist/ga — los tres dieron hallazgos. Cuatro son documentación que no coincide con el comportamiento, lo que aquí importa más que en otros sitios: un tutorial sobre agentes es sobre todo un tutorial sobre cuánto fiarse de lo que una herramienta dice de sí misma. Nada se ha reportado aguas arriba.
No hay tabla de experimentos: este diario recoge sorpresas y hallazgos de esperado-contra-obtenido, pero ninguna entrada planteó una hipótesis antes de una medición, y redactar una a partir del resultado es justo lo que esa sección existe para impedir.
| Esperado | Lo que pasa | Dónde | Medición | Estado |
|---|---|---|---|---|
claude -p arranca en modo default, como dice la tabla de la documentación |
Sigue el defaultMode de los ajustes del usuario. Esta máquina pone "defaultMode": "auto", así que un claude -p al que se le pide crear un archivo lo creó sin preguntar |
~/.claude/settings.json |
Un archivo escrito sin pedir aprobación | Reproducido; la documentación y el comportamiento se contradicen 2026-09-14 |
--allowedTools restringe las herramientas disponibles |
Las preaprueba. La que restringe es --tools |
CLI de Claude Code | Dos opciones, una de las cuales hace en un script lo contrario de lo que su nombre sugiere | Reproducido, fácil de confundir 2026-09-14 |
${CLAUDE_PROJECT_DIR} en los args de .mcp.json también se resuelve para Claude Code |
Está puesta para el servidor, no para Claude Code, así que el servidor no arranca | .mcp.json |
CONNECTION_CLOSED; ${CLAUDE_PROJECT_DIR:-.} funciona |
Documentado; el modo de fallo no 2026-09-14 |
AGENTS.md se relee del disco justo después de una compactación, como dice la documentación |
La copia inyectada tras la compactación era la del principio de la sesión | Claude Code 2.1.270 | Sesión iniciada a las 20:56 UTC, regla registrada a las 22:01, compactación a las 22:32, y la copia correcta llegó a las 23:06:49 — 34 minutos de retraso | Reproducido una vez, causa desconocida, no reportado 2026-09-14 |
Un prompt que empieza por / llega al modelo tal como se escribió |
Git Bash lo reescribe: claude -p "/journal-status …" llegó como C:/Program Files/Git/journal-status … |
Git Bash en Windows | MSYS_NO_PATHCONV=1 lo arregla. El modelo luego sorteó el prompt deformado en lugar de avisarlo |
Reproducido; es cosa del shell, no de Claude Code 2026-09-14 |
Un subagente que lee una ruta absoluta de Windows tiene permiso en modo default |
El Read de /C:/Users/… de un subagente Haiku se rechazó como «a suspicious Windows path pattern that requires manual approval», dos veces, antes de que reintentara con rutas relativas |
Claude Code, modo default |
Dos rechazos y luego un rodeo que el subagente encontró solo | Reproducido 2026-09-14 |
| Un agente sabe decir de dónde salió una de sus propias reglas | El padre le dijo al usuario que «Key takeaways» no venía de ninguna parte, cuando estaba en la definición del propio subagente — que el padre nunca lee | subagentes de Claude Code | Una atribución equivocada y segura de sí | Reproducido; un límite que vale la pena enseñar 2026-09-14 |
| Las respuestas JSON-RPC vuelven en el orden en que se pidieron | Cinco líneas enviadas de golpe volvieron desordenadas: el id 4 antes que el id 3 | sesión MCP en crudo del curso | Arreglado esperando cada respuesta en vez de encadenarlas | Reproducido; el protocolo lo permite, el primer código del curso no 2026-09-14 |
codex exec sigue aceptando --full-auto, como muestran casi todos los tutoriales |
La 0.154.0 lo rechaza (unexpected argument '--full-auto'); la política de aprobación untrusted está retirada y --approve-for-me es nueva |
CLI de Codex 0.154.0 | Una opción retirada, una política retirada, una opción nueva | Reproducido; codex mcp-server también desapareció, y su página de documentación es ya un aviso de retirada 2026-09-14 |
codex mcp list dice si un servidor funciona |
Imprime «enabled» sin comprobar la conexión, a diferencia de claude mcp list, que arranca los servidores que puede |
CLI de Codex 0.154.0 | Un estado que no puede fallar | Reproducido 2026-09-14 |
GetScaleNotes escribe las notas según la tonalidad pedida |
Solo escribe con sostenidos, sea cual sea la tonalidad | GaMcpServer/Tools/ScaleTool.cs 50-80 |
«F major» da la♯ donde lo correcto es la♭ … si♭ | Corregido upstream por #681, fusionada el 2026-09-23, con pruebas 2026-09-14, 2026-09-24 |
| La herramienta acepta las escrituras con bemoles que su propia documentación usa de ejemplo | Las rechaza: Unknown root note 'Bb' |
GaMcpServer/Tools/ScaleTool.cs |
El ejemplo de la documentación es la entrada que falla | Corregido upstream por #681, fusionada el 2026-09-23, con pruebas 2026-09-14, 2026-09-24 |
| Un modo que no es mayor ni menor devuelve ese modo | Todo lo que no empieza por «minor» se trata como mayor: D dorian devuelve re mayor |
GaMcpServer/Tools/ScaleTool.cs |
Capturado en vivo durante la lección | Corregido upstream por #681, fusionada el 2026-09-23, con pruebas 2026-09-14, 2026-09-24 |
| Dos herramientas del mismo servidor escriben una nota igual | get_key_notes("Key of F") escribe si♭ mientras que GetScaleNotes solo escribe con sostenidos |
servidor MCP de GA | Dos respuestas a una pregunta, desde un solo servidor | Corregido upstream por #681, fusionada el 2026-09-23, con pruebas 2026-09-14, 2026-09-24 |
| Un error MCP se devuelve como error | Se devuelve como texto corriente | GaMcpServer/Tools/ScaleTool.cs |
Ni isError, ni excepción: un cliente no puede distinguir el éxito del fallo |
Reproducido, no reportado 2026-09-14 |
El .mcp.json en la raíz de un repositorio se puede compartir |
El de GA contiene rutas absolutas propias de una máquina | raíz del repositorio de GA | Rutas que solo funcionan en una máquina | Reproducido, no reportado 2026-09-14 |
2026-09-14 — Versiones e instalación
Sección titulada «2026-09-14 — Versiones e instalación»- Claude Code: instalador nativo,
~/.local/bin/claude. La sesión empezó en 2.1.270;claude doctorindicó después «Last update attempt: success → 2.1.271 (2026-09-14)», y las sesiones nuevas desde las 22:14 UTC aproximadamente ejecutaron 2.1.271. La sesión en curso se queda en su versión hasta que se reinicia, así que las capturas de antes y de después de esa hora difieren en versión. Cada captura de las lecciones indica la suya. - CLI de Codex: 0.154.0, instalada con
npm install -g @openai/codex(Node.js 24.12.0). No se probó el instalador PowerShell de la documentación. - .NET:
code/agentic-coding/global.jsonfija el SDK 10.0.100 conrollForward: latestFeature; en local eso selecciona 10.0.112, mientras que la raíz del repositorio, singlobal.json, obtiene una preview de 11.0. La CI usaactions/setup-dotnetcon el mismoglobal.json. - ModelContextProtocol 2.2.0 y Microsoft.Extensions.Hosting 10.0.12 para el servidor; GuitarAlchemist/ga usa ModelContextProtocol 1.3.0.
- La documentación se ha movido:
docs.anthropic.com/en/docs/claude-code/…redirige (301) acode.claude.com/docs/en/…; la documentación de Codex está enlearn.chatgpt.com/docs/…. Ambos sitios sirven cada página en Markdown con el sufijo.md, que es como se comprobaron las afirmaciones de las lecciones, página a página. - Ninguna
ANTHROPIC_API_KEYen la máquina ni en la CI: todas las capturas usaron la suscripción.
2026-09-14 — Las capturas y su coste
Sección titulada «2026-09-14 — Las capturas y su coste»Cada salida de agente en las lecciones es una captura, con su hora UTC. Lo que indicó claude -p:
| Captura | Lección | Turnos | Coste indicado |
|---|---|---|---|
| Elementos sin marcar en los diarios, 22:10 | 1 | 3 | 0,34 $ |
Servidor MCP, D dorian, Gb major, ladybugdb, 22:11 |
4 | 5 | 0,36 $ |
${CLAUDE_PROJECT_DIR} en .mcp.json, primer intento, 22:15 |
4 | 4 | 0,39 $ |
Hook que bloquea git push --prune, 22:18 |
3 | 2 | |
Escritura rechazada en modo default, 22:22 |
1 | 2 | |
| Skill, 22:24 y 22:25 | 3 | 6 y 2 | |
Experimento CLAUDE.md / AGENTS.md, 22:37 |
2 | 1 cada uno | |
Subagente lesson-checker, 22:48 |
3 | 4 | 0,49 $, de los cuales 0,04 $ para el subagente Haiku |
Tres variantes de .mcp.json, 22:54 |
4 | 4 | 0,34 $ |
El «coste» es lo que indica la salida JSON; con una suscripción, cuenta contra los límites de uso en lugar de facturarse.
codex exec con la misma pregunta que la primera captura se detuvo con el error citado en la lección 1: el límite de uso, hasta «Sep 19th, 2026 9:42 AM». Los comandos de Codex que no llaman a un modelo funcionaron: codex --help, codex exec --help, codex mcp add, codex mcp list, codex mcp get, con un CODEX_HOME temporal.
2026-09-14 — Sorpresas en Claude Code
Sección titulada «2026-09-14 — Sorpresas en Claude Code»claude -psigue eldefaultModede la configuración de usuario. El~/.claude/settings.jsonde esta máquina fija"defaultMode": "auto", así que unclaude -pal que se pidió crear un archivo lo creó sin confirmación. La tabla de la documentación dice queclaude -pempieza endefault, pero la configuración va primero en el orden que indica. La lección 1 pasa--permission-mode defaultpara la captura de un rechazo.--allowedToolsno restringe la lista de herramientas, preaprueba;--toolsrestringe. Fácil de confundir en los scripts.- Git Bash reescribe un prompt que empieza por
/.claude -p "/journal-status …"llegó comoC:/Program Files/Git/journal-status ….MSYS_NO_PATHCONV=1lo arregla. El modelo rodeó entonces el comando ausente leyendo él mismoSKILL.md. - Un
Readde un subagente Haiku con la ruta/C:/Users/…se rechazó como «a suspicious Windows path pattern that requires manual approval», en mododefault, dos veces, antes de que lo reintentara con rutas relativas. Los rechazos aparecen en lospermission_denialsdel agente padre. - El agente padre atribuyó mal una regla: le dijo al usuario que «Key takeaways» no venía de ninguna parte, cuando estaba en la propia definición del subagente, que el padre nunca lee.
- Los hooks de una carpeta no confiable se ejecutan en modo
-p, mientras que sus reglas allow se ignoran con un aviso. Documentado en confianza del espacio de trabajo, y merece una línea en cualquier script de «clonar y ejecutar». ${CLAUDE_PROJECT_DIR}en los args de.mcp.jsonfalla sin valor por defecto (CONNECTION_CLOSED), documentado: la variable se define para el servidor, no para Claude Code.${CLAUDE_PROJECT_DIR:-.}funciona.claude mcp listmuestra esa entrada como${CLAUDE_PROJECT_DIR}/server/LearnMcp.dll, sin el:-.: una rareza de visualización, el servidor se conectó.- El AGENTS.md inyectado tras la compactación era el del inicio de la sesión. La sesión de este curso empezó a las 20:56 UTC; la regla de Mermaid se incluyó en un commit de
AGENTS.mda las 22:01; la sesión compactó a las 22:32. La transcripción de la sesión muestra los archivos de instrucciones inyectados tras la compactación sin la regla de Mermaid, aunque el archivo en disco la tenía y la documentación dice que elCLAUDE.mdde la raíz del proyecto se «reinyecta desde el disco». La copia actual llegó a las 23:06:49 UTC, adjunta al siguiente mensaje entrante, como «Instruction files were re-read after the conversation was compacted; these differ from their earlier copies»: durante 34 minutos, mientras se escribían las lecciones 1 a 4, a las instrucciones en contexto les faltaba la regla (las lecciones usaron Mermaid de todos modos, a partir del resumen de la conversación). AquíCLAUDE.mdes solo@AGENTS.md: quizá la importación influya. Observado una vez, en 2.1.270, causa desconocida. - El propio hook de git de la máquina bloqueó mis comandos dos veces: expresiones regulares como
push .*--deletecoincidían con texto dentro de here-documents y de datos de prueba JSON. Escribir los archivos con una herramienta de edición en lugar de un here-document de shell lo evitó. El mismo hook deja pasargit push --prune. Esa es la motivación del hook de la lección 3, que analiza el comando. - La búsqueda de herramientas está activada: las herramientas MCP no están en el contexto del modelo al arrancar; la primera llamada de cada captura MCP es
ToolSearch.
2026-09-14 — Sorpresas en Codex
Sección titulada «2026-09-14 — Sorpresas en Codex»codex mcp-serverha desaparecido; la página de documentación que lo describía es ahora un aviso de retirada que apunta al app server experimental.codex exec0.154.0 rechaza--full-auto(unexpected argument '--full-auto'), la política de aprobaciónuntrustedestá retirada, y--approve-for-mees nuevo. Muchos tutoriales siguen usando las opciones antiguas.- En Windows, los comandos de los hooks se ejecutan con
%COMSPEC%ocmd.exe /C(código fuente): la forma documentada$(git rev-parse --show-toplevel)necesita uncommand_windowsque la sustituya. - Esta máquina tiene hooks tanto en
~/.codex/hooks.jsoncomo en~/.codex/config.toml; cadacodex execavisa «prefer a single representation for this layer». codex mcp addcon unCODEX_HOMEbajo la carpeta temporal avisa de que se niega a crear alias de PATH allí, y continúa.codex mcp listmuestra «enabled», sin comprobar la conexión;claude mcp listcomprueba los servidores que puede iniciar.
2026-09-14 — El servidor MCP y sus pruebas
Sección titulada «2026-09-14 — El servidor MCP y sus pruebas»- La primera prueba raw envió cinco líneas JSON de golpe por la tubería: las respuestas volvieron fuera de orden (id 4 antes que id 3). El modo raw espera ahora cada respuesta antes de enviar la petición siguiente.
server/discoversin_metaresponde-32602, «requires per-request metadata declaring a supported protocol version».- El SDK devuelve un
string[]como texto JSON con"escapado como\u0022, y también los caracteres no ASCII escapados:course_outlinedevuelve en cambio una sola cadena, para que una raya en un título siga siendo legible. - La consola de Windows mostraba esa raya como
-hasta que el cliente de comprobación fijóConsole.OutputEncodingen UTF-8; los archivos esperados son idénticos en los tres sistemas operativos. - Un
Console.WriteLinedentro de una herramienta rompe las sesiones raw pero no la salida del cliente del SDK, que se saltó la línea no JSON: el cliente del SDK es una prueba tolerante. - Primer
dotnet run guard-git-push.cs: unos 13 s de compilación; ejecuciones siguientes, 0,24 s desde la caché de compilación. Los registros del hook usan un timeout de 120 s. - La ejecución de CI 34904115148 pasó al primer push en Linux, Windows y macOS.
2026-09-14 — GuitarAlchemist/ga, en el commit a826864
Sección titulada «2026-09-14 — GuitarAlchemist/ga, en el commit a826864»Hallazgos para el autor de ga; este curso no escribe en ga, y no se ha informado de nada upstream.
GaMcpServer/Tools/ScaleTool.cs,GetScaleNotes(líneas 50-80):- escribe solo con sostenidos:
F majordaA#en lugar deBb; - la descripción del parámetro da
'Bb major'como ejemplo, y la herramienta rechazaBb(«Unknown root note ‘Bb’. Use sharps…»); - los errores se devuelven como resultados de texto corrientes, no con
isError: trueni con una excepción; - todo modo que no empiece por «minor» se trata como mayor:
D doriandevuelve D mayor; get_key_notes("Key of F")escribeBb, así que dos herramientas del mismo servidor no coinciden. Observado mediante una compilación local de ga el 2026-09-14 hacia las 22:57 UTC; el código fuente ena826864tiene la misma lógica.
- escribe solo con sostenidos:
- El
.mcp.jsonde la raíz de ga contiene rutas absolutas, específicas de una máquina: solo funciona en la máquina de su autor. Rutas relativas, o${VAR:-default}, lo harían compartible. - ModelContextProtocol 1.3.0 en
GaMcpServer.csproj, subido desde 1.1.0 porque el paquete complementario de gobernanza depende de>= 1.3.0; la versión estable actual es la 2.2.0, que habla la revisión 2026-07-28. Scripts/sync-agents-md.ps1: su ayuda dice que un aviso «do not edit» se «añade al principio», mientras que el código sustituye la línea de la nota; inofensivo, pero el comentario está desactualizado.CLAUDE.mdnombra además la versión2.1.126de la extensión de Claude Code, 145 versiones de parche por detrás.
2026-09-20 — Tutoriales de workflow agéntico
Sección titulada «2026-09-20 — Tutoriales de workflow agéntico»- Versiones fijadas: skills de Matt Pocock
c55ee460, Sandcastlee99f832f(paquete 0.12.0) y Compound Engineering6be0932b(plugin 3.27.0). - Lecciones 5–7 añadidas en inglés, francés y español a partir de fuentes upstream primarias.
- No se usó ningún plugin, credencial ni proveedor de pago. Las ejecuciones Sandcastle y con modelo siguen siendo experimentos manuales.
- Se documentó el conflicto upstream entre la antigua configuración Sandcastle en
config.jsony las plantillas TypeScript actuales, sin decidirlo en silencio.
2026-09-24 — Correcciones upstream
Sección titulada «2026-09-24 — Correcciones upstream»- Las cuatro filas de
ScaleToolestán corregidas upstream por #681, fusionada el 2026-09-23.GetScaleNotesescribe una letra por grado:F majordaF G A Bb C D E, yBb major, el ejemplo de su propia documentación, se acepta y daBb C D Eb F G A.D doriandaD E F G A B C. Cada caso es una prueba delScaleToolTests.csde GA, que leí en la rama main de GA sin ejecutarlo. - Las dos herramientas coinciden ahora. Una sesión que corregía otros hallazgos de los cursos llamó a
KeyTool.GetKeyNotesyScaleTool.GetScaleNotespara las 30 tonalidades deKey.Items, y escribieron las mismas notas en cada una.
2026-09-26 — Un formato de observación para modelos, skills y subagentes
Sección titulada «2026-09-26 — Un formato de observación para modelos, skills y subagentes»Las notas sobre ejecuciones de agentes derivan hacia la anécdota: «Opus lo hizo más rápido», «el subagente se perdió». Una anécdota mezcla tres cosas: lo que razonó el modelo, lo que el arnés le dejó hacer y quién era dueño del trabajo. El formato de abajo las separa, para que dos observaciones puedan compararse, o declararse no comparables.
La ficha. Una fila por ejecución. Un campo que no se tiene se escribe desconocido, nunca se adivina.
| Campo | Qué va en él |
|---|---|
| Fecha, identificador de ejecución | Fecha y hora locales con su desfase; el identificador de correlación o de sesión |
| Repositorio | El SHA exacto en que cada repositorio se leyó o se cambió |
| Arnés | CLI o aplicación y su versión (claude --version), y el sistema operativo |
| Modelo, pedido y observado | Lo que se pidió, y lo que muestra un recibo. Un nombre de modelo mostrado por una interfaz o por el propio agente es autodeclarado, no un recibo |
| Skill o subagente | Nombre y versión, o un resumen criptográfico del archivo; el rol: padre, subagente o agente par |
| Tarea y contexto | La tarea en una frase; qué contexto se dio (archivos, instrucciones, memoria) |
| Permisos | El modo de permisos, y qué se permitió o se denegó |
| Hipótesis | Escrita antes de la ejecución, o marcada como observación retrospectiva |
| Evidencia | El comando, artefacto, registro o código de salida que un lector puede volver a abrir |
| Resultado y estado | Uno de: enviado, visible, aceptado, completado, verificado de forma independiente |
| Categoría de fallo | Razonamiento del modelo; lanzador, herramienta, autenticación, permiso o entorno; orquestación o propiedad |
| Tokens y coste | La cifra y su procedencia: factura del proveedor, estimación del arnés o desconocido |
| Confianza y límites | Tamaño de muestra, y lo que la ejecución no puede mostrar |
| Reproducibilidad | Lo que necesita una segunda ejecución: mismas entradas, semilla, versiones |
| Seguimiento | La próxima comprobación, con su responsable |
Los estados no son intercambiables.
- Enviado: la petición salió.
- Visible: el destinatario la muestra.
- Aceptado: el destinatario asumió la responsabilidad.
- Completado: dice que terminó.
- Verificado de forma independiente: otra persona volvió a comprobar la evidencia.
Un wrapper que sigue corriendo, una CPU ocupada o un mensaje de «terminado» no prueba ninguno de los dos últimos.
Las categorías de fallo tampoco.
- Un tiempo agotado por un host lento es un fallo de entorno, no del modelo.
- Una afirmación falsa hecha con todas las herramientas funcionando es un fallo de razonamiento.
- Dos agentes que escriben el mismo archivo es un fallo de propiedad, sea cual sea el modelo.
Nada de clasificaciones a partir de anécdotas. Tareas, presupuestos y contextos distintos no se clasifican entre sí. Una comparación justa de modelos necesita:
- tareas emparejadas con entradas fijas;
- ejecuciones o semillas repetidas donde los resultados varían;
- criterios fijados y cegados antes de las ejecuciones;
- una comprobación independiente de cada resultado;
- el coste informado junto a la calidad.
Esa comparación está propuesta, no realizada.
Primera observación: esta delegación, 2026-09-26. Un coordinador (Codex) entregó a una sesión de Claude Code cuatro instrucciones de curso y un diagnóstico, correlación test-quality-courses-20260926 y sus vecinas. Solo se registra la evidencia de la que dispone esta sesión.
| Campo | Observación |
|---|---|
| Arnés | Claude Code 2.1.282 (claude --version, 13:39 EDT). La comprobación previa del coordinador también vio 2.1.282 instalada, mientras el registro de npm ofrecía 2.1.283. No se hizo ninguna actualización ni ningún reinicio |
| Modelo | Solo autodeclarado: la interfaz de la sesión mostraba «Opus 5.5 (1M context)», razonamiento medio, y su prompt de sistema nombra el mismo modelo. No se comprobó ningún recibo del proveedor |
| Roles | Codex como coordinador; esta sesión como único escritor en el worktree de learn; un subagente de solo lectura sobre un clon fijado de AutoHarness; un agente par (Augment) para una auditoría estática de solo lectura de Abide, escrita en la carpeta de traspaso compartida |
| Bus compartido | El coordinador informó que las llamadas status e inbox del bus de mensajes compartido devolvían «Transport closed». Nada muestra que el bus aceptara una reclamación; la coordinación pasó por archivos en una carpeta compartida |
| Hipótesis | Escritas antes de medir solo para el laboratorio test-quality (lección 6 de repository-dogfooding); todo lo demás aquí es observación retrospectiva |
| Resultados, por estado | Laboratorio medido y diario escrito: completado, no verificado de forma independiente. La nota de supervisión del coordinador dice que volvió a analizar los informes de mutación y encontró las mismas cifras; es una nueva comprobación de la evidencia registrada, no una nueva ejecución. Diagnóstico de los hooks: completado; el coordinador calificó su causa raíz de hipótesis |
| Fallos vistos, por categoría | Razonamiento, detectado antes de medir: un generador de entradas malformadas que podía construir una entrada válida. Uso de herramientas, detectado por una comprobación de hash: una edición por script convirtió en silencio un archivo prerregistrado a CRLF, y se revirtió. Lanzador y entorno: un here-document del shell no se pudo analizar, y no se escribió nada; en el host, arrancar un bash vacío tardaba unos 2,8 s durante el diagnóstico de los hooks. Orquestación: nada observado; se mantuvo un único escritor por repositorio |
| Tokens y coste | Desconocido. No se leyó ninguna factura ni recibo de uso. No se llamó a ninguna API de pago |
| Límites | Una sesión, un día, un coordinador; no es muestra de nada |
Por verificar
Sección titulada «Por verificar»- Aplicar el formato de observación a una segunda delegación independiente, y que alguien distinto de su autor compruebe una ficha contra su evidencia.
- Los comandos de instalación de la lección 1 en Linux, WSL y macOS, para ambos agentes, y el instalador PowerShell de Codex.
- Una sesión de Codex que responda a la primera pregunta de la lección 1, y el mismo experimento
AGENTS.mdque en la lección 2. - Hooks de Codex: si el ejemplo
config.tomlde la lección 3 funciona en Windows concommand_windows, y si su ruta relativa funciona cuando Codex arranca en un subdirectorio; el flujo de confianza en/hooks. - Skills de Codex: si
$ARGUMENTS,argument-hintyallowed-toolssignifican algo para Codex, y la invocación de$journal-status. - Agente personalizado de Codex
lesson_checker: la carga, ysandbox_mode = "read-only"en la práctica. - MCP en Codex: una sesión que llame a
scale_notesycourse_outline; el directorio de trabajo contra el que se resuelven losargsrelativos sincwd;default_tools_approval_mode = "approve". - Si
project_doc_fallback_filenamesse acepta en el.codex/config.tomlde un proyecto. - Si Codex expande las importaciones
@pathenAGENTS.md(su documentación no las menciona). - Si Claude Code y Codex toleran una línea no JSON en la stdout de un servidor, como hace el cliente del SDK.
- Por qué el
AGENTS.mdreleído llegó a la sesión solo con el siguiente mensaje entrante tras la compactación: repetir con unCLAUDE.mdsimple, sin importación, en 2.1.271. codex exec -o: si el archivo lo escribe la CLI fuera del sandbox en modoread-only.- Una captura de instalación desechable para cada workflow, sin instalar suites solapadas en el mismo fixture.
- Una ejecución Sandcastle con Docker, rama explícita, una iteración, sin merge y evidencia de pruebas controlada por el host.