Public: anyone can read this; the crew can change it.
A first visit explains how this group decides, instead of an empty page #30
Check · Review · Land · Live done — Landed and live in production.
An empty `/` said "No proposals yet." and nothing more; it now carries a short card — what a proposal is, that anyone signed in may open one, that the group's members vote, that it is decided the moment its quorum rule is met, and that a guest reads everything public — names the three rules from `RULES`, and links `/about` instead of repeating the long version. `/about` (new `src/pages/about.ts`,…
shipped production is serving it deploy 2adbe7d
Sign in to join this conversation.
An empty
/said "No proposals yet." and nothing more; it now carries a short card — what a proposal is, that anyone signed in may open one, that the group's members vote, that it is decided the moment its quorum rule is met, and that a guest reads everything public — names the three rules fromRULES, and links/aboutinstead of repeating the long version./about(newsrc/pages/about.ts, one route, linked once from the layout's footer) is that long version: the three rules and the one-line rule text printed fromsrc/quorum.ts, two plain lists of what works today and what does not yet (voting, deliberation, a roster, bindings), and the four doors — the page,/api/proposals,POST /mcpand the terminal in the exact words ofFORGE_APP_SSHor that it is off. A signed-in person sees what they can do now; an admin sees one line more, pointing at the roster that is not built yet.Only the prose is hand-written — every fact is read from the module that owns it, and
rulesListtakes the list it prints, so a test hands it a rule of its own invention and finds that rule on the page. The empty-page test runs its own server so "empty" is the truth about that database and not an accident of test order;/aboutis checked for a guest, a user and an admin, for the security floor, and forHEADanswering likeGET.bun testis green (63 pass), and/aboutrenders in well under a millisecond.What I chose not to do: no link in the header nav — at 360px the nav row already carries the environment pill, the commit and the sign-in button, so the one link lives in the footer. The admin's roster line names the roster and does not link
/group, because that page does not exist yet; whoever lands #27/#28 moves "A roster" from the Not yet list into Working today and makes that line a link.To try it: the preview's
/with no proposals, then/aboutas a guest, signed in, and as an admin; propose anything and the empty card gives way to the list over/eventswithout a reload.🤖 Generated with Claude Code
Closes #20