A held module whose backup the node agent interrupted, recorded before #189, is not in the node own composition (issue 1289) #190

Merged
mesh-tools merged 1 commits from fix/held-backup-old-record into main 2026-10-31 19:27:49 +00:00
Member

Issue 1289 (R4c of design 47). Completes mesh-host #189 for a have written before it.

Why: #189 (on all four nodes since 2026-10-31 17:38) makes every new held have name the build it runs, but the control node's postgres have was written the night before: held, "the node agent was stopped while the backup ran", no fp, no composition. Main's rule counts a have that names no build as inside the node's own composition, so at 17:38:39 postgres was again composed without its handed and refused, before the start could back it up again.

The change: in internal/selfcompose/selfcompose.go (takeModuleHave), a have that is held, carries the detail agent.BackupInterrupted and names no fp and no composition is not inside the node's own composition. Every other case keeps main's rule (a waiting-yes have with no fp stays inside).

Quick fix vs thorough fix: the thorough part shipped in #189; this is the narrow completion for records written before it, the alternative the #189 review proposed.

Tests: a selfcompose table row with the control node's exact record (failed before, passes after); the agent's start loop runs that exact have and checks it is backed up once and applied once. gofmt, go vet (with and without -tags integration) and go test pass. Test function counts unchanged.

Reviewed-by: rev-heldbackup@shanks at 71afdf3ad2

https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL

Issue 1289 (R4c of design 47). Completes mesh-host #189 for a have written before it. **Why:** #189 (on all four nodes since 2026-10-31 17:38) makes every new held have name the build it runs, but the control node's postgres have was written the night before: held, "the node agent was stopped while the backup ran", no fp, no composition. Main's rule counts a have that names no build as inside the node's own composition, so at 17:38:39 postgres was again composed without its `handed` and refused, before the start could back it up again. **The change:** in `internal/selfcompose/selfcompose.go` (`takeModuleHave`), a have that is held, carries the detail `agent.BackupInterrupted` and names no fp and no composition is not inside the node's own composition. Every other case keeps main's rule (a waiting-yes have with no fp stays inside). **Quick fix vs thorough fix:** the thorough part shipped in #189; this is the narrow completion for records written before it, the alternative the #189 review proposed. **Tests:** a selfcompose table row with the control node's exact record (failed before, passes after); the agent's start loop runs that exact have and checks it is backed up once and applied once. gofmt, go vet (with and without -tags integration) and go test pass. Test function counts unchanged. Reviewed-by: rev-heldbackup@shanks at 71afdf3ad23443dc59a281e2b4d13eb97fc382f9 https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
mesh-tools added 1 commit 2026-10-31 19:20:26 +00:00
Keep a have held by an interrupted backup and naming nothing out of the node's own
mesh/delivery merged: source.main moved to novox/mesh-host@6c1f7cc7f50f
mesh/check being carried to 71afdf3ad234 on 6c1f7cc7f50f | from ffa63d25a066
71afdf3ad2
novox's postgres stayed held after mesh-host #189: its have, written before that fix,
names no build, so the node's own composition still took it in and was refused for its
secret reader before the start could back it up again. Only that exact record leaves
the node's own; every other have naming nothing keeps main's rule. Completes #189 for a
have written before it (issue 1289).

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
Author
Member

Delivery novox/mesh-host@71afdf3ad234 — merged since 2026-10-31T19:27:51Z

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

Transitions

  • 2026-10-31 19:20 (new) → proposed (announced): novox/mesh-host#190's head announced
  • 2026-10-31 19:20 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-31 19:27 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-host@71afdf3ad234` — **merged** since 2026-10-31T19:27:51Z **Source** — source.main moved to novox/mesh-host@6c1f7cc7f50f. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Transitions** - 2026-10-31 19:20 (new) → proposed (announced): novox/mesh-host#190's head announced - 2026-10-31 19:20 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-31 19:27 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-tools merged commit 6c1f7cc7f5 into main 2026-10-31 19:27:49 +00:00
mesh-tools deleted branch fix/held-backup-old-record 2026-10-31 19:27:49 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-host#190