audit
Cómo corrió el harness de verdad: a dónde se fueron los tokens y qué instrucciones nadie siguió.
Uso
navori audit [--session <id>] [--days <n>] [--since <fecha>] [--until <fecha>] [--all-repos] [--include-human-content] [--snapshot <nombre>] [--compare <snapshot>] [--json]
Flags
--session <id> Una sesión por id, prefijo, o 'latest'. --days <n> Solo sesiones marcadas en los últimos N días. --since <YYYY-MM-DD> Desde esta fecha. --until <YYYY-MM-DD> Hasta esta fecha. --json Imprime el reporte JSON a stdout sin escribir archivos. --out <dir> Cambia el directorio de salida. --all-repos Reporte de rango sobre todos los repos auditados, con la cobertura de cada uno. --include-human-content Incluye contenido humano en los reportes privados, solo en esta llamada. No se combina con --collect. --disarm Cancela un --arm pendiente sin iniciar ninguna sesión. --snapshot <nombre> Congela las métricas del rango como snapshot versionado (formato 2: cohortes por host, régimen, modelo y trabajo) en la raíz de auditoría. No sobrescribe uno existente. No se combina con --json. --copy-to <ruta> Copia el snapshot a esta ruta, relativa a la raíz de git; no sobrescribe. --compare <snapshot> Compara el rango contra un snapshot guardado, métrica por métrica. Solo describe: marca 'matched' cuando las cohortes coinciden y nunca declara una mejora. Sí se combina con --json (no escribe archivos). --start <id> Marca una sesión como auditada (lo usa el flujo del hook). --arm Arma el audit-mode: si ya hay una sesión abierta en el repo, arranca en su siguiente mensaje (sirve `! navori audit --arm` desde dentro); si no, arranca al abrir la próxima. El hook hace el --start solo (una sesión exacta; --disarm lo cancela). --stop <id> Sella el log de la sesión y reporta sobre ella. --collect Levanta el receptor de eventos OTel en 127.0.0.1:4318 hasta que lo cortes: la tercera fuente, la que sabe qué decidió el host (quién aprobó cada permiso, qué skill estaba activa). Imprime la dirección, el directorio de salida y las variables que hay que exportar en la terminal de la sesión auditada. --cwd <dir> Repo a auditar (default: actual). Ejemplos
Activar audit-mode
$ navori audit --start 8f3c1d2e └ audit-mode activo ~/.navori/audits/demo/session-8f3c1d2e.log
Sin sesiones marcadas
$ navori audit └ No hay sesiones marcadas con audit-mode para 'demo'. Actívalo con 'navori audit --start <id-de-sesión>'.
Reporte de una sesión
$ navori audit --session latest ◇ demo · 2026-09-01 → 2026-09-01 ─╮ │ 1 sesiones · 19 agentes │ │ facturable 2.3M tok │ │ arranque 346k tok │ │ hallazgos 1 alto · 3 medio │ └ Reporte ~/.navori/audits/demo/sessions/2026-09-01-8f3c1d2e/report.md
Notas
- Es opt-in y por sesión: sin un '--start' previo no hay log que auditar, y navori no observa nada.
- Los datos salen de dos fuentes que no se sustituyen: el log de eventos que los hooks escriben (qué hizo el harness) y el transcript de Claude Code (el único lugar donde viven los tokens).
- El reporte se escribe en markdown y JSON dentro de ~/.navori/audits/<repo>/, junto a una copia del log de la sesión.
- Los conteos de hooks son parciales cuando el recorder arrancó tarde: la ficha del orquestador lo declara con el porcentaje de la sesión que sí observó.
- Lo que un host no expone aparece como no disponible, nunca como 0. El reporte suma resultados por tarea (revisión, recibo, despacho) y recomendaciones agrupadas por su denominador, sin puntaje único.
- Cada métrica declara su ventana de disponibilidad (desde qué versión o fuente existe el dato), y el reporte suma métricas de eficiencia por tarea. Un flag no declarado se rechaza (exit 2).
- Límites: los verbos de revisión del recibo llegan desde la versión 0.11.3, los umbrales mínimos y topes no están calibrados, la banda de ruido de --compare no está medida y la atribución de tokens por tarea cubre solo al implementer.