THE DERIVATION: the effective processing order — point order first, then sort within point.
Pure and total. A node whose at names a point the set does not declare sorts to the TAIL
rather than throwing: this is a normaliser, and a normaliser that throws leaves the console
with no order at all. Refusing an undeclared point is the DOOR's job, upstream of here, and
tapPointDeclared is the question it asks — so a tail node in a live chain means a door was
bypassed, which is a bug worth being able to see rather than one that takes the desk down.
The sort is stable in the declaration order, so two nodes with the same (at, sort) keep
the order they arrived in instead of swapping under an unrelated write.
THE DERIVATION: the effective processing order — point order first, then sort within point.
Pure and total. A node whose
atnames a point the set does not declare sorts to the TAIL rather than throwing: this is a normaliser, and a normaliser that throws leaves the console with no order at all. Refusing an undeclared point is the DOOR's job, upstream of here, andtapPointDeclaredis the question it asks — so a tail node in a live chain means a door was bypassed, which is a bug worth being able to see rather than one that takes the desk down.The sort is stable in the declaration order, so two nodes with the same
(at, sort)keep the order they arrived in instead of swapping under an unrelated write.