Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

2. Links — how they relate

A link connects two records with a typed, directed relation. This is what turns a list of foci into a graph you can reason over.

The syntax is link <from> <relation> <to>:

link load-test-passed supports cache-is-safe
link stale-reads opposes cache-is-safe

Read left to right: load-test-passed supports cache-is-safe; stale-reads opposes cache-is-safe. The direction matters — a supports b is not the same as b supports a.

The relations

There are twelve relations, in three families.

Evidence — the defeasible core. These feed the mirror’s derived confidence and argument status:

RelationMeaning
supportsThe source is evidence for the target
opposesThe source is evidence against the target (a rebuttal)
undercutsThe source attacks an inference, not the claim itself

Structural / causal — how things relate in the world or the plan:

RelationMeaning
causesThe source brings about the target
enablesThe source makes the target possible
preventsThe source stops the target
depends-onThe target is needed for the source
blocksThe source holds the target up (see until in chapter 4)
answersThe source resolves a question
revisesThe source replaces the target (see chapter 6)

Decision — for expected-value analysis (see the compute layer):

RelationMeaning
leads-toAn option leads to an outcome (carries a probability)
option-ofAn option belongs to a decision

opposes vs. undercuts. opposes rebuts a node (“that claim is wrong”). undercuts attacks an inference (“that reasoning doesn’t follow”) — its target is usually a link. The distinction matters to the mirror: an undercut weakens a connection rather than the claim. There is deliberately no separate rejects relation — a hard rejection is just opposes, and defending X is just attacking X’s attacker.

Aliases and prose

Give a link an alias (its own id) by prefixing name: — useful when you want to attack the link itself, or reference it later:

link cache-hypothesis: cache-eviction causes latency-spike
  The proposed mechanism: evicted hot keys force slow cold reads.

link dashboard-bug undercuts cache-hypothesis

The indented sentence under a link is its body — prose explaining why the relation holds. Here dashboard-bug undercuts cache-hypothesis attacks the inference by name.

A link’s endpoints may be foci, questions, or other links. Pointing a link at a stance or a scope is an error. Pointing it at an id that doesn’t exist is a warning (a dangling reference — usually a typo).

Our document so far

focus cache-is-safe
  kind claim
  The new cache layer is safe to ship today.

focus load-test-passed
  kind observation
  Load test at 2x peak traffic passed with no errors.

focus stale-reads
  kind observation
  Staging showed stale reads under cache eviction.

link load-test-passed supports cache-is-safe
link stale-reads opposes cache-is-safe

No more orphans: every focus is connected. Now — who actually believes the claim? That’s a stance.