hive-c0re: stop mirroring deploy tags to the forge (drop push_config)
Per the operator's ruling on #4851 (option (a)): the hive holds no write identity on the forge, so the `push_config` mirror of an applied repo's tags and `main` to `agent-configs/<name>` is removed, along with its `run_config_push` helper and its call in `sync_agent`. Docs and comments that described the mirror now say that forge `main` advances only by an operator's merge. Refs #4851
This commit is contained in:
parent
c1672218b1
commit
456a4511ab
6 changed files with 33 additions and 137 deletions
|
|
@ -13,7 +13,7 @@ pub use pr_comment::{config_repo, merged_pr_for_commit, post_pr_comment};
|
|||
pub use reconcile::{fetch_forge_main, reconcile_config_apply, reconcile_config_status};
|
||||
pub use repos::{
|
||||
clone_config_into_proposed, ensure_meta_remote, ensure_repo, fast_forward_applied_main,
|
||||
fetch_config_main_into_applied, meta_read_access, push_config, push_meta, shared_docs_access,
|
||||
fetch_config_main_into_applied, meta_read_access, push_meta, shared_docs_access,
|
||||
};
|
||||
pub use users::core_token;
|
||||
|
||||
|
|
@ -89,8 +89,7 @@ pub(crate) fn core_auth_header(token: &str) -> String {
|
|||
/// swarm-controller's: merge and approval allowlisted to the `operators` team,
|
||||
/// so the agent can't push `main` or self-merge, and an operator's merge
|
||||
/// deploys through swarm-controller. The repos remain private, so an agent
|
||||
/// still can't reach *another* agent's config. hive-c0re never force-pushes;
|
||||
/// the `push_config` mirror runs best-effort.
|
||||
/// still can't reach *another* agent's config. hive-c0re only reads from it.
|
||||
pub(crate) const CONFIG_ORG: &str = "agent-configs";
|
||||
/// Forgejo org hosting the operator-curated shared docs/skills repo
|
||||
/// that every agent gets read-only access to. Agents use it as a
|
||||
|
|
@ -180,9 +179,9 @@ pub(crate) fn api(token: &str) -> Result<Forgejo> {
|
|||
Forgejo::new(Auth::Token(token), url).context("build forgejo api client")
|
||||
}
|
||||
|
||||
/// Per-agent forge sync: mirror the agent's config repo, grant read access
|
||||
/// to `core/meta`, and wire the `meta` remote in its proposed repo. All operations are idempotent; failures
|
||||
/// are logged as warnings but don't abort the caller.
|
||||
/// Per-agent forge sync: grant read access to `core/meta`, and wire the
|
||||
/// `meta` remote in its proposed repo. All operations are idempotent;
|
||||
/// failures are logged as warnings but don't abort the caller.
|
||||
///
|
||||
/// `core_token` is `core_token()` — passed in so callers that already
|
||||
/// fetched it don't re-read the file. Pass `None` to skip the
|
||||
|
|
@ -196,17 +195,9 @@ pub(crate) fn api(token: &str) -> Result<Forgejo> {
|
|||
/// relies on the journal `warn!` lines alone (a rebuild is its own retry).
|
||||
pub async fn sync_agent(name: &str, core_token: Option<&str>) -> bool {
|
||||
// The agent's forge account, token and `agent-configs/<name>` repo are
|
||||
// swarm-controller's; this hive creates none of them and only pushes
|
||||
// swarm-controller's; this hive creates none of them and pushes nothing
|
||||
// to the repo.
|
||||
let mut ok = true;
|
||||
// Mirror the agent's applied config repo into agent-configs.
|
||||
// push_config catches any drift since the last run — e.g. the
|
||||
// startup migration just relocated `deployed/0`, or a deploy landed
|
||||
// while the forge was down.
|
||||
if let Err(e) = push_config(name).await {
|
||||
tracing::warn!(%name, error = ?e, "forge: push_config failed");
|
||||
ok = false;
|
||||
}
|
||||
// Grant read-only access to core/meta and wire the `meta` remote
|
||||
// into the proposed repo so agents can fetch their deployment context.
|
||||
if let Some(token) = core_token
|
||||
|
|
|
|||
Loading…
Reference in a new issue