JuliusBrussee/caveman · error
ccr typed object dependencies decode: %w
Error message
ccr typed object dependencies decode: %w
What it means
Wraps the json.Unmarshal failure on the dependencies_json column in scanObject. The stored dependency list is not valid JSON (corrupt or hand-edited row), so the typed object cannot be reconstructed and the read fails closed.
Source
Thrown at engine/ccr/store_sqlite.go:564
}
func scanObject(scanner interface{ Scan(...any) error }) (Object, error) {
var obj Object
var created, deps string
if err := scanner.Scan(
&obj.ID, &obj.Type, &obj.ContentHash, &obj.Source, &created, &obj.RepositoryState,
&obj.SessionID, &obj.TransformVersion, &obj.Currentness, &obj.Lifecycle, &deps,
&obj.OriginalByteLength, &obj.StoredByteLength, &obj.Data,
); err != nil {
return Object{}, err
}
parsed, err := time.Parse(time.RFC3339Nano, created)
if err != nil {
return Object{}, fmt.Errorf("ccr typed object created_at: %w", err)
}
obj.CreatedAt = parsed
if err := json.Unmarshal([]byte(deps), &obj.Dependencies); err != nil {
return Object{}, fmt.Errorf("ccr typed object dependencies decode: %w", err)
}
return obj, nil
}
const objectColumns = `object_id, object_type, content_hash, source, created_at,
repository_state, session_id, transform_version, currentness, lifecycle,
dependencies_json, original_byte_length, stored_byte_length, data`
func (s *Store) GetObject(id string) (Object, error) {
obj, err := scanObject(s.db.QueryRow(`SELECT `+objectColumns+` FROM typed_objects WHERE object_id = ?`, id))
if errors.Is(err, sql.ErrNoRows) {
return Object{}, ErrNotFound
}
if err != nil {
return Object{}, fmt.Errorf("ccr typed object get: %w", err)
}
return obj, nil
}View on GitHub (pinned to 766dce6b13)
Solutions
- Repair or delete the row with the malformed dependencies_json
- Write objects only through PutObject so dependencies are marshaled correctly
- Treat persistent decode failures as database corruption and recreate the store
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at engine/ccr/store_sqlite.go:564 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/ffa832f40b9f84b2.
Report an issue: GitHub.