• v0.57.1 1310d67ae7

    joeyr released this 2026-09-21 21:19:50 -05:00 | 47 commits to main since this release

    0.57.0's gate was red and its image was never built. pytest failed on two PII rules,
    the image job was skipped in consequence, and :latest in the registry still pointed at
    0.56.1 — a release that has no weather tenant at all. The failure was not visible from
    anything the release itself claimed: the tag existed, the Forgejo release object existed,
    and the code was correct. What was missing was an image, and nothing said so. It
    surfaced only when the deploy reached for one, which is the same shape as the defect the
    weather tenant exists to guard against: a request that fails and reports success.

    The previous entry's "1728 tests green" was counted, not run. 1728 was the collected
    total while two of them were failing. It is now literally true.

    Fixed

    • test_no_pii.py's keyed-decimal rule could not admit a negative coordinate, which
      is the defect rather than the four literals it fired on. The separator was \W{0,4},
      and \W matches - greedily, so on LON = -67.891 it consumed , =, and the
      sign
      , capturing 67.891. Every allowlisted longitude in that file is negative, so the
      allowlist could never match one, and the offender was reported as a number that appears
      nowhere in the repo. The class is now [^\w-]{0,4}, which stops at the sign and hands it
      to the number. A negative that is genuinely not allowlisted still fires, with its sign
      intact — proved by assertion rather than asserted in a comment.
    • Three coordinate-shaped literals that should never have been written. The redaction
      comment in weather/client.py illustrated itself with a real airport's position, and
      test_weather.py carried a live-looking bbox around New York; both now use the repo's
      invented vector or one decimal place, which is an 11 km cell and not a place. The bbox
      test's docstring says why it is coarse, so the next reader does not sharpen it back.
    • A fixture named the single-label host elsewhere. Now elsewhere.invalid, per the
      reserved-domain rule that rejected it. A bare label is a name a search domain resolves.

    Notes

    • No behaviour changed. Three of the four edits are comments, docstrings and test
      vectors; the fourth is a test-only regex. The weather tenant is byte-identical in
      behaviour to 0.57.0 and remains code-only and undeployed.
    • The guard was right to fire and wrong about one of its four hits, which is worth
      separating: it caught two real literals and one unreserved host, and it invented the
      fourth. A guard that cries wolf once is switched off eventually, which test_no_pii.py's
      own header says is the failure mode it fears most.
    Downloads