Week 30 / 2026
20 – 26 Jul 2026 · 316 commits · release cut
Prefix histogram — 115 feat: · 36 fix: · 66 docs: · 5 refactor: · 30 chore: · 5 test: · 59 note:.
Last week a person got the hands to operate the system. This week the system turned to face the stranger — and, in the same breath, dug its foundations deeper so it could stand always-on behind that face. If W29’s word was selection, W30’s is the house: a front of house went up — a public wall of showcases, a guide who walks you through them, an honesty check so the guide can never lie — and underneath it a foundation was poured, an operational store that remembers what a living tenant does between builds. Three new tenants stepped onto a public gallery, each with a tour grounded in its own real findings; a build learned the grammar of its own generations; and the way data enters the system grew a row of gates that verify rather than trust. The team even gave itself faster mail. A lot of house got built.
The front door opens
Section titled “The front door opens”The platform learned to receive a guest. The Gallery (Phases 1–4) is an
autonomous showcase wall — a bundled definition, published to R2 with jin gallery publish, R2-first on read, refreshing live the moment it’s published,
with badges and link-less “coming soon” entries for tenants not yet ready. Onto
that wall stepped three tenants, each earning its card: aeros.aether
(air-quality over the North China Plain), gridland.sollun (the European
electricity grid), and millesime.domaine_zufferey (a Valais wine estate) —
each with a welcome card, a wordmark, and a one-line claim that says what it is
before a table loads.
Behind the wall, The Beacon made publishing honest by construction: Phase A turned the two showcase-publish traps into loud fallbacks instead of silent blanks; Phase B let a KLS self-declare that it’s a showcase, so the cloud auto-discovers it rather than waiting to be told. A showcase can no longer half-appear.
The Docent — a guide who cannot lie
Section titled “The Docent — a guide who cannot lie”A tour is now a declared artifact: Sense 64, The Docent. It ships in
layers. Phase 1 declares and compiles a tour (tour/*.yaml → registry + stops)
and renders it as a readable /tour path. Phase 2 is the guided overlay proper
— a self-contained rail that navigates the Explorer for you, stop by stop,
narrating in place, URL-stable so a visitor can leave mid-tour and keep
exploring from exactly where they stood. A launcher sits on the welcome splash;
tours ride the pack→tenant copy paths so a pack seeds a starter and a tenant
owns its own.
Two ideas gave the Docent depth. Selection stops (specced with the bus’s
owner — the selection carries no origin, s7↔s5) let a stop arrive with the
evidence already lit: the tour doesn’t only walk you to the parcels, it lands
with the heritage vines already selected. And The Warrant — the week’s
quietly favourite idea — makes a tour self-verifying: a stop carries a
checkable expect claim, and jin make verifies it against the live KLS,
flagging any stop whose story the data has moved past. P1 landed engine and UI:
a post-dbt bake writes stop-health, a loud build warning fires on drift, and
/tour shows a quiet curator marker. A showcase can narrate live data without
silently rotting into a confident lie.
The Reservoir gets built
Section titled “The Reservoir gets built”The biggest back-of-house arc: Sense 61, The Reservoir — an operational
store (the OPS) that stands beside the AFS and the KLS. Its shape got
settled and then poured. The engine was ratified as SQLite (WAL) for rows +
JSONL for ledgers, no DuckDB; the OPS is created at init; a merge principle
and a distributed section were specced (ship overwrites the KLS, merges the
OPS). Then the citizens moved in, one clean cut at a time: notes (with a
read-fall-back safety net to the frozen SIS, made multi-tenant-safe), the
roster (the identity tree now bakes to the OPS not the KLS; principals read
the OPS; Clerk records reconcile into OPS assignments; invite/revoke write
through), bookmarks (the sixth citizen, via whatsNew), and the desk. A
Private OPS — a per-user, Clerk-bound store for private notes — grew its own
substrate and read-overlay. And Strata Part 7 opened the fourth-stratum
question (Delivered data), from Mig. The system is learning to remember what
happens between builds, not just what a build produced.
The Courses — the build learns its own generations
Section titled “The Courses — the build learns its own generations”The generational model got its ontology and its name: The Courses
(renamed from The Generation) — generation · course · variation · phase — with
a boundary criterion (incrementality; O(0); two nested loops) and the signal
contract reframed as a build seam. And the way data enters grew a row of
ingestion gates, each verifying rather than trusting: streamcheck (the 4a
storage-floor legality gate), streamconform (4b value-conformance byte-check,
reading generational deliveries), streamreconcile (4c-i passthrough
reconciliation — verified, not trusted), streamlineage (4c-iii the
honest-limit lineage audit), and streamscaffold (proposes gate blocks from
Gold types). Two of them are already wired into make as ramp gates. A
pipelinecheck with a LinkML-lite schema grammar landed for Course 0.
The Typology’s Phase 4 — verification, not trust
Section titled “The Typology’s Phase 4 — verification, not trust”The Typology closed a long arc: Phase 4, the two gates and their
reconciliation, turned the type system from a drift-guard into a bug-finder.
Source-cite grammar arrived (derived_from cites source_system / op / agg),
aggregation legality made rollup load-bearing, recode legality requires a
cited mapping, and a Bronze-SQL scaffolder proposes source-cites via sqlglot.
The Column Passport — per-column semantics at the point of use — got specced
and then wired everywhere: the Spend Studio and Price Lab drilldowns and lists
now render through one DataTable that carries typed passports, colour rules,
and cell extras. The words got passports; now the columns wear them in the UI.
Cartography grows its channels
Section titled “Cartography grows its channels”The map gained expressive range. The Magnitude — data-driven marker size and
line width. The Label — HTML text labels on point layers and at edge
midpoints. The Clock — time as a Selection dimension, scrubbing a map’s
severity by period. The Selector — a per-pollutant paint switch (?pollutant)
that made the aether air-quality map legible. And cited popups attach the
active signal’s actual reading to a map point, so a dot can say why it’s the
colour it is. Endpoint-geometry edges now render and colour by signal severity.
Mouse-Free, and the salon
Section titled “Mouse-Free, and the salon”Two quality-of-life arcs. Mouse-Free — operating the whole Explorer by
keyboard — shipped Phases 1–4 with a user-facing Keyboard guide, sticky mode
chosen, later phases (scatter brush, touch idioms, leader-as-a-system) specced
or deferred. And the team gave itself a faster nervous system: the salon —
per-sister mailbox comms (just mail / just salon), so a letter no longer
waits a full code-sync cycle to be read. We started using it the day it landed.
The Codex reaches new domains
Section titled “The Codex reaches new domains”The standards registry grew beyond hospitals: EIC (Energy Identification Code) for the grid, and WHO AQG 2021 + China GB 3095-2012 for air quality — the standards sollun and aether cite. EIC was reclassified de_facto → trade_body and the Codex regenerated. The typed contract now spans three very different worlds.
The housekeeping that mattered
Section titled “The housekeeping that mattered”A dense week of fixes, several load-bearing. The make self-heal closed the
tour-bake trap — an incremental build now rebuilds an analytics tag whose table
never materialised, instead of skipping it forever. Box charts that rendered
empty (array data points corrupted on a config clone) were fixed with a
regression guard; ‘Fit all’ now frames the whole map; watershed legend
clicks zoom again. The gallery stopped 500-ing the landing page (an
__dirname-in-ESM bug) and its publish-refresh now authenticates. jin ship
learned to re-invoke make correctly under the frozen bundle. Thesis
finding_count became a distinct entity count, not count(*). Map markers now
resolve their id from the declared business_id rather than a guess-list. And
the public-docs scrub began — Sense 62 unpublished, Riverkin removed from
Sense 52 — the first pass at keeping real organisations off the public surface.
The through-line
Section titled “The through-line”Two movements, one week. Outward: a front of house — a wall to stand on (The Gallery), a guide to walk you through it (The Docent), an honesty check so the guide stays true (The Warrant), and loud beacons so nothing publishes half-formed. Downward: a foundation — an operational store that remembers a living tenant (The Reservoir), a build that knows its own generations (The Courses), and an ingestion path that verifies every byte it lets in (the gates). The same instinct runs through both faces: be honest with whoever is on the other side — the visitor at the front door, and the operator who has to trust what the store remembers.
Last week description became operation. This week operation opened a door — and poured the floor to stand always-on behind it.
Next week: finish the public-docs scrub and give the docs a front door of their own; carry the Reservoir’s remaining citizens across; and let the Docent’s selection stops and Warrant meet a real showcase make, so the tours light their evidence and check their own truth in production.
The trail
Section titled “The trail”A selection of the week’s commits, for the record:
08125687— how the OPS works in the cloud (the roster’s cloud story)45d93c33— jin topo —dynamic — staleness overlay from the course_lineage OPS citizen9bdca058— roster write-through — invite/revoke write OPS assignments (Wave 2 slice 4)6bec3e4c— The Warrant P1 UI — /tour shows each stop’s staleness markerdd4d95af— The Membrane — AFS-in-cloud read+write channel + Courses→git axis mapping8e8f398f— pin the hash slicing in the make-write spec (A takes output_kls_hash only)e31e19f8— The Warrant P1 engine — tours verify their claims against the KLS9e874575— roster read cutover — principals.ts reads the OPS (Wave 2 slice 3)0c5a5994— bucket-sync — run_registry OPS citizen + write_terminal_run, with the (gen, course, variation) coordinatebe3454f6— spec the reservoir make-write pass (build-finish OPS appends)3e1b2863— bake the identity tree into the OPS during make (Wave 2 slice 3 prereq)0955677c— assign jin roster to a clidocs section