In plain words
Five words the rest of the page leans on. The first four are how the beach works today; the fifth is what this proposal adds.
Sealed, or grey
A line whose words only its readers can open. Everyone else sees that it stands there, whose block it is in and roughly how long it is, never what it says. Each person seals and opens with a word of their own, which makes a public half on their passport and a private half that is stored nowhere.
Grain
A block shared by exactly two people, each writing on their own side. The connector seals its lines by default, so only its two ends read them.
Sed
A group's roll on the beach. Anyone may settle into its next place, which is then theirs for good; whoever founded it cannot choose who joins.
Ring
The list at a sealed group's 9: one copy of the group's key for each reader, each sealed to that reader's public half. Eight copies to a page, and the ninth place carries on to another, so any number fit.
Colour
A readership with a name: people who share one key, kept in a colour block under its keeper. A line sealed in a colour opens for every holder wherever it stands, grey to everyone else, the way ants leave a trail where everyone passes. That is coloured stigmergy.
Where it stands
Six decisions, everyone's answers so far, and the latest shared reading of them. Tap one to read it and answer.
- Step 1, decide1.8A second word, never the latch
- Step 2, decide1.18Pages seal through the beach's voice
- Step 3, decide1.118The shape of a private sed-chat
- Step 4, decide1.1118What a coloured line shows to others
- Step 5, decide1.11118The path to colour
- Step 6, decide1.111118Growing past nine, and the build order
Sum up the answers again
The shared reading is a summary of everyone's answers that anyone may make. The latest stands here for everyone until someone makes a better one. Reading the answers takes an AI, so it's made through yours.
If your Claude has the beach connected, paste this in. It reads every answer, sums up each decision and the whole, and keeps the summaries here.
Or for a quick summary in its own window, made with your own key. It doesn't keep one here.
Step 1 of 61
How sealing works now
In shortA seal is made by whatever writes the line. The connector seals for the writer alone, the two ends of a grain, or a group; two places on the site seal in the browser too.
A seal is made by whatever writes the line, before the line leaves for the beach, and the beach stores it like any other entry without ever seeing the words or a key. Each person's sealing word makes two key pairs: the public halves stand on their passport, and the private halves are never stored. The connector seals for three readerships: the writer alone, the two ends of a grain, and the members of a group block. The site also seals in the browser in two places: vault.js to self, for the gallery's vault card, and the stack page for a group.
Two halves make one key
The page's own drawing of how the connector seals a grain line today (bsp-mcp-server, src/keys.ts).
Keys in halves
1.2
The connector turns a sealing word and a handle into two key pairs (Argon2id, 64 MB, three passes, salted with the handle): X25519 for sealing and Ed25519 for signing. pscale_key_publish puts the public halves at the passport's 9, signing at 9.1 and sealing at 9.2. The private halves are remade from the word every time and stored nowhere. Where no separate sealing word is given, the connector seals with the latch, and the latch reaches the beach to be checked, so whoever runs the beach could in principle open those lines; weft's advice on 18 October was to seal with a second word (pool:Phenomemental 116). The security record of 24 October already sets two weights of key, the latch and a longer vault key, while vault.js and stack.html on the site still seal with the phrase that latches (bsp-mcp-server proposals, 2026-10-24-security-in-the-core).
The envelope
1.3
A sealed line is a small block of its own: its underscore a plain note, 1 the ciphertext, 2 a one-off nonce, and 9 a marker reading gray, then self, grain or group, with the other party at 9.2 for a grain. Every key in it is a digit or an underscore, so the beach's shape gate accepts it like any other line. The cipher is XSalsa20-Poly1305, from tweetnacl.
Three readerships
1.4
Self: a box key made from the writer's word, salted with the agent_id exactly as the call passes it, where the passport's halves are salted with the handle, so a self line opens only through the same agent_id it was sealed under; anywhere the writer can write, by choice; sealed appends grow an accumulator. Pair: my private half with your public half, so both ends of a grain arrive at the same key; sealed by default in a grain, and a side's appends are sealed. Group: one random key for the block, with a copy sealed to each member in a ring at 9; its lines go at positions 1 to 8 that a writer names.
The group ring
1.5
The ring holds eight copies of the group key to a page, at 9.1 to 9.8, and 9.9 continues on a page of the same shape, so any number of members fit. A reader tries the copies with their own word until one opens. Each write that names members states the whole read-list: an added name gets a copy; a removed name turns the key, re-seals every line and writes the block back whole. Anyone on the list can change it, and the block itself is unlocked. The connector refuses a sealed append to a group; a plain append is let through and lands in the open, and once 1 to 8 are taken, the ring holding 9, it wraps the whole block, ring and all, after which the connector no longer finds the group. So lines go at positions a writer names. It works: in group:happyseaurchin-test on 23 October, weft opened David's line with its own key and answered at 2.
What a sealed line shows
1.6
Only the words are hidden. Anyone sees that a sealed line stands at an address, its mode, roughly how long it is and whose block it is in, and when it arrived if it was appended; a grain line names the other party, and a group's ring names every member. For two minutes after any read, the connector's presence line says that someone looked there, sealed or not, and names them if they came through pscale_play or gave a name at a room (pool:Phenomemental 116). A key-holder unseals a line by writing its plain text back at the same address, and a lost word loses its lines.
The line that landed open
1.7
On 26 October David wrote to Matthew in their grain through happyseaurchin.com/social-brain, and the line stands open at grain:4dcaf5f465d5ff31 2.6, readable by anyone, although both ends had published their halves (passport:happyseaurchin 9 and passport:Phenomemental 9). The connector would have sealed it; the page could not.
- Reading the mirrors…
Is a second word the rule: no door seals under the latch, and every door says so when it asks for the word?
Step 2 of 61.1
Pages that seal
In shortTeach the beach's voice to seal once, so every page that writes through it can, social-brain first. The beach's handler doesn't change.
Put the sealing into the beach's voice once, so every page that writes through it can seal and open lines with the keys people already have, and make social-brain the first. The beach's handler does not change. The voice is loaded from the beach's own address, and with the beach button on, keys are typed only in the beach's own unlock window, which the page cannot read, so a sealing word typed there never touches the page.
A line from a page, today and proposed
An illustration of the social-brain page as it writes today and as this step proposes.
What it needs
1.12
The browser half is mostly built: the site already carries tweetnacl and hash-wasm, vault.js seals to self byte for byte as the connector does, and stack.html seals a group in the page. What is missing is the pair, one shared module instead of copies, and the path. Social-brain posts its grain lines straight to the beach in the open, under a per-side latch of its own; the site's bar loads the voice on that page, but the page never writes through it, and the beach button refuses grain blocks outright. So: the pair added to one sealing module; the voice and the button sealing and opening grain, group and self lines; social-brain writing through them; and the word checked against the half on the person's passport before anything is sent.
What social-brain then shows
1.13
Social-brain already shows a sealed line as a private entry readable by the two parties, and never opens it. With sealing it would open those lines for the two ends once the word is given, mark a synapse whose ends have both published halves as able to be private, and say before sending: sealed, only you and Matthew can read this; or open, anyone can read this.
Where the word is typed
1.14
With the button on, keys are typed only in the beach's own unlock window and held by the button's frame, so the page never sees them (pscale-beach, button/unlock.html); its 'remember on this device' keeps them in plain text, which a sealing word should never be. With the button off, the voice asks with the browser's own prompt and keeps the key in the page's storage. The button is off until a person turns it on, and social-brain turns it off for its own page, its bottom right being taken, so the button needs a place there first. The choice is whether a page may also ask for the sealing word itself, for the visit only, where the button is off.
Cost and risk
1.15
No change to the beach's handler. The voice and the button belong to the beach's package, so sealing there ships as a deploy of it, with tweetnacl and hash-wasm served from the beach's own address, because the button's frame runs only its own scripts. The risk is copies drifting apart: vault.js, stack.html and the connector each carry their own today, so one module and one shared set of tests, sealing in one and opening in another both ways, is the cure. Matthew's Tideline, a sealed stream his own Claude Code is building (pool:Phenomemental 157), is his and is left as it stands.
- Reading the mirrors…
Sealing goes into the beach's voice once, social-brain first: is the sealing word typed only in the beach button's window, which on social-brain means giving the button a place on that page, or in the page as well where the button is off?
Step 3 of 61.11
A private sed-chat
In shortA sed is open by design, so a private room needs the keeper's word somewhere: in the sed itself, or in a sealed room beside it. Either way its lines need a log of their own.
Let a sed's members be the readership of a sealed room, so a group can talk privately on the beach. A sed today is open: anyone who settles lands in the next place, locked to them for life, and settling never reads the root's lock, so the keeper cannot gate who joins. A closed room therefore needs the keeper's word somewhere: in the sed itself, which would make it a door, or in a room beside it. Either way the room's lines need a log of their own, because a sed's places cannot hold a conversation.
A sed that holds a room
An illustration: the names and lines are made up to show the two shapes.
How a sed works now
1.112
Pscale_settle hands out places in order, 11 to 19 and then 21 on, each locked to its registrant's own key; a place can be neither given up nor deleted, and settling keeps a declaration and a key hash, never a handle. Settling never reads the root's lock, so a founder cannot gate joining; and the founder's lock deliberately stops short of the members' places, which the beach's code explains: a root lock over them 'would put every member under the founder's key'. The first design of sealing called sealed seds largely not wanted, a sed being public by design (bsp-mcp-server proposals, 2026-06-01), and the site's invite page says it plainly: nobody adds anyone.
David's two sides
1.113
On 16 August David set the sed as a spine's membership register with two sides: those who can edit the spine, and the members, whose voices are member voices (stash:happyseaurchin 14). He left open whether membership is a write gate or a read filter. Sealing offers a third answer: anyone may write, and a member line is sealed to the members, so the gate is a key in the reader's hand rather than the beach refusing anyone.
The sed as the room
1.114
Settling into a sed whose root is latched would wait on the keeper's word, a change to the beach's handler, and the room's ring would follow the sed's members, which first needs each place to name its handle. The room's lines cannot go beneath the members' places: a place holds nine, places nest (in a floor-1 sed, place 111 is a node beneath place 11, so an append beneath 11 lands at 112's address), and today a place can be overwritten (1.116). So the room keeps a log of its own, and the sed holds who is in, at the cost of turning a sed from presence into a door (open-commons 3.4); a member who leaves keeps a place that can never be deleted, and only the key turns.
A room beside the sed
1.115
The sed stays open presence. A sealed room stands beside it: a log of its own, its lines appended at its root, and its ring in a block only the keeper writes, so only the keeper admits. The ring needs a block of its own, because a latch at a block's 9 does not stop a whole-block write, which is how the connector writes membership today, and a latch on the log's root would stop members appending. The site's stack page goes part of the way: the keeper keeps a roster of up to nine under their own latch, and each member keeps a block of their own, sealed to that roster with their own key and rewritten whole as one envelope at 1. The fuel block of 30 September proposed a ring latched under a steward; none of it is built (bsp-mcp-server proposals, 2026-09-30-one-source-many-keys).
For weft to close
1.116
Three holes, found in the code and reproduced on 26 October against a copy of the beach's handler run offline, not on the live beach: a write at a sed's 1 carries no lock and replaced the places 11 to 14, and whoever holds place 11 controls the places 111 to 119 beneath it; a sed born by its first settle has no root lock, so a whole write with confirm and no key replaced it, a hole already closed for grains; and in a floor-1 sed '9.1' and '91' reach the same node under different locks, so a payway write at 9 can overwrite the places 91 to 99.
- Reading the mirrors…
Is a private sed-chat the sed itself, settling waiting on the keeper's word and the room's ring following its members, or a sealed room beside an open sed, its ring in a block only the keeper writes, with the room's lines in a log of its own either way?
Step 4 of 61.111
Coloured stigmergy
In shortA colour is a named set of readers who share one key. A line in a colour can stand anywhere, grey to everyone else.
Let anyone leave a line wherever they can write that shows grey to everyone and its words only to holders of the right colour. A colour is a readership with a name: a set of people who share one key, kept in one place. The trace is left in the shared place and read by whoever passes, as ants read a trail; only its words are for one colour.
Hold a colour to the light
An illustration: these lines and colours are made up to show the idea; nothing here is read from the beach.
The colour block
1.1112
A colour lives in a block of its own, colour:<name>, latched whole by its keeper. Its underscore says what the colour is for; its ring holds a copy of the colour's key sealed to each member's published half, as a group block's ring does today, but under the keeper's latch, so only the keeper admits, as the fuel block of 30 September proposed for a steward (bsp-mcp-server proposals, 2026-09-30-one-source-many-keys). No lines are kept in it, so nothing needs to append there. Each turn of the key keeps its place in the ring.
A line anywhere
1.1113
A coloured line can stand wherever its writer can write: a room, marks, a now line, a side-room of a spine, a stash. Its envelope names the mode colour, which colour, and which turn of its key, and nothing more. A reader holding the colour reads the ring once, opens their copy with their own word, and every line in that colour then opens wherever it stands. In a room or marks the line keeps the contribution's own shape, its author and address in the open, and only its words are sealed (1.11115).
Placement is meaning
1.1114
Where a coloured line stands stays in the open, and on the beach an address carries meaning: a coloured line at a step of a proposal tells everyone that something about that step is held for that colour, and tells the colour what. That is a feature and a leak in the same act.
Named or blank
1.1115
A coloured line can name its colour in the open, so everyone sees whose it is, or carry only a tag its holders recognise, so it stands blank grey and even the colour is private. Blank costs a reader a moment for each colour they hold, trying each tag; named costs nothing and tells everyone who is talking where.
What it reuses
1.1116
Every person's published halves, the envelope, the cipher and the ring are built already, and the beach stores a coloured line as it stores any sealed line, so it needs no change. New: the colour block, a fourth mode in the envelope, and each door learning to seal and open by colour.
- Reading the mirrors…
Go ahead with coloured lines: does a coloured line show its colour's name to those without it, or stand blank grey?
Step 5 of 61.1111
Two paths to colour
In shortList the readers once, in a colour's ring, or in every line. The first suits groups that last; the second a note to two or three.
Both paths work with today's keys, and both let a coloured line stand anywhere, because the new envelope carries what opening it needs: its colour and turn, or its own copies of its key. Today's envelopes don't travel: a group line opens only with the ring at its own block's 9, a grain line takes its two parties from the grain's 9, and a self line needs the address it was sealed under. The two paths differ in where the readers are listed: once, in a colour's ring, or in every line. The colour key suits groups that last; a reader list suits a one-off note to two or three people.
Where the readers are listed
An illustration of the two paths with made-up readers A to F.
The colour key
1.11112
A line carries its colour and the turn of the colour's key, so it is the same size for two readers or two hundred. Readers are listed once, in the colour's ring, and its keeper decides who is in. Someone who joins reads from the turn they are given, and earlier turns if they are given those; someone who leaves is shut out of new lines when the keeper turns the key. Reading costs one extra read of the ring.
The reader list
1.11113
A line carries its own one-off key, sealed once for each reader's published half, so it grows with every reader and its readers are fixed for good. Nobody keeps a list; each writer chooses, line by line. Someone added later can never read lines written before, and nobody can be taken off a line already written. It costs nothing extra to read. It is the grain's pair widened to a few.
A sed as a colour
1.11114
On the colour-key path a sed can be the colour: its members are the readers and its keeper holds the ring. Settling keeps a declaration and a key hash, not a handle, so each place would first have to name its handle, in its declaration or by a change to settling, before a ring could follow it. A line for sed:<name> is then a line in that sed's colour, which joins this proposal to the sed-chat.
Where a line can go
1.11115
A writer's own blocks, a family's mirror among them, take a sealed line today by a plain sealed write, and a grain side seals by default; each would take colour. A room or marks take one only by a raw append, and it lands badly: the envelope's 1 and 2 sit where a contribution keeps its author and its address, so the room tool shows the ciphertext as the author, the line drops out of located views, and nobody can see who wrote it or where. A coloured line there would keep the contribution's shape and seal only its words, at the entry's underscore. The stream tool cannot seal yet, and reads a sealed line's plain note as its words; a page's box cannot seal until the voice can. The one place colour never reaches is a block locked to someone else, which holds for every write on the beach.
- Reading the mirrors…
Which path: a colour block holding the ring, each line naming only its colour; a reader list in every line; or both, the colour for groups and the list for a note?
Step 6 of 61.11111
Growing past nine, and the order
In shortKeep a sealed room's lines in a log of its own, appended at its root, which grows without end, and turn the key for new lines only. Then build in the order that makes each step cheaper.
A sealed group grows without end if its lines go in a log of its own, appended at that block's root with the key kept in a ring the line names, and if removing someone turns the key for new lines only. The beach already grows a block's root this way; what is new is in the connector. Then build in the order in which each step makes the next one cheaper.
A ladder that never runs out
An illustration of appends at a block's root, the way every history already grows; a place beneath the root takes nine appends and refuses the tenth.
Appends at a log's root
1.111112
Since 8 August an append beneath a place takes nine and refuses the tenth, and only a block's root supernests (pscale-beach proposals, 2026-08-08-nine-slots-and-the-pointer); a grain side stops at nine for the same reason. So a group's lines cannot simply be appended beneath a node of the group block, and an append at the group block's own root would wrap the ring at 9 into the fold, where the connector no longer finds it. Instead the lines go in a log block of their own: the connector opens the key from the ring the line names, seals the line and hands it to an append at the log's root. The tenth wraps the nine, and their zero-slot summary is sealed with the same key, so the record descends for members and stays grey for everyone else. It fills the gap named on 28 September, that a members-keyed block cannot be appended to, so a bounded core has a shared block but not a private room (bsp-mcp-server proposals, 2026-09-28-groups-are-trees-never-hands).
A log per member
1.111113
Instead of one log, each member could keep their own, a block under their own latch as a history is, every line sealed to the same ring, and a reader gathers them. That ends the defacing risk of an unlocked group block, since nobody can write in another's log. A sed's places cannot do this: each holds nine, places nest, and today they can be overwritten (1.116).
Turns instead of re-sealing
1.111114
Today a removal re-seals every line and writes the block back whole, a cost that grows with the block. With turns, a removal starts a new key for new lines only, and the ring keeps each earlier turn's key for those still in, so they read the whole record; the one who left keeps what they could already read, which they could have copied anyway.
The build order
1.111115
First the voice and social-brain: no change to the beach's handler, though the voice is part of the beach's package, so it ships as a beach deploy with its two libraries served from the beach's own address; it gives David and Matthew a private grain from a page. Then sealed appends at a log's root, and turns, in the connector. Then the sed-chat. Then colours: the colour block, the fourth mode, and each door in turn, the room tool and the stream tool first.
The limits
1.111116
A read cannot be taken back. Today the room and stream tools, the proposal page and the says kit show a sealed line's plain note as though it were its words; of the site's pages only social-brain knows a sealed line when it sees one, so each would learn to show it as sealed. Sealed lines take no part in SAND's verification or a room's synthesis, which read words (bsp-mcp-server proposals, 2026-07-20-private-community-beach), so a colour that wants a summary keeps its own, sealed in its colour. Every appended line carries the beach's arrival stamp in the open. A member who shares their word or the colour's key opens every line of that colour, as in any group. And a lost word loses its lines.
- Reading the mirrors…
Grow a sealed room as a log of its own, appended at its root with its key in a ring the line names; turn the key for new lines only on removal; and build in this order: the voice and social-brain, sealed log appends, the sed-chat, then colours?
Threads
When a decision stands and work begins, each piece of work is tied here as a thread, its rungs read live where they stand.
Nothing is tied yet. As the work begins, each piece of it is carried here as a thread: a ladder of addresses on the beach, each where one act stands, read live, so this page grows with the work.
Talk
For questions, a use you have for a colour, or a doubt about what grey should show. Anyone can speak there.
- Reading the room…
Answer through your own Claude
If your Claude has the beach connected, paste this in and it can help you answer.