Breadcrumbs: physical attestations for ecosystem contributions

Hey atmospheric friends,

over the weekend I started experimenting with physical attestations, as part of my exploration of an ATScience community labeller.

breadcrumbs: physical objects — NFC tags, printed QR codes — that let someone attest to their own participation in something, or let an authority attest that someone did something specific. Two record types separate self-attested contributions (crumbs) from community-authored ones (badges).

Lexicons:

- `id.breadcrumbs.trail` — self-minted. You tap a tag or scan a QR code, log in with your own handle, and it joins your own trail. Nobody attests this for you. This is closer to a connections-type lexicon — two people met at an event — but still an ecosystem contribution in my mind.

- `app.certified.badge.award` — authority-minted. An issuer (a workshop organizer, a station facilitator, an event host) attests that you did something specific.

Our still in-progress tiered-identity verification effort in the ATScience ecosystem answers “who’s allowed to speak as a scientist.” breadcrumbs deliberately answers a different question (“did this happen, can you retrace it”).

Of course I looked at **AT Protocol Spaces** (Bluesky alpha) / **HappyView** (happyview.dev). For scientific contributions, the interesting use case would be pre-publication review that links to the final publication (via anchor+sidecar records). I envision this as the next layer for breadcrumbs.

Curious if this is adjacent to anyone else’s thinking in this category, or if I’m reinventing something that already exists here: Trying to stay integration-minded, but not at the cost of momentum — I’d rather keep shipping and reconcile as it comes up.

I started this with scientific-contribution tracking in mind — a contribution’s provenance trail (claim → evidence → attestation) shouldn’t have to collapse into a single opaque peer-review verdict, which is what modular science and modular reviews are discussing. It’s drifted into something smaller but more concrete: a tool for workshop/conference facilitators, currently being built for IOSP 2026 in Leiden this October. Tap something physical at a station, and it’s yours, verifiably, on the open network, courtesy of Constellation’s backlink index doing the discovery step for us. Thank you!

A landing page is live: breadcrumbs.run. I plan to share code on Tangled: @breadcrumbs

There’s also docs.breadcrumbs.run, covering the design language, architecture, and roots we chose.

This is all based on insights from the following projects, which I hope to integrate breadcrumbs with — on a lexicon level, or just as “we’re aligned in thinking”:

Integration & Inspiration:

- **Discourse Graphs** (Matt Akamatsu, discoursegraphs.com) — Its Claim/Evidence/Question/Project node framework shaped the “provenance trail” framing directly. No lexicon-level integration so far, but honestly the dinner in Vancouver is what started me pondering how we could use this for ATScience ecosystem contributions more concretely.

- **Curvenote / Continuous Science Foundation** (Rowan Cockett, curvenote.com) — Continuous/modular scientific authoring. Rowan organized a workshop series on that topic that I participated in, paired with his keynote at ATScience26 Vancouver (2026-03-27) — the actual origin point for this whole framing.

- **OXA** (`pub.oxa.*`, oxa.dev) — AT-Proto-native lexicon for publishing scientific documents. breadcrumbs’ `subject` field can point at an OXA document; breadcrumbs itself never touches document structure. @oxa.dev @nokome.bsky.social

- **Hypercerts** (`org.hypercerts.*` / `app.certified.badge.*`, GitHub - hypercerts-org/hypercerts-lexicon: Lexicon definitions for Hypercerts v0.2 · GitHub ) — *real lexicon integration, two places.* Badges aren’t a custom breadcrumbs scheme — `issuer.breadcrumbs.id` (our `id.breadcrumbs` authority PDS) mints real Hypercerts `app.certified.badge.definition`/`badge.award` records directly. Separately, our `/whois` page (“who vouches for this”) is built entirely on `org.hypercerts.collection` + `org.hypercerts.context.acknowledgement` @hypercerts @holke.xyz

- **did:webvh** (didwebvh.info) “who attests the issuer” problem" `issuer.breadcrumbs.id` also has a real did:webvh identity (cross-referenced with the did:plc one). didwebvh provides a tamper-evident, protocol-level verifiable-history log, plus its own standardized `/whois`-style service. This is a wider scope than the Hypercerts-based lexicons. It vouches for the DID’s whole controller history. @bumblefudge.com

Ecosystem heros @bad-example.com

- **Constellation** AT Proto backlink index, queried live to verify trail taps and `/whois` acknowledgements

- **Slingshot** (Microcosm) Identity/record resolution edge cache, used for handle resolution and OAuth login.

Generative art - the artwork is the attestation and works for both, crumbs and badges

One aspect that matters a lot to me, and that’s directly reflected in how the artwork gets generated from the trail record itself: every crumb icon is seeded via HKDF (one independent stream per visual trait — the ground line, the path, the trees, the stars, the accent). So the artwork is cryptographically derived from the actual attested record.

The decay metaphor comes straight from Hansel and Gretel — in the Grimm tale the trail is eaten by birds, so “decay” was part of folk knowledge. The tale was told and retold across villages for generations before the first 1812 edition, no single authoritative version existed.

Reward is stored, decay is computed. A badge, an evaluator’s weight, is a data-plane fact. Freshness can’t work that way. ATProto records are immutable and content-addressed, so a record’s own bytes can’t be aged on read without breaking its signature. Freshness has to be computed from a view over the graph instead.

This is why the generative art looks the way it does. Every crumb icon is rendered from a live computation: `freshness` (0 to 1, decaying since last attested) sets the actual ink opacity of the drawing. Fresher crumbs read as darker ink, decaying ones fade. `connectionCount` (Constellation backlink count) sets how many branches the icon draws.

The art is a live view of decay.

Examples: the Crumb Icons shows this across a range of freshness/connection values side by side. The Crumb Icon Prototype is the earlier math experiment this grew out of.

Summary: Authority attestations (badges) subsume the traditional signals — ORCID, institutional affiliation, paper counts. But contributions can also be community-attested (crumbs). Attestation that happens between agents in a more stigmergic way.

Let me know your thoughts on this. Cheers, Torsten

Nice. Discourse recommended reading [Proposal] Standardize Communities' Approach to Attestations as first WG Output I will jump into it.

1 Like

Very excited to use this at IOSP!

Complimentary project: working on endorsement of discourse graph/MIRA elements at graph.scios.tech

Been thinking a lot about human vs. machine endorsements. Both matter. Human with an attestation record behind it gives a much more rich data-map to pull from to form assessment algorithms (also will be workshopping these at IOSP).

Trust node THAT is CLAIM that has X EVIDENCE of SUPPORTING relationship ENDORSED AS BELIEVED by 5 HUMANS who are AUTHORS of CLAIMS in FIELD of type RELATED where HUMAN is equal to ATTESTED AS HUMAN by 10 PEOPLE themselves ATTESTED AS HUMAN by 10 PEOPLE etc.

An endorsement type that currently exists is “Verified”, which would love to link to attestations.

1 Like