package resolution import ( mcat "git.novox.be/novox/mesh-sdk/go/catalogue" ) // healthDecision is the record that made the four seats. const healthDecision = "novox/hq ADR 0564" // conditionsVerbs are the condition keeper's verbs (ADR 0564 clauses 3, 9, 12). func conditionsVerbs() []mcat.Verb { return []mcat.Verb{ {Name: "conditions", Description: "What is wrong with the mesh now: every open condition, urgent first, then oldest, " + "raised from the observers' findings (the watchman, the self-check, the healers, the assigner) and cleared when " + "the finding goes, never by hand. Given a key, that one whole with its evidence; with history, every transition " + "lately.", Input: schema(map[string]string{ "key": "a condition's key: that one whole; with history, only its transitions", "scope": "only this scope: machine, plan, call, build, merge, provider, seat, bus, core, probe, mesh, delivery or module", "severity": "only urgent, or only warning", "machine": "only those about this machine", "history": "\"true\": every raising, change, silence and clearing lately, oldest first", "days": "with history: how many days back (default 7, at most 90)", }, nil, "history")}, {Name: "silence", Description: "Stop one condition's messages for a while, a hand act with why: it stays open and in " + "status, and the silence is kept as its transition in history.", Input: schema(map[string]string{ "key": "the condition's key", "for": "how long: 30m, 4h, 2d; at most 7d", "why": "why, required and recorded", "cause": "the cause in a word (the condition's kind when absent)", }, []string{"key", "for", "why"})}, {Name: "resync", Description: "Read every observer's findings again and raise and clear what differs from the open " + "conditions: the recovery of a keeper that missed a change.", Input: schema(map[string]string{}, nil)}, } } // watchdogsVerbs are the watchman's verbs (ADR 0564 clauses 4, 5, 12). func watchdogsVerbs() []mcat.Verb { return []mcat.Verb{ {Name: "signals", Description: "Every watchdog of the signals table the watchman keeps, each a key that expires unless " + "its signal renews it: its row, what renews it, its bound, the age of its newest signal, and the finding its " + "expiry wrote.", Input: schema(map[string]string{"row": "one row, e.g. S1"}, nil)}, {Name: "stuck", Description: "Every want, build or step the watchman says stopped moving past its bound, with since " + "when and the words of its finding.", Input: schema(map[string]string{"machine": "only those on this machine"}, nil)}, {Name: "presence", Description: "Every machine and tool runner the watchman sees connected, with its last word, and " + "those it says silent; a machine that said it sleeps is shown as sleeping, not silent.", Input: schema(map[string]string{"machine": "one machine"}, nil)}, {Name: "dead-letters", Description: "Every message a consumer on the bus gave up on, kept in DEAD_LETTERS: whose " + "consumer, the subject, how often it was handed over and when it was given up, newest first. With id: that one " + "whole. With deliver or drop, a hand act with why.", Input: schema(map[string]string{ "id": "a dead letter's id, as the list gives it: that one whole, with its message", "consumer": "a consumer's name, or .: only what that one gave up on", "limit": "how many to list, newest first (default 50); only when listing", "deliver": "a dead letter's id: deliver it again to the consumer that gave it up (needs why)", "drop": "a dead letter's id: drop it for good (needs why)", "why": "with deliver or drop: why, required and recorded", "cause": "with deliver or drop: the cause in a word (dead-letter when absent)", }, nil)}, {Name: "resync", Description: "Rebuild presence from the bus's connections, and the pulses and findings from the keys " + "the watchman watches, and take every dead-letter notice waiting: the recovery of a watchman that missed a change.", Input: schema(map[string]string{}, nil)}, } } // selfCheckVerbs are the self-check's verbs (ADR 0564 clause 6). func selfCheckVerbs() []mcat.Verb { return []mcat.Verb{ {Name: "doctor", Description: "The self-check: the last run's verdict at once, each probe passed, failed, deferred " + "(its facts not on the bus yet, named) or could not run, and how long ago. With run, a run now; with probe, one " + "probe's verdict whole. Runs every five minutes on its own; each failure is a finding.", Input: schema(map[string]string{ "run": "\"true\": run every probe now and answer the verdict", "probe": "one probe's id (D6): its verdict alone, with every finding", }, nil, "run")}, {Name: "probes", Description: "The registry: what each probe asserts, where it reads its facts, and the finding it writes.", Input: schema(map[string]string{}, nil)}, } } // healersVerbs are the healers' verbs (ADR 0564 clauses 7, 8). func healersVerbs() []mcat.Verb { return []mcat.Verb{ {Name: "healers", Description: "The healers: each registered response to one kind of condition, its repair, its " + "budget and what happens when it is spent; every act taken lately with its outcome, and the mesh-wide brake.", Input: schema(map[string]string{"days": "how many days of acts back (default 7)"}, nil)}, {Name: "heal", Description: "Take one healer's act for one open condition now, within its budget and the brake.", Input: schema(map[string]string{ "key": "the condition's key", "why": "why now, kept with the act", }, []string{"key", "why"})}, {Name: "drill", Description: "Record a drill: something broken on purpose to see the mesh raise and clear it, with " + "what it tests. A drill is never a repair: no healer is wanted for it however often it is run.", Input: schema(map[string]string{ "what": "what was done on purpose, in a line", "why": "what the drill tests", "condition": "the key of the condition the drill is meant to raise, if any (optional)", }, []string{"what", "why"})}, } }