diff --git a/apps/website/src/pages/index.astro b/apps/website/src/pages/index.astro
index fbaada8..122d71d 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,22 @@ const DIRECTORY = [
{/* 5 · Where to go — the directory. Six doors, described not sold. */}
@@ -146,6 +168,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 +218,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.