fed-sx-m2: Step 7b — public audience expansion + 3 tests
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 41s

delivery:expand_audience(public, Sender, Graph) now returns the
sender's followers (same as the followers symbol). Per design
§13.4 the practical Public fan-out semantics for an open social
network is 'every follower of the publishing actor'. The
explicit shared-inbox peer-instance model (Mastodon-style
per-instance broadcast) defers to v3 when there's a real
known-peer-instance registry to drive it.

19/19 in delivery_set.sh:
  - public symbol now expands to sender's followers (epoch 19,
    updated from v2 placeholder)
  - public with empty follower-graph -> [] (epoch 28)
  - public + followers in same audience dedupe (epoch 29)

Conformance 761/761.
This commit is contained in:
2026-06-06 23:39:00 +00:00
parent 086c576d48
commit 02c1f0f979
3 changed files with 41 additions and 14 deletions

View File

@@ -45,13 +45,15 @@ envelope_field_list(Field, Activity) ->
{ok, V} -> [V]
end.
%% expand_audience/3 — Step 7b. `followers` -> the sender's
%% followers proplist entry from a follower_graph state.
%% `public` for v2 expands to []. Step 7c layers a peer-instance
%% known-set on top for real Public delivery. Other symbols /
%% explicit ActorIds pass through unchanged.
%% expand_audience/3 — `followers` -> the sender's followers
%% proplist entry from a follower_graph state. `public` for v2
%% expands to the same list (per design §13.4: practical Public
%% fan-out is "every follower of the publishing actor"). The
%% explicit shared-inbox peer-instance model defers to v3.
%% Other symbols / explicit ActorIds pass through unchanged.
expand_audience(public, _Sender, _Graph) -> [];
expand_audience(public, Sender, Graph) ->
follower_graph:followers(Sender, Graph);
expand_audience(followers, Sender, Graph) ->
follower_graph:followers(Sender, Graph);
expand_audience(X, _Sender, _Graph) -> [X].