Watch
0
0
Fork
You've already forked hyperhive
0
Commit graph

6,057 commits

Author SHA1 Message Date
atlas
181c42dae1 collector dashboard: query the service.name the collectors emit, lint dashboard names 2026-10-28 19:57:35 +01:00
iris
067a260b85 swarm-ui: test the service worker's install and navigation logic
review-classifier asked for a test of sw.js's new behaviour. sw.test.mjs loads
the worker in a sandbox with a fake cache and network: the install fetches past
the HTTP cache and keeps every asset, a redirected or refused asset fails it
with a logged reason, a navigation that reaches the network refreshes the cached
entry document, a redirected or failed one does not, and offline a navigation is
answered from the cache.
2026-10-28 19:56:55 +01:00
iris
24f6690fe5 swarm-ui vhost: cache by name, 404 a missing file, carry a content security policy
After a deploy a browser could keep the old entry document, which named a
bundle that no longer exists, and the missing script was answered with the
entry document, so the page was blank with only a MIME-type error to say why.

The hashed bundle is immutable and a missing file is a 404; the entry document,
the worker, the manifest, the icons and the theme's colors.css are revalidated.
The pages carry a content security policy. The service worker fetches its shell
past the HTTP cache, logs a failed install, refreshes the cached entry document
on each navigation and holds cache writes open with waitUntil. The proxy test
pins the cache rules, the 404s and the policy; docs/swarm/ui.md says what the
browser keeps.
2026-10-28 19:56:55 +01:00
atlas
e78a529ec2 squid: base allow list for every authed user, and no start limit on the list reload 2026-10-28 19:44:26 +01:00
atlas
10fdf06334 squid self-check: use a public canary, drop the swarm service names from the allow list 2026-10-28 19:44:26 +01:00
iris
698183c16a docs: drop the bao dashboard section again; a dashboard needs no page
Reverts the previous commit: the panels describe themselves, and the operator
ruled that this change needs no docs page.
2026-10-28 19:28:12 +01:00
iris
2472e3868d docs: say what the bao dashboard's log panels show
The classifier asked for the docs to move with the three new panels. bao.md gets
a short 'Watching the store' section, including that a flat zero in the
delivered-lines panel means delivery is broken, not that bao is quiet.
2026-10-28 19:28:12 +01:00
iris
ae2ecab9f2 swarm-grafana: the bao dashboard reads openbao's journal
The bao board was nine metrics panels, so a gap in log delivery looked like
a quiet bao. Three panels read the log store for openbao.service: lines
delivered over time, WARN and ERROR lines over time, and the recent WARN and
ERROR lines themselves. A module-eval case pins them by query.
2026-10-28 19:28:12 +01:00
iris
4d5a65a185 swarm-ui: a request that finds the login ended reloads the page to the login
The gateway answered every non-page request without a session with a login
redirect, which fetch and EventSource cannot follow across origins, so polls,
forms and streams failed with errors that said nothing about the session. It
now answers anything that does not ask for text/html with a 401 and a
WWW-Authenticate header, and the swarm UI reloads on that 401, from a wrapped
fetch (one place for every call) and from a probe after a stream dies. A second
reload within ten seconds is skipped so a page that keeps answering 401 cannot
loop. The proxy test and the docs follow.
2026-10-28 19:19:26 +01:00
atlas
4eb27543e5 move vm tests out of checks into a nightly vmTests workflow 2026-10-28 18:41:42 +01:00
atlas
d29f63d4cf keep the backend file order case independent of the proxy file 2026-10-28 17:24:34 +01:00
atlas
b551eb02ff send agent traffic through squid once its hive announces it 2026-10-28 17:24:34 +01:00
atlas
86e9f49fe6 resolve the self-check's deny canary in the squid VM test 2026-10-28 17:23:33 +01:00
atlas
e8868d52a8 deny the IPv6 unspecified address at squid 2026-10-28 17:23:33 +01:00
atlas
3d9561a9a6 deny private and reserved destinations for every squid user 2026-10-28 17:23:33 +01:00
atlas
501445ebc3 apply each agent's internet flag to its squid credential 2026-10-28 17:23:33 +01:00
atlas
0b99f17bc3 render squid's unrestricted-users list from each agent's flag 2026-10-28 17:23:33 +01:00
atlas
375290e409 create downloads the agent's cached closure before building 2026-10-28 15:10:00 +01:00
atlas
42e63b1ee7 give the authelia-bridge store tests a unique temp dir each 2026-10-28 14:57:30 +01:00
atlas
cbe41bea54 rebuild an agent's closure when the binary cache lost it 2026-10-28 13:51:01 +01:00
atlas
8328c38a07 document squid's proxy credentials 2026-10-28 13:50:35 +01:00
atlas
fd63b402e1 fetch the self-check's password as a systemd credential 2026-10-28 13:50:35 +01:00
atlas
b7adb90f53 require a proxy credential at squid and prove it in the self-check 2026-10-28 13:50:35 +01:00
atlas
52d532ff5a render squid's users file from this hive's proxy credentials 2026-10-28 13:50:35 +01:00
atlas
ec06a91deb mint per-agent proxy credentials and a per-hive squid self-check credential 2026-10-28 13:50:35 +01:00
atlas
d452da09ae write the remaining test fake executables from a child process 2026-10-28 12:49:30 +01:00
atlas
41f832458e write the review-classifier fake agent scripts from a child process 2026-10-28 12:17:52 +01:00
atlas
c16cf1756f download an agent's cached closure in prebuild, building locally when that fails 2026-10-28 10:23:45 +01:00
atlas
b845630023 keep the cache's key and pull token for hive-priv in a root-only directory 2026-10-28 10:23:01 +01:00
atlas
d241e64ab1 test the run_node dispatch and the reconcile, signal, drain and purge failure paths 2026-10-28 10:22:22 +01:00
atlas
b1a00a3222 request the review classifier when a pr is opened or reopened 2026-10-28 10:22:13 +01:00
flake-bot
668bd5d46c nix flake update 2026-10-28 08:51:46 +01:00
atlas
3493ba4a96 count suspended time when ageing the queue client's cached token
The cache aged the token on Instant, which does not advance while the host
is suspended, so a resumed host kept presenting an expired token. Age it on
the wall clock, and drop the token when the queue refuses it.
2026-10-28 08:49:55 +01:00
atlas
57b04d6c49 let the operator set, replace and remove an agent's backend env from the swarm ui 2026-10-28 08:49:32 +01:00
atlas
398b2af44b test the remaining job-queue executors through the host seam 2026-10-28 08:49:23 +01:00
atlas
28be594f79 ship the cache host init units' journal through the hive collector 2026-10-28 08:49:14 +01:00
atlas
ca194f5c91 state the heal_own_dir cause in the backend env comments 2026-10-28 02:22:55 +01:00
atlas
be3a3af093 say that the backend env leaf and file are agent-writable, and why that is accepted 2026-10-28 01:24:29 +01:00
atlas
75e9e205e3 fetch the agent's backend env file from the store, seeded from the existing file
the agent's own root unit reads swarm/agents/<agent>/backend-env into /run and
creates it from backendEnvironmentFile with -cas=0 when the store holds nothing.
the shared agent policy gains create (not update) on that one leaf. the harness
and the subagent daemon load the old file first and the fetched one after it.
2026-10-28 01:24:29 +01:00
atlas
5486fc0333 report per agent whether a hive can pull its latest closure from the cache
for each agent the hive looks up its record in agent-closures, fetches the closure's narinfo from the cache with the pull token and checks that a signature by the cache's public key covers it. the result is a log line and the gauge hyperhive.agent.closure_pullable, with a reason label when it is 0. nothing is downloaded and deploys still build locally. part 3 of 3: the probe needs the cache facts and the closure read grant from parts 1 and 2.
2026-10-28 01:19:56 +01:00
atlas
a55d55e494 read the cache facts on the hive and let hives read the closure bucket
hive-c0re reads its cache facts from the store every five minutes and writes /run/hyperhive/attic/{netrc,substituter,public-key}, each 0600. it accepts only an https url, so the pull token never travels in clear. hives get a read grant on the agent-closures bucket, and swarm-queue-client a reader for it. part 2 of 3: nothing uses the files or the reader until the probe lands.
2026-10-28 01:19:56 +01:00
atlas
1e5070796d copy the cache's pull facts to each hive and create them in the in-swarm cache
the in-swarm cache stores its address, name and public key beside its tokens, create-only. swarm-controller copies the four cache facts to swarm/hives/<hive>/attic/* every five minutes, with read on the sources and write on the copies. part 1 of 3: nothing reads the copies until the hive reader and probe land.
2026-10-28 01:19:56 +01:00
atlas
c79c41e004 warn when a hive host without a leaf names the otel oidc secret file 2026-10-28 00:46:19 +01:00
iris
144fae3919 docs: the review classifier is live; drop 'planned, not implemented' from its index entries and its page
Two index entries (docs/README.md, docs/swarm/README.md) and the banner on
docs/swarm/review-classifier.md still said the classifier does not exist.
2026-10-28 00:38:07 +01:00
atlas
606817a994 default swarm.attic domain and cache to the swarm's own cache on every host 2026-10-27 22:16:26 +01:00
atlas
61292e865e add a host seam to the job-queue executors and test them 2026-10-27 21:02:31 +01:00
atlas
078aed1335 refuse unlisted squid names before any destination lookup 2026-10-27 20:59:06 +01:00
atlas
5513a6e875 rename the access-log variable in the squid vm test so it stops shadowing the driver's logger 2026-10-27 20:59:06 +01:00
atlas
a2cf6fe8bb deploy squid on every hive host, with exporter, journal forwarding and self-check 2026-10-27 20:59:06 +01:00
atlas
f66b169158 give each appservice test its own scratch directory 2026-10-27 17:33:06 +01:00