Repository navigation
bug: Codex indexa herramientas como texto pero omite tool_events #200
Description
Contexto y evidencia
Derivado de #198 y pablontiv/homeserver#485. Fuente cotejada en main, HEAD f280884a359f88e0e71bef48d69b0a1052d6fa30. Las mediciones siguientes ya fueron ejecutadas en la investigación; este triage no ejecuta builds ni modifica el índice. Evidencia local (no adjunta ni pública): /tmp/backscroll-485-handoff/reports/. Solo se publican conteos, comandos y referencias de código.
Defecto y reproducción
internal/readers/codex_reader.go:170-194 serializa function/custom calls y outputs sin ToolName/CommandHead/IsError/ExitCode; el guard de internal/storage/sync.go:374 impide tool_events.
SELECT count(*) FROM search_items WHERE source_path LIKE '%/.codex/%' AND content_type='tool';
SELECT count(*) FROM tool_events WHERE source_path LIKE '%/.codex/%';Ejecutar con sqlite3 -readonly <index>: medición original 62.115 registros tool (llamadas + resultados), 0 tool_events. No son 62.115 llamadas ni cero fallos demostrados.
lim-codex.md:260-308,312-409 y lim-codex-census.sql: reingesta aislada con parche = 1.184 archivos, 67.569 registros, 30.150 llamadas nativas. Parche experimental /tmp/backscroll-485-handoff/codex-reader.patch; diff completo /tmp/backscroll-485-handoff/backscroll-l4-worktree.diff. No implementado en main.
Contrato esperado y aceptación
- Calls soportadas generan un evento por llamada con nombre/ID nativo; command head solo para comandos shell, no código libre de wrappers.
- Outputs se emparejan mediante call_id; señales nativas o envelopes de resultado específicamente demostrados conservan fallo/éxito/desconocido, sin inferir el éxito de operaciones anidadas por el éxito del wrapper.
- Prueba conductual de ingestión + patterns cubre function/custom calls, resultados intercalados, fallo explícito y señal ausente; verifica conteos sin duplicar outputs.
- Replay soportado recupera metadata de fuentes disponibles sin cambios y documentación expone cobertura/limitaciones. La documentación actual (
docs/input-contract.md, ejemplo Codex) reconoce que no sintetiza metadata rica; este issue solicita reparar la pérdida de metadata nativa demostrada, no adivinarla desde texto arbitrario.
Limitación documentada: .jsonl.zst
El preset soporta **/*.jsonl; internal/sync/jsonl.go:22-34 abre bytes sin descompresión zstd. El experimento añadió streaming temporal zstd -dc -- PATH. La cobertura ejecutada demostró 0 sesiones indexables ausentes en producción por esta limitación. No es otro bug ni se exige aquí ampliar formatos o añadir dependencia externa. El parche temporal de jsonl.go requiere decisión separada antes de integración.
Duplicados: inventario open/closed; búsquedas Codex tool y "ToolName" "Codex"; #71 cubre ingestión inicial, no eventos estructurados.
Activity
pablontiv commentedon Oct 20, 2026
Pregunta
Map native Codex calls and call_id outputs into existing structured event storage while preserving unknown nested outcomes.
BASIS
Issue200 exercised native fixture and isolated experiment; deterministic parser/storage defect correction using existing replay with no dependency or new runtime.
REVIEW
TriageReview200