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

bedrock-kv / bedrock / e53dde5036456125ac40f89bc08302ef53f79d9f
82%

Build:
DEFAULT BRANCH: develop
Ran 24 Aug 2026 03:41PM UTC
Jobs 1
Files 215
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

24 Aug 2026 03:40PM UTC coverage: 77.821% (+1.8%) from 76.017%
e53dde5036456125ac40f89bc08302ef53f79d9f

push

github

web-flow
Assignment verification: the committed family is the membership authority (#195)

Closes the **bedrock-q67.21.5** re-adoption residue and
**bedrock-q67.21.7** (alive-but-unadopted workers) with a single
mechanism. Draft for review; stacked on #194.

## The FDB sanity check killed the original plan

The ticket sketched a phase-a-style port: hand the distributor a
snapshot of the director's services map, interrogate every materializer
for its `:shard_id` under a deadline, and adopt matches for uncovered
tags. Checked against FDB and the current architecture, that mechanism
is redundant twice over — and a side channel besides:

- **Recovery's locking phase already locks every advertised
materializer**, and bootstrap adopts every locked survivor
(`existing_materializers_by_shard` + `prefer_family_named`). A sweep
over the same services map rediscovers only what bootstrap already
found.
- **Unnamed strays already retire themselves**: `rejoin_verdict` →
`:displaced` on the next layout push — FDB's undesired-data
self-cleanup. Nothing to add.
- FDB's DD has no process-discovery RPC sweep. Membership rides the
committed keyspace (`serverList`/`serverKeys`); DD *verifies* every
listed server. Keyspace-is-the-channel says the same.

## What actually remains — and the collapse

The one real gap is a worker the committed `materializers/` family
**names** but the epoch never **embraced**: its node missed recovery's
roll call and rejoined later. The sweep monitors it, liveness looks fine
— but it was never locked into the epoch, so the tag stays dark until
the next recovery. That is precisely q67.21.7: *liveness is not
adoption*. Candidates come from the family itself — no services
snapshot, no `:shard_id` interrogation (the entry already binds
worker→tag).

## Mechanism

At the startup sweep, each named non-placeholder assignment gets one
bounded (2s) probe of its new `:epoch` info fact — the membership check,
FDB-DD-style:

- **Current** → verified silently; the ... (continued)

64 of 67 new or added lines in 4 files covered. (95.52%)

326 existing lines in 28 files now uncovered.

6642 of 8535 relevant lines covered (77.82%)

1029.22 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
89.58
lib/bedrock/control_plane/distributor/server.ex

Coverage Regressions

Lines Coverage ∆ File
41
42.0
-0.71% lib/bedrock/service/foreman/impl.ex
28
49.23
16.42% lib/bedrock/data_plane/materializer.ex
26
82.39
2.52% lib/bedrock/control_plane/director/recovery/materializer_bootstrap_phase.ex
26
56.0
-5.8% lib/bedrock/control_plane/director/recovery/persistence_phase.ex
26
84.57
0.74% lib/bedrock/data_plane/log/shale/server.ex
26
87.33
5.83% lib/bedrock/data_plane/materializer/olivine/server.ex
23
32.5
0.0% lib/bedrock/control_plane/director/server.ex
19
76.14
5.45% lib/bedrock/control_plane/director/recovery.ex
18
28.95
20.12% lib/bedrock/cluster/link/server.ex
14
65.85
1.57% lib/bedrock/internal/transaction_builder.ex
12
80.95
-5.47% lib/bedrock/control_plane/director/recovery/topology_phase.ex
9
96.46
-3.12% lib/bedrock/data_plane/commit_proxy/finalization.ex
9
91.67
0.0% lib/bedrock/data_plane/demux/shard_server.ex
9
94.58
0.83% lib/bedrock/data_plane/materializer/olivine/logic.ex
6
95.77
-2.6% lib/bedrock/internal/repo.ex
6
76.47
24.86% lib/bedrock/internal/transaction_builder/storage_racing.ex
5
0.0
0.0% lib/bedrock/service/foreman/server.ex
4
95.12
1.79% lib/bedrock/data_plane/commit_proxy/server.ex
4
92.59
-0.85% lib/bedrock/data_plane/materializer/olivine/streaming.ex
3
35.71
17.53% lib/bedrock/cluster/link.ex
3
95.71
8.81% lib/bedrock/data_plane/resolver/server.ex
2
88.89
13.89% lib/bedrock/data_plane/commit_proxy/tracing.ex
2
27.27
17.27% lib/bedrock/service/foreman.ex
1
88.89
0.0% lib/bedrock/control_plane/coordinator/state.ex
1
97.3
0.42% lib/bedrock/data_plane/commit_proxy/routing_data.ex
1
94.12
0.37% lib/bedrock/data_plane/materializer/olivine/telemetry.ex
1
73.56
-1.15% lib/bedrock/data_plane/resolver/tree.ex
1
91.67
65.35% lib/bedrock/internal/transaction_builder/layout_index.ex
Jobs
ID Job ID Ran Files Coverage
1 e53dde5036456125ac40f89bc08302ef53f79d9f.1 24 Aug 2026 03:41PM UTC 215
77.82
GitHub Action Run
Source Files on build e53dde5036456125ac40f89bc08302ef53f79d9f
  • Tree
  • List 215
  • Changed 52
  • Source Changed 0
  • Coverage Changed 52
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • e53dde50 on github
  • Prev Build on develop (#079CDC5B...)
  • Next Build on develop (#D1FF4946...)
  • Delete
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