Pasture: Funkwhale joins, closing wave 1
Funkwhale 2.0.11: the API, a Celery worker with its beat and the front's nginx sharing one volume, on the shared Postgres and Redis, trusting the pasture's CA through REQUESTS_CA_BUNDLE; fwuser and its OAuth token made by its own tools. scenarios/funkwhale.sh passes its 16 checks: alice follows a channel, a track uploaded to it arrives as Audio with its file and duration, its deletion reaches PrivaPub, the unfollow, statistics. 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
9f0b25e92b
commit
8ae265c8f8
6 files changed
+158
-1
No files matched your search
+12
-1
@@ -831,11 +831,22 @@ FEP-8a8e (draft) is the common reference.
|
||||
- `Create{Audio}` whose `url` is an array: a page link plus the stream, with `bitrate` and `size`.
|
||||
- Also `duration`, `position`, `disc`, `album`, `license` and `image`; `summary` is a hashtag line (W2).
|
||||
- `Listen{Track}`.
|
||||
- Its Accept names our Follow under an id of its own on our origin (`…/alice#follows/<uuid>`), and its own id is
|
||||
that plus `/accept`: PrivaPub refused it as off its actor's origin (400) until 2026-10-05, so no follow of a
|
||||
channel ever completed.
|
||||
- A channel deletes uploads in one `Delete` with no id, the uploads' ids in a list as the object's `id`: PrivaPub read
|
||||
no id there until 2026-10-05.
|
||||
- Its NodeInfo discovery names the document under its swagger schema's URL as `rel`; PrivaPub now takes a link whose
|
||||
path names NodeInfo. A channel's followers and following collections answer 500.
|
||||
- **Pasture evidence (2026-10-05, Funkwhale 2.0.11, `tools/pasture/scenarios/funkwhale.sh`):** 16 checks pass: alice
|
||||
follows a channel; a track uploaded to it arrives as Audio with its file and duration; its deletion; the unfollow;
|
||||
statistics.
|
||||
- **Castopod:** an episode arrives as a link-only Note; the player comes from OpenGraph/oEmbed. Fetching the episode
|
||||
with the podcast type gives a `PodcastEpisode` with transcript and chapters.
|
||||
- **Owncast:** a `Service` actor; "go live" is a Note with a thumbnail.
|
||||
- **Gaps:**
|
||||
- **P1:** pick the audio Link out of `url`, sniff its type, apply W2. Surfaces as `MediaAttachment{type: audio}`
|
||||
- ~~**P1:** pick the audio Link out of `url`, sniff its type, apply W2~~ (Funkwhale's Audio arrives with its file and
|
||||
duration, 2026-10-05). Surfaces as `MediaAttachment{type: audio}`
|
||||
with `meta.original.duration` and the cover as `preview_url`.
|
||||
- **P2:** duration, cover, album, position and licence (own `privapub.audio`); the Castopod transcript and chapters.
|
||||
- **P3:** `Listen` history; Owncast live state.
|
||||
|
||||
Reference in new issue
Block a user