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

dangernoodle-io / breadboard / 30181065481
97%

Build:
DEFAULT BRANCH: main
Ran 26 Jul 2026 12:25AM UTC
Jobs 1
Files 199
Run time 1min
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

26 Jul 2026 12:23AM UTC coverage: 96.497% (-0.003%) from 96.5%
30181065481

push

github

web-flow
fix: migrate bb_lifecycle/bb_lifecycle_async onto bb_lock_once_ensure() (#1088)

Each site guarded a fallible bb_lock_init() with the plain, non-fallible
bb_once_run(), discarding the failure -- bb_once_run() latches DONE
unconditionally, so a transient boot-OOM left a zero-inited bb_lock_t
and permanently bricked every future caller of the service-registry
authority underpinning the composition root.

- bb_lifecycle.c: ensure_lock() now returns bb_err_t via
  bb_lock_once_ensure(); every call site (autoinit, register, find, name,
  start, stop, pause_assert, pause_clear, is_paused, state,
  inhibit_words, reason_name, priv_observe_slot, reset_for_test)
  propagates or folds the failure into its existing return shape --
  bb_err_t-returning functions propagate the real error; bool/const
  char*/size_t/state-returning functions fold it into their existing
  "invalid handle" default (false/""/0/STOPPED), documented as
  indistinguishable from that case rather than conflated with the
  NULL-argument caller-bug convention
- bb_lifecycle_async.c: ensure_async_lock() now returns bb_err_t the same
  way; removed the false "the lock itself has no transient-failure retry
  requirement, safe to latch forever" comment -- bb_lock_init() failure
  is exactly the transient condition bb_lock_once_ensure() exists to
  retry, not latch
- updated bb_lifecycle.h/bb_lifecycle_priv.h doc comments for the new
  possible lock-unavailable error/fallback on each affected function
- swept every caller of every widened function (bb_mdns.c, bb_mqtt_
  client_espidf.c, examples/floor/main/floor_app.c): all already handle a
  bb_lifecycle_find()/observe_async() BB_ERR_NOT_FOUND-or-other failure
  identically via an existing else/!=BB_OK branch, so a lock-unavailable
  failure surfaces through the same already-correct path -- no caller
  invariant broken, no fix needed
- the genuine bb_lock_init() failure branch is not host-reproducible (no
  fault injection); each new branch is LC... (continued)

7770 of 8375 branches covered (92.78%)

Branch coverage included in aggregate %.

13 of 13 new or added lines in 2 files covered. (100.0%)

13221 of 13378 relevant lines covered (98.83%)

2658.32 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30181065481.1 26 Jul 2026 12:25AM UTC 199
96.5
GitHub Action Run
Source Files on build 30181065481
  • Tree
  • List 199
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30181065481
  • 7879f696 on github
  • Prev Build on main (#30180543029)
  • Next Build on main (#30181303685)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc