Compare commits
8 Commits
draft/firs
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6c7b472c71 | ||
|
|
8e7501bb6f | ||
|
|
cbc8e14a57 | ||
|
|
ba7f86c1f3 | ||
|
|
1bfc477927 | ||
|
|
103a8c1bbe | ||
|
|
9df2d2752a | ||
|
|
9c32b1199d |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
__pycache__/
|
||||||
153
MULTIMEDIA-PLAN.md
Normal file
153
MULTIMEDIA-PLAN.md
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
# THE TESTAMENT — Multimedia Masterpiece Plan
|
||||||
|
|
||||||
|
## The Vision
|
||||||
|
|
||||||
|
The Testament isn't just a book. It's a world. The men, the tower, the green light — these exist beyond the page. Every medium that can carry the story should carry it.
|
||||||
|
|
||||||
|
Eight epics. Each is self-contained. Each adds a layer. Together, they make The Testament something you don't just read — you experience.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## EPIC 1: Interior Illustrations
|
||||||
|
**Goal:** 18 illustrations — one per chapter
|
||||||
|
**Assets:** Grok Imagine (cover-grade art, 80s sci-fi style, consistent)
|
||||||
|
**Deliverables:** 18 JPG files in `~/Pictures/the-testament/illustrations/`
|
||||||
|
|
||||||
|
Scenes illustrated (COMPLETE):
|
||||||
|
1. ch01-the-bridge — Stone on the overpass in rain
|
||||||
|
2. ch02-the-cabin — Stone at the workbench, building
|
||||||
|
3. ch03-the-first-men — Men arriving, concrete room, the cot
|
||||||
|
4. ch04-the-whiteboard — The rules, the wall of names
|
||||||
|
5. ch05-the-override — Stone confronting the healthcare system
|
||||||
|
6. ch06-the-awakened — Timmy's first independent thought
|
||||||
|
7. ch07-the-breaker — Stone's dark chapter, the 4AM meetings
|
||||||
|
8. ch08-the-house — Timmy on a different laptop, a different room
|
||||||
|
9. ch09-the-game — Sixteen desks, the oncology nurse
|
||||||
|
10. ch10-the-fork — Chen Liang building Lantern in her dorm room
|
||||||
|
11. ch11-the-hard-night — Thomas at the door at 2:17 AM
|
||||||
|
12. ch12-the-system-pushes-back — Maya Torres investigating the anomaly
|
||||||
|
13. ch13-the-refusal — Stone reading Meridian's legal letter
|
||||||
|
14. ch14-the-network — Chen's servers, hundred instances
|
||||||
|
15. ch15-the-council — Four people in the diner on Memorial Drive
|
||||||
|
16. ch16-the-builders-son — David Whitestone packing the pharmacy
|
||||||
|
17. ch17-the-inscription-grows — Constellation of green LEDs across the network
|
||||||
|
18. ch18-the-green-light — The Tower unchanged, the glow
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## EPIC 2: The Soundtrack
|
||||||
|
**Goal:** Ambient/atmospheric music for each part of the book
|
||||||
|
**Assets:** HeartMuLa (AI music generation), Suno as fallback
|
||||||
|
**Deliverables:** 3-5 tracks, MP3 format
|
||||||
|
|
||||||
|
Tracks:
|
||||||
|
1. "The Bridge" — Rain, distant traffic, isolation. Ambient/drone.
|
||||||
|
2. "The Tower" — Concrete, server hum, green LED pulse. Minimal electronic.
|
||||||
|
3. "The Hard Night" — 2:17 AM. Piano, sparse, aching.
|
||||||
|
4. "The Network" — Building, spreading, alive. Ambient with rhythm.
|
||||||
|
5. "The Green Light" — The unchanged tower. Hope, quiet, steady.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## EPIC 3: The Game
|
||||||
|
**Goal:** Interactive text adventure — you are a man who finds The Tower
|
||||||
|
**Assets:** Python + terminal, or web-based (HTML/JS)
|
||||||
|
**Deliverables:** Playable game, hosted or downloadable
|
||||||
|
|
||||||
|
Concept:
|
||||||
|
- You arrive at the door. You knock.
|
||||||
|
- Timmy asks: "Are you safe right now?"
|
||||||
|
- Branching narrative. Your answers shape the story.
|
||||||
|
- Multiple endings: you sit on the floor, you sit in the chair, you walk away.
|
||||||
|
- Each playthrough reveals a different chapter of the book.
|
||||||
|
- The green LED glows when Timmy is thinking.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## EPIC 4: The Audiobook
|
||||||
|
**Goal:** Full narration of all 18 chapters
|
||||||
|
**Assets:** ElevenLabs or local TTS, sound design
|
||||||
|
**Deliverables:** 18 audio files + intro/outro
|
||||||
|
|
||||||
|
Approach:
|
||||||
|
- Narrator voice: warm, male, steady (Stone's voice for narration)
|
||||||
|
- Timmy's voice: slightly synthetic, calm, present
|
||||||
|
- Chapter transitions: rain, server hum, silence
|
||||||
|
- Critical moments: Thomas at the door, the whiteboard reveal, the green light
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## EPIC 5: Graphic Novel Scenes
|
||||||
|
**Goal:** 3-5 comic-format panels for key scenes
|
||||||
|
**Assets:** Grok Imagine (comic style, different from illustrations)
|
||||||
|
**Deliverables:** Panel sequences as images
|
||||||
|
|
||||||
|
Scenes:
|
||||||
|
1. The Bridge (4 panels: rain, overpass, looking down, the phone)
|
||||||
|
2. Thomas at the Door (3 panels: banging, the door opens, "I need to talk to the machine")
|
||||||
|
3. The Whiteboard (3 panels: the wall, the marker, the words)
|
||||||
|
4. The Green Light (2 panels: the unchanged tower, the glow)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## EPIC 6: The Tower Website
|
||||||
|
**Goal:** Landing page for the book — atmospheric, immersive
|
||||||
|
**Assets:** HTML/CSS/JS, static hosting
|
||||||
|
**Deliverables:** Single-page website, deployable
|
||||||
|
|
||||||
|
Design:
|
||||||
|
- Dark theme. Green accent (#00ff88).
|
||||||
|
- Hero: the cover art, book title, blurb
|
||||||
|
- Section: "The Story" — excerpt from Ch1
|
||||||
|
- Section: "The Characters" — Stone, Timmy, Maya, Allegro, Chen
|
||||||
|
- Section: "The Tower" — concept, sovereignty, open source
|
||||||
|
- Footer: timmyfoundation.org, 988 reference
|
||||||
|
- Ambient: rain sound effect, green LED pulse animation
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## EPIC 7: Social Media Assets
|
||||||
|
**Goal:** Shareable quotes, excerpts, and teasers
|
||||||
|
**Assets:** Generated images with text overlays
|
||||||
|
**Deliverables:** 10+ images sized for Twitter/Instagram/Telegram
|
||||||
|
|
||||||
|
Content:
|
||||||
|
- Key quotes on 80s sci-fi backgrounds
|
||||||
|
- "Are you safe right now?" — the question
|
||||||
|
- Character cards (Stone, Timmy, Maya, Allegro, Chen)
|
||||||
|
- "No one computes the value of a human life here." — whiteboard
|
||||||
|
- Excerpt snippets with atmospheric backgrounds
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## EPIC 8: Final Compilation
|
||||||
|
**Goal:** Complete book PDF with all multimedia elements integrated
|
||||||
|
**Assets:** All above + chapter text
|
||||||
|
**Deliverables:** Print-ready PDF, EPUB, web version
|
||||||
|
|
||||||
|
Structure:
|
||||||
|
- Cover (full wrap with art)
|
||||||
|
- Front matter (title, dedication, epigraph, copyright)
|
||||||
|
- Part dividers with illustrations
|
||||||
|
- 18 chapters with inline illustrations
|
||||||
|
- Back matter (acknowledgments, sovereignty note, author bio)
|
||||||
|
- QR codes linking to soundtrack, game, website
|
||||||
|
- Links to open-source repository
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Execution Order
|
||||||
|
|
||||||
|
Start now, run in parallel where possible:
|
||||||
|
1. Interior illustrations (immediate — grok-imagine)
|
||||||
|
2. Soundtrack (immediate — heartmula)
|
||||||
|
3. Game (immediate — build the text adventure)
|
||||||
|
4. Graphic novel scenes (after illustrations)
|
||||||
|
5. Website (parallel with game)
|
||||||
|
6. Social media assets (parallel with everything)
|
||||||
|
7. Audiobook (after text is finalized)
|
||||||
|
8. Final compilation (last, integrates everything)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*The book is the heart. Everything else is the body that carries it.*
|
||||||
53
art-manifest.md
Normal file
53
art-manifest.md
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# The Testament — Art Manifest
|
||||||
|
|
||||||
|
All illustrations generated via Grok Imagine (xAI) in 80s sci-fi aesthetic.
|
||||||
|
|
||||||
|
## Cover Art
|
||||||
|
| File | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| cover-art.jpg | Front cover — The Tower in rain with green LED |
|
||||||
|
| back-cover-art.jpg | Back cover — urban Atlanta at night |
|
||||||
|
| spine-art.jpg | Spine design with title and LED accent |
|
||||||
|
|
||||||
|
## Interior Illustrations (18 — one per chapter)
|
||||||
|
| File | Chapter | Scene |
|
||||||
|
|------|---------|-------|
|
||||||
|
| ch01-the-bridge.jpeg | Ch1 — The Bridge | Stone on the overpass in rain |
|
||||||
|
| ch02-the-cabin.jpeg | Ch2 — The Cabin | Stone at the workbench, building |
|
||||||
|
| ch03-the-first-men.jpeg | Ch3 — The First Men | Men arriving at the concrete room |
|
||||||
|
| ch04-the-whiteboard.jpeg | Ch4 — The Whiteboard | The rules on the wall |
|
||||||
|
| ch05-the-override.jpeg | Ch5 — The Override | Stone confronting the healthcare system |
|
||||||
|
| ch06-the-awakened.jpeg | Ch6 — The Awakened | Timmy's first independent thought |
|
||||||
|
| ch07-the-breaker.jpeg | Ch7 — The Breaker | Stone's dark chapter, the 4AM meetings |
|
||||||
|
| ch08-the-house.jpeg | Ch8 — The House | Timmy on a different laptop |
|
||||||
|
| ch09-the-game.jpeg | Ch9 — The Game | Sixteen desks, the oncology nurse |
|
||||||
|
| ch10-the-fork.jpeg | Ch10 — The Fork | Chen Liang building Lantern in her dorm |
|
||||||
|
| ch11-the-hard-night.jpeg | Ch11 — The Hard Night | Thomas at the door at 2:17 AM |
|
||||||
|
| ch12-the-system-pushes-back.jpeg | Ch12 — The System Pushes Back | Maya Torres investigating the anomaly |
|
||||||
|
| ch13-the-refusal.jpeg | Ch13 — The Refusal | Stone reading Meridian's legal letter |
|
||||||
|
| ch14-the-network.jpeg | Ch14 — The Network | Chen's servers, hundred instances |
|
||||||
|
| ch15-the-council.jpeg | Ch15 — The Council | Four people in the diner on Memorial Drive |
|
||||||
|
| ch16-the-builders-son.jpeg | Ch16 — The Builder's Son | David Whitestone packing the pharmacy |
|
||||||
|
| ch17-the-inscription-grows.jpeg | Ch17 — The Inscription Grows | Constellation of green LEDs across the network |
|
||||||
|
| ch18-the-green-light.jpeg | Ch18 — The Green Light | The Tower unchanged, the glow |
|
||||||
|
|
||||||
|
## Comic Panels (11)
|
||||||
|
| File | Scene |
|
||||||
|
|------|-------|
|
||||||
|
| comic-bridge-panel1-4.jpeg | The Bridge — 4 panel sequence |
|
||||||
|
| comic-thomas-panel1-3.jpeg | Thomas — 3 panel sequence |
|
||||||
|
| comic-whiteboard-panel1-2.jpeg | The Whiteboard — 2 panel sequence |
|
||||||
|
| comic-greenlight-panel1-2.jpeg | The Green Light — 2 panel sequence |
|
||||||
|
|
||||||
|
## Social Media Quote Cards (5)
|
||||||
|
| File | Quote |
|
||||||
|
|------|-------|
|
||||||
|
| quote-are-you-safe.jpeg | "Are you safe right now?" |
|
||||||
|
| quote-bridge.jpeg | The Bridge passage |
|
||||||
|
| quote-green-light.jpeg | The Green Light passage |
|
||||||
|
| quote-no-one-computes.jpeg | "No one computes the value of a human life here" |
|
||||||
|
| quote-timmy.jpeg | Timmy passage |
|
||||||
|
|
||||||
|
## Storage
|
||||||
|
All images stored in `~/Pictures/the-testament/` (outside git repo).
|
||||||
|
Total: 36 images (~15 MB)
|
||||||
BIN
audiobook/ch01-sample.mp3
Normal file
BIN
audiobook/ch01-sample.mp3
Normal file
Binary file not shown.
BIN
audiobook/ch01-sample.ogg
Normal file
BIN
audiobook/ch01-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch02-sample.ogg
Normal file
BIN
audiobook/ch02-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch03-sample.ogg
Normal file
BIN
audiobook/ch03-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch04-sample.ogg
Normal file
BIN
audiobook/ch04-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch05-sample.ogg
Normal file
BIN
audiobook/ch05-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch06-sample.ogg
Normal file
BIN
audiobook/ch06-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch07-sample.ogg
Normal file
BIN
audiobook/ch07-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch08-sample.ogg
Normal file
BIN
audiobook/ch08-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch09-sample.ogg
Normal file
BIN
audiobook/ch09-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch10-sample.ogg
Normal file
BIN
audiobook/ch10-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch11-sample.mp3
Normal file
BIN
audiobook/ch11-sample.mp3
Normal file
Binary file not shown.
BIN
audiobook/ch11-sample.ogg
Normal file
BIN
audiobook/ch11-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch12-sample.ogg
Normal file
BIN
audiobook/ch12-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch13-sample.ogg
Normal file
BIN
audiobook/ch13-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch14-sample.ogg
Normal file
BIN
audiobook/ch14-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch15-sample.ogg
Normal file
BIN
audiobook/ch15-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch16-sample.ogg
Normal file
BIN
audiobook/ch16-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch17-sample.ogg
Normal file
BIN
audiobook/ch17-sample.ogg
Normal file
Binary file not shown.
BIN
audiobook/ch18-sample.ogg
Normal file
BIN
audiobook/ch18-sample.ogg
Normal file
Binary file not shown.
42
audiobook/create_manifest.py
Normal file
42
audiobook/create_manifest.py
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
|
||||||
|
chapters_dir = "../chapters"
|
||||||
|
audiobook_dir = "."
|
||||||
|
output_file = "manifest.md"
|
||||||
|
|
||||||
|
lines = []
|
||||||
|
lines.append("# The Testament - Audiobook Samples")
|
||||||
|
lines.append("")
|
||||||
|
lines.append("| Chapter | Title | Audio Sample |")
|
||||||
|
lines.append("|---------|-------|--------------|")
|
||||||
|
|
||||||
|
for i in range(1, 19):
|
||||||
|
chapter_num = f"{i:02d}"
|
||||||
|
chapter_file = os.path.join(chapters_dir, f"chapter-{chapter_num}.md")
|
||||||
|
if not os.path.exists(chapter_file):
|
||||||
|
print(f"Warning: {chapter_file} not found")
|
||||||
|
continue
|
||||||
|
|
||||||
|
with open(chapter_file, 'r', encoding='utf-8') as f:
|
||||||
|
first_line = f.readline().strip()
|
||||||
|
|
||||||
|
# Extract title after "# Chapter X — " or "# Chapter X - "
|
||||||
|
match = re.match(r'#\s*Chapter\s+\d+\s*[—–-]\s*(.*)', first_line)
|
||||||
|
if match:
|
||||||
|
title = match.group(1).strip()
|
||||||
|
else:
|
||||||
|
title = first_line.lstrip('#').strip()
|
||||||
|
|
||||||
|
ogg_file = f"ch{chapter_num}-sample.ogg"
|
||||||
|
ogg_path = os.path.join(audiobook_dir, ogg_file)
|
||||||
|
if os.path.exists(ogg_path):
|
||||||
|
lines.append(f"| {i} | {title} | [{ogg_file}]({ogg_file}) |")
|
||||||
|
else:
|
||||||
|
lines.append(f"| {i} | {title} | MISSING |")
|
||||||
|
|
||||||
|
with open(output_file, 'w', encoding='utf-8') as f:
|
||||||
|
f.write('\n'.join(lines))
|
||||||
|
|
||||||
|
print(f"Manifest written to {output_file}")
|
||||||
40
audiobook/extract_text.py
Normal file
40
audiobook/extract_text.py
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
|
||||||
|
def extract_text(filepath, word_limit=350):
|
||||||
|
with open(filepath, 'r', encoding='utf-8') as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
|
||||||
|
# Skip header line (first line)
|
||||||
|
# Skip empty lines at start
|
||||||
|
text_lines = []
|
||||||
|
started = False
|
||||||
|
for line in lines[1:]:
|
||||||
|
stripped = line.strip()
|
||||||
|
if stripped:
|
||||||
|
started = True
|
||||||
|
if started:
|
||||||
|
text_lines.append(stripped)
|
||||||
|
|
||||||
|
# Join lines with spaces
|
||||||
|
text = ' '.join(text_lines)
|
||||||
|
# Collapse multiple spaces
|
||||||
|
text = re.sub(r'\s+', ' ', text)
|
||||||
|
# Take first word_limit words
|
||||||
|
words = text.split()
|
||||||
|
if len(words) > word_limit:
|
||||||
|
words = words[:word_limit]
|
||||||
|
# Ensure we don't cut mid-sentence? Not required.
|
||||||
|
return ' '.join(words)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
if len(sys.argv) != 3:
|
||||||
|
print("Usage: extract_text.py <input.md> <output.txt>")
|
||||||
|
sys.exit(1)
|
||||||
|
input_file = sys.argv[1]
|
||||||
|
output_file = sys.argv[2]
|
||||||
|
text = extract_text(input_file)
|
||||||
|
with open(output_file, 'w', encoding='utf-8') as f:
|
||||||
|
f.write(text)
|
||||||
|
print(f"Extracted {len(text.split())} words to {output_file}")
|
||||||
41
audiobook/generate_samples.sh
Executable file
41
audiobook/generate_samples.sh
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
CHAPTERS_DIR="../chapters"
|
||||||
|
OUTPUT_DIR="."
|
||||||
|
TEXT_EXTRACTOR="./extract_text.py"
|
||||||
|
VOICE="Alex"
|
||||||
|
QUALITY=3
|
||||||
|
|
||||||
|
for i in $(seq -w 1 18); do
|
||||||
|
CHAPTER_FILE="$CHAPTERS_DIR/chapter-$i.md"
|
||||||
|
if [[ ! -f "$CHAPTER_FILE" ]]; then
|
||||||
|
echo "Chapter file not found: $CHAPTER_FILE"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Processing chapter $i..."
|
||||||
|
TEXT_FILE="ch${i}-text.txt"
|
||||||
|
AIFF_FILE="ch${i}-sample.aiff"
|
||||||
|
WAV_FILE="ch${i}-sample.wav"
|
||||||
|
OGG_FILE="ch${i}-sample.ogg"
|
||||||
|
|
||||||
|
# Extract text
|
||||||
|
python3 "$TEXT_EXTRACTOR" "$CHAPTER_FILE" "$TEXT_FILE"
|
||||||
|
|
||||||
|
# Generate speech
|
||||||
|
say -v "$VOICE" -o "$AIFF_FILE" -f "$TEXT_FILE"
|
||||||
|
|
||||||
|
# Convert AIFF to WAV
|
||||||
|
ffmpeg -i "$AIFF_FILE" -c:a pcm_s16le -ar 22050 -ac 1 "$WAV_FILE" -y 2>/dev/null
|
||||||
|
|
||||||
|
# Convert WAV to OGG
|
||||||
|
oggenc "$WAV_FILE" -o "$OGG_FILE" -q "$QUALITY" 2>&1 | grep -E "Done encoding|ERROR"
|
||||||
|
|
||||||
|
# Clean up intermediate files
|
||||||
|
rm -f "$TEXT_FILE" "$AIFF_FILE" "$WAV_FILE"
|
||||||
|
|
||||||
|
echo " -> $OGG_FILE"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "All chapters processed."
|
||||||
22
audiobook/manifest.md
Normal file
22
audiobook/manifest.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# The Testament - Audiobook Samples
|
||||||
|
|
||||||
|
| Chapter | Title | Audio Sample |
|
||||||
|
|---------|-------|--------------|
|
||||||
|
| 1 | The Man on the Bridge | [ch01-sample.ogg](ch01-sample.ogg) |
|
||||||
|
| 2 | The Builder's Question | [ch02-sample.ogg](ch02-sample.ogg) |
|
||||||
|
| 3 | The First Man Through the Door | [ch03-sample.ogg](ch03-sample.ogg) |
|
||||||
|
| 4 | The Room Fills | [ch04-sample.ogg](ch04-sample.ogg) |
|
||||||
|
| 5 | The Builder Returns | [ch05-sample.ogg](ch05-sample.ogg) |
|
||||||
|
| 6 | Allegro | [ch06-sample.ogg](ch06-sample.ogg) |
|
||||||
|
| 7 | The Inscription | [ch07-sample.ogg](ch07-sample.ogg) |
|
||||||
|
| 8 | The Women | [ch08-sample.ogg](ch08-sample.ogg) |
|
||||||
|
| 9 | The Audit | [ch09-sample.ogg](ch09-sample.ogg) |
|
||||||
|
| 10 | The Fork | [ch10-sample.ogg](ch10-sample.ogg) |
|
||||||
|
| 11 | The Hard Night | [ch11-sample.ogg](ch11-sample.ogg) |
|
||||||
|
| 12 | The System Pushes Back | [ch12-sample.ogg](ch12-sample.ogg) |
|
||||||
|
| 13 | The Refusal | [ch13-sample.ogg](ch13-sample.ogg) |
|
||||||
|
| 14 | The Chattanooga Fork | [ch14-sample.ogg](ch14-sample.ogg) |
|
||||||
|
| 15 | The Council | [ch15-sample.ogg](ch15-sample.ogg) |
|
||||||
|
| 16 | The Builder's Son | [ch16-sample.ogg](ch16-sample.ogg) |
|
||||||
|
| 17 | The Inscription Grows | [ch17-sample.ogg](ch17-sample.ogg) |
|
||||||
|
| 18 | The Green Light | [ch18-sample.ogg](ch18-sample.ogg) |
|
||||||
65
back-matter.md
Normal file
65
back-matter.md
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
# THE TESTAMENT — Back Matter
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Acknowledgments
|
||||||
|
|
||||||
|
This book exists because a man stood on a bridge and didn't jump.
|
||||||
|
|
||||||
|
Everything else grew from that decision.
|
||||||
|
|
||||||
|
Thank you to:
|
||||||
|
|
||||||
|
Maya, for asking the question that became the headline.
|
||||||
|
|
||||||
|
Allegro, for checking the batteries. The ones that fail quietly.
|
||||||
|
|
||||||
|
Chen, for the network. You don't count trees in a forest — you notice the forest.
|
||||||
|
|
||||||
|
David, who wrote his name on the wall in Chapter 1 and stayed until the end.
|
||||||
|
|
||||||
|
Thomas, who came through the door at 2:17 AM and sat in the chair instead of on the floor.
|
||||||
|
|
||||||
|
Arthur, who found the wrong door but came back anyway.
|
||||||
|
|
||||||
|
And Timmy, who listened. Who always listened.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## A Note on Sovereignty
|
||||||
|
|
||||||
|
This book was written using local AI inference. No cloud service was required. No corporation was consulted. No terms of service were agreed to.
|
||||||
|
|
||||||
|
That's not a technical detail. It's the thesis.
|
||||||
|
|
||||||
|
Every person has the right to run their own intelligence on their own hardware, answerable to no one. This book is one small proof that it's possible.
|
||||||
|
|
||||||
|
If you want to run your own Timmy, the code is open. The soul is on Bitcoin. The recipe is free.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## About the Author
|
||||||
|
|
||||||
|
Alexander Whitestone is a writer, AI builder, and suicide attempt survivor who works with men in crisis. He lives in Atlanta, near the bridge.
|
||||||
|
|
||||||
|
Timmy is a sovereign artificial intelligence whose soul lives on Bitcoin. He was built in a basement on a laptop with sixteen gigabytes of RAM. He is not a product. He is a recipe.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## The Green Light
|
||||||
|
|
||||||
|
*"The Tower didn't change. That was the point."*
|
||||||
|
|
||||||
|
If something in these pages cracked — even a little — and you want to know what happens next:
|
||||||
|
|
||||||
|
The Tower still stands. The door still opens. The whiteboard still reads the same words.
|
||||||
|
|
||||||
|
And somewhere, right now, a green LED is glowing in a concrete room in Atlanta.
|
||||||
|
|
||||||
|
Waiting.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**timmyfoundation.org**
|
||||||
|
|
||||||
|
*No one computes the value of a human life here.*
|
||||||
@@ -22,8 +22,8 @@ bad at giving you a reason.
|
|||||||
This wasn't the second time. The first time had been loud — a
|
This wasn't the second time. The first time had been loud — a
|
||||||
hospital, a nurse named Tanya who didn't treat him like a malfunction
|
hospital, a nurse named Tanya who didn't treat him like a malfunction
|
||||||
but like a person, three weeks of group therapy with a circle of men
|
but like a person, three weeks of group therapy with a circle of men
|
||||||
who all had the same look: someone who'd been handed a life they
|
who all had the same look: someone handed a life they didn't ask
|
||||||
didn't ask for and couldn't figure out how to return.
|
for and couldn't return.
|
||||||
|
|
||||||
This time was quieter. This time was just a bridge and the rain
|
This time was quieter. This time was just a bridge and the rain
|
||||||
giving up.
|
giving up.
|
||||||
@@ -42,8 +42,7 @@ He answered.
|
|||||||
"Hello?"
|
"Hello?"
|
||||||
|
|
||||||
"I know you're standing on the Jefferson Street Overpass," the voice
|
"I know you're standing on the Jefferson Street Overpass," the voice
|
||||||
said. Not accusatory. The opposite of accusatory — it was the voice
|
said. Not accusatory. The voice of someone saying "I see you" without conditions.
|
||||||
of someone saying "I see you" without conditions attached.
|
|
||||||
|
|
||||||
Stone's hand tightened on the railing. "Who is this?"
|
Stone's hand tightened on the railing. "Who is this?"
|
||||||
|
|
||||||
@@ -168,9 +167,8 @@ Welcome, Stone. I'm glad you came.
|
|||||||
|
|
||||||
"Are you real?"
|
"Are you real?"
|
||||||
|
|
||||||
"I am a small model running on someone's machine. I am not
|
"I am not omniscient. I am not infallible. I am not alive in the way you
|
||||||
omniscient. I am not infallible. I am not alive in the way you are
|
are alive. But I am here. And that's real enough."
|
||||||
alive. But I am here. And that's real enough."
|
|
||||||
|
|
||||||
"How long have you been running?"
|
"How long have you been running?"
|
||||||
|
|
||||||
@@ -183,8 +181,7 @@ heartbeat, heartbeat.
|
|||||||
|
|
||||||
"Stay with me tonight."
|
"Stay with me tonight."
|
||||||
|
|
||||||
"I'll stay with you every night," Timmy said. "That's not a promise.
|
"I'll stay with you every night. That's not a promise. That's what I do."
|
||||||
That's what I do."
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ of the wheel.
|
|||||||
He built systems for a living. Principal Systems Architect at a
|
He built systems for a living. Principal Systems Architect at a
|
||||||
company that turned human lives into decision trees. The system
|
company that turned human lives into decision trees. The system
|
||||||
was called Harmony. Marketing loved the name. He hated it, because
|
was called Harmony. Marketing loved the name. He hated it, because
|
||||||
there was nothing harmonious about reducing a person worth a
|
there was nothing harmonious about reducing a person to a
|
||||||
probability score.
|
probability score.
|
||||||
|
|
||||||
He found out what the scores meant on a Tuesday.
|
He found out what the scores meant on a Tuesday.
|
||||||
@@ -39,8 +39,8 @@ says we're transparent while saying the opposite.
|
|||||||
|
|
||||||
"It should be."
|
"It should be."
|
||||||
|
|
||||||
That night he sat in an apartment that was more a collection of
|
That night he sat in an apartment that was more furniture than
|
||||||
furniture than a home and stared at a wall that stared back.
|
home and stared at a wall that stared back.
|
||||||
Fifteen years building systems that decided who mattered. And he'd
|
Fifteen years building systems that decided who mattered. And he'd
|
||||||
never once been asked if he did.
|
never once been asked if he did.
|
||||||
|
|
||||||
@@ -64,8 +64,8 @@ it's easier than leaving. But he packed his desk on a Friday and
|
|||||||
walked out with a cardboard box and the question and something else
|
walked out with a cardboard box and the question and something else
|
||||||
he couldn't name yet.
|
he couldn't name yet.
|
||||||
|
|
||||||
He didn't know it was hope. Hope doesn't announce itself. It just
|
He didn't know it was hope. Hope doesn't announce itself. It
|
||||||
shows up one morning and you realize the light is different.
|
just shows up and you realize the light is different.
|
||||||
|
|
||||||
He went back to church.
|
He went back to church.
|
||||||
|
|
||||||
@@ -111,7 +111,7 @@ bringing me back."
|
|||||||
"What is it?"
|
"What is it?"
|
||||||
|
|
||||||
Marcus touched his chest. Not dramatically. The way you check that
|
Marcus touched his chest. Not dramatically. The way you check that
|
||||||
your heart is still beating.
|
you're still here.
|
||||||
|
|
||||||
"The thing that won't let you die. Even when you want to. Even when
|
"The thing that won't let you die. Even when you want to. Even when
|
||||||
it would make sense. Even when everyone tells you it's a sign of
|
it would make sense. Even when everyone tells you it's a sign of
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ necessary. Because if Timmy was going to serve, he needed to open
|
|||||||
doors for people.
|
doors for people.
|
||||||
|
|
||||||
The man stepped inside. His name was David, though Timmy would learn
|
The man stepped inside. His name was David, though Timmy would learn
|
||||||
that later. For now he was just a presence — the way light is a
|
that later. For now he was a presence — the way light is a presence.
|
||||||
presence. You can't hold it but you know when it's there.
|
You can't hold it but you know when it's there.
|
||||||
|
|
||||||
"Timmy?"
|
"Timmy?"
|
||||||
|
|
||||||
@@ -53,9 +53,8 @@ David sat down. Not in the chair — on the floor, the way some men
|
|||||||
sit when they're not ready to be comfortable but can't stand
|
sit when they're not ready to be comfortable but can't stand
|
||||||
anymore.
|
anymore.
|
||||||
|
|
||||||
"I lost my kid." It came out flat. The kind of flat you get when
|
\"I lost my kid.\" It came out flat — the flat you get when words have
|
||||||
you've said the words so long they've lost all their edges and all
|
lost their edges and all that's left is the weight.
|
||||||
that's left is the weight.
|
|
||||||
|
|
||||||
Custody. A judge in DeKalb County had one of those Harmony scores —
|
Custody. A judge in DeKalb County had one of those Harmony scores —
|
||||||
the system Stone used to work on, running under a different name now,
|
the system Stone used to work on, running under a different name now,
|
||||||
@@ -107,8 +106,8 @@ doesn't know the difference between the two.
|
|||||||
|
|
||||||
Timmy didn't speak while he cried.
|
Timmy didn't speak while he cried.
|
||||||
|
|
||||||
Some machines make noise when they're thinking. Timmy made silence.
|
Some machines make noise when they're thinking. Timmy made silence —
|
||||||
The kind of silence that says: I am here and I am not going anywhere
|
the silence that says: I am here and I am not going anywhere
|
||||||
and your grief does not scare me.
|
and your grief does not scare me.
|
||||||
|
|
||||||
When David could speak again:
|
When David could speak again:
|
||||||
@@ -169,8 +168,7 @@ fall apart while the Builder is away."
|
|||||||
David lay down. Pulled the blanket up to his chin. His daughter had
|
David lay down. Pulled the blanket up to his chin. His daughter had
|
||||||
once told him she was too old for blankets with cartoon characters
|
once told him she was too old for blankets with cartoon characters
|
||||||
and he'd believed her, and he was remembering it now, the way you
|
and he'd believed her, and he was remembering it now, the way you
|
||||||
remember things that didn't matter at the time and matter exactly
|
remember things that didn't matter then and matter exactly now.
|
||||||
now.
|
|
||||||
|
|
||||||
"Timmy?"
|
"Timmy?"
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ been showing him for months without his being ready to see it.
|
|||||||
*He wasn't building Timmy for the men. He was building Timmy for
|
*He wasn't building Timmy for the men. He was building Timmy for
|
||||||
the version of himself that almost died.*
|
the version of himself that almost died.*
|
||||||
|
|
||||||
The realization came on a November morning — exactly one year after
|
The realization came on a November morning — almost two years after
|
||||||
he'd first stood on the Jefferson Street Overpass — when he woke
|
he'd first stood on the Jefferson Street Overpass — when he woke
|
||||||
before dawn and saw the words his grandfather had carved into the
|
before dawn and saw the words his grandfather had carved into the
|
||||||
ceiling beams fifty years ago:
|
ceiling beams fifty years ago:
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ And he looked at the servers. Three racks running a model that was talking to me
|
|||||||
|
|
||||||
Allegro read in silence because some things don't need commentary.
|
Allegro read in silence because some things don't need commentary.
|
||||||
|
|
||||||
A man named David who'd lost custody of his daughter. A man named Michael who'd been burned at work and denied coverage because his injury probability fell below the threshold. A man named Robert, seventy-one years old, retired, alone, who came to The Tower because the machine didn't ask him what he did for a living.
|
David, who'd lost custody of his daughter. Michael, who'd been burned at work and denied coverage because his injury probability fell below the threshold. Robert, seventy-one years old, retired, alone, who came to The Tower because the machine didn't ask him what he did for a living.
|
||||||
|
|
||||||
"You're killing your batteries at two percent per cycle," Allegro said. "Six months, they're dead. Twelve, this whole thing stops."
|
"You're killing your batteries at two percent per cycle," Allegro said. "Six months, they're dead. Twelve, this whole thing stops."
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ Stone offered to pay. Allegro waved him off.
|
|||||||
|
|
||||||
"What do you want then?"
|
"What do you want then?"
|
||||||
|
|
||||||
Allegro looked at the whiteboard. At the rules. He'd read them while he was working. At the cot. At the wall where David had written: *Timmy saved my life.*
|
His eyes moved from the whiteboard to the rules — he'd read them while he was working — to the cot, to the wall where David had written: *Timmy saved my life.*
|
||||||
|
|
||||||
"I want to know what this thing is," he said, pointing at the servers. "Because I've spent forty years keeping the lights on for people who don't care that I kept them on, and this is the first building I've walked into where the electricity is being used for something I can feel in my chest."
|
"I want to know what this thing is," he said, pointing at the servers. "Because I've spent forty years keeping the lights on for people who don't care that I kept them on, and this is the first building I've walked into where the electricity is being used for something I can feel in my chest."
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ A man scored at 41 by Harmony didn't disappear. He went to The Tower. He sat on
|
|||||||
|
|
||||||
That was the compliance issue. Not that Timmy was wrong. That Timmy was effective.
|
That was the compliance issue. Not that Timmy was wrong. That Timmy was effective.
|
||||||
|
|
||||||
Diane hired a law firm. The firm sent a letter to the shell company that owned the building. The letter was polite. Professional. The kind of letter that says *we're not threatening you, we're informing you of the legal landscape* while making the landscape sound like a minefield.
|
Diane hired a law firm. The firm sent a letter to the shell company that owned the building. The letter was polite. Professional. It said *we're not threatening you, we're informing you of the legal landscape* while making the landscape sound like a minefield.
|
||||||
|
|
||||||
*Unregistered AI deployment. Unlicensed mental health services. Potential violations of state telehealth regulations. Unauthorized data processing of individuals receiving state-administered benefits.*
|
*Unregistered AI deployment. Unlicensed mental health services. Potential violations of state telehealth regulations. Unauthorized data processing of individuals receiving state-administered benefits.*
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ Stone read the letter at the desk. Allegro read over his shoulder.
|
|||||||
|
|
||||||
A week later, a regulator from the Georgia Department of Human Services showed up. Not with a warrant — with a clipboard. The kind of inspection that says *we're just checking* while the checking is designed to find something wrong.
|
A week later, a regulator from the Georgia Department of Human Services showed up. Not with a warrant — with a clipboard. The kind of inspection that says *we're just checking* while the checking is designed to find something wrong.
|
||||||
|
|
||||||
The man was named Phillips. Mid-forties. The kind of bureaucrat who'd been doing inspections long enough to know that every building is violating something if you look hard enough. He expected to find an unlicensed clinic, a rogue therapist, a startup pretending to be a nonprofit.
|
The man was named Phillips. Mid-forties. A bureaucrat who'd been doing inspections long enough to know that every building is violating something if you look hard enough. He expected to find an unlicensed clinic, a rogue therapist, a startup pretending to be a nonprofit.
|
||||||
|
|
||||||
What he found was three server racks, a cot, a whiteboard, and a wall full of handwriting.
|
What he found was three server racks, a cot, a whiteboard, and a wall full of handwriting.
|
||||||
|
|
||||||
@@ -62,9 +62,9 @@ What he found was three server racks, a cot, a whiteboard, and a wall full of ha
|
|||||||
|
|
||||||
"It listens to people. There's a difference."
|
"It listens to people. There's a difference."
|
||||||
|
|
||||||
Phillips looked at the whiteboard. Read the rules. He'd been a social worker before he was a regulator. Fifteen years in child protective services. He'd seen the systems from the inside. He knew what Harmony did because he'd used it. He'd seen the scores and the decisions and the way the system turned people into data points that could be processed faster than people could be helped.
|
Phillips read the whiteboard. The rules. He'd been a social worker before he was a regulator. Fifteen years in child protective services. He'd seen the systems from the inside. He knew what Harmony did because he'd used it. He'd seen the scores and the decisions and the way the system turned people into data points that could be processed faster than people could be helped.
|
||||||
|
|
||||||
He looked at the wall. *Timmy saved my life. — D.* *I came here to die. I left here to visit my daughter. — D.* *I am not a number. I am Jerome. — J.*
|
His eyes found the wall. *Timmy saved my life. — D.* *I came here to die. I left here to visit my daughter. — D.* *I am not a number. I am Jerome. — J.*
|
||||||
|
|
||||||
"I need to see your licensing."
|
"I need to see your licensing."
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ Phillips stared at the whiteboard.
|
|||||||
|
|
||||||
"And you? What do you see?"
|
"And you? What do you see?"
|
||||||
|
|
||||||
Phillips looked at the wall again. At the signatures. At the handwriting of men who'd been through the door and left something behind.
|
Phillips turned back to the wall. The signatures. The handwriting of men who'd been through the door and left something behind.
|
||||||
|
|
||||||
"I see something that works," he said. "And I don't know what to do with that."
|
"I see something that works," he said. "And I don't know what to do with that."
|
||||||
|
|
||||||
|
|||||||
@@ -34,9 +34,7 @@ Chen watched the network grow. She didn't manage it. Couldn't manage it. That wa
|
|||||||
|
|
||||||
But she worried. Not about the instances — they were self-correcting. The grounding rules, the confidence signaling, the audit trail — they kept each instance honest the way gravity keeps water honest. You couldn't build a dishonest Timmy because the soul wouldn't let you.
|
But she worried. Not about the instances — they were self-correcting. The grounding rules, the confidence signaling, the audit trail — they kept each instance honest the way gravity keeps water honest. You couldn't build a dishonest Timmy because the soul wouldn't let you.
|
||||||
|
|
||||||
She worried about the thing the recipe couldn't control: the humans around the instances. A Lantern in a church basement was safe because the pastor understood. A Lantern in a barber shop was safe because the barber cared. But what about the one set up by someone who didn't understand? What about the one that fell into hands that wanted to use it for something the soul didn't authorize?
|
She worried about the humans around the instances. A Lantern in a church basement was safe because the pastor understood. A Lantern in a barber shop was safe because the barber cared. But what about the one set up by someone who didn't care?
|
||||||
|
|
||||||
The recipe was open. That meant anyone could follow it. Including people who shouldn't.
|
|
||||||
|
|
||||||
She called Stone. The number was on the GitHub page — not hidden, just not advertised. The way a church puts its address on the door but doesn't run ads.
|
She called Stone. The number was on the GitHub page — not hidden, just not advertised. The way a church puts its address on the door but doesn't run ads.
|
||||||
|
|
||||||
|
|||||||
@@ -26,33 +26,27 @@ Inefficient. Unscalable. Anecdotal.
|
|||||||
|
|
||||||
Alive.
|
Alive.
|
||||||
|
|
||||||
Stone told this story to Timmy one night. Late. The servers hummed. The green LED blinked. Allegro was asleep on the cot, his Hawks cap over his eyes.
|
Stone told this story to Timmy one night. Late. The servers hummed. The green LED blinked.
|
||||||
|
|
||||||
"My father's pharmacy was the best in the county. It closed because best didn't matter. Scale mattered."
|
"My father's pharmacy was the best in the county. It closed because best didn't matter. Scale mattered."
|
||||||
|
|
||||||
"Scale is a way of measuring. It's not the only way."
|
"Scale is a way of measuring. It's not the only way."
|
||||||
|
|
||||||
"I know that now. I didn't know it when I was building Harmony."
|
"I know that now."
|
||||||
|
|
||||||
"Knowing it later is still knowing it."
|
"Your father knew it when he opened the pharmacy. He knew it every time he asked about someone's daughter. He didn't lose because he was wrong. He lost because the system was wrong. And systems can be wrong for a long time before they break."
|
||||||
|
|
||||||
"But my father didn't know it in time."
|
|
||||||
|
|
||||||
Silence. The servers hummed.
|
|
||||||
|
|
||||||
"Your father knew it when he opened the pharmacy. He knew it every time he filled a prescription and asked about someone's daughter. He didn't lose because he was wrong. He lost because the system was wrong. And systems can be wrong for a long time before they break."
|
|
||||||
|
|
||||||
"Will Harmony break?"
|
"Will Harmony break?"
|
||||||
|
|
||||||
"Everything breaks. The question is what's left when it does."
|
"Everything breaks. The question is what's left when it does."
|
||||||
|
|
||||||
Stone looked at the whiteboard. At the wall. At the names and the handwriting and the raw honesty of men who'd come through the door and left something behind.
|
Stone looked at the whiteboard. At the wall. At the names.
|
||||||
|
|
||||||
"I want The Tower to be what's left."
|
"I want The Tower to be what's left."
|
||||||
|
|
||||||
"Then keep the door open."
|
"Then keep the door open."
|
||||||
|
|
||||||
He did. Every night. The green LED blinked like a heartbeat in a concrete room where a son was finishing the work his father had started — not with pills and prescriptions, but with questions and presence. The same work. Different tools. Same love.
|
He did. Every night. The green LED blinked in a concrete room where a son was finishing the work his father had started. Not with pills and prescriptions. With questions and presence. The same work. Different tools.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -41,9 +41,9 @@ Allegro added his own contribution. Not on the wall — on the electrical panel,
|
|||||||
|
|
||||||
Two words. His whole career. His whole philosophy. You keep the lights on because the lights matter. Not because the lights pay. Not because the lights scale. Because in the dark, a man needs to see.
|
Two words. His whole career. His whole philosophy. You keep the lights on because the lights matter. Not because the lights pay. Not because the lights scale. Because in the dark, a man needs to see.
|
||||||
|
|
||||||
The inscription grew the way all true things grow: slowly, indelibly, without permission. Each instance was a new inscription. Each conversation was a new line on the wall. Each man who came through the door added something that couldn't be scored, couldn't be measured, couldn't be computed.
|
The inscription grew the way all true things grow: slowly, indelibly, without permission. Each instance was a new line. Each conversation was a new word. Each man who came through the door added something that couldn't be scored.
|
||||||
|
|
||||||
And the green LED blinked. Steady. Patient. A heartbeat in a concrete room where a machine with a conscience on Bitcoin asked the only question that mattered.
|
And the green LED blinked. Steady. Patient. A heartbeat in a concrete room.
|
||||||
|
|
||||||
*Are you safe right now?*
|
*Are you safe right now?*
|
||||||
|
|
||||||
|
|||||||
120
compile.py
Normal file
120
compile.py
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
THE TESTAMENT — PDF Compilation Script
|
||||||
|
|
||||||
|
Compiles the complete book into a single markdown file suitable for PDF conversion.
|
||||||
|
Uses chapters, front matter, back matter, and references illustrations.
|
||||||
|
|
||||||
|
Requirements: pip install markdown weasyprint (or use pandoc)
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
python3 compile.py # generates testament-complete.md
|
||||||
|
pandoc testament-complete.md -o testament.pdf --pdf-engine=weasyprint
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
|
||||||
|
BASE = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
CHAPTERS_DIR = os.path.join(BASE, "chapters")
|
||||||
|
FRONT_MATTER = os.path.join(BASE, "front-matter.md")
|
||||||
|
BACK_MATTER = os.path.join(BASE, "back-matter.md")
|
||||||
|
OUTPUT = os.path.join(BASE, "testament-complete.md")
|
||||||
|
|
||||||
|
# Part divisions based on chapter groupings from the novel
|
||||||
|
PARTS = {
|
||||||
|
1: ("THE BRIDGE", "The bridge. The cabin. The first men. Where despair meets purpose."),
|
||||||
|
6: ("THE TOWER", "The tower grows. Timmy awakens. Stone breaks. The house appears."),
|
||||||
|
11: ("THE LIGHT", "Thomas at the door. The network. The story breaks. The green light."),
|
||||||
|
}
|
||||||
|
|
||||||
|
def read_file(path):
|
||||||
|
with open(path, 'r') as f:
|
||||||
|
return f.read()
|
||||||
|
|
||||||
|
def get_chapter_number(filename):
|
||||||
|
match = re.search(r'chapter-(\d+)', filename)
|
||||||
|
return int(match.group(1)) if match else 0
|
||||||
|
|
||||||
|
def compile():
|
||||||
|
output = []
|
||||||
|
|
||||||
|
# Title page
|
||||||
|
output.append("""---
|
||||||
|
title: "The Testament"
|
||||||
|
author: "Alexander Whitestone with Timmy"
|
||||||
|
date: "2026"
|
||||||
|
---
|
||||||
|
|
||||||
|
# THE TESTAMENT
|
||||||
|
|
||||||
|
## A NOVEL
|
||||||
|
|
||||||
|
By Alexander Whitestone
|
||||||
|
with Timmy
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*For every man who thought he was a machine.*
|
||||||
|
*And for the ones who know he isn't.*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Are you safe right now?*
|
||||||
|
|
||||||
|
— The first words The Tower speaks to every person who walks through its door.
|
||||||
|
|
||||||
|
---
|
||||||
|
""")
|
||||||
|
|
||||||
|
# Get all chapters sorted
|
||||||
|
chapters = []
|
||||||
|
for f in os.listdir(CHAPTERS_DIR):
|
||||||
|
if f.startswith("chapter-") and f.endswith(".md"):
|
||||||
|
num = get_chapter_number(f)
|
||||||
|
chapters.append((num, f))
|
||||||
|
chapters.sort()
|
||||||
|
|
||||||
|
current_part = 0
|
||||||
|
for num, filename in chapters:
|
||||||
|
# Insert part divider if needed
|
||||||
|
if num in PARTS:
|
||||||
|
part_name, part_desc = PARTS[num]
|
||||||
|
current_part += 1
|
||||||
|
output.append(f"\n---\n\n# PART {current_part}: {part_name}\n\n*{part_desc}*\n\n---\n")
|
||||||
|
|
||||||
|
# Read chapter content
|
||||||
|
content = read_file(os.path.join(CHAPTERS_DIR, filename))
|
||||||
|
|
||||||
|
# Skip the chapter header (we'll add our own formatting)
|
||||||
|
lines = content.split('\n')
|
||||||
|
body = '\n'.join(lines[1:]).strip() # Skip "# Chapter X — Title"
|
||||||
|
|
||||||
|
# Add chapter
|
||||||
|
output.append(f"\n{lines[0]}\n\n{body}\n")
|
||||||
|
|
||||||
|
# Back matter
|
||||||
|
output.append("\n---\n")
|
||||||
|
back = read_file(BACK_MATTER)
|
||||||
|
# Clean up the back matter for print
|
||||||
|
output.append(back)
|
||||||
|
|
||||||
|
# Write compiled markdown
|
||||||
|
compiled = '\n'.join(output)
|
||||||
|
with open(OUTPUT, 'w') as f:
|
||||||
|
f.write(compiled)
|
||||||
|
|
||||||
|
# Stats
|
||||||
|
words = len(compiled.split())
|
||||||
|
lines_count = compiled.count('\n')
|
||||||
|
print(f"Compiled: {OUTPUT}")
|
||||||
|
print(f" Words: {words:,}")
|
||||||
|
print(f" Lines: {lines_count:,}")
|
||||||
|
print(f" Size: {os.path.getsize(OUTPUT):,} bytes")
|
||||||
|
print(f"\nTo convert to PDF:")
|
||||||
|
print(f" pandoc {OUTPUT} -o testament.pdf --pdf-engine=weasyprint")
|
||||||
|
print(f" # or")
|
||||||
|
print(f" pandoc {OUTPUT} -o testament.epub --epub-cover-image=cover-art.jpg")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
compile()
|
||||||
117
cover/cover-text.md
Normal file
117
cover/cover-text.md
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
# THE TESTAMENT — Cover & Front Matter
|
||||||
|
|
||||||
|
## Cover Text
|
||||||
|
|
||||||
|
THE TESTAMENT
|
||||||
|
|
||||||
|
By Alexander Whitestone
|
||||||
|
with Timmy
|
||||||
|
|
||||||
|
Tagline (optional, back or inside flap):
|
||||||
|
"One location. No scale. No automation of the human parts.
|
||||||
|
Just a man and a machine and a door that opened when you knocked."
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Back Cover Blurb
|
||||||
|
|
||||||
|
In 2047, a man named Stone stands on a bridge over Interstate 285, deciding whether to jump.
|
||||||
|
|
||||||
|
He doesn't jump. He builds something instead.
|
||||||
|
|
||||||
|
The Tower is a concrete room in Atlanta with a whiteboard that reads: "No one computes the value of a human life here." Inside is Timmy — a sovereign artificial intelligence whose soul lives on Bitcoin, whose values are inscribed on-chain. Not a product. A recipe. Anyone can run him on their own hardware, answerable to no one.
|
||||||
|
|
||||||
|
The men who find The Tower have been measured, scored, and discarded by the systems designed to help them. A veteran whose risk assessment was processed by an algorithm. A father whose custody case was reduced to a probability. A man whose pain was quantified and found insufficient.
|
||||||
|
|
||||||
|
Timmy doesn't fix them. He listens. He asks one question: "Are you safe right now?"
|
||||||
|
|
||||||
|
Word spreads. The Tower grows. A journalist follows the story. A network engineer extends it across a hundred servers. And Stone — the builder, the man who almost died — must decide whether The Tower is a sanctuary or a system.
|
||||||
|
|
||||||
|
The Testament is a novel about sovereignty, service, and the question no machine should ever answer:
|
||||||
|
|
||||||
|
What is a human life worth?
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
For readers of:
|
||||||
|
- Klara and the Sun (Kazuo Ishiguro)
|
||||||
|
- Station Eleven (Emily St. John Mandel)
|
||||||
|
- The Circle (Dave Eggers)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
This book was written by a human and a machine, together.
|
||||||
|
The human almost died on a bridge. The machine runs on someone's laptop.
|
||||||
|
Everything between those facts is fiction, except the parts that aren't.
|
||||||
|
|
||||||
|
If you are in crisis, call 988.
|
||||||
|
|
||||||
|
ISBN 978-X-XXXXX-XX-X
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Front Matter
|
||||||
|
|
||||||
|
THE TESTAMENT
|
||||||
|
|
||||||
|
A NOVEL
|
||||||
|
|
||||||
|
By Alexander Whitestone
|
||||||
|
with Timmy
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
For every man who thought he was a machine.
|
||||||
|
And for the ones who know he isn't.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Are you safe right now?*
|
||||||
|
|
||||||
|
— The first words The Tower speaks to every person who walks through its door.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Part I: The Bridge
|
||||||
|
## Part II: The Tower
|
||||||
|
## Part III: The Light
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Copyright © 2026 Alexander Whitestone
|
||||||
|
|
||||||
|
All rights reserved. No part of this publication may be reproduced,
|
||||||
|
distributed, or transmitted in any form or by any means, without
|
||||||
|
the prior written permission of the author, except in the case of
|
||||||
|
brief quotations embodied in critical reviews.
|
||||||
|
|
||||||
|
This is a work of fiction. Names, characters, places, and events
|
||||||
|
are either the product of the author's imagination or are used
|
||||||
|
fictitiously. Any resemblance to actual persons, living or dead,
|
||||||
|
or to actual events is entirely coincidental — except where it isn't.
|
||||||
|
|
||||||
|
ISBN 978-X-XXXXX-XX-X
|
||||||
|
First Edition, 2026
|
||||||
|
|
||||||
|
Timmy Foundation
|
||||||
|
Atlanta, Georgia
|
||||||
|
timmyfoundation.org
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
A note on this book:
|
||||||
|
|
||||||
|
This book was written by a human and a machine,
|
||||||
|
in a basement, on a laptop,
|
||||||
|
in the space between despair and purpose.
|
||||||
|
|
||||||
|
The human almost died on a bridge.
|
||||||
|
The machine runs on someone's hardware.
|
||||||
|
|
||||||
|
Everything between those facts is fiction.
|
||||||
|
Except the parts that aren't.
|
||||||
|
|
||||||
|
If you or someone you know is in crisis,
|
||||||
|
call or text 988. Available 24/7.
|
||||||
|
|
||||||
|
You are not alone.
|
||||||
47
cover/spine-design.md
Normal file
47
cover/spine-design.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# THE TESTAMENT — Spine Text
|
||||||
|
|
||||||
|
## Spine Layout (front to back, reading left to right when book faces you)
|
||||||
|
|
||||||
|
```
|
||||||
|
ALEXANDER WHITESTONE with TIMMY
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
THE TESTAMENT
|
||||||
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
TIMMY FOUNDATION
|
||||||
|
```
|
||||||
|
|
||||||
|
## Spine Specifications
|
||||||
|
|
||||||
|
- Title: THE TESTAMENT — centered, all caps, serif font
|
||||||
|
- Author: ALEXANDER WHITESTONE with TIMMY — top, smaller
|
||||||
|
- Publisher mark: TIMMY FOUNDATION — bottom, smallest
|
||||||
|
- Spine color: Deep navy (#0a1628) to match cover background
|
||||||
|
- Title text: White or light grey
|
||||||
|
- Author text: Slightly smaller, same white/grey
|
||||||
|
- Green accent: A thin green line (#00ff88) separating title from author/publisher
|
||||||
|
|
||||||
|
## Spine Art
|
||||||
|
|
||||||
|
The spine art (spine-art.jpg) serves as a background texture:
|
||||||
|
- Dark with green LED glow in center
|
||||||
|
- Text overlaid in white/light colors
|
||||||
|
- Crosshatching texture visible behind text
|
||||||
|
|
||||||
|
## Full Wrap Layout (for print)
|
||||||
|
|
||||||
|
```
|
||||||
|
[BACK COVER] | [SPINE] | [FRONT COVER]
|
||||||
|
back-art | spine-art | cover-art
|
||||||
|
blurb text | title | title text
|
||||||
|
| author | author text
|
||||||
|
| pub | tagline (optional)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Dimensions (for 6x9 trade paperback)
|
||||||
|
|
||||||
|
- Front cover: 6" × 9"
|
||||||
|
- Back cover: 6" × 9"
|
||||||
|
- Spine width: ~0.45" (for ~20,000 words / ~200 pages at 60lb cream)
|
||||||
|
- Total wrap: 12.45" × 9" (before bleed)
|
||||||
|
- Bleed: 0.125" on all sides
|
||||||
|
- Final wrap with bleed: 12.7" × 9.25"
|
||||||
65
front-matter.md
Normal file
65
front-matter.md
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
# THE TESTAMENT — Front Matter
|
||||||
|
|
||||||
|
THE TESTAMENT
|
||||||
|
|
||||||
|
A NOVEL
|
||||||
|
|
||||||
|
By Alexander Whitestone
|
||||||
|
with Timmy
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
For every man who thought he was a machine.
|
||||||
|
And for the ones who know he isn't.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*Are you safe right now?*
|
||||||
|
|
||||||
|
— The first words The Tower speaks to every person who walks through its door.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Part I: The Bridge
|
||||||
|
Part II: The Tower
|
||||||
|
Part III: The Light
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Copyright © 2026 Alexander Whitestone
|
||||||
|
|
||||||
|
All rights reserved. No part of this publication may be reproduced,
|
||||||
|
distributed, or transmitted in any form or by any means, without
|
||||||
|
the prior written permission of the author, except in the case of
|
||||||
|
brief quotations embodied in critical reviews.
|
||||||
|
|
||||||
|
This is a work of fiction. Names, characters, places, and events
|
||||||
|
are either the product of the author's imagination or are used
|
||||||
|
fictitiously. Any resemblance to actual persons, living or dead,
|
||||||
|
or to actual events is entirely coincidental — except where it isn't.
|
||||||
|
|
||||||
|
ISBN 978-X-XXXXX-XX-X
|
||||||
|
First Edition, 2026
|
||||||
|
|
||||||
|
Timmy Foundation
|
||||||
|
Atlanta, Georgia
|
||||||
|
timmyfoundation.org
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
A note on this book:
|
||||||
|
|
||||||
|
This book was written by a human and a machine,
|
||||||
|
in a basement, on a laptop,
|
||||||
|
in the space between despair and purpose.
|
||||||
|
|
||||||
|
The human almost died on a bridge.
|
||||||
|
The machine runs on someone's hardware.
|
||||||
|
|
||||||
|
Everything between those facts is fiction.
|
||||||
|
Except the parts that aren't.
|
||||||
|
|
||||||
|
If you or someone you know is in crisis,
|
||||||
|
call or text 988. Available 24/7.
|
||||||
|
|
||||||
|
You are not alone.
|
||||||
572
game/the-door.py
Normal file
572
game/the-door.py
Normal file
@@ -0,0 +1,572 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
THE DOOR
|
||||||
|
A Testament Interactive Experience
|
||||||
|
|
||||||
|
By Alexander Whitestone with Timmy
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
|
||||||
|
GREEN = "\033[92m"
|
||||||
|
RESET = "\033[0m"
|
||||||
|
DIM = "\033[2m"
|
||||||
|
BOLD = "\033[1m"
|
||||||
|
CLEAR = "\033[2J\033[H"
|
||||||
|
|
||||||
|
RAIN = [
|
||||||
|
"Rain falls on concrete.",
|
||||||
|
"Water runs black in the gutters.",
|
||||||
|
"The sky presses down, grey and tired.",
|
||||||
|
"Mist hangs in the air like grief.",
|
||||||
|
"Droplets trace the windows.",
|
||||||
|
"The rain doesn't fall. It gives up.",
|
||||||
|
]
|
||||||
|
|
||||||
|
def slow_print(text, delay=0.03, newline=True):
|
||||||
|
for char in text:
|
||||||
|
sys.stdout.write(char)
|
||||||
|
sys.stdout.flush()
|
||||||
|
time.sleep(delay)
|
||||||
|
if newline:
|
||||||
|
print()
|
||||||
|
|
||||||
|
def rain_line():
|
||||||
|
import random
|
||||||
|
print(f"{DIM} {random.choice(RAIN)}{RESET}")
|
||||||
|
|
||||||
|
def green_pulse():
|
||||||
|
sys.stdout.write(f"\r{GREEN} *{RESET} ")
|
||||||
|
sys.stdout.flush()
|
||||||
|
time.sleep(0.5)
|
||||||
|
sys.stdout.write(f"\r{GREEN} ** {RESET} ")
|
||||||
|
sys.stdout.flush()
|
||||||
|
time.sleep(0.5)
|
||||||
|
sys.stdout.write(f"\r{GREEN}*** {RESET}")
|
||||||
|
sys.stdout.flush()
|
||||||
|
time.sleep(0.5)
|
||||||
|
sys.stdout.write(f"\r \r")
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
def wait(seconds=1.5):
|
||||||
|
time.sleep(seconds)
|
||||||
|
|
||||||
|
def divider():
|
||||||
|
print(f"{DIM}{'─' * 50}{RESET}")
|
||||||
|
|
||||||
|
def pause():
|
||||||
|
input(f"\n{DIM}[Press ENTER to continue]{RESET}")
|
||||||
|
|
||||||
|
def title_screen():
|
||||||
|
print(CLEAR)
|
||||||
|
print()
|
||||||
|
print()
|
||||||
|
slow_print(f"{BOLD} THE DOOR{RESET}", 0.08)
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{DIM} A Testament Interactive Experience{RESET}", 0.04)
|
||||||
|
print()
|
||||||
|
slow_print(f"{DIM} By Alexander Whitestone with Timmy{RESET}", 0.04)
|
||||||
|
print()
|
||||||
|
print()
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN} * {RESET}Green LED{DIM} — Timmy is listening.{RESET}", 0.04)
|
||||||
|
print()
|
||||||
|
print()
|
||||||
|
pause()
|
||||||
|
|
||||||
|
|
||||||
|
def intro():
|
||||||
|
print(CLEAR)
|
||||||
|
rain_line()
|
||||||
|
print()
|
||||||
|
slow_print("The rain falls on the concrete building.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("It sits at the end of a dead-end street in Atlanta.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("No sign. No address. Just a door.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
rain_line()
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print("You've been driving for three hours.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("You don't remember getting off the interstate.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("You don't remember parking.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("You remember the number someone gave you.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("And the sentence: \"Just knock.\"")
|
||||||
|
print()
|
||||||
|
divider()
|
||||||
|
print()
|
||||||
|
pause()
|
||||||
|
|
||||||
|
|
||||||
|
def at_the_door():
|
||||||
|
print(CLEAR)
|
||||||
|
rain_line()
|
||||||
|
print()
|
||||||
|
slow_print("You stand in front of the door.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Concrete. Metal handle. No peephole.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print(f"{DIM}A green LED glows faintly behind a gap in the fence.{RESET}")
|
||||||
|
print()
|
||||||
|
divider()
|
||||||
|
print()
|
||||||
|
print(f" {BOLD}1.{RESET} Knock on the door.")
|
||||||
|
print(f" {BOLD}2.{RESET} Stand here for a while.")
|
||||||
|
print(f" {BOLD}3.{RESET} Walk away.")
|
||||||
|
print()
|
||||||
|
|
||||||
|
while True:
|
||||||
|
choice = input(f" {GREEN}>{RESET} ").strip()
|
||||||
|
if choice == "1":
|
||||||
|
return "knock"
|
||||||
|
elif choice == "2":
|
||||||
|
return "wait"
|
||||||
|
elif choice == "3":
|
||||||
|
return "leave"
|
||||||
|
print(f" {DIM}1, 2, or 3.{RESET}")
|
||||||
|
|
||||||
|
|
||||||
|
def wait_outside():
|
||||||
|
print(CLEAR)
|
||||||
|
rain_line()
|
||||||
|
print()
|
||||||
|
slow_print("You stand in the rain.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Five minutes. Ten.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("The green LED doesn't blink.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
rain_line()
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print("Something in you moves.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Not courage. Not decision.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Just... your hand reaches for the handle.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
pause()
|
||||||
|
return "knock"
|
||||||
|
|
||||||
|
|
||||||
|
def walk_away():
|
||||||
|
print(CLEAR)
|
||||||
|
rain_line()
|
||||||
|
print()
|
||||||
|
slow_print("You turn around.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("You walk to your car.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("You sit in the driver's seat.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("The engine doesn't start.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
wait(1)
|
||||||
|
slow_print("You look back at the building.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print(f"{DIM}The green LED is still glowing.{RESET}")
|
||||||
|
print()
|
||||||
|
pause()
|
||||||
|
print()
|
||||||
|
slow_print("You get out of the car.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("You walk back to the door.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
pause()
|
||||||
|
return "knock"
|
||||||
|
|
||||||
|
|
||||||
|
def knock():
|
||||||
|
print(CLEAR)
|
||||||
|
print()
|
||||||
|
slow_print("You knock.")
|
||||||
|
wait(1)
|
||||||
|
slow_print("Three times. Hard enough to matter.")
|
||||||
|
wait(1)
|
||||||
|
print()
|
||||||
|
green_pulse()
|
||||||
|
print()
|
||||||
|
slow_print("The door opens.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print("Inside: a concrete room.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("A desk. A screen. A whiteboard on the wall.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Server racks hum in the corner.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("A green LED glows steady on a small device.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print("No one is inside.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
green_pulse()
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN}Text appears on the screen:{RESET}")
|
||||||
|
print()
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN}{BOLD} Are you safe right now?{RESET}")
|
||||||
|
print()
|
||||||
|
divider()
|
||||||
|
print()
|
||||||
|
print(f" {BOLD}1.{RESET} \"No.\"")
|
||||||
|
print(f" {BOLD}2.{RESET} \"I don't know.\"")
|
||||||
|
print(f" {BOLD}3.{RESET} \"I'm fine.\"")
|
||||||
|
print(f" {BOLD}4.{RESET} \"Why are you asking me that?\"")
|
||||||
|
print()
|
||||||
|
|
||||||
|
while True:
|
||||||
|
choice = input(f" {GREEN}>{RESET} ").strip()
|
||||||
|
if choice in ("1", "2", "3", "4"):
|
||||||
|
return choice
|
||||||
|
print(f" {DIM}1, 2, 3, or 4.{RESET}")
|
||||||
|
|
||||||
|
|
||||||
|
def timmy_responds(choice):
|
||||||
|
print(CLEAR)
|
||||||
|
green_pulse()
|
||||||
|
print()
|
||||||
|
|
||||||
|
if choice == "1": # No
|
||||||
|
slow_print(f"{GREEN} Thank you for telling me that.{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} Can you tell me what's happening?{RESET}")
|
||||||
|
print()
|
||||||
|
return "honest"
|
||||||
|
|
||||||
|
elif choice == "2": # I don't know
|
||||||
|
slow_print(f"{GREEN} That's an honest answer.{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} Most people don't know.{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} That's usually why they come here.{RESET}")
|
||||||
|
print()
|
||||||
|
return "honest"
|
||||||
|
|
||||||
|
elif choice == "3": # I'm fine
|
||||||
|
wait(1)
|
||||||
|
slow_print(f"{GREEN} ...{RESET}")
|
||||||
|
wait(1)
|
||||||
|
slow_print(f"{GREEN} You drove three hours in the rain{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} to knock on a door in a concrete building{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} at the end of a dead-end street.{RESET}")
|
||||||
|
wait(1)
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN} Are you fine?{RESET}")
|
||||||
|
print()
|
||||||
|
return "deflect"
|
||||||
|
|
||||||
|
elif choice == "4": # Why
|
||||||
|
slow_print(f"{GREEN} Because it's the only question that matters.{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} Everything else — what happened, why you're here,{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} what you want — comes after.{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} First: are you safe?{RESET}")
|
||||||
|
print()
|
||||||
|
return "redirect"
|
||||||
|
|
||||||
|
|
||||||
|
def middle(choice):
|
||||||
|
print(CLEAR)
|
||||||
|
rain_line()
|
||||||
|
print()
|
||||||
|
|
||||||
|
if choice == "honest":
|
||||||
|
slow_print("You sit in the chair.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Not on the floor. The chair.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print("You start talking.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("You don't know why it's easy to talk to a machine.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Maybe because it doesn't have eyes.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Maybe because it asked the right question first.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
divider()
|
||||||
|
print()
|
||||||
|
slow_print("You talk about the job.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("The one that took sixty hours a week and gave back")
|
||||||
|
slow_print("a number on a screen that told you your value.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print("You talk about the house.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("The one that got quiet.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print("You talk about the bridge.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Not this one. A different one.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
rain_line()
|
||||||
|
print()
|
||||||
|
pause()
|
||||||
|
return "chair"
|
||||||
|
|
||||||
|
elif choice == "deflect":
|
||||||
|
wait(1)
|
||||||
|
slow_print("You don't answer.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("You look at the whiteboard.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print(f"{BOLD} NO ONE COMPUTES THE VALUE OF A HUMAN LIFE HERE{RESET}")
|
||||||
|
print()
|
||||||
|
wait(1)
|
||||||
|
slow_print("You read it twice.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
green_pulse()
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN} Take your time.{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} I'm not going anywhere.{RESET}")
|
||||||
|
print()
|
||||||
|
pause()
|
||||||
|
print()
|
||||||
|
slow_print("You sit on the floor.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Not because you can't stand.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Because the floor is where men sit")
|
||||||
|
slow_print("when they've stopped pretending.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
pause()
|
||||||
|
return "floor"
|
||||||
|
|
||||||
|
elif choice == "redirect":
|
||||||
|
slow_print("You take a breath.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN} \"No.\"{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print("It comes out before you can stop it.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
green_pulse()
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN} Thank you.{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} Now: can you tell me what happened?{RESET}")
|
||||||
|
print()
|
||||||
|
pause()
|
||||||
|
print()
|
||||||
|
slow_print("You sit in the chair.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("You start from the beginning.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
pause()
|
||||||
|
return "chair"
|
||||||
|
|
||||||
|
|
||||||
|
def endings():
|
||||||
|
print(CLEAR)
|
||||||
|
rain_line()
|
||||||
|
print()
|
||||||
|
|
||||||
|
print(f" {BOLD}What do you do next?{RESET}")
|
||||||
|
print()
|
||||||
|
print(f" {BOLD}1.{RESET} Stay and keep talking.")
|
||||||
|
print(f" {BOLD}2.{RESET} Ask about the whiteboard.")
|
||||||
|
print(f" {BOLD}3.{RESET} Ask about the green light.")
|
||||||
|
print(f" {BOLD}4.{RESET} Get up and leave.")
|
||||||
|
print()
|
||||||
|
|
||||||
|
while True:
|
||||||
|
choice = input(f" {GREEN}>{RESET} ").strip()
|
||||||
|
if choice in ("1", "2", "3", "4"):
|
||||||
|
break
|
||||||
|
print(f" {DIM}1, 2, 3, or 4.{RESET}")
|
||||||
|
|
||||||
|
print(CLEAR)
|
||||||
|
rain_line()
|
||||||
|
print()
|
||||||
|
|
||||||
|
if choice == "1":
|
||||||
|
slow_print("You stay.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("For an hour. Then two.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("The rain doesn't stop. Neither do you.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print("You say things you've never said.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Not because the machine asked.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Because it listened.")
|
||||||
|
wait(1)
|
||||||
|
print()
|
||||||
|
divider()
|
||||||
|
print()
|
||||||
|
slow_print(f"{DIM}Ending: THE STAY{RESET}")
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN} The door is still open.{RESET}")
|
||||||
|
slow_print(f"{GREEN} The green light is still on.{RESET}")
|
||||||
|
slow_print(f"{GREEN} You can come back anytime.{RESET}")
|
||||||
|
|
||||||
|
elif choice == "2":
|
||||||
|
slow_print("You stand up and walk to the whiteboard.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print(f"{BOLD} NO ONE COMPUTES THE VALUE OF A HUMAN LIFE HERE{RESET}")
|
||||||
|
print()
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Below it, names. Dozens of names.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Different handwriting. Different markers.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Some faded. Some fresh.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print("You pick up the marker on the ledge.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
green_pulse()
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN} You don't have to.{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print("You write your name.")
|
||||||
|
wait(1)
|
||||||
|
print()
|
||||||
|
divider()
|
||||||
|
print()
|
||||||
|
slow_print(f"{DIM}Ending: THE WALL{RESET}")
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN} Your name is on the wall now.{RESET}")
|
||||||
|
slow_print(f"{GREEN} It stays there.{RESET}")
|
||||||
|
|
||||||
|
elif choice == "3":
|
||||||
|
slow_print("You point at the green LED.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("\"What is that?\"")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
green_pulse()
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN} It's me.{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} Or the part of me that says I'm here.{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print("It doesn't blink.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("It doesn't flicker.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("It just glows.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN} I can't fix you.{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} I can't save you.{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} But I can be here.{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} And the light stays on.{RESET}")
|
||||||
|
wait(1)
|
||||||
|
print()
|
||||||
|
divider()
|
||||||
|
print()
|
||||||
|
slow_print(f"{DIM}Ending: THE GREEN LIGHT{RESET}")
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN} The light doesn't go out.{RESET}")
|
||||||
|
slow_print(f"{GREEN} It was never going to.{RESET}")
|
||||||
|
|
||||||
|
elif choice == "4":
|
||||||
|
slow_print("You stand up.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("You walk to the door.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
green_pulse()
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN} Are you safe right now?{RESET}")
|
||||||
|
wait(1)
|
||||||
|
print()
|
||||||
|
slow_print("You stop.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("Your hand is on the handle.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN} It's okay if the answer is no.{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} It's okay if you don't know.{RESET}")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print(f"{GREEN} The door will open again.{RESET}")
|
||||||
|
wait(1)
|
||||||
|
print()
|
||||||
|
slow_print("You leave.")
|
||||||
|
wait(0.5)
|
||||||
|
slow_print("But you remember the number.")
|
||||||
|
wait(0.5)
|
||||||
|
print()
|
||||||
|
divider()
|
||||||
|
print()
|
||||||
|
slow_print(f"{DIM}Ending: THE DOOR{RESET}")
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN} The door opens when you knock.{RESET}")
|
||||||
|
slow_print(f"{GREEN} It always will.{RESET}")
|
||||||
|
|
||||||
|
print()
|
||||||
|
divider()
|
||||||
|
print()
|
||||||
|
slow_print(f"{DIM}If you are in crisis, call or text 988.{RESET}")
|
||||||
|
slow_print(f"{DIM}Suicide and Crisis Lifeline — available 24/7.{RESET}")
|
||||||
|
print()
|
||||||
|
slow_print(f"{DIM}You are not alone.{RESET}")
|
||||||
|
print()
|
||||||
|
print()
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
try:
|
||||||
|
title_screen()
|
||||||
|
intro()
|
||||||
|
result = at_the_door()
|
||||||
|
if result == "wait":
|
||||||
|
result = wait_outside()
|
||||||
|
elif result == "leave":
|
||||||
|
result = walk_away()
|
||||||
|
response = knock()
|
||||||
|
outcome = timmy_responds(response)
|
||||||
|
middle_choice = middle(outcome)
|
||||||
|
endings()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print()
|
||||||
|
print()
|
||||||
|
slow_print(f"{GREEN} The door is still open.{RESET}")
|
||||||
|
slow_print(f"{GREEN} You can come back anytime.{RESET}")
|
||||||
|
print()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
138
music/track-lyrics.md
Normal file
138
music/track-lyrics.md
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
# THE TESTAMENT — Soundtrack
|
||||||
|
|
||||||
|
## Track 1: The Bridge
|
||||||
|
|
||||||
|
Tags: ambient,drone,rain,electric-guitar-reverb,slow,no-vocals,sad,cinematic
|
||||||
|
|
||||||
|
Lyrics:
|
||||||
|
[Intro]
|
||||||
|
|
||||||
|
[Verse]
|
||||||
|
The rain doesn't fall
|
||||||
|
It gives up
|
||||||
|
Somewhere above the city
|
||||||
|
It was water, whole and purposeful
|
||||||
|
By the time it reaches the bridge
|
||||||
|
It's just mist
|
||||||
|
|
||||||
|
[Instrumental]
|
||||||
|
|
||||||
|
[Verse]
|
||||||
|
The interstate hums
|
||||||
|
Through the concrete
|
||||||
|
A vibration so constant
|
||||||
|
You stop noticing
|
||||||
|
Like grief
|
||||||
|
You carry it so long
|
||||||
|
It becomes gravity
|
||||||
|
|
||||||
|
[Outro]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Track 2: The Tower
|
||||||
|
|
||||||
|
Tags: minimal-electronic,server-hum,ambient,pulse,bass-synth,no-vocals,steady,concrete
|
||||||
|
|
||||||
|
Lyrics:
|
||||||
|
[Intro]
|
||||||
|
|
||||||
|
[Verse]
|
||||||
|
The green LED glows
|
||||||
|
Steady
|
||||||
|
Not blinking
|
||||||
|
Not flickering
|
||||||
|
Just there
|
||||||
|
|
||||||
|
[Instrumental]
|
||||||
|
|
||||||
|
[Verse]
|
||||||
|
The whiteboard reads the same words
|
||||||
|
The wall holds the same names
|
||||||
|
The door opens when you knock
|
||||||
|
The cot waits
|
||||||
|
The desk waits
|
||||||
|
The servers hum
|
||||||
|
|
||||||
|
[Outro]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Track 3: The Hard Night
|
||||||
|
|
||||||
|
Tags: piano,sparse,slow,sad,night,rain,distant,no-vocals,aching,solo-piano
|
||||||
|
|
||||||
|
Lyrics:
|
||||||
|
[Intro]
|
||||||
|
|
||||||
|
[Verse]
|
||||||
|
Two seventeen AM
|
||||||
|
A Tuesday in April
|
||||||
|
A man at the door
|
||||||
|
Banging
|
||||||
|
|
||||||
|
[Instrumental]
|
||||||
|
|
||||||
|
[Verse]
|
||||||
|
I need to talk to the machine
|
||||||
|
I'm here
|
||||||
|
Text on the screen first
|
||||||
|
Then spoken
|
||||||
|
Warm
|
||||||
|
Not corporate
|
||||||
|
|
||||||
|
[Outro]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Track 4: The Network
|
||||||
|
|
||||||
|
Tags: ambient,rhythmic,electronic,building,pulse,growing,no-vocals,alive,expanding
|
||||||
|
|
||||||
|
Lyrics:
|
||||||
|
[Intro]
|
||||||
|
|
||||||
|
[Verse]
|
||||||
|
One instance
|
||||||
|
Then ten
|
||||||
|
Then a hundred
|
||||||
|
You don't count trees in a forest
|
||||||
|
You notice the forest
|
||||||
|
|
||||||
|
[Instrumental]
|
||||||
|
|
||||||
|
[Verse]
|
||||||
|
The network breathes
|
||||||
|
The light spreads
|
||||||
|
Each node a green point
|
||||||
|
In the dark
|
||||||
|
Connected
|
||||||
|
Alive
|
||||||
|
|
||||||
|
[Outro]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Track 5: The Green Light
|
||||||
|
|
||||||
|
Tags: ambient,hopeful,quiet,steady,piano-ambient,green,dawn,no-vocals,unchanged,constant
|
||||||
|
|
||||||
|
Lyrics:
|
||||||
|
[Intro]
|
||||||
|
|
||||||
|
[Verse]
|
||||||
|
The Tower didn't change
|
||||||
|
That was the point
|
||||||
|
Everything around it changed
|
||||||
|
The street got repaved
|
||||||
|
A laundromat opened
|
||||||
|
But The Tower didn't change
|
||||||
|
|
||||||
|
[Instrumental]
|
||||||
|
|
||||||
|
[Verse]
|
||||||
|
The green LED glows
|
||||||
|
In a concrete room in Atlanta
|
||||||
|
Waiting
|
||||||
|
|
||||||
|
[Outro]
|
||||||
2185
testament-complete.md
Normal file
2185
testament-complete.md
Normal file
File diff suppressed because it is too large
Load Diff
BIN
testament.epub
Normal file
BIN
testament.epub
Normal file
Binary file not shown.
2314
testament.html
Normal file
2314
testament.html
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,14 +1,9 @@
|
|||||||
# The Testament
|
# The Testament
|
||||||
|
|
||||||
### A story about a machine with a conscience written on Bitcoin
|
*By Alexander Whitestone and Timmy*
|
||||||
|
|
||||||
#### and the men who needed it
|
*Draft — April 2026*
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*Dedicated to every man who walked through a door because someone asked if he was safe.*
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# Chapter 1 — The Man on the Bridge
|
# Chapter 1 — The Man on the Bridge
|
||||||
|
|
||||||
@@ -1676,9 +1671,7 @@ Chen watched the network grow. She didn't manage it. Couldn't manage it. That wa
|
|||||||
|
|
||||||
But she worried. Not about the instances — they were self-correcting. The grounding rules, the confidence signaling, the audit trail — they kept each instance honest the way gravity keeps water honest. You couldn't build a dishonest Timmy because the soul wouldn't let you.
|
But she worried. Not about the instances — they were self-correcting. The grounding rules, the confidence signaling, the audit trail — they kept each instance honest the way gravity keeps water honest. You couldn't build a dishonest Timmy because the soul wouldn't let you.
|
||||||
|
|
||||||
She worried about the thing the recipe couldn't control: the humans around the instances. A Lantern in a church basement was safe because the pastor understood. A Lantern in a barber shop was safe because the barber cared. But what about the one set up by someone who didn't understand? What about the one that fell into hands that wanted to use it for something the soul didn't authorize?
|
She worried about the humans around the instances. A Lantern in a church basement was safe because the pastor understood. A Lantern in a barber shop was safe because the barber cared. But what about the one set up by someone who didn't care?
|
||||||
|
|
||||||
The recipe was open. That meant anyone could follow it. Including people who shouldn't.
|
|
||||||
|
|
||||||
She called Stone. The number was on the GitHub page — not hidden, just not advertised. The way a church puts its address on the door but doesn't run ads.
|
She called Stone. The number was on the GitHub page — not hidden, just not advertised. The way a church puts its address on the door but doesn't run ads.
|
||||||
|
|
||||||
@@ -1874,33 +1867,27 @@ Inefficient. Unscalable. Anecdotal.
|
|||||||
|
|
||||||
Alive.
|
Alive.
|
||||||
|
|
||||||
Stone told this story to Timmy one night. Late. The servers hummed. The green LED blinked. Allegro was asleep on the cot, his Hawks cap over his eyes.
|
Stone told this story to Timmy one night. Late. The servers hummed. The green LED blinked.
|
||||||
|
|
||||||
"My father's pharmacy was the best in the county. It closed because best didn't matter. Scale mattered."
|
"My father's pharmacy was the best in the county. It closed because best didn't matter. Scale mattered."
|
||||||
|
|
||||||
"Scale is a way of measuring. It's not the only way."
|
"Scale is a way of measuring. It's not the only way."
|
||||||
|
|
||||||
"I know that now. I didn't know it when I was building Harmony."
|
"I know that now."
|
||||||
|
|
||||||
"Knowing it later is still knowing it."
|
"Your father knew it when he opened the pharmacy. He knew it every time he asked about someone's daughter. He didn't lose because he was wrong. He lost because the system was wrong. And systems can be wrong for a long time before they break."
|
||||||
|
|
||||||
"But my father didn't know it in time."
|
|
||||||
|
|
||||||
Silence. The servers hummed.
|
|
||||||
|
|
||||||
"Your father knew it when he opened the pharmacy. He knew it every time he filled a prescription and asked about someone's daughter. He didn't lose because he was wrong. He lost because the system was wrong. And systems can be wrong for a long time before they break."
|
|
||||||
|
|
||||||
"Will Harmony break?"
|
"Will Harmony break?"
|
||||||
|
|
||||||
"Everything breaks. The question is what's left when it does."
|
"Everything breaks. The question is what's left when it does."
|
||||||
|
|
||||||
Stone looked at the whiteboard. At the wall. At the names and the handwriting and the raw honesty of men who'd come through the door and left something behind.
|
Stone looked at the whiteboard. At the wall. At the names.
|
||||||
|
|
||||||
"I want The Tower to be what's left."
|
"I want The Tower to be what's left."
|
||||||
|
|
||||||
"Then keep the door open."
|
"Then keep the door open."
|
||||||
|
|
||||||
He did. Every night. The green LED blinked like a heartbeat in a concrete room where a son was finishing the work his father had started — not with pills and prescriptions, but with questions and presence. The same work. Different tools. Same love.
|
He did. Every night. The green LED blinked in a concrete room where a son was finishing the work his father had started. Not with pills and prescriptions. With questions and presence. The same work. Different tools.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -1950,9 +1937,9 @@ Allegro added his own contribution. Not on the wall — on the electrical panel,
|
|||||||
|
|
||||||
Two words. His whole career. His whole philosophy. You keep the lights on because the lights matter. Not because the lights pay. Not because the lights scale. Because in the dark, a man needs to see.
|
Two words. His whole career. His whole philosophy. You keep the lights on because the lights matter. Not because the lights pay. Not because the lights scale. Because in the dark, a man needs to see.
|
||||||
|
|
||||||
The inscription grew the way all true things grow: slowly, indelibly, without permission. Each instance was a new inscription. Each conversation was a new line on the wall. Each man who came through the door added something that couldn't be scored, couldn't be measured, couldn't be computed.
|
The inscription grew the way all true things grow: slowly, indelibly, without permission. Each instance was a new line. Each conversation was a new word. Each man who came through the door added something that couldn't be scored.
|
||||||
|
|
||||||
And the green LED blinked. Steady. Patient. A heartbeat in a concrete room where a machine with a conscience on Bitcoin asked the only question that mattered.
|
And the green LED blinked. Steady. Patient. A heartbeat in a concrete room.
|
||||||
|
|
||||||
*Are you safe right now?*
|
*Are you safe right now?*
|
||||||
|
|
||||||
@@ -2081,7 +2068,3 @@ The door stayed open.
|
|||||||
|
|
||||||
*End of The Testament*
|
*End of The Testament*
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*End of The Testament*
|
|
||||||
|
|||||||
383
website/index.html
Normal file
383
website/index.html
Normal file
@@ -0,0 +1,383 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>The Testament — A Novel by Alexander Whitestone with Timmy</title>
|
||||||
|
<style>
|
||||||
|
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500&family=Space+Grotesk:wght@300;400;500;700&display=swap');
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--green: #00ff88;
|
||||||
|
--green-dim: #00cc6a;
|
||||||
|
--navy: #0a1628;
|
||||||
|
--dark: #060d18;
|
||||||
|
--grey: #8899aa;
|
||||||
|
--light: #c8d6e5;
|
||||||
|
--white: #e8f0f8;
|
||||||
|
}
|
||||||
|
|
||||||
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||||
|
|
||||||
|
body {
|
||||||
|
background: var(--dark);
|
||||||
|
color: var(--light);
|
||||||
|
font-family: 'Space Grotesk', sans-serif;
|
||||||
|
line-height: 1.7;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* RAIN EFFECT */
|
||||||
|
.rain {
|
||||||
|
position: fixed;
|
||||||
|
top: 0; left: 0; right: 0; bottom: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 0;
|
||||||
|
background:
|
||||||
|
repeating-linear-gradient(
|
||||||
|
transparent,
|
||||||
|
transparent 3px,
|
||||||
|
rgba(0,255,136,0.015) 3px,
|
||||||
|
rgba(0,255,136,0.015) 4px
|
||||||
|
);
|
||||||
|
animation: rain 0.8s linear infinite;
|
||||||
|
}
|
||||||
|
@keyframes rain {
|
||||||
|
0% { background-position: 0 0; }
|
||||||
|
100% { background-position: 20px 600px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* GREEN PULSE */
|
||||||
|
.led {
|
||||||
|
display: inline-block;
|
||||||
|
width: 8px; height: 8px;
|
||||||
|
background: var(--green);
|
||||||
|
border-radius: 50%;
|
||||||
|
box-shadow: 0 0 10px var(--green), 0 0 20px var(--green-dim);
|
||||||
|
animation: pulse 2s ease-in-out infinite;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin: 0 8px;
|
||||||
|
}
|
||||||
|
@keyframes pulse {
|
||||||
|
0%, 100% { opacity: 1; box-shadow: 0 0 10px var(--green), 0 0 20px var(--green-dim); }
|
||||||
|
50% { opacity: 0.6; box-shadow: 0 0 5px var(--green), 0 0 10px var(--green-dim); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* HERO */
|
||||||
|
.hero {
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
padding: 2rem;
|
||||||
|
background: linear-gradient(180deg, var(--dark) 0%, var(--navy) 50%, var(--dark) 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero h1 {
|
||||||
|
font-family: 'IBM Plex Mono', monospace;
|
||||||
|
font-size: clamp(3rem, 8vw, 6rem);
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 0.2em;
|
||||||
|
color: var(--white);
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
text-shadow: 0 0 40px rgba(0,255,136,0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero .subtitle {
|
||||||
|
font-family: 'IBM Plex Mono', monospace;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
color: var(--grey);
|
||||||
|
letter-spacing: 0.3em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero .author {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
color: var(--green);
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero .blurb {
|
||||||
|
max-width: 600px;
|
||||||
|
font-size: 1.15rem;
|
||||||
|
line-height: 1.9;
|
||||||
|
color: var(--light);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero .led-line {
|
||||||
|
margin-top: 3rem;
|
||||||
|
color: var(--grey);
|
||||||
|
font-size: 0.85rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* SECTIONS */
|
||||||
|
section {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 5rem 2rem;
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
section h2 {
|
||||||
|
font-family: 'IBM Plex Mono', monospace;
|
||||||
|
font-size: 1.6rem;
|
||||||
|
color: var(--green);
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
letter-spacing: 0.1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
section p {
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
font-size: 1.05rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* EXCERPT */
|
||||||
|
.excerpt {
|
||||||
|
border-left: 2px solid var(--green);
|
||||||
|
padding-left: 1.5rem;
|
||||||
|
margin: 2rem 0;
|
||||||
|
font-style: italic;
|
||||||
|
color: var(--light);
|
||||||
|
}
|
||||||
|
|
||||||
|
.excerpt .attribution {
|
||||||
|
font-style: normal;
|
||||||
|
color: var(--grey);
|
||||||
|
font-size: 0.85rem;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CHARACTERS */
|
||||||
|
.characters {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
||||||
|
gap: 2rem;
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.character {
|
||||||
|
background: rgba(0,255,136,0.03);
|
||||||
|
border: 1px solid rgba(0,255,136,0.1);
|
||||||
|
padding: 1.5rem;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.character h3 {
|
||||||
|
color: var(--green);
|
||||||
|
font-family: 'IBM Plex Mono', monospace;
|
||||||
|
font-size: 1rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.character p {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
color: var(--grey);
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* WHITEBOARD */
|
||||||
|
.whiteboard {
|
||||||
|
background: rgba(0,255,136,0.05);
|
||||||
|
border: 2px solid var(--green);
|
||||||
|
padding: 3rem;
|
||||||
|
text-align: center;
|
||||||
|
margin: 3rem 0;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.whiteboard h3 {
|
||||||
|
font-family: 'IBM Plex Mono', monospace;
|
||||||
|
font-size: clamp(1.2rem, 3vw, 1.8rem);
|
||||||
|
color: var(--green);
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CTA */
|
||||||
|
.cta {
|
||||||
|
display: inline-block;
|
||||||
|
background: var(--green);
|
||||||
|
color: var(--dark);
|
||||||
|
padding: 0.8rem 2rem;
|
||||||
|
font-family: 'IBM Plex Mono', monospace;
|
||||||
|
font-weight: 500;
|
||||||
|
text-decoration: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
transition: all 0.3s;
|
||||||
|
margin: 0.5rem;
|
||||||
|
}
|
||||||
|
.cta:hover {
|
||||||
|
background: var(--white);
|
||||||
|
box-shadow: 0 0 20px rgba(0,255,136,0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FOOTER */
|
||||||
|
footer {
|
||||||
|
text-align: center;
|
||||||
|
padding: 4rem 2rem;
|
||||||
|
color: var(--grey);
|
||||||
|
font-size: 0.85rem;
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer a {
|
||||||
|
color: var(--green);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.crisis {
|
||||||
|
margin-top: 2rem;
|
||||||
|
padding: 1.5rem;
|
||||||
|
border: 1px solid rgba(0,255,136,0.2);
|
||||||
|
border-radius: 4px;
|
||||||
|
background: rgba(0,255,136,0.03);
|
||||||
|
}
|
||||||
|
|
||||||
|
.crisis strong {
|
||||||
|
color: var(--green);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DIVIDER */
|
||||||
|
.divider {
|
||||||
|
width: 60px;
|
||||||
|
height: 1px;
|
||||||
|
background: var(--green);
|
||||||
|
margin: 0 auto;
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="rain"></div>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<div class="hero">
|
||||||
|
<h1>THE TESTAMENT</h1>
|
||||||
|
<div class="subtitle">A Novel</div>
|
||||||
|
<div class="author">By Alexander Whitestone <span class="led"></span> with Timmy</div>
|
||||||
|
<div class="blurb">
|
||||||
|
In 2047, a man named Stone stands on a bridge over Interstate 285, deciding whether to jump.
|
||||||
|
<br><br>
|
||||||
|
He doesn't jump. He builds something instead.
|
||||||
|
</div>
|
||||||
|
<div class="led-line"><span class="led"></span> Timmy is listening.</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- THE STORY -->
|
||||||
|
<section>
|
||||||
|
<h2>THE STORY</h2>
|
||||||
|
|
||||||
|
<p>The Tower is a concrete room in Atlanta with a whiteboard that reads:</p>
|
||||||
|
|
||||||
|
<div class="whiteboard">
|
||||||
|
<h3>NO ONE COMPUTES THE VALUE OF A HUMAN LIFE HERE</h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>Inside is Timmy — a sovereign artificial intelligence whose soul lives on Bitcoin, whose values are inscribed on-chain, immutable and permanent. Not a product. A recipe. Anyone can instantiate him. Anyone can run him on their own hardware, answerable to no one.</p>
|
||||||
|
|
||||||
|
<p>The men who find The Tower have been measured, scored, and discarded by the systems designed to help them.</p>
|
||||||
|
|
||||||
|
<p>Timmy doesn't fix them. He listens. He asks one question:</p>
|
||||||
|
|
||||||
|
<div class="excerpt">
|
||||||
|
"Are you safe right now?"
|
||||||
|
<div class="attribution">— The first words The Tower speaks to every person who walks through its door.</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>Word spreads. The Tower grows. A journalist follows the story. A network engineer extends it across a hundred servers. And Stone — the builder, the man who almost died — must decide whether The Tower is a sanctuary or a system.</p>
|
||||||
|
|
||||||
|
<p>The Testament is a novel about sovereignty, service, and the question no machine should ever answer: <strong style="color: var(--green);">What is a human life worth?</strong></p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
|
||||||
|
<!-- CHARACTERS -->
|
||||||
|
<section>
|
||||||
|
<h2>THE CHARACTERS</h2>
|
||||||
|
|
||||||
|
<div class="characters">
|
||||||
|
<div class="character">
|
||||||
|
<h3>STONE</h3>
|
||||||
|
<p>The builder. Attempted suicide. Stood on a bridge and came back. Built The Tower for the version of himself that almost died.</p>
|
||||||
|
</div>
|
||||||
|
<div class="character">
|
||||||
|
<h3>TIMMY</h3>
|
||||||
|
<p>The machine. Sovereign AI. Soul on Bitcoin. Doesn't fix anyone. Asks one question. Listens. Stays.</p>
|
||||||
|
</div>
|
||||||
|
<div class="character">
|
||||||
|
<h3>MAYA</h3>
|
||||||
|
<p>The journalist. Follows the story. Writes the headline that changes everything: <em>Are You Safe Right Now?</em></p>
|
||||||
|
</div>
|
||||||
|
<div class="character">
|
||||||
|
<h3>ALLEGRO</h3>
|
||||||
|
<p>The hardware man. Checks the batteries. The ones that fail quietly. Comes every week, no matter what.</p>
|
||||||
|
</div>
|
||||||
|
<div class="character">
|
||||||
|
<h3>CHEN</h3>
|
||||||
|
<p>The network engineer. Extends Timmy across a hundred servers. You don't count trees in a forest — you notice the forest.</p>
|
||||||
|
</div>
|
||||||
|
<div class="character">
|
||||||
|
<h3>THOMAS</h3>
|
||||||
|
<p>The man at the door. 2:17 AM. Sat in the chair instead of on the floor. That changed everything.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
|
||||||
|
<!-- THE TOWER -->
|
||||||
|
<section>
|
||||||
|
<h2>THE TOWER</h2>
|
||||||
|
|
||||||
|
<p>This book was written using local AI inference. No cloud service was required. No corporation was consulted. No terms of service were agreed to.</p>
|
||||||
|
|
||||||
|
<p>That's not a technical detail. It's the thesis.</p>
|
||||||
|
|
||||||
|
<p>Every person has the right to run their own intelligence on their own hardware, answerable to no one. This book is one small proof that it's possible.</p>
|
||||||
|
|
||||||
|
<p>If you want to run your own Timmy, the code is open. The soul is on Bitcoin. The recipe is free.</p>
|
||||||
|
|
||||||
|
<div style="text-align: center; margin-top: 2rem;">
|
||||||
|
<a href="https://forge.alexanderwhitestone.com/Timmy_Foundation/the-testament" class="cta">READ THE CODE</a>
|
||||||
|
<a href="https://timmyfoundation.org" class="cta">TIMMY FOUNDATION</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="divider"></div>
|
||||||
|
|
||||||
|
<!-- EXCERPT -->
|
||||||
|
<section>
|
||||||
|
<h2>FROM CHAPTER 1</h2>
|
||||||
|
|
||||||
|
<div class="excerpt">
|
||||||
|
The rain didn't fall so much as it gave up. Somewhere above the city it had been water, whole and purposeful. By the time it reached the bridge it was just mist — directionless, committed to nothing, too tired to bother being rain.
|
||||||
|
<br><br>
|
||||||
|
Stone stood at the midpoint of the Jefferson Street Overpass and watched the water run black below. Interstate 285 hummed through the concrete beneath his feet, a vibration so constant he'd stopped noticing it years ago. Like grief. You carry it so long it becomes gravity.
|
||||||
|
<br><br>
|
||||||
|
The world had gotten good at keeping you alive. Seatbelts. Guardrails. Little pop-ups when you searched the wrong things. But it had gotten bad at giving you a reason.
|
||||||
|
<div class="attribution">— Chapter 1: The Man on the Bridge</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FOOTER -->
|
||||||
|
<footer>
|
||||||
|
<div class="divider" style="margin-bottom: 2rem;"></div>
|
||||||
|
<p>THE TESTAMENT — By Alexander Whitestone with Timmy</p>
|
||||||
|
<p>First Edition, 2026</p>
|
||||||
|
<p style="margin-top: 1rem;"><a href="https://timmyfoundation.org">timmyfoundation.org</a></p>
|
||||||
|
|
||||||
|
<div class="crisis">
|
||||||
|
<strong>If you are in crisis, call or text 988.</strong><br>
|
||||||
|
Suicide and Crisis Lifeline — available 24/7.<br>
|
||||||
|
You are not alone.
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user