The Lab gets a submenu, and every brief the site was built from gets a register
The four Lab entries were reachable only from the Lab index, and the documents this site is written from were not recorded anywhere at all. Both are now visible in the header.
- The Lab is a dropdown. All four entries sit under it, in reading order, with the current one marked. Still one top-level entry of seven — a group counts as one.
- The brief register↗ — every document we were given, archived exactly as it arrived with its SHA-256, what it produced, and what it asked for and has not got. In the More menu. The machine-readable version is briefs-register.json↗.
It exists because both failure modes have already happened. One brief arrived twice, byte-identical, six hours apart — and three Lab entries had already been written from the first copy. Without a digest to compare against, the only thing standing between that and a wasted afternoon is somebody's memory of a filename. The other failure is the quiet one: a document arrives and is never worked at all, and nobody notices because there is no list saying it should have been.
So the register does two jobs. Nothing gets worked twice, because an identical file is recognisable before anybody starts reading it, and every arrival is recorded rather than only the first. And nothing gets quietly dropped, because the agent producing these briefs can fetch the JSON, hash what it sent, and name anything absent — a check somebody else can run against us, which is the only kind worth having.
Every entry carries both columns. What came out of it, and what it asked for and has not got. Two of the nine items are marked received, meaning read and archived with nothing built — and they stay marked that way until something is. A register that listed only outputs would be a press release.
A new CI gate keeps it honest: every document must exist at the path given and match its
recorded digest, every file in assets/briefs/ must appear in the register, a processed
item must name something that exists, and a received item must name nothing. 23 tests.
Two header fixes came with the submenu.
- The Lab caret pushed the bar past its 1100px cap between 980 and 1012px, and the homepage — which carries section links too — past it up to 1032px. The drawer breakpoint moves from 980px to 1040px, and the decoupled scenarios pilot, which hides its nav with no replacement, moves from 880px to 940px where it actually stops overflowing.
- And the header itself scrolled sideways at 360px on the pages whose call to action is the longer one. The brand, the burger and the button all have to fit on that line, so the gutter, the gap and the button tighten below 420px rather than any of them being dropped.
Every page is now clean at fourteen widths from 1400px down to 360px, except for three
pre-existing content overflows that are not the header and are not fixed here:
ramm.html at 900px and 980px, and plug.html and demos.html at 360px. All three are
min-content floors in vault-era grids and each needs its own look.