You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Vendor-agnostic interface through which Stovepipe triggers and polls builds against an external build system. Shaped the same as SubmitQueue's own `buildrunner` extension — same `Trigger`/`Status`/`Cancel` verbs, same async contract, same id model — but a separate interface rather than a shared one: Stovepipe validates a single commit against a baseline (or from scratch), not a stack of dependency batches, so `Trigger` takes URI identity instead of batch identity. See [doc/rfc/stovepipe/steps/build.md](../../../doc/rfc/stovepipe/steps/build.md#why-separate-contracts) for the full rationale, and its ["Carries over vs. new"](../../../doc/rfc/stovepipe/steps/build.md#carries-over-vs-new) section for what is shaped the same as SubmitQueue's versus what is Stovepipe-specific.
3
+
Vendor-agnostic interface through which Stovepipe triggers and polls builds against an external build system.
4
4
5
-
Per the repository's extension rules, this package holds the `BuildRunner` interface, its `Config`, and the `Factory`*interface* only — concrete `Factory` implementations and the per-queue routing that picks a backend for a `Config.QueueName` live in the wiring layer.
6
-
7
-
## Behavior
8
-
9
-
-**Trigger** starts a new build against `headURI` (optionally relative to an incremental `baseURI`) and returns the runner-minted build id. There is no caller-supplied dedup input — every call starts a fresh build, and downstream idempotency absorbs any duplicate from a redelivery. Trigger must return promptly; the build itself runs asynchronously.
5
+
-**Trigger** starts a new build against `headURI`, optionally relative to an incremental `baseURI`, and returns the runner-minted build id. There is no caller-supplied dedup input — every call starts a fresh build; downstream idempotency absorbs any duplicate from a redelivery. Trigger must return promptly; the build itself runs asynchronously.
10
6
-**Status** polls the current status and any provider metadata for a build id `Trigger` returned. Unlike `Trigger`, it may round-trip to the backend and block.
11
-
-**Cancel** requests cancellation for a build id, returning once the request reaches the runner rather than once the build actually stops. No controller calls it today — it exists for contract parity with SubmitQueue and for future use.
12
-
13
-
## Errors
14
-
15
-
Implementations return plain, unclassified errors — the calling controller decides user-vs-infra and retryable-vs-not, per `platform/errs`. There is no package error sentinel yet; a domain sentinel (e.g. for "unknown build") is deferred until a concrete need for it lands.
16
-
17
-
## Implementations
7
+
-**Cancel** requests cancellation for a build id, returning once the request reaches the runner rather than once the build actually stops. Unused today; kept for contract parity with SubmitQueue.
18
8
19
-
-**fake** — a stateless backend that succeeds by default and honors failure-injection markers embedded in `headURI`, for examples and tests.
9
+
Implementations return plain, unclassified errors — the calling controller decides retryable-vs-not and user-vs-infra, per `platform/errs`.
20
10
21
-
To add a backend, create `buildrunner/{backend}/`, implement the `BuildRunner` interface, and return it from a `New(...)` constructor.
11
+
See [doc/rfc/stovepipe/steps/build.md](../../../doc/rfc/stovepipe/steps/build.md#why-separate-contracts) for why this is a separate contract from SubmitQueue's own `buildrunner` rather than a shared one. To add a backend, create `buildrunner/{backend}/`, implement `BuildRunner`, and return it from a `New(...)` constructor.
0 commit comments