ActivityPub / Fedify Compliance Report Indiekit
| Field | Value |
|---|---|
| Target | rmendes.net (@rick) |
| Date | 2026-02-20T21:20:08Z |
| Tests | 22 total: 22 passed, 0 failed, 0 skipped |
| Grade | A+ — Full compliance — all tests pass |
| Fedify | ^1.10.3 |
| Software | Indiekit + @rmdes/indiekit-endpoint-activitypub |
Summary
| Category | Pass | Fail | Skip | Status |
|---|---|---|---|---|
| Discovery | 3 | 0 | 0 | ✅ |
| Actor | 3 | 0 | 0 | ✅ |
| Collections | 8 | 0 | 0 | ✅ |
| Content | 3 | 0 | 0 | ✅ |
| Inbox | 2 | 0 | 0 | ✅ |
| Federation | 2 | 0 | 0 | ✅ |
| HTTP | 1 | 0 | 0 | ✅ |
Detailed Results
Discovery
| Test | Status | Detail |
|---|---|---|
| WebFinger resolution | ✅ PASS | WebFinger OK: acct:rick@rmendes.net → https://rmendes.net/activitypub/users/rick |
| NodeInfo endpoint | ✅ PASS | NodeInfo OK: indiekit v1.0.0, 249 local posts, protocol: activitypub |
| NodeInfo well-known chain | ✅ PASS | NodeInfo well-known OK: Discovery chain valid, schema 2.1 |
Actor
| Test | Status | Detail |
|---|---|---|
| Actor lookup (fedify) | ✅ PASS | Actor OK: Person at https://rmendes.net/activitypub/users/rick |
| Actor required fields | ✅ PASS | Actor fields OK: inbox, outbox, followers, following, liked, featured, featuredTags, publicKey, assertionMethods, sharedInbox, name, icon, published |
| Actor JSON structure | ✅ PASS | Actor JSON OK: Person with all required fields, collection links, and security keys |
Collections
| Test | Status | Detail |
|---|---|---|
| Outbox collection | ✅ PASS | Outbox OK: OrderedCollection with 249 items |
| Followers collection | ✅ PASS | Followers OK: OrderedCollection with 832 items |
| Following collection | ✅ PASS | Following OK: OrderedCollection with 2563 items |
| Liked collection | ✅ PASS | Liked OK: OrderedCollection with 68 items |
| Featured (pinned) collection | ✅ PASS | Featured OK: OrderedCollection with 0 pinned items |
| Featured tags collection | ✅ PASS | Featured tags OK: Collection with 0 tags |
| Collection URI resolution | ✅ PASS | Collection URIs OK: All actor collection endpoints return valid JSON |
| Outbox traversal (first page) | ✅ PASS | Outbox traversal OK: Contains Create activities with Note objects, proper addressing |
Content
| Test | Status | Detail |
|---|---|---|
| Post returns AS2 JSON | ✅ PASS | Content negotiation OK: https://rmendes.net/notes/2026/02/20/f3f0e serves AS2 JSON |
| Root URL redirects to actor | ✅ PASS | Root redirect OK: https://rmendes.net/ → https://rmendes.net/activitypub/users/rick |
| Object dispatcher (dereference) | ✅ PASS | Object dispatcher OK: Note at https://rmendes.net/notes/2026/02/20/f3f0e |
Inbox
| Test | Status | Detail |
|---|---|---|
| GET inbox returns 405 | ✅ PASS | Inbox GET OK: returns 405 Method Not Allowed |
| GET shared inbox returns 405 | ✅ PASS | Shared inbox GET OK: returns 400 (rejected) |
Federation
| Test | Status | Detail |
|---|---|---|
| Instance actor (Application) | ✅ PASS | Instance actor OK: Application type with hostname identifier |
| WebFinger alias resolution | ✅ PASS | WebFinger alias OK: profile URL and /@handle both resolve |
HTTP
| Test | Status | Detail |
|---|---|---|
| HTTP headers compliance | ✅ PASS | HTTP headers OK: Correct content types on actor, outbox, and WebFinger |
Fedify Feature Compliance Matrix
Maps implemented Fedify features against the Fedify SDK capabilities.
Core Federation
| Feature | Fedify API | Status | Notes |
|---|---|---|---|
| Actor Dispatcher | setActorDispatcher() |
✅ Implemented | Person/Service/Group/Organization via config |
| Key Pairs | setKeyPairsDispatcher() |
✅ Implemented | RSA-2048 + Ed25519 dual keys |
| Handle Mapping | .mapHandle() |
✅ Implemented | Handle + hostname (instance actor) |
| Alias Mapping | .mapAlias() |
✅ Implemented | Profile URL + /@handle resolution |
| Inbox Listeners | setInboxListeners() |
✅ Implemented | Follow, Undo, Accept, Reject, Like, Announce, Create, Update, Delete |
| Shared Inbox | Inbox URL pattern | ✅ Implemented | /activitypub/inbox |
| WebFinger | Automatic | ✅ Implemented | Via Fedify’s built-in handler |
| NodeInfo | setNodeInfoDispatcher() |
✅ Implemented | Schema 2.1, dynamic version |
Collections
| Feature | Fedify API | Status | Notes |
|---|---|---|---|
| Outbox | setOutboxDispatcher() |
✅ Implemented | Paginated, Create activities |
| Followers | setFollowersDispatcher() |
✅ Implemented | Paginated, ordered |
| Following | setFollowingDispatcher() |
✅ Implemented | Paginated, ordered |
| Liked | setLikedDispatcher() |
✅ Implemented | Objects the actor has liked |
| Featured | setFeaturedDispatcher() |
✅ Implemented | Pinned posts, admin UI |
| Featured Tags | setFeaturedTagsDispatcher() |
✅ Implemented | Hashtag discovery, admin UI |
Content Resolution
| Feature | Fedify API | Status | Notes |
|---|---|---|---|
| Object Dispatcher | setObjectDispatcher() |
✅ Implemented | Note/Article dereferencing |
| Content Negotiation | Custom middleware | ✅ Implemented | AS2 JSON for post URLs |
Delivery & Reliability
| Feature | Fedify API | Status | Notes |
|---|---|---|---|
| Message Queue | RedisMessageQueue |
✅ Implemented | Redis-backed persistent queue |
| Parallel Queue | ParallelMessageQueue |
✅ Implemented | Configurable worker count (default: 5) |
| Ordering Keys | sendActivity({ orderingKey }) |
✅ Implemented | Per-follower ordering |
| Collection Sync | sendActivity({ syncCollection }) |
✅ Implemented | FEP-8fcf, shared inbox sync |
| Permanent Failure Handler | setOutboxPermanentFailureHandler() |
⏳ Deferred | Requires Fedify 2.0+ API changes |
| Context Data | createFederation({ contextData }) |
✅ Implemented | Handle + publication URL |
Security & Identity
| Feature | Fedify API | Status | Notes |
|---|---|---|---|
| HTTP Signatures | Automatic (RSA) | ✅ Implemented | Via key pairs dispatcher |
| Object Integrity Proofs | Automatic (Ed25519) | ✅ Implemented | Via assertionMethods multikey |
| Instance Actor | Application type actor | ✅ Implemented | Domain-level federation actor |
| Authorized Fetch | .authorize() predicate |
⏳ Deferred | Removed — requires authenticated document loader to avoid 401 loops with remote servers |
| Configurable Actor Type | Constructor selection | ✅ Implemented | Person/Service/Organization/Group |
Discovery Extensions
| Feature | Fedify API | Status | Notes |
|---|---|---|---|
| NodeInfo Dynamic Version | createRequire() |
✅ Implemented | Reads from @indiekit/indiekit/package.json |
| alsoKnownAs | Actor property | ✅ Implemented | For Mastodon account migration |
| Profile Attachments | PropertyValue | ✅ Implemented | Key-value metadata fields |
Generated by activitypub-tests/run-all.sh — 2026-02-20T21:20:48Z
