{"schema_version":1,"title":"StatsMapped corrections and change log","page":"/corrections","report_an_error":"hello@statsmapped.com","dates_are":"the day the change was merged; it reaches the live site at the next release","count":5,"entries":[{"id":"2026-10-09-comparison-reasons-plain-wording","date":"2026-10-09","kind":"correction","area":"Comparison checks (API and chat)","title":"Plain-English reasons for rejected comparisons","what_was_wrong":"When the comparison check declined to call two measures comparable, the reason it gave could be one of our internal working notes (it mentioned a one-off data fix, another entry, or an internal name) instead of a sentence a reader or an AI assistant could quote.","why":"The reason is what an assistant repeats to a person. It has to make sense on its own. The five affected stored reasons were rewritten on 9 October to say the same finding in plain words, and a check of the live responses found no internal wording left.","check_url":"/api/v1/comparisons/check?stat_key_a=live_register&stat_key_b=persons_at_work","ref":"PR 647 and PR 953"},{"id":"2026-10-09-false-not-vetted-reason","date":"2026-10-09","kind":"correction","area":"Comparison checks (API and chat)","title":"A vetted comparison no longer says it was not vetted","what_was_wrong":"A pair of measures that a person had already reviewed and approved could still be told \"not vetted by a human\" in the comparison check's reasons. That sentence was false for those pairs.","why":"A false reason undermines the one signal that says a person looked at the pair. Reviewed pairs now count as reviewed, and the check gives the real reason (how much data it has) instead.","check_url":"/methodology#how-a-comparison-verdict-is-reached","ref":"PR 911"},{"id":"2026-10-09-clean-pairs-support-cap","date":"2026-10-09","kind":"correction","area":"Comparison checks (API and chat)","title":"Clean comparisons could never reach the top verdict; a human rejection could be ignored","what_was_wrong":"Two faults in how a comparison verdict was reached. First, a pair with no outliers was treated as if its robustness re-run had failed, so a clean pair could never be rated higher than \"qualified\". Second, for a registered pair, a person's recorded rejection was never looked up, so the check could ignore it.","why":"Both made the verdict less trustworthy: one understated good evidence, the other could overstate a pair a person had already rejected. Both are fixed and covered by tests.","check_url":"/methodology#how-a-comparison-verdict-is-reached","ref":"PR 816"},{"id":"2026-10-09-null-byte-400","date":"2026-10-09","kind":"change","area":"Tender awards pages and API","title":"A malformed search no longer causes a server error","what_was_wrong":"A search containing a NUL (0x00) character, which automated scanners send, made the tender awards pages and several API endpoints fail with a server error (HTTP 500) instead of saying the request was invalid.","why":"A server error looks like an outage and wastes the site's capacity. The request is now refused with a clear HTTP 400 message.","check_url":"/united-kingdom/tender-awards?authority=%00","ref":"PR 943","check_label":"See the clear 400 message (the page is meant to refuse this request)"},{"id":"2026-10-09-uk-chat-entry-points","date":"2026-10-09","kind":"correction","area":"United Kingdom pages","title":"UK pages no longer offer a chat that is not available there","what_was_wrong":"United Kingdom pages showed the chat box and \"Ask StatsMapped\" buttons, but the chat does not yet cover UK data, so a visitor could finish the human check and then be told it was unavailable, in wording that suggested a temporary fault.","why":"Offering something that cannot work is a broken promise. The entry points are hidden where chat does not exist, and the refusal now says plainly that it is not available for that country yet.","check_url":"/united-kingdom","ref":"PR 948"}]}