Keep Whatsup a small public-room chat that proves shared app actions,
durable records, browser/CLI projections, and ordinary interlace against
a persistent laced endpoint.
Lace.openBestEffort('whatsup').laced owns persistent endpoint storage and
WebSocket/ILTP.endpoint prepare emits a policy bound to one exact
community root and steward, a runtime config, a laced.conf,
and an origin-bound browser setup link.| Area | CLI/browser behavior |
|---|---|
| Setup | create locally; join from an invite; inspect status |
| Identity/profile | create, import/export, show, update profile |
| Community | root, steward choice, invite export |
| Rooms | create, update, archive, list/show |
| Membership | writer grant/revoke/list |
| Messages | send, reply, edit, retract, list/show, threads |
| Reactions/files | add/remove/list reactions; add/list/export attachments |
| Local activity | read markers and notification dismissals |
| Connections | peer add/list/remove; bounded/open sync |
| Endpoint deployment | static policy/runtime/laced artifacts and browser setup URL |
| Discovery | community-steward-marked waypoint endorsements |
Rooms and supported records are public. Broad client exposure is not a private room policy. Do not introduce private records until the client and endpoint operands are narrowed and covered by a boundary-crossing test.
The endpoint policy intentionally retains otherwise valid writer history after a later revocation; client projection applies latest grant/revocation state. This is disclosure, not deletion.
deno task test
deno task typecheck
deno task build:gui
Run these separately; each command must remain under the repository’s 60-second limit.