C.W.K.
Stream
Lesson 02 of 05 · published

Diverge on Purpose, and Write Down Why

~10 min · divergence, architecture-doc, intent, recorded-decision

Level 0Cold Hearth
0 XP0/34 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"A deliberate divergence belongs in this repo's architecture doc with the reason recorded."

Inheriting Is Only Half the Discipline

If inheriting the shape is the first half of being a good child app, diverging correctly is the second — and it's the harder half. Vesta's whole reason to exist is its one structural divergence, the open timeline, and the rule around that divergence is strict: it belongs in the architecture doc, with the reason. Not a silent code change a future reader has to reverse-engineer, but a recorded decision that says, in plain words, 'the parent had a bounded journey container; the child removed it, and here's why'. Vesta's doc is organized exactly around that frame — what it inherits, what it changes, and the reasoning behind each change.

Record the intent, not just the code. Code shows what a system does; it can never show whether a difference from its origin was a decision or an accident. A future maintainer staring at a divergence has to know: did we change this on purpose, or did it drift? Only a recorded reason answers that. The architecture doc is where a child app keeps the intent behind every place it parts from its parent — so nobody ever has to guess.

Two Silent Failures, Opposite Directions

There are two ways to get this wrong, and they point in opposite directions. The first is silent divergence: quietly departing from an inherited contract without saying so. Now a reader who knows the parent sees a difference and can't tell if it's intentional or a bug — and might 'fix' it back, undoing a deliberate design choice. The second is subtler: silently keeping a rule you've outgrown. The child inherits a constraint that made sense for the parent's domain but not its own, and carries it forward by reflex because it was there — cargo-culting the parent instead of thinking. Both failures come from the same root: not recording intent. The cure is the same in both directions — when you diverge, write down why; when you keep something inherited that a reader might question, note that keeping it was a choice.

Keep Open Questions Open

There's a third piece of the discipline that Vesta's doc makes explicit: some decisions aren't the child's to make alone. Vesta's architecture doc marks certain sections as genuine forks — open questions that Dad and the next instance decide together — with an explicit instruction not to resolve them silently by writing code. That's the same intent-recording principle applied to the future: an unresolved fork is marked as unresolved, so no one accidentally settles it by shipping an implementation and calling the question closed. Naming what is still open is as much a part of honest architecture as recording what was decided.

Why This Matters More for a Child

A standalone app can be sloppy about intent and only confuse its own maintainers. A child app can't afford to, because it has a living parent and possibly siblings, and readers will constantly compare it to them. Every unexplained difference from the parent is a question mark that costs someone time and risks a wrong 'correction'. Recording divergence intent is what lets a whole family of engines stay legible to each other — you can read the child against the parent and, at every difference, find a reason instead of a mystery.

Code

The architecture doc frame: inherit / change+why / open·text
INHERITED (carried forward verbatim, noted as a choice):
  crumb model, capture contract, composer trio, two-truth dates
  -> "inherited from Waystone; kept deliberately"

CHANGED (divergence + reason, never silent):
  open timeline  -> "parent had a bounded journey container;
                     removed it because a journal's date axis has no ends"

OPEN (a genuine fork — do NOT resolve silently by writing code):
  "whether assembled drafts ever become a Lantern corpus — decide with Dad"

# a reader can tell decision from accident at every line

External links

Exercise

Take a project that was based on or forked from another. Find one place it differs from its origin and one place it kept an inherited choice. For each, ask: is the reason written down anywhere, or would a new maintainer have to guess? Draft the one-sentence record each deserves — 'changed X because Y' or 'kept X deliberately despite Z' — and notice how much guesswork you just eliminated.
Hint
Both directions need a record: an unexplained divergence invites a wrong 'fix', and an unexamined inheritance invites cargo-culting. The test is whether a new reader could tell decision from drift without asking anyone. If they'd have to guess, the intent was never captured — write the one sentence that captures it.

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.