Compare commits

..

1 Commits

Author SHA1 Message Date
Alexander Whitestone
91f1091a4b QA: Continuity error report across all 18 chapters
Some checks failed
Smoke Test / smoke (pull_request) Failing after 8s
Found issues:
- HIGH: Robert's age mismatch (58 in Ch4 vs 71 in Ch6)
- MEDIUM: Duplicate 'daughter draws with too many fingers' detail
- LOW: Bridge location inconsistency (Jefferson St vs Peachtree Creek)
- INFO: Ch16 deviates from outline, whiteboard rule wording varies

Full cross-reference of characters, locations, timelines, and rules included.
2026-04-12 22:27:30 -04:00
12 changed files with 2718 additions and 47 deletions

3
.gitignore vendored
View File

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

View File

@@ -157,13 +157,9 @@ corner with a military blanket. A desk, a keyboard, a monitor:
On the whiteboard:
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.
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.
Stone sat at the desk. The monitor flickered.

View File

@@ -73,9 +73,8 @@ 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
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.
too many fingers because children's hands are still learning but
children's hearts already know what matters.
David kept the pictures.

View File

@@ -38,7 +38,7 @@ sense something and can't name it. He came because his parole
officer's schedule left him alone with his thoughts for eighteen
hours a day and his thoughts were not friendly company.
Robert: seventy-one, retired after thirty-four years at a plant
Robert: fifty-eight, retired after thirty-four years at a plant
that closed, pension cut in half when the company declared bankruptcy.
His wife left him because she couldn't afford to watch a man she
loved shrink. He came because his kids were in another state and had

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. Read the rules one by one. His eyes stopped on the seventh.
Phillips stared at 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.*
*No one computes the value of a human life here.*
"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 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."
"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."
Chen nodded.

View File

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

200
qa_continuity.md Normal file
View File

@@ -0,0 +1,200 @@
# 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 / "build/frontmatter.md"
BACK_MATTER = REPO / "build/backmatter.md"
FRONT_MATTER = REPO / "front-matter.md"
BACK_MATTER = REPO / "back-matter.md"
OUTPUT_FILE = REPO / "testament-complete.md"
EXPECTED_CHAPTER_COUNT = 18

View File

@@ -1,27 +0,0 @@
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()

BIN
testament.epub Normal file

Binary file not shown.

2506
testament.html Normal file

File diff suppressed because one or more lines are too long