diff --git a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/integration_test.go b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/integration_test.go index 18a3e558..a0231066 100644 --- a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/integration_test.go +++ b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/integration_test.go @@ -1123,7 +1123,7 @@ func (s bedStore) del(state, key string) error { return s.kv(state).Delete(s.b.c func (s bedStore) history(string, string) ([]stdio.StateRevision, error) { return nil, nil } -// 1126 (ADR 0567 §2-§6), the seat mesh-placement whole on the bus: a proposal moving web from the anchor to the laptop is +// 1126 (ADR 0567 §2-§6), the seat mesh-module-assigner whole on the bus: a proposal moving web from the anchor to the laptop is // proposed through the verb, the assigner finds both nodes must answer, they answer the same in their haves, the // operator is asked and approves, and each key is written at a new revision while placement-changed is heard on the // assigner's stream naming both nodes. A second proposal laid over the old revision of a key moved since is laid again, diff --git a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main.go b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main.go index ae0cd32c..d72fc8a0 100644 --- a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main.go +++ b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main.go @@ -73,7 +73,7 @@ var readBuckets = []string{ // node's compositions, which mesh-wants.upgrade compares (novox/hq ADR 0593 §8). var readFamilies = []string{buckets.ComposedRead} -// ownBuckets are the assigner's own states, as its manifest declares them: the seat mesh-placement's three among them +// ownBuckets are the assigner's own states, as its manifest declares them: the seat mesh-module-assigner's three among them // (ADR 0567 §1), named after the assigner as every module state is. var ownBuckets = []string{buckets.Asks, buckets.Differences, buckets.Puts, buckets.Wants, plc.PlacementBucket, plc.ProposalsBucket, @@ -94,7 +94,7 @@ var seatBuckets = []string{plc.PlacementBucket, plc.ProposalsBucket, plc.Candida // keptStates is what the assigner keeps and who may read it (ADR 0495 §2-§3): its wants by the watchman and the view // (and the node agent from release 6), its differences by the view, its asks by the view -// and the teller, its puts by whoever follows one (ADR 0546), and the seat mesh-placement's placement, proposals and +// and the teller, its puts by whoever follows one (ADR 0546), and the seat mesh-module-assigner's placement, proposals and // candidates by the node agents, the grants part, mesh-config and the view (ADR 0567 §9), and its placement by // the builder, the checker and the indexer, through mesh-sdk's toolchain gate (issue 774, ADR 0549 §3). var keptStates = []announce.State{ @@ -423,7 +423,7 @@ func follow(ctx context.Context, js jetstream.JetStream, nc process.Subscriber, placementAppeared := make(chan appeared, len(seatBuckets)+2) for _, name := range seatBuckets { if kvs[name] == nil && js != nil { - process.AwaitBucket(ctx, js, nc, name, "the seat mesh-placement waits for it", + process.AwaitBucket(ctx, js, nc, name, "the seat mesh-module-assigner waits for it", logger.Printf).Ready(func(kv jetstream.KeyValue) { placementAppeared <- appeared{name, kv} }) } } diff --git a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/pass.go b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/pass.go index 94fb71fa..fe5eeac0 100644 --- a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/pass.go +++ b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/pass.go @@ -68,7 +68,7 @@ type passer struct { // callsCleared says the first pass cleared the conditions of refused controller calls a previous process raised // (clearStaleCalls): the assigner makes no such call now (issue 774). callsCleared bool - // The seat mesh-placement's holder (seat.go, ADR 0567): its acts (nil: none is made), how it says + // The seat mesh-module-assigner's holder (seat.go, ADR 0567): its acts (nil: none is made), how it says // the seat's events (nil: none is said), the proposals it said, and what Intended computed by proposal and base. seat *seatActs publish publisher @@ -1105,7 +1105,7 @@ func (p *passer) unplacedFindings() { } } -// seatHolders writes the seat mesh-placement's state seat-holders from every node's placement (ADR 0571 §4): one key per +// seatHolders writes the seat mesh-module-assigner's state seat-holders from every node's placement (ADR 0571 §4): one key per // seat held once, ``, and one per node of a node seat, `.`, written only where it differs, and a key no // placement holds any more deleted. A pass follows each placement change and each manifest the indexer takes in, so no // timer writes it. diff --git a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/seat.go b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/seat.go index 306c4b7d..c84dc005 100644 --- a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/seat.go +++ b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/seat.go @@ -35,7 +35,7 @@ import ( plc "mesh-delivery-assigner/internal/placement" ) -// The seat mesh-placement's holder in the assigner's process (novox/hq ADR 0567 §2-§8): each pass follows every open +// The seat mesh-module-assigner's holder in the assigner's process (novox/hq ADR 0567 §2-§8): each pass follows every open // proposal one step, from what the world holds. A proposal the verbs wrote is said (placement-proposed); the nodes it // must hear from are found by composing every node with and without it, and those its key does not change get a reached // candidate; their answers are judged (placement-judged) and, on a passing verdict, the operator is asked to approve it; diff --git a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/seat_tools.go b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/seat_tools.go index 1626c940..9cd6f87c 100644 --- a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/seat_tools.go +++ b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/seat_tools.go @@ -22,7 +22,7 @@ import ( plc "mesh-delivery-assigner/internal/placement" ) -// The seat mesh-placement's seven verbs (novox/hq ADR 0567 §10), served through the tool runner beside the put tools: a +// The seat mesh-module-assigner's seven verbs (novox/hq ADR 0567 §10), served through the tool runner beside the put tools: a // process never serves (ADR 0436). They read every state the seat keeps and write what a person asks of it: a proposal // and its candidates (propose, adopt), a proposal marked to end (withdraw) or to be judged again (again), and the keys // deleted (hand-back). Everything that follows a proposal — composing it, judging the answers, the ask, the write at the @@ -138,7 +138,7 @@ func (s *seatTools) proposal(id string) (mma.Proposal, error) { return mma.Proposal{}, fmt.Errorf("the proposal %s cannot be read: %w", id, err) } if !found { - return mma.Proposal{}, fmt.Errorf("no proposal %s is open: mesh-placement.proposals lists those that are", id) + return mma.Proposal{}, fmt.Errorf("no proposal %s is open: mesh-module-assigner.proposals lists those that are", id) } return plc.DecodeProposal(raw) } @@ -177,7 +177,7 @@ type proposed struct { } func followProposal(id string) string { - return fmt.Sprintf("the nodes it touches answer it; mesh-placement.proposals with id %q says where it stands, and the "+ + return fmt.Sprintf("the nodes it touches answer it; mesh-module-assigner.proposals with id %q says where it stands, and the "+ "operator is asked to approve it once its verdict passes", id) } diff --git a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/tools.go b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/tools.go index 19b6a43d..62f94dbd 100644 --- a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/tools.go +++ b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/tools.go @@ -24,7 +24,7 @@ import ( // The assigner's tools (novox/hq ADR 0546), served through the tool runner from its bundle: a process never serves (ADR // 0436, mesh-sdk process). They write and read the puts; the assigner's process takes each put further (puts.go) and says -// every step as the event put. They are the module's own tools; the seat mesh-placement's verbs are served beside them +// every step as the event put. They are the module's own tools; the seat mesh-module-assigner's verbs are served beside them // (seat_tools.go, ADR 0567 §10). // engineReadsTool lists what each node's engine reads, as the assigner uses it, and asks one node's engine again. diff --git a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/views.go b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/views.go index f876989f..eebbdc07 100644 --- a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/views.go +++ b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/views.go @@ -19,8 +19,8 @@ import ( "git.novox.be/novox/mesh-sdk/go/views" sdkfindings "git.novox.be/novox/mesh-contracts/health-and-repair/go/clients/meshconditionsclient/findings" - "git.novox.be/novox/mesh-delivery/sdk/graph" "git.novox.be/novox/mesh-contracts/health-and-repair/go/clients/meshconditionsclient/heard" + "git.novox.be/novox/mesh-delivery/sdk/graph" "mesh-delivery-assigner/internal/assign" plc "mesh-delivery-assigner/internal/placement" @@ -35,7 +35,7 @@ type viewedTool struct{ tool, state, words string } // firstViewTools are the assigner's first-view tools (ADR 0621 §1): each answers only its callers list // (views.CallersEnv), which the manifest writes. var firstViewTools = []viewedTool{ - {"placement", mma.StatePlacement, "where each module is placed: the seat mesh-placement's placement, by module."}, + {"placement", mma.StatePlacement, "where each module is placed: the seat mesh-module-assigner's placement, by module."}, {"seat-holders", mma.StateSeatHolders, "who holds which seat on which node."}, {"wants", "wants", "what each node should run: want.., its fingerprint and the rule that gave it."}, } diff --git a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/wants_tools.go b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/wants_tools.go index 608f0ceb..085adbdd 100644 --- a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/wants_tools.go +++ b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/wants_tools.go @@ -25,7 +25,7 @@ import ( ) // The seat mesh-wants' verbs (novox/hq ADR 0565 §7, §8, §9, §15; issue 1953 D4-D6), served through the tool runner beside the -// put tools and mesh-placement's verbs. `upgrade` reads and sets a person's upgrade policy, kept in the state `policies` +// put tools and mesh-module-assigner's verbs. `upgrade` reads and sets a person's upgrade policy, kept in the state `policies` // (each set recorded as a hand act and said as policy-changed), and with compare lists the digest of the composition each node's // own have names beside every composition each node published (ADR 0593 §8, composed.go); `bus` says what a bus upgrade would do. The assigner's process reads // `policies` when it judges a move and writes the finding policy-split while a split stands. diff --git a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/world.go b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/world.go index 4d0f1ca1..f65ae0d3 100644 --- a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/world.go +++ b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/world.go @@ -255,7 +255,7 @@ func (w *world) manifest(ctx context.Context, get getter, digest string) parsed return p } -// assigned is each node's modules the seat mesh-placement's placement names, in name order (ADR 0549 §5, ADR 0567 §8): the +// assigned is each node's modules the seat mesh-module-assigner's placement names, in name order (ADR 0549 §5, ADR 0567 §8): the // placement is the one source of where modules run. The controller's assignments are read no more (issue 774). func (w *world) assigned() map[string][]string { placed, _ := w.placed() diff --git a/modules/mesh-delivery-assigner/internal/assign/placement.go b/modules/mesh-delivery-assigner/internal/assign/placement.go index c0726cca..c2e328e1 100644 --- a/modules/mesh-delivery-assigner/internal/assign/placement.go +++ b/modules/mesh-delivery-assigner/internal/assign/placement.go @@ -8,13 +8,13 @@ import ( oc "git.novox.be/novox/mesh-contracts/operator-and-conversation/go/seats/operatorchannel" ) -// SeatWaitsCondition is the assigner's word on the seat mesh-placement while a state of the seat is not bound (ADR 0567 +// SeatWaitsCondition is the assigner's word on the seat mesh-module-assigner while a state of the seat is not bound (ADR 0567 // §1): raised naming each, cleared when none is left. func SeatWaitsCondition(unbound []string) oc.Condition { key := placement.Module + ".seat-states" subject := oc.ConditionSubject{Scope: "module", ID: placement.Module} if len(unbound) == 0 { - return oc.Condition{Key: key, Subject: subject, State: occ.StateCleared, Resolved: "the seat mesh-placement holds all its states."} + return oc.Condition{Key: key, Subject: subject, State: occ.StateCleared, Resolved: "the seat mesh-module-assigner holds all its states."} } why := "the seat waits for its states: " + strings.Join(unbound, ", ") + " are not on the bus or not granted yet" return oc.Condition{Key: key, Severity: occ.SeverityWarning, Subject: subject, State: occ.StateRaised, diff --git a/modules/mesh-delivery-assigner/internal/assign/policy.go b/modules/mesh-delivery-assigner/internal/assign/policy.go index b62e1b4b..fcc9be3d 100644 --- a/modules/mesh-delivery-assigner/internal/assign/policy.go +++ b/modules/mesh-delivery-assigner/internal/assign/policy.go @@ -122,8 +122,8 @@ func UnplacedFinding(node string, at time.Time) ([]byte, error) { summary := fmt.Sprintf("%s runs, but no placement names it: since the controller handed its lease away nothing composes it, "+ "so the assigner writes it no want", node) return encode(mcc.Observation{Scope: mcc.ScopeMachine, ID: node, Kind: KindUnplaced, Machine: node, Summary: summary, - Headline: clipHeadline(node + " has no placement"), Needs: "place it with mesh-placement.propose.", - Explanation: occ.NeedsYou + "place it with mesh-placement.propose. " + summary + ".", + Headline: clipHeadline(node + " has no placement"), Needs: "place it with mesh-module-assigner.propose.", + Explanation: occ.NeedsYou + "place it with mesh-module-assigner.propose. " + summary + ".", Resolved: node + " is placed", Source: "assigner." + KindUnplaced}, at) } diff --git a/modules/mesh-delivery-assigner/internal/assign/seat.go b/modules/mesh-delivery-assigner/internal/assign/seat.go index a3d3abc1..d04ea4f7 100644 --- a/modules/mesh-delivery-assigner/internal/assign/seat.go +++ b/modules/mesh-delivery-assigner/internal/assign/seat.go @@ -19,7 +19,7 @@ import ( plc "mesh-delivery-assigner/internal/placement" ) -// The seat mesh-placement (novox/hq ADR 0567), held by the assigner beside its wants: placement is its state +// The seat mesh-module-assigner (novox/hq ADR 0567), held by the assigner beside its wants: placement is its state // `placement`, changed only by a proposal (§2) the nodes it touches answer (§3), judged (§4) and written on the // operator's Approve at the revision it was laid over (§5). What here decides; the tools and the passes do. diff --git a/modules/mesh-delivery-assigner/internal/judge/judge.go b/modules/mesh-delivery-assigner/internal/judge/judge.go index 4f4ccc84..f6053d22 100644 --- a/modules/mesh-delivery-assigner/internal/judge/judge.go +++ b/modules/mesh-delivery-assigner/internal/judge/judge.go @@ -1,4 +1,4 @@ -// Package judge is how the seat mesh-placement's holder judges a proposal (novox/hq ADR 0567 §3, §4, as ADR 0593 §8 +// Package judge is how the seat mesh-module-assigner's holder judges a proposal (novox/hq ADR 0567 §3, §4, as ADR 0593 §8 // changes them): what it changes on each node by its placement (Intended), every node answering it, and the verdict of // their answers (JudgeAnswers). The assigner's own (ADR 0593 §1), moved back from mesh-sdk's compose/judge: the holder // composes nothing, since every composition is its node's engine's, and a node answers through the candidates path diff --git a/modules/mesh-delivery-assigner/manifest_test.go b/modules/mesh-delivery-assigner/manifest_test.go index c3c30ccb..6fd398e1 100644 --- a/modules/mesh-delivery-assigner/manifest_test.go +++ b/modules/mesh-delivery-assigner/manifest_test.go @@ -80,7 +80,7 @@ func TestManifest(t *testing.T) { } // ADR 0546: it serves its own tools (put, release, puts) from its bundle through the tool runner (the artifact loads the // module), says each put's step as the event put, and calls the hand-act seat and the bus node's backup holder. - // ADR 0567 §1, §6-§10: it holds the seat mesh-placement, serving its five verbs (adopt and hand-back went with the + // ADR 0567 §1, §6-§10: it holds the seat mesh-module-assigner, serving its five verbs (adopt and hand-back went with the // controller, ADR 0590); keeps the seat's events on its stream placement for 30 days; calls the hand-act log; and reads // mesh-config's resolved values to compose every node a proposal touches. // ADR 0565 §7, §9 (issue 1953 D4): and the seat mesh-wants, serving upgrade and bus. diff --git a/modules/mesh-delivery-assigner/oldseat_test.go b/modules/mesh-delivery-assigner/oldseat_test.go new file mode 100644 index 00000000..d09d47ef --- /dev/null +++ b/modules/mesh-delivery-assigner/oldseat_test.go @@ -0,0 +1,28 @@ +package manifest + +import ( + "io/fs" + "os" + "path/filepath" + "strings" + "testing" +) + +// The seat the assigner holds is mesh-module-assigner (novox/hq ADR 0634 §9): no message, tool text or comment of the module +// says the name it had before. +func TestNoTextSaysTheOldSeatName(t *testing.T) { + old := "mesh-" + "placement" + err := filepath.WalkDir(".", func(path string, d fs.DirEntry, err error) error { + if err != nil || d.IsDir() || !strings.HasSuffix(path, ".go") || path == "oldseat_test.go" { + return err + } + raw, err := os.ReadFile(path) + if err == nil && strings.Contains(string(raw), old) { + t.Errorf("%s still says %s", path, old) + } + return err + }) + if err != nil { + t.Fatal(err) + } +}