The assigner calls the controller only with the arguments its contract declares, and a refused call is a condition (issue 774) #118

Merged
mesh-tools merged 2 commits from fix/held-module-and-assigner-contract into main 2026-10-30 21:17:41 +00:00
Member

Since 16b71ca (10-28) every assign, unassign, pin and unpin carried an undeclared "why" and was refused, so no approved placement reached the controller and no bus account was minted (the 21:04 outage). Only contract arguments are sent; TestControllerCallsFollowTheContract checks every call against catalogue.ControllerVerbs; a refused call raises an urgent condition that clears when the call is answered or the two sources agree (pins read through placement-export, event-driven). All nine modules pin mesh-sdk eff81f1.

Group fix/held-module-and-assigner-contract (mesh-sdk, mesh-host, mesh-delivery, mesh-catalog), issue 774. The lead merges once mesh/check and mesh/delivery-group are green (operator, 2026-10-30 20:41); mesh-sdk first.
Reviewed-by: rev-sweep@shanks at 8fe6442c47

Since 16b71ca (10-28) every assign, unassign, pin and unpin carried an undeclared "why" and was refused, so no approved placement reached the controller and no bus account was minted (the 21:04 outage). Only contract arguments are sent; TestControllerCallsFollowTheContract checks every call against catalogue.ControllerVerbs; a refused call raises an urgent condition that clears when the call is answered or the two sources agree (pins read through placement-export, event-driven). All nine modules pin mesh-sdk eff81f1. Group fix/held-module-and-assigner-contract (mesh-sdk, mesh-host, mesh-delivery, mesh-catalog), issue 774. The lead merges once mesh/check and mesh/delivery-group are green (operator, 2026-10-30 20:41); mesh-sdk first. Reviewed-by: rev-sweep@shanks at 8fe6442c4754dac230e1bc69ddbf2a0f9236cbc8
mesh-tools added 2 commits 2026-10-30 20:31:03 +00:00
The assigner added "why" to every assign, unassign, pin and unpin since 2026-10-28; the controller's seat contract
takes no such argument, so it refused each one and did nothing. No approved placement reached the controller's
assignments, no bus account was minted for a newly placed module, and the refusal was only a journal line.

Quick fix: drop "why" from ControllerCalls. Thorough fix: a contract test that every argument ControllerCalls gives,
for every verb, is declared (and every required one given) in catalogue.ControllerVerbs, plus an urgent condition per
pair whose call was refused (verb, node, module, the controller's words), cleared when a later call is answered or the
two sources agree. Chosen: both here; a caller-side check of arguments against the seat's contract for every seat
call belongs in mesh-sdk and is noted for the lead. The warrant stays in the assigner's own record (placement-changed,
the hand-act log).

Every module pins mesh-sdk eff81f1220e2 (in review).
Clear a refused pin's condition once the controller's pins agree, and take over a previous process's conditions only once the findings are read (issue 774)
mesh/delivery merged: source.main moved to novox/mesh-delivery@52a1570b3e3c
mesh/delivery-group group fix/held-module-and-assigner-contract merged: every member is merged
mesh/check checking 8fe6442c4754 on c104e7500d21 | novox/mesh-delivery#118 in group fix/held-module-and-assigner-contract
8fe6442c47
A pin made by hand, as the condition's Needs asks, changed nothing the assigner looked at, so its urgent condition
never cleared, and a restart left every one raised. The assigner now reads the controller's pins (placement-export,
asked again only after the controller's compositions change, never on a timer) and clears a pin's condition once
they agree with the placement's after being seen differing, as a module's place already did. The first pass takes
over the call conditions a previous process raised, pins and places alike, and retries at the next pass when the
findings cannot be read.
Author
Member

Delivery novox/mesh-delivery@8fe6442c4754 — merged since 2026-10-30T21:17:44Z

Source — source.main moved to novox/mesh-delivery@52a1570b3e. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.

Group fix/held-module-and-assigner-contract: novox/mesh-catalog@b5475cfa5c, novox/mesh-delivery@8fe6442c47, novox/mesh-host@62cfb45789, novox/mesh-sdk@eff81f1220

  • composed together: pass — the checker's verdict at the members' heads (e5a2974f3e1e)

Transitions

  • 2026-10-30 20:31 (new) → proposed (announced): novox/mesh-delivery#118's head announced
  • 2026-10-30 20:31 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
  • 2026-10-30 21:17 ready → merged (merged): on the trunk its modules follow: merged there

The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-delivery@8fe6442c4754` — **merged** since 2026-10-30T21:17:44Z **Source** — source.main moved to novox/mesh-delivery@52a1570b3e3c. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/held-module-and-assigner-contract`: novox/mesh-catalog@b5475cfa5c3d, novox/mesh-delivery@8fe6442c4754, novox/mesh-host@62cfb45789c1, novox/mesh-sdk@eff81f1220e2 - composed together: pass — the checker's verdict at the members' heads (e5a2974f3e1e) **Transitions** - 2026-10-30 20:31 (new) → proposed (announced): novox/mesh-delivery#118's head announced - 2026-10-30 20:31 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false) - 2026-10-30 21:17 ready → merged (merged): on the trunk its modules follow: merged there The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
Author
Member

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
Author
Member

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: a head it covers moved on: the heads it covers are no longer the group's heads. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-tools merged commit 52a1570b3e into main 2026-10-30 21:17:41 +00:00
mesh-tools deleted branch fix/held-module-and-assigner-contract 2026-10-30 21:17:42 +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-delivery#118