diff options
Diffstat (limited to 'CLAUDE.md')
| -rw-r--r-- | CLAUDE.md | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -122,7 +122,7 @@ that produced it. | Looking for | Read | |---|---| | What a label means (`C1`, `H3`, `NS6`, `T3`, `C5b`, `W2`, `E9`, `F1`, `AV4`, …) | `docs/MESHBAY_DESIGN.md` §13 | -| What one member can cost the others (`AV1`–`AV8`) | §13.5b — the newest category, and the one the first three reviews had no question for | +| What one member can cost the others (`AV1`–`AV12`) | §13.5b — the newest category, and the one the first three reviews had no question for | | Trust model, and what the project may and may not claim | §2 | | Identity, devices, admission, recovery, the keypair bundle | §3 | | Cryptography, key hierarchy, the group and chat envelopes | §4 | @@ -148,6 +148,15 @@ These are about working on the tree rather than about the design: interface, for the web and the app alike; `packages/meshbay-client/scripts/ sync-ui.js` copies it (`npm run sync-ui`) and CI fails if the copy drifts — **never edit `packages/meshbay-client/ui/` by hand** +- **A blocking call in an async handler is the whole instance's problem.** + `mail._send` is `smtplib` with a ten-second timeout, and it was called + straight from four handlers: while the MTA thought about it, nothing else was + served, no node socket read, no offer relayed. It has no symptom a test + catches — everything works, slowly, for everyone, whenever the mail server is + having a bad day. `mail.send_off_loop` is the door, and + `test_no_mail_is_sent_from_the_event_loop` reads the source for direct calls, + because there is nothing else to read + - **Before adding an endpoint or a message, ask who pays.** A participant supplies input; if anyone other than the sender bears the cost, there is a ceiling to write, and it goes on **every** path that writes the state — the |