Migrate Activities, photos and voice memos to the EntryDimension pattern #6

Closed
opened 2026-08-26 09:13:34 +00:00 by GKaszewski · 0 comments
Owner

What to build

Completes ADR 0002 by moving the three remaining dimensions onto the pattern proven in #1. After this, MoodEntry is exactly six fields — identity, User, Mood, the instant logged, and timestamps — and stops growing forever.

This is mechanical repetition of an established pattern, not new design. If it turns out not to be mechanical, that means #1's composer is wrong and the problem belongs there, not here.

These three already live in side tables, so there is no data migration — only the domain types, ports, composer registration, and mappers change.

The reason to finish rather than leave a partial retrofit: two competing answers to "what is attached to this entry" means every consumer has to know which dimension is which kind, and the split becomes permanent.

Acceptance criteria

  • MoodEntry has exactly six fields and no dimension accessors or setters
  • Activities, photos, and voice memos are each self-contained dimension modules
  • All four dimensions load through the same composer with no special cases
  • Photo and voice memo blob cleanup on removal still works
  • Filtering entries by Activity still works
  • Import, export, and the entry form round-trip all four dimensions unchanged
  • Existing test suite passes

Blocked by

## What to build Completes ADR 0002 by moving the three remaining dimensions onto the pattern proven in #1. After this, `MoodEntry` is exactly six fields — identity, User, Mood, the instant logged, and timestamps — and stops growing forever. This is mechanical repetition of an established pattern, not new design. If it turns out not to be mechanical, that means #1's composer is wrong and the problem belongs there, not here. These three already live in side tables, so there is no data migration — only the domain types, ports, composer registration, and mappers change. The reason to finish rather than leave a partial retrofit: two competing answers to "what is attached to this entry" means every consumer has to know which dimension is which kind, and the split becomes permanent. ## Acceptance criteria - [ ] `MoodEntry` has exactly six fields and no dimension accessors or setters - [ ] Activities, photos, and voice memos are each self-contained dimension modules - [ ] All four dimensions load through the same composer with no special cases - [ ] Photo and voice memo blob cleanup on removal still works - [ ] Filtering entries by Activity still works - [ ] Import, export, and the entry form round-trip all four dimensions unchanged - [ ] Existing test suite passes ## Blocked by - #1
GKaszewski added the ready-for-agent label 2026-08-26 09:13:34 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GKaszewski/k-mood#6