<feed xmlns='http://www.w3.org/2005/Atom'>
<title>zig/README.md, branch v0.2.0</title>
<subtitle>Zig client for the public CEP API
</subtitle>
<id>http://git.cep.is/zig/atom?h=v0.2.0</id>
<link rel='self' href='http://git.cep.is/zig/atom?h=v0.2.0'/>
<link rel='alternate' type='text/html' href='http://git.cep.is/zig/'/>
<updated>2026-07-27T23:39:06Z</updated>
<entry>
<title>Report the municipality behind a CEP that does not exist</title>
<updated>2026-07-27T23:39:06Z</updated>
<author>
<name>Murilo Ijanc</name>
<email>murilo@ijanc.org</email>
</author>
<published>2026-07-27T23:39:06Z</published>
<link rel='alternate' type='text/html' href='http://git.cep.is/zig/commit/?id=497b1c1b01f6c9a584e5b40e02aff4763447529c'/>
<id>urn:sha1:497b1c1b01f6c9a584e5b40e02aff4763447529c</id>
<content type='text'>
A CEP that fails to resolve is rarely a random number. It is almost always
someone who knows the city and guessed the digits, and the classic guess is
the -000 that 957 municipalities never received. The API now says so: a 404
carries an optional faixa block naming the municipality the number would have
belonged to, and answering "no such CEP in Areal/RJ, which has 118 of them" is
a great deal more useful than "not found".

It arrives through Diagnostics, which is where every other detail a Zig error
tag cannot carry already travels, and it is read with diag.faixa(). Like
message(), it lives in a fixed buffer inside the value and allocates nothing,
so no caller has to learn a new deinit for it.

The lookup still fails. faixa is context for the error, never an address, and
cep_ini/cep_fim are the smallest and largest CEP that actually exist there
rather than the bounds the Correios publish — for Areal the DNE's own start is
25845000, which is exactly the CEP that failed. The range is also sparse, 118
CEPs over ~4,900 numbers, so ceps is the count and the pair must never be
presented as a list. The doc comments and the README say all three, because
this field is easy to misread as a success.

Parsing is deliberately inert: a faixa that is missing, null, not an object,
nameless or oversized yields null, and an unreadable body is skipped. Nothing
about this field may promote a clean not-found into a parse failure.
</content>
</entry>
<entry>
<title>Initial import</title>
<updated>2026-07-26T15:48:43Z</updated>
<author>
<name>Murilo Ijanc</name>
<email>murilo@ijanc.org</email>
</author>
<published>2026-07-26T15:48:43Z</published>
<link rel='alternate' type='text/html' href='http://git.cep.is/zig/commit/?id=87166a5299aa551517a86379a0c05eb2110b52b0'/>
<id>urn:sha1:87166a5299aa551517a86379a0c05eb2110b52b0</id>
<content type='text'>
</content>
</entry>
</feed>
