• v0.40.1 275f052fd0

    joeyr released this 2026-08-24 16:04:01 -05:00 | 86 commits to main since this release

    A healthy keepalive and a dead one logged the same thing: nothing.

    Found by reading the deployed tenant's log, not by the suite — which asserted what the
    tick DOES and never whether anyone could see it.

    Fixed

    • keepalive ok is logged at info rather than debug. The deployment runs at
      LOG_LEVEL=info, where a tick that succeeded WITHOUT a rotation produced no output at
      all — so silence meant either "healthy, Canvas just did not re-issue" or "the thread
      died an hour ago", with no way to tell which. The one mechanism keeping this tenant's
      credential alive was the one thing the log could not confirm was running
      , which is the
      "up but doing nothing" case preflight.py exists to prevent, arriving an hour at a time
      instead of at boot.

      session rotated is not a substitute, and is why this looked covered: it fires only
      when Canvas chooses to re-issue, so reading it as a heartbeat is reading Canvas's
      cadence and calling it ours.

    • Two new tests. The first asserts at the level the deployment runs at rather than
      checking which method was called — what matters is what survives LOG_LEVEL=info.
      Proved by putting it back to debug and watching it fail. The second pins that a line
      running hourly and forever never carries a cookie value.

    1351 tests green.

    Downloads