Name no node in the last residuals: asus-zephyrus-g14's denylist, lab's and mosquitto's comments, mesh-issues's help texts, mesh-knowledge's decision fixture and ssh-client's forge-URL fixture (issue 1838)
This commit is contained in:
@@ -94,7 +94,8 @@ func TestTheManifestNamesNoMachineAndItsTriggersExist(t *testing.T) {
|
||||
ids[r["id"].(string)] = true
|
||||
}
|
||||
raw, _ := os.ReadFile("../../module.json")
|
||||
for _, banned := range []string{"jochen", "/home/", "/run/user/1000", "\"g14\"", "shanks"} {
|
||||
// 1838/AC1: the catalogue-wide check covers a node's name now; this list keeps what it does not.
|
||||
for _, banned := range []string{"jochen", "/home/", "/run/user/1000"} {
|
||||
if strings.Contains(string(raw), banned) {
|
||||
t.Errorf("the manifest says %q", banned)
|
||||
}
|
||||
|
||||
@@ -255,7 +255,7 @@ test("the lab's tools bundle names its bound credential and binding in its env",
|
||||
// The next setup failure of novox/hq issue 624 (run-2026-10-13T13-15-26-634Z on node-d): npm 12 refused
|
||||
// mesh-tools' locked @novox/mesh-sdk with EALLOWREMOTE. The lab named the registry by its forge setting's
|
||||
// address (http://node-c.internal:20000/…), the lock file holds the address the forge writes every tarball
|
||||
// URL at (https://git.novox.be/…), and npm 12 installs a locked tarball only from its configured registry.
|
||||
// the forge's URL, and npm 12 installs a locked tarball only from its configured registry.
|
||||
// A run names the registry by the address the registry names itself by.
|
||||
import { npmRegistry } from "../tools/runs.ts";
|
||||
|
||||
|
||||
@@ -278,7 +278,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 acme/mesh-controller@d2e9dc61590f"
|
||||
default:
|
||||
return "", fmt.Errorf("kind %q is not a kind of link: one of %s", kind, strings.Join(LinkKinds, ", "))
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ func TestADeliveryLinkTakesEveryIdMeshDeliveryGives(t *testing.T) {
|
||||
"mesh-controller@0f853e93fa11", // no owner
|
||||
"acme/mesh-controller", // no commit
|
||||
"acme/mesh-controller@0f853e93fa11aa", // more than twelve characters of the commit
|
||||
"Novox/Mesh-Controller@0f853e93fa11", // mesh-delivery lower-cases the repository
|
||||
"Acme/Mesh-Controller@0f853e93fa11", // mesh-delivery lower-cases the repository
|
||||
"acme/mesh-controller@0F853E93FA11", // a commit is lower-case hex
|
||||
"acme/mesh-controller@main", // a branch, not a commit
|
||||
"acme/mesh/controller@0f853e93fa11", // a repository is owner/name, no deeper
|
||||
|
||||
@@ -610,7 +610,7 @@ func Tools(t *Tracker) []stdio.Tool {
|
||||
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 " +
|
||||
"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). Refused: a target not of its kind's shape, an issue that does not exist, a link it " +
|
||||
"(a delivery's id, such as acme/mesh-controller@d2e9dc61590f). Refused: a target not of its kind's shape, an issue that does not exist, a link it " +
|
||||
"already has.",
|
||||
Input: schema([]string{"number", "kind", "target"}, map[string]any{
|
||||
"number": number("the issue's number"),
|
||||
|
||||
+2
-2
@@ -160,8 +160,8 @@ either, because **delivery group** already names deliveries that share a head br
|
||||
commit) or `covered` (an earlier commit of the same repository) when the walk is done, `failed` when it
|
||||
fails, `stopped` when it is stopped. The walk's machine steps are recorded on each delivery it carries.
|
||||
7. **The assembling state is shown.** The controller's `plans` lists the open batch first, as the operator
|
||||
asked: "assembling: 13 s left (at the latest 00:31:09); grouped: novox/mesh-catalog@48bda475 (answers
|
||||
553b7191), novox/mesh-controller@a6bc0931; plan not yet calculated". It says the batch on the bus as
|
||||
asked: "assembling: 13 s left (at the latest 00:31:09); grouped: acme/mesh-catalog@48bda475 (answers
|
||||
553b7191), acme/mesh-controller@a6bc0931; plan not yet calculated". It says the batch on the bus as
|
||||
`plan-moved` with the state `assembling`, so mesh-delivery's `deliveries` and `show` say of a merged
|
||||
delivery that its batch is assembling and how long is left, and of one whose batch waits that it waits
|
||||
behind which walk.
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
// the broker runs, over an admin connection, with no broker restart and no file the host rewrites —
|
||||
// the true analog of redis's runtime ACL users. A `password_file` would have to be re-read on a
|
||||
// SIGHUP the runtime cannot cleanly send across containers, and — declared as a managed file — would
|
||||
// be rewritten by the host on every reconcile, wiping every provisioned user (novox/nox issue 011).
|
||||
// be rewritten by the host on every reconcile, wiping every provisioned user (issue 011 of the predecessor's record).
|
||||
// The one cost dynsec carries is the bootstrap file; see initBootstrapFile() and the module README.
|
||||
|
||||
import { randomBytes } from "node:crypto";
|
||||
@@ -278,7 +278,7 @@ export class MosquittoClient {
|
||||
* Write the Dynamic Security bootstrap file offline, creating the admin client the plugin loads at
|
||||
* broker startup. This is a one-time seed, NOT part of the reconcile loop: run once before the
|
||||
* broker first starts, against the same path the broker's `plugin_opt_config_file` names. It must
|
||||
* never be a host-reconciled managed file — see novox/nox issue 011.
|
||||
* never be a host-reconciled managed file — see issue 011 of the predecessor's record.
|
||||
*/
|
||||
async initBootstrapFile(configFile: string): Promise<void> {
|
||||
// `dynsec init <file> <admin-username>` is an offline file operation — it does not connect to
|
||||
|
||||
@@ -98,7 +98,7 @@ var sampleBound = map[string]string{
|
||||
"ssh_alias": "mesh-forge",
|
||||
"ssh_port": "222",
|
||||
"ssh_base": "ssh://git@node-c.internal:222/",
|
||||
"https_base": "https://git.novox.be/",
|
||||
"https_base": "https://git.example.org/",
|
||||
}
|
||||
|
||||
// renderBound fills ${bound:forge-account:<key>} with the sample values, as the provisioner client does.
|
||||
@@ -160,7 +160,7 @@ func TestForgeFilesRenderFromTheBoundValues(t *testing.T) {
|
||||
if g["into"] != "block" {
|
||||
t.Errorf("git config is %v, want a block", g["into"])
|
||||
}
|
||||
wantGit := "[url \"ssh://mesh-forge/\"]\n\tinsteadOf = https://git.novox.be/\n"
|
||||
wantGit := "[url \"ssh://mesh-forge/\"]\n\tinsteadOf = https://git.example.org/\n"
|
||||
if got := renderBound(t, templateText(t, g)); got != wantGit {
|
||||
t.Errorf("git config block = %q, want %q", got, wantGit)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user