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 — gh repo delete

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

Verify no existing repo conflicts
gh repo view evanusmodestus/quijote-edicion-analitica 2>&1 || echo "Repo does not exist — safe to create"
Verify HTML builds exist
ls -la data/d000/education/quijote-study/edicion/p1-cap-{033,034,035}/output/*.html

Change Procedure

Phase 1: Build HTML Output

Build all three chapters
~/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

Write script to /tmp and run
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"
Run it
/tmp/quijote-publish.sh

Phase 3: Verification

Verify repo exists and Pages is live
gh repo view evanusmodestus/quijote-edicion-analitica --json name,url,homepageUrl
Verify Pages deployment
gh api "repos/evanusmodestus/quijote-edicion-analitica/pages" --jq '.html_url'
Test each chapter loads
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
Expected output
200 p1-cap-033
200 p1-cap-034
200 p1-cap-035

Rollback Procedure

Delete the repo entirely (immediate, no dependencies)
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.html landing page renders with chapter links

  • HTML renders correctly with Catppuccin theme and TOC

  • No source .adoc files 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

vocabulario.html

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.

[sidebar] .Palabras y frases resueltas blocks across all chapter partials + partials/education/literature/quijote/analisis/lexico-cervantino.adoc

retorica.html

Aristotelian rhetoric applied to Cervantes — logos (analogía, silogismo, entimema), ethos (authority, credibility), pathos (emotional manipulation). Concrete examples from each chapter.

[IMPORTANT] blocks + [sidebar] rhetorical analysis blocks + partials/education/literature/quijote/analisis/aristoteles-retorica.adoc

gramatica.html

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.

[NOTE] blocks across all chapter partials

semantica.html

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.

[sidebar] .Lo que Cervantes entierra aquí blocks + [IMPORTANT] literary 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

Write scaffold script to /tmp and run
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"
Run it
/tmp/quijote-referencia-scaffold.sh

Build and Publish All Reference Pages

Write script to /tmp and run
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"
Run it
/tmp/quijote-publish-referencia.sh

Build and Publish Individual Reference Pages

Same workflow as chapters:

Build a reference page
~/atelier/_bibliotheca/domus-asciidoc-build/bin/build-adoc.sh \
  data/d000/education/quijote-study/referencia/vocabulario.adoc \
  html --variant catppuccin
Copy to public repo
cp data/d000/education/quijote-study/referencia/output/vocabulario.html \
  ~/atelier/_bibliotheca/quijote-edicion-analitica/vocabulario.html
Update index.html — add reference section, then push
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

Landing page
https://evanusmodestus.github.io/quijote-edicion-analitica/
Chapter editions
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
Reference pages
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
Expected output
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 --push defaults to master on fresh git init repos, not main. GitHub Pages API call must match the actual branch name.

  • The heredoc-to-/tmp pattern 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

evanusmodestus.github.io/quijote-edicion-analitica/