Skip to content

Record the server surface the core uses, and what happens when part of it is missing #10

Description

@iderex

The core reaches a Jellyfin server through some subset of its interface. That
subset is a dependency like any other and it changes between server versions.
Written down, it is a list somebody can check against a server before an operator
finds out at sign-in. Left undocumented, it gets discovered by a client crashing
on an older server.

This depends on entry 3 of #1, which decides the oldest server the core must work
against. The record can be written for whichever answer comes back. It cannot be
written for none.

What the record must answer

Every server endpoint the core depends on, with what it is used for.

For each one, which server versions carry it and whether its response shape
differs across them.

What the core does when an endpoint is absent or answers in a shape it does not
recognise. A named error from the shared vocabulary, a reduced capability the
client can ask about, or a refusal to sign in at all. One rule, applied to every
endpoint, with the reason for it.

Whether the core probes capability once per session or reacts per call, and what
each costs.

Done when

The record lists every endpoint with its purpose, states the fallback rule and
its reason, and names the server versions it was written against. Blocked on
entry 3 of #1.

Metadata

Metadata

Assignees

Labels

architectureShape of the core: boundaries, interfaces, contractsblocked-on-decisionWaits on an entry of #1 that is not answered yetdecisionAn architecture decision that must be written down with its reasons

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions