The controller asks the operator and acts on the warrant (hq ADR 0259 §6) #157
Closed
mesh-admin
wants to merge 0 commits from
feat/the-controller-asks-the-operator into main
pull from: feat/the-controller-asks-the-operator
merge into: :main
:main
:fix/sweep-2026-10-30
:fix/checker-full-failure
:feat/1945-user-list-switch
:fix/1945-mesh-grants-publishes-memberships
:fix/issued-states-follow-the-module
:fix/1945-credential-on-assignment
:fix/r6-mirror-on-change
:fix/store-forge-address
:fix/r6-look-again-after-unlock
:fix/r6-key-waits-said
:fix/1931-reconnects-verb
:fix/forge-requires-no-status
:fix/906-lease-renewal
:feat/r4e-controller
:fix/1106-sdk-member-merges
:fix/1399-person-word-test
:fix/1652-checks-wait
:feat/files-through-the-store-files-verbs
:fix/1649-held-ask-handed-out-twice
:fix/1658-sdk-items
:fix/1334-a-bus-reload-fails-a-tier
:feat/chain-on-the-bus
:fix/701-a-name-nothing-answers-is-not-used
:fix/270-a-dead-bus-watch-is-heard
:fix/630-config-values-from-four-sources
:fix/613-node-smb-server
:feat/328-libraries-and-module-users
:feat/325-identities-and-kept-folders
:feat/bus-view-principal
:test/plan-diff-left-out-line
:fix/the-registry-trust-test-reads-the-runtimes-module
:fix/the-runtime-file-is-the-runtimes
:feat/build-edges-are-recorded
:fix/several-contributions-collide-in-grants-v2
No Reviewers
No labels
Milestone
No items
No Milestone
Assignees
agent-ace
agent-g14
agent-novox
agent-shanks
jschoubben
mesh-tools
miel.truyen
nox-agent
Clear assignees
No Assignees
No due date set.
Dependencies
No dependencies set.
Reference: novox/mesh-controller#157
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Step 5 of hq ADR 0259 (hq #211). The controller asks the router like any other module, and performs the answer the operator chose with its own grant. It holds no channel, identity or factor, and nothing in it is Telegram-specific.
Stacked on #154 (head
a1b7be8). Review the two commits after it:7ea2ba4(the asker) and9877837(the changes after review).What
conditions.ActiongainsLevel(acknowledge or approve). Silence acknowledges. These producers offer approve-level actions again:mesh-delivery.releaseandstop);mesh-controller.plansgo and stop, with cause operator-answer);node-service-manager.restarton its machine).asker.go,asker_wire.go):accept.ask.mesh-controller, with About set to the condition key.mesh-controller_asked.decided.mesh-controller), it acts once per ask, through the verb the action names. The hand-act is recorded underwarrant(by, via, ask, proofs, requested-by), as a person's decision.plans.Changed after review (
9877837)askText). This resolves the conflict with #155's test, and the threeplain_words_test.goexpectations are back to the suffix, now with the action labels.operator-channelwithasknamed by its caller. Its absence is said once.go/asks). Move to the tag once mesh-sdk #12 merges.Warrant.For).askedbucket's bounds are tested: history 1, 30 days, a byte cap.Tests
asker_test.go, after review:TestAnAskTheRouterRefusedWaitsUntilSomethingChangesTestAtMostThreeAsksAreOpenTheMostUrgentFirstTestNothingIsAskedWithoutARouterTestTheAskDropsWhereItIsAnsweredAndTheConditionKeepsItTestAWarrantIsActedOnlyForAnOpenAskItClaimsBeforeItExpired(late warrant, lost claim, cancelled ask)internal/broker/controller_buckets_test.go:TestWhatTheControllerAskedIsBounded.sh merge-check.shpasses locally, with mesh-host #59 beside it. The grants are unchanged from #59, so #59 needs no change.Merge order: after #154, and together with mesh-host #59 (the installer's first user list carries these grants; the genesis test fails without it). After mesh-tools #23, the mesh-sdk #12 tag, and mesh-catalog #133 live. Do not merge without review.
Delivery
novox/mesh-controller@0559b808874b— stopped since 2026-10-09T17:34:15ZDelivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.Merge check at
48aa8f68mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)mesh/repo-check: FAIL — its merge-check.sh failed: --- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.62s)Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on ace as
build-1791472527719622571(builds --log build-1791472527719622571).The first
mesh/repo-checkfailed on one test only:TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose. It compares the controller's derived grants with the installer's template in mesh-host. That template now carries the new grants in mesh-host #59. With #59 beside this branch the test passes locally. Merge #59 first, then recheck this PR. Every other package passed, andmesh/merge-gatepassed (4 of 4 machines compose).48aa8f68d6to98778376caMerge check at
98778376mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)mesh/repo-check: FAIL — its merge-check.sh failed: --- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.66s)Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on g14 as
build-1791477469485950442(builds --log build-1791477469485950442).98778376cato1e361a17a9Merge check at
1e361a17mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)mesh/repo-check: FAIL — its merge-check.sh failed: --- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.65s)Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on ace as
build-1791536951915878830(builds --log build-1791536951915878830).Merge check at
ec4f42bcmesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)mesh/repo-check: FAIL — its merge-check.sh failed: --- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.79s)Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on novox as
build-1791537439632477729(builds --log build-1791537439632477729).ec4f42bc5cto411049a655Review of 2026-10-09 addressed at head
411049a(on #1540c828fb):<key>.acknowledge. Test:TestAnAcknowledgementNeverSharesAnAskWithAnApproval(fails on the old head).TestAStaleCancelDoesNotWriteOverAnActon a real bus (fails on the old head).mesh-controller rehearse, with both answers at the approve level. Its hand-act readswarrant rehearsal rehearsal=approve.TestTwoAnswersAtOnceActOnceon a real bus. This test also passes on the old head, because its claim was already a compare-and-set.event.decided; the existing grant tests cover that.verified-senderonly withMESH_LAB_ASKS_ROOT_FREE=true.merge-check.shpasses locally with mesh-host #59 checked out beside it.Merge check at
411049a6mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)mesh/repo-check: FAIL — its merge-check.sh failed: --- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.73s)Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on novox as
build-1791542326843304564(builds --log build-1791542326843304564).411049a655to29d6495cabConfirmation-review round (2026-10-09), restacked on #154
c544c2a. New:startedAtTheTerminal(an ordinary mesh-cli line, #176, read as the terminal before); test failed before.askedrenamedcliAsked(it clashed with the asker's type).merge-check.sh passed locally on the head with mesh-host #59 beside it. Merge with mesh-host #59.
Merge check at
29d6495cmesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)mesh/repo-check: FAIL — its merge-check.sh failed: --- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.77s)Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on novox as
build-1791550489261439965(builds --log build-1791550489261439965).29d6495cabto0559b80887Merge check at
0559b808mesh/merge-gate: PASS — every machine composes with the change as it did without (4 of 4 compose) (modules: build-agent, mesh-controller, route-proxy)mesh/repo-check: FAIL — its merge-check.sh failed: --- FAIL: TestTheInstallersFirstUserListIsWhatTheControllerWouldCompose (0.56s)Delivery plan — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
Run by the build seat on g14 as
build-1791555802690511487(builds --log build-1791555802690511487).