From 20ed79851f2479532f530b79ae9395c2d0eee697 Mon Sep 17 00:00:00 2001
From: Claude
Date: Sun, 26 Jul 2026 11:56:11 +0000
Subject: [PATCH 1/2] site: give the lobby one designated entrance; make the
directory an ordered path
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Huayin's first-read ruling.
THE DESIGNATED ENTRANCE — a single quiet block immediately after the pip install line, before "What
Columna is": the label "start here", the blast-wall position's own title as the link, and the ratified
one-liner beneath. Styled per the art direction: hairline rule above and below, NO card, NO fill, NO
accent — the lobby points, it does not argue.
§5 BECOMES AN ORDERED PATH, not a flat list: the same six items sequenced as the ladder a convinced
reader actually climbs, headed by the ratified line "In the order a reader usually wants them." The
position is first and carries the same "start here" mark as the entrance block, so the two agree.
This is what fixes /the-argument's reachability STRUCTURALLY rather than by promotion — it sits late
on the path, reached by readers already convinced, which is who it was written for.
NAV UNCHANGED at eight items, no "The Argument" entry (verified: 8 labels, 0 matches). Instead the
route gains plain links in existing prose/link lists — /learn's "Around the corpus" group and
/thesis's existing engage line — with no new copy beyond the link text "the argument".
Verified: build green (29 pages); prose-coherence green; brace-balance checked on the edited
stylesheet; /learn and /thesis each render a /the-argument link; the entrance block links to the
position. Screenshotted desktop + mobile — the hero → start-here → description sequence holds on
both, and the ordered path renders as a numbered ladder with hairline separators and no cards.
Co-Authored-By: Claude
---
apps/website/src/pages/index.astro | 63 ++++++++++++++++++++++++-----
apps/website/src/pages/learn.astro | 4 ++
apps/website/src/pages/thesis.astro | 1 +
3 files changed, 57 insertions(+), 11 deletions(-)
diff --git a/apps/website/src/pages/index.astro b/apps/website/src/pages/index.astro
index fbaada8..63ceab0 100644
--- a/apps/website/src/pages/index.astro
+++ b/apps/website/src/pages/index.astro
@@ -14,14 +14,19 @@ import { LATEST, PACKAGE_VERSION } from '../data/latest.ts';
const shortDate = (iso: string) =>
new Date(iso + 'T00:00:00Z').toLocaleDateString('en-US', { month: 'short', day: 'numeric', timeZone: 'UTC' });
-// The six-item directory (copy spec §5). Described, not sold.
+// §5 is an ORDERED PATH, not a flat list (Huayin's first-read ruling): the same six items sequenced
+// as the ladder a convinced reader actually climbs. The position is rung one and carries the same
+// "start here" mark as the entrance block above, so the two agree. This is also what fixes
+// /the-argument's reachability STRUCTURALLY — it is rung four, reached by readers who have already
+// been convinced, which is who it was written for.
const DIRECTORY = [
- { title: 'Run it', href: '/install', blurb: 'install, and a clarify, a refuse, and a disclose print on your machine as wire JSON.' },
+ { title: 'Never Let the Model Touch the Database', href: '/positions/never-let-the-model-touch-the-database', mark: 'start here',
+ blurb: 'the position: why the model should never hold your database credentials, and what to put between them.' },
+ { title: 'Run the demo', href: '/install', blurb: 'install, and a clarify, a refuse, and a disclose print on your machine as wire JSON.' },
{ title: 'Read the case', href: '/case', blurb: 'a complete worked example: a realistic warehouse, the Manifold that serves it, and recorded agent transcripts.' },
{ title: 'Learn the framework', href: '/learn', blurb: 'what Columna, FrameQL, and a Manifold are; the three manuals; the live Explorer.' },
{ title: 'Read the argument', href: '/the-argument', blurb: 'the eight-minute case for why this exists, with two live exhibits.' },
- { title: 'Positions', href: '/positions', blurb: 'stances we hold, stated plainly and linked to their evidence.' },
- { title: 'Research', href: '/atlas', blurb: 'six papers, the Silent Failure Atlas, and the public benchmark kit with its frozen answer key.' },
+ { title: 'Positions and research', href: '/positions', blurb: 'every stance we hold with its evidence; six papers, the Silent Failure Atlas, and the public benchmark kit.' },
];
---
@@ -36,6 +41,15 @@ const DIRECTORY = [
pip install columna
quickstart, two minutes →
+
+ {/* THE DESIGNATED ENTRANCE (Huayin's first-read ruling). The lobby needs ONE way in, and it
+ is the blast-wall position. A quiet block, NOT a banner: hairline rules above and below,
+ no card, no fill, no accent — the lobby points, it does not argue. */}
+
@@ -90,14 +104,19 @@ const DIRECTORY = [
{/* 5 · Where to go — the directory. Six doors, described not sold. */}
@@ -146,6 +165,18 @@ const DIRECTORY = [
.chip { font-family: var(--font-mono); font-size: 0.9rem; background: var(--paper-raised);
border: 1px solid var(--rule-strong); border-radius: 6px; padding: 0.4rem 0.7rem; color: var(--ink); }
.mast-quick { color: var(--ink-soft); }
+ /* THE DESIGNATED ENTRANCE — hairline rules above and below, no card, no fill, no accent.
+ Quiet enough to be furniture, present enough to be the one way in. */
+ .start-here { margin-top: 1.8rem; padding: 1rem 0; border-top: 1px solid var(--rule);
+ border-bottom: 1px solid var(--rule); max-width: 34rem; }
+ .start-label { font-size: 0.68rem; text-transform: uppercase; letter-spacing: 0.1em;
+ color: var(--ink-faint); margin: 0 0 0.4rem; }
+ .start-title { font-family: var(--font-sans); font-size: 1.02rem; font-weight: 600; color: var(--ink);
+ text-decoration: underline; text-decoration-color: var(--rule-strong); display: inline-block; }
+ .start-title:hover { text-decoration-color: var(--ink-faint); }
+ .start-line { font-family: var(--font-sans); font-size: 0.88rem; color: var(--ink-soft);
+ line-height: 1.5; margin: 0.35rem 0 0; }
+
.mast-hero { display: flex; flex-direction: column; gap: 0.7rem; }
.hero-cap { font-size: 0.72rem; color: var(--ink-faint); margin: 0; }
@@ -184,9 +215,19 @@ const DIRECTORY = [
/* ── 5 · Directory ───────────────────────────────────────────── */
.directory .section-h { margin-bottom: 1.4rem; }
+ .dir-lede { font-family: var(--font-sans); font-size: 0.92rem; color: var(--ink-soft);
+ margin: 0 0 1.4rem; }
+ /* an ORDERED path: the rung number carries the sequence, hairline separators carry the rhythm.
+ No cards, no fills — the ladder is legible from the numbers and the order alone. */
.dir-list { list-style: none; padding: 0; width: min(100% - 3rem, 46rem); margin: 0 auto;
- display: grid; gap: 1.3rem; }
- .dir-item { display: grid; gap: 0.2rem; }
+ display: grid; gap: 0; counter-reset: rung; }
+ .dir-item { display: grid; grid-template-columns: 1.9rem 1fr; gap: 0 0.5rem;
+ padding: 1rem 0; border-top: 1px solid var(--rule); }
+ .dir-item:last-child { border-bottom: 1px solid var(--rule); }
+ .dir-rung { font-size: 0.78rem; color: var(--ink-faint); padding-top: 0.15rem; }
+ .dir-body { display: grid; gap: 0.2rem; }
+ .dir-mark { font-size: 0.66rem; text-transform: uppercase; letter-spacing: 0.1em;
+ color: var(--ink-faint); }
.dir-title { font-family: var(--font-sans); font-size: 1.02rem; font-weight: 600; color: var(--ink);
text-decoration: underline; text-decoration-color: var(--rule-strong); width: fit-content; }
.dir-title:hover { text-decoration-color: var(--ink-faint); }
diff --git a/apps/website/src/pages/learn.astro b/apps/website/src/pages/learn.astro
index 58e3f8a..b7620b8 100644
--- a/apps/website/src/pages/learn.astro
+++ b/apps/website/src/pages/learn.astro
@@ -43,6 +43,10 @@ const groups = [
{
heading: 'Around the corpus',
items: [
+ // /the-argument is reachable from the LINK LISTS rather than the nav (Huayin's first-read
+ // ruling: nav stays at eight items). It is rung four on the homepage path — for readers already
+ // convinced, which is who it was written for.
+ { href: '/the-argument', title: 'the argument', blurb: 'The eight-minute case for why Columna exists, with two live exhibits.' },
{ href: '/how-these-documents-relate', title: 'How these documents relate', blurb: 'The corpus map — how the thesis, the essays, the papers, and the manuals fit together.' },
{ href: RELEASE_URL, title: 'Release 0.11.0', blurb: 'The GitHub Release — the many-to-many crossing executes — what shipped, on PyPI.', external: true },
],
diff --git a/apps/website/src/pages/thesis.astro b/apps/website/src/pages/thesis.astro
index 8fdc58d..dd60f19 100644
--- a/apps/website/src/pages/thesis.astro
+++ b/apps/website/src/pages/thesis.astro
@@ -10,6 +10,7 @@ import TermChipStrip from '../components/TermChipStrip.astro';
This is a thesis, not a petition. Dispute it, extend it, or bring evidence —
in the open.
+ Shorter, with two live exhibits: the argument.
From 373f9136030b68ecffec6ef3939ceed1c6f8974c Mon Sep 17 00:00:00 2001
From: Claude
Date: Sun, 26 Jul 2026 12:01:12 +0000
Subject: [PATCH 2/2] site: leave the entrance unnumbered; rungs 1-5 put the
argument at four
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Huayin's numbering ruling (b). The entrance carries only "start here" and no number, so it reads as
distinct from the path it opens — the ruling's own distinction made visible — and the five rungs that
follow number 1-5, which puts the argument at rung 4 exactly as the prose says. Page and prose agree.
Verified from the built markup, not the source:
[ ] Never Let the Model Touch the Database START HERE
[1] Run the demo
[2] Read the case
[3] Learn the framework
[4] Read the argument
[5] Positions and research
Co-Authored-By: Claude
---
apps/website/src/pages/index.astro | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/apps/website/src/pages/index.astro b/apps/website/src/pages/index.astro
index 63ceab0..122d71d 100644
--- a/apps/website/src/pages/index.astro
+++ b/apps/website/src/pages/index.astro
@@ -107,8 +107,11 @@ const DIRECTORY = [
In the order a reader usually wants them.
{DIRECTORY.map((d, i) => (
- -
- {i + 1}
+
-
+ {/* The ENTRANCE is deliberately UNNUMBERED (Huayin's numbering ruling (b)): it carries only
+ "start here", so it reads as distinct from the path it opens — and the five rungs that
+ follow number 1–5, which puts the argument at rung 4 exactly as the ruling says. */}
+ {d.mark ? '' : i}
{d.title}
{d.mark &&
{d.mark}}