Status
Stability
Section titled “Stability”BirdDog is on version 0.0.0. Until 1.0, a minor release can change the public API, so pin the version you test against.
Limits and errors
Section titled “Limits and errors”- Retry schedule. A failed delivery retries after 2 seconds, doubling each time, capped at 5 minutes. After 20 attempts the reply is exhausted. Its row stays in the outbox, and BirdDog stops posting it and stops waking for it.
- At-least-once. If the recipient accepts a reply but recording the receipt fails, the retry uses the same mail key. Recipients must admit a repeated key idempotently.
- Malformed rows. A row that does not parse is deleted during a drain. A malformed row met during fan-out fails that fan-out.
- Fan-out writes first. Every reply is persisted before the wake is
scheduled. If
scheduleWakefails,fanOutrejects but the replies are already in the outbox, so replaying the settlement is safe. - Invalid input.
agentJobanddecodeAgentJobthrow a schema error on input that does not match.fanOutrejects withBirdDogError("invalid agent job payload")for a job whose payload is not BirdDog’s. - Host failures. The Promise mail room wraps a failing port in a
BirdDogErrorand keeps your original error as itscause. The messages areoutbox read failed,outbox write failed,outbox delete failed,mail transport failedandwake scheduling failed. Apostthat throws during a drain is logged and retried, not rethrown.
Contribute and license
Section titled “Contribute and license”BirdDog is MIT licensed. See LICENSE.