config PRs: document the operator merge, deploy only merges into main
docs: the config-repo `main` merge gate (merge = `core` + team `operators`, approvals = `operators`), the operator merge in the forge UI and what it deploys, the hand-added `operators` membership, and that with no eval-verify a failed rebuild leaves `applied/main` at the merged commit. The swarm README lists the converged gate and the merge deploy. `merged()` also requires `pull_request.base.ref == "main"`: the hive deploys its config repo's `main`, so a merge into another branch would only cost a forge fetch and a refusal comment (argus, #4894). Refs #4850
This commit is contained in:
parent
f1c695c212
commit
a5ea015bc6
4 changed files with 90 additions and 16 deletions
|
|
@ -227,6 +227,9 @@ one per hive. It ensures them at start and every five minutes after
|
|||
- the orgs `agent-configs`, `internal` and `agents`, plus each mirror's
|
||||
owner org;
|
||||
- the empty `operators` merge-gate team in `agents` and `agent-configs`;
|
||||
- the `main` merge gate on every `agent-configs` repo: merge whitelist =
|
||||
the `operators` team and the `core` user, approval whitelist = the
|
||||
`operators` team. The controller leaves a repo with no `main` rule alone;
|
||||
- the pull-mirrors from `deploy.forgejo.mirrors` on the controller's
|
||||
host (with the `actions/checkout` one `deploy.forgejo.ci.enable` adds);
|
||||
- `internal/docs` (private) and `internal/knowledge` (public, with a
|
||||
|
|
@ -252,6 +255,11 @@ message — _the knowledge repo changed_, _deploy agent `foo` at rev
|
|||
re-derive. Approval happens once, at the swarm level: a hive receives a
|
||||
decision, not an event to adjudicate.
|
||||
|
||||
A `config-pr` delivery reporting a PR merged into `main` queues a deploy
|
||||
of its `merge_commit_sha` on the one hive whose wanted state places the
|
||||
agent; with no such hive, or several, the controller deploys nothing. See
|
||||
[approvals.md § Operator merge in the forge UI](../agent-lifecycle/approvals.md#operator-merge-in-the-forge-ui).
|
||||
|
||||
**`internal/knowledge` is on that path.** The controller's is the only
|
||||
hook on it ([`knowledge.md`](../integrations/knowledge.md) covers clearing a
|
||||
leftover). A webhook has exactly one target URL, so a second registration
|
||||
|
|
@ -262,8 +270,8 @@ would take delivery away from the first rather than add a recipient.
|
|||
**The `agent-configs` org isn't.** Each hive registers its own
|
||||
`pull_request` hook there, so that repo has two — the hive's and the
|
||||
controller's — and **both are expected; don't delete either.** Removing
|
||||
a hive's stops it acting on config PRs; removing the controller's just
|
||||
gets recreated on its next start.
|
||||
a hive's stops it acting on config PRs; removing the controller's stops
|
||||
forge-UI merges from deploying until its next start recreates it.
|
||||
|
||||
<!-- vale write-good.Passive = YES -->
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue