From c1a6f7e24c63eafe712ab6870efccecefb2dfd64 Mon Sep 17 00:00:00 2001 From: Ricardo Date: Thu, 26 Mar 2026 18:03:25 +0100 Subject: [PATCH] docs: add comprehensive FEP/standards compliance tables README.md: 18-row table covering core protocols (ActivityPub, HTTP Signatures, RFC 9421, WebFinger, NodeInfo) and 11 FEPs with status and provider attribution (Fedify vs Plugin). CLAUDE.md: developer-facing 11-row FEP table with implementation file locations for each standard. --- CLAUDE.md | 16 ++++++++++++++++ README.md | 33 +++++++++++++++++++++++++++------ 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index d5a6d54..08da7a9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -547,6 +547,22 @@ On restart, `refollow:pending` entries are reset to `import` to prevent stale cl | `unfurl.js` | Open Graph metadata extraction for link previews | | `express` | Route handling (peer: Indiekit provides it) | +## Standards Compliance + +| FEP | Name | Status | Implementation | +|-----|------|--------|----------------| +| FEP-8b32 | Object Integrity Proofs | Full | Fedify signs all outbound activities with Ed25519 | +| FEP-521a | Multiple key pairs (Multikey) | Full | RSA for HTTP Signatures + Ed25519 for OIP | +| FEP-fe34 | Origin-based security | Full | `lookupWithSecurity()` in `lookup-helpers.js` | +| FEP-8fcf | Collection Sync | Outbound | `syncCollection: true` on `sendActivity()` — receiving side NOT implemented | +| FEP-5feb | Search indexing consent | Full | `indexable: true`, `discoverable: true` on actor in `federation-setup.js` | +| FEP-f1d5 | Enhanced NodeInfo | Full | `setNodeInfoDispatcher()` in `federation-setup.js` | +| FEP-4f05 | Soft delete / Tombstone | Full | `lib/storage/tombstones.js` + 410 in `contentNegotiationRoutes` | +| FEP-3b86 | Activity Intents | Full | WebFinger links + `authorize-interaction.js` intent routing | +| FEP-044f | Quote posts | Full | `quoteUrl` extraction + `ap-quote-embed.njk` rendering | +| FEP-c0e0 | Emoji reactions | Vocab only | Fedify provides `EmojiReact` class, no UI in plugin | +| FEP-5711 | Conversation threads | Vocab only | Fedify provides threading vocab | + ## Configuration Options ```javascript diff --git a/README.md b/README.md index 39a128c..84d1230 100644 --- a/README.md +++ b/README.md @@ -110,12 +110,33 @@ ActivityPub federation endpoint for [Indiekit](https://getindiekit.com), built o - Federation management page with moderation overview (blocked servers, blocked accounts, muted) **Standards Compliance** -- FEP-5feb: Search Indexing Consent — actor advertises `indexable` and `discoverable` properties -- FEP-f1d5/0151: Enhanced NodeInfo 2.1 — rich metadata including software repository, node name, staff accounts -- FEP-4f05: Soft Delete with Tombstone — deleted posts return 410 with Tombstone JSON-LD including `formerType` and timestamps -- FEP-3b86: Activity Intents — WebFinger links for Follow, Create, Like, Announce intents with authorize_interaction routing -- FEP-8fcf: Collection Synchronization — outbound follower digest headers via Fedify `syncCollection` -- FEP-044f: Quote Posts — rendered as embedded cards (via Fedify's `quoteUrl` support) + +Core protocols and Fediverse Enhancement Proposals (FEPs) supported: + +| Standard | Name | Status | Provider | +|----------|------|--------|----------| +| [ActivityPub](https://www.w3.org/TR/activitypub/) | W3C ActivityPub | Full (server-to-server) | Fedify 2.1 | +| [ActivityStreams 2.0](https://www.w3.org/TR/activitystreams-core/) | W3C Activity Streams | Full | Fedify 2.1 | +| [HTTP Signatures](https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures) | draft-cavage HTTP Signatures | Full | Fedify 2.1 | +| [RFC 9421](https://www.rfc-editor.org/rfc/rfc9421) | HTTP Message Signatures | Full (with Accept-Signature negotiation) | Fedify 2.1 | +| [WebFinger](https://www.rfc-editor.org/rfc/rfc7033) | RFC 7033 WebFinger | Full | Fedify 2.1 | +| [NodeInfo 2.1](https://nodeinfo.diaspora.software/) | Server metadata discovery | Full (enriched) | Plugin | +| [FEP-8b32](https://w3id.org/fep/8b32) | Object Integrity Proofs (Ed25519) | Full | Fedify 2.1 | +| [FEP-521a](https://w3id.org/fep/521a) | Multiple key pairs (Multikey) | Full | Fedify 2.1 | +| [FEP-fe34](https://w3id.org/fep/fe34) | Origin-based security model | Full | Fedify 2.1 + Plugin | +| [FEP-8fcf](https://w3id.org/fep/8fcf) | Followers collection synchronization | Outbound only | Fedify 2.1 | +| [FEP-5feb](https://w3id.org/fep/5feb) | Search indexing consent | Full (`indexable`, `discoverable`) | Plugin | +| [FEP-f1d5](https://w3id.org/fep/f1d5) | Enhanced NodeInfo 2.1 | Full (metadata, staff accounts) | Plugin | +| [FEP-4f05](https://w3id.org/fep/4f05) | Soft delete with Tombstone | Full (410 + Tombstone JSON-LD) | Plugin | +| [FEP-3b86](https://w3id.org/fep/3b86) | Activity Intents | Full (Follow, Create, Like, Announce) | Plugin | +| [FEP-044f](https://w3id.org/fep/044f) | Quote posts | Full (Mastodon, Misskey, Fedibird formats) | Fedify 2.1 + Plugin | +| [FEP-c0e0](https://w3id.org/fep/c0e0) | Emoji reactions (EmojiReact) | Vocab support (no UI) | Fedify 2.1 | +| [FEP-5711](https://w3id.org/fep/5711) | Conversation threads | Vocab support | Fedify 2.1 | +| [Linked Data Signatures](https://w3c-dvcg.github.io/ld-signatures/) | RsaSignature2017 (legacy) | Full (outbound signing) | Fedify 2.1 | + +**Status key:** *Full* = complete implementation, *Outbound only* = sending side only, *Vocab support* = types available but no dedicated UI/logic. + +**Provider key:** *Fedify 2.1* = handled by the Fedify framework, *Plugin* = implemented in this plugin, *Fedify 2.1 + Plugin* = framework provides primitives, plugin wires them together. ## Requirements