JuliusBrussee/caveman · error

ccr typed object list: %w

Error message

ccr typed object list: %w

What it means

Wraps the typed_objects SELECT failure in Store.ListSessionObjects. The session listing query itself errored (lock, corruption, driver issue) as opposed to returning an empty list, which would be a normal result.

Source

Thrown at engine/ccr/store_sqlite.go:629

	if err != nil {
		return fmt.Errorf("ccr typed object lifecycle rows: %w", err)
	}
	if n == 0 {
		return ErrNotFound
	}
	return nil
}

func (s *Store) ListSessionObjects(sessionID string, limit int) ([]Object, error) {
	if limit <= 0 {
		limit = 100
	}
	if limit > 10000 {
		limit = 10000
	}
	rows, err := s.db.Query(`SELECT `+objectColumns+` FROM typed_objects WHERE session_id = ? ORDER BY created_at DESC, object_id DESC LIMIT ?`, sessionID, limit)
	if err != nil {
		return nil, fmt.Errorf("ccr typed object list: %w", err)
	}
	defer rows.Close()
	objects := make([]Object, 0)
	for rows.Next() {
		obj, err := scanObject(rows)
		if err != nil {
			return nil, fmt.Errorf("ccr typed object list scan: %w", err)
		}
		objects = append(objects, obj)
	}
	if err := rows.Err(); err != nil {
		return nil, fmt.Errorf("ccr typed object list rows: %w", err)
	}
	return objects, nil
}

// FindTaskDecision returns one Decision Ledger object by its stable decision
// ID. Callers still validate the versioned decision schema before rendering it.

View on GitHub (pinned to 766dce6b13)

Solutions

  1. Check the wrapped error for the underlying cause
  2. Retry the listing after transient contention clears
  3. Recreate the store if the table is corrupt
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at engine/ccr/store_sqlite.go:629 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/2dcce783abbbf2f1. Report an issue: GitHub.