Three defects in 0.15.0's own new code, found by re-auditing it the way this project audits everything else. The fix is the most likely place for the next bug — and a new file is a new place for an old one.
Fixed
- A corrupt number in the usage journal or the server registry crashed the command you run to diagnose it.
float("abc")raises ValueError, which is neither ajson.JSONDecodeErrornor anOSError, so it walked straight past the per-line handler inusage.loadand the sort key inservers.live_servers: one hand-edited or torn-written character turnedagent-dispatch stats --days 7andagent-dispatch doctorinto a traceback. Same escape route as theUnicodeDecodeError-is-a-ValueErrorround in 0.12.1. All three sites now coerce through one sharedusage.as_float— an undatable record falls outside the window, a registry entry with a mangled timestamp sorts last, and nothing raises. stats --jsonprinted prose instead of JSON when the journal was empty. That is precisely the state of a fresh install, and therefore the first thing a script piping the output would hit. It now always emits the report object.- Doc drift:
AGENTS.mdcarried a stale test count.
714 tests (was 708), clean-venv install and twine check verified before tagging.