A roster of ORDINALS — the bare 1-based numbers a member-addressed family names its members
by (/patch/output/main/1's legs, whose members live at /leg/{legId}).
SHAPE ONLY, deliberately. The codec refuses anything that is not a list of positive integers
and stops there: how MANY a particular roster may hold, and which ordinals it actually holds,
are facts about that row's store, not about the wire type. Deciding them here would make the
cap answer OUT_OF_RANGE — a number-was-too-big refusal — where the row has a reason to give
("a mix feeds one destination; a matrix is how you fan it out"), and a codec's refusal is
exactly the one place that reason cannot be carried.
DUPLICATES SURVIVE the decode for the same reason. Silently collapsing [1,1] to [1] would
accept a body the client got wrong and report success — the failure mode a client cannot
detect, which this file refuses everywhere else too.
A roster of ORDINALS — the bare 1-based numbers a member-addressed family names its members by (
/patch/output/main/1'slegs, whose members live at/leg/{legId}).SHAPE ONLY, deliberately. The codec refuses anything that is not a list of positive integers and stops there: how MANY a particular roster may hold, and which ordinals it actually holds, are facts about that row's store, not about the wire type. Deciding them here would make the cap answer
OUT_OF_RANGE— a number-was-too-big refusal — where the row has a reason to give ("a mix feeds one destination; a matrix is how you fan it out"), and a codec's refusal is exactly the one place that reason cannot be carried.DUPLICATES SURVIVE the decode for the same reason. Silently collapsing
[1,1]to[1]would accept a body the client got wrong and report success — the failure mode a client cannot detect, which this file refuses everywhere else too.