agent-merge-broker 0.4.1 → 0.6.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.
Files changed (51) hide show
  1. package/README.md +79 -20
  2. package/dist/broker.d.ts +59 -1
  3. package/dist/broker.d.ts.map +1 -1
  4. package/dist/broker.js +382 -18
  5. package/dist/broker.js.map +1 -1
  6. package/dist/cli.js +145 -13
  7. package/dist/cli.js.map +1 -1
  8. package/dist/config.d.ts +1 -0
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js +33 -2
  11. package/dist/config.js.map +1 -1
  12. package/dist/index.d.ts +4 -2
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +4 -2
  15. package/dist/index.js.map +1 -1
  16. package/dist/provenance.d.ts +12 -0
  17. package/dist/provenance.d.ts.map +1 -1
  18. package/dist/provenance.js +104 -0
  19. package/dist/provenance.js.map +1 -1
  20. package/dist/publisher.d.ts +11 -4
  21. package/dist/publisher.d.ts.map +1 -1
  22. package/dist/publisher.js +56 -5
  23. package/dist/publisher.js.map +1 -1
  24. package/dist/serve-log.d.ts +67 -0
  25. package/dist/serve-log.d.ts.map +1 -0
  26. package/dist/serve-log.js +62 -0
  27. package/dist/serve-log.js.map +1 -0
  28. package/dist/service.d.ts +64 -0
  29. package/dist/service.d.ts.map +1 -0
  30. package/dist/service.js +200 -0
  31. package/dist/service.js.map +1 -0
  32. package/dist/store.d.ts +16 -0
  33. package/dist/store.d.ts.map +1 -1
  34. package/dist/store.js +73 -0
  35. package/dist/store.js.map +1 -1
  36. package/dist/types.d.ts +38 -0
  37. package/dist/types.d.ts.map +1 -1
  38. package/dist/validation.d.ts.map +1 -1
  39. package/dist/validation.js +1 -1
  40. package/dist/validation.js.map +1 -1
  41. package/dist/verify.d.ts +8 -0
  42. package/dist/verify.d.ts.map +1 -1
  43. package/dist/verify.js +131 -42
  44. package/dist/verify.js.map +1 -1
  45. package/docs/ARCHITECTURE.md +26 -11
  46. package/docs/PROTOCOL.md +14 -4
  47. package/docs/RELEASING.md +17 -8
  48. package/docs/SECURITY.md +31 -6
  49. package/package.json +2 -2
  50. package/schemas/config.schema.json +18 -2
  51. package/schemas/provenance.schema.json +11 -1
package/README.md CHANGED
@@ -43,7 +43,9 @@ It is deliberately **not** an agent framework and **not** a replacement for prot
43
43
 
44
44
  ## Status
45
45
 
46
- `0.3.0` is the first public release. It contains the local broker core, the GitHub CLI publishing adapter with auto-merge, and the remote provenance verifier.
46
+ `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
+ `0.6.0` is current. Batch manifests are authenticated with a repository Ed25519 identity, post-assembly branch mutation is rejected, interrupted integration state recovers without rebuilding tasks, and the integration loop can run as a supervised per-user service.
47
49
 
48
50
  The on-disk state, receipt, and provenance formats are versioned, but compatibility is not guaranteed until `1.0.0`. Expect format migrations before then.
49
51
 
@@ -78,7 +80,10 @@ npm link
78
80
  - `.merge-broker/config.json` — repository policy and commands
79
81
  - `.merge-broker/agent-instructions.md` — a reusable worker contract
80
82
 
81
- Runtime state, receipt records, manifests, locks, and integration worktrees live under Git's common directory. Every linked worktree therefore sees the same broker state, while runtime artifacts do not pollute commits.
83
+ It also creates an Ed25519 provenance private key, mode `0600`, under Git's common runtime directory.
84
+ Only its public key is written to the committed configuration. Runtime state, receipt records,
85
+ manifests, keys, locks, and integration worktrees therefore stay outside commits while every linked
86
+ worktree sees the same broker authority.
82
87
 
83
88
  ## Quick start
84
89
 
@@ -86,6 +91,7 @@ Initialize an existing Git repository and edit its generated configuration:
86
91
 
87
92
  ```bash
88
93
  merge-broker init --base main --base-ref origin/main --remote origin
94
+ git add .merge-broker && git commit -m 'Configure authenticated merge brokerage'
89
95
  merge-broker doctor
90
96
  ```
91
97
 
@@ -176,29 +182,49 @@ This sets `core.hooksPath`, so it refuses to run when the repository already has
176
182
  stop working, and `--uninstall` puts everything back. `MERGE_BROKER_ALLOW_DIRECT_PUSH=1` is the
177
183
  deliberate emergency bypass.
178
184
 
179
- A remote gate proves a pull request really is an unaltered broker batch. It reads only Git, so it
180
- can run before any dependency is installed and reject bypassed work for almost nothing:
185
+ ### Publishing without a terminal
186
+
187
+ `serve` polls for verified batches and publishes them, but only while somebody keeps it running in a
188
+ terminal. When nobody does, a submitted task sits in `submitted` indefinitely — and to the agent
189
+ that submitted it, waiting forever is indistinguishable from being rejected. Install the loop as a
190
+ per-user service instead:
191
+
192
+ ```bash
193
+ merge-broker install-service
194
+ ```
195
+
196
+ This writes a launchd agent on macOS or a systemd user unit on Linux, one per repository, and starts
197
+ it. It is deliberately a *user* service on both platforms: a system daemon would need root and would
198
+ run as the wrong user for the repository's SSH and forge credentials. `--uninstall` removes it, and
199
+ the service writes to `$(git rev-parse --git-common-dir)/merge-broker/serve.log`, including when it
200
+ was installed from a linked worktree whose `.git` is a file.
201
+
202
+ A remote gate authenticates a pull request as an immutable broker batch. It reads the trusted public
203
+ key from the protected base branch, so it can reject unsigned, forged, or post-assembly work before
204
+ installing dependencies:
181
205
 
182
206
  ```yaml
183
207
  - uses: actions/checkout@v4
184
208
  with:
185
209
  ref: ${{ github.event.pull_request.head.sha }}
186
210
  fetch-depth: 0
187
- - uses: WeSpitfire/agent-merge-broker/verify@v1
211
+ - uses: WeSpitfire/agent-merge-broker/verify@v0.6.0
188
212
  ```
189
213
 
190
- The check confirms that the branch is a broker integration branch, that its manifest was assembled
191
- on real base history, that the final commit changes nothing but that manifest, that the integrated
192
- diff matches exactly the paths the receipts account for, that every submitted commit is present, and
193
- that all recorded validations passed. It accepts the "update branch" merges a protected base
194
- produces, and rejects a merge that brings in anything the base does not already contain.
214
+ The check verifies the Ed25519 signature, branch and batch identity, real base history, one-file
215
+ manifest commit, integrated diff, submitted commit trail, and recorded validation results. The
216
+ provenance commit must remain the branch head. Even a normal base-update merge can carry arbitrary
217
+ conflict resolution, so any post-assembly merge is rejected; re-cut a stale batch with `batch
218
+ refresh` instead.
195
219
 
196
220
  Verification policy is read from the configuration committed on the *base* branch, never from the
197
- change under review.
221
+ change under review. Repositories initialized before `0.6.0` must run `merge-broker provenance
222
+ setup-signing`, commit the resulting public-key policy, and keep the private key outside the working
223
+ tree. Until then verification reports structural-only rather than authenticated provenance.
198
224
 
199
225
  ## Automatic merging
200
226
 
201
- With `publish.mode` set to `pull-request` and `publish.autoMerge` enabled, the broker enables GitHub auto-merge on each published batch. GitHub lands the pull request once required status checks pass and updates the branch when the base branch requires it. The broker never pushes to the base branch itself, so branch protection remains the authority on what may merge.
227
+ With `publish.mode` set to `pull-request` and `publish.autoMerge` enabled, the broker enables GitHub auto-merge on each published batch. GitHub lands the pull request once required status checks pass. The broker never pushes to the base branch itself, so branch protection remains the authority on what may merge. If the base moves first, re-cut the batch; do not use GitHub's update-branch merge because immutable provenance deliberately rejects it.
202
228
 
203
229
  Two configuration combinations cannot work and are rejected at load time rather than stalling silently:
204
230
 
@@ -227,7 +253,34 @@ final and ends the lease — is not the way back.
227
253
  `integrate --dry-run` is a rehearsal in both directions: it retains no branch when it succeeds, and
228
254
  returns every task to the queue when it fails, so verifying costs nothing.
229
255
 
230
- A process that dies mid-integration leaves its lock behind. A holder on this machine is reclaimed automatically once its process is gone, but a holder on another machine cannot be probed at all and would otherwise block integration for the full stale window. `merge-broker unlock` reports lock state and releases a lock whose owner is provably gone; `--force` overrides that check and should follow confirming that no integration is running.
256
+ Only one batch is in flight at a time. A batch is cut from the base branch tip so it is born
257
+ mergeable, and cutting a second while the first is still open makes that expire — whichever merges
258
+ first leaves the other behind a base that requires branches to be up to date. `integrate` refuses
259
+ with `BATCH_OUTSTANDING` and names the batch to land first; `--force` overrides it.
260
+
261
+ When a batch does end up behind — something landed on the base by another route, or `--force` was
262
+ used — re-cut it:
263
+
264
+ ```bash
265
+ merge-broker batch refresh <batch-id>
266
+ ```
267
+
268
+ That closes the superseded pull request, returns the tasks to the queue without spending their retry
269
+ budget, and integrates them again from the current tip, re-validating against the base that is
270
+ actually being merged into. A batch already cut from the current tip is left alone.
271
+
272
+ Publication is safe to retry. The pull request is recorded before auto-merge is attempted, so a
273
+ forge that fails halfway leaves a published batch carrying a `publishWarning` rather than a batch
274
+ whose pull request exists but whose state does not admit it. Running `batch publish` again finds the
275
+ existing pull request and retries what is left.
276
+
277
+ A process that dies mid-integration can leave both a lock and durable `running` state. A holder on
278
+ this machine is reclaimed automatically once its process is gone; a holder on another machine cannot
279
+ be probed and waits out the stale window. Once the integration lock is safely acquired, `serve` and
280
+ `integrate` automatically mark the abandoned batch failed, clean its broker-owned worktree and
281
+ branch, and return its tasks to `submitted` without spending their attempt budget. `merge-broker
282
+ recover` performs that reconciliation explicitly. `unlock --force` remains only for an owner that
283
+ cannot be proven gone and must follow confirming no integration is active.
231
284
 
232
285
  ## Housekeeping
233
286
 
@@ -275,7 +328,9 @@ The generated `.merge-broker/config.json` is intentionally explicit and reviewab
275
328
  "maxAttempts": 3,
276
329
  "provenance": {
277
330
  "enabled": true,
278
- "directory": ".merge-broker/attestations"
331
+ "directory": ".merge-broker/attestations",
332
+ "requireSignature": true,
333
+ "publicKey": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----\n"
279
334
  }
280
335
  },
281
336
  "validation": {
@@ -307,8 +362,9 @@ The generated `.merge-broker/config.json` is intentionally explicit and reviewab
307
362
  Validator commands run inside the isolated integration worktree, under `/bin/sh` unless
308
363
  `validation.shell` names another interpreter. The shell is deliberately fixed and is never a login
309
364
  shell: an integration decision must not depend on whose machine assembled the batch. The environment
310
- is inherited from the process that invoked the broker, minus `MERGE_BROKER_TOKEN`, so PATH and
311
- toolchain managers work while worker credentials stay out of repository-defined commands.
365
+ is inherited from the process that invoked the broker, minus `MERGE_BROKER_TOKEN`,
366
+ `MERGE_BROKER_SIGNING_KEY`, and `MERGE_BROKER_SIGNING_KEY_FILE`, so PATH and toolchain managers work
367
+ while broker credentials stay out of repository-defined commands.
312
368
 
313
369
  Validators receive these environment variables:
314
370
 
@@ -330,8 +386,8 @@ The JSON schemas in [`schemas/`](schemas/) can be used by editors, adapters, and
330
386
  ### One authoritative CI pass
331
387
 
332
388
  Repositories that make GitHub the authoritative validator can leave broker
333
- authoritative validators empty, keep provenance enabled, and reject any PR
334
- without a valid broker manifest before installing dependencies. The full lint,
389
+ authoritative validators empty, require signed provenance, and reject any PR
390
+ without an authenticated broker manifest before installing dependencies. The full lint,
335
391
  type, test, and build suite then runs exactly once on the assembled broker PR.
336
392
  Task worktrees retain only fast changed-scope feedback, while deployment builds
337
393
  the already-checked revision without repeating the whole suite.
@@ -341,19 +397,22 @@ the already-checked revision without repeating the whole suite.
341
397
  ```text
342
398
  merge-broker init
343
399
  merge-broker doctor
400
+ merge-broker provenance setup-signing [--private-key <path>] [--rotate]
344
401
  merge-broker install-hooks [--force] [--uninstall]
402
+ merge-broker install-service [--uninstall] [--interval <seconds>] [--no-eager]
345
403
  merge-broker verify-provenance --branch <ref> --head <sha> --base <sha>
346
404
  merge-broker validate [--task <id>] [--scope focused|authoritative|all] [--base <ref>] [--cwd <path>]
347
405
  merge-broker task register|claim|extend|heartbeat|submit|retry|release|cancel|show
348
406
  merge-broker status
349
407
  merge-broker plan
350
- merge-broker integrate [--dry-run] [--publish]
351
- merge-broker batch list|show|publish|sync|complete
408
+ merge-broker integrate [--dry-run] [--publish] [--force]
409
+ merge-broker batch list|show|publish|refresh|sync|complete
352
410
  merge-broker audit
353
411
  merge-broker metrics
354
412
  merge-broker events
355
413
  merge-broker prune [--older-than <days>] [--dry-run]
356
414
  merge-broker unlock [state|integration] [--force]
415
+ merge-broker recover
357
416
  merge-broker serve [--publish] [--eager]
358
417
  ```
359
418
 
package/dist/broker.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { GitRepository } from "./git.js";
2
2
  import { StateStore, type LockStatus } from "./store.js";
3
3
  import { type HookInstallation } from "./hooks.js";
4
- import type { BatchRecord, BrokerConfig, BrokerState, IntegrationOptions, IntegrationResult, LocalValidationResult, PruneOptions, PruneResult, SchedulePlan, TaskRecord } from "./types.js";
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
6
  export interface RegisterTaskInput {
6
7
  id: string;
7
8
  title?: string;
@@ -35,6 +36,19 @@ export declare class MergeBroker {
35
36
  configPath: string;
36
37
  created: boolean;
37
38
  }>;
39
+ /**
40
+ * Enables authenticated provenance for an existing repository or rotates/imports its identity.
41
+ * The private key stays in Git's runtime state; configuration receives only the public key.
42
+ */
43
+ setupProvenanceSigning(options?: {
44
+ privateKeyFile?: string;
45
+ rotate?: boolean;
46
+ }): Promise<{
47
+ publicKey: string;
48
+ keyId: string;
49
+ keyPath: string;
50
+ }>;
51
+ private provenanceSigningPrivateKey;
38
52
  registerTask(input: RegisterTaskInput): Promise<TaskRecord>;
39
53
  claimTask(input: ClaimTaskInput): Promise<{
40
54
  task: TaskRecord;
@@ -81,6 +95,12 @@ export declare class MergeBroker {
81
95
  cwd?: string;
82
96
  }): Promise<LocalValidationResult>;
83
97
  integrate(options?: IntegrationOptions): Promise<IntegrationResult>;
98
+ private recoverAbandonedIntegrationsLocked;
99
+ /**
100
+ * Recovers durable `running` state left by a killed integration process. Acquiring the integration
101
+ * lock is the proof that the former process is no longer allowed to make progress.
102
+ */
103
+ recoverAbandonedIntegrations(): Promise<RecoveryResult>;
84
104
  publishBatch(id: string): Promise<BatchRecord>;
85
105
  syncBatch(id: string): Promise<BatchRecord>;
86
106
  syncPublishedBatches(): Promise<{
@@ -97,6 +117,24 @@ export declare class MergeBroker {
97
117
  * is re-planned against a fresh base instead of being silently lost.
98
118
  */
99
119
  closeBatch(id: string, reason: string): Promise<BatchRecord>;
120
+ /**
121
+ * Replaces a batch that can no longer merge because the base branch moved under it.
122
+ *
123
+ * A batch is cut from the base tip so it is born mergeable. When something else lands first, a
124
+ * base that requires branches to be up to date will refuse it, and there was previously no way
125
+ * back: the operator closed the pull request by hand, reconciled state by hand, and integrated
126
+ * again. This re-cuts the same tasks from the current tip and re-validates them, which is the
127
+ * point — a stale batch was only ever checked against a base nobody is merging into any more.
128
+ *
129
+ * Re-cutting rather than merging the base into the branch keeps every batch an immutable artifact
130
+ * whose manifest describes exactly the base it was assembled on.
131
+ *
132
+ * Attempts are deliberately not incremented. Nothing about the work failed; the world moved.
133
+ * Charging it against `maxAttempts` would eventually retire a task for being unlucky.
134
+ */
135
+ refreshBatch(id: string, options?: {
136
+ publish?: boolean;
137
+ }): Promise<RefreshResult>;
100
138
  markBatchMerged(id: string, mergedAt?: string, mergeCommitSha?: string): Promise<BatchRecord>;
101
139
  auditWorktrees(): Promise<{
102
140
  worktrees: Array<{
@@ -118,6 +156,26 @@ export declare class MergeBroker {
118
156
  force?: boolean;
119
157
  uninstall?: boolean;
120
158
  }): Promise<HookInstallation>;
159
+ /**
160
+ * Installs the integration loop as a per-user service.
161
+ *
162
+ * Without it `serve` only runs while a terminal is open, so a submitted task
163
+ * waits for a human to notice — indistinguishable, to the agent that
164
+ * submitted it, from the broker rejecting the work.
165
+ */
166
+ installService(options?: {
167
+ uninstall?: boolean;
168
+ intervalSeconds?: number;
169
+ eager?: boolean;
170
+ nodePath?: string;
171
+ cliPath?: string;
172
+ pathEntries?: string[];
173
+ logFile?: string;
174
+ }): Promise<ServiceInstallation | {
175
+ name: string;
176
+ file: string;
177
+ removed: boolean;
178
+ }>;
121
179
  inspectLocks(): Promise<LockStatus[]>;
122
180
  releaseLock(name: string, options?: {
123
181
  force?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../src/broker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../src/broker.ts"],"names":[],"mappings":"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"}