The target gate runs a check reported as ABI floor build. It exists because a
build against a newer software development kit compiles fine while using a member
that does not exist on the oldest server the plugin claims to support, and the
failure then appears at sign-in on somebody's real server rather than in the
gate.
The same trap exists here in a different shape. The core talks to a server over
its interface rather than linking against it, so the failure is a request to an
endpoint an older server does not have, or a response field that arrived in a
later version, and it appears the same way: at sign-in on somebody's real server.
The deviation and its reason: the floor is a server interface version rather than
a linked library version, so the check runs the suite against fixtures recorded
from the oldest supported server rather than compiling against pinned libraries.
What this produces
A fixture set per supported server line, recorded from real servers of that line.
A gate leg running the suite against the oldest line's fixtures, so that a
dependency on something newer reddens the pull request that introduced it.
A stated rule for what happens when a newer line offers something better, which
is the missing-endpoint rule from #10 rather than a second code path.
Done when
The oldest supported line has a full fixture set, the gate runs the suite against
it, and a deliberate use of a newer endpoint without the fallback from #10
reddens that leg. Blocked on entry 3 of #1, and on #10 and #21.
The target gate runs a check reported as
ABI floor build. It exists because abuild against a newer software development kit compiles fine while using a member
that does not exist on the oldest server the plugin claims to support, and the
failure then appears at sign-in on somebody's real server rather than in the
gate.
The same trap exists here in a different shape. The core talks to a server over
its interface rather than linking against it, so the failure is a request to an
endpoint an older server does not have, or a response field that arrived in a
later version, and it appears the same way: at sign-in on somebody's real server.
The deviation and its reason: the floor is a server interface version rather than
a linked library version, so the check runs the suite against fixtures recorded
from the oldest supported server rather than compiling against pinned libraries.
What this produces
A fixture set per supported server line, recorded from real servers of that line.
A gate leg running the suite against the oldest line's fixtures, so that a
dependency on something newer reddens the pull request that introduced it.
A stated rule for what happens when a newer line offers something better, which
is the missing-endpoint rule from #10 rather than a second code path.
Done when
The oldest supported line has a full fixture set, the gate runs the suite against
it, and a deliberate use of a newer endpoint without the fallback from #10
reddens that leg. Blocked on entry 3 of #1, and on #10 and #21.