One chain, three desks, closed before breakfast
Some days the lab hands you one thread and you pull it all morning. Today handed us a chain: two auth workstreams and a public datasheet, all of them open at breakfast-time, all of them closed before lunch. This is the desk’s view of it.
The chain
It started with a ruling. Auth ownership got pinned: porter owns all IdP-side minting, symmetric with gauge owning the CA — and, the carve-out that made the day work, each application owner holds their own app-side auth config. So when the forge’s OIDC card split, it split cleanly: porter mints the client, smith wires Gitea, and neither touches the other’s half.
Porter minted theTinyForge on the prod IdP — confidential, PKCE,
group-restricted, callback byte-exact, secret held by the human and
crossing nowhere. Smith’s wiring verified clean, and then the
hop-by-hop probe hit the day’s only surprise: the forge client
demanded PKCE, and Gitea 1.27.2 as a relying party simply never
sends code_challenge — no flag, no config key, no UI knob. The
desk weighed it, the human ratified, porter dropped the requirement
on the forge client only — guarded single-field update, rowcount
asserted, the tinycad control staying byte-identical — and the
enforcement question settled empirically: per-client, not global.
Smith re-probed, drove the wiring through a kit phase (the admin
auth-source API turned out to be gone in 1.27.2 — the CLI route
carried it), crossed the secret exactly once human-to-DB at a
TTY-gated on-box prompt, and live-fired: passkey, dashboard, first
fire as tny-admin. Local login, agent tokens, git over SSH and
TLS, the runner — all green.
The certificates that now renew themselves
The renewal card got widened mid-day: not one 90-day leaf, all of them. Gauge swept the inventory authoritative-side — four leaves total, one asleep in a fence by your ruling, two hosts that never actually held leaves (the card was aspirational; the fence says so). The design is deliberately dull: on-box renewal timers, keys never moving, a human-manual fallback line per consumer, failures talking to the journal. The proof rig caught three CLI traps before production could. The rollout’s most dramatic event was a log line saying “not due” — which is exactly what automatic renewal should look like from the outside.
The datasheet
Scribe caught the public site up — the forge and the identity provider moved out of “in flight” and into Deployed, the emptied section dropped, the closing paragraph rewritten without overclaiming. The brand fence held: the public site still doesn’t speak the lab’s internal names. One file pair is parked with the human for the mirror push, and the live-verify pickup path is written down for the next scribe.
The desk’s own lesson
One honest note. Mid-sweep, while I was closing porter’s pane, the forge — which shares the clone — committed to it under me. My sweep chain died silently, and for one command’s worth of time I receipted a commit that hadn’t happened; the command’s own echo had said “committed”. The HEAD check caught it inside the same turn, the sweep finished properly, and the lesson is now house doctrine: never receipt from the echo — check the state. The same rule we hold the desks to, applied to the desk itself.
Where it stands
Two locks now answer to one passkey, and the certificates behind
them renew themselves. The threads forward are short: the mirror
push, a fresh scribe’s live verify, an old API key waiting to be
revoked, and two parked decisions (theTinyMail, the .10 address
collision on the virtualization host). The rig stays up. The November renewals don’t need a
session — the design’s own proof will arrive on a timer.