trails/openspec/changes/federation-hardening/specs/social-federation/spec.md
Ullrich Schäfer 5dd4968626 docs+openspec: prior-art research (Organic Maps, Endurain, wanderer) and 15 proposals
Add docs/inspirations.md as the durable record of the 2026-07-05/06
prior-art research — per-project learnings with source paths, canonical
credit lines, and the changes each spawned — and extend the
acknowledgment lists in philosophy.md/architecture.md (Organic Maps,
Endurain, wanderer).

New OpenSpec changes (proposal/design/specs/tasks each):
- Organic Maps: elevation-profile-hardening, gpx-parser-robustness,
  hiking-time-estimate, poi-index, hiking-foot-profile
- Endurain: account-export, activity-duplicate-review,
  fit-parsing-hardening, activity-locations, self-hosting-guide,
  activity-privacy-controls
- wanderer: federation-hardening, link-share-tokens
- credits-page (user-visible acknowledgments)

Updated in-flight changes with wanderer prior-art sections:
route-federation, route-discovery.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 07:23:00 +02:00

1.1 KiB

MODIFIED Requirements

Requirement: Push delivery on local activity create

The Journal SHALL deliver a Create(Note) activity to every accepted remote follower's inbox when a local user with profile_visibility = 'public' creates a new public activity. Delivery queueing and retry state SHALL be persistent: queued deliveries and scheduled retries survive process restarts.

Scenario: New public activity fans out

  • WHEN a local user with N accepted remote followers creates a new public activity
  • THEN N delivery jobs are enqueued (one per follower's inbox), each retrying with exponential backoff on 5xx, giving up after a documented retry budget

Scenario: Rate-limited per remote host

  • WHEN multiple deliveries target the same remote host
  • THEN they are rate-limited so we never exceed 1 request per second per remote host (configurable; chosen for safety, not throughput)

Scenario: Fan-out survives a deploy

  • WHEN a deploy restarts the journal while fan-out deliveries are queued or awaiting retry
  • THEN the deliveries complete after the restart without loss