decisions/first-release.md decides the catalogue's first release carries one
plugin, and it argued that against a source set in which exactly one repository
had published anything. A second one has now published, so the input to that
argument has moved and the answer is a maintainer's rather than a rewrite of the
file.
The evidence
for r in discover invites metadata-sync requests server-pairing share-links \n smart-collections sso stats watch-sync watchlist whisper-subtitles; do
printf "%s %s
" "$r" "$(gh api "repos/Flowfin/jellyfin-plugin-$r/releases?per_page=100" --jq 'length')"
done
discover 0
invites 0
metadata-sync 0
requests 1
server-pairing 0
share-links 0
smart-collections 0
sso 54
stats 0
watch-sync 0
watchlist 0
whisper-subtitles 0
Run 2026-08-08. The release on requests is a finished build rather than a test
one, and it carries an archive and sidecars in the same shape the pairing rule
was written against:
gh api 'repos/Flowfin/jellyfin-plugin-requests/releases?per_page=100' \n --jq '.[] | {tag: .tag_name, prerelease, draft, assets: [.assets[].name]}'
{"assets":["requests_0.1.0.0.md5","requests_0.1.0.0.sha256","requests_0.1.0.0.zip","requests_0.1.0.0.zip.meta.json"],"draft":false,"prerelease":false,"tag":"0.1.0.0-stable"}
Run 2026-08-08. Its tag matches the same pattern the channel decision declares for
the other repository, so nothing about the split has to change for it to be
classifiable.
What is at stake either way
One entry. The argument already in decisions/first-release.md holds: fewer
things to debug against a real server, and the catalogue grows with no change here
when the second one is added. The cost is that a plugin which is ready is left out
of a catalogue that exists, and somebody has to decide when it goes in.
Two entries. The catalogue ships what is actually publishable, and the per-plugin
parts of the generator get exercised against two sources rather than one, which is
where a field that only ever held one value shows itself. The cost is that the
first install test now depends on two repositories being right rather than one,
and the second one has a single release with no history behind it.
What does not change either way: the generator reads a declaration rather than a
list written into it, so this decides what the declaration says on the day of the
release and not what the code can do.
Done when
decisions/first-release.md states how many entries the first release carries and
why, against the counts above rather than against the ones it was written with.
Reading-decidable.
decisions/first-release.mddecides the catalogue's first release carries oneplugin, and it argued that against a source set in which exactly one repository
had published anything. A second one has now published, so the input to that
argument has moved and the answer is a maintainer's rather than a rewrite of the
file.
The evidence
" "$r" "$(gh api "repos/Flowfin/jellyfin-plugin-$r/releases?per_page=100" --jq 'length')"
done
discover 0
invites 0
metadata-sync 0
requests 1
server-pairing 0
share-links 0
smart-collections 0
sso 54
stats 0
watch-sync 0
watchlist 0
whisper-subtitles 0
Run 2026-08-08. The release on
requestsis a finished build rather than a testone, and it carries an archive and sidecars in the same shape the pairing rule
was written against:
Run 2026-08-08. Its tag matches the same pattern the channel decision declares for
the other repository, so nothing about the split has to change for it to be
classifiable.
What is at stake either way
One entry. The argument already in
decisions/first-release.mdholds: fewerthings to debug against a real server, and the catalogue grows with no change here
when the second one is added. The cost is that a plugin which is ready is left out
of a catalogue that exists, and somebody has to decide when it goes in.
Two entries. The catalogue ships what is actually publishable, and the per-plugin
parts of the generator get exercised against two sources rather than one, which is
where a field that only ever held one value shows itself. The cost is that the
first install test now depends on two repositories being right rather than one,
and the second one has a single release with no history behind it.
What does not change either way: the generator reads a declaration rather than a
list written into it, so this decides what the declaration says on the day of the
release and not what the code can do.
Done when
decisions/first-release.mdstates how many entries the first release carries andwhy, against the counts above rather than against the ones it was written with.
Reading-decidable.