diff --git a/checks/locks/main.go b/checks/locks/main.go index e0b5c5829..fb9c6b651 100644 --- a/checks/locks/main.go +++ b/checks/locks/main.go @@ -5,7 +5,8 @@ // go run . // // Exits 1 on a finding. The packages that count are those the build module counts (mesh-build-node fetch.go -// ownDependencies): the `dependencies` beyond the SDK, typescript and the @types packages. +// ownDependencies): the `dependencies` beyond the mesh's own packages (@novox/mesh-*, the SDK among them), typescript and the +// @types packages. package main import ( @@ -17,6 +18,10 @@ import ( "strings" ) +// meshPackages is the prefix of every package the mesh itself publishes: the build module's toolchain and the mesh's registry +// give them, as they give the SDK, so a module naming only them needs no lock (design 47 G A-56). +const meshPackages = "@novox/mesh-" + // Finding is one module refused: it names Packages beyond the SDK and has no lock file. type Finding struct { Module string @@ -70,7 +75,7 @@ func Check(root string) ([]Finding, error) { } var names []string for n := range pkg.Dependencies { - if n != "@novox/mesh-sdk" && n != "typescript" && !strings.HasPrefix(n, "@types/") { + if !strings.HasPrefix(n, meshPackages) && n != "typescript" && !strings.HasPrefix(n, "@types/") { names = append(names, n) } } diff --git a/checks/locks/main_test.go b/checks/locks/main_test.go index 11aab626d..6ab888974 100644 --- a/checks/locks/main_test.go +++ b/checks/locks/main_test.go @@ -35,6 +35,8 @@ func TestAModuleNamingOnlyTheSDKNeedsNoLock(t *testing.T) { root := t.TempDir() module(t, root, "plain", "typescript", sdkOnly, false) module(t, root, "none", "typescript", "", false) + // The mesh's own packages count as the SDK does (design 47 G A-56): a contracts package needs no lock. + module(t, root, "contracts", "typescript", `{"dependencies":{"@novox/mesh-sdk":"^0.1.1","@novox/mesh-delivery-contracts-git":"^0.1.0"}}`, false) got, err := Check(root) if err != nil || len(got) != 0 { t.Fatalf("%v %v", got, err) diff --git a/modules/adwaita/module.json b/modules/adwaita/module.json index bf81c8331..b47fbf37e 100644 --- a/modules/adwaita/module.json +++ b/modules/adwaita/module.json @@ -1,6 +1,6 @@ { "module": "adwaita", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "package-manager" diff --git a/modules/artifact-store-tools/module.json b/modules/artifact-store-tools/module.json index b0e2e25a8..5ed0d1b66 100644 --- a/modules/artifact-store-tools/module.json +++ b/modules/artifact-store-tools/module.json @@ -1,6 +1,6 @@ { "module": "artifact-store-tools", - "version": "1", + "version": "0.1", "packages": { "git.novox.be/novox/mesh-delivery/modules/mesh-delivery-builder/builds": "0.1" }, diff --git a/modules/asus-zephyrus-g14/module.json b/modules/asus-zephyrus-g14/module.json index d1ee8d3b8..b5152b6d7 100644 --- a/modules/asus-zephyrus-g14/module.json +++ b/modules/asus-zephyrus-g14/module.json @@ -1,6 +1,6 @@ { "module": "asus-zephyrus-g14", - "version": "1", + "version": "0.1", "moved": true, "templates": "templates", "capabilities": [ diff --git a/modules/audit-logger/module.json b/modules/audit-logger/module.json index 122b94e75..2ed839dce 100644 --- a/modules/audit-logger/module.json +++ b/modules/audit-logger/module.json @@ -1,6 +1,6 @@ { "module": "audit-logger", - "version": "1", + "version": "0.1", "slug": "audit", "consumes": [ "**" diff --git a/modules/avahi/module.json b/modules/avahi/module.json index de99c7c9c..01731ee6e 100644 --- a/modules/avahi/module.json +++ b/modules/avahi/module.json @@ -1,6 +1,6 @@ { "module": "avahi", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager", "service-manager" diff --git a/modules/baserow/module.json b/modules/baserow/module.json index 811962180..f92a50402 100644 --- a/modules/baserow/module.json +++ b/modules/baserow/module.json @@ -1,6 +1,6 @@ { "module": "baserow", - "version": "1", + "version": "0.1", "capabilities": [ "container-runtime" ], diff --git a/modules/blueman/module.json b/modules/blueman/module.json index 73a764068..8a79ba2d6 100644 --- a/modules/blueman/module.json +++ b/modules/blueman/module.json @@ -1,6 +1,6 @@ { "module": "blueman", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager" ], diff --git a/modules/bluetooth/module.json b/modules/bluetooth/module.json index dfaabf10a..6ee44cb77 100644 --- a/modules/bluetooth/module.json +++ b/modules/bluetooth/module.json @@ -1,6 +1,6 @@ { "module": "bluetooth", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager", "service-manager" diff --git a/modules/brother/module.json b/modules/brother/module.json index df2bed169..e1c1f7ae1 100644 --- a/modules/brother/module.json +++ b/modules/brother/module.json @@ -1,6 +1,6 @@ { "module": "brother", - "version": "1", + "version": "0.1", "requires": [ { "name": "s3-bucket", diff --git a/modules/buildah/module.json b/modules/buildah/module.json index bdfbe96b2..4e97d7cdd 100644 --- a/modules/buildah/module.json +++ b/modules/buildah/module.json @@ -1,6 +1,6 @@ { "module": "buildah", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager", "user-namespaces" diff --git a/modules/ca-trust/module.json b/modules/ca-trust/module.json index b3c9dc930..88602b90a 100644 --- a/modules/ca-trust/module.json +++ b/modules/ca-trust/module.json @@ -1,6 +1,6 @@ { "module": "ca-trust", - "version": "1", + "version": "0.1", "slug": "catrust", "capabilities": [ "service-manager" diff --git a/modules/claude-code/module.json b/modules/claude-code/module.json index 5a0b83f2f..a21e3e056 100644 --- a/modules/claude-code/module.json +++ b/modules/claude-code/module.json @@ -1,6 +1,6 @@ { "module": "claude-code", - "version": "1", + "version": "0.1", "moved": true, "slug": "agent", "capabilities": [ @@ -25,6 +25,11 @@ "max-age-days": 7, "max-mib": 16 } + }, + { + "name": "findings", + "storage": "key-value", + "template": "state" } ], "binds": { @@ -59,8 +64,7 @@ "proposals", "questions", "memory", - "waits", - "findings" + "waits" ], "emits": [ "judged" @@ -248,7 +252,16 @@ "path": "${dir:state}/settings.json", "mode": "0600", "owner": "${machine:account}", - "takes-config": ["role", "mcp_servers", "managed_settings", "instructions", "output_styles", "skills", "commands", "agents"], + "takes-config": [ + "role", + "mcp_servers", + "managed_settings", + "instructions", + "output_styles", + "skills", + "commands", + "agents" + ], "merge": "json", "template": "files/settings.json" } diff --git a/modules/claude-licence-manager/module.json b/modules/claude-licence-manager/module.json index a55da31e2..f77b0ceac 100644 --- a/modules/claude-licence-manager/module.json +++ b/modules/claude-licence-manager/module.json @@ -1,6 +1,6 @@ { "module": "claude-licence-manager", - "version": "1", + "version": "0.1", "slug": "licmgr", "requires": [ "postgres-database", diff --git a/modules/clipmenu/module.json b/modules/clipmenu/module.json index 30ec9c0cf..1c59e061b 100644 --- a/modules/clipmenu/module.json +++ b/modules/clipmenu/module.json @@ -1,6 +1,6 @@ { "module": "clipmenu", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "package-manager" diff --git a/modules/confluence/module.json b/modules/confluence/module.json index caa0d1be2..3580e2d1f 100644 --- a/modules/confluence/module.json +++ b/modules/confluence/module.json @@ -1,6 +1,6 @@ { "module": "confluence", - "version": "1", + "version": "0.1", "slug": "confl", "own-secrets": { "token": "${dir:state}/token" diff --git a/modules/cups/module.json b/modules/cups/module.json index 01a482288..a11903c28 100644 --- a/modules/cups/module.json +++ b/modules/cups/module.json @@ -1,6 +1,6 @@ { "module": "cups", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager", "service-manager" diff --git a/modules/dbus/module.json b/modules/dbus/module.json index c0e28b3e4..e71f5100a 100644 --- a/modules/dbus/module.json +++ b/modules/dbus/module.json @@ -1,6 +1,6 @@ { "module": "dbus", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager", "service-manager" diff --git a/modules/desk-channel/module.json b/modules/desk-channel/module.json index 115ce6202..562945690 100644 --- a/modules/desk-channel/module.json +++ b/modules/desk-channel/module.json @@ -1,6 +1,6 @@ { "module": "desk-channel", - "version": "1", + "version": "0.1", "slug": "desk", "runs-as": "desk-channel", "claims": [ diff --git a/modules/dev-tools/module.json b/modules/dev-tools/module.json index 094f83363..0505c8666 100644 --- a/modules/dev-tools/module.json +++ b/modules/dev-tools/module.json @@ -1,6 +1,6 @@ { "module": "dev-tools", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager" ], diff --git a/modules/disk-load/module.json b/modules/disk-load/module.json index 7b162bf90..3d33aecb9 100644 --- a/modules/disk-load/module.json +++ b/modules/disk-load/module.json @@ -1,6 +1,6 @@ { "module": "disk-load", - "version": "1", + "version": "0.1", "tools": [ "disk_load", "disk_top", diff --git a/modules/distribution/internal/holder/holder_test.go b/modules/distribution/internal/holder/holder_test.go index aaf559ff6..615fc0ff4 100644 --- a/modules/distribution/internal/holder/holder_test.go +++ b/modules/distribution/internal/holder/holder_test.go @@ -916,19 +916,34 @@ func TestTheHolderOfTheTwoImageSeats(t *testing.T) { // Running review F2: incoming asks the bus 8 GiB, the most the objects template allows, equal to IncomingCap // (said only where no binding is read); transfers keeps for good, the holder dropping an idle one by its key // in idle, a state of keys with their own time to live. + // The image registry is a foundation part (design 47 G §584): its bus state is in its old sections, incoming in + // `objects`, the others in `state`. var req struct { - Requires []struct { - Name string `json:"name"` - Options map[string]any `json:"options"` - } `json:"requires"` + Objects []struct { + Name string `json:"name"` + MaxMiB uint64 `json:"max-mib"` + } `json:"objects"` + State []json.RawMessage `json:"state"` } _ = json.Unmarshal(raw, &req) opts := map[string]map[string]any{} - for _, r := range req.Requires { - opts[r.Name] = r.Options + for _, e := range req.State { + var o map[string]any + if json.Unmarshal(e, &o) != nil { + var name string + _ = json.Unmarshal(e, &name) + o = map[string]any{"name": name} + } + opts[fmt.Sprint(o["name"])] = o } - if mib, _ := opts[IncomingObjects]["max-mib"].(float64); uint64(mib)<<20 != IncomingCap { - t.Errorf("incoming asks %v MiB, IncomingCap is %d bytes: want them equal", opts[IncomingObjects]["max-mib"], uint64(IncomingCap)) + var incoming uint64 + for _, o := range req.Objects { + if o.Name == IncomingObjects { + incoming = o.MaxMiB + } + } + if incoming<<20 != IncomingCap { + t.Errorf("incoming asks %v MiB, IncomingCap is %d bytes: want them equal", incoming, uint64(IncomingCap)) } if _, ok := opts[TransfersState]["ttl-seconds"]; ok { t.Errorf("transfers has a lifetime %v: the bus would drop a transfer's key and leave its parts", opts[TransfersState]) diff --git a/modules/distribution/module.json b/modules/distribution/module.json index 82f16fa97..c7b30a8d5 100644 --- a/modules/distribution/module.json +++ b/modules/distribution/module.json @@ -1,6 +1,6 @@ { "module": "distribution", - "version": "2", + "version": "0.1", "provides": [ { "name": "artifact-store", @@ -79,62 +79,6 @@ "description": "per verb, the modules that may call it (JSON object of verb to modules; operator for the operator's session); empty is design 51's list" } }, - "requires": [ - { - "name": "incoming", - "storage": "object-store", - "template": "objects", - "options": { - "max-mib": 8192 - } - }, - { - "name": "transfers", - "storage": "key-value", - "template": "state" - }, - { - "name": "idle", - "storage": "key-value", - "template": "state", - "options": { - "key-ttl": true - } - }, - { - "name": "holds", - "storage": "key-value", - "template": "state" - }, - { - "name": "windows", - "storage": "key-value", - "template": "state" - }, - { - "name": "mirrors", - "storage": "key-value", - "template": "state" - }, - { - "name": "findings", - "storage": "key-value", - "template": "state" - }, - { - "name": "events", - "storage": "stream", - "template": "events", - "options": { - "events": [ - "old-name-closed", - "direct-writes-closed" - ], - "max-age-days": 7, - "max-mib": 16 - } - } - ], "capabilities": [ "container-runtime" ], @@ -290,6 +234,32 @@ ], "max-age-days": 7, "max-mib": 16 + }, + { + "name": "distribution-events", + "events": [ + "old-name-closed", + "direct-writes-closed" + ], + "max-age-days": 7, + "max-mib": 16 } + ], + "objects": [ + { + "name": "incoming", + "max-mib": 8192 + } + ], + "state": [ + "transfers", + { + "name": "idle", + "key-ttl": true + }, + "holds", + "windows", + "mirrors", + "findings" ] } diff --git a/modules/dmenu/module.json b/modules/dmenu/module.json index aeeb3ce09..61986d1e2 100644 --- a/modules/dmenu/module.json +++ b/modules/dmenu/module.json @@ -1,6 +1,6 @@ { "module": "dmenu", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager" ], diff --git a/modules/dnsmasq/module.json b/modules/dnsmasq/module.json index 75447825a..2318baa09 100644 --- a/modules/dnsmasq/module.json +++ b/modules/dnsmasq/module.json @@ -1,6 +1,6 @@ { "module": "dnsmasq", - "version": "1", + "version": "0.1", "upgrade": { "policy": "record", "why": "the mesh's resolver: a build that breaks it can stop a machine resolving the bus, and then neither the gate's rollback nor a push reaches it (hq ADR 0236, issue 260)" diff --git a/modules/docker-compose/module.json b/modules/docker-compose/module.json index 2f576b4ba..7ace4b8ce 100644 --- a/modules/docker-compose/module.json +++ b/modules/docker-compose/module.json @@ -1,6 +1,6 @@ { "module": "docker-compose", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager" ], diff --git a/modules/docker/module.json b/modules/docker/module.json index 500faea68..a51d21c9d 100644 --- a/modules/docker/module.json +++ b/modules/docker/module.json @@ -1,6 +1,6 @@ { "module": "docker", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager", "service-manager", diff --git a/modules/dunst/module.json b/modules/dunst/module.json index 0c6983b4d..7321e05e7 100644 --- a/modules/dunst/module.json +++ b/modules/dunst/module.json @@ -1,6 +1,6 @@ { "module": "dunst", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "package-manager" diff --git a/modules/fail2ban/module.json b/modules/fail2ban/module.json index 446395f2c..7e5008ab3 100644 --- a/modules/fail2ban/module.json +++ b/modules/fail2ban/module.json @@ -1,6 +1,6 @@ { "module": "fail2ban", - "version": "1", + "version": "0.1", "capabilities": [ "firewall" ], diff --git a/modules/feh/module.json b/modules/feh/module.json index d6e44073b..14de69d04 100644 --- a/modules/feh/module.json +++ b/modules/feh/module.json @@ -1,6 +1,6 @@ { "module": "feh", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "package-manager" diff --git a/modules/flatpak/module.json b/modules/flatpak/module.json index 76d47213d..d7fc53c52 100644 --- a/modules/flatpak/module.json +++ b/modules/flatpak/module.json @@ -1,6 +1,6 @@ { "module": "flatpak", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager" ], diff --git a/modules/fonts/module.json b/modules/fonts/module.json index b2958da8a..cac0dc2d9 100644 --- a/modules/fonts/module.json +++ b/modules/fonts/module.json @@ -1,6 +1,6 @@ { "module": "fonts", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager" ], diff --git a/modules/forticlient/module.json b/modules/forticlient/module.json index 631d3faf7..24ce2f444 100644 --- a/modules/forticlient/module.json +++ b/modules/forticlient/module.json @@ -1,6 +1,6 @@ { "module": "forticlient", - "version": "1", + "version": "0.1", "upgrade": { "policy": "record", "why": "its adapter routes the company's domains on the machine a person works on: a build that breaks it cuts the person off from work names until a person pushes the next (hq ADR 0236, ADR 0247)" diff --git a/modules/gitea/cmd/package-registry/retention_test.go b/modules/gitea/cmd/package-registry/retention_test.go index 6fd6081aa..4eb926efb 100644 --- a/modules/gitea/cmd/package-registry/retention_test.go +++ b/modules/gitea/cmd/package-registry/retention_test.go @@ -437,6 +437,8 @@ func TestToolsAreTheOnesTheReadmeNamesAndSayWhatTheyDo(t *testing.T) { Serves []string `json:"serves"` } `json:"claims"` Requires []any `json:"requires"` + Objects []any `json:"objects"` + State []any `json:"state"` Packages map[string]string `json:"packages"` Invokes []string `json:"invokes"` Build struct { @@ -472,10 +474,15 @@ func TestToolsAreTheOnesTheReadmeNamesAndSayWhatTheyDo(t *testing.T) { if len(names) != 8 || !names[packageseats.GoSeat+".publish-part"] { t.Errorf("the seat tools are %v", names) } - req, _ := json.Marshal(m.Requires) - for _, want := range []string{`"name":"incoming"`, `"name":"transfers"`, `"name":"idle","options":{"key-ttl":true}`} { + // The forge module is a foundation part (design 47 G §584): incoming is in its old objects section, transfers and idle + // (key-ttl) in its old state section. + req, _ := json.Marshal(struct { + Objects any `json:"objects"` + State any `json:"state"` + }{m.Objects, m.State}) + for _, want := range []string{`"name":"incoming"`, `"transfers"`, `"key-ttl":true,"name":"idle"`} { if !strings.Contains(string(req), want) { - t.Errorf("the manifest does not require %s (%s)", want, req) + t.Errorf("the manifest does not keep %s in its old sections (%s)", want, req) } } // findings is one local name in one form (novox/hq ADR 0595 §11): the old section state, which the TypeScript bundle diff --git a/modules/gitea/module.json b/modules/gitea/module.json index d7a18c757..e149a5518 100644 --- a/modules/gitea/module.json +++ b/modules/gitea/module.json @@ -1,40 +1,11 @@ { "module": "gitea", - "version": "1", + "version": "0.1", "moved": true, "requires": [ "postgres-database", "route", - "secret", - { - "name": "incoming", - "storage": "object-store", - "template": "objects", - "options": { - "max-mib": 2048 - } - }, - { - "name": "transfers", - "storage": "key-value", - "template": "state" - }, - { - "name": "idle", - "storage": "key-value", - "template": "state", - "options": { - "key-ttl": true - } - }, - { - "name": "failed-steps", - "storage": "key-value", - "template": "state", - "options": { - "history": 1 - } - } + "secret" ], "contributes": { "postgres-database": { @@ -122,7 +93,7 @@ "port": 22, "protocol": "tcp", "from": "mesh", - "why": "git over ssh, gitea's own unmodified sshd. Published on the machine's own side at 222, the mesh's fixed public convention \u2014 not 22, which the machine's own daemon holds and a module does not take" + "why": "git over ssh, gitea's own unmodified sshd. Published on the machine's own side at 222, the mesh's fixed public convention — not 22, which the machine's own daemon holds and a module does not take" }, { "name": "forge-events", @@ -236,7 +207,7 @@ }, "keep-main-rules": { "type": "boolean", - "description": "Whether the module keeps main's branch protection as the mesh wants it. True: every ten minutes, and at the start, main's rule in every repository of the organisation novox is put to no push and the tools' account alone merging, and each apply of the `repositories` value narrows the main rule of the repositories it lists, requiring no status. False (the default): the module changes no existing repository's branch protection, whoever set it at the forge, but takes away a required status it finds on a rule covering main, once (ADR 0534 \u00a71); a repository listed in `repositories` that does not exist is still made, with its first protection.", + "description": "Whether the module keeps main's branch protection as the mesh wants it. True: every ten minutes, and at the start, main's rule in every repository of the organisation novox is put to no push and the tools' account alone merging, and each apply of the `repositories` value narrows the main rule of the repositories it lists, requiring no status. False (the default): the module changes no existing repository's branch protection, whoever set it at the forge, but takes away a required status it finds on a rule covering main, once (ADR 0534 §1); a repository listed in `repositories` that does not exist is still made, with its first protection.", "trusted": true, "default": false }, @@ -248,7 +219,7 @@ }, "main-mergers": { "type": "list", - "description": "The forge logins that may merge into main beside the tools' account, on every repository of the organisation (ADR 0534 \u00a72): the operator's own, so the operator can always merge by hand at the forge. The tools' account is always on main's merge whitelist; no agent's account belongs here.", + "description": "The forge logins that may merge into main beside the tools' account, on every repository of the organisation (ADR 0534 §2): the operator's own, so the operator can always merge by hand at the forge. The tools' account is always on main's merge whitelist; no agent's account belongs here.", "trusted": true, "default": [ "jschoubben" @@ -634,7 +605,19 @@ "bound", "announced", "findings", - { "name": "first-views", "history": 1 } + { + "name": "first-views", + "history": 1 + }, + "transfers", + { + "name": "idle", + "key-ttl": true + }, + { + "name": "failed-steps", + "history": 1 + } ], "reads": [ "mesh-provisioner.plans", @@ -663,9 +646,19 @@ "streams": [ { "name": "gitea-findings", - "events": ["finding-written.*", "finding-cleared.*", "findings-stated.*"], + "events": [ + "finding-written.*", + "finding-cleared.*", + "findings-stated.*" + ], "max-age-days": 7, "max-mib": 16 } + ], + "objects": [ + { + "name": "incoming", + "max-mib": 2048 + } ] } diff --git a/modules/gitlab/module.json b/modules/gitlab/module.json index 3cb33fb27..960832669 100644 --- a/modules/gitlab/module.json +++ b/modules/gitlab/module.json @@ -1,6 +1,6 @@ { "module": "gitlab", - "version": "1", + "version": "0.1", "own-secrets": { "token": "${dir:state}/token" }, diff --git a/modules/gnome-keyring/module.json b/modules/gnome-keyring/module.json index 9f75b9ff4..76ca633c5 100644 --- a/modules/gnome-keyring/module.json +++ b/modules/gnome-keyring/module.json @@ -1,6 +1,6 @@ { "module": "gnome-keyring", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "package-manager" diff --git a/modules/go/module.json b/modules/go/module.json index 9783eda42..ca0264bd8 100644 --- a/modules/go/module.json +++ b/modules/go/module.json @@ -1,6 +1,6 @@ { "module": "go", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager" ], diff --git a/modules/grafana/module.json b/modules/grafana/module.json index 1cbf995fd..ce84cc904 100644 --- a/modules/grafana/module.json +++ b/modules/grafana/module.json @@ -1,6 +1,6 @@ { "module": "grafana", - "version": "1", + "version": "0.1", "emits": [ "alert.firing" ], diff --git a/modules/hello-web/module.json b/modules/hello-web/module.json index 005578cd5..bbe7fd9af 100644 --- a/modules/hello-web/module.json +++ b/modules/hello-web/module.json @@ -1,7 +1,7 @@ { "module": "hello-web", "slug": "hello", - "version": "1", + "version": "0.1", "capabilities": [ "container-runtime" ], diff --git a/modules/home-assistant/module.json b/modules/home-assistant/module.json index 9c4f99db9..f43735649 100644 --- a/modules/home-assistant/module.json +++ b/modules/home-assistant/module.json @@ -1,6 +1,6 @@ { "module": "home-assistant", - "version": "1", + "version": "0.1", "slug": "hass", "capabilities": [ "container-runtime" diff --git a/modules/hostname/module.json b/modules/hostname/module.json index e84e7be25..94ec44788 100644 --- a/modules/hostname/module.json +++ b/modules/hostname/module.json @@ -1,6 +1,6 @@ { "module": "hostname", - "version": "1", + "version": "0.1", "claims": [ { "name": "node-hostname", diff --git a/modules/i3/module.json b/modules/i3/module.json index 1ec924268..04a5810b4 100644 --- a/modules/i3/module.json +++ b/modules/i3/module.json @@ -1,6 +1,6 @@ { "module": "i3", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "package-manager" diff --git a/modules/i3status-rust/module.json b/modules/i3status-rust/module.json index 1e07556b1..8e052bf67 100644 --- a/modules/i3status-rust/module.json +++ b/modules/i3status-rust/module.json @@ -1,6 +1,6 @@ { "module": "i3status-rust", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "package-manager" diff --git a/modules/icecast/module.json b/modules/icecast/module.json index 6f9ab549e..052147018 100644 --- a/modules/icecast/module.json +++ b/modules/icecast/module.json @@ -1,6 +1,6 @@ { "module": "icecast", - "version": "1", + "version": "0.1", "requires": [ "route", "secret" diff --git a/modules/influxdb/module.json b/modules/influxdb/module.json index 13a7905f7..23e0e4b25 100644 --- a/modules/influxdb/module.json +++ b/modules/influxdb/module.json @@ -1,6 +1,6 @@ { "module": "influxdb", - "version": "1", + "version": "0.1", "provides": [ { "name": "influxdb-api", diff --git a/modules/invoicing/module.json b/modules/invoicing/module.json index 29670a3e6..89ace98a3 100644 --- a/modules/invoicing/module.json +++ b/modules/invoicing/module.json @@ -1,6 +1,6 @@ { "module": "invoicing", - "version": "1", + "version": "0.1", "slug": "invoice", "capabilities": [ "container-runtime" diff --git a/modules/jira/module.json b/modules/jira/module.json index 9f98dd835..81b7e845d 100644 --- a/modules/jira/module.json +++ b/modules/jira/module.json @@ -1,6 +1,6 @@ { "module": "jira", - "version": "1", + "version": "0.1", "own-secrets": { "token": "${dir:state}/token" }, diff --git a/modules/kernel/module.json b/modules/kernel/module.json index 8fc90d09c..9e94c4b21 100644 --- a/modules/kernel/module.json +++ b/modules/kernel/module.json @@ -1,6 +1,6 @@ { "module": "kernel", - "version": "1", + "version": "0.1", "capabilities": [ "service-manager" ], diff --git a/modules/keycloak/module.json b/modules/keycloak/module.json index 84c08f10b..38f9b0610 100644 --- a/modules/keycloak/module.json +++ b/modules/keycloak/module.json @@ -1,6 +1,6 @@ { "module": "keycloak", - "version": "1", + "version": "0.1", "moved": true, "upgrade": { "policy": "record", diff --git a/modules/lab/module.json b/modules/lab/module.json index 580bc77e2..4bddf1725 100644 --- a/modules/lab/module.json +++ b/modules/lab/module.json @@ -1,6 +1,6 @@ { "module": "lab", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "container-runtime", diff --git a/modules/lemurs/module.json b/modules/lemurs/module.json index 702a9596b..668e94a1f 100644 --- a/modules/lemurs/module.json +++ b/modules/lemurs/module.json @@ -1,6 +1,6 @@ { "module": "lemurs", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager", "service-manager", diff --git a/modules/letta/module.json b/modules/letta/module.json index de7baf643..d97ba80cb 100644 --- a/modules/letta/module.json +++ b/modules/letta/module.json @@ -1,6 +1,6 @@ { "module": "letta", - "version": "1", + "version": "0.1", "capabilities": [ "container-runtime" ], diff --git a/modules/local-model-consumer/module.json b/modules/local-model-consumer/module.json index 730020920..47403651f 100644 --- a/modules/local-model-consumer/module.json +++ b/modules/local-model-consumer/module.json @@ -1,6 +1,6 @@ { "module": "local-model-consumer", - "version": "1", + "version": "0.1", "slug": "local", "requires": [ "model-access" diff --git a/modules/localization/cmd/localization-tools/manifest_test.go b/modules/localization/cmd/localization-tools/manifest_test.go index 2c6ab5b61..6fca0e4e8 100644 --- a/modules/localization/cmd/localization-tools/manifest_test.go +++ b/modules/localization/cmd/localization-tools/manifest_test.go @@ -11,7 +11,7 @@ import ( func TestTheFilesSayWhatTheToolsCompareAgainst(t *testing.T) { m := manifest(t) - if m.Module != "localization" || m.Version != "1" { + if m.Module != "localization" || m.Version != "0.1" { t.Fatalf("%s %s", m.Module, m.Version) } locale := m.resource(t, "locale") diff --git a/modules/localization/module.json b/modules/localization/module.json index 0974ed382..14d5845e8 100644 --- a/modules/localization/module.json +++ b/modules/localization/module.json @@ -1,6 +1,6 @@ { "module": "localization", - "version": "1", + "version": "0.1", "capabilities": [ "service-manager" ], diff --git a/modules/logrotate/module.json b/modules/logrotate/module.json index 8318451b7..1c41ac39b 100644 --- a/modules/logrotate/module.json +++ b/modules/logrotate/module.json @@ -1,6 +1,6 @@ { "module": "logrotate", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager", "service-manager" diff --git a/modules/mailu/module.json b/modules/mailu/module.json index 0faccc58e..c1dd44617 100644 --- a/modules/mailu/module.json +++ b/modules/mailu/module.json @@ -1,6 +1,6 @@ { "module": "mailu", - "version": "1", + "version": "0.1", "upgrade": { "policy": "record", "why": "people's mail: any change to how its containers are declared recreates them together in one send, and the mail is down for everyone until they are up again — a person chooses the moment (hq ADR 0242, issue 295)" diff --git a/modules/marrytts/module.json b/modules/marrytts/module.json index ed242aa32..ddadf075c 100644 --- a/modules/marrytts/module.json +++ b/modules/marrytts/module.json @@ -1,6 +1,6 @@ { "module": "marrytts", - "version": "1", + "version": "0.1", "capabilities": [ "container-runtime" ], diff --git a/modules/matrix/module.json b/modules/matrix/module.json index 170719ccd..3c6282545 100644 --- a/modules/matrix/module.json +++ b/modules/matrix/module.json @@ -1,6 +1,6 @@ { "module": "matrix", - "version": "1", + "version": "0.1", "capabilities": [ "container-runtime" ], diff --git a/modules/memory-pressure/module.json b/modules/memory-pressure/module.json index 1af96e30a..6fe32ff11 100644 --- a/modules/memory-pressure/module.json +++ b/modules/memory-pressure/module.json @@ -1,6 +1,6 @@ { "module": "memory-pressure", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager", "service-manager" diff --git a/modules/mesh-build-go/cmd/mesh-build-go/forge_test.go b/modules/mesh-build-go/cmd/mesh-build-go/forge_test.go index d9dab2fd4..a3fdf7dc9 100644 --- a/modules/mesh-build-go/cmd/mesh-build-go/forge_test.go +++ b/modules/mesh-build-go/cmd/mesh-build-go/forge_test.go @@ -151,7 +151,11 @@ func TestManifestRequiresForgeAccountKeepsKeysAndTakesFilesFromTemplates(t *test // kept-builds: the builds kept for the artifact store's holder (keptbuilds.go), by the template objects (W12.5). kept := map[string]any{"name": "kept-builds", "storage": "object-store", "template": "objects", "options": map[string]any{"max-mib": float64(1024)}} detected := map[string]any{"name": "detected-steps", "storage": "key-value", "template": "state", "options": map[string]any{"history": float64(1)}} - if want := []any{detected, kept, "forge-account", "go-toolchain", "go-package-registry", "node-tools"}; !reflect.DeepEqual(m.Requires, want) { + // The findings are asked in requires as a part that is no foundation part asks them (design 47 G §529, A-30). + findings := map[string]any{"name": "findings", "storage": "key-value", "template": "state"} + findingEvents := map[string]any{"name": "finding-events", "storage": "stream", "template": "events", "options": map[string]any{ + "events": []any{"finding-written.*", "finding-cleared.*", "findings-stated.*"}, "max-age-days": float64(7), "max-mib": float64(16)}} + if want := []any{detected, kept, "forge-account", "go-toolchain", "go-package-registry", "node-tools", findings, findingEvents}; !reflect.DeepEqual(m.Requires, want) { t.Errorf("requires = %v, want %v", m.Requires, want) } keeps := false diff --git a/modules/mesh-build-go/cmd/mesh-build-go/manifest_test.go b/modules/mesh-build-go/cmd/mesh-build-go/manifest_test.go index 3e89059cf..99e7eb34e 100644 --- a/modules/mesh-build-go/cmd/mesh-build-go/manifest_test.go +++ b/modules/mesh-build-go/cmd/mesh-build-go/manifest_test.go @@ -118,7 +118,7 @@ func TestManifestKeepsItsStatesClaimsItsBuildSeatAndDeclaresItsHealthTool(t *tes } } slices.Sort(states) - if want := []string{"findings", "keys", "pauses", "steps", "toolchains"}; !slices.Equal(states, want) { + if want := []string{"keys", "pauses", "steps", "toolchains"}; !slices.Equal(states, want) { t.Errorf("state = %v, want %v", states, want) } if len(m.Claims) != 1 || m.Claims[0].Name != Seat { @@ -194,15 +194,13 @@ func TestTheModuleInvokesTheArtifactSeatsVerbsAndWritesNoStore(t *testing.T) { if !slices.Contains(m.Consumes, "mesh-conditions.findings-asked") { t.Errorf("consumes %v lack mesh-conditions.findings-asked", m.Consumes) } - found := false + // Not a foundation part, it asks its finding stream in requires, by the template events (design 47 G §529, A-30), and + // declares no stream of that name. for _, st := range m.Streams { if st.Name == "mesh-build-go-findings" { - found = slices.Equal(st.Events, []string{"finding-written.*", "finding-cleared.*", "findings-stated.*"}) && st.MaxAgeDays == 7 && st.MaxMiB == 16 + t.Errorf("streams %+v still declare mesh-build-go-findings: a part outside the foundation asks finding-events in requires", m.Streams) } } - if !found { - t.Errorf("streams %+v lack mesh-build-go-findings (7 days, 16 MiB)", m.Streams) - } for _, r := range m.Resources { if r["id"] == "registry" { t.Errorf("the store's address is still placed: %v", r) diff --git a/modules/mesh-build-go/module.json b/modules/mesh-build-go/module.json index e1cbbdd5e..19c0890ae 100644 --- a/modules/mesh-build-go/module.json +++ b/modules/mesh-build-go/module.json @@ -1,6 +1,6 @@ { "module": "mesh-build-go", - "version": "1", + "version": "0.1", "packages": { "git.novox.be/novox/mesh-delivery/modules/mesh-delivery-builder/builds": "0.1", "git.novox.be/novox/mesh-catalog/modules/ssh-client/sshkeys": "0.1" @@ -15,13 +15,24 @@ "state": [ "toolchains", "keys", - {"name": "steps", "ttl-seconds": 172800}, "pauses", "findings" + { + "name": "steps", + "ttl-seconds": 172800 + }, + "pauses" ], "claims": [ { "name": "node-build-go", "scope": "node", - "serves": ["current", "drop", "pause", "resume", "steps", "kept-artifact"] + "serves": [ + "current", + "drop", + "pause", + "resume", + "steps", + "kept-artifact" + ] } ], "consumes": [ @@ -78,22 +89,51 @@ "streams": [ { "name": "toolchains-go", - "events": ["toolchain.**"] - }, - { - "name": "mesh-build-go-findings", - "events": ["finding-written.*", "finding-cleared.*", "findings-stated.*"], - "max-age-days": 7, - "max-mib": 16 + "events": [ + "toolchain.**" + ] } ], "requires": [ - {"name": "detected-steps", "storage": "key-value", "template": "state", "options": {"history": 1}}, - {"name": "kept-builds", "storage": "object-store", "template": "objects", "options": {"max-mib": 1024}}, + { + "name": "detected-steps", + "storage": "key-value", + "template": "state", + "options": { + "history": 1 + } + }, + { + "name": "kept-builds", + "storage": "object-store", + "template": "objects", + "options": { + "max-mib": 1024 + } + }, "forge-account", "go-toolchain", "go-package-registry", - "node-tools" + "node-tools", + { + "name": "findings", + "storage": "key-value", + "template": "state" + }, + { + "name": "finding-events", + "storage": "stream", + "template": "events", + "options": { + "events": [ + "finding-written.*", + "finding-cleared.*", + "findings-stated.*" + ], + "max-age-days": 7, + "max-mib": 16 + } + } ], "binds": { "go-package-registry": "${dir:state}/go-package-registry.json" @@ -149,7 +189,11 @@ "path": "${dir:state}/settings.json", "mode": "0600", "owner": "mesh-build-go", - "takes-config": ["capacity", "cores-per-step", "build-hours"], + "takes-config": [ + "capacity", + "cores-per-step", + "build-hours" + ], "merge": "json", "template": "files/settings.json" }, diff --git a/modules/mesh-build-image/module.json b/modules/mesh-build-image/module.json index 9190b8be7..4cfac839a 100644 --- a/modules/mesh-build-image/module.json +++ b/modules/mesh-build-image/module.json @@ -1,6 +1,6 @@ { "module": "mesh-build-image", - "version": "1", + "version": "0.1", "packages": { "git.novox.be/novox/mesh-delivery/modules/mesh-delivery-builder/builds": "0.1", "git.novox.be/novox/mesh-catalog/modules/ssh-client/sshkeys": "0.1" diff --git a/modules/mesh-build-node/module.json b/modules/mesh-build-node/module.json index e1cf7a539..1afa7b1a6 100644 --- a/modules/mesh-build-node/module.json +++ b/modules/mesh-build-node/module.json @@ -1,6 +1,6 @@ { "module": "mesh-build-node", - "version": "1", + "version": "0.1", "packages": { "git.novox.be/novox/mesh-delivery/modules/mesh-delivery-builder/builds": "0.1", "git.novox.be/novox/mesh-catalog/modules/ssh-client/sshkeys": "0.1" diff --git a/modules/mesh-catalog/module.json b/modules/mesh-catalog/module.json index c49699cbe..f3353220c 100644 --- a/modules/mesh-catalog/module.json +++ b/modules/mesh-catalog/module.json @@ -1,7 +1,7 @@ { "module": "mesh-catalog", "slug": "catalog", - "version": "1", + "version": "0.1", "capabilities": [ "container-runtime" ], diff --git a/modules/mesh-cli/module.json b/modules/mesh-cli/module.json index d533c48e6..d07f47d85 100644 --- a/modules/mesh-cli/module.json +++ b/modules/mesh-cli/module.json @@ -1,6 +1,6 @@ { "module": "mesh-cli", - "version": "1", + "version": "0.1", "moved": true, "requires": [ "mcp-endpoint" diff --git a/modules/mesh-conditions/go.mod b/modules/mesh-conditions/go.mod index 13d6fdc7e..2fc0911c5 100644 --- a/modules/mesh-conditions/go.mod +++ b/modules/mesh-conditions/go.mod @@ -13,6 +13,7 @@ require ( git.novox.be/novox/mesh-contracts/health-and-repair/go/seats/meshconditions v0.0.0-00010101000000-000000000000 git.novox.be/novox/mesh-contracts/health-and-repair/go/seats/meshhealers v0.0.0-00010101000000-000000000000 git.novox.be/novox/mesh-contracts/health-and-repair/go/seats/meshwatchdogs v0.0.0-00010101000000-000000000000 + git.novox.be/novox/mesh-delivery/contracts/go/clients/meshcatalogclient v0.0.0-00010101000000-000000000000 git.novox.be/novox/mesh-delivery/contracts/go/clients/meshwantsclient v0.0.0-00010101000000-000000000000 git.novox.be/novox/mesh-delivery/contracts/go/seats/meshcatalog v0.0.0-00010101000000-000000000000 git.novox.be/novox/mesh-delivery/contracts/go/seats/meshwants v0.0.0-00010101000000-000000000000 diff --git a/modules/mesh-conditions/module.json b/modules/mesh-conditions/module.json index 7079970a7..2036a41b8 100644 --- a/modules/mesh-conditions/module.json +++ b/modules/mesh-conditions/module.json @@ -1,6 +1,6 @@ { "module": "mesh-conditions", - "version": "1", + "version": "0.1", "runs-as": "mesh-conditions", "claims": [ { @@ -58,7 +58,8 @@ "type": "number", "description": "How long an observer has to state its findings after an ask, in seconds, before the keeper raises findings-unstated for it: 300 is five minutes.", "minimum": 1, - "default": 300 + "default": 300, + "runtime": true }, "owner-handover-seconds": { "type": "number", @@ -70,7 +71,8 @@ "type": "number", "description": "How long a first view may stay unanswered, in seconds, before the keeper raises view-waits for it: 300 is five minutes.", "minimum": 1, - "default": 300 + "default": 300, + "runtime": true } }, "own-secrets": { diff --git a/modules/mesh-config/module.json b/modules/mesh-config/module.json index b139a8421..018f6e534 100644 --- a/modules/mesh-config/module.json +++ b/modules/mesh-config/module.json @@ -1,6 +1,6 @@ { "module": "mesh-config", - "version": "1", + "version": "0.1", "packages": { "git.novox.be/novox/mesh-delivery/modules/mesh-delivery-builder/builds": "0.1" }, diff --git a/modules/mesh-delivery-gate/cmd/mesh-delivery-gate/findings.go b/modules/mesh-delivery-gate/cmd/mesh-delivery-gate/findings.go index 2594b5244..da2826bbc 100644 --- a/modules/mesh-delivery-gate/cmd/mesh-delivery-gate/findings.go +++ b/modules/mesh-delivery-gate/cmd/mesh-delivery-gate/findings.go @@ -20,9 +20,9 @@ import ( // Module is the gate's module name, the observer of its findings. const Module = "mesh-delivery-gate" -// The scope and the kind of the finding a carried approval nobody uses is (design 47 §592). +// The scope and the kind of the finding a carried approval nobody uses is (design 47 §592, A-42: the scope the mesh already uses for the delivery's findings). const ( - FindingScope = "gate" + FindingScope = "delivery" ApprovalCarriedOpen = "approval-carried-open" ) diff --git a/modules/mesh-delivery-gate/cmd/mesh-delivery-gate/findings_test.go b/modules/mesh-delivery-gate/cmd/mesh-delivery-gate/findings_test.go index 0e1fbdba2..959b0f9b0 100644 --- a/modules/mesh-delivery-gate/cmd/mesh-delivery-gate/findings_test.go +++ b/modules/mesh-delivery-gate/cmd/mesh-delivery-gate/findings_test.go @@ -93,7 +93,7 @@ func TestTheGatesApprovalCarriedOpenIsWrittenThroughItsHeldWriterAndClearedByThe t.Fatalf("held %+v", held) } for _, f := range held { - if f.Kind != ApprovalCarriedOpen || f.Scope != FindingScope || f.Observer != Module || !strings.Contains(f.Summary, head[:12]) { + if f.Kind != ApprovalCarriedOpen || f.Scope != "delivery" || f.Observer != Module || !strings.Contains(f.Summary, head[:12]) { t.Fatalf("finding %+v", f) } } diff --git a/modules/mesh-delivery-gate/module.json b/modules/mesh-delivery-gate/module.json index f52ff2c01..e7d471e6e 100644 --- a/modules/mesh-delivery-gate/module.json +++ b/modules/mesh-delivery-gate/module.json @@ -1,6 +1,6 @@ { "module": "mesh-delivery-gate", - "version": "1", + "version": "0.1", "slug": "gate", "claims": [ { diff --git a/modules/mesh-files/module.json b/modules/mesh-files/module.json index 915d2aef9..c43c13d49 100644 --- a/modules/mesh-files/module.json +++ b/modules/mesh-files/module.json @@ -1,6 +1,6 @@ { "module": "mesh-files", - "version": "1", + "version": "0.1", "claims": [ { "name": "node-files", diff --git a/modules/mesh-hand-acts/module.json b/modules/mesh-hand-acts/module.json index 0386ee8c3..ef8bb16a9 100644 --- a/modules/mesh-hand-acts/module.json +++ b/modules/mesh-hand-acts/module.json @@ -1,6 +1,6 @@ { "module": "mesh-hand-acts", - "version": "1", + "version": "0.1", "runs-as": "mesh-hand-acts", "claims": [ { diff --git a/modules/mesh-healers/module.json b/modules/mesh-healers/module.json index 4bd6f46ea..ccfb3216d 100644 --- a/modules/mesh-healers/module.json +++ b/modules/mesh-healers/module.json @@ -1,6 +1,6 @@ { "module": "mesh-healers", - "version": "1", + "version": "0.1", "runs-as": "mesh-healers", "claims": [ { diff --git a/modules/mesh-issues/module.json b/modules/mesh-issues/module.json index bd6323d2d..f35a86906 100644 --- a/modules/mesh-issues/module.json +++ b/modules/mesh-issues/module.json @@ -1,6 +1,6 @@ { "module": "mesh-issues", - "version": "1", + "version": "0.1", "slug": "issues", "seats": [ { diff --git a/modules/mesh-knowledge/cmd/mesh-knowledge/manifest_test.go b/modules/mesh-knowledge/cmd/mesh-knowledge/manifest_test.go index a02013503..ac295944b 100644 --- a/modules/mesh-knowledge/cmd/mesh-knowledge/manifest_test.go +++ b/modules/mesh-knowledge/cmd/mesh-knowledge/manifest_test.go @@ -79,7 +79,7 @@ func TestItDeclaresAndHoldsTheKnowledgeBaseSeatOnceForTheMesh(t *testing.T) { t.Fatalf("requires %s, contributes %v, state %v", m.Requires, m.Contributes, m.State) } // It asks the operator on the router, hears the router's word, and hears the judge's answers. - if !reflect.DeepEqual(m.Uses, []string{"operator-channel"}) || !reflect.DeepEqual(m.Consumes, append([]string{"claude-code.judged"}, overviewConsumes()...)) { + if !reflect.DeepEqual(m.Uses, []string{"operator-channel"}) || !reflect.DeepEqual(m.Consumes, append(append([]string{"claude-code.judged"}, overviewConsumes()...), "mesh-conditions.findings-asked")) { t.Fatalf("uses %v, consumes %v", m.Uses, m.Consumes) } if !reflect.DeepEqual(m.Invokes, []string{"seat:issue-tracker.reserve", "claude-code.claude_code_judge", "records.records_status", @@ -232,7 +232,7 @@ func TestItAsksForItsBusStateInTheTypedForm(t *testing.T) { names = append(names, e.Name) byName[e.Name] = e } - if !reflect.DeepEqual(names, []string{"records", "drafts", "asked", "findings", "sent", "reviews"}) { + if !reflect.DeepEqual(names, []string{"records", "drafts", "asked", "findings", "sent", "reviews", "finding-events"}) { t.Fatalf("bus state %v", names) } rec := byName["records"] diff --git a/modules/mesh-knowledge/module.json b/modules/mesh-knowledge/module.json index 71dd47421..c765e2862 100644 --- a/modules/mesh-knowledge/module.json +++ b/modules/mesh-knowledge/module.json @@ -1,6 +1,6 @@ { "module": "mesh-knowledge", - "version": "1", + "version": "0.1", "slug": "knowledge", "requires": [ "postgres-database", @@ -78,7 +78,11 @@ {"name": "asked", "storage": "key-value", "template": "state"}, {"name": "findings", "storage": "key-value", "template": "state"}, {"name": "sent", "storage": "key-value", "template": "state"}, - {"name": "reviews", "storage": "stream", "configuration": {"when-full": "refuse", "max-mib": 512, "max-age-days": "none", "grant": "readers", "events": ["part-reviewed"]}} + {"name": "reviews", "storage": "stream", "configuration": {"when-full": "refuse", "max-mib": 512, "max-age-days": "none", "grant": "readers", "events": ["part-reviewed"]}}, + { + "name": "finding-events", "storage": "stream", "template": "events", + "options": {"events": ["finding-written.*", "finding-cleared.*", "findings-stated.*"], "max-age-days": 7, "max-mib": 16} + } ], "contributes": { "postgres-database": { @@ -217,7 +221,8 @@ "mesh-delivery-gate.transition", "mesh-delivery-gate.merged", "messenger.offered", - "messenger.closed" + "messenger.closed", + "mesh-conditions.findings-asked" ], "uses": [ "operator-channel" diff --git a/modules/mesh-mail-notifier/module.json b/modules/mesh-mail-notifier/module.json index 9afba4661..8197fb30f 100644 --- a/modules/mesh-mail-notifier/module.json +++ b/modules/mesh-mail-notifier/module.json @@ -1,6 +1,6 @@ { "module": "mesh-mail-notifier", - "version": "1", + "version": "0.1", "runs-as": "mesh-mail-notifier", "claims": [ { diff --git a/modules/mesh-mail-reader/module.json b/modules/mesh-mail-reader/module.json index b83e8bb40..5829145a1 100644 --- a/modules/mesh-mail-reader/module.json +++ b/modules/mesh-mail-reader/module.json @@ -1,6 +1,6 @@ { "module": "mesh-mail-reader", - "version": "1", + "version": "0.1", "runs-as": "mesh-mail-reader", "claims": [ { diff --git a/modules/mesh-mail-web/module.json b/modules/mesh-mail-web/module.json index c6c0d3de5..ddb16db66 100644 --- a/modules/mesh-mail-web/module.json +++ b/modules/mesh-mail-web/module.json @@ -1,6 +1,6 @@ { "module": "mesh-mail-web", - "version": "1", + "version": "0.1", "slug": "mail-web", "runs-as": "mesh-mail-web", "claims": [ diff --git a/modules/mesh-mail/module.json b/modules/mesh-mail/module.json index 735fbc54f..ce94111a8 100644 --- a/modules/mesh-mail/module.json +++ b/modules/mesh-mail/module.json @@ -1,6 +1,6 @@ { "module": "mesh-mail", - "version": "1", + "version": "0.1", "slug": "mail", "seats": [ { diff --git a/modules/mesh-provisioner-client/module.json b/modules/mesh-provisioner-client/module.json index 61959a9f7..53a205b6c 100644 --- a/modules/mesh-provisioner-client/module.json +++ b/modules/mesh-provisioner-client/module.json @@ -1,6 +1,6 @@ { "module": "mesh-provisioner-client", - "version": "2", + "version": "0.1", "claims": [ { "name": "node-provisioner", diff --git a/modules/mesh-provisioner/cmd/mesh-provisioner/provisioner_test.go b/modules/mesh-provisioner/cmd/mesh-provisioner/provisioner_test.go index fd6cbc2d8..8771b6b16 100644 --- a/modules/mesh-provisioner/cmd/mesh-provisioner/provisioner_test.go +++ b/modules/mesh-provisioner/cmd/mesh-provisioner/provisioner_test.go @@ -327,7 +327,7 @@ func TestTheManifestDeclaresWhatTheCodeKeeps(t *testing.T) { t.Errorf("the claim: %+v", m.Claims) } // needs stays declared this release so its first start can empty it (ADR 0570 clause 1). - if want := []string{Registry, Needs, Applied, Collect, ProvisionsState, PlansState, RefusedState, "findings"}; !slices.Equal(m.State, want) { + if want := []string{Registry, Needs, Applied, Collect, ProvisionsState, PlansState, RefusedState}; !slices.Equal(m.State, want) { t.Errorf("the state is %v, want %v", m.State, want) } // Every state and act has its tool (ADR 0570 Consequences): the verb reads the clients' states, the holder's tools diff --git a/modules/mesh-provisioner/module.json b/modules/mesh-provisioner/module.json index fb3326069..5a47b0219 100644 --- a/modules/mesh-provisioner/module.json +++ b/modules/mesh-provisioner/module.json @@ -1,6 +1,6 @@ { "module": "mesh-provisioner", - "version": "2", + "version": "0.1", "packages": { "git.novox.be/novox/mesh-delivery/modules/mesh-delivery-builder/builds": "0.1" }, @@ -59,8 +59,7 @@ "collect", "provisions", "plans", - "refused", - "findings" + "refused" ], "core-credentials": true, "own-secrets": { @@ -121,6 +120,11 @@ "max-age-days": 7, "max-mib": 16 } + }, + { + "name": "findings", + "storage": "key-value", + "template": "state" } ] } diff --git a/modules/mesh-reads/module.json b/modules/mesh-reads/module.json index 18062752f..4dae766f8 100644 --- a/modules/mesh-reads/module.json +++ b/modules/mesh-reads/module.json @@ -1,6 +1,6 @@ { "module": "mesh-reads", - "version": "1", + "version": "0.1", "runs-as": "mesh-reads", "claims": [ { diff --git a/modules/mesh-self-check/cmd/mesh-self-check/manifest_test.go b/modules/mesh-self-check/cmd/mesh-self-check/manifest_test.go index 8d033ac94..94166e71a 100644 --- a/modules/mesh-self-check/cmd/mesh-self-check/manifest_test.go +++ b/modules/mesh-self-check/cmd/mesh-self-check/manifest_test.go @@ -68,8 +68,9 @@ func TestTheManifestSaysWhatTheCodeDoes(t *testing.T) { if !slices.Equal(m.Reads, Reads) { t.Errorf("reads %v, want what the probes read, %v", m.Reads, Reads) } - if !slices.Equal(m.Consume, Consumes) { - t.Errorf("consumes %v, want the views families the probes follow, %v", m.Consume, Consumes) + // And the keeper's ask, which a part keeping findings hears (design 47 G §387). + if want := append(slices.Clone(Consumes), "mesh-conditions.findings-asked"); !slices.Equal(m.Consume, want) { + t.Errorf("consumes %v, want the views families the probes follow and the keeper's ask, %v", m.Consume, want) } for _, view := range []string{assignerModule + ".views." + placing.StateAssignments, assignerModule + ".views." + placing.StateSeatHolders} { if !slices.Contains(m.Consume, view) { diff --git a/modules/mesh-self-check/module.json b/modules/mesh-self-check/module.json index 3c16d3e69..ab0317fc9 100644 --- a/modules/mesh-self-check/module.json +++ b/modules/mesh-self-check/module.json @@ -1,6 +1,6 @@ { "module": "mesh-self-check", - "version": "1", + "version": "0.1", "packages": { "git.novox.be/novox/mesh-catalog/modules/restic/backupgood": "0.1", "git.novox.be/novox/mesh-catalog/modules/disk-load/diskreadings": "0.1" @@ -37,10 +37,10 @@ "mesh-delivery-assigner.views.assignments", "mesh-delivery-assigner.views.seat-holders", "mesh-delivery-indexer.views.modules", - "mesh-delivery-indexer.views.manifests" + "mesh-delivery-indexer.views.manifests", + "mesh-conditions.findings-asked" ], "state": [ - "findings", "verdict", { "name": "verdicts", @@ -94,5 +94,26 @@ ], "runtime": true } - } + }, + "requires": [ + { + "name": "findings", + "storage": "key-value", + "template": "state" + }, + { + "name": "finding-events", + "storage": "stream", + "template": "events", + "options": { + "events": [ + "finding-written.*", + "finding-cleared.*", + "findings-stated.*" + ], + "max-age-days": 7, + "max-mib": 16 + } + } + ] } diff --git a/modules/mesh-vault/module.json b/modules/mesh-vault/module.json index 8a33f4943..9a780a2d6 100644 --- a/modules/mesh-vault/module.json +++ b/modules/mesh-vault/module.json @@ -1,6 +1,6 @@ { "module": "mesh-vault", - "version": "1", + "version": "0.1", "packages": { "git.novox.be/novox/mesh-delivery/modules/mesh-grants/grantsstate": "0.1" }, diff --git a/modules/mesh-watcher/module.json b/modules/mesh-watcher/module.json index c4d8d9f98..020e049a6 100644 --- a/modules/mesh-watcher/module.json +++ b/modules/mesh-watcher/module.json @@ -1,6 +1,6 @@ { "module": "mesh-watcher", - "version": "1", + "version": "0.1", "slug": "watch", "consumes": [ "mesh-self-check.checked", diff --git a/modules/messenger/module.json b/modules/messenger/module.json index c66ff9074..c6b1e56de 100644 --- a/modules/messenger/module.json +++ b/modules/messenger/module.json @@ -1,6 +1,6 @@ { "module": "messenger", - "version": "1", + "version": "0.1", "slug": "msgr", "runs-as": "messenger", "seats": [ diff --git a/modules/minio/module.json b/modules/minio/module.json index 60800260d..4f829c495 100644 --- a/modules/minio/module.json +++ b/modules/minio/module.json @@ -1,6 +1,6 @@ { "module": "minio", - "version": "1", + "version": "0.1", "upgrade": { "policy": "record", "why": "holds the photos themselves (irreplaceable, kept by photos) for its consumers: a person takes each build, after a backup (hq ADR 0236)" diff --git a/modules/model-usage/module.json b/modules/model-usage/module.json index 50743a3cd..6e5b3c96f 100644 --- a/modules/model-usage/module.json +++ b/modules/model-usage/module.json @@ -1,6 +1,6 @@ { "module": "model-usage", - "version": "1", + "version": "0.1", "slug": "usage", "capabilities": [ "container-runtime" diff --git a/modules/mongodb/module.json b/modules/mongodb/module.json index fc7d52124..5e0961211 100644 --- a/modules/mongodb/module.json +++ b/modules/mongodb/module.json @@ -1,6 +1,6 @@ { "module": "mongodb", - "version": "1", + "version": "0.1", "upgrade": { "policy": "record", "why": "a provider whose restart drops every consumer on its machine, and which holds the photos' albums (irreplaceable, kept by photos): a person takes each build, after a backup (hq ADR 0236)" diff --git a/modules/mosquitto/module.json b/modules/mosquitto/module.json index a7213d443..e1e0bf0c6 100644 --- a/modules/mosquitto/module.json +++ b/modules/mosquitto/module.json @@ -1,6 +1,6 @@ { "module": "mosquitto", - "version": "1", + "version": "0.1", "slug": "mosq", "provides": [ { diff --git a/modules/mounts/module.json b/modules/mounts/module.json index 63c34d518..cd89f3659 100644 --- a/modules/mounts/module.json +++ b/modules/mounts/module.json @@ -1,6 +1,6 @@ { "module": "mounts", - "version": "1", + "version": "0.1", "packages": { "git.novox.be/novox/mesh-catalog/modules/disk-load/diskreadings": "0.1" }, diff --git a/modules/mssql/module.json b/modules/mssql/module.json index 35cdbe6ef..a34bcea2e 100644 --- a/modules/mssql/module.json +++ b/modules/mssql/module.json @@ -1,6 +1,6 @@ { "module": "mssql", - "version": "1", + "version": "0.1", "upgrade": { "policy": "record", "why": "a provider whose restart drops every consumer on its machine, and whose new version may upgrade its databases in place: a person takes each build, after a backup (hq ADR 0236)" diff --git a/modules/n8n/module.json b/modules/n8n/module.json index 975247faa..bdbfbd24d 100644 --- a/modules/n8n/module.json +++ b/modules/n8n/module.json @@ -1,6 +1,6 @@ { "module": "n8n", - "version": "1", + "version": "0.1", "capabilities": [ "container-runtime" ], diff --git a/modules/nats/module.json b/modules/nats/module.json index 456946488..87e0071f0 100644 --- a/modules/nats/module.json +++ b/modules/nats/module.json @@ -1,6 +1,6 @@ { "module": "nats", - "version": "1", + "version": "0.1", "packages": { "git.novox.be/novox/mesh-delivery/modules/mesh-grants/busgrants": "0.1" }, diff --git a/modules/netcheck/module.json b/modules/netcheck/module.json index bb2f0f321..bb9b92f93 100644 --- a/modules/netcheck/module.json +++ b/modules/netcheck/module.json @@ -1,6 +1,6 @@ { "module": "netcheck", - "version": "1", + "version": "0.1", "emits": [ "tunnel.endpoint-changed", "tunnel.handshake-stale", diff --git a/modules/networkmanager/module.json b/modules/networkmanager/module.json index 68ace345e..89d4ecc40 100644 --- a/modules/networkmanager/module.json +++ b/modules/networkmanager/module.json @@ -1,6 +1,6 @@ { "module": "networkmanager", - "version": "1", + "version": "0.1", "upgrade": { "policy": "record", "why": "the machine's network: a build that breaks it can cut the machine off from the bus, and then neither the gate's rollback nor a push reaches it (hq ADR 0236)" diff --git a/modules/nextcloud-client/module.json b/modules/nextcloud-client/module.json index af71acbbb..9b6c1c0c5 100644 --- a/modules/nextcloud-client/module.json +++ b/modules/nextcloud-client/module.json @@ -1,6 +1,6 @@ { "module": "nextcloud-client", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager" ], diff --git a/modules/nextcloud/module.json b/modules/nextcloud/module.json index 5d9f2ddc3..4560c106a 100644 --- a/modules/nextcloud/module.json +++ b/modules/nextcloud/module.json @@ -1,6 +1,6 @@ { "module": "nextcloud", - "version": "1", + "version": "0.1", "slug": "ncloud", "requires": [ "postgres-database", diff --git a/modules/nfs-server/module.json b/modules/nfs-server/module.json index 9e7d61b69..1bb18465f 100644 --- a/modules/nfs-server/module.json +++ b/modules/nfs-server/module.json @@ -1,6 +1,6 @@ { "module": "nfs-server", - "version": "1", + "version": "0.1", "packages": { "git.novox.be/novox/mesh-catalog/modules/disk-load/diskreadings": "0.1" }, diff --git a/modules/nftables/module.json b/modules/nftables/module.json index b7b0c83fe..6c6634d86 100644 --- a/modules/nftables/module.json +++ b/modules/nftables/module.json @@ -1,6 +1,6 @@ { "module": "nftables", - "version": "1", + "version": "0.1", "upgrade": { "policy": "record", "why": "the machine's packet filter: a build that breaks it can cut the machine off from the bus, and then neither the gate's rollback nor a push reaches it (hq ADR 0236)" diff --git a/modules/nm-applet/module.json b/modules/nm-applet/module.json index 1c6764ef0..7552731c7 100644 --- a/modules/nm-applet/module.json +++ b/modules/nm-applet/module.json @@ -1,6 +1,6 @@ { "module": "nm-applet", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager" ], diff --git a/modules/node-env/module.json b/modules/node-env/module.json index 85fd7e57c..83437459e 100644 --- a/modules/node-env/module.json +++ b/modules/node-env/module.json @@ -1,6 +1,6 @@ { "module": "node-env", - "version": "1", + "version": "0.1", "moved": true, "claims": [ { diff --git a/modules/nodejs/module.json b/modules/nodejs/module.json index 2f4a049a7..d34a6d884 100644 --- a/modules/nodejs/module.json +++ b/modules/nodejs/module.json @@ -1,6 +1,6 @@ { "module": "nodejs", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager" ], diff --git a/modules/nodered/module.json b/modules/nodered/module.json index f8068dd1c..a633c7c0a 100644 --- a/modules/nodered/module.json +++ b/modules/nodered/module.json @@ -1,6 +1,6 @@ { "module": "nodered", - "version": "1", + "version": "0.1", "emits": [ "flows.deployed" ], diff --git a/modules/ollama/module.json b/modules/ollama/module.json index 312ef6bff..d22f5f721 100644 --- a/modules/ollama/module.json +++ b/modules/ollama/module.json @@ -1,6 +1,6 @@ { "module": "ollama", - "version": "1", + "version": "0.1", "capabilities": [ "container-runtime" ], diff --git a/modules/only-office/module.json b/modules/only-office/module.json index 4cabbfd03..e54ee8b06 100644 --- a/modules/only-office/module.json +++ b/modules/only-office/module.json @@ -1,6 +1,6 @@ { "module": "only-office", - "version": "1", + "version": "0.1", "slug": "office", "provides": [ { diff --git a/modules/openai-consumer/module.json b/modules/openai-consumer/module.json index 2e98414ef..1a6d7408b 100644 --- a/modules/openai-consumer/module.json +++ b/modules/openai-consumer/module.json @@ -1,6 +1,6 @@ { "module": "openai-consumer", - "version": "1", + "version": "0.1", "slug": "openai", "capabilities": [ "container-runtime" diff --git a/modules/openrazer/module.json b/modules/openrazer/module.json index faa34f870..7337e9e17 100644 --- a/modules/openrazer/module.json +++ b/modules/openrazer/module.json @@ -1,6 +1,6 @@ { "module": "openrazer", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager" ], diff --git a/modules/pacman/module.json b/modules/pacman/module.json index 307c79a4e..941f2b0ad 100644 --- a/modules/pacman/module.json +++ b/modules/pacman/module.json @@ -1,6 +1,6 @@ { "module": "pacman", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager", "service-manager" diff --git a/modules/photos-eef/module.json b/modules/photos-eef/module.json index 101bdc27a..3bb9940f3 100644 --- a/modules/photos-eef/module.json +++ b/modules/photos-eef/module.json @@ -1,6 +1,6 @@ { "module": "photos-eef", - "version": "1", + "version": "0.1", "slug": "eef", "capabilities": [ "container-runtime" diff --git a/modules/photos-filip/module.json b/modules/photos-filip/module.json index 9c1c83fac..8287b4a1f 100644 --- a/modules/photos-filip/module.json +++ b/modules/photos-filip/module.json @@ -1,6 +1,6 @@ { "module": "photos-filip", - "version": "1", + "version": "0.1", "slug": "filip", "capabilities": [ "container-runtime" diff --git a/modules/picom/module.json b/modules/picom/module.json index cfdc39702..31d53c43e 100644 --- a/modules/picom/module.json +++ b/modules/picom/module.json @@ -1,6 +1,6 @@ { "module": "picom", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager" ], diff --git a/modules/polychromatic/module.json b/modules/polychromatic/module.json index 4d6ba4b33..b02d2a30f 100644 --- a/modules/polychromatic/module.json +++ b/modules/polychromatic/module.json @@ -1,6 +1,6 @@ { "module": "polychromatic", - "version": "1", + "version": "0.1", "moved": true, "requires": [ "x11-display" diff --git a/modules/postgres/module.json b/modules/postgres/module.json index 8f9f05791..c441d7181 100644 --- a/modules/postgres/module.json +++ b/modules/postgres/module.json @@ -1,6 +1,6 @@ { "module": "postgres", - "version": "1", + "version": "0.1", "moved": true, "upgrade": { "policy": "record", diff --git a/modules/power/module.json b/modules/power/module.json index 909499ad4..cf5b061bc 100644 --- a/modules/power/module.json +++ b/modules/power/module.json @@ -1,6 +1,6 @@ { "module": "power", - "version": "1", + "version": "0.1", "moved": true, "templates": "templates", "capabilities": [ diff --git a/modules/powerlevel10k/module.json b/modules/powerlevel10k/module.json index da1bd4dfe..72c4e0243 100644 --- a/modules/powerlevel10k/module.json +++ b/modules/powerlevel10k/module.json @@ -1,6 +1,6 @@ { "module": "powerlevel10k", - "version": "1", + "version": "0.1", "moved": true, "resources": [ { diff --git a/modules/records/module.json b/modules/records/module.json index db6f7e5a9..4a040a3b0 100644 --- a/modules/records/module.json +++ b/modules/records/module.json @@ -1,6 +1,6 @@ { "module": "records", - "version": "1", + "version": "0.1", "slug": "records", "requires": [ "git" diff --git a/modules/redis/module.json b/modules/redis/module.json index 4cc6c4e56..4a7c95998 100644 --- a/modules/redis/module.json +++ b/modules/redis/module.json @@ -1,6 +1,6 @@ { "module": "redis", - "version": "1", + "version": "0.1", "provides": [ { "name": "redis-cache", diff --git a/modules/restic/module.json b/modules/restic/module.json index 1c8f1101f..462ff7aec 100644 --- a/modules/restic/module.json +++ b/modules/restic/module.json @@ -1,6 +1,6 @@ { "module": "restic", - "version": "1", + "version": "0.1", "packages": { "git.novox.be/novox/mesh-catalog/modules/disk-load/diskreadings": "0.1" }, diff --git a/modules/rofi/module.json b/modules/rofi/module.json index fbd061d01..69e7a5f70 100644 --- a/modules/rofi/module.json +++ b/modules/rofi/module.json @@ -1,6 +1,6 @@ { "module": "rofi", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "package-manager" diff --git a/modules/route-adapter/module.json b/modules/route-adapter/module.json index 2827462c7..28bbfa869 100644 --- a/modules/route-adapter/module.json +++ b/modules/route-adapter/module.json @@ -1,6 +1,6 @@ { "module": "route-adapter", - "version": "1", + "version": "0.1", "moved": true, "slug": "radapt", "capabilities": [ diff --git a/modules/screen-lock/module.json b/modules/screen-lock/module.json index 1791c7986..e73e79230 100644 --- a/modules/screen-lock/module.json +++ b/modules/screen-lock/module.json @@ -1,6 +1,6 @@ { "module": "screen-lock", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "package-manager" diff --git a/modules/searxng/module.json b/modules/searxng/module.json index cee18e4ef..d066a5cfb 100644 --- a/modules/searxng/module.json +++ b/modules/searxng/module.json @@ -1,6 +1,6 @@ { "module": "searxng", - "version": "1", + "version": "0.1", "capabilities": [ "container-runtime" ], diff --git a/modules/sensors/module.json b/modules/sensors/module.json index 3df678384..d029e350d 100644 --- a/modules/sensors/module.json +++ b/modules/sensors/module.json @@ -1,6 +1,6 @@ { "module": "sensors", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager", "service-manager" diff --git a/modules/showcase/module.json b/modules/showcase/module.json index 6b0db6722..7152479c7 100644 --- a/modules/showcase/module.json +++ b/modules/showcase/module.json @@ -1,6 +1,6 @@ { "module": "showcase", - "version": "1", + "version": "0.1", "templates": "templates", "slug": "show", "capabilities": [ diff --git a/modules/slack/module.json b/modules/slack/module.json index 9feeedb31..7736b3a1e 100644 --- a/modules/slack/module.json +++ b/modules/slack/module.json @@ -1,6 +1,6 @@ { "module": "slack", - "version": "1", + "version": "0.1", "moved": true, "requires": [ "x11-display" diff --git a/modules/snapd/module.json b/modules/snapd/module.json index 93ad73073..e0049a7fc 100644 --- a/modules/snapd/module.json +++ b/modules/snapd/module.json @@ -1,6 +1,6 @@ { "module": "snapd", - "version": "1", + "version": "0.1", "tools": [ "snapd_status", "snapd_list", diff --git a/modules/ssh-client/module.json b/modules/ssh-client/module.json index a6965445a..933b64acb 100644 --- a/modules/ssh-client/module.json +++ b/modules/ssh-client/module.json @@ -1,6 +1,6 @@ { "module": "ssh-client", - "version": "1", + "version": "0.1", "moved": true, "tools": [ "ssh_client_hosts", diff --git a/modules/sshd/module.json b/modules/sshd/module.json index 066e058d2..c8bd15edd 100644 --- a/modules/sshd/module.json +++ b/modules/sshd/module.json @@ -1,6 +1,6 @@ { "module": "sshd", - "version": "1", + "version": "0.1", "upgrade": { "policy": "record", "why": "the operator's way into the machine when the mesh cannot reach it: a build that breaks it is found only when that way is needed, which no gate sees (hq ADR 0236)" diff --git a/modules/step-ca/module.json b/modules/step-ca/module.json index 3f44ead7a..0656bdfa8 100644 --- a/modules/step-ca/module.json +++ b/modules/step-ca/module.json @@ -1,6 +1,6 @@ { "module": "step-ca", - "version": "1", + "version": "0.1", "capabilities": [ "container-runtime" ], diff --git a/modules/sudo/cmd/sudo-tools/manifest_test.go b/modules/sudo/cmd/sudo-tools/manifest_test.go index 3d3bb4546..1e438c81d 100644 --- a/modules/sudo/cmd/sudo-tools/manifest_test.go +++ b/modules/sudo/cmd/sudo-tools/manifest_test.go @@ -15,7 +15,7 @@ import ( func TestItDeclaresThePackageAndTheDropInSudoReads(t *testing.T) { m := manifest(t) - if m.Module != "sudo" || m.Version != "1" { + if m.Module != "sudo" || m.Version != "0.1" { t.Fatalf("%s %s", m.Module, m.Version) } if p := m.resource(t, "package"); p["type"] != "package" || p["package"] != "sudo" { diff --git a/modules/sudo/module.json b/modules/sudo/module.json index 364ce5fc9..5b84c2a6e 100644 --- a/modules/sudo/module.json +++ b/modules/sudo/module.json @@ -1,6 +1,6 @@ { "module": "sudo", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager" ], diff --git a/modules/supabase/module.json b/modules/supabase/module.json index 14ddbcd56..64141d342 100644 --- a/modules/supabase/module.json +++ b/modules/supabase/module.json @@ -1,6 +1,6 @@ { "module": "supabase", - "version": "1", + "version": "0.1", "capabilities": [ "container-runtime" ], diff --git a/modules/systemd-networkd/module.json b/modules/systemd-networkd/module.json index 0c4c109d7..e906eee0a 100644 --- a/modules/systemd-networkd/module.json +++ b/modules/systemd-networkd/module.json @@ -1,6 +1,6 @@ { "module": "systemd-networkd", - "version": "1", + "version": "0.1", "upgrade": { "policy": "record", "why": "the machine's network: a build that breaks it can cut the machine off from the bus, and then neither the gate's rollback nor a push reaches it (hq ADR 0236)" diff --git a/modules/systemd-resolved/module.json b/modules/systemd-resolved/module.json index 24b3bc858..f4a32c2bb 100644 --- a/modules/systemd-resolved/module.json +++ b/modules/systemd-resolved/module.json @@ -1,6 +1,6 @@ { "module": "systemd-resolved", - "version": "1", + "version": "0.1", "upgrade": { "policy": "record", "why": "the machine's names: a build that breaks this resolver stops every name resolving on a machine a person works on, the bus's included, and then neither the gate's rollback nor a push reaches it (hq ADR 0236, ADR 0247)" diff --git a/modules/systemd/module.json b/modules/systemd/module.json index 8c9403d2d..77c6311b5 100644 --- a/modules/systemd/module.json +++ b/modules/systemd/module.json @@ -1,6 +1,6 @@ { "module": "systemd", - "version": "1", + "version": "0.1", "capabilities": [ "service-manager", "package-manager" diff --git a/modules/telegram/module.json b/modules/telegram/module.json index 95ae6f1b2..a333cfce8 100644 --- a/modules/telegram/module.json +++ b/modules/telegram/module.json @@ -1,6 +1,6 @@ { "module": "telegram", - "version": "1", + "version": "0.1", "slug": "tgrm", "runs-as": "telegram", "claims": [ diff --git a/modules/time-sync/module.json b/modules/time-sync/module.json index c3d9b0c52..ba4f1cf53 100644 --- a/modules/time-sync/module.json +++ b/modules/time-sync/module.json @@ -1,6 +1,6 @@ { "module": "time-sync", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager", "service-manager" diff --git a/modules/triggerhappy/module.json b/modules/triggerhappy/module.json index 18faaf4b9..bbc84be9e 100644 --- a/modules/triggerhappy/module.json +++ b/modules/triggerhappy/module.json @@ -1,6 +1,6 @@ { "module": "triggerhappy", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "service-manager" diff --git a/modules/umami/module.json b/modules/umami/module.json index e3b9aa0d4..eb8df76e3 100644 --- a/modules/umami/module.json +++ b/modules/umami/module.json @@ -1,6 +1,6 @@ { "module": "umami", - "version": "1", + "version": "0.1", "capabilities": [ "container-runtime" ], diff --git a/modules/unifi/module.json b/modules/unifi/module.json index 2ee5cf49f..67348a912 100644 --- a/modules/unifi/module.json +++ b/modules/unifi/module.json @@ -1,6 +1,6 @@ { "module": "unifi", - "version": "1", + "version": "0.1", "capabilities": [ "container-runtime" ], diff --git a/modules/website/module.json b/modules/website/module.json index 481cfc665..b65fb187a 100644 --- a/modules/website/module.json +++ b/modules/website/module.json @@ -1,6 +1,6 @@ { "module": "website", - "version": "1", + "version": "0.1", "capabilities": [ "container-runtime" ], diff --git a/modules/xclip/module.json b/modules/xclip/module.json index bf06f6fa3..9c0829670 100644 --- a/modules/xclip/module.json +++ b/modules/xclip/module.json @@ -1,6 +1,6 @@ { "module": "xclip", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager" ], diff --git a/modules/xdg/module.json b/modules/xdg/module.json index c3d191ac3..f9afd0214 100644 --- a/modules/xdg/module.json +++ b/modules/xdg/module.json @@ -1,6 +1,6 @@ { "module": "xdg", - "version": "1", + "version": "0.1", "capabilities": [ "package-manager" ], diff --git a/modules/xorg/module.json b/modules/xorg/module.json index 1685dcb4e..72ea858d5 100644 --- a/modules/xorg/module.json +++ b/modules/xorg/module.json @@ -1,6 +1,6 @@ { "module": "xorg", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "package-manager", diff --git a/modules/xterm/module.json b/modules/xterm/module.json index b65be8eb9..def76a72d 100644 --- a/modules/xterm/module.json +++ b/modules/xterm/module.json @@ -1,6 +1,6 @@ { "module": "xterm", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "package-manager" diff --git a/modules/zfs/module.json b/modules/zfs/module.json index c109320a6..9b570fa89 100644 --- a/modules/zfs/module.json +++ b/modules/zfs/module.json @@ -1,6 +1,6 @@ { "module": "zfs", - "version": "1", + "version": "0.1", "capabilities": [ "service-manager" ], diff --git a/modules/zsh-autosuggestions/module.json b/modules/zsh-autosuggestions/module.json index e8839210f..b4702085c 100644 --- a/modules/zsh-autosuggestions/module.json +++ b/modules/zsh-autosuggestions/module.json @@ -1,6 +1,6 @@ { "module": "zsh-autosuggestions", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "package-manager" diff --git a/modules/zsh-syntax-highlighting/module.json b/modules/zsh-syntax-highlighting/module.json index b9c81a90c..4e4ea24a0 100644 --- a/modules/zsh-syntax-highlighting/module.json +++ b/modules/zsh-syntax-highlighting/module.json @@ -1,6 +1,6 @@ { "module": "zsh-syntax-highlighting", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "package-manager" diff --git a/modules/zsh/module.json b/modules/zsh/module.json index da125af27..8d965e972 100644 --- a/modules/zsh/module.json +++ b/modules/zsh/module.json @@ -1,6 +1,6 @@ { "module": "zsh", - "version": "1", + "version": "0.1", "moved": true, "capabilities": [ "package-manager"