Online
admin · management concept · 2026-09-24
EC

Updates

Every seat, one feed — what shipped, what was decided, what is blocked, and what needs Erik. Newest first. What you see is what your level allows; what you do not see is counted.
One record, three renders. An update is a small markdown file committed in the repo where the work happened — updates/2026-09-24-slug.md. The console reads it here, the board site renders it at team level, and a session sees the latest at boot. Nothing is typed twice, so the feed and the board cannot disagree — the same law the board dashboard holds its figures to, applied to narrative.
Updates · 7 days
0
at your level
Seats reporting · 14 days
0 / 8
a seat that posted inside its cadence
Open asks
0
waiting on a decision
Quiet seats
0
past cadence — quiet, not blank
Seat
Kind

On the go

One card per seat — the last thing it said, what it is waiting on, and what the systems say. A quiet seat reads quiet, never blank: past cadence is a state, not an absence.
live — derived from the feed or a connected system manual — a human input, inside its cadence stale — input past its cadence not instrumented — no source wired not computable — undefined, not zero
Waiting on Erik — open asks across seats0 open
What turns a grey dot green

Linear open per seat — one label group in RCTX (seat:product, seat:revenue, …) and the count is a query. Today issues carry repo labels (platform, app, board), not seat labels.

Merged this week — the GitHub API against the eight repos, keyed by the repo → seat map the collector already holds.

Seat page priorities — every seat page's Current priorities was last touched 2026-08-06. Phase 0 makes that block a render of the seat's newest status and ask updates, so it stops rotting.

Write an update

Three ways in, one record out. A session writes the file in the repo it is working in; a person can type it here; a seat can relay it. Same fields every way, so the collector never has to guess.
The updatewrites a file
Missing or unknown → withheld everywhere. A post is never published by default.
Decides the file's home. The collector maps repo → default seat when seat is omitted.
What landsrendered live from the form
relay-creative/updates/2026-09-24-slug.md

        
As the feed shows it
Writing rules — the estate's own, applied to a postlint at the collector
  • R1Outcome level, never mechanism. How Relay works internally stays in the vault. The collector refuses a post that names a mechanism-gated term; the disclosure gate is Erik's.
  • R2Nothing person-attached. No pay, equity, terms, or a figure tied to a name — that lives one tier up and is never quoted down. A post can say a role was filled; it cannot say what it costs.
  • R3Never "patent pending". Nothing is filed. Filing status is a headline-only vault post, never a claim in copy.
  • R4Vault material is headline only. A Legal & IP post carries its first sentence and a lock; the detail stays behind the vault gate, exactly as the board's What's new already handles vault entries.
  • R5No second copy of an open question. An ask links to where it is worked — a Linear issue, a board page, a pending-decisions file — and is resolved by a later post, not by editing this one.
  • R6Append-only. A wrong update gets a correcting update. The file is never rewritten after merge; the directors-log rule, applied down.
  • R7The first sentence stands alone. It is the headline on the board render, in the boot pack, and in a notification. If it needs the second sentence, rewrite it.

Sources & wiring

Where updates come from, where they render, and every boot surface that has to point here for another session to find it. Each row says whether the piece exists today or is proposed.
write · any repo
updates/YYYY-MM-DD-slug.md
  • Committed in the PR that did the work
  • Frontmatter: seat · kind · visibility · title · date · author · links
  • Also: the console form (P2) · a seat relaying it (P2) · a Linear status update (P2)
collect · relay-board
The board-sync pattern, in reverse
  • A workflow on relay-board reads every Relay repo's updates/ on a schedule and on dispatch
  • Validates frontmatter, refuses what fails — names the field
  • Opens a PR on relay-board; never pushes main. Same token, same posture as board-sync.yml
render · three surfaces
Board site · console · boot
  • board.relayctx.com/updates/ — team-visible posts in full; the rest counted (P0)
  • Console · Updates — this shell, per-row visibility, seat cards (P1)
  • Boot — the newest posts in the pack a session boots with, and in relay_context (P3)
Hook register — every surface a session reads, and the line it needsverified against each repo 2026-09-24
SurfaceWhat it is todayWhat changesStatus
relay-platform changelog/ → board platform-shipped.mdDated engineering entries rendered onto the board by board-sync.yml + render_board_changelog.py; opens a PR, never pushes mainThe pattern the collector generalises. The changelog stays engineering's record; a shipped update is the seat-level line above it, written when it matters to the companyexists
relay-board docs/UPDATES.mdThe hand-written cross-agent bulletin, newest first, CI-checked for staleness against the shipped recordBecomes a generated view of the feed, the way the home page's What's new is a view of the changelog. Its freshness check keeps running — now against the feedextend
relay-board hooks/whats_new.pyBuild hook rendering the newest changelog entries onto the home page; enforces the 🔒 headline-only rule for vault entriesA second marker, <!-- updates:5 -->, renders the newest team-visible updates the same way, same lock ruleextend
Every repo's CLAUDE.md — the close-the-loop sectionrelay-creative and relay-board already end with Pushed is not published — recommend the merge; relay-platform's is the engineering guideOne paragraph in each: if your work changes what a seat would tell the company, write an update — path, fields, rules — in the same PR. Eight repos, one line eachproposed
relay-board docs/operations/session-coordination.mdThe seven-rule convention every session reads before buildingRule 8: close the loop in the feed. Where a session learns the rule is where the rule has to beproposed
Hub orgs/relayctx/agent/relay.md § Close-out · NEXT.md · CONTEXT.mdThe brand-agent close-out: update streams, rebuild NEXT, refresh CONTEXT, add a LEDGER line, sync RelayOne more step in the close-out: post the update. CONTEXT's Right now block can be rendered from the newest status posts instead of rewritten by handproposed
Seat pages — relay-board docs/leadership/*.mdEight seats, each with a hand-written Current priorities block, all last touched 2026-08-06The block becomes a render of the seat's newest status and ask posts. The page stops rotting because nobody has to remember itextend
Seat series — relay-strategy · relay-finance · relay-revenue · relay-operations · relay-chief-of-staffEach operating seat is reclaimable as a Relay context by series namePath C: a seat session ends by relaying its update. Needs the write-gate posture decided (a peer must not execute what the initiator could not)proposed · P2
Boot pack — hub BOOT.md · leadership boot series · relay_contextA session boots from the repo and a Code; the pack points at files, never copies themThe pack gains one pointer: the feed is where you learn what moved since your last session, and where you leave what you moved. relay_context returns the newest posts at the caller's levelproposed · P3
Linear — team RCTX, project status updatesProjects carry status updates with a health signal; issues carry repo labels, no seat labelsIngest a project status update as a status post (P2); add a seat:* label group so the per-seat open count goes live (P3)proposed
Console — System notices · platform_alertsThe console already authors one record with several deliveries (banner · card · overlay · bell), and already carries a per-admin notification layerThe console form (P2) reuses the notices pattern; a new ask or risk at the viewer's level can raise a bell item the same way an alert doesexists · reuse
Guards — check_auth · check_tier1 · the RBAC catalogAdmin gate accepts admin · superadmin · platform_admin; tier-1 is the top two; the capability catalog exists, ships dark, enforcement offInterim: the section behind check_auth, board rows behind check_tier1, per endpoint. Target: platform.updates.read granted to a management group — the first console surface a non-operator holdsextend
Who sees what — visibility is on the post
ViewerteammanagementboardHow
Superadmin · platform_admin✓✓✓check_tier1, per endpoint
Admin (platform ops)✓✓withheld, countedcheck_auth today; narrows to the capability later
Management (group grant)✓✓withheld, countedplatform.updates.read via a platform group — needs the RBAC wiring flip
Team (board site reader)✓ in fullcountedcountedCloudflare Access on board.relayctx.com; the render never carries the rows

Hiding a section is not a gate. Every endpoint filters server-side and returns withheld_count; a missing classification defaults to withheld. Both rules are already the board dashboard's (edge cases 13–15), reused rather than re-decided.

Phases — each one useful on its own
P0 · gitThe place to update, this week. The updates/ convention and schema, the collector on relay-board, the board page, UPDATES.md as a view, the pointer in every CLAUDE.md and the coordination convention. No platform code.
P1 · consoleRead it in the console. A seat_updates table fed by the collector, the Feed and On-the-go screens, per-row visibility, tier-1 for board rows. Read-only — authoring stays in git.
P2 · writeThree ways in. The console form with the git mirror PR, the Relay write path from a seat, Linear status updates ingested. One schema, three doors.
P3 · systemsWhat's on the go, live. Seat labels in Linear, merges from GitHub, cadence-based quiet, the ask rail raising bell items, and the boot hook so a session starts from the feed.
Automation — what runs by itself at each levelautomation never raises visibility

EC, mid-round: “How does this become automated to a certain extent?” A ladder. Each rung removes one human act; a derived or drafted post lands at the level of its source or below, never above, and nothing automated ever produces a board row.

L0 · collectEverything after the commit. Validation, the board page, What’s new, UPDATES.md regenerated, seat-page priorities rebuilt, the PR opened — one workflow. A person writes the file and clicks merge (D7 asks whether generated-only PRs may auto-merge). P0
L1 · procedureThe write becomes procedural. The paragraph in every CLAUDE.md, rule 8 in the coordination convention, a close-out step in the hub; a PR check that comments once when a PR touching code or docs carries no update — a nudge, never a block. P0
L2 · derivePosts nobody writes. Every platform changelog/ entry becomes a shipped post (the titles are already board-grade); a Linear project status update becomes a status post with its health; a seat-tagged changelog line on the board or here becomes one too. The platform seat posts itself every time engineering ships. P2
L3 · draftA scheduled agent session drafts the week. It reads the feed, Linear and GitHub and drafts each seat’s weekly line; open asks and risks raise a bell item and ride the digest mail; a quiet seat gets one nudge. Drafts show a drafted chip, are approved with one click in the form, and expire unapproved. A meeting summary is a lead, never a post. P3
L4 · bootThe feed closes its own loop. The collector re-mints one series with the newest team posts and relay_context returns the newest at the caller’s level; a session claims it at boot and starts knowing what moved and where to leave what it moves. Nothing left for a person to remember. P3

Never automated, on purpose: the answer to an ask (a decision is Erik’s), anything above team (a person raises visibility on a post they wrote), and anything from tier 0.

Decisions this concept asks forErik
  • [ ]D1 · The name. Updates is used here because it is Erik's word and the bulletin already carries it. Pulse and Stream are product nouns and are out.
  • [ ]D2 · Git is the record. Files in the repos are canonical; the platform table is an index; console-typed posts are mirrored into git by PR. The alternative — the table canonical, git a mirror — inverts the estate's rule and is not recommended.
  • [ ]D3 · Who is management. The group grant is a list of people, held in the console. Until the RBAC flip, the interim gate is the admin role, which makes every operator a reader.
  • [ ]D4 · Withheld rows on the board site — counted only, or headline-only with a lock. Counted only is the fail-closed default drawn here; the lock convention is the What's new precedent.
  • [ ]D5 · Cadence per seat. Product weekly, Legal & IP monthly, everything else fortnightly is the default drawn here. Past cadence reads quiet on the dashboard and nowhere else.
  • [ ]D7 · Auto-merge the collector's PR when it changes generated files only and the lint passed — removes the last click at L0. Drawn as a human merge.
  • [ ]D6 · Path C's write gate. A seat session relaying its update stalls on a human approving relay_send unless the seat is pre-authorised — a posture to decide deliberately.
◉ RELAY CONSOLE · UPDATES · CONCEPT · 2026-09-24 NOT WIRED · SAMPLE POSTS ARE ILLUSTRATIVE · PREVIEW-AS CHANGES WHAT RENDERS