{"record":{"id":"0ea59f03b4e1c656","repo":"JuliusBrussee/caveman","slug":"ccr-typed-object-created-at-w","errorCode":null,"errorMessage":"ccr typed object created_at: %w","messagePattern":"ccr typed object created_at: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"engine/ccr/store_sqlite.go","lineNumber":560,"sourceCode":"\t\t\treturn \"\", errors.New(\"ccr: typed object id collision\")\n\t\t}\n\t}\n\treturn obj.ID, nil\n}\n\nfunc scanObject(scanner interface{ Scan(...any) error }) (Object, error) {\n\tvar obj Object\n\tvar created, deps string\n\tif err := scanner.Scan(\n\t\t&obj.ID, &obj.Type, &obj.ContentHash, &obj.Source, &created, &obj.RepositoryState,\n\t\t&obj.SessionID, &obj.TransformVersion, &obj.Currentness, &obj.Lifecycle, &deps,\n\t\t&obj.OriginalByteLength, &obj.StoredByteLength, &obj.Data,\n\t); err != nil {\n\t\treturn Object{}, err\n\t}\n\tparsed, err := time.Parse(time.RFC3339Nano, created)\n\tif err != nil {\n\t\treturn Object{}, fmt.Errorf(\"ccr typed object created_at: %w\", err)\n\t}\n\tobj.CreatedAt = parsed\n\tif err := json.Unmarshal([]byte(deps), &obj.Dependencies); err != nil {\n\t\treturn Object{}, fmt.Errorf(\"ccr typed object dependencies decode: %w\", err)\n\t}\n\treturn obj, nil\n}\n\nconst objectColumns = `object_id, object_type, content_hash, source, created_at,\n repository_state, session_id, transform_version, currentness, lifecycle,\n dependencies_json, original_byte_length, stored_byte_length, data`\n\nfunc (s *Store) GetObject(id string) (Object, error) {\n\tobj, err := scanObject(s.db.QueryRow(`SELECT `+objectColumns+` FROM typed_objects WHERE object_id = ?`, id))\n\tif errors.Is(err, sql.ErrNoRows) {\n\t\treturn Object{}, ErrNotFound\n\t}\n\tif err != nil {","sourceCodeStart":542,"sourceCodeEnd":578,"githubUrl":"https://github.com/JuliusBrussee/caveman/blob/766dce6b1394ebb56a3090748d5a0240a5aefb36/engine/ccr/store_sqlite.go#L542-L578","documentation":"scanObject could not parse the created_at column of a typed_objects row as RFC3339Nano. The stored timestamp is corrupt or in an unexpected format, so the row cannot be reconstructed into an Object; callers include GetObject, ListSessionObjects, and FindTaskDecision.","triggerScenarios":"Thrown at engine/ccr/store_sqlite.go:560 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the typed_objects row's created_at value directly in SQLite to see the corrupt timestamp","Repair or delete the affected row so its created_at conforms to RFC3339Nano","If rows were imported from another tool, re-run the import with correct timestamp formatting"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"766dce6b1394ebb56a3090748d5a0240a5aefb36","analyzedAt":"2026-08-18T03:14:35.516Z","contentChangedAt":"2026-08-18T03:14:35.516Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}