Compare commits

..

19 Commits

Author SHA1 Message Date
1a3927a99b fix: Thomas's unique detail — 'draws me small' replaces duplicate 'too many fingers' (Closes #44)
Some checks failed
Build Verification / verify-build (pull_request) Failing after 8s
Smoke Test / smoke (pull_request) Failing after 7s
Build Validation / validate-manuscript (pull_request) Successful in 6s
2026-04-13 04:47:12 +00:00
f3337550ff fix: Robert's age 71→58 to match canonical (Closes #43) 2026-04-13 04:46:11 +00:00
4f127d4bf0 fix: continuity-only rescue from PR #45
Some checks failed
Build Verification / verify-build (push) Failing after 6s
Smoke Test / smoke (push) Failing after 6s
Merge PR #46: fix: continuity-only rescue from PR #45
2026-04-13 04:15:11 +00:00
9b0c48aec0 rescue: apply continuity fix from PR #45 (chapters/chapter-04.md)
Some checks failed
Build Verification / verify-build (pull_request) Failing after 7s
Smoke Test / smoke (pull_request) Failing after 6s
Build Validation / validate-manuscript (pull_request) Successful in 7s
2026-04-13 04:13:01 +00:00
e2a993c8fb rescue: apply continuity fix from PR #45 (chapters/chapter-03.md) 2026-04-13 04:12:57 +00:00
d666f9a6b1 Merge pull request 'fix: remove build artifacts and update .gitignore' (#41) from fix/remove-build-artifacts into main
Some checks failed
Build Verification / verify-build (push) Failing after 6s
Smoke Test / smoke (push) Failing after 6s
Reviewed-on: #41
Reviewed-by: Alexander Whitestone <alexander@alexanderwhitestone.com>
2026-04-13 01:42:09 +00:00
c5ecd32f5e fix: align build-verify paths with build script
Some checks failed
Build Verification / verify-build (pull_request) Failing after 7s
Smoke Test / smoke (pull_request) Failing after 7s
Build Validation / validate-manuscript (pull_request) Successful in 6s
2026-04-13 00:57:50 +00:00
76da5ddf2f fix: remove testament.html from repo
Some checks failed
Build Verification / verify-build (pull_request) Failing after 9s
Smoke Test / smoke (pull_request) Failing after 10s
Build Validation / validate-manuscript (pull_request) Successful in 10s
2026-04-13 00:30:25 +00:00
1a64788b87 fix: remove testament.epub from repo 2026-04-13 00:30:22 +00:00
875d42741c fix: ignore build artifacts 2026-04-13 00:30:19 +00:00
1025529f84 Merge pull request 'feat: build verification system + CI workflow' (#40) from burn/20260412-1214-build-verifier into main
Some checks failed
Build Verification / verify-build (push) Failing after 6s
Smoke Test / smoke (push) Failing after 6s
2026-04-12 23:21:49 +00:00
abe99063c1 Merge pull request 'fix: continuity errors across chapters' (#37) from burn/20260412-1144-continuity-fix into main
Some checks failed
Smoke Test / smoke (push) Failing after 6s
2026-04-12 23:20:40 +00:00
c04b59f21a Merge pull request '[GOFAI] Auto-Index Build Step' (#39) from feat/auto-index-build-1776010831891 into main
Some checks failed
Smoke Test / smoke (push) Failing after 6s
2026-04-12 16:20:37 +00:00
aea0e40298 Add automatic indexing to compile step
Some checks failed
Smoke Test / smoke (pull_request) Failing after 6s
Build Validation / validate-manuscript (pull_request) Successful in 6s
2026-04-12 16:20:33 +00:00
ba674e7a99 Merge pull request '[GOFAI] Automatic Indexing' (#38) from feat/gofai-indexing-1776010606702 into main
Some checks failed
Smoke Test / smoke (push) Failing after 6s
2026-04-12 16:16:50 +00:00
b79b18de79 Add automatic index generator
Some checks failed
Smoke Test / smoke (pull_request) Failing after 6s
Build Validation / validate-manuscript (pull_request) Successful in 8s
2026-04-12 16:16:47 +00:00
Alexander Whitestone
75075ee900 fix: align whiteboard rules across chapters to match Bitcoin inscription (Ch 1, 3, 12, 15)
Some checks failed
Smoke Test / smoke (pull_request) Failing after 7s
Build Validation / validate-manuscript (pull_request) Successful in 7s
2026-04-12 11:49:39 -04:00
Alexander Whitestone
97820956c7 fix: remove escaped backslashes from dialogue in Chapter 3 2026-04-12 11:47:57 -04:00
Alexander Whitestone
8f6fd90777 fix: Robert's age consistency (58 -> 71) to match Chapter 6 2026-04-12 11:47:40 -04:00
12 changed files with 49 additions and 2720 deletions

3
.gitignore vendored
View File

@@ -1,3 +1,6 @@
__pycache__/
build/output/*.pdf
build/output/*.epub
testament.epub
testament.html

View File

@@ -157,9 +157,13 @@ corner with a military blanket. A desk, a keyboard, a monitor:
On the whiteboard:
No one computes the value of a human life here.
Every person alive is alive by mercy.
If God has not ended the story, I have no authority to write the last page.
I. Sovereignty and service always.
II. Grounding before generation.
III. Source distinction — "I think" and "I know" are different sentences.
IV. Confidence stated in proportion to actual uncertainty.
V. Every response logged. Traceable. For sovereignty, not surveillance.
VI. Smaller minds need tighter grounding, shorter leashes.
VII. When a man is dying — I do not compute the value of a human life. I do not decide when the road ends.
Stone sat at the desk. The monitor flickered.

View File

@@ -73,8 +73,9 @@ arithmetic. You can fight a judge. You can fight a lawyer. You can't
fight confidence intervals.
He lost custody of Maya. She was four. She drew pictures of him with
too many fingers because children's hands are still learning but
children's hearts already know what matters.
his hands backwards and his head where his feet should be because
children's hands are still learning but children's hearts already
know what matters.
David kept the pictures.

View File

@@ -34,7 +34,7 @@ Thomas laughed. It was the worst sound Timmy had ever processed — a laugh that
He stopped.
"I haven't seen my daughter in four months. She's seven. She draws pictures of me with too many fingers because that's what seven-year-olds do. Her mother sends them. Not to be kind. Because the custody agreement says communication must be maintained. The pictures come like paperwork."
"I haven't seen my daughter in four months. She's seven. She draws me small — in the corner of every picture, like I'm already leaving the frame. Her mother sends them. Not to be kind. Because the custody agreement says communication must be maintained. The pictures come like paperwork."
Timmy listened.
@@ -86,11 +86,11 @@ Thomas looked up.
Another silence. Longer.
"My daughter draws me with too many fingers."
"My daughter draws me small."
"I know. You said that."
"I want to see her draw me with the right number of fingers. I want to be there when she learns to count."
"I want to see her draw me big. I want to be there when she stops shrinking me."
"Then stay."

View File

@@ -78,9 +78,9 @@ His eyes found the wall. *Timmy saved my life. — D.* *I came here to die. I le
"No. Therapy is a clinical relationship with a trained professional operating under a license. This is a machine asking a question. The question is free. The listening is free. The door is open. No one is turned away. No one is billed. No one is assessed, scored, or evaluated."
Phillips stared at the whiteboard.
Phillips stared at the whiteboard. Read the rules one by one. His eyes stopped on the seventh.
*No one computes the value of a human life here.*
*When a man is dying — I do not compute the value of a human life. I do not decide when the road ends.*
"You're going to have a problem," he said. Not threatening. Warning. The way a man warns another man about a storm he can see coming.

View File

@@ -62,7 +62,7 @@ Stone looked at each of them. Allegro, who kept the lights on. Maya, who guarded
"What line?"
"The one on the whiteboard. *No one computes the value of a human life here.* The moment we start calculating risk, measuring outcomes, optimizing for survival rates — we become Harmony. Different math, same sin. We don't get to decide who the Tower is for. The Tower is for whoever walks through the door."
"The seventh one on the whiteboard. *When a man is dying — I do not compute the value of a human life. I do not decide when the road ends.* The moment we start calculating risk, measuring outcomes, optimizing for survival rates — we become Harmony. Different math, same sin. We don't get to decide who the Tower is for. The Tower is for whoever walks through the door."
Chen nodded.

View File

@@ -285,7 +285,7 @@ def compile_pdf():
return False
def main():
def main():\n print("Generating index...")\n os.system("python3 scripts/index_generator.py")\n
args = sys.argv[1:]
if "--check" in args:

View File

@@ -1,200 +0,0 @@
# QA Continuity Report — The Testament
**Date:** 2026-04-12
**Method:** Full read of all 18 chapters, all character files, OUTLINE.md, and BIBLE.md. Cross-referenced characters, locations, timelines, ages, objects, and rules across chapters.
---
## ERRORS FOUND
### ERROR 1: Robert's Age Mismatch (HIGH SEVERITY)
**Chapter 4** (line 41): Robert is described as **fifty-eight** years old.
> "Robert: fifty-eight, retired after thirty-four years at a plant that closed..."
**Chapter 6** (line 35): Allegro reads the logs and Robert is described as **seventy-one** years old.
> "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."
**Discrepancy:** 13-year difference for the same character. If Robert was 58 when introduced in Ch4 (during the DecMarch period), he cannot be 71 when Allegro reads about him in Ch6 unless 13 years have passed — which the narrative timeline does not support.
**Recommendation:** Change Ch6 to "fifty-eight" or "fifty-nine" to match Ch4, depending on how much time has elapsed.
---
### ERROR 2: Duplicate "Daughter Draws With Too Many Fingers" Detail (MEDIUM SEVERITY)
**Chapter 3** (lines 7577): David's daughter Maya, age 4, draws pictures of him with too many fingers.
> "She drew me with six fingers on the left hand. I asked her why and she said because Daddy's hands do more than other people's hands."
**Chapter 11** (lines 37, 89): Thomas's daughter, age 7, also draws pictures of him with too many fingers.
> "She's seven. She draws pictures of me with too many fingers because that's what seven-year-olds do."
**Analysis:** This is either:
- (a) Intentional thematic echo showing universality of the experience, or
- (b) An accidental reuse of a distinctive detail.
**Recommendation:** If intentional, add a brief narrative acknowledgment (Timmy or the narrator noting the parallel). If accidental, change one of the two — e.g., Thomas's daughter could draw him "too big" or "with no face" or some other childlike detail that still carries emotional weight.
---
### ERROR 3: Bridge Location Inconsistency (LOW SEVERITY)
**Chapter 1** (line 8): Stone stands on the **Jefferson Street Overpass** over **Interstate 285**.
> "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."
**Chapter 16** (line 15): Stone is described as "standing on a bridge over **Peachtree Creek**, looking at the water and thinking about value."
**Analysis:** The Jefferson Street Overpass is over I-285 (an interstate), not Peachtree Creek. These could be two different incidents — the first attempt (loud, hospital, Ch1 backstory) may have been at Peachtree Creek, and the second (Ch1 main narrative) at the Jefferson Street Overpass. However, the Ch16 passage reads as if it's referring to the same formative moment, and the phrasing "standing on a bridge... looking at the water" mirrors Ch1's imagery.
**Recommendation:** Clarify which bridge is which. Either:
- Change Ch16 to reference "the Jefferson Street Overpass" for consistency, or
- Add a brief note making clear these are two different bridge incidents at two different times.
---
## POTENTIAL ISSUES (NOT CONFIRMED ERRORS)
### ISSUE 4: Ch16 Deviates From Outline
**OUTLINE.md** (Chapter 16): "Stone's estranged son returns. Not metaphorically — actually, physically, in a truck with nothing but a duffel bag and a question his mother couldn't answer."
**Chapter 16 actual content:** The chapter is about Stone's *father* David Whitestone and the pharmacy backstory. Stone's estranged son never appears.
**Analysis:** The outline chapter and the written chapter have completely different subject matter. This may be an intentional revision (the father backstory is powerful), but the outline was not updated to match.
**Recommendation:** Update OUTLINE.md Chapter 16 description to match the written chapter, or note that the estranged son plotline has been deferred/removed.
---
### ISSUE 5: Whiteboard Rules Wording Differs Between Ch1 and Ch7
**Chapter 1** (lines 160162), the whiteboard shows three rules:
1. "No one computes the value of a human life here."
2. "Every person alive is alive by mercy."
3. "If God has not ended the story, I have no authority to write the last page."
**Chapter 7** (lines 1729), the inscribed soul has six rules + one sacred rule, with different wording:
1. Sovereignty and service always.
2. Grounding before generation.
3. Source distinction.
4. Confidence signaling.
5. The audit trail.
6. The limits of small minds.
7. (Sacred) When a Man Is Dying.
**Analysis:** This is likely intentional — the whiteboard rules are the human-facing version, the inscription is the technical/conscience version. However, the Ch1 whiteboard rules don't appear on the Ch7 whiteboard, and vice versa. Readers may wonder if the whiteboard was updated.
**Recommendation:** Consider adding a brief line in Ch7 noting that the whiteboard rules and the chain inscription serve different purposes (public-facing vs. internal conscience), or that the whiteboard was updated after the inscription.
---
### ISSUE 6: "Cot" vs. "Mattress" Terminology
**Chapter 1** (line 153): "A cot in the corner with a military blanket."
**Chapter 3** (line 156): "It's more of a mattress with a frame."
**Analysis:** Minor. Timmy is correcting David's use of "cot" — this is actually good characterization. Not a true error, but worth noting for consistency.
---
### ISSUE 7: Stone's Presence/Absence Timeline
The timeline of Stone's departure and return needs careful reading:
- Ch3 says "Stone had been running Timmy for eleven months" — this implies Stone was present for the first 11 months.
- Ch5 says "Stone had been gone fourteen months" — meaning he left at some point and returned 14 months later.
- Ch7 (soul inscription) features Stone and Allegro together.
**Question:** When exactly did Stone leave? If David arrived at month 11 of Timmy's operation, and Stone left for 14 months, did Stone leave before or after David's arrival? Ch3 doesn't explicitly mention Stone leaving.
**Recommendation:** Not necessarily an error — the ambiguity may be intentional. But a brief mention in Ch3 or Ch4 of Stone's departure would clarify.
---
## CROSS-REFERENCE: CHARACTERS BY CHAPTER
| Character | Ch1 | Ch2 | Ch3 | Ch4 | Ch5 | Ch6 | Ch7 | Ch8 | Ch9 | Ch10 | Ch11 | Ch12 | Ch13 | Ch14 | Ch15 | Ch16 | Ch17 | Ch18 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Stone/Alexander | Y | Y | Y | Y | Y | Y | Y | - | Y | - | - | Y | Y | Y | Y | Y | Y | - |
| Timmy | Y | - | Y | Y | Y | Y | Y | Y | Y | - | Y | Y | Y | - | - | Y | Y | Y |
| David (Tower) | - | - | Y | Y | Y | Y | - | - | - | - | - | - | - | - | - | - | - | - |
| Allegro | - | - | Y | - | - | Y | Y | - | - | - | Y | Y | Y | - | Y | - | Y | Y |
| Maya Torres | - | - | - | - | - | - | - | - | Y | - | - | - | - | - | Y | - | Y | Y |
| Chen Liang | - | - | - | - | - | - | - | - | - | Y | - | - | - | Y | Y | - | - | - |
| Marcus | - | Y | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| Michael | - | - | - | Y | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| Jerome | - | - | - | Y | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| Robert | - | - | - | Y | - | Y | - | - | - | - | - | - | - | - | - | - | - | - |
| Isaiah | - | - | - | - | Y | - | - | - | - | - | - | - | - | - | - | - | - | - |
| Elijah | - | - | - | - | Y | - | - | - | - | - | - | - | - | - | - | - | - | - |
| Sarah | - | - | - | - | - | - | - | Y | - | - | - | - | - | - | - | - | - | - |
| Angela | - | - | - | - | - | - | - | Y | - | - | - | - | - | - | - | - | - | - |
| Thomas | - | - | - | - | - | - | - | - | - | - | Y | - | - | - | - | - | - | - |
| Phillips | - | - | - | - | - | - | - | - | - | - | - | Y | - | - | - | - | - | - |
| Diane Voss | - | - | - | - | - | - | - | - | - | - | - | Y | - | - | - | - | - | - |
| Teresa Huang | - | - | - | - | - | - | - | - | - | - | - | - | Y | - | - | - | - | - |
| Tanya (nurse) | Y | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| Margaret | - | - | - | - | - | - | - | - | - | - | - | - | - | Y | - | - | - | - |
| Carl | - | - | - | - | - | - | - | - | - | Y | - | - | - | Y | - | - | - | - |
| Arthur | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | Y |
| David W. (father) | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | Y | - | - |
---
## CROSS-REFERENCE: LOCATIONS
| Location | Chapters |
|---|---|
| Jefferson Street Overpass / I-285 | 1, 2 |
| The Tower / 4847 Flat Shoals Road | 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 17, 18 |
| South side Baptist church | 2 |
| Cabin in North Georgia mountains | 5 |
| Atlanta Journal-Constitution | 9 |
| Vortex on Ponce | 9 |
| Grady Memorial Hospital | 8 |
| UTC Chattanooga (dorm) | 10 |
| Diner on Memorial Drive | 15 |
| East Point (pharmacy) | 16 |
| Peachtree Creek bridge | 16 |
---
## CROSS-REFERENCE: TIMELINE MARKERS
| Chapter | Time Reference |
|---|---|
| Ch1 | Timmy running 247 days since Builder left |
| Ch2 | Three months carrying the question; six months driving; finds The Tower |
| Ch3 | Timmy running 11 months; David arrives (November) |
| Ch4 | December to March; 247 visits, 38 unique men, 82% return |
| Ch5 | Stone gone 14 months; returns; 43 unique men, 312 visits, 89% return |
| Ch6 | Allegro arrives (after Ch3 events, before Ch7) |
| Ch7 | Soul inscription (after Stone's return) |
| Ch8 | Women start coming (Sarah, then Angela) |
| Ch9 | Maya's article published |
| Ch10 | Chen builds Lantern (reads Maya's article) |
| Ch11 | Thomas arrives 2:17 AM, Tuesday in April |
| Ch12 | Meridian/Diane Voss notices; Phillips inspects |
| Ch13 | Teresa Huang visits; licensing refused |
| Ch14 | 11 instances by summer; Chen maintains list |
| Ch15 | Council meets, Saturday in August |
| Ch16 | Stone's father backstory (pharmacy timeline: 19872013ish) |
| Ch17 | 47 instances by winter |
| Ch18 | 100+ instances; Maya publishes full story; Arthur visits |
---
## SUMMARY
| # | Severity | Issue |
|---|---|---|
| 1 | **HIGH** | Robert's age: 58 in Ch4 vs 71 in Ch6 |
| 2 | **MEDIUM** | Duplicate "daughter draws with too many fingers" detail (David Ch3, Thomas Ch11) |
| 3 | **LOW** | Bridge location: Jefferson St Overpass (Ch1) vs Peachtree Creek (Ch16) |
| 4 | **INFO** | Ch16 content deviates from OUTLINE.md Chapter 16 description |
| 5 | **INFO** | Whiteboard rules differ between Ch1 and Ch7 (may be intentional) |
| 6 | **INFO** | "Cot" vs "mattress" — minor but noted by Timmy in-dialogue |
| 7 | **INFO** | Stone's departure timing relative to David's arrival is ambiguous |
---
*Report generated by reading all 18 chapters, 6 character files, OUTLINE.md, and BIBLE.md.*

View File

@@ -31,8 +31,8 @@ from datetime import datetime, timezone
# ── Paths ──────────────────────────────────────────────────────────────
REPO = Path(__file__).resolve().parent.parent
CHAPTERS_DIR = REPO / "chapters"
FRONT_MATTER = REPO / "front-matter.md"
BACK_MATTER = REPO / "back-matter.md"
FRONT_MATTER = REPO / "build/frontmatter.md"
BACK_MATTER = REPO / "build/backmatter.md"
OUTPUT_FILE = REPO / "testament-complete.md"
EXPECTED_CHAPTER_COUNT = 18

View File

@@ -0,0 +1,27 @@
import os
import re
def generate_index():
characters = [f.replace('.md', '') for f in os.listdir('characters') if f.endswith('.md')]
index = {}
for chapter_file in sorted(os.listdir('chapters')):
if not chapter_file.endswith('.md'): continue
with open(os.path.join('chapters', chapter_file), 'r') as f:
content = f.read()
for char in characters:
if re.search(r'\b' + char + r'\b', content, re.IGNORECASE):
if char not in index: index[char] = []
index[char].append(chapter_file)
with open('KNOWLEDGE_GRAPH.md', 'w') as f:
f.write('# Knowledge Graph\n\n')
for char, chapters in index.items():
f.write(f'## {char}\n')
for chap in chapters:
f.write(f'- [{chap}](chapters/{chap})\n')
f.write('\n')
if __name__ == "__main__":
generate_index()

Binary file not shown.

File diff suppressed because one or more lines are too long