From 9776dc1808282d14e2f1be397738ef0e47ecc9e0 Mon Sep 17 00:00:00 2001 From: Bendik Aagaard Lynghaug Date: Wed, 30 Sep 2026 08:38:44 +0200 Subject: [PATCH] plan: the guidance names records that answer records, members-only needs and a group contact Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt --- src/plan.rs | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/plan.rs b/src/plan.rs index 4cb9c21..b751bb1 100644 --- a/src/plan.rs +++ b/src/plan.rs @@ -149,9 +149,25 @@ rest. Each is one line in the plan, and the builder does the wiring: a note. `moves_by: { : [submitter] }` gives them a move of their own through their link: confirm, withdraw, say it is solved. - **Let a decision do the work.** `grants` makes an approval into - membership; `deadlines` lets a stage end on its own (a notice that - expires, a request nobody took up); `invites_by` lets a desk bring a - person in without anyone touching an admin tool. + membership: the person gets an account and a place in the group the + moment the case gets there; `deadlines` lets a stage end on its own + (a notice that expires, a request nobody took up); `invites_by` lets + a desk bring a person in without anyone touching an admin tool. +- **Let one record answer another.** A need `about` another need is + one answer per record of it, from that record's own row on the + public list: a neighbour saying "I can lend you that" to a notice, a + bid to a request. `mails: { open: owner }` sends the answer straight + to whoever posted the record, and the site keeps no queue - the + poster's inbox is the queue. The site never becomes a go-between. +- **Keep some things for members.** A need with `door` and `enters_as` + is offered to everyone on the door and taken on the group's page + behind sign-in, with name and address filled from the account: a + seat on a committee for members, a discount for customers. The + group is one a decision `grants`, so nobody has to be waved in. +- **Answer for the pages as a group.** `contact: { name, email, group }` + makes the contact a group's inbox rather than a person: no account + is made for it, and every member of the group may suggest changes + to the pages from the page itself. - **Make the choices real.** `groups` with labels, and a select with `options_from: groups`, so a form offers exactly the committees or teams that exist; `multiple: true` where a person can pick several. @@ -167,8 +183,9 @@ Rules: - Groups are the roles the intake names, as snake_case identifiers. - The front door opens with `does` (at most two features, one role each) and `shows`, then holds at most seven offers: doors plus needs - with no door. A door with no need behind it, or a door on a need with - `enters_as`, is refused. A role `does` speaks for must have a move + with no door. A door with no need behind it is refused; a door on a + need with `enters_as` is the way to the members' page. A role `does` + speaks for must have a move of its own after sending (`moves_by` with `submitter`) or a public view, or it is a spectator. - Every need whose form collects an email should tell the person on