Coffee journaling on ATProto (alpha) alpha.arabica.social

refactor: generic EntityRecord[M] replaces five cloned wrappers #353

Closed arabica.social
targeting main from push-ssspnvopnuuy
Closed opened by and assigned to arabica.social
targeting main from push-ssspnvopnuuy

Adds atproto.EntityRecord[M] + GetEntityRecord[M] and retires the near-identical BeanRecord/RoasterRecord/GrinderRecord/BrewerRecord/ RecipeRecord structs. The five codec-backed Get*RecordByRKey methods are now one-line wrappers. GetBrewRecordByRKey keeps its bespoke ref resolution but returns the shared wrapper type. Caller-side .Bean/ .Roaster/etc. field accesses become .Model. Net 73 LOC removed.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

Commits 0