Say which provision five consumers' checks exercise, so a database down is one condition (hq issue 145)
mesh/delivery-group group fix/145-a-consumer-is-held-under-its-provider rejected: composed together: the check could not run: the facts snapshot cannot be read…
mesh/merge-gate head b62bb158398d merged into trunk ebf7f3773dc7 — pass: builds gitea, mesh-knowledge, n8n, nextcloud, umami → ace, novox; no bus step; eve…
mesh/repo-check head b62bb158398d merged into trunk ebf7f3773dc7 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
mesh/delivery ready: it delivers once merged

gitea, nextcloud, umami and n8n gain an http check that reaches their
database through their own endpoint; mesh-knowledge's watch already
asks the database and now names it. While postgres is unhealthy, their
findings are held under its condition instead of raising one each.
This commit is contained in:
jochen
2026-10-14 03:21:53 +02:00
parent ebf7f3773d
commit b62bb15839
7 changed files with 38 additions and 1 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
66
62
The long-running resources of this catalogue that do not say how they are ready (`health`, novox/hq ADR 0240
rule 8), as `module check` counts them. It may only go down: merge-check.sh fails a change that raises it, and
one that lowers it writes the new number on the first line. From 2026-11-18, or once it is 0, a long-running
+7
View File
@@ -149,6 +149,13 @@
{
"id": "server",
"type": "container",
"health": {
"kind": "http",
"endpoint": "web",
"path": "/api/healthz",
"status": 200,
"needs": "postgres-database"
},
"name": "gitea",
"image": "gitea/gitea@sha256:87a67ee09d3ae0d1df5fda5dcda3e2a1f9236a45b0a59025d6e00e46adc43bef",
"env": {
@@ -121,6 +121,12 @@ func TestItsProcessesAreThePreparationTheActAndTheJudge(t *testing.T) {
!reflect.DeepEqual(m.Tools, []string{HealthTool, HighestTool}) {
t.Fatalf("watch %v, tools %v", watch, m.Tools)
}
// The watch's verdict is whether the database serves, so its check names the provision it exercises: while the
// database's provider is unhealthy, this finding is held under the provider's condition (hq ADR 0240 rule 5,
// issue 145).
if h["needs"] != "postgres-database" {
t.Fatalf("watch's check needs %v; it exercises postgres-database", h["needs"])
}
if watch["env"].(map[string]any)["MESH_KNOWLEDGE_STATUS"] != m.Build.Artifacts[0].Env["MESH_KNOWLEDGE_STATUS"] {
t.Fatal("watch writes another status file than the health tool reads")
}
+1
View File
@@ -156,6 +156,7 @@
"health": {
"kind": "tool",
"tool": "knowledge_health",
"needs": "postgres-database",
"interval": "60s",
"timeout": "10s",
"looks": 2,
+7
View File
@@ -97,6 +97,13 @@
{
"id": "server",
"type": "container",
"health": {
"kind": "http",
"endpoint": "web",
"path": "/healthz/readiness",
"status": 200,
"needs": "postgres-database"
},
"name": "n8n",
"artifact": "server",
"network": "n8n",
+8
View File
@@ -83,6 +83,14 @@
{
"id": "server",
"type": "container",
"health": {
"kind": "http",
"endpoint": "web",
"path": "/status.php",
"status": 200,
"body": "\"installed\":true",
"needs": "postgres-database"
},
"name": "nextcloud",
"image": "nextcloud@sha256:fb966733647ea03f0446b0c22eac9733c8eb616d37b960caca9d4c3010e14a08",
"env-file": [
+8
View File
@@ -89,6 +89,14 @@
{
"id": "server",
"type": "container",
"health": {
"kind": "http",
"endpoint": "web",
"path": "/api/share/mesh-health",
"status": 404,
"timeout": "10s",
"needs": "postgres-database"
},
"name": "umami",
"image": "ghcr.io/umami-software/umami@sha256:85909afc45bdcda1917394594a087421fdbb05610fded0fa9f6fb861abb2f367",
"network": "umami",