Forte in the pasture

Forte 26.9.10, the ActivityPub-only fork of Streams, built from its tag (images/forte: composer on Hubzilla's PHP image)
with portable identities (did:key actors behind /.well-known/apgateway). scenarios/forte.sh, 21 checks: follows, posts,
comments, likes, edits and deletions both ways, a third channel's comment passed on by the thread's owner, the
unfollow, statistics. INTEROP.md records what it does its own way: follows of profile pages, edits only as
Add{Update} under the Create's id, collections that misname themselves.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
thepraandClaude Opus 5.5 committed 2026-10-06 10:58:45 +02:00
1 parent 99b5e2dbf3
commit 3df3c333bf
8 files changed
+317

No files matched your search

+20
View File
@@ -854,6 +854,26 @@ without a port, before it gives out its OAuth client.
never as the relay's boost), and nobody's home; a persona's public post goes to the relays, nothing less public, and
reaches Mastodon through both (forwarded on its proof, and announced).
### Forte 26.9.10
- **Portable identities (FEP-ef61):** a channel's actor is `https://<server>/.well-known/apgateway/did:key:z6Mk…/actor`,
its keys a `did:key` and Multikeys; WebFinger lists `ap://did:key…` and the gateway address beside the usual ones.
PrivaPub keeps it as an ordinary actor at that https address.
- **Follows a profile page:** its `Follow` names the persona's profile URL (`/@name`, WebFinger's alias) rather than the
actor's id; PrivaPub takes either (a 404 before).
- **Everything in a thread is added to its conversation** (FEP-171b): its edits come only as `Add{Update}`, under the
same activity id as the post's `Create`, and likes as `Add{Like}`. PrivaPub unwraps Create, Update and Delete, telling
an Update from the Create whose id it reuses by what it carries.
- **Its own collections name themselves wrongly:** a channel's followers, following and outbox give an `id` with the
gateway path twice and a trailing `?`, which 404s, so their counts are not read.
- **Running it:** no image is published; `images/forte` builds its tag with composer on Hubzilla's PHP image, behind an
nginx that routes through `index.php?req=`. Its curl uses `library/cacert.pem`, not the system store. The `social`
role leaves each connection pending; the pasture's channels set `autoperms`. Background jobs it starts from the
command line do not outlive `podman exec`, so the scenario runs the Follow's notifier itself. Likes take `verb=Like`.
- **Pasture evidence (2026-10-06, `tools/pasture/scenarios/forte.sh`):** follows both ways, posts both ways, comments
both ways, a third channel's comment passed on by the thread's owner, likes both ways, edits and deletions both ways,
the unfollow, statistics.
### Hubzilla 11.4.1 (pubcrawl)
- **Channels speak ActivityPub only with the "Activitypub Protocol" app** installed for them (the pubcrawl addon on