Point messenger, mesh-watcher, restic and mesh-issues away from the controller

The controller is not placed (ADR 0590): messenger no longer treats it as
a condition owner or a walk's subject, mesh-watcher reads only where the bus
runs, restic tells the operator to compose the machine or set config through
the seats that do it now, and mesh-issues' examples name a placed repository.
mesh-issues keeps mesh-controller among its owners: issues located there,
issue 1126 among them, and route-proxy until it moves, still name it
(issue 1126 B11).

Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
This commit is contained in:
2026-11-02 12:29:56 +01:00
parent 40c4fabff6
commit e009088150
15 changed files with 49 additions and 114 deletions
+3 -3
View File
@@ -167,7 +167,7 @@ func (o Owners) locatedIn(e string) (string, error) {
}
if o.owns(v) == "" {
return "", fmt.Errorf("located-in %q names no registered owner: an entry starts with a repository such as "+
"mesh-controller, or a module such as \"mesh-catalog modules/nats\", optionally followed by where in it; "+
"mesh-host, or a module such as \"mesh-catalog modules/nats\", optionally followed by where in it; "+
"the registered list is the module's setting `owners`", v)
}
return v, nil
@@ -277,7 +277,7 @@ func checkTarget(kind, target string) (string, error) {
case LinkDuplicates, LinkRelatesTo, LinkDependsOn:
ok, shape = issueNumber.MatchString(t), "another issue's number, such as 312"
case LinkPullRequest:
ok, shape = pullRequest.MatchString(t), "a repository and a pull request's number, such as mesh-controller#246"
ok, shape = pullRequest.MatchString(t), "a repository and a pull request's number, such as mesh-host#246"
case LinkDecision:
ok, shape = decision.MatchString(t), "a decision record's four-digit number, such as 0275"
case LinkDesign:
@@ -287,7 +287,7 @@ func checkTarget(kind, target string) (string, error) {
"the scope one of "+strings.Join(conditionScopes, ", ")+", each part of letters, digits and _=/-"
case LinkDelivery:
ok, shape = deliveryID.MatchString(t), "a delivery's id as mesh-delivery names it: the repository as owner/name, @ and twelve "+
"characters of its commit, such as novox/mesh-controller@d2e9dc61590f"
"characters of its commit, such as novox/mesh-host@d2e9dc61590f"
case LinkMilestone:
var c string
c, ok = checkMilestoneTarget(t)
+6 -6
View File
@@ -383,7 +383,7 @@ func Tools(t *Tracker) []stdio.Tool {
Input: schema([]string{"title", "report"}, map[string]any{
"title": text("one line: the symptom, in plain words"),
"report": text("what was seen, what was expected, and how it was found"),
"located-in": texts("the owners it is in, each a repository such as mesh-controller or a module such as \"mesh-catalog modules/nats\", optionally followed by where in it"),
"located-in": texts("the owners it is in, each a repository such as mesh-host or a module such as \"mesh-catalog modules/nats\", optionally followed by where in it"),
"record": text("for an issue with a folder in hq: the folder's name without its number, such as the-counter-skips-a-number"),
"severity": map[string]any{"type": "string", "enum": Severities, "description": "when known: critical (something the operator relies on is broken, or data at risk), major (a rule does not hold, or people work around it), minor (a contained fix, nothing the operator sees changes); left out, the triage estimates it"},
"needs": map[string]any{"type": "string", "enum": NeedsKinds, "description": "when known: none, decision (a decision record first) or operator (the operator's answer is required); left out, the triage estimates it"},
@@ -469,7 +469,7 @@ func Tools(t *Tracker) []stdio.Tool {
"opened, moved, noted, linked, worked on, or its fix's delivery said a new state.",
Input: schema(nil, map[string]any{
"status": map[string]any{"type": "string", "enum": Statuses, "description": "only issues at this status"},
"owner": text("only issues located in this owner, such as mesh-controller"),
"owner": text("only issues located in this owner, such as mesh-host"),
"phrase": text("only issues whose title or report holds these words"),
"limit": map[string]any{"type": "integer", "minimum": 1, "maximum": MostListResult, "description": "at most this many rows (default 50)"},
"severity": map[string]any{"type": "string", "enum": Severities, "description": "only issues at this severity"},
@@ -554,7 +554,7 @@ func Tools(t *Tracker) []stdio.Tool {
"number": number("the issue's number"),
"status": map[string]any{"type": "string", "enum": Statuses, "description": "the status it moves to"},
"located-in": texts("the owners it is in; replaces what it said"),
"fixed-by": texts("what fixed it: pull requests or commits, such as mesh-controller#246; replaces what it said"),
"fixed-by": texts("what fixed it: pull requests or commits, such as mesh-host#246; replaces what it said"),
"amended-design": texts("the design documents the fix changed, such as 03-DESIGN/00-as-is/12-the-controller.md"),
"replay": text("for a core issue resolved: the replay's id in mesh-lab's replays register, such as R361"),
"replay-none": text("for a core issue resolved: why no replay is possible"),
@@ -615,9 +615,9 @@ func Tools(t *Tracker) []stdio.Tool {
}},
{Name: Seat + ".link",
Description: "Link an issue to something, or with remove, take a link away. Kinds: duplicates or relates-to " +
"another issue (its number), pull-request (such as mesh-controller#246), decision (a decision record's " +
"another issue (its number), pull-request (such as mesh-host#246), decision (a decision record's " +
"number, such as 0275), design (a design document's path), condition (a condition's key) and delivery " +
"(a delivery's id, such as novox/mesh-controller@d2e9dc61590f), milestone (the one milestone it belongs to, design/id such as " +
"(a delivery's id, such as novox/mesh-host@d2e9dc61590f), milestone (the one milestone it belongs to, design/id such as " +
"47/R6) and commit (a commit that fixes it, repository@full sha). Refused: a target not of its kind's shape, an issue that does not exist, a link it " +
"already has, a second milestone (remove the first to move it), a milestone that does not exist or is closed.",
Input: schema([]string{"number", "kind", "target"}, map[string]any{
@@ -827,7 +827,7 @@ func Tools(t *Tracker) []stdio.Tool {
"number": number("the issue's number"),
"severity": map[string]any{"type": "string", "enum": Severities},
"needs": map[string]any{"type": "string", "enum": NeedsKinds},
"suggested-owner": text("an owner on the registered list, such as mesh-controller"),
"suggested-owner": text("an owner on the registered list, such as mesh-host"),
}),
Run: func(m map[string]any) (any, error) {
a, err := readArgs("set", m, "number", "severity", "needs", "suggested-owner")