CR-2026-05-19: Public GitHub Repo for Don Quijote Edición Analítica
Change Summary
| Field | Value |
|---|---|
CR ID |
CR-2026-05-19-quijote-public-repo |
Author |
Evan Rosado |
Risk Level |
Low |
Approval |
Self-approval |
Target Date |
2026-05-19 |
Systems Affected |
GitHub (new public repo), local workstation |
Rollback Window |
Immediate — |
Description
What
Create a public GitHub repository (quijote-edicion-analitica) containing rendered HTML editions of the Don Quijote analytical study. Enable GitHub Pages for browser access. Scaffold an automation script for future chapter publishing.
Why
Share the edición analítica (Caps 033–035) with Spanish tutors and study partners via a simple URL. The source partials remain private in domus-captures; only built HTML output is published.
Impact
-
No production systems affected
-
No secrets or sensitive data exposed — HTML output only
-
Public visibility: anyone with the URL can read the literary analysis
-
No impact on existing Antora site or domus-captures repo
Pre-Change State
gh repo view evanusmodestus/quijote-edicion-analitica 2>&1 || echo "Repo does not exist — safe to create"
ls -la data/d000/education/quijote-study/edicion/p1-cap-{033,034,035}/output/*.html
Change Procedure
Phase 1: Build HTML Output
~/atelier/_bibliotheca/domus-asciidoc-build/bin/build-adoc.sh data/d000/education/quijote-study/edicion/p1-cap-033/p1-cap-033-edicion.adoc html --variant catppuccin
~/atelier/_bibliotheca/domus-asciidoc-build/bin/build-adoc.sh data/d000/education/quijote-study/edicion/p1-cap-034/p1-cap-034-edicion.adoc html --variant catppuccin
~/atelier/_bibliotheca/domus-asciidoc-build/bin/build-adoc.sh data/d000/education/quijote-study/edicion/p1-cap-035/p1-cap-035-edicion.adoc html --variant catppuccin
Phase 2: Create Repo and Copy Output
cat > /tmp/quijote-publish.sh << 'SCRIPT'
#!/usr/bin/env bash
set -euo pipefail
# ── Configuration ────────────────────────────────────────────
REPO_NAME="quijote-edicion-analitica"
REPO_DIR="$HOME/atelier/_bibliotheca/${REPO_NAME}"
SRC_BASE="$HOME/atelier/_bibliotheca/domus-captures/data/d000/education/quijote-study/edicion"
BUILD="$HOME/atelier/_bibliotheca/domus-asciidoc-build/bin/build-adoc.sh"
CHAPTERS=(p1-cap-033 p1-cap-034 p1-cap-035)
# ── Phase 1: Build all chapters ─────────────────────────────
echo "═══ Phase 1: Building HTML ═══"
for ch in "${CHAPTERS[@]}"; do
echo "Building ${ch}..."
"${BUILD}" "${SRC_BASE}/${ch}/${ch}-edicion.adoc" html --variant catppuccin
done
# ── Phase 2: Create repo directory ───────────────────────────
echo "═══ Phase 2: Scaffolding repo ═══"
mkdir -p "${REPO_DIR}"
cd "${REPO_DIR}"
git init
# ── Phase 3: Copy HTML output ────────────────────────────────
echo "═══ Phase 3: Copying HTML ═══"
for ch in "${CHAPTERS[@]}"; do
cp "${SRC_BASE}/${ch}/output/${ch}-edicion.html" "${REPO_DIR}/${ch}.html"
echo " ✓ ${ch}.html"
done
# ── Phase 4: Create landing page ─────────────────────────────
echo "═══ Phase 4: Creating index.html ═══"
cat > "${REPO_DIR}/index.html" << 'HTMLEOF'
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Don Quijote — Edición Analítica</title>
<style>
:root {
--base: #1e1e2e; --surface0: #313244; --text: #cdd6f4;
--subtext: #a6adc8; --mauve: #cba6f7; --blue: #89b4fa;
--green: #a6e3a1; --peach: #fab387;
}
body {
font-family: 'Georgia', serif;
background: var(--base); color: var(--text);
max-width: 700px; margin: 4rem auto; padding: 0 2rem;
line-height: 1.8;
}
h1 { color: var(--mauve); font-size: 2rem; margin-bottom: 0.5rem; }
h2 { color: var(--peach); font-size: 1.1rem; font-weight: normal; margin-top: 0; }
.chapter-list { list-style: none; padding: 0; margin: 2rem 0; }
.chapter-list li {
background: var(--surface0); border-radius: 8px;
margin: 0.8rem 0; padding: 1rem 1.5rem;
}
.chapter-list a {
color: var(--blue); text-decoration: none; font-size: 1.1rem;
}
.chapter-list a:hover { color: var(--green); }
.chapter-list .desc { color: var(--subtext); font-size: 0.9rem; margin-top: 0.3rem; }
footer { color: var(--subtext); font-size: 0.85rem; margin-top: 3rem; border-top: 1px solid var(--surface0); padding-top: 1rem; }
</style>
</head>
<body>
<h1>Don Quijote de la Mancha</h1>
<h2>Edición Analítica — Primera Parte</h2>
<p>Análisis retórico, gramatical y literario párrafo por párrafo.</p>
<ul class="chapter-list">
<li>
<a href="p1-cap-033.html">Capítulo XXXIII</a>
<div class="desc">Novela del Curioso Impertinente — Apertura: amistad, quilatar, crisol, Génesis</div>
</li>
<li>
<a href="p1-cap-034.html">Capítulo XXXIV</a>
<div class="desc">Curioso Impertinente (cont.) — Diamante, arminio, Camila habla, cadena de chantajes</div>
</li>
<li>
<a href="p1-cap-035.html">Capítulo XXXV</a>
<div class="desc">Fin del Curioso — Colisión, anti-retrato, vino/sangre, tres muertes, veredicto del cura</div>
</li>
</ul>
<footer>
Cada capítulo contiene el texto original de Cervantes con anotaciones de gramática
(<code>[NOTE]</code>), análisis retórico y literario (<code>[sidebar]</code>),
y hallazgos principales (<code>[IMPORTANT]</code>).
</footer>
</body>
</html>
HTMLEOF
# ── Phase 5: Create GitHub repo and push ─────────────────────
echo "═══ Phase 5: Creating GitHub repo ═══"
git add -A
git commit -m "docs: initial edición analítica — Caps XXXIII, XXXIV, XXXV"
gh repo create "${REPO_NAME}" --public --source=. --push
# ── Phase 6: Enable GitHub Pages ─────────────────────────────
echo "═══ Phase 6: Enabling GitHub Pages ═══"
sleep 3 # Wait for repo to be fully available
gh api "repos/evanusmodestus/${REPO_NAME}/pages" \
-X POST \
-f "source[branch]=master" \
-f "source[path]=/" \
--silent && echo " ✓ Pages enabled" || echo " ⚠ Pages may need manual enable in Settings"
echo ""
echo "═══ DONE ═══"
echo "Repo: https://github.com/evanusmodestus/${REPO_NAME}"
echo "Pages: https://evanusmodestus.github.io/${REPO_NAME}/"
SCRIPT
chmod +x /tmp/quijote-publish.sh
echo "Script written to /tmp/quijote-publish.sh"
/tmp/quijote-publish.sh
Phase 3: Verification
gh repo view evanusmodestus/quijote-edicion-analitica --json name,url,homepageUrl
gh api "repos/evanusmodestus/quijote-edicion-analitica/pages" --jq '.html_url'
for ch in p1-cap-033 p1-cap-034 p1-cap-035; do
curl -sL -o /dev/null -w "%{http_code} ${ch}\n" \
"https://evanusmodestus.github.io/quijote-edicion-analitica/${ch}.html"
done
200 p1-cap-033 200 p1-cap-034 200 p1-cap-035
Rollback Procedure
gh repo delete evanusmodestus/quijote-edicion-analitica --yes
rm -rf ~/atelier/_bibliotheca/quijote-edicion-analitica
Post-Change Validation
-
All three chapter URLs return 200
-
index.htmllanding page renders with chapter links -
HTML renders correctly with Catppuccin theme and TOC
-
No source
.adocfiles or partials exposed — HTML only -
No sensitive data (work, d001, encrypted files) in the public repo
-
Share URL with Spanish tutor and confirm access
Adding Future Chapters
When a new chapter edition is complete:
# Build the new chapter
~/atelier/_bibliotheca/domus-asciidoc-build/bin/build-adoc.sh \
data/d000/education/quijote-study/edicion/p1-cap-NNN/p1-cap-NNN-edicion.adoc \
html --variant catppuccin
# Copy to public repo
cp data/d000/education/quijote-study/edicion/p1-cap-NNN/output/p1-cap-NNN-edicion.html \
~/atelier/_bibliotheca/quijote-edicion-analitica/p1-cap-NNN.html
# Update index.html with new chapter entry, then push
cd ~/atelier/_bibliotheca/quijote-edicion-analitica
git add -A && git commit -m "docs: add Cap NNN" && git push
Adding Reference Pages
In addition to chapter editions, the public repo will include organized reference material extracted from the analytical annotations.
Planned Reference Pages
| Page | Content | Source in domus-captures |
|---|---|---|
|
Léxico cervantino — 12 semantic categories (social, popular, autoengaño, honra, retórico, caballeresco, metaliterario, metalúrgico, sonoro, súplica, marcial, vivo). Each entry with definition, original context, and modern equivalent. |
|
|
Aristotelian rhetoric applied to Cervantes — logos (analogía, silogismo, entimema), ethos (authority, credibility), pathos (emotional manipulation). Concrete examples from each chapter. |
|
|
Grammar, syntax, and morphology — subjunctive patterns (pluscuamperfecto, imperfecto, optativo), archaic verb forms (-alle, -elle, -ille), gerund constructions, enumerations (asíndeton, polisíndeton), archaisms (tamaña, fasta, fermosa). Organized by grammatical category with Cervantes examples. |
|
|
Semantic fields and literary devices — metaphor chains (crisol→diamante→arminio), irony (dramatic, situational, verbal), personification, lítotes, hipérbole, antonomasia, alegoría. Each device with definition, cervantine example, and analysis. |
|
Directory Structure in domus-captures
data/d000/education/quijote-study/
├── edicion/ # Chapter editions (existing)
│ ├── p1-cap-033/
│ ├── p1-cap-034/
│ └── p1-cap-035/
└── referencia/ # Reference pages (new)
├── vocabulario.adoc # Assembler
├── retorica.adoc
├── gramatica.adoc
├── semantica.adoc
└── partials/
├── vocabulario/ # One partial per semantic category
│ ├── social.adoc
│ ├── popular.adoc
│ ├── honra.adoc
│ └── ...
├── retorica/ # One partial per rhetorical mode
│ ├── logos.adoc
│ ├── ethos.adoc
│ └── pathos.adoc
├── gramatica/ # One partial per grammatical category
│ ├── subjuntivo.adoc
│ ├── arcaismos.adoc
│ ├── enumeracion.adoc
│ └── formas-verbales.adoc
└── semantica/ # One partial per device type
├── metafora.adoc
├── ironia.adoc
├── personificacion.adoc
└── litotes.adoc
Scaffold Reference Directory
cat > /tmp/quijote-referencia-scaffold.sh << 'SCRIPT'
#!/usr/bin/env bash
set -euo pipefail
BASE="$HOME/atelier/_bibliotheca/domus-captures/data/d000/education/quijote-study/referencia"
echo "═══ Scaffolding reference pages ═══"
# Create directory structure
mkdir -p "${BASE}/partials/vocabulario"
mkdir -p "${BASE}/partials/retorica"
mkdir -p "${BASE}/partials/gramatica"
mkdir -p "${BASE}/partials/semantica"
mkdir -p "${BASE}/output"
# ── Vocabulario partials ─────────────────────────────────────
for cat in social popular autoengano honra retorico caballeresco metaliterario metalurgico sonoro suplica marcial vivo; do
f="${BASE}/partials/vocabulario/${cat}.adoc"
[[ -f "$f" ]] && continue
cat > "$f" << EOF
== ${cat^} — Categoría Léxica
[cols="2,3,3"]
|===
| Palabra | Definición | Contexto cervantino
| _pendiente_
| —
| —
|===
EOF
echo " ✓ vocabulario/${cat}.adoc"
done
# ── Retórica partials ────────────────────────────────────────
for mode in logos ethos pathos; do
f="${BASE}/partials/retorica/${mode}.adoc"
[[ -f "$f" ]] && continue
cat > "$f" << EOF
== ${mode^} — Modo Retórico
=== Definición
_Pendiente._
=== Ejemplos en el Quijote
[cols="1,2,3"]
|===
| Capítulo | Pasaje | Análisis
| —
| —
| —
|===
EOF
echo " ✓ retorica/${mode}.adoc"
done
# ── Gramática partials ───────────────────────────────────────
for topic in subjuntivo arcaismos enumeracion formas-verbales gerundio participio pronombres-encliticos; do
f="${BASE}/partials/gramatica/${topic}.adoc"
[[ -f "$f" ]] && continue
cat > "$f" << EOF
== ${topic} — Gramática
=== Patrón
_Pendiente._
=== Ejemplos en el Quijote
[cols="1,2,3"]
|===
| Capítulo | Forma | Análisis
| —
| —
| —
|===
EOF
echo " ✓ gramatica/${topic}.adoc"
done
# ── Semántica partials ───────────────────────────────────────
for device in metafora ironia personificacion litotes hiperbole antonomasia alegoria; do
f="${BASE}/partials/semantica/${device}.adoc"
[[ -f "$f" ]] && continue
cat > "$f" << EOF
== ${device^} — Recurso Literario
=== Definición
_Pendiente._
=== Ejemplos en el Quijote
[cols="1,2,3"]
|===
| Capítulo | Pasaje | Análisis
| —
| —
| —
|===
EOF
echo " ✓ semantica/${device}.adoc"
done
# ── Assembler files ──────────────────────────────────────────
for page in vocabulario retorica gramatica semantica; do
f="${BASE}/${page}.adoc"
[[ -f "$f" ]] && continue
cat > "$f" << EOF
= ${page^} — Referencia
:description: ${page^} del Quijote — referencia analítica
:icons: font
:toc: left
:toclevels: 3
:project-partials: partials/${page}
EOF
# Add includes for each partial in the category
for p in "${BASE}/partials/${page}"/*.adoc; do
name=$(basename "$p")
echo "include::{project-partials}/${name}[]" >> "$f"
echo "" >> "$f"
done
echo " ✓ ${page}.adoc (assembler)"
done
echo ""
echo "═══ DONE ═══"
echo "Directory: ${BASE}"
echo ""
echo "Next: fill in the partials, then build:"
echo " ~/atelier/_bibliotheca/domus-asciidoc-build/bin/build-adoc.sh ${BASE}/vocabulario.adoc html --variant catppuccin"
SCRIPT
chmod +x /tmp/quijote-referencia-scaffold.sh
echo "Script written to /tmp/quijote-referencia-scaffold.sh"
/tmp/quijote-referencia-scaffold.sh
Build and Publish All Reference Pages
cat > /tmp/quijote-publish-referencia.sh << 'SCRIPT'
#!/usr/bin/env bash
set -euo pipefail
SRC="$HOME/atelier/_bibliotheca/domus-captures/data/d000/education/quijote-study/referencia"
BUILD="$HOME/atelier/_bibliotheca/domus-asciidoc-build/bin/build-adoc.sh"
DEST="$HOME/atelier/_bibliotheca/quijote-edicion-analitica"
PAGES=(vocabulario retorica gramatica semantica)
echo "═══ Building reference pages ═══"
for page in "${PAGES[@]}"; do
echo "Building ${page}..."
"${BUILD}" "${SRC}/${page}.adoc" html --variant catppuccin
done
echo "═══ Copying to public repo ═══"
for page in "${PAGES[@]}"; do
cp "${SRC}/output/${page}.html" "${DEST}/${page}.html"
echo " ✓ ${page}.html"
done
echo "═══ Pushing ═══"
cd "${DEST}"
git add -A
git commit -m "docs: add reference pages — vocabulario, retórica, gramática, semántica"
git push
echo ""
echo "═══ Verifying ═══"
sleep 5
for page in index p1-cap-033 p1-cap-034 p1-cap-035 vocabulario retorica gramatica semantica; do
curl -sL -o /dev/null -w "%{http_code} ${page}\n" \
"https://evanusmodestus.github.io/quijote-edicion-analitica/${page}.html"
done
SCRIPT
chmod +x /tmp/quijote-publish-referencia.sh
echo "Script written to /tmp/quijote-publish-referencia.sh"
/tmp/quijote-publish-referencia.sh
Build and Publish Individual Reference Pages
Same workflow as chapters:
~/atelier/_bibliotheca/domus-asciidoc-build/bin/build-adoc.sh \
data/d000/education/quijote-study/referencia/vocabulario.adoc \
html --variant catppuccin
cp data/d000/education/quijote-study/referencia/output/vocabulario.html \
~/atelier/_bibliotheca/quijote-edicion-analitica/vocabulario.html
cd ~/atelier/_bibliotheca/quijote-edicion-analitica
git add -A && git commit -m "docs: add vocabulario reference" && git push
Updated Public Repo Structure
quijote-edicion-analitica/
├── index.html # Landing page — chapters + reference links
├── p1-cap-033.html # Chapter editions
├── p1-cap-034.html
├── p1-cap-035.html
├── vocabulario.html # Léxico cervantino — 12 categories
├── retorica.html # Logos, ethos, pathos with examples
├── gramatica.html # Syntax, morphology, verb forms, archaisms
└── semantica.html # Metaphor chains, irony, literary devices
Quick Reference — URLs and Verification
Live URLs
https://evanusmodestus.github.io/quijote-edicion-analitica/
https://evanusmodestus.github.io/quijote-edicion-analitica/p1-cap-033.html
https://evanusmodestus.github.io/quijote-edicion-analitica/p1-cap-034.html
https://evanusmodestus.github.io/quijote-edicion-analitica/p1-cap-035.html
https://evanusmodestus.github.io/quijote-edicion-analitica/vocabulario.html
https://evanusmodestus.github.io/quijote-edicion-analitica/retorica.html
https://evanusmodestus.github.io/quijote-edicion-analitica/gramatica.html
https://evanusmodestus.github.io/quijote-edicion-analitica/semantica.html
Verify all pages are live
for page in index p1-cap-033 p1-cap-034 p1-cap-035 vocabulario retorica gramatica semantica; do
curl -sL -o /dev/null -w "%{http_code} ${page}\n" \
"https://evanusmodestus.github.io/quijote-edicion-analitica/${page}.html"
done
200 index 200 p1-cap-033 200 p1-cap-034 200 p1-cap-035 200 vocabulario 200 retorica 200 gramatica 200 semantica
GitHub repo
https://github.com/EvanusModestus/quijote-edicion-analitica
Lessons Learned
-
gh repo create --pushdefaults tomasteron freshgit initrepos, notmain. GitHub Pages API call must match the actual branch name. -
The heredoc-to-
/tmppattern works well for runnable CR scripts — single copy-paste to execute. -
GitHub Pages first build takes 1-2 minutes; subsequent pushes deploy faster.
Metadata
| Field | Value |
|---|---|
CR ID |
CR-2026-05-19-quijote-public-repo |
Author |
Evan Rosado |
Created |
2026-05-19 |
Executed |
2026-05-19 |
Status |
✅ Complete |
Approver |
Self-approved |
Live URL |