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

Freegle / Iznik / 23842
72%

Build:
DEFAULT BRANCH: master
Ran 28 Jun 2026 06:19PM UTC
Jobs 0
Files 0
Run time –
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

pending completion
23842

push

circleci

invalid-email-address
feat(ripple): Stage-A audience-budget extent cap (fixes dense-area over-reach)

Rippling reach is a drive-time isochrone, which is density-blind: the same
~30-min reach encloses ~19k members from Islington but ~240 in mid-Wales
(~80x), so London Offers ripple to ~32 groups / ~27k members (Discourse
#9808). The reach-governance design (plans/rippling-out-algorithm.md rev.2)
calls for governing extent by audience, not geography; this is its
buildable feed-forward MVP (Stage A) — the closed-loop eyeball governor
(Stage B) still waits on the messages_likes impression-measurement schema
change.

Approach (see plans/2026-06-28-ripple-extent-governor-mvp.md): cap the
schedule curve at the target_users NEAREST freeglers in the routing server,
so every tick polygon tops out at ~target_users members. In dense areas the
cap binds at a small radius (reach tightens); where the reachable pool is
already smaller it never binds (rural unchanged). Because the cap lives in
/v1/ripple-schedule, ExpandService is untouched.

- iznik-routing-go/ripple.go: optional target_users param; curve spread over
  effectiveScheduleTotal(total, target_users); MaxDriveMin reports the true
  capped reach when it binds. target_users=0/absent => byte-identical schedule.
- ReachService: sends target_users only when freegle.ripple.extent.enabled
  AND target_users>0 — so it is double-gated and dark by default.
- config freegle.ripple.extent {enabled=false, target_users=4000}. Global cap
  for v1; per-RU-class stratification (target_by_ru) is the noted next step.
- Tests: pure-function cap logic (Go) + the send/omit gate (PHP).

Ships DARK (RIPPLE_EXTENT_ENABLED=false): no behaviour change until enabled.
Rollout is dark-compute -> calibrate target_users -> scoped enable.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aXkxBPEiPSJBaRMjz7opk
Source Files on build 23842
Detailed source file information is not available for this build.
  • Back to Repo
  • CircleCI Build #23842
  • 820c35d0 on github
  • Prev Build on master (#23827)
  • Next Build on master (#23846)
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