v0.4.8-rc.1
Pre-releaseLeoflow v0.4.8-rc.1
A 0.x (pre-1.0) build — SemVer carries the maturity, there is no separate
alpha/beta, and the pre-alpha series ended at v0.0.1 (ADR 0037). APIs and
on-disk shape may still evolve between minor versions; -rc.N tags are release
candidates gated by the E2E suite. Install this exact release with:
curl -fsSL https://raw.githubusercontent.com/neochaotic/leoflow/v0.4.8-rc.1/install.sh | LEOFLOW_VERSION=v0.4.8-rc.1 shA bare
curl … | shinstalls the latest stable release (/releases/latest
excludes pre-releases), so on a pre-release page it would NOT give youv0.4.8-rc.1.
LEOFLOW_VERSIONmust sit on theshside of the pipe (notcurl) — a
VAR=x curl … | shprefix sets the var forcurlonly, soinstall.shwould
not see it and would fall back to latest-stable.
Changelog
- 578ddad: docs(changelog): merge the duplicated Unreleased sections (#1231) (@neochaotic)
- 963295d: docs(contribute): give the docs the preview command that works (#1233) (@neochaotic)
- 8b8af6b: docs(gcp): correct what warm-pool-ab can do, and name the two defects that say not yet (#1202) (@neochaotic)
- e21a382: feat(changelog): one fragment file per PR instead of one shared section (#1232) (@neochaotic)
- ae08669: feat(gcp): put the node TTL on before the pool is full, not after (#1209) (@neochaotic)
- 9333af7: feat(helm): let an operator set the UI refresh interval from the chart (#1197) (@neochaotic)
- b4b1e0d: feat(oidc): offer auto-redirect to the IdP, and read a tenant claim that is an array (#1192) (@neochaotic)
- 8309df1: fix(agent,executor): stop a task's survivors reaching the next, and describe an OOM on the recovery path (#1220) (@neochaotic)
- 5c608b5: fix(auth): set the session cookie server-side on the password login path (#1195) (@neochaotic)
- d766a7b: fix(cli): build the image with the tag strategy deploy reads, not with the version (#1228) (@neochaotic)
- a27da4f: fix(cli): say when setup will download a Python, instead of naming one it will not use (#1226) (@neochaotic)
- 35a5604: fix(cut-release): the dry run said 'changelog: unchanged' while two entries were about to move (#1235) (@neochaotic)
- d7cbfd8: fix(gcp): a gcloud wait that gave up is not a failure, and a cluster it left is not absent (#1206) (@neochaotic)
- 1390cc0: fix(gcp): check the account settings before provisioning, not one line after (#1211) (@neochaotic)
- 60c51e8: fix(gcp): measure warm pools on an interval both arms have, and report it (#1204) (@neochaotic)
- 8a29ccc: fix(gcp): never delete a cluster an earlier run recorded, and log in as an email (#1222) (@neochaotic)
- 828ec89: fix(gcp): remove a refusal whose stated reason had stopped being true (#1221) (@neochaotic)
- 4983b4a: fix(gcp): submit a level in parallel, and record the concurrency that existed (#1215) (@neochaotic)
- 1ed686c: fix(gcp): the saturation rule compared p95 against 3, not against 3x the baseline (#1208) (@neochaotic)
- 6c03e2b: fix(gcp): wait for a level's pods to be gone, instead of sleeping and hoping (#1213) (@neochaotic)
- 08a0bbc: fix(oidc): bound every call to the IdP, not just the one a context could reach (#1210) (@neochaotic)
- 85b7e90: fix(storage): stop the scheduler handing back leadership once an hour (#1205) (@neochaotic)
- b3fb4be: release: prepare v0.4.8-rc.1 (@neochaotic)
- 6abe030: test(e2e): exercise the two-step build-then-deploy path, with a non-default tag strategy (#1229) (@neochaotic)
- 5448428: test(gcp): provision and tear down a throwaway cluster for the experiments local cannot run (#1194) (@neochaotic)
- 699f6a9: test(gcp): retry a cluster that was briefly unreachable, and only that (#1223) (@neochaotic)
- 5ef246e: test(gcp): three experiment runners, and the one that could be run (#1198) (@neochaotic)
- 1957d6d: test(observability): pin that a logged claim cannot forge a log record (#1201) (@neochaotic)
- 184c8cd: test(soak): a long-running resilience battery with continuous invariants (#1183) (@neochaotic)
Artifacts are checksummed (SHA-256) and the checksums file is cosign-signed
(keyless). Verify with cosign verify-blob.