Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -197,3 +197,43 @@ Rules for agents touching this repo:

See also: `AgentWorkforce/cloud` → `AGENTS.md` "RelayAuth ↔ Cloud Separation"
for the mirror rule on the cloud side.

<!-- prpm:snippet:start @agent-relay/merge-train-snippet@1.0.0 -->
## Merging: `trunk` + the `mergeable` label

CI does **not** run on feature branches. It runs only on the `trunk` → `main`
pull request and on pushes to `main`. (Repos whose default branch is not
`main`, e.g. `master`, use that branch wherever this says `main`.) A merge
agent batches ready PRs into `trunk`, gets that one PR green, and merges it.

**When you open a PR**
1. Branch from `trunk` and open the PR with **base `trunk`**, not `main`.
A PR into `main` from any other branch fails the `Trunk guard` check.
2. No CI runs on your PR, so verify locally before calling it ready: run the
typecheck, tests and lint this repo uses, and list the exact commands and
results in the PR body.

**When the PR is ready**
3. Add the label **`mergeable`** once all of these are true:
- The change is complete and the local checks above pass.
- Review feedback (human and bot) is addressed or answered.
- It is not a draft and does not depend on an unmerged PR.
4. Remove `mergeable` if the PR stops being ready (new work, a failing check, a
blocking question). The label is read live from GitHub on every sweep.

**What you must not do**
- Do not merge your own PR, and never merge into or push to `trunk` or `main`
directly.
- Do not re-enable CI for feature branches or edit the `trunk` gates in
`.github/workflows/`.

**The merge agent** sweeps open `mergeable` PRs with base `trunk` about every
10 minutes. It reads each PR's linked sessions (the `Agent Relay sessions`
block in the PR body, then the session summary) for context, merges them into
`trunk`, opens or updates the `trunk` → `main` PR, fixes CI there, merges when
green, and posts a summary. If your PR conflicts with `trunk`, it may ask you
to rebase on `trunk`; do so and keep the label.

> Interim: the sweep worker is not deployed yet. Until it is, a human or a
> designated agent performs the merge-agent steps manually. Labelling is unchanged.
<!-- prpm:snippet:end @agent-relay/merge-train-snippet@1.0.0 -->
19 changes: 18 additions & 1 deletion prpm.lock
Original file line number Diff line number Diff line change
Expand Up @@ -149,9 +149,26 @@
"sourceFormat": "claude",
"sourceSubtype": "skill",
"installedPath": ".opencode/skills/running-headless-orchestrator/SKILL.md"
},
"@agent-relay/merge-train-snippet#agents.md:AGENTS.md": {
"version": "1.0.0",
"resolved": "https://registry.prpm.dev/api/v1/packages/%40agent-relay%2Fmerge-train-snippet/1.0.0.tar.gz",
"integrity": "sha256-a85e34747a332452ab6d8d7f814c828d404a3a77dd724f16878d26b91fb7d5bb",
"format": "agents.md",
"subtype": "snippet",
"sourceFormat": "generic",
"sourceSubtype": "snippet",
"installedPath": "AGENTS.md",
"snippetMetadata": {
"targetPath": "AGENTS.md",
"config": {
"target": "AGENTS.md",
"position": "append"
}
}
}
},
"generated": "2026-04-21T08:06:00.023Z",
"generated": "2026-10-08T22:48:21.322Z",
"collections": {
"agent-relay-starter": {
"name_slug": "agent-relay-starter",
Expand Down
Loading