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

refactor: push generics deeper — cache, codec hooks, arabica CRUD #352

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

Three further consolidations that the earlier stages left on the table:

  1. Generic CachedSlice[M] replaces seven typed UserCache accessors (Beans/Roasters/Grinders/Brewers/Recipes/Brews). UserCache is now entity-agnostic; atproto no longer imports entities/arabica from cache.go.

  2. EntityCodec[M] gains PostGet and PostList hooks for foreign-ref hydration. ToRecord now takes the store so encoders can build AT-URIs. Bean and Recipe CRUD migrate to the generic helpers via their codecs — full Bean Get/List/Update/Create + Recipe equivalents are now thin wrappers.

  3. arabicaCRUDCreate/Update mirror the oolong factories for arabica's inline-form-decode style. Roaster, Grinder, Brewer Create + Update collapse to ~12 LOC each.

Brew (4-ref witness-batch resolution) and Bean Create's auto-roaster flow stay bespoke. Templ record views (bean/brew/recipe) intentionally untouched per design direction.

Net 289 LOC removed.

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

Commits 0