Skip to content
kc@kumarChandrachooda.com:~$ cd /design-system/control-room && read --section="01 control-console" 0%
KC Design System — Marginalia / Blotter

Read it in the margins.
Control Room.

The marginalia style typesets the system as a book in design-system-marginalia.css: Alegreya at reading weight, a drop cap on the opening line, cards ruled above and below instead of boxed, and notes hung off an accent rule. Same components, same markup — with glosses.

Reading in an unnamed pair — marginalia / blotter Browse all 8 →

01

Console head & outcome

How every console screen opens and how it answers a write (_ConsoleHead, _Outcome): one flex row with the screen's name and a mono readout, under the top strip; then, when something happened, a banner in one of three tones and no fourth — it landed, it is held locally and not yet durable, or the screen cannot go on. The console must not pretend the click worked, so a refusal and an unconfirmed write are banners with sentences in them, never toasts.
An operations console, not an article. Each screen opens with one flex row — its name and a mono readout beside it — under the top strip, which carries who you are and where else to go. The lede under it is the one paragraph of prose the screen allows itself.

Switches

store ssm:/kc/switches/site-flags · journal → store → re-read · env wins · cached 30s

Behaviour flags live in the store behind the journal — written locally first, durably second, and re-read before either is claimed.

The outcome banner, in its three tones and no fourth. The console must not pretend the click worked: a write that landed, a write held locally that the durable store has not confirmed, and a screen that cannot go on are three different facts, and each says which in a sentence.

READING_SHELF is now true. Written to the store and re-read: the value in force is the value written. Edge: notissued. No distribution is configured here, so there was nothing to invalidate.

This instance is holding a write the durable store has not confirmed. Written 4 min ago. Other execution environments are still serving the previous value.

02

Switches

The screen with two kinds of switch and controls on one of them (_SwitchRow, _Toggle, _HoldToConfirm, _SwitchTrace): a behaviour flag changes what a page does, a surface gate decides whether an address exists, and a gate's row is a flag's row with the control replaced by its state word. Every state a row can be in — toggle, lock chip, the hold that takes the site down, read-only — the trace that says why it is what it is with the losing tiers struck through, the kind filter, the section notes and the precedence ladder.
Two kinds of switch, and controls on only one of them. A behaviour flag changes what a page does; a surface gate decides whether an address exists. Each row is one flex row of three items — the control, the name with its sentence, the provenance — so the thing you press stands in the same place on every row, and a gate's state word stands where a flag's toggle would.
show 6 of 6

Behaviour flags

Change what an existing page does. Every address still answers; these are the ones with controls.

READING_SHELF behaviour

A read-later shelf on every post page, kept in this browser.

source: parameter
acct_01SPECIMEN · 19 Aug
why is this off?
trace · FeatureEvaluation · four tiers · scope acct_01SPECIMEN store read 12 ms
1 Environment READING_SHELF is unset, or is set to something that is not truthy. A "false" here is silence rather than a refusal: the override only ever forces on, which is what keeps it usable during an incident. silent
2 Store /kc/switches/site-flags answered, and the re-read confirmed it. This is the tier the console operates and the one a deploy does not stamp on. wins - false
3 Journal Empty. The journal only holds a value between a local write and its durable confirmation, so an empty journal here means there is no write in flight. empty
4 Default The compiled-in false. Not reached: a tier above answered. the floor

Reason, from the evaluator, verbatim: “the store answered false and the re-read agreed”

SERIES_DIGEST behaviour

A weekly email to readers following a series. Off sends nothing.

source: journal - this instance only
acct_01SPECIMEN · 19 Aug
why is this on?
trace · FeatureEvaluation · four tiers · scope acct_01SPECIMEN store read 9 ms
1 Environment SERIES_DIGEST is unset, or is set to something that is not truthy. A "false" here is silence rather than a refusal: the override only ever forces on, which is what keeps it usable during an incident. silent
2 Store /kc/switches/site-flags has not confirmed the write the journal is holding. The durable value is whatever it was before that write. not yet
3 Journal A local write this execution environment took that the durable store has not confirmed. True of this instance only - other execution environments are still serving the previous value. wins - true
4 Default The compiled-in false. Not reached: a tier above answered. the floor

Reason, from the evaluator, verbatim: “a local write the store has not confirmed”

locked on
SHOW_UPCOMING behaviour

Unscheduled parts appear in a series' table of contents.

forced on by the environment map: SHOW_UPCOMING is set, and a lower tier cannot lower a higher one

source: environment
why is this on?
trace · FeatureEvaluation · four tiers · scope acct_01SPECIMEN store read 0 ms
1 Environment The function's environment map. SHOW_UPCOMING is set, and the override is one-directional by construction - the expression is a |=, never a =, so the map can raise a value and has no way at all to lower one. wins - true
2 Store /kc/switches/site-flags holds false - and it makes no difference, because a lower tier cannot lower a higher one. Shown rather than hidden: an owner who set this a fortnight ago needs to see that the parameter IS written the way they wanted. Read from the store's own document rather than from the evaluation, because the ladder short-circuits at tier 1 and never looks. overruled
3 Journal Empty. The journal only holds a value between a local write and its durable confirmation, so an empty journal here means there is no write in flight. empty
4 Default The compiled-in false. Not reached: a tier above answered. the floor

Reason, from the evaluator, verbatim: “forced on by the environment map: SHOW_UPCOMING is set, and a lower tier cannot lower a higher one”

SITE_OFFLINE behaviour · destructive

Every public address answers the maintenance screen. The one switch that takes the site down.

source: parameter
acct_01SPECIMEN · 19 Aug
why is this on?
trace · FeatureEvaluation · four tiers · scope acct_01SPECIMEN store read 14 ms
1 Environment SITE_OFFLINE is unset, or is set to something that is not truthy. A "false" here is silence rather than a refusal: the override only ever forces on, which is what keeps it usable during an incident. silent
2 Store /kc/switches/site-flags answered, and the re-read confirmed it. This is the tier the console operates and the one a deploy does not stamp on. wins - true
3 Journal Empty. The journal only holds a value between a local write and its durable confirmation, so an empty journal here means there is no write in flight. empty
4 Default The compiled-in false. Not reached: a tier above answered. the floor

Reason, from the evaluator, verbatim: “the store answered true and the re-read agreed”

Surface gates

Answer does this address exist. Listed here and never clickable.

on
GUESTBOOK surface gate

/guestbook — A signed guestbook under the about page.

source: environment
read-only here
why is this on?
trace · FeatureEvaluation · four tiers, evaluated in order store read 0 ms
1 Environment The function's environment map. GUESTBOOK is set, and the override is one-directional by construction - the expression is a |=, never a =, so the map can raise a value and has no way at all to lower one. wins - true
2 Store Not a tier for this feature. ParameterPath is null by construction, the store is never consulted for a gate, and the write path refuses one - because a kill switch has to work when the store is the broken thing. not a tier
3 Journal Not a tier for this feature either, for the same reason: there is no local write to hold, because there is no write. not a tier
4 Default The compiled-in false. Not reached: a tier above answered. the floor

Reason, from the evaluator, verbatim: “GUESTBOOK is set in the environment map”

off
LAB_PAGES surface gate

/lab — Experiments that are not linked from anywhere.

The environment map says on and the gate this address is behind answers off. The gate is what refuses the request; the map is only one of its inputs.

source: environment
read-only here
why is this off?
trace · FeatureEvaluation · four tiers, evaluated in order store read 0 ms
1 Environment The function's environment map. LAB_PAGES is set, and the override is one-directional by construction - the expression is a |=, never a =, so the map can raise a value and has no way at all to lower one. wins - true
2 Store Not a tier for this feature. ParameterPath is null by construction, the store is never consulted for a gate, and the write path refuses one - because a kill switch has to work when the store is the broken thing. not a tier
3 Journal Not a tier for this feature either, for the same reason: there is no local write to hold, because there is no write. not a tier
4 Default The compiled-in false. Not reached: a tier above answered. the floor

Reason, from the evaluator, verbatim: “LAB_PAGES is set in the environment map”

off
READING_SHELF behaviour

A read-later shelf on every post page, kept in this browser.

source: compiled-in default
why is this off?
trace · FeatureEvaluation · four tiers · scope acct_01SPECIMEN store read 2000 ms
1 Environment READING_SHELF is unset, or is set to something that is not truthy. A "false" here is silence rather than a refusal: the override only ever forces on, which is what keeps it usable during an incident. silent
2 Store /kc/switches/site-flags did not answer inside its budget. THE VALUE BELOW IS A FLOOR AND NOT A SETTING - the store is the problem, not the flag. timed out
3 Journal Empty. The journal only holds a value between a local write and its durable confirmation, so an empty journal here means there is no write in flight. empty
4 Default The compiled-in false. The floor, and what every failure of the tiers above falls back to - chosen per row for safety rather than for convenience. wins - false

Reason, from the evaluator, verbatim: “the store did not answer inside its budget; this is the floor” This is the floor and nobody chose it.

The two controls. The toggle is a submit button carrying the opposite value. The flag that takes the site down is differentiated by gesture rather than by a dialog: hold it for 1.4 seconds and the bar fills, or use the keyboard button beside it, which posts the same field. Turning it back off is one press, because that is the action that follows a mistake.
Hold for 1.4s, or use the button beside it.
The precedence ladder under the switches: the three tiers in the order they win, each with its verdict on the right. Open any row's “why is this on?” above for the same ladder evaluated for one switch, the losing tiers struck through.

Precedence

Unchanged from the deck manifest's ladder, because it is the same store.

  1. Environment. EnvironmentFlagEnabled over the function's map. One-directional by construction — |= forces on and can never force off — and retained so an incident is handleable from the AWS console when the store is the broken thing. wins, if true
  2. /kc/switches/site-flags. The parameter, behind the journal. This is the tier this screen operates, and a deploy does not stamp on it. wins otherwise
  3. The compiled-in default. The floor, and what every failure of tier two falls back to — a fallback that hides every draft and shows every CV, which is the correct direction for both. the floor
03

Audit log

The log the owner is accountable to (_AuditFilters, _AuditLog, _RecentLog): four columns on fixed tracks — when, who, what kind, and a sentence with the action inline. Six chip kinds, a closed set that always shows all six; the owner's own rows marked down the left edge; an empty filter that says nothing was hidden; and the switches screen's “Recent”, the same rows in an order of its own.
Four columns and no more: when, who, what kind, and a sentence with the action inline. The kind chip makes a site-level row identifiable without reading a word, and the owner's own rows carry a marker down the left edge — the log admitting it exists to record the person reading it.
  1. 19 Aug 14:02 acct_01SPECIMEN site flag.write READING_SHELF false → true, written to the store and re-read. #12 · aaaaaaaaaaaa
  2. 19 Aug 13:56 acct_01SPECJOTN post post.published Outbox without a scheduler, by Jo Tan. #11 · aaaaaaaaaaaa
  3. 19 Aug 13:48 acct_01SPECIMEN role role.granted Author to acct_01SPECJOTN - reason “guest series”. #10 · aaaaaaaaaaaa
  4. 19 Aug 13:31 acct_01SPECMAYA pass pass.expired the appendix stopped answering for acct_01SPECMAYA. #9 · aaaaaaaaaaaa
  5. 19 Aug 13:07 acct_01SPECDAN0 credential credential.added github, verified at the provider. #8 · aaaaaaaaaaaa
  6. 19 Aug 13:00 acct_01SPECDAN0 auth auth.signed-in github · a new session on this device. #7 · aaaaaaaaaaaa

No rows match. Nothing has been filtered away that was there.

“Recent” on the switches screen is the same log read a second way, so a flip and its record are on one screen. It is built as five cells in its own order — time, chip, actor, action, detail — and not the audit screen's four, which is drift the docket wins.

Recent

Every write on this screen appends a row before the switch moves, and a refusal is a row too: a flip that succeeded and a log line that did not is the one ordering that makes a log worthless. Written to journal:audit.ndjson. There is no durable audit store yet, so these rows do not outlive this execution environment — the chain and the ordering are what this wave establishes, and the table arrives with the identity core.

  1. 19 Aug 14:02 site acct_01SPECIMEN flag.write READING_SHELF false → true, written to the store and re-read.
  2. 19 Aug 13:48 role acct_01SPECIMEN role.granted Author to acct_01SPECJOTN - reason “guest series”.
04

Queue

An inbox with one verb in it, and the verb is open (_QueueList): what is waiting, for how long, and whose it is. A scheduled draft sits back from the ones waiting on you, a resubmission counts its submissions, and the decision itself stays on the Workshop's screen — an inbox is not a judgement.
An inbox, and one verb in it: open. What is waiting, for how long, and whose it is. A scheduled draft sits back from the ones waiting on you; a resubmission says which submission it is; a row without a link is a Workshop switched off on this deployment, which the screen says once rather than row by row.
  1. A guest post about queues Jo Tan Aspire in Production · part 4
    In review 64 d
  2. In review submission 2 68 d
  3. Scheduled 62 d
  4. Five modules, one database each Sam Black
    In review 62 d

There is one verb on this screen and it is “open”. A queue that grew an approve button would be a second place the publish decision is made — and the second place is the one that ships without the note field. The owner's three transitions live on an owner-gated controller in the Workshop, because they are refused by routing rather than by a filter, and routing groups by area.

Nothing is waiting. Drafts appear here when an author submits them, and leave when they are published or sent back.

05

People

Everybody who holds anything, and the invitations that are not people yet (_PeopleHead, _PeopleTable, _PersonRow, _InvitationRow, _InviteDisclosure, _GrantAuditStrip). Four grounds a row can stand on — pending, the owner's inert row, invited, gone — the role panel's pill and buttons placed in table cells, the invitation that shows its link once, and the strip of grant rows under the table, read from the same log as the audit screen rather than a second store.
One table, and four grounds a row can stand on. A request waiting on you; the owner's row, inert because its capability set is empty; an invitation, which is not yet a person; and an invitation answered. The badge is the role panel's pill and the buttons are its trio, placed in a table cell by a host that supplies them nothing.

People

5 accounts · 2 invitations · 1 waiting on you

People

5 accounts · 0 invitations · 0 waiting on you this host may not invite
who grant credentials last seen actions
Kumar
owner@example.com
Owner google today
config-seeded
Pat Lee
pat@example.com
Pass requested asked 18 Aug github 18 Aug
Jo Tan
jo@example.com
Author lapses in 20 days if unused github google yesterday
Maya Hart
maya@example.com
the site acts on Reader: the pass ended 16 Aug
Pass ended 16 Aug microsoft 2 weeks ago
Dan Kovac
dan@example.com
Reader — 3 days ago
lee@example.com
no account — inv_specimen01
Author invited 19 Aug · expires in 6 days — never
kim@example.com
no account — inv_specimen00
Author accepted 12 Aug — never
answered
The invitation is a disclosure: one address, one reason, seven days, and no role field, because Author is the only role an invitation issues. The link it mints is shown once — the store keeps a hash — and the strip under the table is the grant rows of the same audit log.
Invite an author

single use · expires in 7 days · issuing invalidates any earlier one to this address

shown once — the token is stored as a hash, so neither this page nor the row below can render it again. Revoke it and issue a new one.

2026-08-19 14:02 · role.granted · Author to acct_01SPECJOTN — reason “guest series”
2026-08-19 13:53 · role.refused · revoke acct_01SPECJOTN refused: the step-up is 42 minutes old
2026-08-19 13:22 · invite.issued · lee@example.com as Author — single use, 7 days

Markup

As rendered on the page behind this — captured, not transcribed.