agent-merge-broker 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +73 -14
- package/dist/broker.d.ts +47 -3
- package/dist/broker.d.ts.map +1 -1
- package/dist/broker.js +848 -40
- package/dist/broker.js.map +1 -1
- package/dist/cli.js +166 -3
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +49 -4
- package/dist/config.js.map +1 -1
- package/dist/git.d.ts +6 -0
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +15 -0
- package/dist/git.js.map +1 -1
- package/dist/publisher.d.ts +21 -3
- package/dist/publisher.d.ts.map +1 -1
- package/dist/publisher.js +65 -4
- package/dist/publisher.js.map +1 -1
- package/dist/serve-log.js +1 -1
- package/dist/serve-log.js.map +1 -1
- package/dist/types.d.ts +54 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/ARCHITECTURE.md +51 -6
- package/docs/PROTOCOL.md +54 -4
- package/docs/RELEASING.md +1 -1
- package/docs/SECURITY.md +17 -0
- package/package.json +1 -1
- package/schemas/candidate.schema.json +90 -0
- package/schemas/config.schema.json +57 -0
- package/templates/AGENTS.snippet.md +1 -1
package/README.md
CHANGED
|
@@ -35,6 +35,7 @@ One integration authority; implementation stays distributed:
|
|
|
35
35
|
- Every batch is tested through real cherry-picks in a disposable worktree.
|
|
36
36
|
- Focused checks run after each task; the complete gate runs either in the broker or as required CI.
|
|
37
37
|
- Successful work becomes one local branch, remote branch, or GitHub pull request.
|
|
38
|
+
- Optional exact-candidate policy separates nomination, verification, approval, and mechanical merge.
|
|
38
39
|
- Published branches can carry a committed provenance manifest for fast remote policy checks.
|
|
39
40
|
- Tasks are dependency-complete only after their batch is actually merged.
|
|
40
41
|
- An append-only audit stream records lifecycle decisions and validation results.
|
|
@@ -45,9 +46,9 @@ It is deliberately **not** an agent framework and **not** a replacement for prot
|
|
|
45
46
|
|
|
46
47
|
`0.3.0` was the first public release: the local broker core, the GitHub CLI publishing adapter with auto-merge, and the remote provenance verifier.
|
|
47
48
|
|
|
48
|
-
`0.
|
|
49
|
-
|
|
50
|
-
The
|
|
49
|
+
`0.8.0` is current. Repositories can require SHA/base/policy-bound evidence and an explicit approval
|
|
50
|
+
before auto-merge is enabled. Candidate revision stays on the same pull request and invalidates all
|
|
51
|
+
earlier evidence. The gate is opt-in so existing repositories keep their current behavior.
|
|
51
52
|
|
|
52
53
|
The on-disk state, receipt, and provenance formats are versioned, but compatibility is not guaranteed until `1.0.0`. Expect format migrations before then.
|
|
53
54
|
|
|
@@ -127,14 +128,14 @@ This is the answer integration would give, not an approximation of it, because i
|
|
|
127
128
|
`validation` configuration. It includes uncommitted and untracked files, writes no state, needs no
|
|
128
129
|
lease, and exits non-zero when a validator fails — so a worker script can gate on it.
|
|
129
130
|
|
|
130
|
-
The worker commits its change and
|
|
131
|
+
The worker commits its change and nominates a candidate receipt. It does not merge or push:
|
|
131
132
|
|
|
132
133
|
```bash
|
|
133
134
|
git commit -m 'Add customer search filters'
|
|
134
|
-
merge-broker task
|
|
135
|
+
merge-broker task candidate CRM-142 --since-base
|
|
135
136
|
```
|
|
136
137
|
|
|
137
|
-
|
|
138
|
+
Nominating again before the batch is assembled replaces the receipt, which is how a follow-up commit
|
|
138
139
|
from review reaches integration without rebuilding the task.
|
|
139
140
|
|
|
140
141
|
`--since-base` submits the linear commits made after the base the broker handed out, skipping any
|
|
@@ -210,7 +211,7 @@ installing dependencies:
|
|
|
210
211
|
with:
|
|
211
212
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
212
213
|
fetch-depth: 0
|
|
213
|
-
- uses: WeSpitfire/agent-merge-broker/verify@v0.
|
|
214
|
+
- uses: WeSpitfire/agent-merge-broker/verify@v0.8.0
|
|
214
215
|
```
|
|
215
216
|
|
|
216
217
|
The check verifies the Ed25519 signature, branch and batch identity, real base history, one-file
|
|
@@ -224,9 +225,53 @@ change under review. Repositories initialized before `0.6.0` must run `merge-bro
|
|
|
224
225
|
setup-signing`, commit the resulting public-key policy, and keep the private key outside the working
|
|
225
226
|
tree. Until then verification reports structural-only rather than authenticated provenance.
|
|
226
227
|
|
|
227
|
-
##
|
|
228
|
+
## Exact-candidate approval and automatic merging
|
|
228
229
|
|
|
229
|
-
|
|
230
|
+
`publish.autoMerge` is the mechanical last step, not merge authorization. When `approval.required`
|
|
231
|
+
is enabled, publication opens the pull request and stops. The broker binds a candidate to its exact
|
|
232
|
+
integrated SHA, base SHA, and `policyRevision`; it will not enable auto-merge until every configured
|
|
233
|
+
GitHub check and manual verification has passed on that tuple and an authorized actor explicitly
|
|
234
|
+
approves it.
|
|
235
|
+
|
|
236
|
+
```text
|
|
237
|
+
working → candidate → verifying → ready_for_approval → approved → merging → merged
|
|
238
|
+
↘ verification_failed
|
|
239
|
+
↘ changes_requested → revised candidate
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Sync GitHub checks, attach manual evidence, and approve with values copied from `batch show`:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
merge-broker batch sync <batch-id>
|
|
246
|
+
merge-broker batch verify <batch-id> --name browser --status passed \
|
|
247
|
+
--candidate <sha> --base <sha> --policy-revision release-v1 --actor browser-agent
|
|
248
|
+
merge-broker batch verify <batch-id> --name responsive --status passed \
|
|
249
|
+
--candidate <sha> --base <sha> --policy-revision release-v1 --actor responsive-agent
|
|
250
|
+
merge-broker batch approve <batch-id> \
|
|
251
|
+
--candidate <sha> --base <sha> --policy-revision release-v1 --actor release-manager
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Every binding is explicit on purpose. A stale command fails instead of approving whatever happens
|
|
255
|
+
to be current. Approval also rechecks the open PR head, target base, task state, reviews, conflicts,
|
|
256
|
+
and configured GitHub checks. The final `gh pr merge` uses GitHub's head-SHA guard.
|
|
257
|
+
|
|
258
|
+
If verification finds a problem, keep the task and PR:
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
merge-broker batch request-changes <batch-id> \
|
|
262
|
+
--candidate <sha> --base <sha> --actor reviewer --reason 'Responsive layout fails at 390px'
|
|
263
|
+
merge-broker task reopen <task-id> --holder agent --reason 'Fix responsive layout'
|
|
264
|
+
# edit and commit under the new lease
|
|
265
|
+
merge-broker task revise <task-id> --since-base
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
The broker force-updates only its own integration branch with `--force-with-lease`. The PR remains
|
|
269
|
+
the same, the old candidate becomes `superseded`, and the new SHA starts with no evidence or
|
|
270
|
+
approval. Editing leases end when a candidate is assembled; they are not kept alive during long CI
|
|
271
|
+
runs. Approval instead requires every task to remain in the published, non-editing state.
|
|
272
|
+
|
|
273
|
+
Without `approval.required`, auto-merge retains its pre-0.8 behavior for compatibility. The broker
|
|
274
|
+
never pushes to the base branch itself, so branch protection remains an independent final defense.
|
|
230
275
|
|
|
231
276
|
Two configuration combinations cannot work and are rejected at load time rather than stalling silently:
|
|
232
277
|
|
|
@@ -235,7 +280,9 @@ Two configuration combinations cannot work and are rejected at load time rather
|
|
|
235
280
|
|
|
236
281
|
Auto-merge requires the setting to be enabled on the GitHub repository. Configurations written before this feature existed default to `autoMerge: false`, so upgrading never starts landing work on its own.
|
|
237
282
|
|
|
238
|
-
Running `merge-broker serve --publish`
|
|
283
|
+
Running `merge-broker serve --publish` reconciles checks, integrates the next batch, and publishes it.
|
|
284
|
+
With exact approval enabled it deliberately stops at `ready_for_approval`; only `batch approve`
|
|
285
|
+
grants merge permission.
|
|
239
286
|
|
|
240
287
|
## Failure recovery
|
|
241
288
|
|
|
@@ -243,15 +290,20 @@ Integration failures are attributed as narrowly as the evidence allows:
|
|
|
243
290
|
|
|
244
291
|
- A cherry-pick conflict or focused validation failure fails only the responsible task. Its batch-mates return to the queue and are re-planned, so one bad commit cannot stall unrelated agents.
|
|
245
292
|
- An authoritative validation failure indicts the whole batch, because no single task can be blamed. Those tasks stay `failed` until `task retry`.
|
|
246
|
-
- A pull request closed without merging moves the batch to `closed` and
|
|
293
|
+
- A pull request closed without merging moves the batch to `closed` and pauses its tasks as `failed`. A closed PR is an explicit rejection signal, so the broker never republishes the same receipts automatically.
|
|
247
294
|
|
|
248
|
-
`integration.maxAttempts` bounds automatic re-queueing
|
|
295
|
+
`integration.maxAttempts` bounds automatic re-queueing of unaffected batch-mates after an attributable integration failure. Closed pull requests do not consume that retry loop. `task retry` is the explicit escape hatch when an operator has determined that retrying the unchanged receipt is safe.
|
|
249
296
|
|
|
250
297
|
A `failed` task is still the worker's to fix in place: `task extend` can widen its scope, since
|
|
251
298
|
fixing what validation caught often means touching a file the original claim did not cover, and
|
|
252
299
|
`task submit` replaces its commits. Rebuilding the task is not required, and `task cancel` — which is
|
|
253
300
|
final and ends the lease — is not the way back.
|
|
254
301
|
|
|
302
|
+
After a pull request closes, reclaim the failed task and submit its corrected commits. The eager
|
|
303
|
+
service will remain idle until that explicit revision arrives. If the pull request was closed only
|
|
304
|
+
because of a transient forge problem and the immutable receipt is still correct, use `task retry`
|
|
305
|
+
deliberately instead.
|
|
306
|
+
|
|
255
307
|
`integrate --dry-run` is a rehearsal in both directions: it retains no branch when it succeeds, and
|
|
256
308
|
returns every task to the queue when it fails, so verifying costs nothing.
|
|
257
309
|
|
|
@@ -351,6 +403,13 @@ The generated `.merge-broker/config.json` is intentionally explicit and reviewab
|
|
|
351
403
|
{ "name": "build", "command": "npm run build", "timeoutSeconds": 1800 }
|
|
352
404
|
]
|
|
353
405
|
},
|
|
406
|
+
"approval": {
|
|
407
|
+
"required": true,
|
|
408
|
+
"policyRevision": "release-v1",
|
|
409
|
+
"requiredVerifications": ["browser", "responsive"],
|
|
410
|
+
"requiredChecks": ["Verify release"],
|
|
411
|
+
"authorizedActors": ["release-manager"]
|
|
412
|
+
},
|
|
354
413
|
"publish": {
|
|
355
414
|
"mode": "pull-request",
|
|
356
415
|
"draft": false,
|
|
@@ -428,11 +487,11 @@ merge-broker install-hooks [--force] [--uninstall]
|
|
|
428
487
|
merge-broker install-service [--uninstall] [--interval <seconds>] [--no-eager]
|
|
429
488
|
merge-broker verify-provenance --branch <ref> --head <sha> --base <sha>
|
|
430
489
|
merge-broker validate [--task <id>] [--scope focused|authoritative|all] [--base <ref>] [--cwd <path>]
|
|
431
|
-
merge-broker task register|claim|extend|heartbeat|submit|retry|release|cancel|show
|
|
490
|
+
merge-broker task register|claim|extend|heartbeat|candidate|submit|reopen|revise|retry|release|cancel|abandon|show
|
|
432
491
|
merge-broker status
|
|
433
492
|
merge-broker plan
|
|
434
493
|
merge-broker integrate [--dry-run] [--publish] [--force]
|
|
435
|
-
merge-broker batch list|show|publish|refresh|sync|complete
|
|
494
|
+
merge-broker batch list|show|publish|verify|approve|request-changes|refresh|sync|complete
|
|
436
495
|
merge-broker audit
|
|
437
496
|
merge-broker metrics
|
|
438
497
|
merge-broker events
|
package/dist/broker.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { GitRepository } from "./git.js";
|
|
|
2
2
|
import { StateStore, type LockStatus } from "./store.js";
|
|
3
3
|
import { type HookInstallation } from "./hooks.js";
|
|
4
4
|
import { type ServiceInstallation } from "./service.js";
|
|
5
|
-
import type { BatchRecord, BrokerConfig, BrokerState, IntegrationOptions, IntegrationResult, LocalValidationResult, RefreshResult, RecoveryResult, PruneOptions, PruneResult, SchedulePlan, TaskRecord } from "./types.js";
|
|
5
|
+
import type { BatchRecord, BrokerConfig, BrokerState, IntegrationOptions, IntegrationResult, LocalValidationResult, RefreshResult, RevisionResult, RecoveryResult, PruneOptions, PruneResult, SchedulePlan, TaskRecord } from "./types.js";
|
|
6
6
|
export interface RegisterTaskInput {
|
|
7
7
|
id: string;
|
|
8
8
|
title?: string;
|
|
@@ -64,6 +64,7 @@ export declare class MergeBroker {
|
|
|
64
64
|
force?: boolean;
|
|
65
65
|
}): Promise<TaskRecord>;
|
|
66
66
|
retryTask(taskId: string, token?: string): Promise<TaskRecord>;
|
|
67
|
+
private resolveTaskCommits;
|
|
67
68
|
submitTask(taskId: string, commits: string[], token: string, options?: {
|
|
68
69
|
sinceBase?: boolean;
|
|
69
70
|
}): Promise<{
|
|
@@ -102,6 +103,45 @@ export declare class MergeBroker {
|
|
|
102
103
|
*/
|
|
103
104
|
recoverAbandonedIntegrations(): Promise<RecoveryResult>;
|
|
104
105
|
publishBatch(id: string): Promise<BatchRecord>;
|
|
106
|
+
recordVerification(id: string, input: {
|
|
107
|
+
name: string;
|
|
108
|
+
status: "passed" | "failed";
|
|
109
|
+
candidateSha: string;
|
|
110
|
+
baseSha: string;
|
|
111
|
+
policyRevision?: string;
|
|
112
|
+
actor: string;
|
|
113
|
+
evidenceUrl?: string;
|
|
114
|
+
notes?: string;
|
|
115
|
+
}): Promise<BatchRecord>;
|
|
116
|
+
requestChanges(id: string, input: {
|
|
117
|
+
candidateSha: string;
|
|
118
|
+
baseSha: string;
|
|
119
|
+
policyRevision?: string;
|
|
120
|
+
actor: string;
|
|
121
|
+
reason: string;
|
|
122
|
+
}): Promise<BatchRecord>;
|
|
123
|
+
approveBatch(id: string, input: {
|
|
124
|
+
candidateSha: string;
|
|
125
|
+
baseSha: string;
|
|
126
|
+
policyRevision?: string;
|
|
127
|
+
actor: string;
|
|
128
|
+
}): Promise<BatchRecord>;
|
|
129
|
+
reopenTaskForRevision(taskId: string, input: {
|
|
130
|
+
holder: string;
|
|
131
|
+
expectedPaths?: string[];
|
|
132
|
+
worktree?: string;
|
|
133
|
+
reason?: string;
|
|
134
|
+
storeToken?: boolean;
|
|
135
|
+
tokenFile?: string;
|
|
136
|
+
}): Promise<{
|
|
137
|
+
task: TaskRecord;
|
|
138
|
+
batch: BatchRecord;
|
|
139
|
+
token: string;
|
|
140
|
+
tokenPath?: string;
|
|
141
|
+
}>;
|
|
142
|
+
reviseTask(taskId: string, commits: string[], token: string, options?: {
|
|
143
|
+
sinceBase?: boolean;
|
|
144
|
+
}): Promise<RevisionResult>;
|
|
105
145
|
syncBatch(id: string): Promise<BatchRecord>;
|
|
106
146
|
syncPublishedBatches(): Promise<{
|
|
107
147
|
synced: BatchRecord[];
|
|
@@ -113,8 +153,12 @@ export declare class MergeBroker {
|
|
|
113
153
|
}>;
|
|
114
154
|
}>;
|
|
115
155
|
/**
|
|
116
|
-
* Records that a published batch will never merge and
|
|
117
|
-
*
|
|
156
|
+
* Records that a published batch will never merge and pauses its tasks for revision.
|
|
157
|
+
*
|
|
158
|
+
* A closed pull request is an explicit rejection signal. Re-queueing the unchanged receipts made
|
|
159
|
+
* an eager broker publish the same rejected work again before its worker could attach a fix. Base
|
|
160
|
+
* movement has its own `refreshBatch` path, and retrying an unchanged receipt remains available as
|
|
161
|
+
* an explicit operator action through `task retry`.
|
|
118
162
|
*/
|
|
119
163
|
closeBatch(id: string, reason: string): Promise<BatchRecord>;
|
|
120
164
|
/**
|
package/dist/broker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../src/broker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../src/broker.ts"],"names":[],"mappings":"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"}
|