From dad495cdfa61fce40cd91b5c66653ba9add37aca Mon Sep 17 00:00:00 2001 From: iris Date: Wed, 21 Oct 2026 17:58:09 +0200 Subject: [PATCH] hive-c0re: fix stale banner and gauge-name wording after review The nix-store gauge comment claimed a semconv name it deliberately does not use; it now says why the name is hyperhive-scoped. Two doc pages still described the removed banner for the limits-read and knowledge-pull failures. The warning alert's comment now says pending_logins pages on purpose. --- docs/integrations/knowledge.md | 2 +- docs/scheduler/coordinator.md | 4 ++-- hive-c0re/src/stats/otel_metrics.rs | 6 +++++- nix/host-modules/swarm-grafana.nix | 5 ++++- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/docs/integrations/knowledge.md b/docs/integrations/knowledge.md index 866d6189..37b898f1 100644 --- a/docs/integrations/knowledge.md +++ b/docs/integrations/knowledge.md @@ -66,7 +66,7 @@ pull`, so agents see the new content on their next turn. queues a pull on a fixed cadence as a fallback (webhook missed, c0re restarted between pushes). The pull is best-effort — a failure shows as a failed `KnowledgePull` node on the job queue, counts toward - the knowledge-pull banner, and doesn't affect the rest of the daemon. + the `knowledge_pull` hive warning, and doesn't affect the rest of the daemon. Both paths, and the one pull at boot, queue the same `KnowledgePull` job node. It holds the working tree for its duration, so two pulls never run diff --git a/docs/scheduler/coordinator.md b/docs/scheduler/coordinator.md index 6b4cbcdb..774efd48 100644 --- a/docs/scheduler/coordinator.md +++ b/docs/scheduler/coordinator.md @@ -529,8 +529,8 @@ given. Every 30 seconds hive-c0re (`workers::swarm_limits`) reads the key of each agent it has and stores the result in `meta/swarm-resource-limits.json`. Each value passes the validators first. One bad -value or a failed read leaves the file unchanged, and repeated failures raise a -dashboard banner. +value or a failed read leaves the file unchanged, and repeated failures raise a hive +warning (the `hyperhive.hive.warning` metric and the `hh-hive-warning` alert). A hive's queue grant reads every key of the bucket (`$JS.API.DIRECT.GET.KV_agent-limits.>`) and writes none. Scoping it to the diff --git a/hive-c0re/src/stats/otel_metrics.rs b/hive-c0re/src/stats/otel_metrics.rs index 6590a35c..a9d3f2a7 100644 --- a/hive-c0re/src/stats/otel_metrics.rs +++ b/hive-c0re/src/stats/otel_metrics.rs @@ -328,7 +328,11 @@ fn register_hive_instruments(meter: &opentelemetry::metrics::Meter) { }) .build(); - // Fraction of the nix store's filesystem in use, by the semconv name. + // Fraction of the nix store's filesystem in use. A `hyperhive.` name on + // purpose, not semconv `system.filesystem.utilization`: the hive + // collector's host-metrics scraper covers the `system.filesystem.*` + // family for every mount, and a second series under one of its names + // with different labels could clash. // Probed in the callback (a `statvfs` is cheap and this runs once an // export interval); a failed probe reports no sample. meter diff --git a/nix/host-modules/swarm-grafana.nix b/nix/host-modules/swarm-grafana.nix index a5bb2793..b9f5dc39 100644 --- a/nix/host-modules/swarm-grafana.nix +++ b/nix/host-modules/swarm-grafana.nix @@ -1691,7 +1691,10 @@ in # pressure is left out: it has its own thresholds below, on # the filesystem metric rather than the registry entry. # Sweeps raise their warning only after several misses, so - # `for` is short. + # `for` is short. `pending_logins` pages too, on purpose: + # an agent that waits more than 2m for its claude login + # needs a human to act, which is what the banner it + # replaces was for. (metricThresholdRule { uid = "hh-hive-warning"; title = "hive warning raised";