The first handover records the standing holder without re-judging it #93

Merged
jschoubben merged 1 commits from fix/record-the-standing-holder into main 2026-09-27 21:35:08 +00:00
Owner

Found on the live mesh minutes after migration 0040 moved the bus seat's row to mesh-bus. On a mesh that predates the holder record, every handover has to begin by writing down who already holds the seat — otherwise the next holder cannot be assigned beside it, because two eligible claimants with nothing on record are refused. But the standing holder no longer satisfies what the seat delivers (on purpose — that was 0040's point), so seat mesh-broker --to <node>/lavinmq refused it, and nothing could stand beside it.

Recording who already holds is not making a new holder. Derivation never read what the seat delivers, so the standing holder holds regardless. When nothing is on record and the named assignment claims the seat at its scope (alias-aware, like every other seat lookup), only that claim is checked. Every change of holder is still judged in full through CanHold.

Command and catalogue packages green. The command's branch has no store-backed unit test of its own — the cmd package has no harness for one — and is covered by the store and resolver tests underneath plus its first live use, which is next.

Found on the live mesh minutes after migration 0040 moved the bus seat's row to `mesh-bus`. On a mesh that predates the holder record, every handover has to begin by writing down who already holds the seat — otherwise the next holder cannot be assigned beside it, because two eligible claimants with nothing on record are refused. But the standing holder no longer satisfies what the seat delivers (on purpose — that was 0040's point), so `seat mesh-broker --to <node>/lavinmq` refused it, and nothing could stand beside it. Recording who already holds is not making a new holder. Derivation never read what the seat delivers, so the standing holder holds regardless. When nothing is on record and the named assignment claims the seat at its scope (alias-aware, like every other seat lookup), only that claim is checked. Every *change* of holder is still judged in full through `CanHold`. Command and catalogue packages green. The command's branch has no store-backed unit test of its own — the cmd package has no harness for one — and is covered by the store and resolver tests underneath plus its first live use, which is next.
jschoubben added 1 commit 2026-09-27 21:34:58 +00:00
On a mesh that predates the record, every handover has to begin by writing down who
already holds the seat — otherwise the next holder cannot be assigned beside it,
because two eligible claimants with nothing on record are refused. Found on the
live mesh minutes after 0040 moved the bus seat's row: the standing holder no
longer satisfies what the seat delivers, on purpose, and so could not be recorded,
and so nothing could stand beside it.

Recording who already holds is not making a new holder. Derivation never read
what the seat delivers, so the standing holder holds regardless; when nothing is
on record and the named assignment claims the seat at its scope, only that claim
is checked. Every change of holder is still judged in full.
jschoubben merged commit 337aaea123 into main 2026-09-27 21:35:08 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#93