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

prisma-risk / tsoracle / 26429349642
95%

Build:
DEFAULT BRANCH: main
Ran 26 May 2026 02:52AM UTC
Jobs 1
Files 87
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 May 2026 02:47AM UTC coverage: 95.407% (+0.06%) from 95.345%
26429349642

push

github

web-flow
feat(driver-openraft): add format-activation gate and Capabilities RPC (#463)

Adds the self-contained capability-query mechanism and the leader-side
all-members activation gate so an operator can ask, before any format bump
is proposed, "can every current member (voters AND learners) read the
target write version?" — answered without any admin service or CLI, using
a new peer RPC on the existing `RaftPeerService` plus an interim library
trigger method on `StandaloneHost`. The gate is computed and returned; the
proposal itself is a later phase.

**Shared types (`tsoracle-driver-openraft::capabilities`).**

- `NodeCapabilities { min_readable_version, max_readable_version,
  active_write_version: u8 }` plus `::local(active)` that reads the
  compile-time `MIN_READABLE_VERSION` / `MAX_READABLE_VERSION` constants.
- `all_members_can_read(target, &reports) -> Option<BTreeSet<NodeId>>`:
  pure gate predicate, `Some` iff every gathered member's
  `max_readable_version >= target`.
- `FormatActivationError { NotLeader, MembersBelowTarget { target,
  incapable }, MemberUnreachable { node_id, detail } }` — fail-loud
  surface for the operator trigger.
- `CapabilitySource` async trait with an associated `Node` type and a
  `query(node_id, member) -> Result<NodeCapabilities, String>` method.
  Defined here so the gate is testable in the driver crate without
  depending on the transport crate (which would invert the dep edge).
- `gather_with`: a free helper, generic over `CapabilitySource`, that
  answers the local node from `local_capabilities` directly and dials
  every other member via the source. Fails closed
  (`MemberUnreachable`) the moment any remote query fails.

**`StandaloneHost` methods.** `local_capabilities()`,
`membership_snapshot()` (reads `raft.metrics().borrow_watched()` —
membership covers voters AND learners, matching the all-members rule),
`gather_member_capabilities()`, `run_activation_gate(target, source) ->
Result<BTreeSet<u64>, FormatActiva... (continued)

171 of 174 new or added lines in 2 files covered. (98.28%)

12463 of 13063 relevant lines covered (95.41%)

420665.49 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
98.28
crates/tsoracle-driver-openraft/src/capabilities.rs
1
99.3
2.87% crates/tsoracle-driver-openraft/src/standalone.rs
Jobs
ID Job ID Ran Files Coverage
1 26429349642.1 26 May 2026 02:52AM UTC 87
95.41
GitHub Action Run
Source Files on build 26429349642
  • Tree
  • List 87
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26429349642
  • 9d995f9d on github
  • Prev Build on main (#26428206571)
  • Next Build on main (#26429948399)
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