@@ -11,11 +11,11 @@ integration PRs, follows `main` through production, and pauses after failures.
1111
1212## Install
1313
14- Install the reviewed ` v0.2.24 ` source commit directly from GitHub:
14+ Install the reviewed ` v0.2.25 ` source commit directly from GitHub:
1515
1616``` bash
1717python3 -m pip install \
18- ' deploybot-merge-queue[mcp] @ git+https://github.com/Forward-Future/DeployBot.git@73004ea7c9dcb81e7f1281c0687aea0897d1571d '
18+ ' deploybot-merge-queue[mcp] @ git+https://github.com/Forward-Future/DeployBot.git@12c6c03aa76a553fa4068279baa29e90a30bbeb1 '
1919deploybot init
2020```
2121
@@ -90,12 +90,15 @@ completions, and completed external check suites. Keep its `workflows` list
9090aligned with ` pipeline.ci_workflows ` . A five-minute scheduled reconciliation
9191rereads all durable state in case GitHub concurrency coalesces the last pending
9292event in a burst. The privileged worker never checks out or executes
93- pull-request code. The Action follows releases by default so the same serialized
94- worker can dispatch deployment when GitHub suppresses the ` workflow_run ` event
95- for token-dispatched CI. Pin the Action to the full reviewed release commit:
93+ pull-request code. The Action advances releases to the configured admission
94+ gate. In the default ` merged ` mode it returns after each healthy observation,
95+ leaving completion to later release events and keeping the serialized merge
96+ worker free. It can still dispatch deployment when GitHub suppresses the
97+ ` workflow_run ` event for token-dispatched CI. Pin the Action to the full reviewed
98+ release commit:
9699
97100``` yaml
98- - uses : Forward-Future/DeployBot@73004ea7c9dcb81e7f1281c0687aea0897d1571d
101+ - uses : Forward-Future/DeployBot@12c6c03aa76a553fa4068279baa29e90a30bbeb1
99102` ` `
100103
101104The Action uses GitHub's built-in workflow token. GitHub intentionally does not
@@ -141,6 +144,13 @@ workflow name, base branch, head SHA, event, status, and conclusion to match the
141144expected successful exact-main CI run. The deployment must still pull the
142145current base branch and stop if it no longer equals `ci_sha`.
143146
147+ The deployment workflow must also acquire the repository's shared deployment
148+ lock, fetch the base branch again after acquiring it, and coalesce superseded
149+ requests onto that newest integrated SHA. It must never deploy an older SHA after
150+ a newer one, and it keeps the lock through production health verification. These
151+ release rules are unchanged by `release_admission = "merged"`; only merge
152+ admission becomes asynchronous.
153+
144154The workflow bot and each person allowed to request deployment must be
145155explicitly listed :
146156
@@ -172,11 +182,11 @@ work, and creates integration PRs when configured. New batches contain at most
172182` integration.max_batch_size` entries; later FIFO work remains in the next batch.
173183A larger indivisible source-overlap or dependency closure is the sole exception :
174184it ships alone, never mixed with unrelated work.
175- After any merge, admission stays closed until the cumulative exact-main release
176- is verified live, preventing newer merges from starving an older deployment.
177- Set `pipeline.release_admission = "ci-passed"` to reopen admission as soon as
178- exact-main CI is green—deploy and health checks keep following in the
179- background—when higher merge throughput is worth a larger failure blast radius .
185+ By default, `pipeline.release_admission = "merged"` : after one healthy merge,
186+ DeployBot immediately admits the next independent ready PR or batch. Exact-main
187+ CI, deployment, and health checks keep tracking asynchronously, and a later real
188+ failure pauses future merges. Use `ci-passed` to wait for exact-main CI before
189+ admitting more work, or `verified` to wait until the cumulative revision is live .
180190Draft status and incomplete
181191checks or reviews remain waiting states; they do not create a repair latch. A
182192conflict, failed gate, unresolved review, manual block, or stale authorized head
@@ -269,7 +279,7 @@ ending the PR-opening-thread response.
269279[pipeline]
270280ci_workflows = ["CI"]
271281deploy_workflows = ["Deploy"]
272- batch_settle_seconds = 15
282+ batch_settle_seconds = 0
273283ci_failure_grace_seconds = 90
274284promotion_workers = 4
275285hold_merges_while_releasing = true
@@ -279,7 +289,7 @@ merge_to_live_target_minutes = 10
279289auto_promote = true
280290intent_scope = "head"
281291pause_on_failure = true
282- release_admission = "verified " # or "ci-passed" for higher merge throughput
292+ release_admission = "merged " # or "ci-passed" / "verified" for stricter admission
283293
284294[[pipeline.verifications]]
285295name = "Login"
0 commit comments