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

Freegle / Iznik / 24186
72%

Build:
DEFAULT BRANCH: master
Ran 01 Jul 2026 09:18AM UTC
Jobs 3
Files 1354
Run time 3min
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

01 Jul 2026 09:01AM UTC coverage: 71.875% (+0.3%) from 71.607%
24186

push

circleci

invalid-email-address
feat(rippling): ripple:backfill command + --recompute upgrade with co-located reach reuse

Seed rippling reach for the ~34k live posts that predate go-live (their
messages_spatial.arrival is before freegle.ripple.enabled_at, so initialiseNew
never picked them up and they would never ripple).

ripple:backfill (new command): drains the anti-join (messages_spatial with no
rippling_reach row) by reusing ExpandService::initialiseNew with the arrival
cutoff lifted, so a backfilled row is identical to a natively-initialised one.
Progress bar, --dry-run, --limit, idempotent/resumable, one row per write
(Galera-safe). Shardable (--shards N --shard i on msgid % N), each shard on its
OWN Cache lock (never ripple:expand:run) so parallel instances drain disjoint
slices; total routing load ~= shards x compute_concurrency.

Because seeding computes reach inline on the routing server (dense isochrones
14-29s), a full drain is many hours. So this supports a TWO-PHASE backfill:
  1. a cheap geometry pass seeds every post a placeholder ("DPA") reach = its
     group area (status='stopped', schedule NULL) so nothing is reply-dark now;
  2. --recompute upgrades those placeholders to real routed reach IN PLACE via
     upsert (INSERT ... ON DUPLICATE KEY UPDATE) — the post is never momentarily
     without a reach row. Recompute selects the placeholders (status='stopped'
     AND schedule NULL) instead of the anti-join, skips the arrival cutoff and
     the reply-saturation stop (so the drain terminates), and retires genuinely
     off-graph placeholders to 'done' (keeping their DPA polygon) so the loop
     cannot re-select them forever.

Reach reuse (freegle.ripple.reuse_reach, default on): reach is a deterministic
function of the blurred origin (4dp) + global ripple config, so a post at the
same blurred origin as an already-computed reach copies its schedule instead of
re-routing. Covers "same user posting again from home" and any co-located posts;
removes the bulk of r... (continued)

11339 of 13061 branches covered (86.82%)

Branch coverage included in aggregate %.

180 of 204 new or added lines in 2 files covered. (88.24%)

1330 existing lines in 41 files now uncovered.

128495 of 181491 relevant lines covered (70.8%)

36.58 hits per line

Uncovered Changes

Lines Coverage ∆ File
18
87.59
iznik-batch/app/Console/Commands/Ripple/BackfillReachCommand.php
6
84.65
0.34% iznik-batch/app/Services/Ripple/ExpandService.php

Coverage Regressions

Lines Coverage ∆ File
274
63.44
-17.05% iznik-nuxt3/components/LoginModal.vue
150
61.34
-8.58% iznik-nuxt3/components/OurUploader.vue
135
74.76
6.18% iznik-nuxt3/components/VolunteerOpportunityModal.vue
113
77.79
8.17% iznik-nuxt3/components/CommunityEventModal.vue
85
64.53
-5.72% iznik-nuxt3/components/AddressModal.vue
74
79.33
0.29% iznik-nuxt3/components/MicroVolunteering.vue
70
44.91
-19.74% iznik-nuxt3/components/AddToCalendar.vue
58
83.3
5.51% iznik-nuxt3/components/AutoComplete.vue
56
68.24
-10.82% iznik-nuxt3/components/PostCode.vue
36
68.55
-2.52% iznik-nuxt3/components/ChatButton.vue
32
76.39
-18.46% iznik-nuxt3/components/SpinButton.vue
25
81.82
-14.5% iznik-nuxt3/components/InfiniteLoading.vue
23
84.82
7.04% iznik-nuxt3/components/SomethingWentWrong.vue
19
87.36
-3.39% iznik-nuxt3/components/EmailValidator.vue
19
86.89
-0.85% iznik-nuxt3/components/MessageHistory.vue
18
86.32
1.63% iznik-nuxt3/components/ChatMessageText.vue
16
81.95
1.13% iznik-nuxt3/components/PostPhoto.vue
14
83.1
-1.15% iznik-nuxt3/components/GoogleOneTap.vue
13
90.26
2.98% iznik-nuxt3/components/UserRatings.vue
12
93.81
19.36% iznik-nuxt3/components/ChatMessageInterested.vue
12
90.27
19.74% iznik-nuxt3/components/ChatMessage.vue
10
94.77
8.21% iznik-nuxt3/components/ActivityGraph.vue
9
80.0
2.89% iznik-nuxt3/components/AutoHeightTextarea.vue
9
92.83
16.93% iznik-nuxt3/components/VolunteerOpportunity.vue
8
72.31
-2.36% iznik-nuxt3/components/ProxyImage.vue
7
88.0
-0.1% iznik-nuxt3/components/PasswordEntry.vue
5
92.44
5.39% iznik-nuxt3/components/ChatListEntry.vue
5
64.52
-8.21% iznik-nuxt3/components/ExternalLink.vue
5
94.31
1.59% iznik-nuxt3/components/ProfileImage.vue
3
96.88
17.31% iznik-nuxt3/components/GroupSelect.vue
2
95.92
16.93% iznik-nuxt3/components/ChatMessageSummary.vue
2
87.5
-7.95% iznik-nuxt3/components/OurDatePicker.vue
2
93.55
-6.45% iznik-nuxt3/components/OurToggle.vue
2
96.85
5.94% iznik-nuxt3/components/OurUploadedImage.vue
1
94.77
0.0% iznik-batch/app/Services/AutoRepostService.php
1
97.42
14.89% iznik-nuxt3/components/ChatMessageAddress.vue
1
98.44
18.69% iznik-nuxt3/components/ChatMessageCompleted.vue
1
98.11
25.35% iznik-nuxt3/components/ChatMessagePromised.vue
1
99.5
20.53% iznik-nuxt3/components/CommunityEvent.vue
1
95.45
4.15% iznik-nuxt3/components/ProfileModal.vue
1
96.3
15.05% iznik-nuxt3/components/SupporterInfo.vue
Jobs
ID Job ID Ran Files Coverage
24186 laravel - 24186 01 Jul 2026 09:18AM UTC 473
68.4
CircleCI Job 24186
24186 vitest - 24186 01 Jul 2026 09:18AM UTC 738
69.49
CircleCI Job 24186
24186 go - 24186 01 Jul 2026 09:18AM UTC 143
83.82
CircleCI Job 24186
Source Files on build 24186
  • Tree
  • List 1354
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • CircleCI Build #24186
  • ed13c074 on github
  • Prev Build on master (#24174)
  • Next Build on master (#24196)
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