hive-c0re: drop the spawn-time forge user-email, repo-creation and config-repo passes
sync_agent no longer runs ensure_user_email, ensure_repo_creation_disabled or ensure_config_repo. swarm-controller does all three before any deploy: CreateForgeUser sets the account email and max_repo_creation = 0 (and the agent_token backfill re-runs CreateForgeUser), CreateRepo creates and protects agent-configs/<agent>, AddRepoMember grants the agent write on it, and InitAgentConfigRepo seeds it. What goes with them: the email-aligned and repo-creation-disabled marker paths and the legacy email-marker relocate, sparse_edit_user_option, is_forbidden and its tests, and ensure_org_repo. A config repo deleted by hand is no longer recreated on the next spawn; the operator recreates the agent at swarm level. Comments in swarm-controller that described the removed hive passes now state only the current behaviour. Closes #4848
This commit is contained in:
parent
d2c6f1a967
commit
1de8a01936
6 changed files with 44 additions and 351 deletions
|
|
@ -71,22 +71,6 @@ pub fn forge_core_avatar_marker() -> PathBuf {
|
|||
forge_dir().join("core-avatar-set")
|
||||
}
|
||||
|
||||
/// `forge/email-aligned-<name>` — marker: `<name>`'s forge email aligned.
|
||||
#[must_use]
|
||||
pub fn forge_email_aligned_marker(name: &str) -> PathBuf {
|
||||
forge_dir().join(format!("email-aligned-{name}"))
|
||||
}
|
||||
|
||||
/// `forge/repo-creation-disabled-<name>` — marker: `<name>`'s forge user
|
||||
/// has had `max_repo_creation = 0` applied (blocks direct agent-initiated
|
||||
/// repo creation). One-shot guard so the PATCH runs once per
|
||||
/// agent (including agents provisioned before the change); delete to
|
||||
/// re-apply.
|
||||
#[must_use]
|
||||
pub fn forge_repo_creation_disabled_marker(name: &str) -> PathBuf {
|
||||
forge_dir().join(format!("repo-creation-disabled-{name}"))
|
||||
}
|
||||
|
||||
/// `agent-identity/` — one subdir per agent holding the store identity this
|
||||
/// hive collected for it. Staging only: the files exist so `systemd-nspawn`
|
||||
/// has something to `--load-credential` from, and nothing on the host ever
|
||||
|
|
@ -297,18 +281,6 @@ pub fn relocate_legacy_state() {
|
|||
for (old_rel, new) in &moves {
|
||||
move_if_legacy(&root.join(old_rel), new);
|
||||
}
|
||||
// `forge-email-aligned-<name>` markers: glob the flat root.
|
||||
if let Ok(rd) = std::fs::read_dir(&root) {
|
||||
for ent in rd.flatten() {
|
||||
if let Some(name) = ent
|
||||
.file_name()
|
||||
.to_str()
|
||||
.and_then(|s| s.strip_prefix("forge-email-aligned-"))
|
||||
{
|
||||
move_if_legacy(&ent.path(), &forge_email_aligned_marker(name));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Rename `old` → `new` when `old` exists and `new` doesn't, creating
|
||||
|
|
|
|||
Loading…
Reference in a new issue