Skip to content

Sense 57: The Rooms

Sense 57 · Steady · Last touched 2026-08-20

  • last_verified: 2026-07-27

Synced from docs/design/sense_57_the_rooms.md in the engine repo — that’s the source; this page is a build-time mirror.

Status: proposed Date: 2026-07-13 Origin: a design conversation that began as “where do Instruments and Cartography belong in the sidebar?” and ended by reframing JinDesk from a taxonomy of pages into a workspace of rooms. Companion Sense docs: Sense 13 The Canvas (what fills a room) · Sense 42 The Landscape (its Garden and River become two rooms’ canvases) · Sense 25 Identity and Passes (the Access room) Supersedes: studio_salon_lab.md — the rooms/work-mode metaphor, grown up and made structural.

JinDesk is not a menu of pages. It is five workspaces — rooms — you move between. Three for reading your business through the analysis (Domain · Analysis · Flow), two for building and governing the machine that makes it (Bench · Access). You switch rooms with a keystroke; each room keeps exactly what you left in it. Two rails — evolve and the CLI — frame every room. And the words wear one of two colours, because the tools are jinflow’s; the subject is yours.

A flat sidebar makes you carry all five concerns at once — every page for every kind of work, stacked in one list. But you are almost always working in one face: tending the tenant’s domain, or building signals, or watching runs. The rest is noise you scroll past.

The parallel is Dorico’s mode bar — Setup · Write · Engrave · Play · Print. Its genius is that each mode shows only what that phase needs; you never wade through play tools while writing notes. The rooms do the same: each face gets its own vertical navigation, its own canvas, its own kept state. Navigation stops being a menu you re-read and becomes a set of rooms you flick between — muscle memory, not wayfinding.

#RoomQuestion it answersCanvasHolds
1Domainwhat is this about?the lay of the landEntities · Taxonomies · Knowledge (Wisdom / 50cents) · Observations
2Analysishow do we read it?The GardenSignals · Perspectives · Theses · Verdicts · Cartography · Labs · Boards
3Flowwhat’s happening?The RiverFindings · Runs · River · Reports (output)
separator — consume ‖ construct
4Benchmake & maintainthe maker’s benchAtelier · Signal Builder · dbt Docs · Tables · Build
5Accesswho’s allowedthe rosterPasses · Principals · Admin · Tenants

The Garden and the River are the canonical canvases of the Landscape (Sense 42), now understood correctly as the home views of two different rooms — the Garden is structure (Analysis), the River is time (Flow). The Domain, Bench, and Access canvases are named provisionally; the one firm constraint is that Domain’s canvas is not “the map” — that word now belongs to Cartography, which lives in the Garden.

The switcher is a horizontal ribbon — a full-width band directly beneath the tenant header, Dorico’s mode bar in its literal form: horizontal themes, vertical functionality. The five rooms sit in the middle; two bookends flank them, so the band reads left-to-right:

Overview │ Domain · Analysis · Flow │ Bench · Access │ Tools
⌥1 ⌥2 ⌥3 ⌥4 ⌥5 ⌥6 ⌥7

Three breaks structure it — bookend │ consume/construct │ bookend — drawn with one single separator, the same thin line each time. The breaks differ in meaning, not in appearance: the middle one is the altitude line (below), the outer two set the bookends apart from the rooms, but a divider is a divider. No second glyph, no heavier rule — one separator, three uses.

The bookends are not analytical rooms — they have no canvas and answer no “how do we read it?” question. They are the two things that sit around the work:

  • Overview (left) — the tenant’s front door: its home, Field Manual, and What is this?. You start here. Its first entry drops the generic word “Overview” and wears the tenant’s own name — you are standing inside this tenant, so it greets you by name.
  • Tools (right) — the cross-room utility belt: Inbox, Notebook, Ledger, Actions, Bookmarks, Recents, Compare, CLI. Things you reach for from any room, so they belong to none — collected at the far end rather than repeated in each.

Mechanically the bookends behave exactly like rooms — a ⌥ key, kept state, a vertical nav in the same <aside> column. Conceptually they are the margins of the page, not a chapter in it. The vertical column below the ribbon renders only the active entry’s nav; the room switcher itself has left the sidebar entirely and become the band.

Between Flow and Bench sits a single line, and it is a line of altitude, not role. Left of it, you consume the analysis — you read your business through the apparatus. Right of it, you construct and govern the machine — you author signals, tune dbt, grant passes. It is deliberately not named by a person (“analyst”) — that would collide with the Analysis room and mislead, since the same person works across all three left-hand rooms. The separator marks where the work changes altitude: from using the product to tending the works.

Two surfaces frame every room and belong to none:

  • evolve — the vertical right rail (conversational; Vera).
  • the CLI — the horizontal bottom bar (deterministic; Sense 55/56).

They are not rooms and carry no ⌥ key. A mode is a place you go and dwell; a rail is a tool that travels with you. Conversational and deterministic, both present in whichever room you’re standing in — the two-rail interaction model.

There are exactly two voices in the words, and they answer one question: who owns this noun?

  • Platform — the tools. jinflow’s invariant machinery: Signal, Perspective, Thesis, Verdict, Finding, River, Run, Report, and the containers — Entities, Taxonomies, Knowledge, Cartography, Observations. Learned once; the same in every tenant.
  • Domain — the subject. The tenant’s own business words: Material, Cost Center, Employee. The tool names the box; the business names what’s in it.

Two precisions that keep this honest:

  1. The colour marks entity names only — a sprinkle, not a wash. Every container is a tool → platform-coloured. Only the tenant’s own entity nouns wear the subject colour. In practice it appears almost exclusively in the Domain room, since Analysis / Flow / Bench / Access are pure tooling.
  2. The colour rides the terms; the separator stays structural. The two ideas never compete: colour means exactly one thing — tool vs subject — carried on the nav items. The consume‖construct register is the divider, not a third colour.

A pack is a tenant without data that knows a lot of stuff — a distribution mechanism, backstage. The user is always at a tenant; they never meet a pack. So there is no “pack voice”: from the tenant’s seat, Material (inherited from a pack) and Signal (jinflow’s) are both just “my app.” The subject colour marks your business’s words, full stop — the fact that a pack seeded them is invisible plumbing, exactly as invisible as the platform that runs them.

The container for the tenant’s business objects is Entities, not Dimensions. This is a ratification, not a coinage: the platform already says “Entities” (the section header in every locale; the SidebarEntity type; coreEntities / analyticalEntities). “Dimension” is a star-schema holdover surviving in the /dimensions route and little else — even the onboarding copy explains it as “browse entities.” The word changes now; the route can migrate to /entities later, non-blocking.

Switching rooms preserves each room’s exact screen — its selection, its scroll, the page you were on. Leave Analysis on a thesis, glance at Flow, return — the thesis is still open. Menus make you re-find your place; rooms hold it.

Rooms switch by keystroke. Not ⌘⌘1..9 is reserved by the browser for tab switching. The binding is ⌥ (Option) + digit, positional across the whole ribbon: ⌥1 Overview … ⌥7 Tools, counting left-to-right, plus clickable tabs. (Matched on event.code = Digit1..7, not event.key — on macOS ⌥+digit emits a special glyph, not the digit.)

Cross-room reference must carry context. “Show this signal’s Findings” should take you into Flow and land on that signal, without disturbing where Flow otherwise was. State-retention plus a context-aware jump, together — the wall becomes a door.

  • Not a new page taxonomy. Every existing route survives; the rooms group them. Room 1 implementation moves nothing — it re-shelves.
  • Not a role system. The rooms describe what you’re doing, not who you are; the Access room governs identity but the rooms themselves grant nothing.
  • Not the death of the sidebar. Each ribbon entry still has a vertical nav — seven of them (five rooms + two bookends), one per entry, and only the active one shows in the <aside> beneath the ribbon.
  1. The mode shell. (shipped) A mode-bar in Sidebar.svelte; the existing nav items regrouped into the five rooms; ⌥/click switching; active-room memory. Reuses every route — nothing breaks. sidebar-numetrix.spec.ts updated to the new shape.
  2. Colour + separator. (shipped) The tools/subject colour on entity-name nav items; the Flow‖Bench separator; Cartography / Labs / Boards in the Analysis room; Dimensions → Entities on the surface.
  3. Kept state. (shipped) Per-room last-route memory; the route-following effect; ⌥1–7 switching.
  4. The ribbon. (shipped) The mode bar promoted from a sidebar icon-row to a full-width horizontal band, with the Overview and Tools bookends folded in (was: the top meta block and the bottom Tools list, stacked in the sidebar). Overview’s first entry wears the tenant name.
  5. Rails + canvases. (next) evolve + CLI wired as the persistent frame; the signature canvases (the Garden, the River, and the rest).
  • Canvas names for Domain, Bench, Access — the Garden and River are fixed; the other three want landscape-true words (not “map,” which Cartography took).
  • The exact ⌥ binding, given macOS Option-key text behaviour.
  • Where a sixth room would go — a fleet/Commander view, or a dedicated Strategy room, are plausible later. A room earns its key only if it is a genuine place you dwell, never a bin for leftovers.

Numerical neighbors:Sense 56: The Run · Sense 58: The Broker

jazzisnow jinflow is a jazzisnow product
v0.64.7 · built 2026-09-20 19:48 UTC