Skip to content

ebman v0.35.0

Choose a tag to compare

@github-actions github-actions released this 27 Aug 12:08
· 33 commits to main since this release

If you rely on :freeze-deploys or :incident as a safety net, this release matters.

A freeze marker whose timestamp could not be parsed was treated as stale, deleted, and enforcement stopped — silently, and by definition during the incident the freeze was declared for. The cause was a sentinel (i64::MAX) that overflowed when the pid-reuse window was added to it, so every real process start time compared greater and the marker read as pid-reused. Release builds lifted the freeze; debug builds panicked. Found by reviewing this release's own lineup before tagging.

Fixed

  • A corrupt freeze marker lifted the freeze instead of holding it (above).
  • A reused pid could hold a phantom freeze indefinitely. The marker recorded only a pid, so once the OS wrapped its pid counter an unrelated process kept the freeze alive. It now checks process start time too, and still fails closed when that cannot be read.
  • A rollout halted by a freeze exited 0, reporting success for a deploy that stopped part-way. It exits 3, and the unattempted regions are listed as skipped (rollout halted).
  • A freeze declared mid-rollout did not stop the remaining regions. Both the sequential and parallel dispatch loops now re-check before each region.
  • An empty Select field panicked the TUI on a keypress.
  • ebman ctl key shift+tab moved the cursor forwards, not backwards.
  • Four glyphs ignored icons = "ascii" and rendered as tofu on terminals without them — the armed-rollback and watching-deploy pills, the header sort arrow, and the HEALTH column label.

Added

  • :help <topic> opens one help topic by name (global, detail, dlq, shell, …) rather than scrolling the full keymap. :help shell is the only way to read the embedded-shell keys.

Documentation

  • docs/headless.md now spells out that exit 3 also covers refused and halted writes — a safety pin, read-only mode, an active freeze, or a rollout halted mid-run — not only "issues / drift found". CI scripts branching on the published convention were reading a safety refusal as a lint finding.

No breaking changes.