Sense 45: The Loom — two axes, woven
Sense 45 · Forming · Last touched 2026-07-27
- last_verified: 2026-07-27
Synced from
docs/design/sense_45_the_loom.mdin the engine repo — that’s the source; this page is a build-time mirror.
A corpus is read both as a chronicle and as a curation. The reader stands at one crossing of warp and weft.
What pulled us in
Section titled “What pulled us in”We kept hitting the same shape, surface after surface.
The Senses index needed grouping by vitality (in bloom / steady / forming / folded in) — that’s the curation, the “what’s alive right now” read. But the reader who just finished Sense 14 wants Sense 15 next, in numerical order — that’s the chronicle, the “show me how this evolved” read. We tried one or the other and both lost.
The Journal had the inverse problem. Listing weeks newest-first matched the chronicle instinct (“latest at the top”) but made prev/next on each page walk backward in time. We flipped to oldest-first; now prev/next reads naturally — but the curated view (“which weeks were milestones?”) disappeared.
The releases tree splits into months → weeks (structural chronology) but doesn’t answer “which releases mattered?”. The Field Manual has typed sections (structural curation) but doesn’t surface “what’s hot right now.”
Each time, picking one axis broke the other. The thing being asked for, every time, was both.
The Concept
Section titled “The Concept”A corpus has two natural axes, and the reader is always standing at one crossing of them.
-
The warp is the chronicle — the temporal/numerical sequence in which entries appeared. It has no opinion. It’s what the git log would tell you. It enables travel: “I just read X, show me what came next.” Every corpus has one and only one warp; you don’t get to argue with time.
-
The weft is the curation — the editorial grouping the author chose: vitality, importance, theme, status. It carries the meaning the warp can’t: which entries are alive, which are foundational, which were superseded. A corpus can have several wefts in parallel (vitality is one, theme is another); a good index lets the reader switch between them.
Where warp and weft cross, the reader stands. Every entry in a woven corpus has a position (which row of the chronicle, which group of the curation) — and the reader’s navigation tools should respect both.
What this means in practice
Section titled “What this means in practice”The pattern has three working parts:
-
The chronicle is the spine. The numerical / temporal sort is computed deterministically from the entries themselves; you don’t author it. It’s there even if the curation isn’t.
-
The curation is the index page. The doorway groups by the editorial axis (vitality, theme, status). It tells the reader “if you only have ten minutes, here’s where to look.” It can surface multiple wefts side-by-side if more than one is useful.
-
Both axes travel. Prev/next on each page walks the chronicle (numerical neighbors, week-by-week, …). The sidebar — or the index page’s group ordering — walks the curation. Neither is “the” navigation; they coexist, and the reader chooses which axis to walk by which click.
The two axes are not redundant. They answer different questions:
| Axis | Question it answers |
|---|---|
| Chronicle (warp) | “What came before / after this one?” |
| Curation (weft) | “What’s worth reading first? Which ones are like this one?” |
The Senses case (the prototype)
Section titled “The Senses case (the prototype)”The Senses corpus was the first surface where we got both axes present at once:
- Sidebar group by vitality (curation): In bloom → Steady → Forming → Folded in. The reader sees the curated reading.
- “By number” section on
/senses/index (chronicle): every Sense in numerical order. The reader sees the chronicle when scrolling. - Per-page numerical-neighbors footer (chronicle):
← Sense 17 | Sense 19 →. The reader can travel the chronicle without leaving the page they’re on.
The sidebar prev/next still walks vitality, because that’s the sidebar’s job. The footer walks number. The index answers both at once. The reader picks whichever axis the moment calls for.
Where to apply it next
Section titled “Where to apply it next”The pattern generalizes. Every corpus in this product that has both time/sequence and editorial meaning is a candidate:
-
Journal / Weekly + Monthly. The chronicle is the date. Curation candidates: “milestone weeks” (the ones that landed a Sense, a major refactor, a vocabulary shift), or themed pulls (“the weeks the Atelier was being built”). Today only the chronicle exists.
-
Release notes. The chronicle is the version tag. Curation candidates: “headline releases” (the ones where something big landed) vs the long tail of patch versions. Today the months → weeks split is purely structural.
-
Field Manual. The chronicle is the section order in
pack.yaml. Curation is the section-type taxonomy we already added (stance / shape / operations / reference). Both exist; they just don’t cross-reference yet — a “see also: other Stance sections” link at the bottom of each Stance section would be the weft. -
Subject Matter / Dossiers. The chronicle is
created_at. Curation is the Dossier — a curated narrative pulling several Subject Matter entries together. The two already coexist; the question is whether the Dossier surface should also show its members’ chronicle position.
A single naming convention to introduce, if we want it: “warp” = chronicle axis, “weft” = curation axis. Use them in PR titles and design notes when discussing navigation for a new corpus. They’re better than “newest-first vs grouped” because they name a relationship, not two competing answers.
What this is not
Section titled “What this is not”-
Not a UI framework. The Loom doesn’t prescribe whether curation lives in the sidebar or the index page or a tab — that varies by surface. It says only that both axes need to be reachable, somewhere.
-
Not duplication. The weft doesn’t list everything the warp lists in a different order. The weft is editorial — it adds meaning the chronicle can’t carry (vitality, importance, theme). A corpus with only one row in each curation group isn’t woven; it’s just a list with extra clicks.
-
Not always needed. A corpus with no editorial meaning beyond “they happened in this order” doesn’t need a weft. A pure log, for instance, doesn’t need vitality groups. The Loom answers a question; not every corpus is asking it.
Family
Section titled “Family”- Sense 13: The Canvas — composable workbench. The Loom is to navigation what The Canvas is to display: the conviction that more than one shape needs to be reachable from the same surface.
- Sense 14: The Signal — typed observation. Signals have a chronicle (creation date) and a curation (category, perspective membership). Already a working Loom.
- Sense 41: The Relevance — which rings are for you. The Loom’s curation axis often comes from relevance: “this one’s for the analyst”, “this one’s for the CEO”.
How this manifests in jinflow
Section titled “How this manifests in jinflow”Not yet manifest in the engine. Status: proposed. See the implementation phases / open questions above for the path from this paper to running code.
Numerical neighbors: ← Sense 44: The Forge · Sense 46: The Roster — Clerk authors, AFS materialises →