Skip to content

v0.4.1 — warden-lite

Latest

Choose a tag to compare

@github-actions github-actions released this 12 May 13:14

[0.4.1] - 2026-05-12

Partner-day-1 hardening release. Closes the SQLite-concurrency gap
that hung the warden-lite audit CLI against a running proxy,
sharpens the operator triage queue, and wires the end-to-end smoke
into CI so future changes can't silently break the day-1 surface.

Changed

  • SQLite WAL + busy_timeout on ledger open. Lets the
    warden-lite audit CLI read the ledger DB concurrently with a
    running proxy (previously the second opener deadlocked on the
    writer lock and hung indefinitely). busy_timeout=5000 backstops
    brief contention with a short wait instead of SQLITE_BUSY. The
    :memory: path silently falls back to a memory-mode journal.

Added

  • pending list sort + color UX. Triage-queue ergonomics: the
    parked filter now defaults to oldest-first so the
    longest-waiting request reads at the top; decided and all
    default to newest-first (history view). Both can be overridden via
    ?sort=oldest|newest on the server and --sort on the CLI. The
    STATUS column emits ANSI color on a TTY (yellow=parked, green=allow,
    red=deny) and stays plain text on pipes or when NO_COLOR is set
    (https://no-color.org).
  • scripts/smoke-e2e.sh — partner-day-1 quality gate. Boots
    warden-lite from a freshly-built local image on a dedicated docker
    network with a Python upstream stub, then exercises all three
    verdicts, the yellow-tier park-poll-decide loop, second-decide
    409, the decide-token gating (rejecting an agent bearer on the
    operator endpoint), and a concurrent warden-lite audit CLI read
    against the same DB file (proves WAL works). 20 checks against
    the live HTTP surface; cleans up on exit. Wired into CI so every
    push proves the gate. Companion to smoke-install.sh — this one
    verifies they actually work.