The Ring of Trust can be made radically simple for static sites and Federated Wiki by putting *all membership and verification data* inside a single file that every site already has: `/favicon.svg`.
A small JavaScript widget then fetches favicons from neighbouring sites, validates signatures, builds a local cache, and renders an interactive webring graphic with Next / Previous navigation plus a minimal “trust structure” view of the Fabulous Machine.
# The favicon as the only required data file Each member site publishes exactly one special asset. - `/favicon.svg` contains a normal icon plus a machine-readable payload in `<metadata>`. Everything else is optional convenience. - `/.well-known/...` files become unnecessary. - A central roster becomes optional, not required. This is a deliberate design: if the page can show an icon, it can carry the ring identity.
# What goes inside the SVG The SVG carries a signed payload called a RingPack. RingPack should be compact JSON (or CBOR) encoded as base64 inside the SVG `<metadata>`, plus a signature and a public key. Minimum fields that make the system work. - `v`: schema version. - `site`: canonical browsing URL for this member. - `pub`: Ed25519 public key (base64). - `kid`: key id or fingerprint for display and pinning. - `rings`: list of ring memberships, each with `ringId` and optional tags. - `links`: neighbour links for traversal and bootstrapping. - `vouches`: optional trust edges (signed statements about other members). - `snap`: optional cached snapshot of the ring graph (used when URLs are broken). - `sig`: signature over the canonical bytes of the RingPack (excluding `sig`). The key idea is that the “identity you see” (favicon) and the “identity you verify” (public key + signature) are the same artifact.
# Canonical example payload structure This is the shape, not a final standard. ```xml <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"> <metadata id="ringoftrust"> { "v": 1, "site": "https://example.org/", "pub": "BASE64_ED25519_PUB", "kid": "sha256:BASE64_FINGERPRINT", "rings": [ {"ringId":"fabulous.machine/v1","role":"member","updated":"2026-01-05T00:00:00Z"} ], "links": [ {"rel":"prev","site":"https://prev.example/","kid":"sha256:..."}, {"rel":"next","site":"https://next.example/","kid":"sha256:..."}, {"rel":"seed","site":"https://seed.example/","kid":"sha256:..."} ], "vouches": [ {"aboutKid":"sha256:OTHER","weight":1,"why":"met-in-person","sig":"BASE64_SIG"} ], "snap": { "ringId":"fabulous.machine/v1", "epoch":"2026-01-01", "members":[ {"site":"https://a/","kid":"sha256:A"}, {"site":"https://b/","kid":"sha256:B"} ], "trust":[ {"from":"sha256:A","to":"sha256:B","w":1} ], "ipfsCid":"bafy...optional" }, "sig": "BASE64_SIG_OVER_RINGPACK" } </metadata> <!-- Your actual icon art goes here. --> </svg>