• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Freegle / Iznik / 21151
71%

Build:
DEFAULT BRANCH: master
Ran 14 Jun 2026 06:21AM UTC
Jobs 4
Files 1269
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

14 Jun 2026 05:54AM UTC coverage: 71.167% (+0.1%) from 71.069%
21151

push

circleci

web-flow
fix(mail): harden render-failure retry — dead-letter alert + faithful digest rebuild (#593)

* feat(mail): durable retry for render failures via RetryableMailable + SpoolMail

Emails are rendered inline before anything durable is written to the spool,
so a render/build failure (e.g. a template referencing an undefined key during
a deploy window) threw before the message existed, was caught by the caller,
and the cursor advanced — silently dropping the recipient. ~1,100 immediate
digests were lost this way over one ~8-minute deploy window.

Add a generic, opt-in mechanism:
- RetryableMailable interface: mailDescriptor() (IDs only) +
  rebuildFromDescriptor() (re-fetch from DB; null cancels).
- EmailSpoolerService::spool() gains an $autoRetry flag: on a non-permanent
  build/render failure for a RetryableMailable it dispatches a SpoolMail job
  instead of rethrowing (the drop), then returns ''.
- SpoolMail (ShouldQueue): rebuilds a fresh mailable from current DB state and
  re-spools with autoRetry:false (no recursion); retryUntil(+24h) + capped
  backoff, then failed_jobs. A fix deployed within 24h drains automatically.
- Onboard UnifiedDigest (the incident) and ChatNotification.
- monitor:email-health alerts 24/7 on parked SpoolMail jobs; mail:retry-failed
  re-drives them after a fix lands.

Native Laravel queue retry is reused (queue:work --tries already runs in
supervisor). Only failures touch the queue; the high-volume inline render/spool
path is unchanged, so digest throughput is unaffected.

All 23 new tests pass (EmailSpoolerRetry, SpoolMail, UnifiedDigestRetry,
ChatNotificationRetry, EmailHealthDeadLetter, RetryFailedMailCommand).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(digest): round-trip daily "came and went" section through render-failure retry

UnifiedDigest's constructor gained a 5th arg, $completedPosts (the daily
Taken/Received "came and went" section, populated by the live send path),
after this branch's retry d... (continued)

10803 of 14375 branches covered (75.15%)

Branch coverage included in aggregate %.

45 of 45 new or added lines in 3 files covered. (100.0%)

634 existing lines in 14 files now uncovered.

117683 of 166166 relevant lines covered (70.82%)

35.78 hits per line

Coverage Regressions

Lines Coverage ∆ File
183
90.81
0.07% iznik-server-go/user/user.go
179
51.35
1.18% iznik-batch/app/Services/PushNotificationService.php
51
87.69
-0.26% iznik-nuxt3/components/MessageExpanded.vue
47
60.17
0.07% iznik-nuxt3/stores/auth.js
43
82.66
0.03% iznik-batch/app/Services/PurgeService.php
43
0.28
-0.0% iznik-nuxt3/components/LayoutCommon.vue
20
95.32
0.03% iznik-nuxt3/composables/useReplyStateMachine.js
20
60.68
0.91% iznik-nuxt3/stores/mobile.js
14
0.9
-0.02% iznik-nuxt3/pages/settings/index.vue
13
90.32
15.32% iznik-nuxt3/composables/useMap.js
10
0.0
0.0% iznik-nuxt3/pages/explore/[[id]].vue
9
71.07
1.21% iznik-nuxt3/components/ChatButton.vue
1
99.56
-0.44% iznik-nuxt3/stores/misc.js
1
97.67
-2.33% iznik-server-go/abtest/abtest.go
Jobs
ID Job ID Ran Files Coverage
21151 go - 21151 14 Jun 2026 06:21AM UTC 128
83.43
CircleCI Job 21151
21151 playwright - 21151 14 Jun 2026 06:22AM UTC 70
22.96
CircleCI Job 21151
21151 vitest - 21151 14 Jun 2026 06:22AM UTC 695
69.13
CircleCI Job 21151
21151 laravel - 21151 14 Jun 2026 06:22AM UTC 445
67.57
CircleCI Job 21151
Source Files on build 21151
  • Tree
  • List 1269
  • Changed 21
  • Source Changed 0
  • Coverage Changed 21
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • CircleCI Build #21151
  • 89cdcb07 on github
  • Prev Build on master (#21094)
  • Next Build on master (#21191)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc