Skip to content

DevCake v0.6.9

Choose a tag to compare

@fidecastro fidecastro released this 22 Sep 16:29
· 1 commit to main since this release
8a55116

Patch release in the v0.6 "Kentucky Butter" line. Ships with devcake-cli 0.1.10 — upgrade the CLI before devcake up --release v0.6.9.

Why this release. Two field episodes on a small host: a shared HTTP pool that filled with dead connections until every tracker and repository call failed, and a CPU-starved control plane whose baker read a slow app as a dead one. This release removes the leak, makes the pool and the host's capacity visible, teaches the baker the difference between slow and dead, and folds in a contributor's GitLab audit.

Deadlines never cancel a socket holder (ADR-0044). A wait that cancelled an outbound call mid TLS handshake leaked the socket. Waits now go through one module that lets the work finish in the background; the tracker probe reports "probe pending" instead of red while it runs, the branch-protection walk refreshes in the background, the forge sweep is one in-flight task, and a structure guard keeps cancellation away from HTTP. /health.http_pool meters the pool against the kernel's sockets and grades it; devcake status and the Overview alert read the grade. A network error with no message now names its class.

The fleet's CPU demand against the host's cores. /health.capacity reports concurrency × CPUs against the cores the app sees, one core kept for the control plane. An oversubscribed host shows as a dismissable Overview warning, a devcake status line and a devcake up warning. Sizing rule: cores ≥ concurrency × CPUs + 1.

The host baker tells slow from dead. A running container that cannot answer the liveness probe keeps the baker's heartbeat fresh with no bake work and never exits; a container listing that cannot be read spends nothing; only a container that is not running spends the five-minute budget, now wall-clock. Compose gives the control plane CPU weight and the app healthcheck tolerates a starved event loop; the app paints the baker dead after 60 seconds without a heartbeat.

GitLab hygiene. The merge request file listing walks the paginated diffs endpoint (the changes endpoint is deprecated) and reads the merge request's own overflow signal, so a capped diff is disclosed as truncated. Git transfers over the network, on the app side and in Dev containers, abort once they crawl under 1 kB/s for 60 seconds.

Operator sequence.

  1. uv tool upgrade devcake-cli (0.1.10) on the host.
  2. Let running missions finish, then devcake up --release v0.6.9. Every harness image re-bakes (the Dev-side clone change); compose recreates app, dagu and redis for their CPU weight. No AppArmor profile change.
  3. devcake status: the new http_pool: and capacity: lines. If capacity says oversubscribed, raise the host or lower Limits.

Pull requests: #478, #479, #480, #481. Full changelog in CHANGELOG.md.