Three ways a real acknowledgement reaches breadcrumbs, one Jev call that judges whether it's
genuine, and a scoring layer that's deliberately still open. Grounded in
rust/breadcrumbs-decay/src/jev_credibility.rs and arms.rs as they
stand on this branch today.
Owns record-track and inbound-reaction — the same nameplate over both lanes. No posting identity, purely observing: Jetstream watches for new org.hypercerts.* records, Spacedust watches the interaction graph on a trail record's own AT-URI.
Elsewhere this role gets called a "verifier." Named watchtower/watcher here instead — it's broader than verification alone: discovery, not just checking a claim someone already made.
Owns outbound engagement. Unlike the watchtower, it holds a real posting/reply identity and credentials — an airglow.run-triggered confirmation, a reply surfacing a verdict.
The natural place to run real, authenticated bsky full-text search for anchorId/crumb mentions, too — Constellation and Spacedust only ever see structural backlinks, never a plain-text mention.
Owns Layer 2 end to end. Consumes whatever the watchtower and the bot surface, calls all three Jev primitives — acknowledgement_is_genuine, evaluation_credibility, badge_issuance_plausibility — not just the one drawn above.
Publishes the verdict as a real atproto label via labeler.breadcrumbs.run, mirroring sail-judge-rs's existing labeler.saito.run.
The formal wire format SignalReading was already shaped around — structured, bidirectional, carries its own justification text. Requires real PDS record parsing that doesn't exist yet.
An attester's own bsky post naming a crumb's anchorId or trail AT-URI. Matches BREADCRUMBS.md §5's "Told the Atmosphere," flagged there as a stretch goal.
Real backlinks landing on a trail record's own AT-URI — a shape Constellation already indexes, once trail records are actually quotable/likeable content.
Constellation-shaped
arms.rs picks a single winning arm per claim on purpose — Thompson-sampling over
one Beta posterior per arm, never a blend of all four signal types at once.
Bandit::reward needs in order to learn anything at all." — arms.rs, module doc
So a blended, three-pipeline credibility number can't just replace
acknowledgements_true/false without quietly breaking that credit assignment. It
either strengthens AcknowledgementSignal as one arm among four, or it lives beside
the bandit as its own thing. This diagram intentionally stops at that fork.