Compiled seat renamed node-hostname (verbs entries/add/remove unchanged). Migration 0063 renames the store row (both-rows case handled as 0048) and keeps node-hosts-file as an alias, so hosts — still registered and assigned while machines move — holds the same seat.
Bug found: checkClaims compared claims by spelling, so hosts (old name) and hostname (new) would both have held the seat on one machine. Claims are now compared by canonical seat (canonicalSeat), also against holders elsewhere.
Tests (hostname_seat_test.go): alias resolves with verbs intact; old+new claimant refused on one node, old alone resolves; the catalogue's /etc/hostname is the hostname setting — left out naming the key with none, operator value wins, a mesh-wide ${machine:name} gives the mesh name, a node value overrides it.
Order: merge with mesh-catalog hostname-module (catalogue first or same window; tests read it); roll this out before the catalogue registers hostname (an older controller refuses a claim on node-hostname). go vet, go test ./... green.
- Compiled seat renamed `node-hostname` (verbs entries/add/remove unchanged). Migration **0063** renames the store row (both-rows case handled as 0048) and keeps `node-hosts-file` as an alias, so `hosts` — still registered and assigned while machines move — holds the same seat.
- Bug found: `checkClaims` compared claims by spelling, so `hosts` (old name) and `hostname` (new) would both have held the seat on one machine. Claims are now compared by canonical seat (`canonicalSeat`), also against holders elsewhere.
- Tests (`hostname_seat_test.go`): alias resolves with verbs intact; old+new claimant refused on one node, old alone resolves; the catalogue's `/etc/hostname` is the `hostname` setting — left out naming the key with none, operator value wins, a mesh-wide `${machine:name}` gives the mesh name, a node value overrides it.
**Order:** merge with mesh-catalog `hostname-module` (catalogue first or same window; tests read it); roll this out before the catalogue registers `hostname` (an older controller refuses a claim on `node-hostname`). `go vet`, `go test ./...` green.
The seat now covers /etc/hostname too. The migration keeps the old name as
an alias so hosts, still assigned while machines move, holds the same seat.
Claims were compared by spelling, so the old and new module would both have
held it on one machine; they are now compared by the seat they resolve to.
build-agent keeps data (ADR 0233): what it holds is backed up before it moves
route-proxy provides route: its consumers are sent again after it
route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
Transitions
2026-10-06 23:05 (new) → proposed (announced): novox/mesh-controller#69 merged; its head was not heard by this owner, so it is made from the forge's word
2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-controller@cc25baa5639d` — **held** since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — `mesh-delivery.release` with why lets it go on.
**Delivery plan** — builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step
- tier 0: mesh-controller
- tier 1: build-agent
- tier 2: route-proxy
- ace: receives build-agent, route-proxy
- g14: receives build-agent
- novox: receives mesh-controller, build-agent, route-proxy
- shanks: receives build-agent
- build-agent keeps data (ADR 0233): what it holds is backed up before it moves
- route-proxy provides route: its consumers are sent again after it
- route-proxy keeps data (ADR 0233): what it holds is backed up before it moves
**Transitions**
- 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-controller#69 merged; its head was not heard by this owner, so it is made from the forge's word
- 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
This repo is archived. You cannot comment on pull requests.
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.
node-hostname(verbs entries/add/remove unchanged). Migration 0063 renames the store row (both-rows case handled as 0048) and keepsnode-hosts-fileas an alias, sohosts— still registered and assigned while machines move — holds the same seat.checkClaimscompared claims by spelling, sohosts(old name) andhostname(new) would both have held the seat on one machine. Claims are now compared by canonical seat (canonicalSeat), also against holders elsewhere.hostname_seat_test.go): alias resolves with verbs intact; old+new claimant refused on one node, old alone resolves; the catalogue's/etc/hostnameis thehostnamesetting — left out naming the key with none, operator value wins, a mesh-wide${machine:name}gives the mesh name, a node value overrides it.Order: merge with mesh-catalog
hostname-module(catalogue first or same window; tests read it); roll this out before the catalogue registershostname(an older controller refuses a claim onnode-hostname).go vet,go test ./...green.Delivery
novox/mesh-controller@cc25baa5639d— held since 2026-10-06T23:05:28ZHeld for a person: merged without a passing check: only a person decides that it goes on —
mesh-delivery.releasewith why lets it go on.Delivery 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.