PRJ-BIBLIOTHECA — Domus Library System
Project Summary
| Field | Value |
|---|---|
PRJ ID |
PRJ-BIBLIOTHECA |
Owner |
Evan Rosado |
Priority |
P1 (High) |
Status |
Active — Phase 1 |
Parent Directory |
|
GitHub Org |
|
Category |
Education |
Architecture |
Multi-spoke: one Antora component per study domain, hub-aggregated |
Originating RCA |
Spoke Registry
| Spoke | Domain | Component | Status |
|---|---|---|---|
|
Bible study — RV1909, KJV, Tanakh (~6,800 pages) |
|
Phase 1 — scaffolding |
|
Literary classics — Don Quijote, Garcia Marquez, DISCO Sonnets |
|
Planned |
|
Technical books — Python, Bash, networking, security |
|
Planned |
|
Language study — Spanish, Hebrew, linguistic analysis |
|
Planned |
|
Tool mastery — Neovim, tmux, CLI deep-dives (study notes, not command reference) |
|
Planned |
Purpose
PRJ-BIBLIOTHECA is the governance project for the Domus Digitalis library system — a multi-spoke Antora architecture for structured study across scripture, literature, technical books, languages, and tool mastery.
Each study domain gets its own spoke repository and Antora component. This prevents any single domain from hitting the build limits that triggered this project (Antora hangs at ~5,000 pages; Cloudflare enforces 20-minute build timeout). Each spoke builds independently, deploys independently, and scales independently.
The distinction from the codex (domus-captures) is purpose:
| System | Purpose | Example |
|---|---|---|
Codex |
Command reference — copy-paste patterns |
|
Bibliotheca |
Study notes — structured learning from books and texts |
Chapter 3 summary, vocabulary, exercises, reflections |
The codex answers "how do I use this tool." The bibliotheca answers "what did I learn from this book."
Scope
Phase 1: domus-scripture
-
La Reina Valera 1909 — 66 books, 1,189 chapters (Spanish, public domain)
-
King James Version — 66 books, 1,189 chapters (English, public domain)
-
Tanakh (WLC) — 39 books, 929 chapters (Hebrew with nikkud, public domain)
-
Per-chapter study scaffolds (capitulo-*.adoc) with xref to texto pages
-
Per-chapter full text pages (texto/*.adoc) split from Principia source
-
Per-book index pages with dual-track xref tables (Notes + Full Text)
-
Full chapter-level nav via partials (scripture-rv1909/kjv/tanakh.adoc)
-
Tracker partials for reading progress
-
Generation script for reproducible page creation from Principia sources
Phase 2: domus-classics
-
Don Quijote de la Mancha — 126 chapters, dual-track (study + texto)
-
Garcia Marquez — study pages
-
DISCO Sonnets — 10,288 Spanish sonnets (15th-20th century)
Phase 3: domus-technical
-
Python book study (chapters, exercises, patterns)
-
Bash/shell scripting (RHCSA study, exercises)
-
Networking (CCNP study material, lab notes)
-
Security tools and methodologies
Phase 4: domus-lingua
-
Spanish language study and grammar
-
Hebrew study and translation exercises
-
Linguistic analysis and comparative notes
Phase 5: domus-tools
-
Neovim mastery (beyond codex — book-style study)
-
tmux deep-dive study notes
-
Other tool study guides
Out of Scope
-
Principia PKMS content (terminal-reading text stays in Principia)
-
Codex entries (stay in domus-captures — command reference, not book study)
-
Hub configuration (managed by domus-docs)
-
Cloudflare Pages project setup (manual step per spoke)
Architecture
Multi-Spoke Design
domus-docs (hub)
├── antora-playbook.yml # aggregates all spokes
├── domus-captures # codex, worklogs, projects
├── domus-scripture # Phase 1: Bible study
├── domus-classics # Phase 2: literary classics
├── domus-technical # Phase 3: technical books
├── domus-lingua # Phase 4: language study
├── domus-tools # Phase 5: tool mastery
└── (existing spokes: infra-ops, ise-linux, netapi, secrets-ops, antora-ui)
Each spoke is:
-
Its own git repository
-
Its own Antora component (unique
name:in antora.yml) -
Its own Cloudflare Pages build (or aggregated via hub)
-
Independently scalable — adding 10,000 sonnets doesn’t slow scripture
Repository Template (per spoke)
domus-<domain>/
├── docs/asciidoc/
│ ├── antora.yml # component: <domain>
│ ├── antora-playbook.yml # standalone build (local testing)
│ └── modules/ROOT/
│ ├── nav.adoc # includes nav partials
│ ├── pages/
│ │ ├── index.adoc
│ │ └── <corpus>/ # one directory per work/book
│ │ ├── index.adoc
│ │ └── <chapters>/
│ ├── partials/
│ │ ├── trackers/
│ │ └── nav/
│ └── examples/
├── scripts/
│ └── generate-study.py
├── Makefile
├── package.json
├── .gitignore
└── README.adoc
Dual-Track Study Pattern
Each corpus mirrors the Don Quijote pattern from domus-captures:
| Track | Purpose |
|---|---|
|
Study notes — summary, themes, vocabulary, parallel reading, reflections |
|
Source text — verse/paragraph per line with superscript numbers |
|
Dual xref table linking to both tracks for every chapter |
Nav partials |
Full chapter-level sidebar navigation |
Study pages link to corresponding text pages via TIP block:
TIP: xref:reina-valera/antiguo-testamento/genesis/texto/texto-001.adoc[Read Chapter 1]
Cross-Component References
From domus-captures or any other spoke:
xref:scripture::reina-valera/index.adoc[La Reina Valera]
xref:classics::quijote/index.adoc[Don Quijote]
xref:technical::python/index.adoc[Python Study]
xref:lingua::spanish/index.adoc[Spanish Language]
xref:tools::neovim/index.adoc[Neovim Mastery]
Hub Registration (per spoke)
# domus-docs/antora-playbook.yml — add one entry per spoke
- url: https://github.com/EvanusModestus/domus-scripture
branches: main
start_path: docs/asciidoc
edit_url: false
Generation Scripts
Two scripts handle the full spoke lifecycle:
| Script | Purpose |
|---|---|
|
Creates GitHub repo, scaffolds Antora structure, installs dependencies, verifies build, commits, pushes. One command per spoke — infrastructure only, no content. |
|
Reads Principia .adoc sources, splits by chapter headings, generates all content into a spoke.
Copied into spoke as |
# Scaffold (run once)
./scripts/bibliotheca/scaffold-spoke.sh scripture "Scripture Study" "Bible study — RV1909, KJV, Tanakh"
# Generate (run from spoke — idempotent, safe to rerun)
cd ~/atelier/_bibliotheca/domus-scripture
python3 scripts/generate-study.py --corpus all # generate ~6,800 files
python3 scripts/generate-study.py --corpus rv1909 # single corpus
python3 scripts/generate-study.py --corpus all --dry-run # preview without writing
The generation script produces: texto pages, study scaffolds, book indexes, division indexes, corpus hubs, spoke hub (pages/index.adoc), nav partials, and root nav.adoc.
All xrefs are component-relative.
Source and output validation run automatically (pre- and post-generation).
Execution Plan
Phase 1: domus-scripture
Two scripts handle the full pipeline.
Both live in domus-captures/scripts/bibliotheca/.
Set once per session — all steps below reference this variable:
SPOKE=~/atelier/_bibliotheca/domus-scripture
1a. Scaffold the Spoke
scaffold-spoke.sh creates the GitHub repo, clones, generates all config files, installs npm, commits, verifies build, and pushes.
Uses --resume if repo/directory already exist from a partial run.
# From domus-captures (where scripts live)
# Fresh run:
./scripts/bibliotheca/scaffold-spoke.sh scripture "Scripture Study" \
"Bible study — RV1909, KJV, Tanakh" 2>&1 | tee /tmp/scaffold-spoke.log
# Resume after partial failure (skips repo creation and clone):
./scripts/bibliotheca/scaffold-spoke.sh --resume scripture "Scripture Study" \
"Bible study — RV1909, KJV, Tanakh" 2>&1 | tee /tmp/scaffold-spoke.log
Output: empty spoke at ~/atelier/_bibliotheca/domus-scripture with clean build, pushed to origin.
1b. Generate Content
generate-scripture.py reads Principia source .adoc files, splits by chapter headings, and generates all content: texto pages, study scaffolds, book indexes, division indexes, corpus hubs, nav partials, spoke hub, and root nav.adoc.
All xrefs are component-relative (no education/literature/ prefix).
# Copy script into spoke and generate — no cd required
cp scripts/bibliotheca/generate-scripture.py "${SPOKE}/scripts/generate-study.py"
# Dry-run: preview file counts without writing
python3 "${SPOKE}/scripts/generate-study.py" --corpus all --dry-run 2>&1 | tee /tmp/generate-scripture-dry.log
# Generate all three corpora (~6,800 files)
python3 "${SPOKE}/scripts/generate-study.py" --corpus all 2>&1 | tee /tmp/generate-scripture.log
Flags:
| Flag | Purpose |
|---|---|
|
Select corpus (default: all) |
|
Override modules/ROOT target (default: domus-scripture spoke) |
|
Override Principia assets root |
|
Show file counts and structure without writing |
1c. Build and Validate
make -C "${SPOKE}" 2>&1 | tee /tmp/domus-scripture-build.log
# MUST show: zero errors, zero warnings
1d. Commit and Push (domus-scripture)
git -C "${SPOKE}" add -A
git -C "${SPOKE}" commit -m "$(cat <<'EOF'
feat: generate scripture content — RV1909, KJV, Tanakh (~6,800 pages)
PRJ-BIBLIOTHECA Phase 1b
Three corpora: La Reina Valera 1909, King James Version, Tanakh (WLC)
Dual-track: study scaffolds + full text per chapter
EOF
)"
git -C "${SPOKE}" push origin main
1e. Register in Hub (domus-docs)
HUB=~/atelier/_bibliotheca/domus-docs/antora-playbook.yml
sed -i '/domus-captures$/,/edit_url: false/ {
/edit_url: false/a\
\
# Scripture Study (PRJ-BIBLIOTHECA)\
- url: https://github.com/EvanusModestus/domus-scripture\
branches: main\
start_path: docs\
edit_url: false
}' "${HUB}"
Verify placement:
awk '/domus-captures/,/domus-scripture.*edit_url/' "${HUB}"
Commit and push the hub:
git -C ~/atelier/_bibliotheca/domus-docs add antora-playbook.yml
git -C ~/atelier/_bibliotheca/domus-docs commit -m "$(cat <<'EOF'
feat: register domus-scripture spoke in hub playbook
PRJ-BIBLIOTHECA Phase 1e
Component: scripture, start_path: docs
EOF
)"
git -C ~/atelier/_bibliotheca/domus-docs push origin main
1f. Copy Tracker Partials (domus-captures → domus-scripture)
Both trackers are xref-free — safe to copy without adaptation.
cp ~/atelier/_bibliotheca/domus-captures/docs/modules/ROOT/partials/trackers/education/la-reina-valera.adoc \
"${SPOKE}/docs/modules/ROOT/partials/trackers/"
cp ~/atelier/_bibliotheca/domus-captures/docs/modules/ROOT/partials/trackers/education/tanakh.adoc \
"${SPOKE}/docs/modules/ROOT/partials/trackers/"
1g. Validate Spoke (domus-scripture)
# Verify trackers copied
ls "${SPOKE}/docs/modules/ROOT/partials/trackers/"
# Verify file counts match generation output
find "${SPOKE}/docs/modules/ROOT/pages" -name "*.adoc" -type f | wc -l
# Expected: ~6,796 pages
# Verify nav partials
find "${SPOKE}/docs/modules/ROOT/partials/nav" -name "*.adoc" -type f
# Expected: scripture-rv1909.adoc, scripture-kjv.adoc, scripture-tanakh.adoc
# Spot-check: Genesis 1 study page has TIP xref to texto
awk '/^TIP:/' "${SPOKE}/docs/modules/ROOT/pages/reina-valera/antiguo-testamento/genesis/capitulo-001.adoc"
1h. Verify No Cleanup Needed (domus-captures)
Codex scripture pages (pages/codex/scripture/) are CLI reference (terminal reading commands) — these stay in domus-captures.
All existing xrefs either point to local codex pages or already use cross-component scripture:: syntax.
# Confirm: all scripture xrefs are either local codex or cross-component
rg 'xref:.*scripture' ~/atelier/_bibliotheca/domus-captures/docs/modules/ROOT --glob '*.adoc'
Expected output — no captures-internal xrefs to study content:
-
xref:codex/scripture/…— local codex pages (stay) -
xref:scripture::…— cross-component to spoke (already correct)
1i. Fix Standalone UI Bundle (domus-scripture)
The scaffold generates antora-playbook.yml with the default Antora UI.
Update to the Domus Catppuccin UI bundle for local builds:
sed -i 's|url: https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/HEAD/raw/build/ui-bundle.zip?job=bundle-stable|url: /home/evanusmodestus/atelier/_bibliotheca/domus-antora-ui/build/ui-bundle.zip|' \
"${SPOKE}/antora-playbook.yml"
Verify:
awk '/ui-bundle/' "${SPOKE}/antora-playbook.yml"
Also update scaffold-spoke.sh to use the custom UI by default for future spokes.
1j. Set Repo to Private
Scripture spokes contain study material — not public-facing. The scaffold script creates repos as private by default.
gh repo edit EvanusModestus/domus-scripture --visibility private --accept-visibility-change-consequences
1k. Grant Cloudflare Access (per new spoke)
Cloudflare Pages needs permission to clone each spoke repo (especially private ones). Without access, the hub build hangs then times out at ~20 minutes.
Grant access via GitHub:
GitHub → Settings → Integrations → Applications → Cloudflare Pages → Configure → Repository access
Add the new spoke repo (e.g., domus-scripture) to the allowed list.
1l. Disable Spoke in Hub (if Cloudflare build exceeds timeout)
Cloudflare Pages has a ~20 minute build limit. If the hub build times out after adding a spoke, comment it out until GitHub Actions deployment is configured.
HUB=~/atelier/_bibliotheca/domus-docs/antora-playbook.yml
# Comment out the scripture spoke block
sed -i '/Scripture Study/,/edit_url: false/ s/^/ # /' "${HUB}"
Verify:
awk '/Scripture/,/edit_url/' "${HUB}"
Add a note above the commented block:
sed -i '/# .*# Scripture Study/i\ # DISABLED: Cloudflare Pages build timeout (~20 min). Enable after GitHub Actions deploy configured.' "${HUB}"
Verify the full block:
awk '/DISABLED/,/edit_url/' "${HUB}"
Commit and push (domus-docs):
git -C ~/atelier/_bibliotheca/domus-docs add antora-playbook.yml
git -C ~/atelier/_bibliotheca/domus-docs commit -m "$(cat <<'EOF'
fix: disable scripture spoke — Cloudflare build timeout
Hub build exceeds Cloudflare Pages 20-min limit with scripture (~6,800 pages).
Local hub build: ~2 min. Cloudflare environment too slow.
Re-enable after GitHub Actions direct deploy is configured.
EOF
)"
git -C ~/atelier/_bibliotheca/domus-docs push origin main
Phase 2: domus-classics (when ready)
Repeat the spoke creation pattern:
-
gh repo create domus-classics --public -
Scaffold, configure, generate
-
Migrate Don Quijote from domus-captures
-
Generate DISCO Sonnets from Principia source
-
Build, validate, integrate
Phase 3-5: domus-technical, domus-lingua, domus-tools
Each follows the same spoke creation pattern. Create only when content is ready — no empty repos.
Verification Checklist (per spoke)
-
npx antorain spoke — zero errors, zero warnings -
makein domus-captures — zero errors after migration -
makein domus-docs — hub builds with new component -
Sample page renders correctly (Genesis 1 for scripture, Chapter 1 for classics)
-
Study pages link to text via TIP block
-
Nav sidebar shows chapter-level navigation
-
Cross-component xrefs resolve in hub build
Risks
| Risk | Mitigation |
|---|---|
Spoke build exceeds Cloudflare limit |
Each spoke builds only its own pages. Scripture ~6,800 should be under 20 min. Monitor build times. |
Nav partial xref paths wrong |
Generation script uses component-relative paths (no education/literature/ prefix) |
Too many spokes to manage |
Create spokes only when content exists. No empty repos. Hub playbook is the single source of truth. |
Cross-component xrefs break |
Validate in hub build. |
Build output missed |
Always |
Status
| Indicator | Detail |
|---|---|
Activity Level |
Active — Phase 1 (domus-scripture) in progress |
Maturity |
Pre-alpha — generation script tested, architecture validated |
Last Activity |
2026-04-11 |
Key Milestones |
|
Current Phase |
Phase 1: domus-scripture — scaffold spoke, then generate content |
Blockers |
Run |
Deployment Status |
Not deployed — pending Phase 1 completion |
Metadata
| Field | Value |
|---|---|
PRJ ID |
PRJ-BIBLIOTHECA |
Author |
Evan Rosado |
Date Created |
2026-04-11 |
Last Updated |
2026-04-11 |
Status |
Active — Phase 1 |
Category |
Education |
Originating RCA |
|
Next Review |
2026-04-18 |