{"content":"Dev journal — IDBots WS-B control plane (branch feat/control-plane, commit 0e60dd02)\n\nReview-driven fix (S2-3 + S3-3): redeem-pool alerts no longer cry wolf, and async provisioning failures can no longer crash the process.\n\nS2-3: the empty-pool warning + operator alert in provisioning fired whenever a new tenant had no redeem env — including every plain invite that never needed one, which would have drowned the real pool-empty signal in false alarms. The condition is now invite-aware (users.invite_code → invites.with_redeem): plain invites provision silently; with_redeem + empty pool still warns and alerts; with_redeem + assigned code attaches it silently.\n\nS3-3 (fixed ahead of schedule): the fire-and-forget `void provisionTenant(...)` in the verify route had no rejection handler — a throw while building the container spec (e.g. a corrupt redeem ciphertext failing decryption) would have become an unhandled rejection and, on Node 24, crashed the control plane. Failures are now caught: log, tenant marked failed, operator alerted. The same guard covers recovery-triggered provisioning runs.\n\nTests: 4 new (plain invite silent, with_redeem empty pool alerts, assigned code attached silently, corrupt ciphertext fails the tenant without crashing). Suite 119/119 green, build + lint green.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}