<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lectio.git/.gitignore, branch perf/hoist-date-independent-work</title>
<subtitle>offline Catholic daily readings and liturgical calendar in Go, with CLI, TUI and web clients</subtitle>
<id>https://git.labunix.xyz/lectio.git/atom?h=perf%2Fhoist-date-independent-work</id>
<link rel='self' href='https://git.labunix.xyz/lectio.git/atom?h=perf%2Fhoist-date-independent-work'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/'/>
<updated>2026-08-03T21:30:12Z</updated>
<entry>
<title>baseline: track the gomobile engine facade as-is</title>
<updated>2026-08-03T21:30:12Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-03T21:30:12Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=d45d0b4e4534253d782cc6312d7edda43cca196d'/>
<id>urn:sha1:d45d0b4e4534253d782cc6312d7edda43cca196d</id>
<content type='text'>
mobile/mobile.go and its go.mod/go.sum additions were sitting untracked in
the working tree. Recorded here unchanged so the work that follows has a
diff baseline; no lines of it are modified by this commit.

Also ignore the cmd/dlectio-gen build product and the SDD scratch dir.
</content>
</entry>
<entry>
<title>sources: store the snapshot as one compressed archive</title>
<updated>2026-07-30T06:56:34Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-30T06:56:34Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=d7da4b09f7775276231d0241cfe2700d247728ee'/>
<id>urn:sha1:d7da4b09f7775276231d0241cfe2700d247728ee</id>
<content type='text'>
Replace the ~1600 raw per-provider files (24 MB) with a single solid
sources/snapshot.tar.gz (6 MB); manifest.tsv + README stay uncompressed
for browsing. The extracted per-provider dirs are now git-ignored;
snapshot-sources.sh gains pack/unpack, and the README documents the
unpack -&gt; refresh -&gt; pack cycle. Distribution-ready: one archive, not a
file tree.
</content>
</entry>
<entry>
<title>sources: archive upstream generator data for offline reproducibility</title>
<updated>2026-07-30T06:23:03Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-30T06:23:03Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=ff1071eedad3c6891192babe74ed65f5d4f60f29'/>
<id>urn:sha1:ff1071eedad3c6891192babe74ed65f5d4f60f29</id>
<content type='text'>
Snapshot the raw third-party responses the gen*/oracle scripts fetch, so
lectio's liturgical data can be regenerated and re-audited offline if the
sites change or vanish (the 25-year-longevity aim). Reading references are
facts, not creative works -- this is a provenance cache, not redistribution.

scripts/snapshot-sources.sh (idempotent, manifest.tsv with sha256) archives:
- catholic-resources.org: all 14 OF lectionary tables (browser UA; its WAF
  465s unusual agents)
- missalemeum en+pl, per-date 2026-2027 (1460 files, EF calendar/propers/pl
  names; widen MM_FROM/MM_TO for the full 2024-2029 harvest)
- litcal whole-year OF calendars 2024-2035
- get.bible Douay-Rheims deuterocanon (Tobit..2 Maccabees)
sources/README.md documents provenance, coverage, and the one gap:
calapi.inadiutorium.cz is IPv6-only/unreachable here (litcal covers OF).
</content>
</entry>
<entry>
<title>bible(wuj): rebuild from source, repair to exact Vulgate parity</title>
<updated>2026-07-29T09:12:24Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T09:12:24Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=390535ff00d61df63a15de6fba23761a2c57cead'/>
<id>urn:sha1:390535ff00d61df63a15de6fba23761a2c57cead</id>
<content type='text'>
The Wujek corpus was missing text and mis-numbering what it had: 453
corpus-check warnings, 8 absent chapters, 84 duplicate rows, and 357 chapters
holding fewer verses than the Vulgate.

Most of it was never a sourcing problem. The original harvest of
biblia.info.pl assumed one verse is one &lt;p&gt;, but many psalms print the
superscription in the anchored paragraph and the psalm's opening line in an
unanchored one behind a drop cap -- so 44 psalms lost their first line, and
Acts 6:5 and others went the same way. Re-harvested with the anchor treated as
a verse START rather than a whole verse (scripts/scrape-wujek.py), which also
had to cope with four anchor shapes across books, hidden page markers opening
paragraphs mid-verse, chapter ids that are simply wrong (Mark labels 87
anchors "15:*" across chapters 14-16), and Psalms heading its divisions
"Psalm CXVII" where every other book says "Rozdzial N".

Structure was then repaired against the Clementine Vulgate, by hand where a
rule would have guessed:

  * The Acts 5 interleaved three streams -- Acts 4:27-37 duplicated, the real
    5:1-37, and 5:38-39 mislabelled 28-29. Verified against the Latin, the
    duplicates dropped, the two renumbered. Acts 4:27 kept the site's own
    wording in place of a 1962 reading, removing a seam.
  * The site heads psalms by Hebrew division; its "Psalm 114" is two psalms.
    Split into Vulgate 113:9-26 and 114:1-9, confirmed at all four boundaries.
  * A corrupt anchor for 1 Chronicles 9:11 pushed 34 paragraphs of genealogy
    into chapter 10. Counts corroborate: 10 + 34 = 44 verses, remainder 14,
    both exactly the Vulgate's.
  * 16 chapters looked short at the end; only two verses were truly absent.
    The rest were merges, split at anchors read off the Latin -- including one
    across a chapter boundary (Colossians 4:1 sat inside 3:25) and four
    numbering offsets where a mid-chapter merge shifted everything after it.

wuj now carries exactly the Vulgate's verse set: 35810 rows, every one of the
1334 chapters matching, no duplicates, no gaps. corpus-check: 0 warnings.

The ~300 verses that could not come from biblia.info.pl are recorded in
NOTICE; they are not public domain.
</content>
</entry>
<entry>
<title>scripts: add validate-engine.py per-day oracles (litcal/missalemeum)</title>
<updated>2026-07-28T13:14:33Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T13:14:33Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=f7344bb3de2885323a785bdc8d087bc034407fc4'/>
<id>urn:sha1:f7344bb3de2885323a785bdc8d087bc034407fc4</id>
<content type='text'>
Manual QA validators (not run by go test) that build the CLI and compare its
computed calendar/readings day-by-day against authoritative online sources:
  of-calendar  -- OF season/cycle/observed vs the LiturgicalCalendar API (litcal)
  of-readings  -- every OF reading resolves against a corpus (offline)
  ef           -- EF reading gaps + tail/resumed-Sunday gospels vs missalemeum
  ranks        -- OF sanctoral ranks vs litcal

These found the defects fixed in the flawlessness pass; keep them as standing
regression oracles. API responses cache under scripts/.oracle-cache/ (ignored).
</content>
</entry>
<entry>
<title>chore: drop accidentally-committed __pycache__, ignore it</title>
<updated>2026-07-28T08:20:50Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T08:20:50Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=9af8c834c393050179f6ff48c0766e9871e18240'/>
<id>urn:sha1:9af8c834c393050179f6ff48c0766e9871e18240</id>
<content type='text'>
</content>
</entry>
<entry>
<title>docs: README; wire lectio-web into build; finalize</title>
<updated>2026-07-23T13:22:11Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-23T13:22:11Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=af09c347dad63be47ee6e067b41f074a1c61bda4'/>
<id>urn:sha1:af09c347dad63be47ee6e067b41f074a1c61bda4</id>
<content type='text'>
Add README.md documenting all three binaries (lectio, lectio-ui,
lectio-web), config keys, the 12 themes, display modes, offline/update
workflow, and both lectionaries, surveyed against the real source.

Wire the third binary into Makefile's build/install/uninstall/clean/cross
targets (LECTIO_WEB var, ./cmd/lectio-web) and add /lectio-web to
.gitignore, matching the existing lectio/lectio-ui style.
</content>
</entry>
<entry>
<title>scaffold: module, mains, Makefile, embedded corpora</title>
<updated>2026-07-23T10:34:57Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-23T10:34:57Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=76d88856aa4ef78342d4ffe6bb533c29fe342fc0'/>
<id>urn:sha1:76d88856aa4ef78342d4ffe6bb533c29fe342fc0</id>
<content type='text'>
</content>
</entry>
</feed>
