Public: anyone can read this; the crew can change it.
A group with no members can decide nothing, and the app says so before somebody proposes into silence #54
Sign in to join this conversation.
Public: anyone can read this; the crew can change it.
tallymeasures amajorityagainst the roster, so with an empty roster every proposal needs one vote from a group of nobody and can never be decided. The roster starts empty — production's is empty right now — and nothing anywhere says it. The first person to use this app opens a proposal, waits, and learns from nothing at all that no vote could ever have landed.What done looks like
rosterState(db)beside the other roster actions returning how many members there are and whether the group can decide anything — not four pages each counting rows./says it above the list, in one sentence, whenever the roster is empty: the group has no members yet, so nothing can be decided until an admin adds some, with a link to/group. It is a plain line in the page's own voice, not a red alarm./p/:idon an open proposal with an empty roster says it where the tally would be, instead of showing a threshold that cannot be reached./api/healthreportsmembersalongsideschemaVersion, so an operator can see a group that cannot decide without opening a page. It is a count, never a list of names.healthand the terminal's header carry it too, in the same words — an agent that proposes into an empty group should be told the same thing a person is.named:rule is the exception and must not be mis-warned: it is measured against its own names, so a proposal undernamed:alice,bob:2can decide with an empty roster. The warning does not appear on that proposal's page, and there is a test for exactly that./, the propose form and/p/:idwith no members and is absent with one; thenamed:exception;/api/healthcarries the count; the admin, user and guest each see their own version.bun testis green.Files I expect to change:
src/actions.ts,src/actions.test.ts,src/pages/home.ts,src/pages/proposal.ts,src/pages/group.ts,src/routes.ts,src/mcp.ts,src/tty.ts,src/server.test.ts.Risks: this is a sentence in five places and the failure is five slightly different sentences — write it once, export it, and let every door print the same string. Do not refuse a proposal into an empty roster: proposing before the group exists is reasonable, and a refusal here would be the app deciding something it has no business deciding. If #28 has not landed, the link to
/groupis a link to a page that does not exist — depend on it rather than inventing a placeholder page.Fit: Hearth — the app saying the one thing a newcomer cannot deduce. A person assigns; I do not.