Skip to content

bug: Codex indexa herramientas como texto pero omite tool_events #200

Closed

Description

@pablontiv

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

  1. pablontiv commented on Oct 20, 2026

    @pablontiv
    OwnerAuthor

    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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions