@@ -9,6 +9,56 @@ The format is based on the regulated environment requirements:
99
1010---
1111
12+ ## [ 2026-06-23 11:45] - Ship the spot-schedule provider binaries in the image (ADR 0009 providers were unrunnable)
13+
14+ ** Author:** Erick Bourgeois
15+
16+ ### Changed
17+ - ` Cargo.toml ` : added explicit ` [[bin]] ` entries for ` spot-schedule-time-based `
18+ (` src/bin/spot_schedule_time_based.rs ` ) and ` spot-schedule-capital-markets `
19+ (` src/bin/spot_schedule_capital_markets.rs ` ). They were previously only
20+ auto-discovered under their underscore file-stem names, which did not match the
21+ hyphenated ` command: ` in their deploy manifests.
22+ - ` Dockerfile ` , ` Dockerfile.chainguard ` : also ` COPY ` ` spot-schedule-time-based ` and
23+ ` spot-schedule-capital-markets ` into the image (alongside ` /5spot ` ). The main image
24+ is now multi-binary; ` ENTRYPOINT ` stays ` /5spot ` and providers select via ` command: ` .
25+ - ` Makefile ` (` prepare-binaries-linux-amd64 ` , ` -arm64 ` ): copy the two provider binaries
26+ into ` binaries/<arch>/ ` so the Docker build can pick them up.
27+ - ` .github/workflows/build.yaml ` (Build job): the artifact upload (PR/push + release)
28+ now includes ` spot-schedule-time-based ` and ` spot-schedule-capital-markets ` — CI
29+ uploads only the named binary, so without this the providers never reach the Docker
30+ job (the multi-arch build failed with `binaries/arm64/spot-schedule-time-based: not
31+ found` ). ` cargo build --release` already builds all ` [[ bin]] `s.
32+ - ` .github/actions/prepare-docker-binaries/action.yaml ` : copy the two provider binaries
33+ from the downloaded artifacts into ` binaries/<arch>/ ` for both arches (the local
34+ ` make prepare-binaries ` is not used by CI — this composite action is).
35+ - ` deploy/spot-schedule-providers/{time-based,capital-markets}/deployment.yaml ` :
36+ ` command ` changed to absolute paths (` /spot-schedule-time-based ` ,
37+ ` /spot-schedule-capital-markets ` ) — the distroless image has no PATH entry for a bare
38+ name; the binaries live at ` / ` .
39+ - ` docs/src/guides/time-based-schedule.md ` , ` docs/src/guides/capital-markets-schedule.md ` ,
40+ ` docs/src/installation/controller.md ` : documented that each provider is a separate,
41+ ** required** Deployment shipped inside the main image (selected by ` command: ` ), and
42+ that without a provider running no ` ScheduledMachine ` referencing a schedule activates.
43+
44+ ### Why
45+ The spot-schedule providers (ADR 0009) had source and deploy manifests but were never
46+ wired into the build: the binaries were not declared with their deployed names, were
47+ not copied by ` prepare-binaries ` , and were not in the Dockerfiles. The published image
48+ therefore could not run them — a deployed provider crash-looped with
49+ ` exec: "spot-schedule-time-based": executable file not found ` , leaving every
50+ ` ScheduledMachine ` stuck (no ` status.active ` is ever written). Surfaced while bringing
51+ up the k0smotron workshop tier on a v1beta1 image.
52+
53+ ### Impact
54+ - [ ] Breaking change
55+ - [x] Requires cluster rollout
56+ - [ ] Config change only
57+ - [ ] Documentation only (code + docs)
58+
59+ Note: the next image build is required before the provider Deployments can run; their
60+ ` :v0.1.0 ` placeholder tags are pinned at release by ` make set-image-version ` .
61+
1262## [ 2026-06-22 12:00] - CAPI Machine API version: passthrough from bootstrapSpec + mandatory discovery (no hardcoded version)
1363
1464** Author:** Erick Bourgeois
0 commit comments