From 37613ec6a9632e05ac9d71645992ebb830ca9fd3 Mon Sep 17 00:00:00 2001 From: jochen Date: Sun, 1 Nov 2026 16:09:50 +0100 Subject: [PATCH] pacman reads the node-engine's packages as mesh-host.packages, the bucket each engine writes (ADR 0565 clause 6, issue 1953) The read node-engine.packages named a bucket node-engine_packages that nothing writes: the engine's manifest is mesh-host's, so its state is mesh-host_packages, read as disk-load reads mesh-host.data. The view still names which source answered, the engine's key or the controller's mirror. Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL --- modules/pacman/README.md | 2 +- modules/pacman/cmd/pacman-tools/keeper_integration_test.go | 2 +- modules/pacman/cmd/pacman-tools/keeper_manifest_test.go | 4 +++- modules/pacman/cmd/pacman-tools/view.go | 5 +++-- modules/pacman/module.json | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/modules/pacman/README.md b/modules/pacman/README.md index d5df40c18..772c874b7 100644 --- a/modules/pacman/README.md +++ b/modules/pacman/README.md @@ -30,7 +30,7 @@ that seat (ADR 0207). `package.changed`. A list over the bus's cap on a value is not written: the key keeps its last value and `.not-current` says the size and since when, which the health says too. `pacman_packages`, `pacman_updates`, `pacman_installed` and `pacman_foreign` answer every node from these states, and what no - module declares from the node-engine's `packages`, else the controller's `declared-packages` until its lease is written, without asking a machine. + module declares from the node-engine's `packages` (read as `mesh-host.packages`, the engine's manifest's name), else the controller's `declared-packages` until its lease is written, without asking a machine. - **Upgrades as runs, one node at a time (ADR 0508).** Every full upgrade and every rollback is a run in the state `runs` at `.`, written at each step and emitted as it: the package record taken and read back (`records`, kept `record-days`), the DKMS gate before the transaction (a kernel an installed DKMS module's own diff --git a/modules/pacman/cmd/pacman-tools/keeper_integration_test.go b/modules/pacman/cmd/pacman-tools/keeper_integration_test.go index d994641cf..4ed30c81d 100644 --- a/modules/pacman/cmd/pacman-tools/keeper_integration_test.go +++ b/modules/pacman/cmd/pacman-tools/keeper_integration_test.go @@ -102,7 +102,7 @@ func TestTheKeeperPutsTheNodesPackagesOnARealBusAndAnotherInstanceReadsThem(t *t } buckets[name] = kv } - declared, err := js.CreateKeyValue(ctx, jetstream.KeyValueConfig{Bucket: "node-engine_packages"}) + declared, err := js.CreateKeyValue(ctx, jetstream.KeyValueConfig{Bucket: "mesh-host_packages"}) if err != nil { t.Fatal(err) } diff --git a/modules/pacman/cmd/pacman-tools/keeper_manifest_test.go b/modules/pacman/cmd/pacman-tools/keeper_manifest_test.go index 917f80964..61d4fc6ac 100644 --- a/modules/pacman/cmd/pacman-tools/keeper_manifest_test.go +++ b/modules/pacman/cmd/pacman-tools/keeper_manifest_test.go @@ -14,6 +14,8 @@ import ( "reflect" "strings" "testing" + + "git.novox.be/novox/mesh-sdk/go/delivery" ) // rawManifest is the manifest as written, every field kept. @@ -133,7 +135,7 @@ func TestTheKeeperDeclaresTheModulesStatesAndEvents(t *testing.T) { } // The verbs read which packages each node's modules declare; the process reads no other module's state // (ADR 0507 §5, ADR 0436 §1). - if got := strs(raw["reads"]); !reflect.DeepEqual(got, []string{"node-engine.packages", "mesh-controller.declared-packages"}) { + if got := strs(raw["reads"]); !reflect.DeepEqual(got, []string{delivery.EnginePackagesRead, "mesh-controller.declared-packages"}) { t.Errorf("reads: %v", got) } } diff --git a/modules/pacman/cmd/pacman-tools/view.go b/modules/pacman/cmd/pacman-tools/view.go index 6a1fea925..4521429ba 100644 --- a/modules/pacman/cmd/pacman-tools/view.go +++ b/modules/pacman/cmd/pacman-tools/view.go @@ -24,9 +24,10 @@ const DeclaredPackagesState = SourceEngine // whose engine has written no key yet, until the controller's lease is written away (ADR 0565 clause 6). const ControllerDeclaredState = "mesh-controller.declared-packages" -// The sources a node's declaration is read from, said in the answer. +// The sources a node's declaration is read from, said in the answer: the node-engine's state, read by its manifest's +// name (mesh-host.packages, its bucket mesh-host_packages; mesh-sdk delivery.EnginePackagesRead), and the mirror. const ( - SourceEngine = "node-engine.packages" + SourceEngine = delivery.EnginePackagesRead SourceController = "mesh-controller.declared-packages" ) diff --git a/modules/pacman/module.json b/modules/pacman/module.json index 0aa330d40..7029d0fe2 100644 --- a/modules/pacman/module.json +++ b/modules/pacman/module.json @@ -12,7 +12,7 @@ } ], "reads": [ - "node-engine.packages", + "mesh-host.packages", "mesh-controller.declared-packages" ], "uses": [