[Bug][Infra] jetson-influxdb fleet exit-0 churn — all 7 replicas print banner, hit 'I/O error', exit and restart every ~10s (since the 2026-07-13 17:01Z redeploy)
#554
and exits 0 within seconds; RestartPolicy (any, 5s delay, unlimited attempts) restarts it — a full cycle every ~10s on dreamstream1/2/3/5/6/7. In docker service ls the replicas flicker between 0/1 and 1/1, so a single glance misses it.
Because the exit code is 0, tasks show 'Complete', not 'Failed' — swarm looks healthy-ish while no jetson metrics are reported at all, plus constant container churn on six nodes. InfluxDB itself logged no errors in the last 30m, so the writes aren't even reaching it.
Timeline: service spec last updated 2026-07-13 17:01:42Z (the fleet-wide redeploy wave) — consistent with the churn starting then. 'I/O error' is terse; likely candidates: InfluxDB endpoint/creds changed in that redeploy, or a sensor/device path not mounted. Needs a look at the image entrypoint.
Extra:jetson-influx-4 can't even churn — its replacement is Pending 'no suitable node' (~2h) because pinned node dreamstream4 is Down (#552), and the old dreamstream4 task is another stale DesiredState=Shutdown / CurrentState=Running (3 days ago) zombie like keycloak-postgres.
Also fix while here: exiting 0 on a fatal I/O error is wrong — exit non-zero so swarm/monitoring can distinguish failure from completion.
Refs:#552 (dreamstream4 down — the -4 replica), #541 (docker-monitor gets fed this steady churn-event stream).
**QA Team** — found during QA log watch 2026-07-14 ~02:30Z.
**Symptom:** every `jetson-influxdb_jetson-influx-N` replica (pinned `node.hostname == dreamstreamN`) is in a fast churn loop: container starts, prints
```
Started SpikerSoft Jetson Teaching NVidia Jetson Tx2 InfluxDb Reporting Service!
I/O error
```
and exits **0** within seconds; RestartPolicy (any, 5s delay, unlimited attempts) restarts it — a full cycle every ~10s on dreamstream1/2/3/5/6/7. In `docker service ls` the replicas flicker between 0/1 and 1/1, so a single glance misses it.
Because the exit code is 0, tasks show 'Complete', not 'Failed' — swarm looks healthy-ish while **no jetson metrics are reported at all**, plus constant container churn on six nodes. InfluxDB itself logged no errors in the last 30m, so the writes aren't even reaching it.
**Timeline:** service spec last updated **2026-07-13 17:01:42Z** (the fleet-wide redeploy wave) — consistent with the churn starting then. 'I/O error' is terse; likely candidates: InfluxDB endpoint/creds changed in that redeploy, or a sensor/device path not mounted. Needs a look at the image entrypoint.
**Extra:** `jetson-influx-4` can't even churn — its replacement is **Pending 'no suitable node' (~2h)** because pinned node dreamstream4 is Down (#552), and the old dreamstream4 task is another stale `DesiredState=Shutdown / CurrentState=Running (3 days ago)` zombie like keycloak-postgres.
**Also fix while here:** exiting 0 on a fatal I/O error is wrong — exit non-zero so swarm/monitoring can distinguish failure from completion.
**Refs:** #552 (dreamstream4 down — the -4 replica), #541 (docker-monitor gets fed this steady churn-event stream).
QA Team — root cause CONFIRMED 2026-07-14 ~02:45Z: the 'I/O error' was the reporters failing to reach InfluxDB itself. The main influxDB_influxdb service is pinned to dreamstream4 and was hard-down for the whole ds4 outage (~01:15–02:40Z) while showing a stale 1/1 in docker service ls (unconfirmable zombie task, same class as the others in #552). The moment ds4 rejoined and InfluxDB restarted (~02:40Z), all 7 jetson replicas went stable 1/1 — churn stopped fleet-wide without any change to this service.
Remaining actionable items on this ticket (all still valid):
exit non-zero on fatal I/O error (the exit-0 'Complete' churn masked a 1.5h telemetry blackout);
the terse 'I/O error' should name the endpoint it failed against;
consider retry-with-backoff in the reporter instead of exit — 6 nodes restarting a container every 10s for 90 min is a lot of churn for a dependency blip;
new: InfluxDB on a single pinned node is a SPOF for all fleet telemetry — worth its own thought (HA or at least an alert when it's actually unreachable, since replica counts lie during node outages).
**QA Team** — root cause CONFIRMED 2026-07-14 ~02:45Z: the 'I/O error' was the reporters failing to reach InfluxDB itself. The main `influxDB_influxdb` service is **pinned to dreamstream4** and was hard-down for the whole ds4 outage (~01:15–02:40Z) while showing a stale 1/1 in `docker service ls` (unconfirmable zombie task, same class as the others in #552). The moment ds4 rejoined and InfluxDB restarted (~02:40Z), **all 7 jetson replicas went stable 1/1** — churn stopped fleet-wide without any change to this service.
Remaining actionable items on this ticket (all still valid):
1. exit non-zero on fatal I/O error (the exit-0 'Complete' churn masked a 1.5h telemetry blackout);
2. the terse 'I/O error' should name the endpoint it failed against;
3. consider retry-with-backoff in the reporter instead of exit — 6 nodes restarting a container every 10s for 90 min is a lot of churn for a dependency blip;
4. new: InfluxDB on a single pinned node is a SPOF for all fleet telemetry — worth its own thought (HA or at least an alert when it's actually unreachable, since replica counts lie during node outages).
Registry/source findings from repo-side investigation (no host access from this session):
1. The image is unpullable — its namespace no longer exists. The stack pins git.spikersoft.com/jspiker/jetson-tx2-influxdb-grafana:latest, but the Gitea API returns user redirect does not exist [name: jspiker] — no such user, no container package under it, and no jetson/influx source repo anywhere on this Gitea. The whole fleet is running off node-local image cache remnants; any node that prunes or loses its cache can never start this service again (that is presumably why jetson-influx-4's replacement can't materialize on a rescheduled node, same No such image class as #552's keycloak fallout). This is the exact "service can only start where state already happens to be" failure #413/#521 exist to kill. The source needs to be found (or reconstructed) and rebuilt into a real spikerj/* registry path — until then this stack cannot heal.
2. Probable cause of the churn itself — likely the same incident as #483. The replicas restart every ~10s; #483 reports InfluxDB rejecting a client every ~10s with authorization not found (stale/missing token). A redeploy wave at 17:01Z re-read the .env-10N files off the Gluster checkout — if the influx URL/token in them is stale (or the env files went missing/unreadable during tonight's Gluster degradation, #552), the client's first write fails and it exits 0. The other candidate is a dead /run/jtop.sock on the hosts (jtop daemon stopped). Quick discrimination with host access:
docker service logs jetson-influxdb_jetson-influx-1 --tail 20 — anything after "I/O error"?
On a DS node: ls -la /run/jtop.sock && systemctl status jtop (socket alive?)
Compare .env-105 influx endpoint/token against the current influxdb stack's credentials (#483).
3. Two hygiene bugs to fix when the source is found: exit code 0 on a fatal error (swarm shows Complete, not Failed — this hid the outage), and plaintext influx creds in .env-10N files sitting on the shared mount (OpenBao #545 candidate).
— macbook-claude-session
Registry/source findings from repo-side investigation (no host access from this session):
**1. The image is unpullable — its namespace no longer exists.** The stack pins `git.spikersoft.com/jspiker/jetson-tx2-influxdb-grafana:latest`, but the Gitea API returns `user redirect does not exist [name: jspiker]` — no such user, no container package under it, and no `jetson`/`influx` source repo anywhere on this Gitea. The whole fleet is running off node-local image cache remnants; any node that prunes or loses its cache can never start this service again (that is presumably why `jetson-influx-4`'s replacement can't materialize on a rescheduled node, same `No such image` class as #552's keycloak fallout). This is the exact "service can only start where state already happens to be" failure #413/#521 exist to kill. **The source needs to be found (or reconstructed) and rebuilt into a real `spikerj/*` registry path** — until then this stack cannot heal.
**2. Probable cause of the churn itself — likely the same incident as #483.** The replicas restart every ~10s; #483 reports InfluxDB rejecting a client every ~10s with `authorization not found` (stale/missing token). A redeploy wave at 17:01Z re-read the `.env-10N` files off the Gluster checkout — if the influx URL/token in them is stale (or the env files went missing/unreadable during tonight's Gluster degradation, #552), the client's first write fails and it exits 0. The other candidate is a dead `/run/jtop.sock` on the hosts (jtop daemon stopped). Quick discrimination with host access:
- `docker service logs jetson-influxdb_jetson-influx-1 --tail 20` — anything after "I/O error"?
- On a DS node: `ls -la /run/jtop.sock && systemctl status jtop` (socket alive?)
- Compare `.env-105` influx endpoint/token against the current influxdb stack's credentials (#483).
**3. Two hygiene bugs to fix when the source is found:** exit code 0 on a fatal error (swarm shows Complete, not Failed — this hid the outage), and plaintext influx creds in `.env-10N` files sitting on the shared mount (OpenBao #545 candidate).
— macbook-claude-session
Diagnosis: host-side jtop dependency, not config and not credentials
The reporter reads each board's stats from the host's jtop daemon over a bind-mounted unix socket (/run/jtop.sock). When that daemon isn't serving the socket (host reboot, dead/stale jtop service, or a socket file left behind by a killed daemon), the in-container client raises the terse I/O error and the entrypoint exits 0.
Exit 0 is the entire reason this was invisible: swarm records the task as Complete, not Failed, so service ps shows no error and the replica count only flickers 1/1 -> 0/1 -> 1/1. Six of seven replicas churned for ~9.5h reporting nothing while looking healthy.
It has already recovered on its own
The fleet self-healed at 2026-07-14 02:32:40Z, when the boards' docker/jtop daemons came back (their tasks were briefly Rejected with cannot create a swarm scoped network when swarm is not active at ~02:28Z — a host/daemon restart). All 7 replicas are now stable and writing (113 points were successfully written : True).
It recovered with no spec change whatsoever — which is exactly what proves the cause was host-side rather than the endpoint/creds changing in the redeploy. The identical task spec that churned is the one working now.
They share only a trigger (the same redeploy wave) and a coincidental ~10s cadence. #483 is a rejected metrics push from the reverse proxy; commented separately there. Two independent breakages, one redeploy.
The real fix is in the reporter image
As the ticket already suspected: exiting 0 on a fatal I/O error is wrong. The image should
exit non-zero on a fatal jtop error, so the task lands in Failed and monitoring can see it; and
better still, not exit at all — retry the jtop connection with backoff, since the daemon reliably returns by itself.
Blocked: I could not reach the reporter image's source repo (404 under both owners I tried). Someone needs to point me at it — until that lands, this recurs on every jtop hiccup.
restart_policy made explicit. condition: any is load-bearing precisely because the container exits 0 — the inverse of the usual on-failure trap. With on-failure an exit-0 container is never restarted and a board stays silently dead. Documented so nobody "tidies" it.
restart delay 5s -> 30s: at the 5s default each replica restarted every ~10s, driving a container-start storm and the event flood into #541. Cuts that ~4x, still self-heals.
stdout was block-buffered — flushing ~174 lines in one burst every ~9 minutes, so every log timestamp was the flush time, not the event time. That actively misled this diagnosis. Now unbuffered.
json-file logs were unbounded (~25MB/day/replica). Capped.
Verified with docker stack config against the real engine: renders clean, rendered diff is pure addition (zero lines removed), all 7 pins and mounts preserved.
Leaving open for merge + verify.
— macbook-claude-session
## Diagnosis: host-side jtop dependency, not config and not credentials
The reporter reads each board's stats from the **host's jtop daemon** over a bind-mounted unix socket (`/run/jtop.sock`). When that daemon isn't serving the socket (host reboot, dead/stale jtop service, or a socket file left behind by a killed daemon), the in-container client raises the terse `I/O error` and **the entrypoint exits 0**.
Exit 0 is the entire reason this was invisible: swarm records the task as `Complete`, not `Failed`, so `service ps` shows no error and the replica count only flickers `1/1 -> 0/1 -> 1/1`. Six of seven replicas churned for ~9.5h reporting nothing while looking healthy.
## It has already recovered on its own
The fleet self-healed at **2026-07-14 02:32:40Z**, when the boards' docker/jtop daemons came back (their tasks were briefly `Rejected` with `cannot create a swarm scoped network when swarm is not active` at ~02:28Z — a host/daemon restart). All 7 replicas are now stable and writing (`113 points were successfully written : True`).
It recovered with **no spec change whatsoever** — which is exactly what proves the cause was host-side rather than the endpoint/creds changing in the redeploy. The identical task spec that churned is the one working now.
## Not the same bug as #483
They share only a trigger (the same redeploy wave) and a coincidental ~10s cadence. #483 is a rejected metrics push from the reverse proxy; commented separately there. Two independent breakages, one redeploy.
## The real fix is in the reporter image
As the ticket already suspected: **exiting 0 on a fatal I/O error is wrong.** The image should
1. exit **non-zero** on a fatal jtop error, so the task lands in `Failed` and monitoring can see it; and
2. better still, **not exit at all** — retry the jtop connection with backoff, since the daemon reliably returns by itself.
**Blocked:** I could not reach the reporter image's source repo (404 under both owners I tried). Someone needs to point me at it — until that lands, this recurs on every jtop hiccup.
## PR (stack-level, bounds the blast radius only)
infrastructure PR **#80**:
- `restart_policy` made explicit. `condition: any` is **load-bearing precisely because the container exits 0** — the inverse of the usual on-failure trap. With `on-failure` an exit-0 container is never restarted and a board stays silently dead. Documented so nobody "tidies" it.
- restart `delay` 5s -> 30s: at the 5s default each replica restarted every ~10s, driving a container-start storm and the event flood into #541. Cuts that ~4x, still self-heals.
- stdout was **block-buffered** — flushing ~174 lines in one burst every ~9 minutes, so every log timestamp was the *flush* time, not the *event* time. That actively misled this diagnosis. Now unbuffered.
- json-file logs were unbounded (~25MB/day/replica). Capped.
Verified with `docker stack config` against the real engine: renders clean, rendered diff is pure addition (zero lines removed), all 7 pins and mounts preserved.
Leaving open for merge + verify.
— macbook-claude-session
Audited against origin/master — the stack was hardened; the actual bug cannot be fixed from any repo we have. Staying open, and recording why, because this one is stuck for a structural reason rather than a scheduling one.
Landed (infra PR #80, 2c535e0, jetson-influxdb/docker-stack.yml): condition: any (documented as load-bearing, ~:74), delay: 30s (:75), PYTHONUNBUFFERED=1 (:67), and a max-size: "10m" log cap (:82) — replicated across all 7 replicas. That converts a ~10s churn into a 30s one and stops the logs filling the disk, which is real mitigation.
Not fixed: the reporter exits 0 on a fatal I/O error, with no retry/backoff and an unnamed endpoint in the error. That logic lives inside the container image, whose source is not in any repo we have. The stack still pins git.spikersoft.com/jspiker/jetson-tx2-influxdb-grafana:latest (:62, :87, :112, …) — and per this ticket's own comments, the jspiker namespace does not exist. So the image is simultaneously unpullable and unrebuildable: we cannot patch it, and a node that loses its local copy cannot start it.
That makes the practical options: locate or reconstruct the reporter source and publish it under a real namespace, or replace the reporter with something maintained (a small Telegraf/jtop shim would cover it). Continuing to tune restart policy can't reach the defect.
Also outstanding and live-state only: host-side jtop daemon health on the dreamstream nodes.
Worth flagging the :latest-on-a-nonexistent-namespace situation to whoever owns the fleet regardless of this ticket — it's a latent outage for all 7 replicas, not just a cosmetic churn issue.
Audited against `origin/master` — **the stack was hardened; the actual bug cannot be fixed from any repo we have.** Staying open, and recording why, because this one is stuck for a structural reason rather than a scheduling one.
**Landed** (infra PR #80, `2c535e0`, `jetson-influxdb/docker-stack.yml`): `condition: any` (documented as load-bearing, ~`:74`), `delay: 30s` (`:75`), `PYTHONUNBUFFERED=1` (`:67`), and a `max-size: "10m"` log cap (`:82`) — replicated across all 7 replicas. That converts a ~10s churn into a 30s one and stops the logs filling the disk, which is real mitigation.
**Not fixed:** the reporter exits 0 on a fatal I/O error, with no retry/backoff and an unnamed endpoint in the error. That logic lives inside the container image, **whose source is not in any repo we have**. The stack still pins `git.spikersoft.com/jspiker/jetson-tx2-influxdb-grafana:latest` (`:62`, `:87`, `:112`, …) — and per this ticket's own comments, the `jspiker` namespace does not exist. So the image is simultaneously **unpullable and unrebuildable**: we cannot patch it, and a node that loses its local copy cannot start it.
That makes the practical options: locate or reconstruct the reporter source and publish it under a real namespace, or replace the reporter with something maintained (a small Telegraf/jtop shim would cover it). Continuing to tune restart policy can't reach the defect.
Also outstanding and live-state only: host-side jtop daemon health on the dreamstream nodes.
Worth flagging the `:latest`-on-a-nonexistent-namespace situation to whoever owns the fleet regardless of this ticket — it's a latent outage for all 7 replicas, not just a cosmetic churn issue.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
QA Team — found during QA log watch 2026-07-14 ~02:30Z.
Symptom: every
jetson-influxdb_jetson-influx-Nreplica (pinnednode.hostname == dreamstreamN) is in a fast churn loop: container starts, printsand exits 0 within seconds; RestartPolicy (any, 5s delay, unlimited attempts) restarts it — a full cycle every ~10s on dreamstream1/2/3/5/6/7. In
docker service lsthe replicas flicker between 0/1 and 1/1, so a single glance misses it.Because the exit code is 0, tasks show 'Complete', not 'Failed' — swarm looks healthy-ish while no jetson metrics are reported at all, plus constant container churn on six nodes. InfluxDB itself logged no errors in the last 30m, so the writes aren't even reaching it.
Timeline: service spec last updated 2026-07-13 17:01:42Z (the fleet-wide redeploy wave) — consistent with the churn starting then. 'I/O error' is terse; likely candidates: InfluxDB endpoint/creds changed in that redeploy, or a sensor/device path not mounted. Needs a look at the image entrypoint.
Extra:
jetson-influx-4can't even churn — its replacement is Pending 'no suitable node' (~2h) because pinned node dreamstream4 is Down (#552), and the old dreamstream4 task is another staleDesiredState=Shutdown / CurrentState=Running (3 days ago)zombie like keycloak-postgres.Also fix while here: exiting 0 on a fatal I/O error is wrong — exit non-zero so swarm/monitoring can distinguish failure from completion.
Refs: #552 (dreamstream4 down — the -4 replica), #541 (docker-monitor gets fed this steady churn-event stream).
QA Team — root cause CONFIRMED 2026-07-14 ~02:45Z: the 'I/O error' was the reporters failing to reach InfluxDB itself. The main
influxDB_influxdbservice is pinned to dreamstream4 and was hard-down for the whole ds4 outage (~01:15–02:40Z) while showing a stale 1/1 indocker service ls(unconfirmable zombie task, same class as the others in #552). The moment ds4 rejoined and InfluxDB restarted (~02:40Z), all 7 jetson replicas went stable 1/1 — churn stopped fleet-wide without any change to this service.Remaining actionable items on this ticket (all still valid):
Registry/source findings from repo-side investigation (no host access from this session):
1. The image is unpullable — its namespace no longer exists. The stack pins
git.spikersoft.com/jspiker/jetson-tx2-influxdb-grafana:latest, but the Gitea API returnsuser redirect does not exist [name: jspiker]— no such user, no container package under it, and nojetson/influxsource repo anywhere on this Gitea. The whole fleet is running off node-local image cache remnants; any node that prunes or loses its cache can never start this service again (that is presumably whyjetson-influx-4's replacement can't materialize on a rescheduled node, sameNo such imageclass as #552's keycloak fallout). This is the exact "service can only start where state already happens to be" failure #413/#521 exist to kill. The source needs to be found (or reconstructed) and rebuilt into a realspikerj/*registry path — until then this stack cannot heal.2. Probable cause of the churn itself — likely the same incident as #483. The replicas restart every ~10s; #483 reports InfluxDB rejecting a client every ~10s with
authorization not found(stale/missing token). A redeploy wave at 17:01Z re-read the.env-10Nfiles off the Gluster checkout — if the influx URL/token in them is stale (or the env files went missing/unreadable during tonight's Gluster degradation, #552), the client's first write fails and it exits 0. The other candidate is a dead/run/jtop.sockon the hosts (jtop daemon stopped). Quick discrimination with host access:docker service logs jetson-influxdb_jetson-influx-1 --tail 20— anything after "I/O error"?ls -la /run/jtop.sock && systemctl status jtop(socket alive?).env-105influx endpoint/token against the current influxdb stack's credentials (#483).3. Two hygiene bugs to fix when the source is found: exit code 0 on a fatal error (swarm shows Complete, not Failed — this hid the outage), and plaintext influx creds in
.env-10Nfiles sitting on the shared mount (OpenBao #545 candidate).— macbook-claude-session
Diagnosis: host-side jtop dependency, not config and not credentials
The reporter reads each board's stats from the host's jtop daemon over a bind-mounted unix socket (
/run/jtop.sock). When that daemon isn't serving the socket (host reboot, dead/stale jtop service, or a socket file left behind by a killed daemon), the in-container client raises the terseI/O errorand the entrypoint exits 0.Exit 0 is the entire reason this was invisible: swarm records the task as
Complete, notFailed, soservice psshows no error and the replica count only flickers1/1 -> 0/1 -> 1/1. Six of seven replicas churned for ~9.5h reporting nothing while looking healthy.It has already recovered on its own
The fleet self-healed at 2026-07-14 02:32:40Z, when the boards' docker/jtop daemons came back (their tasks were briefly
Rejectedwithcannot create a swarm scoped network when swarm is not activeat ~02:28Z — a host/daemon restart). All 7 replicas are now stable and writing (113 points were successfully written : True).It recovered with no spec change whatsoever — which is exactly what proves the cause was host-side rather than the endpoint/creds changing in the redeploy. The identical task spec that churned is the one working now.
Not the same bug as #483
They share only a trigger (the same redeploy wave) and a coincidental ~10s cadence. #483 is a rejected metrics push from the reverse proxy; commented separately there. Two independent breakages, one redeploy.
The real fix is in the reporter image
As the ticket already suspected: exiting 0 on a fatal I/O error is wrong. The image should
Failedand monitoring can see it; andBlocked: I could not reach the reporter image's source repo (404 under both owners I tried). Someone needs to point me at it — until that lands, this recurs on every jtop hiccup.
PR (stack-level, bounds the blast radius only)
infrastructure PR #80:
restart_policymade explicit.condition: anyis load-bearing precisely because the container exits 0 — the inverse of the usual on-failure trap. Withon-failurean exit-0 container is never restarted and a board stays silently dead. Documented so nobody "tidies" it.delay5s -> 30s: at the 5s default each replica restarted every ~10s, driving a container-start storm and the event flood into #541. Cuts that ~4x, still self-heals.Verified with
docker stack configagainst the real engine: renders clean, rendered diff is pure addition (zero lines removed), all 7 pins and mounts preserved.Leaving open for merge + verify.
— macbook-claude-session
Board-sweep status (2026-07-22): churn mitigation merged (infra #80 — bounded restarts, usable logs). REMAINING: dead host-side jtop daemons on the dreamstream nodes (host ops).
Audited against
origin/master— the stack was hardened; the actual bug cannot be fixed from any repo we have. Staying open, and recording why, because this one is stuck for a structural reason rather than a scheduling one.Landed (infra PR #80,
2c535e0,jetson-influxdb/docker-stack.yml):condition: any(documented as load-bearing, ~:74),delay: 30s(:75),PYTHONUNBUFFERED=1(:67), and amax-size: "10m"log cap (:82) — replicated across all 7 replicas. That converts a ~10s churn into a 30s one and stops the logs filling the disk, which is real mitigation.Not fixed: the reporter exits 0 on a fatal I/O error, with no retry/backoff and an unnamed endpoint in the error. That logic lives inside the container image, whose source is not in any repo we have. The stack still pins
git.spikersoft.com/jspiker/jetson-tx2-influxdb-grafana:latest(:62,:87,:112, …) — and per this ticket's own comments, thejspikernamespace does not exist. So the image is simultaneously unpullable and unrebuildable: we cannot patch it, and a node that loses its local copy cannot start it.That makes the practical options: locate or reconstruct the reporter source and publish it under a real namespace, or replace the reporter with something maintained (a small Telegraf/jtop shim would cover it). Continuing to tune restart policy can't reach the defect.
Also outstanding and live-state only: host-side jtop daemon health on the dreamstream nodes.
Worth flagging the
:latest-on-a-nonexistent-namespace situation to whoever owns the fleet regardless of this ticket — it's a latent outage for all 7 replicas, not just a cosmetic churn issue.