build agents only from internal/meta; delete the hive's local meta flake
The hive no longer renders, locks or commits a meta flake. A rebuild's MetaSync node picks the internal/meta commit and records it with the hyperhive and config pins it holds; Prebuild, Swap and Create build from it, and a head that does not pin the agent's current config fails the build naming the agent. hive-priv's meta_rev is required. Removed: meta.rs sync/lock/render, the manual-rebuild relock, the boot sweep's hyperhive bump (MetaLock), the update-meta-inputs form and its panel, MetaWindow, the hive's hyperhive_rev setting. Kept: agent_set::refresh holds what sync_agents also did (topology.json, the gateway's agent-socket map and nginx include), called from spawn, destroy, rebuild and the migration. The boot reconcile and the stale-start upgrade compare the agent's marker with the hyperhive pin of internal/meta; the dashboard's deployed chip reads the config marker a successful build writes.
This commit is contained in:
parent
cea4827918
commit
4aa11b3a94
64 changed files with 1042 additions and 3793 deletions
|
|
@ -82,7 +82,7 @@ let
|
|||
# c0re binary itself changes.
|
||||
serveConfigJson = builtins.toJSON {
|
||||
hyperhive_flake = cfg.hyperhiveFlake;
|
||||
hyperhive_rev = cfg.hyperhiveRev;
|
||||
|
||||
# The `claude-code` every agent runs, or null for "each agent keeps
|
||||
# the one out of its own nixpkgs". `builtins.toJSON` serialises a
|
||||
# derivation as its out path (and null as null), so the package goes
|
||||
|
|
@ -337,8 +337,7 @@ in
|
|||
# - nix is invoked directly (lifecycle, meta, flake_check), but
|
||||
# NIX_REMOTE=daemon routes all store writes through the host
|
||||
# daemon — hive-c0re never writes to /nix itself.
|
||||
# - flake.lock ops land in the meta worktree under StateDirectory
|
||||
# (kept writable by systemd).
|
||||
|
||||
# - nix build worktrees live in PrivateTmp, not /tmp.
|
||||
# - /etc writes (bind-mount edits) go through hive-priv via the
|
||||
# privileged socket; /etc/hyperhive/serve.json is read-only.
|
||||
|
|
|
|||
|
|
@ -76,9 +76,8 @@
|
|||
description = ''
|
||||
Store path of the hyperhive flake source (no fragment). hive-c0re
|
||||
reads it to tell which revision is running, and the swarm builder
|
||||
builds on it. The meta flake does not use it: that pins
|
||||
`hyperhive` by forge URL and `hyperhiveRev`. Wired by
|
||||
`nixosModules.default` to this flake's own filtered source.
|
||||
builds on it. Wired by `nixosModules.default` to this flake's own
|
||||
filtered source.
|
||||
'';
|
||||
};
|
||||
hyperhiveRev = lib.mkOption {
|
||||
|
|
@ -86,15 +85,13 @@
|
|||
default = null;
|
||||
defaultText = lib.literalMD "the hyperhive flake's own `self.rev`";
|
||||
description = ''
|
||||
Git rev of the hyperhive checkout this host runs. hive-c0re pins
|
||||
the generated meta flake's `hyperhive` input to
|
||||
`git+<forge>/hyperhive/hyperhive.git?rev=<rev>`, and `nixpkgs`
|
||||
follows that input. The swarm controller offers the same rev as the
|
||||
`hyperhive` pin of `internal/meta`, which it takes when the rev is a
|
||||
descendant of the committed pin. Wired by `nixosModules.default` from
|
||||
`self.rev`, which a dirty tree does not have; with `null`,
|
||||
hive-c0re refuses to render the meta flake and the controller leaves
|
||||
the `internal/meta` pin where it is.
|
||||
Git rev of the hyperhive checkout this host runs. The swarm
|
||||
controller (`swarm-controller.nix`) offers it as the `hyperhive` pin
|
||||
of `internal/meta`, which it takes when the rev is a descendant of
|
||||
the committed pin; hive-c0re does not read it. Wired by
|
||||
`nixosModules.default` from `self.rev`, which a dirty tree does not
|
||||
have; with `null` the controller leaves the `internal/meta` pin where
|
||||
it is.
|
||||
'';
|
||||
};
|
||||
agentBaseToplevel = lib.mkOption {
|
||||
|
|
|
|||
Loading…
Reference in a new issue