Document the FEP-ef61 profile Fedify supports - #1198
Conversation
Fedify 2.4 implements much of FEP-ef61, but not all of it, and two of its choices differ from the current FEP text or rest on semantics that are not settled yet. The manual described each feature in its own chapter, but nowhere stated what Fedify supports as a whole. This adds a "Portable objects" chapter to the manual that lists: - the supported features, each linking to its detailed section; - the deliberate choices, i.e., the ap+ef61: canonical scheme and the map-local compound proof profile, which Fedify keeps for 2.x but may change in 3.0, with advice on staying compatible; - the parts that are not supported, such as the FEP-ae97 gateway endpoints, gateway discovery, synchronization across gateways, key rotation, built-in resolution of DID methods other than did:key, and gateways with paths, plus the work still planned for 2.4. It also adds FEP-ef61 to FEDERATION.md, links the chapter from the vocabulary and sending chapters, gives the hashlink media text in the vocabulary chapter its own heading, fixes a stale note in the object dispatcher chapter that said collection dispatchers were unreachable through the gateway endpoint, notes in the JSDoc of formatIri() and canonicalizePortableUri() that their output scheme may change in a future major version, and mentions the profile in the changelog. fedify-dev#1151 fedify-dev#288 Assisted-by: Claude Code:claude-opus-5-5 Assisted-by: Codex:gpt-6-astra Assisted-by: Codex:gpt-6.1-sol
✅ Deploy Preview for fedify-json-schema canceled.
|
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (10)
Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review. 📝 WalkthroughWalkthroughThe pull request adds a manual chapter for Fedify’s FEP-ef61 profile and updates related documentation. It describes supported portable-object behavior, ChangesPortable-object profile
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Other Merge Risk: ⚪ Minimal · up to This PR clarifies the existing portable-object profile without changing runtime behavior. No concrete merge-blocking risk is indicated. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests.
... and 1 file with indirect coverage changes 🚀 New features to boost your workflow:
|
Closes #1151.
The manual already documents each FEP-ef61 feature, but the sections are spread over about a dozen chapters, and none of them says what Fedify supports as a whole. The new Portable objects chapter (docs/manual/portable.md) brings together the supported features, the deliberate choices, and what is not supported.
Each supported feature gets a sentence or two and its key limit, such as unsecured collections being accepted only for an actor's five standard collections, and then a link to the detailed section. Linking instead of repeating keeps the details in one place, so the overview has little that can fall out of date.
The
ap+ef61:canonical scheme and the map-local compound proof profile get a section of their own, since both may change in 3.0. Parsing a document rewritesap://toap+ef61://, even in the cached JSON-LD, so the page says to keep received JSON rather than re-serialize it. It also says to convert compatible identifiers withfromCompatibleEf61Id()before comparing, becausearePortableUrisEqual()rejects them.Two points differ from #1151:
URLcompatibility as a reason forap+ef61:, butnew URL("ap://did%3Akey%3A…")parses fine. The page only cites the FEP's warning that the scheme may change.A separate chapter leaves room for the end-to-end walkthrough planned in #1150. The changelog notes amend the two existing entries on the scheme and compound proofs instead of adding a fragment, since #1150 will consolidate the FEP-ef61 entries anyway.
Also in this PR:
formatIri()andcanonicalizePortableUri()warning that their output scheme may change