diff options
Diffstat (limited to 'CLAUDE.md')
| -rw-r--r-- | CLAUDE.md | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -209,7 +209,15 @@ These are about working on the tree rather than about the design: 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 + because there is nothing else to read. **Argon2 is the same, with a trap + under it**: one derivation is 256 MB and ~0.25–0.5 s, so it goes through + `auth.hash_password_off_loop` / `verify_password_off_loop` — but **two + concurrent `lanes=4` derivations deadlock inside OpenSSL** and never return, + at no CPU (cryptography 50.0.x, OpenSSL 4.0.x, reproduced locally and on + meshbay.org). Inline on the loop they could never overlap, which hid it. The + executor has **exactly one worker**, not a semaphore around `to_thread`: a + cancelled request releases a permit while its thread is still deriving. + `test_argon2_off_loop.py` holds both halves - **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 |