Repository navigation
Fediverse: publish a drive's public actor over ActivityPub (federates end to end) - #217
Merged
Merged
Conversation
Brings integrations/fediverse/ over from origin/codex/plugin-fediverse (98e709c) onto main, without the remoteStorage plugin that branch also merged in. The files are unchanged; the catalog and lane entries follow with the federation work. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ish via the host queue WIP: the handler, manifest, node tests, peer fixture and real-host e2e, plus lanes.json serverEnv plumbing for debug-build test seams. The e2e needs atomic-server branch claude/plugin-fediverse-host. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… ATOMIC_PLUGIN_E2E_PEER_CA Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t in the e2e Also ports WebFinger match.rels (atomic-server claude/plugin-fediverse-host) into integrations/tooling/manifest-http.mjs with the host's shared fixtures, so catalog-requires and certify accept the manifest. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…iverse
Conflict: integrations/tooling/lanes.test.mjs (the shared-change
needsPluginRoutesBuild assertion) — took main's version, which already
derives the expectation from lanes.json.
Shared tooling unified for all server-plugin lanes landing on
candidate16 (fediverse, open-cloud-mesh, solid, atproto, remotestorage):
- lanes.json `serverEnv`: one rule — a non-empty object of ATOMIC_* names
to strings that never sets SERVER_ENV_RESERVED (the plugin-routes gates
and what serve.mjs derives from ports and store); covers the debug-build
ATOMIC_PLUGIN_E2E_* seams and host settings such as
ATOMIC_SOLID_OIDC_ISSUERS. serve.mjs `laneServerEnv` fills in
{atomicServer}/{devServer}/{mockProxy}; run-lane.mjs passes it to the
server and to the e2e specs.
- manifest-http.mjs: route field `fetches` (declared GET operations with
effect read, gate surface "fetch `<id>`" at read-write, wildcard-host
operations listed in enqueues or fetches) and authOptional on bearer,
dpop or atomic, with candidate16's exact error texts.
- fixtures/plugin-manifest: every file copied byte for byte from
atomic-server 38306758 testdata/plugin-manifest; source.json names it.
Fediverse README and catalog limitation: its host branch is in
candidate16. Catalog entry stays enabled: false.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Sep 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #215 (the candidate16 pin); retarget to main once #215 merges.
What it does: the drive publishes a public ActivityPub actor.
Serviceactor with the host-held RSA key.POST /ap/outbox(auth: atomic, configured publishers only): stores a Message and queues a signedCreate(Note)for each follower's shared inbox.POST /ap/inbox(http-signature, the actor must be the signer): Follow is auto-accepted with a signed Accept; Undo, and Delete of the actor, remove the follower; a reply to our posts is stored once, as plain text.Evidence: the real-host e2e passes at candidate16 against a local HTTPS ActivityPub peer: Follow, signed Accept, signed Create delivery, a stored reply, and Undo. There are 21 node tests. It hasn't been tried against real Mastodon.
Shared tooling, unified here for all four server-plugin PRs:
serverEnvlane field (ATOMIC_*, reserved names excluded, port placeholders filled in);manifest-http.mjsupdated to candidate16'sfetchesandauthOptionalrules;fixtures/plugin-manifest/copied byte-for-byte from atomic-server 38306758.The catalog entry stays
enabled: false.Limits: only shared inboxes at
/inboxcan be delivered to (not GoToSocial's per-user inboxes); no Update/Delete federation of posts; no publish UI; posts created directly in the folder aren't delivered (no afterCommit yet).🤖 Generated with Claude Code