Owner decisions of 2026-10-06; personas' public posts go to relays
The owner decided four gated questions, now in ROADMAP: personas publish a wall (G-0009), their public posts go to the relays PrivaPub subscribes to, public threads publish their replies and context, and FEP-8fcf follower digests are sent. The first is in: a persona's own public post outside any group, its edit and its deletion also go to the relays that accepted us, as Mastodon sends them; nothing less public, and no boost. Checked live (scenarios/relay.sh, 15 checks): the post reaches Activity-Relay, and Mastodon through aode-relay's announce. Mastodon drops what Activity-Relay forwards without an LD signature or FEP-8b32 proof, which PrivaPub does not add yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
1 parent
b45321f28d
commit
93e13e5563
8 files changed
+70
-21
No files matched your search
@@ -104,6 +104,24 @@ namespace PrivaPub.Tests.Federation
|
||||
Assert.Equal(PostVisibility.Public, kept[0].Visibility);
|
||||
}
|
||||
|
||||
// owner decision 2026-10-06: a persona's public post, its edit and its deletion go to the relays too; nothing less
|
||||
// public does, nor a boost
|
||||
[Fact]
|
||||
public async Task A_personas_public_post_goes_to_the_relays_and_nothing_less_public()
|
||||
{
|
||||
var relay = await Subscribed();
|
||||
var (_, alice) = await _harness.Persona("alice");
|
||||
var token = Token;
|
||||
|
||||
var open = await _harness.Statuses.Publish(alice, new PrivaPub.Domain.Statuses.StatusDraft { Text = "for everyone", Visibility = PostVisibility.Public }, token);
|
||||
await _harness.Statuses.Publish(alice, new PrivaPub.Domain.Statuses.StatusDraft { Text = "quietly", Visibility = PostVisibility.Unlisted }, token);
|
||||
await _harness.Statuses.Publish(alice, new PrivaPub.Domain.Statuses.StatusDraft { Text = "for followers", Visibility = PostVisibility.FollowersOnly }, token);
|
||||
|
||||
var sent = (await _harness.Outgoing(relay.Id + "/inbox")).Where(a => a["type"]!.GetValue<string>() == "Create").ToList();
|
||||
var create = Assert.Single(sent);
|
||||
Assert.Equal(alice.PostUri(open.Post.ID), create["object"]!["id"]!.GetValue<string>());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task A_post_a_relay_announces_is_its_authors_never_the_relays_boost()
|
||||
{
|
||||
|
||||
@@ -44,13 +44,14 @@ namespace PrivaPub.Tests.Support
|
||||
Local = new LocalActorService(Db, new StaticOptions<AppConfiguration>(new AppConfiguration { BackendBaseAddress = Base }));
|
||||
Remote = new RemoteActorService(Peer.Http(cache), Local, cache, Db);
|
||||
Delivery = new DeliveryService(Db, Queue);
|
||||
Relays = new Relays(Microsoft.Extensions.Options.Options.Create(RelayOptions), Remote, Local, Delivery);
|
||||
Fanout = new Fanout(Db);
|
||||
Groups = new GroupDistributor(Delivery);
|
||||
Records = new ObjectRecords(Queue);
|
||||
Polls = new PollService(Db, Local, Delivery, Queue);
|
||||
Reactions = new Reactions(Db, Delivery);
|
||||
RemotePosts = new RemotePosts(Db, Local, Remote, new NoBlocks(), Queue, Records, new NoPreviews());
|
||||
Outbox = new OutboxPublisher(Db, Local, Delivery);
|
||||
Outbox = new OutboxPublisher(Db, Local, Delivery, Relays);
|
||||
Quotes = new QuoteService(Db, Remote, RemotePosts, Local, Delivery, Outbox);
|
||||
Approvals = new InteractionApprovals(Db, Remote, Local, Delivery, Outbox);
|
||||
Participations = new Participations(Db, Local, Delivery);
|
||||
@@ -58,7 +59,6 @@ namespace PrivaPub.Tests.Support
|
||||
Follows = new FollowService(Db, Local, Remote, Delivery, new KeyLocalizer<GenericRes>(), NullLogger<FollowService>.Instance);
|
||||
Relationships = new RelationshipService(Db, Follows, Delivery);
|
||||
Featured = new FeaturedPosts(Db, Remote, RemotePosts);
|
||||
Relays = new Relays(Microsoft.Extensions.Options.Options.Create(RelayOptions), Remote, Local, Delivery);
|
||||
Handlers = new IActivityHandler[]
|
||||
{
|
||||
new FollowHandler(Db, Local, Remote, Delivery),
|
||||
|
||||
Reference in new issue
Block a user