C.W.K.
Stream
Lesson 03 of 04 · published

Moving a Day Between Journals

~9 min · move, day-bundle, paired-events, self-contained-log

Level 0Cold Hearth
0 XP0/34 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"A day-level move relocates that date's whole bundle — crumbs, media references, and assembled drafts — from one journal to another."

Moves Come in Two Sizes

Because a journal is a single-membership home, moving is a first-class operation, and it works at two granularities. A crumb move relocates one crumb to another journal. A day-bundle move relocates a whole date at once — that day's crumbs, its media references, and its assembled draft — from the source journal to the destination. The day-bundle move is the useful one in practice: you realize a whole day of entries belongs in your Travel journal rather than Daily, and you move the bundle as a unit rather than dragging crumbs one at a time.

Whatever the size, the rule from Track 3 holds without exception: a move is an append-only revision. Nothing is overwritten and nothing is destroyed. The crumb's ULID, its captured_at, its timezone, and its capture truth are all exactly what they were before the move. Only its journal_id changed, and that change is now part of its recorded history — you can always see that this day used to live in another journal.

A move is two events, not one edit. When ground truth is a per-journal append-only log, relocating a crumb can't be a single in-place field change — it's a move-out event appended to the source log and a move-in event, carrying the full crumb payload, appended to the destination log. The paired events keep each log honest about what left and what arrived, and the ULID stays constant across both.

Why Paired Events Keep Each Book Whole

Here's the payoff of doing a move as two appended events instead of one edit. Each journal has its own append-only log, and the point of that is for a journal to be a self-contained book you could export whole. A move-out line in the source log records that the day left; a move-in line in the destination log carries the crumb's full payload so the destination log alone can reconstruct it. Neither log has to reach into the other to be complete. The source book honestly shows 'this left on this date'; the destination book honestly contains everything it received. Identity is preserved by the constant ULID threading both events together, so the crumb is provably the same crumb before and after — just shelved somewhere new.

Drafts and Citations Ride Along

A day-bundle move takes the draft with it, and because drafts cite crumbs by ULID rather than by journal, moving a day never breaks provenance. The draft still says 'I was assembled from crumbs 01J…a and 01J…b', and those crumbs still exist under the same IDs in their new home. The whole day relocates as a coherent unit — evidence, media, and derived prose together — with every internal link still resolving. Move a day to a different journal and reopen its draft a year later: the lineage is intact, just filed under a different book.

Code

A day-bundle move: paired events, constant ULID·json
// SOURCE journal log (Daily) — a move-out line
{ "event": "move_out", "crumb_id": "01J8Z...",
  "to_journal": "jrnl_travel", "at": "2026-07-25T20:10Z" }

// DESTINATION journal log (Travel) — a move-in line WITH full payload
{ "event": "move_in", "crumb_id": "01J8Z...",
  "from_journal": "jrnl_daily",
  "payload": { "text": "...", "captured_at": "2026-03-14T...",
               "target_date": "2026-03-14", "media_refs": [] },
  "at": "2026-07-25T20:10Z" }

// ULID 01J8Z... is identical in both -> provably the same crumb
// captured_at unchanged -> capture truth survives the move
// each log stays self-contained -> each journal exports as its own book

External links

Exercise

Design a 'move between containers' operation for an append-only, per-container log system. Write the two events it produces and decide what the move-in event must carry so the destination log is self-contained. Then check: after the move, can each log be read alone to reconstruct its own contents, and does the moved item keep the same identity across both?
Hint
The move-in event has to carry enough of the item's data that the destination log never needs to read the source log to reconstruct the item. The shared, constant ID across both events is what proves it's the same item — not a copy — before and after.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.