Souspli

Souspli / Docs / Design notes

Design note — 2026-07-23. A decision record, written when this was built and kept as written. It uses the code's names (thing, shell, cage — see the glossary) and may describe things that have since changed. Current documentation: bridge.

Build brief — authoring + ship-to-testers (phase 7)

Why

The shell can receive, verify, and view things, but not make one — so an early tester has nothing to test the concept with. This phase closes the loop: pick an HTML file → sign it with your identity → get a shareable .thing file. Sharing is file handoff (the "flyer" model): a .thing travels over any channel — chat, email, USB — and the receive side already admits it. No server, no network dependency, fully decentralized, least that can flake in a first test. Live P2P (webtorrent/magnet) is the immediate fast-follow, not a blocker.

Because real people will now hold real keys, the software-key safety warning (promised for this stage) lands here too.

The principle

Authoring is the mirror of admission, and it lives in format. admitBundle parses + verifies a bundle; buildBundle builds + signs one. A bundle writer (packBundle, the tar counterpart to parseBundle) belongs in the format package because anyone writing a thing — a bot, a CLI, a rival shell — needs it, exactly as they need the reader. The shell just supplies its keyring Signer; format never sees key bytes (the §2.2 injected-interface rule, unchanged).

A thing you author is a thing like any other. After signing, the shell runs its own new .thing back through admission and into the library — so you see your creation in your own feed, and it is seeded (re-servable by bundle:<hash>, which the live-transport fast-follow will use). No special "my drafts" trust path; the gate is the same for everyone.

Scope

Out of scope (later / next phase)

Test battery