Apply a binding that differs, and never repeat a generation a node passed (hq issue 243) #45

Merged
mesh-admin merged 1 commits from fix/a-reset-generation-silences-no-node into main 2026-10-05 08:01:12 +00:00
Contributor

After the store loss of issue 241 the licence manager's generation sequence restarted at 1; nodes apply a binding only when its generation is higher, so they discarded the login move and the rotations unseen (g14's login took four adoptions and three minutes; two machines kept pre-loss tokens).

  • claude-code: OnBinding skips only the binding already applied (same licence and generation); the bindings state keeps the latest value per node, so nothing older can arrive.
  • claude-licence-manager: holdings carry the generation the node applied; Consider first moves the sequence past the highest reported (GenerationsAbove, forward only).

Tests: one new test per module; both suites, vet and gofmt clean. The setval statement was tried on postgres 16: fresh sequence asked past 16 gives 17; asking past 5 afterwards does not move it back.

After the store loss of issue 241 the licence manager's generation sequence restarted at 1; nodes apply a binding only when its generation is higher, so they discarded the login move and the rotations unseen (g14's login took four adoptions and three minutes; two machines kept pre-loss tokens). - claude-code: `OnBinding` skips only the binding already applied (same licence and generation); the bindings state keeps the latest value per node, so nothing older can arrive. - claude-licence-manager: holdings carry the generation the node applied; `Consider` first moves the sequence past the highest reported (`GenerationsAbove`, forward only). Tests: one new test per module; both suites, vet and gofmt clean. The setval statement was tried on postgres 16: fresh sequence asked past 16 gives 17; asking past 5 afterwards does not move it back.
mesh-admin added 1 commit 2026-10-05 07:59:28 +00:00
A licence store rebuilt after issue 241 counted generations from one again,
and nodes that apply only a higher number discarded the login move and the
rotations unseen. Nodes now apply any binding other than the one applied;
the manager moves its sequence past every generation a node reports. hq
issue 243.
mesh-admin merged commit a3c8086d52 into main 2026-10-05 08:01:12 +00:00
mesh-admin deleted branch fix/a-reset-generation-silences-no-node 2026-10-05 08:01:13 +00:00
Author
Contributor

Delivery novox/mesh-catalog@a3c8086d52cb — 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 claude-code, claude-licence-manager → ace, g14, novox, shanks; no bus step

  • tier 0: claude-code, claude-licence-manager
  • ace: receives claude-code
  • g14: receives claude-code
  • novox: receives claude-code, claude-licence-manager
  • shanks: receives claude-code
  • claude-code keeps data (ADR 0233): what it holds is backed up before it moves

Transitions

  • 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#45 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-catalog@a3c8086d52cb` — **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 claude-code, claude-licence-manager → ace, g14, novox, shanks; no bus step - tier 0: claude-code, claude-licence-manager - ace: receives claude-code - g14: receives claude-code - novox: receives claude-code, claude-licence-manager - shanks: receives claude-code - claude-code keeps data (ADR 0233): what it holds is backed up before it moves **Transitions** - 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#45 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`.
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#45