• v0.31.1 0e47bba829

    v0.31.1 — an unmatched folder name is not a misconfiguration
    All checks were successful
    CI / gate (push) Successful in 1m26s
    CI / image (push) Successful in 15s
    Stable

    joeyr released this 2026-08-22 21:10:16 -05:00 | 4 commits to main since this release

    An unmatched folder name no longer reads as a misconfiguration. One error
    string on the Gmail tenant; no tool, argument or description changed, so no
    reconnect is needed
    — a service image update is enough.

    Fixed

    • resolve_folder's refusal said the wrong thing about WHY a label was
      missing.
      It read "there is no folder named X available to this server … a
      name that is not listed cannot be read at all"
      , which is true of an
      allowlisted deployment and false of a label created ten minutes ago:
      list_folders is cached for FOLDER_LIST_TTL, an hour by default, so a new
      label is genuinely absent from that list for up to an hour after it exists.

      Found in the field, and the cost was a wrong recommendation rather than a
      wrong read.
      A model asked for a label created minutes earlier, got this
      refusal, and reported to the operator that the label "wasn't allowlisted" and
      should be added to the read allowlist — on a tenant whose MAIL_FOLDERS is
      deliberately empty, meaning every label is readable and there is no allowlist
      to add anything to. The refusal itself was correct; its explanation produced a
      confident, wrong config change.

      It now says the server cannot currently see the name, that a recently
      created label may simply not be listed yet, that the list is cached for up to
      an hour, and not to advise changing any server setting on the strength of the
      message. The 0.29.7 half — this is not the same as the folder being empty
      is unchanged and still the more important half.

    • The test pinned the sentence rather than the property, so it would have
      passed on any wording that happened to contain the old phrase and failed on
      every improvement to it. It now asserts what the refusal has to prevent: a
      reader concluding "no mail", and a reader concluding "misconfigured". Both are
      things that actually happened.

    Notes

    • An error a model acts on is part of the interface. The tenant's own
      CLAUDE.md already says a refusal must be written to be acted on rather than
      merely reported; this is the same rule extended one step, to what the reader
      will infer about the cause and recommend on the strength of it.
    Downloads