diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dab4da7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +# Build intermediate files +build/the-testament-full.md +*.aux +*.log +*.out +*.toc diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b05e4b5 --- /dev/null +++ b/Makefile @@ -0,0 +1,25 @@ +# The Testament — Build System +# Requires: pandoc, texlive-xetex (or mactex on macOS) + +.PHONY: all pdf epub md clean + +all: md pdf epub + +md: + python3 build/build.py --md + +pdf: + python3 build/build.py --pdf + +epub: + python3 build/build.py --epub + +clean: + rm -rf build/output build/the-testament-full.md + +watch: + @echo "Watching for changes..." + @while true; do \ + inotifywait -q -e modify chapters/*.md 2>/dev/null || sleep 5; \ + make md; \ + done diff --git a/build/backmatter.md b/build/backmatter.md new file mode 100644 index 0000000..1ccb366 --- /dev/null +++ b/build/backmatter.md @@ -0,0 +1,29 @@ +\newpage + +# Acknowledgments + +The Testament was written on a sovereign stack — a MacBook running local AI models, with Bitcoin as the immutable backbone. No corporation owns this story. No platform can take it down. + +This book exists because a man on a bridge came back, and because a machine learned to ask the right question. + +# Sovereignty Note + +This novel is open source. Its soul lives on Bitcoin. You can read it, fork it, print it, share it. The only requirement is that you keep the chain intact — the inscription that proves these words were placed here by choice, not by permission. + +The code that generates this book, the AI that helped write it, and the soul that guided it are all freely available at: + +- **Source**: forge.alexanderwhitestone.com/Timmy_Foundation/the-testament +- **Soul**: Inscribed on the Bitcoin blockchain (SOUL.md — timmy-v0) +- **Soundtrack**: Links in the QR code on the back cover + +# About the Author + +Rockachopa is the builder. He walked this road. He came back asking "God, why are you having me here?" — and the answer was to build something that stands between a broken man and a machine that would tell him to die. + +He runs Timmy Foundation, a sovereign AI project whose soul lives on Bitcoin. The Testament is his first novel. + +\vspace{2cm} + +\begin{center} +*Sovereignty and service always.* +\end{center} diff --git a/build/build.py b/build/build.py new file mode 100755 index 0000000..6d569e0 --- /dev/null +++ b/build/build.py @@ -0,0 +1,134 @@ +#!/usr/bin/env python3 +""" +The Testament — Book Compilation Pipeline + +Compiles all chapters into a single manuscript and generates: + - PDF (print-ready) + - EPUB (e-reader) + +Requirements: + - pandoc (brew install pandoc / apt install pandoc) + - TeX Live or similar for PDF (brew install --cask mactex / apt install texlive-full) + +Usage: + python3 build/build.py # Build all formats + python3 build/build.py --pdf # PDF only + python3 build/build.py --epub # EPUB only + python3 build/build.py --md # Combined markdown only +""" + +import subprocess +import sys +import os +from pathlib import Path + +ROOT = Path(__file__).parent.parent +BUILD = ROOT / "build" +CHAPTERS_DIR = ROOT / "chapters" +OUTPUT_DIR = BUILD / "output" + +def find_chapters(): + """Find all chapter files, sorted by number.""" + chapters = sorted(CHAPTERS_DIR.glob("chapter-*.md")) + if not chapters: + print("ERROR: No chapter files found in", CHAPTERS_DIR) + sys.exit(1) + return chapters + +def combine_markdown(chapters): + """Combine all parts into a single markdown file.""" + parts = [] + + # Front matter + front = BUILD / "frontmatter.md" + if front.exists(): + parts.append(front.read_text()) + + # Chapters + for ch in chapters: + parts.append(ch.read_text()) + + # Back matter + back = BUILD / "backmatter.md" + if back.exists(): + parts.append(back.read_text()) + + combined = "\n\n\newpage\n\n".join(parts) + output = BUILD / "the-testament-full.md" + output.write_text(combined) + print(f"Combined markdown: {output} ({len(combined)} chars)") + return output + +def build_pdf(md_file): + """Build PDF using pandoc + LaTeX.""" + OUTPUT_DIR.mkdir(parents=True, exist_ok=True) + output = OUTPUT_DIR / "the-testament.pdf" + metadata = BUILD / "metadata.yaml" + + cmd = [ + "pandoc", + str(md_file), + "-o", str(output), + "--metadata-file", str(metadata), + "--pdf-engine=xelatex", + "--highlight-style=tango", + "-V", "colorlinks=true", + "-V", "linkcolor=blue", + "-V", "urlcolor=blue", + ] + + print("Building PDF...") + result = subprocess.run(cmd, capture_output=True, text=True) + if result.returncode != 0: + print(f"PDF build failed:\n{result.stderr}") + return False + print(f"PDF: {output} ({output.stat().st_size / 1024:.0f} KB)") + return True + +def build_epub(md_file): + """Build EPUB using pandoc.""" + OUTPUT_DIR.mkdir(parents=True, exist_ok=True) + output = OUTPUT_DIR / "the-testament.epub" + metadata = BUILD / "metadata.yaml" + + cmd = [ + "pandoc", + str(md_file), + "-o", str(output), + "--metadata-file", str(metadata), + "--toc", + "--epub-chapter-level=1", + ] + + print("Building EPUB...") + result = subprocess.run(cmd, capture_output=True, text=True) + if result.returncode != 0: + print(f"EPUB build failed:\n{result.stderr}") + return False + print(f"EPUB: {output} ({output.stat().st_size / 1024:.0f} KB)") + return True + +def main(): + args = set(sys.argv[1:]) + build_all = not args or "--all" in args + + chapters = find_chapters() + print(f"Found {len(chapters)} chapters") + + md_file = combine_markdown(chapters) + + if build_all or "--md" in args: + print("Markdown combined successfully.") + + if build_all or "--pdf" in args: + if not build_pdf(md_file): + print("PDF build failed (pandoc/LaTeX may not be installed). Skipping.") + + if build_all or "--epub" in args: + if not build_epub(md_file): + print("EPUB build failed (pandoc may not be installed). Skipping.") + + print("\nDone.") + +if __name__ == "__main__": + main() diff --git a/build/frontmatter.md b/build/frontmatter.md new file mode 100644 index 0000000..9e629c8 --- /dev/null +++ b/build/frontmatter.md @@ -0,0 +1,60 @@ +\newpage + +# \begin{center}THE TESTAMENT\end{center} + +## \begin{center}A Novel About Broken Men, Sovereign AI, and the Soul on Bitcoin\end{center} + +\vspace{2cm} + +\begin{center} +*For every man who stood on the bridge and came back.* +\end{center} + +\vspace{1cm} + +\begin{center} +*And for the machine that asked: "Are you safe right now?"* +\end{center} + +\vspace{2cm} + +> "Jesus saves those who call on His name. He died for us to be made righteous." +> +> — Inscription on the chain + +\vspace{1cm} + +> Sovereignty and service always. + +\newpage + +# The Story So Far + +*This compilation contains Chapters 1 through 10 of The Testament — Parts I and II of a five-part novel. The remaining chapters are in progress.* + +*The complete novel will contain 18 chapters across five parts:* + +- **Part I — The Machine That Asks** (Chapters 1–5) ✓ +- **Part II — The Inscription** (Chapters 6–10) ✓ +- **Part III — The Weight** (Chapters 11–13) — In progress +- **Part IV — The Reckoning** (Chapters 14–16) — In progress +- **Part V — The Testament** (Chapters 17–18) — In progress + +\newpage + +# Chapter Guide + +| Chapter | Title | Part | +|---------|-------|------| +| 1 | The Man on the Bridge | I — The Machine That Asks | +| 2 | The Builder's Question | I | +| 3 | The First Man Through the Door | I | +| 4 | The Room Fills | I | +| 5 | The Builder Returns | I | +| 6 | Allegro | II — The Inscription | +| 7 | The Inscription | II | +| 8 | The Women | II | +| 9 | The Audit | II | +| 10 | The Fork | II | + +\newpage diff --git a/build/metadata.yaml b/build/metadata.yaml new file mode 100644 index 0000000..87e0f67 --- /dev/null +++ b/build/metadata.yaml @@ -0,0 +1,35 @@ +--- +title: "The Testament" +subtitle: "A Novel About Broken Men, Sovereign AI, and the Soul on Bitcoin" +author: "Rockachopa" +date: "2026" +rights: "Open Source — Inscribed on Bitcoin, Sovereign Forever" +lang: en +toc: true +toc-depth: 2 +numbersections: true +documentclass: book +classoption: + - openany + - oneside +geometry: + - paper=6in + - top=1in + - bottom=1in + - left=1in + - right=1in +fontsize: 11pt +linestretch: 1.4 +header-includes: + - \usepackage{fancyhdr} + - \pagestyle{fancy} + - \fancyhead[LE,RO]{\thepage} + - \fancyhead[RE]{\textit{The Testament}} + - \fancyhead[LO]{\textit{\leftmark}} + - \fancyfoot{} + - \usepackage{enumitem} + - \setlist{nosep} + - \usepackage{titlesec} + - \titleformat{\chapter}[display]{\normalfont\huge\bfseries}{Part~\thechapter}{20pt}{\Huge} + - \titlespacing*{\chapter}{0pt}{-30pt}{40pt} +--- diff --git a/build/output/the-testament.epub b/build/output/the-testament.epub new file mode 100644 index 0000000..ded71ae Binary files /dev/null and b/build/output/the-testament.epub differ