v9.16.0 — Session analytics for agents-consilium
Summary
consilium sessionsgains a reflection layer:turns(one row per human-triggered turn with duration/models/tool/error/usage metrics),flags(deterministic anti-patterns — retry_loop, search_loop, edit_without_read, correction(_burst), abandoned, permission_friction, context_pressure, interrupted, error_burst, failed_run — each with{seq, locator}evidence),stats(grouped aggregates by model/harness/cwd/day with honest coverage).- Fragments carry
error/usage/interruptedwhere native records prove them; layered stores dedupe to canonical identity (codex rollout > state > catalog; claude-desktop by cliSessionId). - Fixes found by dogfooding (Devin agents ran real reflection queries through the CLI): codex
response_item.usermisclassification without an event_msg mirror, retry/search loop false positives on fan-out batches, devin call_id inflation, silent--aroundscope misses. - Codex session listing now reads file heads only —
list -a codexwent from minutes to ~1.4s.
Test plan
-
sessions_test.py30/30 (incl. step-collapsing + unparseable-input regressions) - Full suite
run.sh: 955 passed, 0 failed - Live runs: grok/claude-code turns+flags+stats, codex catalog/history/day stats, flag evidence →
show --aroundverified
Generated with Devin