docs(openspec): archive social-federation; sync delta specs into main

The change shipped end-to-end (58/58 tasks; live on trails.cool since
2026-06-07, soaked against Mastodon and flagship⇄staging). Delta specs
synced into the mainline:
- specs/social-federation/spec.md created (8 requirements: actor
  objects + WebFinger, signing keypairs, narrow inbox, outbox, push
  delivery, trails-only outbound, poll ingestion, audience filtering)
- specs/social-follows/spec.md: social-activity-feed requirement
  updated for remote rows + audience gating; pending lifecycle for
  outbound remote follows added
- specs/public-profiles/spec.md: Pending follow-button state added

openspec validate --all: green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ullrich Schäfer 2026-06-07 16:47:35 +02:00
parent 4b342ad91b
commit d87a1e30c2
10 changed files with 147 additions and 24 deletions

View file

@ -63,3 +63,10 @@ Every user SHALL have an explicit `profile_visibility` of `public` or `private`.
- **WHEN** a previously-private user switches `profile_visibility` to `public` and saves
- **THEN** their `/users/:username` renders the full profile to anyone again, and any incoming follows auto-accept going forward
### Requirement: Pending state on Follow button
When a signed-in viewer has an outgoing follow against a profile that is `accepted_at IS NULL` (awaiting `Accept(Follow)` from the remote), the Follow button SHALL render in a Pending state with a cancel option, distinct from both the unfollowed and followed states.
#### Scenario: Pending state visible
- **WHEN** a signed-in user has just initiated a follow against a remote trails actor's profile
- **THEN** the profile page renders a "Pending" indicator with a cancel-request control instead of the Follow or Unfollow button