Watch
0
0
Fork
You've already forked hyperhive
0
hyperhive/hive-c0re/src
Repository files (latest commit first)
Filename Latest commit message Latest commit date
atlas 56202065d5 refactor(#2815): the scheduler publishes pill edges, it doesn't own pills
mara on !2910: "transient guard as well - should be removable now?" — for
the queue path, yes.

`set_transient`'s own doc explained why the RAII guard existed: a
cancelled future must not leak an imperatively-set transient and pin the
dashboard on "rebuilding…" forever. That cannot happen to a derived set.
`running_transients()` is recomputed from the graph every loop, so a node
that stops running stops appearing — there is nothing to own and nothing
to leak.

So the scheduler no longer holds a guard per pill. It keeps the previous
derived value and publishes the transitions, which is the one thing a
derived read cannot express: the dashboard wants `TransientSet` /
`TransientCleared` edges, and the crash watcher wants the *moment* a pill
cleared, since its grace window is what stops an operator stop from
reading as a crash.

That also retires a hazard rather than restating it. The old code carried
a warning that stale guards had to be dropped before new ones were
created, because `TransientGuard::drop` clears by agent with no notion of
which label it was clearing — so a same-agent label change could clear
the pill it had just set. With no guards there is no ordering to get
wrong; clears are emitted before sets so a relabel reads as
clear-then-set rather than two overlapping pills.

`set_transient` / `clear_transient` become `pub(crate)`. The guard stays
for destroy and migration, which have no node behind them and where the
cancellation concern is real.

Checked with clippy (`--all-targets -D warnings`), `cargo test -p
hive-c0re -p hive-jobq` (322 + 41 passed) and `nix fmt`.
2026-08-01 17:30:05 +02:00
..
agent_config feat: derive BUN_JSC_forceRAMSize from effective per-agent MemoryMax= 2026-07-26 21:56:25 +02:00
dashboard refactor(#2815): derive the transient pill from the running node 2026-08-01 16:06:06 +02:00
forge fix(#2860): drop hive-c0re's hardcoded localhost forge fallbacks 2026-07-31 22:53:59 +02:00
job_queue refactor(#2815): the scheduler publishes pill edges, it doesn't own pills 2026-08-01 17:30:05 +02:00
lifecycle refactor(#2754): make the container weights Option, not a 0 sentinel 2026-07-27 10:55:29 +02:00
socket_server hive-c0re: list_descendants reads cached container snapshot instead of live systemctl calls 2026-08-01 15:30:57 +02:00
stats feat(#2899): add host.arch + service.version to container metrics 2026-08-01 14:21:10 +02:00
stores hive-c0re: annotate remaining dashboard routes with utoipa 2026-07-31 23:37:05 +02:00
workers refactor(#2815): derive the transient pill from the running node 2026-08-01 16:06:06 +02:00
actions.rs refactor(#2815): derive the transient pill from the running node 2026-08-01 16:06:06 +02:00
container_view.rs resource_limits: read the override map once per SSE scan 2026-07-26 14:56:36 +02:00
coordinator.rs refactor(#2815): the scheduler publishes pill edges, it doesn't own pills 2026-08-01 17:30:05 +02:00
dashboard_events.rs refactor(#2815): derive the transient pill from the running node 2026-08-01 16:06:06 +02:00
gateway_nginx.rs sweep: wire gateway-nginx reload + config-repo branch-protection into warning banners 2026-07-16 00:05:29 +02:00
loose_ends.rs feat(#2635): wire harness-local questions mirror (inc2 pt2) 2026-07-26 02:07:33 +02:00
main.rs feat(#2899): add host.arch + service.version to container metrics 2026-08-01 14:21:10 +02:00
matrix.rs refactor(#2302): type socket wire fields as ident, validated by serde on deserialize 2026-07-20 21:46:18 +02:00
meta.rs fix(#2898): carry hive/swarm display names as build-time options 2026-08-01 12:35:50 +02:00
migrate.rs refactor(#2815): derive the transient pill from the running node 2026-08-01 16:06:06 +02:00
paths.rs hivectl: add agent <name> watch to follow live events from the CLI 2026-07-27 21:04:00 +02:00
priv_client.rs feat(#2862): push a snapshot to a peer hive's store over the mesh 2026-07-31 22:15:37 +02:00
questions.rs delete c0re-side reminder plumbing (#2635 inc 1 commit 6) 2026-07-23 00:12:30 +02:00
server.rs refactor(#2862): one snapshot store per swarm, not one per peer 2026-07-31 22:15:37 +02:00
snapshot_push.rs refactor(#2862): one snapshot store per swarm, not one per peer 2026-07-31 22:15:37 +02:00
webhook_secret.rs chore(#2510): bump indicatif/tower-http/hmac/sha2 to latest majors 2026-07-16 10:42:30 +02:00