"A crumb belongs to exactly one journal — partition semantics, like Day One, not a tag-like overlay."
Two Ways to Group, Two Cardinalities
There are two honest ways to group things, and they have different cardinalities. A partition puts each item in exactly one bucket — every crumb in one journal, no overlaps, no gaps. A tag overlay lets an item carry many labels at once — a crumb tagged 'garden', 'family', and 'spring' all together. Both are useful, and the design mistake is using the wrong one for a given axis. Vesta makes journals a partition and keeps tags as the overlay, and that split is deliberate.
Journals are single-membership: a crumb belongs to exactly one, the way a physical entry lives in exactly one notebook on Dad's Day One shelf. Tags are multi-membership: a crumb can wear as many as you like. So the two axes carry different weights — the journal is the heavy categorical home, tags are the light overlapping threads — and each gets the cardinality that fits its job.
Why the Journal Has to Be a Partition
Single membership isn't arbitrary; it's what makes two crucial operations well-defined. First, move: 'move this crumb (or this whole day) to another journal' only means something if the crumb is in exactly one journal to begin with. If crumbs could be in several journals at once, 'move' would be ambiguous — move from which one, to where, leaving what behind? Second, export: a journal is meant to be a self-contained book you could export whole — the daily diary as one volume, Quotes as another. That's only coherent if each crumb has exactly one home; overlapping membership would mean every 'book' shared pages with every other, and none of them would be a book.
Tags Carry the Overlap
None of this means Vesta loses cross-cutting grouping — that's exactly what tags are for. A crumb lives in one journal (its home) and can carry any number of tags (its threads). Want everything about the garden regardless of which journal it's filed in? That's a tag query, and it's supposed to overlap. The lesson is not 'partitions beat tags'; it's that the heavy home-axis wants single membership and the light thematic-axis wants overlap. Give each the cardinality its operations demand, and you get clean moves, clean exports, and rich cross-cutting search — all at once.