synthesis · syntheses/Front Door Pattern Language.md
Front Door Pattern Language
The generative sequence for the wiki's front door, a static SvelteKit app built from
wiki/. Six patterns applied in order, each fitting the context the last one left (Pattern Language). Written 2026-11-08 from Legibility in the Lens, Not the Land before any code, so the thin slice can be generated from it and the language judged by what it produces.
The frame every pattern inherits
- The land is read-only. The app reads
wiki/(laterraw/) at build time and never writes to either. Changes happen in Obsidian or through the agent; the app sees them on the next build. - A view is a tree over a semilattice. Every screen is one legible ordering of the same, unchanged overlap (Tree vs Semilattice). No screen is canonical.
- Derive, don't annotate. A view takes its data from conventions already in the land: frontmatter, the lead blockquote, wikilinks,
log.mdprefixes. If a view needs a field the land lacks, that is a CLAUDE.md convention to propose, not an app-side store. - Unfold. Ship a thin whole, live in it, add the next differentiation where its absence is felt (Living Structure).
Pattern form, after Alexander: context → problem → therefore → examples → then.
1 · Threshold
Context: the first screen, the one the root URL serves. Nothing precedes it.
Problem. A menu as a front page makes the land's folder tree the lens, which the foundation rules out. A dashboard that shows everything is the hairball. A blank page with a search box is a lookup tool, not a place to live. Rao: the whole is comprehended "by walking among the trees," so the reader should enter on the ground, at something particular and current (Legibility).
Therefore: open on what is alive now, as three to five particulars, each a link into the land, with the five lenses one step away as a quiet row rather than a hero. The particulars come from the log and the frontmatter, not from an editor's pick: the most recent log event as a sentence, the most recently updated page with its one-line definition, one open tension, the day's todo count, and the count of open contradictions when it is nonzero. The threshold is deterministic for a build, so two visits on the same day see the same door.
Examples
- On a build from 2026-11-08 the threshold reads: Latest: ingest, front-door grounding (4 sources, 5 concepts, 1 promotion). Changed: Legibility in the Lens, Not the Land, "organize the views freely; never reorganize the knowledge." Open: T1, maxims without knowledge, 3 candidate responses. Today: 5 items.
- After an auto-ingest PR merges, the "latest" line is that
auto-ingestlog entry and the new source page shows with itsauto-ingestedmark (pattern 5). Unreviewed material is the first thing seen, not something behind a queue. - The physical precedent is Alexander's own Entrance Transition (pattern 112 in A Pattern Language, not yet in
raw/): a marked passage between outside and inside with a change of light and view. Here the change is from "a URL" to "the page the wiki is thinking about today."
Then: the reader follows a particular (→ 3) or picks a lens (→ 2).
2 · Five Lenses
Context: one step from the threshold. The reader wants to find or survey rather than follow a thread.
Problem. The mind holds one tree at a time and the wiki is a semilattice, so any single navigation misstates the structure (Tree vs Semilattice). Wurman's answer: the ways to order information are finite, and there are five (LATCH). The temptation is to pick one, usually Category or the folder tree, and make it the sidebar.
Therefore: offer exactly the five LATCH orderings as peer views, each a full screen, each switchable to any other without losing the page in focus. Keep the folder tree out. "Hierarchy" means magnitude, never nesting.
| Lens | Orders | Build-time source |
|---|---|---|
| Location | pages placed on a 2-D map, domains as regions | regions from community detection over the wikilink graph (Louvain, fixed seed, conductance as a cohesion label), layout computed once per build and stored as coordinates |
| Alphabet | A–Z of titles and aliases | title, aliases |
| Time | the river: log events and page dates on one timeline | log.md prefixes and dates, created/updated |
| Category | domains (Overview's threads), type, tags |
frontmatter |
| Hierarchy | ranked: most-linked, most-sourced, most-contested, newest | inbound-link count, source-count, contradiction-callout count, dates |
Examples
- Hierarchy, most-linked, measured 2026-11-08: Method Reflection and The AI Daily Brief — Why Agents Still Need Humans (29 inbound each), Working Heuristics — Data, Matching, Product, Org, Tooling (26), The Human Sandwich (24), The Bottleneck Shift (23). Under most-contested the same wiki leads with AI-Accelerated Science and The Bottleneck Shift (one contradiction each). Switching lens changes the first page you see. That is the point.
- Time shows 2026-11-08 as one dense day: six auto-ingests, a method verdict (T5), the front-door grounding, with the June 2026 craft ingest months upstream. Scrolling the river is reading
log.md, each event linking to the pages it names. - Location is not a live force-directed graph. A map is a map only if the same thing is in the same place next visit, so the build script computes the layout, seeds it, and saves coordinates. Domain regions come from Overview's "Main threads." A page in no domain sits in open ground, visibly.
- Category by
typeis the only place the folders appear, as one grouping beside domain and tag, never as the primary tree. - Method for Location and Hierarchy (Blumenfeld — Scaling Karpathy's LLM Wiki (Neo4j)): his
ki themegrouped an 88-document vault into 5 themes with 18 ungrouped, each theme named by the targets its members keep citing, with the single bridging document between two themes shown. No LLM, deterministic, and "the header reconciles every document — grouped, ungrouped, excluded — so nothing quietly disappears." Most-linked is in-degree centrality: "just the shape of the link graph telling the agent which four or five notes the rest of the vault leans on." Both are navigation made visible (Navigation vs Search).
Then: every row in every lens leads to a page (→ 3). Hovering a row glimpses it first (→ 4).
3 · Page as Center
Context: the reader has arrived at one page, from the threshold, a lens, or a link.
Problem. A page shown alone is a document. In Alexander's sense a page is a
center, as alive as the centers it is built from and the larger ones it sits in
(Living Structure). The markdown holds only the outbound half. Backlinks live in
Obsidian's side panel, not in the text, and the record of when and why the page
changed lives in log.md.
Therefore: render the page with its neighbourhood: the body with wikilinks resolved; the backlinks, each with the sentence that links, so the reader sees why the other page points here; the log events that name this page; and the one- to two-hop neighbourhood as a small local map, never the global graph. An orphan shows an empty backlinks panel plainly. A dead center should look dead, not be padded.
Examples
- Tree vs Semilattice as a center shows backlinks from Method Reflection ("folders are a tree, links a semilattice"), LATCH ("each LATCH ordering is a tree"), Legibility, Living Structure and Legibility in the Lens, Not the Land, plus its one log event (the 2026-11-08 front-door ingest). The sentence fragments show the overlap is the right overlap, a shared mechanism rather than a shared word.
- Method Reflection's tensions are centers within a center. T1 to T5 need stable anchors so "see T2" lands on T2 and a tension can be a todo item (→ 6). The build indexes headings, not only pages.
- Link resolution follows Obsidian, not the filesystem.
[[Overview]]must findoverview.md;[[ML]]must find a page whosealiasesinclude it;[[Control-Flow Integrity — Abadi et al.]](trailing period) currently resolves to nothing because the file lacks it. The page view shows that link as unresolved. It does not guess and it does not fix the land.
Then: every link in the body and the neighbourhood can be glimpsed before it is followed (→ 4).
4 · Glimpse
Context: the reader is on a page and sees a link. Following it means leaving the center.
Problem. The overlaps are the valuable part (Surface vs Deep Structure), and an overlap is only visible while holding two pages at once. A click replaces one with the other; tabs lose the thread. Rao's "walking among the trees" needs peripheral vision.
Therefore: on hover or keyboard focus, show the target's one-line definition and its provenance mark in a small popover, without navigating. The definition is the lead blockquote under the H1, which the wiki's page anatomy already puts first, so the glimpse costs no new metadata. A page with no lead blockquote glimpses as its first paragraph and becomes a lint target.
Examples
- Hovering
[[LATCH]]in the Lens synthesis shows: "Wurman's claim that information can be organized in only five ways…" · concept · 1 source · 7 backlinks. The reader checks the overlap and stays. - Hovering
[[James C. Scott]]leads with the#to-readmark, then: "Political scientist and anthropologist (1936–2024). Author of Seeing Like a State, the origin of the Legibility concept." A glimpse of a reading lead says it is a lead, so a stub is never mistaken for a read source. - On a touch screen there is no hover. A tap follows the link; a long-press glimpses. The glimpse is a layer over links that already work, never the only route to the definition.
Then: the marks the glimpse shows are the same marks used everywhere (→ 5).
5 · Visible Provenance
Context: every surface so far: threshold particulars, lens rows, the page, the glimpse.
Problem. The wiki keeps claims in three grounding states (active, draft +
#unsourced, seed + #hypothesis), two queue states (auto-ingested, #to-read),
and flags disagreements in > [!warning] Contradiction: callouts (Method Reflection).
A front door that renders every page alike launders a hunch into a fact. That is
Scott's legibility by demolition (Legibility), and the wish to "look finished" is
the failure.
Therefore: give each state a distinct visual register that travels with the page title everywhere it appears, derived from frontmatter and tags. Render contradiction callouts as a distinct block that is also counted on the threshold and in the Hierarchy lens. Where the land's signals disagree, show the union and say so. The lens reports inconsistency; it never repairs it.
Examples
- The 13 pages tagged
auto-ingested(2026-11-08) carry the mark in the threshold line, every lens row, every backlink list and every glimpse. The review queue is visible wherever the pages are, not only in a Dataview table. - Seven pages have
status: seed, but only one is a hunch inseeds/. The other six are#to-readstubs (for example James C. Scott, Dan Shipper — After Automation) reusing the status. The front door shows both marks on those six and files the disagreement as a lint item in the todo (→ 6). It does not pick one. - The two open contradictions (AI-Accelerated Science, The Bottleneck Shift) and T5's resolved one render as the same block type with an open/resolved state. "2 open contradictions" becomes a threshold particular.
- A
supersededorstalepage is dimmed and labelled, and its backlinks still render, because a documented dead end is part of the land (Distributions over Best Fits).
Then: the signals that mark pages are the raw material of the frontier (→ 6).
6 · Frontier, as a Daily Todo
Context: the last pattern. The reader has a door, lenses, centers, glimpses and honest marks. Now they want to work, not only read. The human asked for this as a core view: a daily list to work through and review.
Problem. The wiki's unfinished edges are scattered: unreviewed auto-ingests in a
Dataview block, open tensions in Method Reflection, hunches in seeds/, #to-read
stubs across entities and sources, open questions in Overview callouts, Borges and lint
findings only in a script's output. Shown all at once they are information anxiety
(LATCH). And the app cannot write, so it cannot tick a box.
Therefore: build the frontier as a bounded daily list derived from the land, where done means the land changed. Each day the client, from the build's JSON and today's date, selects a small deterministic set across the frontier's sources, one or two per source. Each item names the page, the kind of edge, and what "done" looks like in the wiki (the tag to remove, the operation to run, the verdict to record). The item disappears when the next build no longer finds the edge. The browser stores at most per-viewer ordering and a "skip today," never completion. The review at the end of the day is the Time lens filtered to today: what the log says actually changed.
Frontier sources, in draw order (confirmed by the human 2026-11-08, with five items a day and a "load more"):
- Review queue: pages tagged
auto-ingested, oldest first. Done = tag removed. - Needs your call: open contradictions, promotion-candidate callouts, tensions without a verdict. Done = a recorded verdict or a
methodlog entry. - Promises to verify:
seeds/pages and#to-readstubs, oldest first. Done = PROMOTE, a file inraw/, orstatus: superseded. - Open questions:
> [!question]callouts in Overview and on pages. Done = answered in a synthesis or struck through. - Lint and Borges: orphans, unresolved links, pages without a lead definition, clusters over the ratio. Done = the next build doesn't find them.
Examples
- The list for 2026-11-08: Review Anthropic — The Components of Agent Memory (oldest of 13 auto-ingested; done: remove the tag). Decide T1: adopt the two-worked-examples rule for craft pages? (3 candidates; done: a verdict callout). Source or discard Communication and Control Are Intertwined (captured 2026-06-01, five months; done: PROMOTE or supersede). Read lead: Wurman, Information Anxiety, primary for LATCH (done: a file in raw/). Compress the engineering-craft cluster, 11.1× its source (done: ratio under threshold).
- Working an item: open the review item, land on the page as a center (→ 3), read it against its source, remove
auto-ingestedin Obsidian, rebuild. The item is gone and the Time lens shows the edit. No app state was involved, so the todo can never disagree with the wiki. - The lint item for the
status: seedwrinkle (→ 5) reads: Six #to-read stubs reuse status: seed. Decide: give stubs their own status (a CLAUDE.md convention) or keep sharing it. Lint findings become decisions, not silent fixes. - Selection is seeded by the date so a reload at noon shows the morning's list. Tomorrow differs only where the land changed or the seed rotates among equally old items. A long-unworked item surfaces more often, not less, so hunches don't ossify (Method Reflection T4).
Then: nothing. The sequence ends where the human's work begins, and the next build starts again at the threshold.
Coherence test
Alexander judged a language by generating designs with it and asking whether the results were whole (Alexander — The Origins of Pattern Theory (OOPSLA 1996)). The thin slice was that test: patterns 1, 3 and 6, with 5 riding along (provenance marks are a class on existing frontmatter, and leaving them out would hide seeds, which the foundation forbids). Pattern 2 then unfolded in three steps over two days, and 4 on the second day. Verdict on the coherence test (2026-11-09): the sequence generated a whole front door in five unfoldings without a blank-slate plan, and each step changed the existing whole rather than bolting on a parallel one. What the test cannot say yet is whether the door is alive: that needs weeks of use, and the daily list is where it will show.
Build record
- 2026-11-08, thin slice: threshold, page as center (backlinks with the linking sentence, log events), daily list; marks riding along. SvelteKit, adapter-static, Pagefind.
- 2026-11-08, second unfolding: Time lens (the river) and Hierarchy lens (most linked, sourced, contested, newest, longest). Build emits heading-bounded sections; backlinks deep-link.
- 2026-11-08, third: Location lens. Louvain over wikilinks (seeded, single-threaded; Leiden, the article's choice, is not in the JS library), a stored ForceAtlas2 layout, padded hulls, regions named by what they cite, conductance cohesion, bridges. First run: 4 regions = the wiki's domains, nothing in open ground; Index, Overview and Inbox set aside or they swallow every region.
- 2026-11-09, fourth: Alphabet (titles and ~340 aliases, filter, titles-only) and Category (Overview's domains, type, tags), completing pattern 2. Each domain reports its Location-region agreement: six of eight sit whole or nearly whole in one region; software security splits 3/2.
- 2026-11-09, fifth: the Glimpse. Popover on hover, focus or long-press of any page link, from a prerendered
glimpse.json. All six patterns exist. - First-build measurements: 102 pages, 80 frontier items (13 review, 5 needs-your-call, 8 promises, 51 open questions, 3 lint). The question count surprised: the craft pages carry far more
[!question]callouts than Overview suggested. - 2026-11-09, deployed at wiki.notabox.app, rebuilding on every push.
Open
- Does the threshold stay alive when nothing has been ingested for a week? Candidate: fall back to the oldest frontier item, so a quiet wiki shows its debts.
- The Location lens recovered the Overview's hand-written domains from links alone. Is that confirmation that the domains are real, or a sign that the agent links within the domain it is told a page belongs to? A test: ingest a source without naming its domain and see where it lands. Partial answer 2026-11-09 from the Category lens: six of eight domains sit whole or nearly whole in one region, but software security does not; its five pages split between the science and craft regions. Either the domain is a label without a cluster yet, or it is a cross-cutting theme and belongs in syntheses rather than as a thread.
- First look at the Hierarchy lens: "most linked" is led by Method Reflection and the first AIDB episode, "most contested" by two auto-ingested science pages. Does ranking by in-degree reward hubs (MOCs) over centers, and should MOC pages be set aside the way
indexis?Is "done" for a tension aDecided 2026-11-08: Method Reflection already carries a status token in each tension heading (methodlog entry or a verdict callout?open,affirming,partly resolved). A tension is an item while the token isopen; done when it changes. No new convention.Frontier sources 1–5 and their order are a proposal.Confirmed 2026-11-08.- The six
#to-readstubs withstatus: seedare classified by tag first (to-readwins), so the land needs no edit; the disagreement is a lint item.
Connections
- Legibility in the Lens, Not the Land — the foundation; this page writes its six patterns out as a sequence.
- Pattern Language — the form, and the test (moral, coherent, generative).
- Living Structure — pages as centers; build by unfolding.
- Tree vs Semilattice — why five lenses, not one tree.
- LATCH — the five lenses.
- Legibility — what visible provenance guards against.
- Method Reflection — T4's review queue is the todo's first source; T3's "review degrades toward approval" is the risk the daily bound manages.
- The Borges Map — a lens that shows everything is the 1:1 map; the Location lens and the todo are bounded for that reason.
- Surface vs Deep Structure — the glimpse exists to make deep-structure overlap visible.
- Navigation vs Search — the lenses and the page view are navigation; search is the box beside them. The same
graph.jsonnow also serves the agent.
Sources
- Through the concept pages: Alexander — A City Is Not a Tree · Alexander — The Origins of Pattern Theory (OOPSLA 1996) · Rao — A Big Little Idea Called Legibility · Wurman — Five Hat Racks and LATCH
- Blumenfeld — Scaling Karpathy's LLM Wiki (Neo4j) — the graph data model
graph.jsonturned out to match, and the community-detection method for the Location lens. - The counts in the examples (inbound links, auto-ingested pages, seed statuses, contradictions) were measured on the wiki on 2026-11-08 and will drift. They are illustrations, not facts to maintain.