A coworker agent fired the same outreach template 4x in ~97s to a prospect (2026-06-29 incident). macsync's outbox only dedupes *identical* bodies per recipient per UTC day; it does not stop a rapid burst of *different* bodies and gives the caller no clear signal. Add a pre-enqueue cooldown guard to /:handle/send: a second send to the same handle inside PROSPECT_SEND_COOLDOWN_MS (default 60s) is refused with a structured 409 duplicate_send. A human can override with force=true (cockpit 'send again'); agents omit it and stay guarded. - send-guard.ts: pure, total evaluateSendGuard() + resolveSendCooldownMs() - __tests__/send-guard.test.ts: 10 bun:test cases (incident shape covered) - prospect-cockpit.ts: read last_outbound_contact_at, evaluate, 409 on hold Pure logic verified (9/9); tsc clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| ad-watch | ||
| admin | ||
| adult-therapy-tours | ||
| age-verification | ||
| api | ||
| broadcast | ||
| client-intel | ||
| clients/frontend-public | ||
| cocotte-tech | ||
| cocotte-web | ||
| comm-newsletter | ||
| db-monitor | ||
| demimonde | ||
| edge-purge | ||
| event-scrapers | ||
| futa-waifu-tour | ||
| image-protection | ||
| landing | ||
| merchant/backend-api | ||
| messages | ||
| my | ||
| my-socials | ||
| platform-seed | ||
| provider-website | ||
| quinn-ai | ||
| quinn-messenger/mcp | ||
| sansonnet-web | ||
| score-refresh | ||
| sso | ||
| user-data | ||
| vip | ||
| waitlist | ||