Context
ADR-0034 gave the Inside landing page one dashboard per seat, generated by scripts/build_inside_seats.py from the seats file and the cockpit data, each ending in a hand-written slot for the seat's cards. ADR-0036 made the tabs folder tabs with one status pill. Every dashboard then showed the same blocks in the same order: lens questions, counts, the chief executive's area tiles and decisions waiting, the items not done, a placeholder, then the slot.
Issue #207 moved the visuals up on two seats: the Second brain graph, the work block and the search dashboard first on CKO, the cost dashboards first on CFO. The generator gained a per-seat layout table, LAYOUT, and part slots named SEAT/PART for the cards it lists. Measured on the live page on 2026-10-28, the six panels now open in four different ways: CKO with the graph, then the work block, then a Grafana frame, then the lens; CFO with a Grafana frame, then the lens, the counts and the work block; CEO with the lens, the counts, eight area tiles, the decisions waiting, its own items and the site cards at the end; the other three with the lens. The brief behind #207 was "max visual impact: the CFO tab, boom, there is your single pane of glass for money", and the brief for the whole page is one pane of glass per seat. A per-seat table gives each seat a different pane, and every new seat a decision to make.
The chief executive's dashboard counts every area but shows no seat. The one view of the house as six seats, each with its state, exists only as the tab strip, where ADR-0036 keeps it to a code and a pill.
Two constraints hold for every pane. A Grafana frame boots the whole Grafana application in the visitor's browser, loads only when it scrolls into view, and a public dashboard ignores template variables and drops annotations (Public dashboards). And the panels are static HTML written at deploy, so a count is as fresh as the last deploy, while the site cards read their gate records in the browser.
Decision
One grammar, four bands, one order. Every seat dashboard is, from top to bottom: signal, the one live picture that answers the seat's first lens question; queue, what needs the seat now, the decisions waiting on the chief executive's and then the seat's items that are not done, blocked first; state, the lens questions, the four counts, and the chief executive's area tiles; tools, the seat's cards and the links to its deep pages. The order is a constant in the generator, ORDER, by band, and no seat departs from it. LAYOUT and DEFAULT_ORDER go.
A seat's visual sits in one named slot. The hand-written card or cards of the signal band go in <!-- seat-extra:SEAT/signal -->, the only part slot a seat may fill; the seat's own slot <!-- seat-extra:SEAT --> stays the tools band, last. Today the CKO signal slot holds the Second brain card and the search dashboard, the CFO slot the cost dashboards, the CEO slot the three site cards; the CTO's deploy feed, apps, experiments and dashboards stay in its tools slot until its signal is chosen. The build refuses to run when the page holds content in any other part slot, or in a part slot of a seat the seats file does not have, naming the slot, so nothing hand-written is dropped by a rebuild.
The chief executive's signal is the seats. A generated roll-up opens the dashboard: one tile per seat in masthead order, the seat code, its title, and its state in the same pill rule as the tab (blocked beats open beats clear), with the open, in progress, blocked and done counts on one line beneath. Each tile links to the seat's dashboard, so the roll-up is also the way through the house. The site cards follow in the signal slot, then the decisions waiting, then the chief executive's own items.
One Grafana frame above the fold at most. A signal band carries one Grafana frame; the map is a first-party frame and does not count. Anything else the band shows is a number written at deploy, with a link to the dashboard it comes from.
Every number says how fresh it is. A block of counts names the time of the cockpit data it was built from; a card that reads live data in the browser says so where it shows it. The roll-up's heading carries "counts as of" and the data's time; the note under the panels keeps the same stamp for the lists.
What comes next, one change each. The lens questions bound to a number, a trend and a source for the CTO and the CFO; the publisher's pipeline counts, the one placeholder today; a signal for the CHRO; a corpus series for the CKO. Each is its own record or issue; this record fixes the frame they land in.
What this replaces. The per-seat layout rule from #207 in the Inside portal page: the two orders it set are now the one order, with one difference on each seat. On CKO the search dashboard moves above the work block, into the signal band with the graph; on CFO the work block moves above the lens, into the queue band.
Consequences
Every tab opens the same way: the picture, then what needs the seat, then the questions and the counts, then the tools. A new seat needs no layout decision; it gets the grammar, and its visual, when it has one, goes in its signal slot. The chief executive's dashboard shows the house as six seats with their state, which the tab strip could not, and the roll-up links make it the index of the page. The generator loses the layout table and its guard gains two cases, so the test file covers the band order on a synthetic seat, the roll-up's tiles, pills, links and freshness line, the refusal of a stray or orphaned part slot, and the order on the real page for CEO, CKO and CFO. A visitor pays for one Grafana application per seat they open, and none until the frame scrolls into view. The cost is one more block on the chief executive's pane before the lens, and two small moves against the hand order of #207, both named above.