JuliusBrussee/caveman · error
ccr summary: %w
Error message
ccr summary: %w
What it means
Store.Summary's aggregate query over the recoveries table failed before any rows were read. The wrapped error is the underlying SQLite query failure; totals are not partially reported.
Source
Thrown at engine/ccr/store_sqlite.go:671
ObjectTaskDecision, decisionID,
))
if errors.Is(err, sql.ErrNoRows) {
return Object{}, ErrNotFound
}
if err != nil {
return Object{}, fmt.Errorf("ccr task decision find: %w", err)
}
return obj, nil
}
// Summary aggregates stored recoveries into totals + per-content-type buckets.
func (s *Store) Summary() (Stats, error) {
out := Stats{ByContentType: map[string]Bucket{}, Basis: "inferred"}
rows, err := s.db.Query(
`SELECT content_type, COUNT(*), COALESCE(SUM(tokens_before),0), COALESCE(SUM(tokens_after),0)
FROM recoveries GROUP BY content_type`)
if err != nil {
return out, fmt.Errorf("ccr summary: %w", err)
}
defer rows.Close()
for rows.Next() {
var ct string
var b Bucket
if err := rows.Scan(&ct, &b.Count, &b.TokensBefore, &b.TokensAfter); err != nil {
return out, fmt.Errorf("ccr summary scan: %w", err)
}
b.Ratio = ratio(b.TokensBefore, b.TokensAfter)
out.ByContentType[ct] = b
out.Totals.Count += b.Count
out.Totals.TokensBefore += b.TokensBefore
out.Totals.TokensAfter += b.TokensAfter
}
if err := rows.Err(); err != nil {
return out, fmt.Errorf("ccr summary rows: %w", err)
}
if err := rows.Close(); err != nil {View on GitHub (pinned to 766dce6b13)
Solutions
- Check the wrapped error
- Retry the summary once the database is quiet
- Recreate the store if the recoveries table is corrupt
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at engine/ccr/store_sqlite.go:671 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of JuliusBrussee/caveman@766dce6b13 (2026-08-18).
Data as JSON: /api/errors/0a052acfeb04c753.
Report an issue: GitHub.