<feed xmlns='http://www.w3.org/2005/Atom'>
<title>clectio.git/gen/verses_of.keys.gz, branch main</title>
<subtitle>tiny suckless C daily readings, floppy sized, bring your own Bible</subtitle>
<id>https://git.labunix.xyz/clectio.git/atom?h=main</id>
<link rel='self' href='https://git.labunix.xyz/clectio.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/'/>
<updated>2026-08-18T16:09:26Z</updated>
<entry>
<title>fix: EF crashed on 1246 of the 10957 dates in range</title>
<updated>2026-08-18T16:09:26Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-18T16:09:26Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/commit/?id=35ba4dc3dc5c85ddd4ccb3ec02f8fa5e1c11874b'/>
<id>urn:sha1:35ba4dc3dc5c85ddd4ccb3ec02f8fa5e1c11874b</id>
<content type='text'>
gen/liturgy_ef.h was regenerated in an earlier session without refreshing
gen/verses_ef.keys.gz, which is what the Makefile actually packs the text from.
The tables indexed 3584 verses; the packed text held 3248. print_day then read
verse[i] past the end and dereferenced NULL.

Reproduced against the fully committed tree with a plain make: 1246 of 10957 EF
dates exit 139. Heavily clustered in Advent and December -- 30 of 30 years for
each of 11-30, 12-03, 12-05, 12-06, 12-09, 12-10, 12-12, 12-21 through 12-25.
OF swept clean, 0 of 10957.

Three changes:

  - gen/ regenerated against lectio HEAD with keys and tables in step (3584
    both), and text_ef.lz repacked from the same keys.
  - clectio.c records how many verses the packed text holds and prints
    "[verse text missing]" rather than reading past it. Missing text is a
    visible gap now, never a crash. Proved by rebuilding against the stale
    keys: 1246 crashes -&gt; 0, placeholder shown.
  - upstream, lectio's clectio-gen now writes the .gz alongside the plain
    keys, so the two cannot drift again.

The regenerated tables also carry two EF calendar corrections colitur argued
from the 1962 Missal and lectio adopted: the Holy Family propers' 13-January
omission of the Baptism, and RG 96(a)/97/98 transfers, which put St Joseph back
on 2035-04-03 and 2046-04-03 (he was observed on no day of those years).

Distinct days 656 -&gt; 642: the ferias between Epiphany and the Sunday after it
now repeat Epiphany's own Mass instead of each carrying a distinct one.

Swept after the fix: EF 0 crashes, OF 0 crashes.
Readings compared against lectio across 2030/2035/2046 (1095 days): no
divergence beyond each project's own book abbreviations.
</content>
</entry>
<entry>
<title>fix: recover dropped readings + collapse whitespace; regenerate data</title>
<updated>2026-07-28T20:51:40Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T20:51:40Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/commit/?id=59fc2e62cbfb94e901ac24c0d85a7bec738473e0'/>
<id>urn:sha1:59fc2e62cbfb94e901ac24c0d85a7bec738473e0</id>
<content type='text'>
Two QA-found bugs fixed:

- mktext now collapses runs of whitespace in verse text to a single space
  (and trims), matching lectio's Fields-based rendering. The Vulgate source
  has occasional double spaces that were leaking into the output.

- Regenerated gen/ with the hermetic, alias-fixed clectio-gen: the generator
  no longer picks up the user's stale books.ini (which had silently dropped
  ~30 EF Ember-day lessons, e.g. St Lawrence-common Sir 45, Osee/Hosea 14,
  2 Esdras/Nehemiah 8). Full range 2025-2054 now has 0 dropped readings.

Verified vs lectio: OF and EF 2026 are byte-identical (day names + verse
text, 0 mismatches); range boundaries 2025-01-01 / 2054-12-31 match; ASAN +
UBSAN clean over leap days, boundaries and edge cases; bad input never
crashes. Shipped total 1.28 MiB.

Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
</content>
</entry>
<entry>
<title>clectio: tiny suckless C daily readings, all readings compiled in</title>
<updated>2026-07-28T20:07:45Z</updated>
<author>
<name>lectio</name>
<email>lukasz@arcofasiagroup.com</email>
</author>
<published>2026-07-28T20:07:21Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/commit/?id=42fd9a69fa2bc9ef11c65c169a58ff40c9cb0fa1'/>
<id>urn:sha1:42fd9a69fa2bc9ef11c65c169a58ff40c9cb0fa1</id>
<content type='text'>
clectio prints the Catholic liturgical day and its Mass readings for a date
with a single table lookup -- no computation, config file, network, or deps
beyond libc. The calendar, reading citations and scripture text are all
compiled in; the whole shipped package fits on a 1.44 MB floppy (~1.29 MiB)
and the binary is ~0.9 MB (OF) / ~0.3 MB (EF).

- suckless config.h: FORM_OF/FORM_EF, SIGLA_ENGLISH/SIGLA_LATIN, COLOR.
- Bring your own Bible: `make CORPUS=mybible.tsv` recompiles with any
  Vulgate-numbered 6-column TSV; only the ~12k cited verses are embedded.
- The hard liturgical logic stays in lectio (Go, oracle-validated); its
  clectio-gen emits the corpus-independent tables in gen/. The scripture text
  is LZSS-packed (lz.h) to fit; mktext/bin2h resolve+embed it at build time.
- Verified byte-identical to lectio's readings; day names match 157/157 over
  a 3-year sample. Default text: public-domain Latin Vulgate. ISC-licensed.

Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
</content>
</entry>
</feed>
