Gap analysis of docs/architecture.md against openspec/ and docs/ideas/ found the envisioned-but-uncaptured remainder. This commit captures it: New OpenSpec change (validated): - route-federation — the collaboration half of the federation vision: routes as dereferenceable trails:Route objects, Create/Update fan-out, Invite/Accept collaboration mirroring (arch decision #2), cross-instance Planner edits via HTTP-Signature-requested scoped tokens (decisions #3/#12), mirror sync healing (#16). Depends on social-federation §6 + route-sharing; carries the 2026-06-07 soak lessons as design constraints. New docs/ideas/ explorations: - instance-administration — registration toggle, suspend/ban, federation blocklists, reports (moderation now gates the federated comments idea) - social-interactions — local likes + comments (don't exist even locally; the foundation federated kudos/comments attach to) - activity-participants — group tagging with confirm/decline + federated mentions (the participants jsonb column is an untyped stub) - multi-day-collections — architecture open question #1, directions evaluated architecture.md cleanup: - Mastodon-compat section annotated with shipped/captured state + the live-soak interop lessons (attachment arrays, tombstones, 10s timeout, no backfill) - api.trails.cool removed (contradicted resolved decision #18) - Phase 1 ticked (shipped); Phase 2/3 items annotated with where each is tracked; specs/ → openspec/, activity.* → journal.*, cx21 → cx23 - brouter-web open question marked resolved-in-practice; new section pointing to where the unshipped vision is tracked Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.1 KiB
2.1 KiB
Activity participants (group tagging)
Pre-spec exploration. From docs/architecture.md §Activity Sharing &
Participants: when people ride/hike together, the activity creator tags
the others; tagged users confirm or decline; confirmed participants see
the activity on their own profile and can attach their own GPS trace and
photos. "Like photo tagging on social media, but for rides."
The activities.participants jsonb column exists as an untyped stub —
no flow, UI, or spec behind it.
Scope sketch
v1 (local)
- Tag local users on your activity (search by username, like the
share dialog planned in
route-sharing) - Notification
participant_tagged→ confirm / decline (Requests-tab pattern from follow requests) - Confirmed participation renders the activity on the participant's profile (clearly attributed: "with @alice")
- Participant may attach their own trace + photos to the shared activity — or link their own existing activity as "same outing" (the second option composes better with imports: Bob's Garmin recording is already its own activity)
- Schema: promote from jsonb stub to a real
journal.activity_participantstable (activity_id, user_id | participant_actor_iri, status, own_activity_id?) — the exactly-one-of local/remote pattern fromfollowsagain
v2 (federated)
- Tagging across trails instances; Mastodon sees mentions
(
"Rode with @bob@bob.trails.xyz") per the architecture - Confirm/decline crosses instances → needs a small custom activity
vocabulary or reuse of
Invite/Accept(the same pair route-federation needs — design together)
Constraints & notes
- Privacy: being tagged must never reveal more than the tagger could already see; declined/pending tags are visible only to tagger + taggee. Tagging requires the activity to be visible to the taggee.
- The "link own activity as same outing" model doubles as the natural
seed for multi-day collections' "shared trip" case — see
multi-day-collections.md. - Mention-style federation means participant handles end up in public Note content — privacy manifest update when v2 lands.