Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Dogfooding: Margin as the First Experiment

draft first cut, 2026-09-13.

This compendium is now being reviewed with a tool breadcrumbs had no part in building, no partnership with, and no advance knowledge of — and it took zero integration work to make that possible.

What margin.at actually is

Margin is a real Chrome/Firefox extension: install it, and it lets you highlight or comment on any web page, writing what you write as a real record in your own AT Protocol personal data server — not to margin.at’s own database. Its lexicon (at.margin.*) defines at.margin.note, a W3C Web Annotation Data Model-compliant record with a motivation (commenting, questioning, assessing, highlighting, and others), a target (the URL being annotated, plus a W3C selector — an exact text quote, a character range, or a CSS/XPath/fragment locator pinning down where on the page), and a body carrying the actual comment. Replies thread via a sibling at.margin.reply record. Like every other record this project deals in, it is signed, portable, and lives wherever its author’s own identity lives — not in margin.at’s infrastructure.

Why it worked immediately

Torsten installed the extension and asked whether it could double as a review tool for this compendium. It already can, and needed nothing built to prove that much: an at.margin.note’s target.source field is just a URL, and Constellation — the same network-wide backlink index this compendium’s own /whois page already uses to find who has acknowledged the issuer — indexes it automatically, the same way it indexes anything else on the network:

getBacklinks?subject=https://docs.breadcrumbs.run/<chapter>.html
             &source=at.margin.note:target.source

That query works today, verified live. No API key exchanged with margin.at, no schema registered anywhere, no conversation between the two projects’ authors. A facilitator-only view in trail-of-crumbs (/workbench/annotations) surfaces exactly that query per compendium page, and a local script (compendium/scripts/pull-annotations.mjs) turns a found annotation into a suggested <mark>-wrapped prose change, feeding straight into REVIEW.md’s own draft → mark → review → finalize cycle — the same reading-pass discipline every other chapter in this book already goes through.

The point worth making explicit

Domains & Lexicon Authority argues breadcrumbs should co-evolve with other projects’ schemas rather than compete with them, and that a real, DNS-verifiable NSID authority makes a schema independently checkable by anyone, with nobody’s permission required. Margin is that same thesis seen from the other side — not breadcrumbs publishing something others can build on, but breadcrumbs consuming someone else’s public schema without asking. Two independent projects, each just writing plain, well-formed, public AT Protocol records over a shared open network, compose for free. Coopetition isn’t a hoped-for future benefit here; it’s already load-bearing for how this very compendium gets reviewed.

There’s a second, more literal kind of dogfooding underneath that: breadcrumbs exists to make provenance — who said what, when, attested by whom — legible instead of collapsed into an opaque verdict. The review process for the document making that argument is now itself a set of small, individually attested, PDS-anchored comments. The mechanism and the subject are the same shape.

One honest limitation

A margin.at annotation anchors to an exact span of text via its TextQuoteSelector. This compendium’s own mark → finalize cycle rewrites or strips exactly that text as a chapter matures — so an annotation left during a draft or pending read can go stale once the prose underneath it changes; the selector has no way to relocate itself. The page-level URL anchor doesn’t have this problem — “what has anyone said about this page” always resolves — but a specific in-paragraph position can drift out from under a comment. This isn’t a gap specific to this integration: any web-annotation tool anchored to a living document has the identical fragility (Hypothesis included). Worth living with, not solving structurally.

A second limitation, more fundamental than the first: at.margin.note has no privacy field at all. Every annotation is public, forever, tied to the commenter’s real identity — fine for a settled opinion, a real ask for a half-formed reaction to a draft. AT Protocol Spaces (gated records, already scoped for this project’s own future paper- review pipeline — breadcrumbs-dotv) could eventually solve this for reviewers who’d rather comment privately, but not automatically: margin.at itself would need to support writing into a gated Space, or this compendium would need its own separate, Spaces-based comment mechanism instead. Captured as breadcrumbs-p3xq, not built.