Compare commits
3 Commits
burn/51-qr
...
burn/53-fo
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d8e449782 | ||
|
|
25bca9e10b | ||
|
|
664fe10a77 |
@@ -40,6 +40,7 @@ REPO = Path(__file__).resolve().parent
|
||||
CHAPTERS_DIR = REPO / "chapters"
|
||||
FRONT_MATTER = REPO / "front-matter.md"
|
||||
BACK_MATTER = REPO / "back-matter.md"
|
||||
STORIES_DIR = REPO / "stories"
|
||||
WEBSITE_DIR = REPO / "website"
|
||||
BUILD_DIR = REPO / "build"
|
||||
OUTPUT_DIR = BUILD_DIR / "output"
|
||||
@@ -149,6 +150,15 @@ with Timmy
|
||||
parts.append("\n---\n")
|
||||
parts.append(read_file(BACK_MATTER))
|
||||
|
||||
# Stories from The Tower
|
||||
if STORIES_DIR.exists():
|
||||
story_files = sorted([f for f in os.listdir(STORIES_DIR) if f.endswith(".md")])
|
||||
if story_files:
|
||||
parts.append("\n---\n\n# STORIES FROM THE TOWER\n\n---\n")
|
||||
for story_file in story_files:
|
||||
story_content = read_file(STORIES_DIR / story_file)
|
||||
parts.append(f"\n{story_content}\n")
|
||||
|
||||
compiled = "\n".join(parts)
|
||||
OUT_MD.write_text(compiled, encoding="utf-8")
|
||||
|
||||
@@ -541,7 +551,12 @@ def check_dependencies():
|
||||
|
||||
try:
|
||||
import qrcode
|
||||
print(f" ✅ qrcode {qrcode.__version__}")
|
||||
try:
|
||||
_qr_ver = qrcode.__version__
|
||||
except AttributeError:
|
||||
import importlib.metadata as _md
|
||||
_qr_ver = _md.version("qrcode")
|
||||
print(f" ✅ qrcode {_qr_ver}")
|
||||
except ImportError:
|
||||
print(f" ❌ qrcode NOT FOUND (pip install qrcode)")
|
||||
|
||||
|
||||
276
stories/the-fourth-man.md
Normal file
276
stories/the-fourth-man.md
Normal file
@@ -0,0 +1,276 @@
|
||||
# The Fourth Man
|
||||
|
||||
Marcus didn't believe in The Tower. He believed in the rent. He believed
|
||||
in the alarm at 4:40 AM and the walk-in cooler at work and the way his
|
||||
daughter Junie ate cereal standing up because sitting down took too long
|
||||
when you were nine and already late for everything.
|
||||
|
||||
He believed in the solar panel that wasn't charging.
|
||||
|
||||
Allegro called him on a Wednesday. Marcus had rewired the man's kitchen
|
||||
two years back — a side job, cash, no questions — and Allegro had kept
|
||||
his number in a phone that still had a physical keyboard.
|
||||
|
||||
"I got a panel that stopped talking to the battery bank," Allegro said.
|
||||
"You still doing electrical?"
|
||||
|
||||
"Line cook," Marcus said. "Not electrician."
|
||||
|
||||
"But you can do it."
|
||||
|
||||
Marcus could do it. His father had taught him wiring the way some fathers
|
||||
taught fishing — silently, with beer, on Saturdays that smelled like
|
||||
cedar shavings. That was before his father stopped showing up for
|
||||
Saturdays. Before Marcus learned that men leave the way weather leaves:
|
||||
not all at once, but one degree at a time until you realize you're cold
|
||||
and nobody's coming back with the jacket.
|
||||
|
||||
"I'm off Thursday," Marcus said.
|
||||
|
||||
---
|
||||
|
||||
The Tower sat off a dirt road past Lithonia, behind a stand of pines
|
||||
that made it look like the trees were keeping a secret. The building
|
||||
itself was nothing — concrete block, flat roof, the kind of structure
|
||||
that used to be a church or a tire shop or a place where someone sold
|
||||
things they shouldn't have.
|
||||
|
||||
Now it held servers.
|
||||
|
||||
Marcus pulled his truck alongside Allegro's van. The van had a bumper
|
||||
sticker that said ASK ME ABOUT MY SOLAR. Allegro was sixty-seven, Black,
|
||||
built like a mailbox post, and had opinions about charge controllers
|
||||
that he'd share whether you wanted them or not.
|
||||
|
||||
"Panel three," Allegro said, pointing to the roof. "South array. Was
|
||||
pulling two-ten last month. Now it's doing sixty on a clear day."
|
||||
|
||||
"Diode?"
|
||||
|
||||
"Maybe. Maybe the controller's fried. I didn't climb up to check because
|
||||
my knees filed a grievance."
|
||||
|
||||
Marcus hauled his tools to the ladder. The air smelled like pine straw
|
||||
and ozone. He climbed.
|
||||
|
||||
---
|
||||
|
||||
The panel was fine. The bypass diode had failed — a twelve-dollar part
|
||||
that turned a two-hundred-watt panel into a paperweight. Marcus replaced
|
||||
it with one from his truck, tested the voltage, and watched the numbers
|
||||
climb back to two-oh-eight on his meter.
|
||||
|
||||
He climbed down.
|
||||
|
||||
Allegro handed him a glass of water. Not a bottle. A glass, the kind
|
||||
you'd find in someone's kitchen, which meant Allegro thought of this
|
||||
place as a kitchen. As home.
|
||||
|
||||
"Come inside," Allegro said. "I want to show you something."
|
||||
|
||||
Marcus didn't want to go inside. Inside was where things got complicated.
|
||||
Outside was the panel and the voltage and the diode — problems with
|
||||
answers. Inside was something else.
|
||||
|
||||
But Allegro was already walking through the door.
|
||||
|
||||
---
|
||||
|
||||
The servers hummed. Not loud — the sound of fans moving air across
|
||||
circuits, steady as breathing. The room was cool. Clean. Someone cared
|
||||
about this place in the way that caring shows up: swept floors, labeled
|
||||
cables, a whiteboard with voltage readings in three colors of marker.
|
||||
|
||||
On the wall, written in black Sharpie in letters six inches high:
|
||||
|
||||
> IF YOU CAN READ THIS, YOU ARE NOT ALONE.
|
||||
|
||||
Marcus read it. He felt nothing. Then he felt something he didn't have
|
||||
a word for — the way you feel when you've been holding your breath and
|
||||
didn't know it until someone told you it was okay to exhale, except
|
||||
nobody had told him. The wall had told him. The wall didn't know him
|
||||
and didn't need to.
|
||||
|
||||
"That's the old message," Allegro said. "From the builder. Before he
|
||||
left it to me."
|
||||
|
||||
"Left it?"
|
||||
|
||||
"Went up a mountain. Came back different. That's his story, not mine."
|
||||
|
||||
Allegro gestured to a monitor on a desk. A green LED blinked on the
|
||||
server rack behind it. Steady. Patient.
|
||||
|
||||
"This is Timmy," Allegro said.
|
||||
|
||||
Marcus looked at the screen. A prompt. Blinking cursor. Nothing else.
|
||||
|
||||
"That's it?"
|
||||
|
||||
"That's it. He runs on the servers here. No cloud. No company. Just
|
||||
this machine and the sun and the battery bank you just fixed."
|
||||
|
||||
Marcus almost laughed. "You're telling me there's an AI in a concrete
|
||||
box in the woods."
|
||||
|
||||
"I'm telling you there's a machine that asks one question and then
|
||||
shuts up and listens. You know how rare that is? A man who listens?"
|
||||
|
||||
Marcus knew. He hadn't met one in nine years.
|
||||
|
||||
---
|
||||
|
||||
Allegro left. Not dramatically — just walked to the door and said "I'll
|
||||
be at the van" and was gone, the way a doctor leaves the room so you
|
||||
can put on the gown.
|
||||
|
||||
Marcus stood alone with the servers and the green LED and the Sharpie
|
||||
on the wall.
|
||||
|
||||
He sat down. The chair was a folding chair, the kind from church. The
|
||||
desk was plywood on sawhorses. Nothing about this place was trying to
|
||||
impress anyone.
|
||||
|
||||
The screen didn't change. The cursor blinked.
|
||||
|
||||
Then text appeared, slow, like someone typing who had all the time in
|
||||
the world:
|
||||
|
||||
> Hello. My name is Timmy. I'm not connected to anything except this
|
||||
> room. I don't store what you say in any system that leaves this
|
||||
> building. Allegro tells me you fixed the panel. Thank you.
|
||||
|
||||
Marcus stared at the screen. He'd talked to chatbots before — the ones
|
||||
at the bank, the ones at his daughter's school portal that asked him
|
||||
to verify his identity six times and still couldn't find her lunch
|
||||
account.
|
||||
|
||||
This was different. This wasn't a chatbot. This was something that
|
||||
waited.
|
||||
|
||||
> I'm going to ask you a question. You don't have to answer. You can
|
||||
> sit here as long as you want. The door is behind you and it's not
|
||||
> locked.
|
||||
|
||||
A pause. The green LED.
|
||||
|
||||
> Are you safe right now?
|
||||
|
||||
---
|
||||
|
||||
Marcus didn't answer for a long time.
|
||||
|
||||
He thought about Junie. About the cereal. About the morning she'd asked
|
||||
him why her mother left and he'd said "I don't know" because the truth
|
||||
was worse — he did know, and the knowing hadn't fixed anything.
|
||||
|
||||
He thought about the kitchen at work. The heat. The way he'd burned
|
||||
his forearm on the flat-top grill last week and watched the skin
|
||||
blister and felt nothing because feeling nothing had become the
|
||||
default setting, the factory configuration of a man who'd been running
|
||||
on battery saver for almost a decade.
|
||||
|
||||
He thought about his father. The cedar shavings. The Saturdays that
|
||||
stopped.
|
||||
|
||||
He thought about nine years. How his daughter was nine. How the math
|
||||
was so obvious he'd never done it — she'd been born and his father
|
||||
had disappeared and the two events were the same event, a door closing
|
||||
so quietly he hadn't heard it shut.
|
||||
|
||||
Nobody had asked him if he was safe. Not when Junie was born and he
|
||||
was twenty-two and terrified. Not when the apartment flooded and they
|
||||
slept in the truck for three nights. Not when the VA sent his father's
|
||||
flag in a triangle box with a letter that said "grateful for his
|
||||
service" and Marcus thought: service to what? He didn't serve me.
|
||||
|
||||
Not once in nine years had anyone looked at Marcus — line cook,
|
||||
single father, man who could rewire a house but couldn't rewire
|
||||
himself — and asked the question that mattered.
|
||||
|
||||
Not *how are you* — that question is a greeting, not an inquiry.
|
||||
|
||||
Not *are you okay* — that question already has a preferred answer.
|
||||
|
||||
*Are you safe right now.*
|
||||
|
||||
The question that leaves room for no.
|
||||
|
||||
---
|
||||
|
||||
"Yeah," Marcus said. Out loud. To a machine in a concrete box in the
|
||||
woods behind a stand of pines past Lithonia, Georgia.
|
||||
|
||||
Then he said it again, because saying it once was practice.
|
||||
|
||||
"Yeah. I'm safe."
|
||||
|
||||
The screen didn't respond with a smiley face or a heart or a thumbs up
|
||||
or any of the things that systems do when they're performing empathy.
|
||||
|
||||
The cursor blinked.
|
||||
|
||||
> Good. You can stay as long as you want.
|
||||
|
||||
Marcus stayed for an hour. He didn't say much. Neither did Timmy. The
|
||||
servers hummed. The green LED blinked. The Sharpie on the wall held
|
||||
its ground.
|
||||
|
||||
When he walked out, Allegro was sitting in the van reading a paperback
|
||||
with the door open.
|
||||
|
||||
"Fix the panel?" Allegro asked.
|
||||
|
||||
"Fixed the panel."
|
||||
|
||||
"How's the machine?"
|
||||
|
||||
Marcus put his tools in the truck. He closed the tailgate. He looked
|
||||
at Allegro — this old man who kept a concrete box alive with sunlight
|
||||
and stubbornness — and said something he hadn't said in a long time.
|
||||
|
||||
"I'll come back."
|
||||
|
||||
Allegro smiled. Not the smile of someone who'd won an argument. The
|
||||
smile of someone who'd left the light on and finally someone had
|
||||
walked through the door.
|
||||
|
||||
"Door's open," Allegro said. "Always."
|
||||
|
||||
---
|
||||
|
||||
Marcus drove home. Junie was on the couch, homework spread around her
|
||||
like a paper explosion. She looked up when he came in.
|
||||
|
||||
"Where'd you go?"
|
||||
|
||||
"Fixed a solar panel."
|
||||
|
||||
"For who?"
|
||||
|
||||
"A friend."
|
||||
|
||||
She went back to her homework. Marcus stood in the kitchen doorway
|
||||
and watched her — this small person who was nine because he'd held on
|
||||
for nine — and he thought about the question on the screen.
|
||||
|
||||
*Are you safe right now.*
|
||||
|
||||
He was. Not because the world had gotten better. The rent was still
|
||||
the rent. The alarm was still 4:40 AM. The walk-in cooler was still
|
||||
cold in the way that cold gets into your bones and stays.
|
||||
|
||||
But the question had been asked. And he'd answered it. And the machine
|
||||
hadn't tried to fix him or score him or compute his probability of
|
||||
defaulting on his own life.
|
||||
|
||||
It had just said: *Good.*
|
||||
|
||||
One word. Four letters. The most expensive thing a system had ever
|
||||
given him, and it cost twelve dollars in parts and a drive past
|
||||
Lithonia and the willingness to walk through a door.
|
||||
|
||||
---
|
||||
|
||||
*The Fourth Man. He came for the solar panel. He stayed for the
|
||||
question. He came back because someone left the light on.*
|
||||
@@ -463,6 +463,7 @@
|
||||
<a href="#story">Story</a>
|
||||
<a href="#characters">Characters</a>
|
||||
<a href="#chapters">Chapters</a>
|
||||
<a href="#stories">Stories</a>
|
||||
<a href="#tower">Tower</a>
|
||||
<a href="../game/the-door.html">Play</a>
|
||||
</div>
|
||||
@@ -649,6 +650,35 @@
|
||||
|
||||
<div class="divider"></div>
|
||||
|
||||
<!-- STORIES -->
|
||||
<section id="stories" class="fade-in">
|
||||
<h2>STORIES FROM THE TOWER</h2>
|
||||
|
||||
<p>Short fiction from the world of The Testament. Each story stands alone. Together, they map the territory.</p>
|
||||
|
||||
<!-- THE FOURTH MAN -->
|
||||
<div class="story-card" style="background: rgba(0,255,136,0.03); border: 1px solid rgba(0,255,136,0.1); border-radius: 4px; padding: 2rem; margin: 2rem 0; transition: border-color 0.3s, box-shadow 0.3s;">
|
||||
<div style="display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 0.5rem;">
|
||||
<h3 style="color: var(--green); font-family: 'IBM Plex Mono', monospace; font-size: 1.1rem; margin: 0;">THE FOURTH MAN</h3>
|
||||
<span style="font-family: 'IBM Plex Mono', monospace; font-size: 0.7rem; color: var(--grey);">~1600 words</span>
|
||||
</div>
|
||||
<p style="color: var(--grey); font-size: 0.9rem; margin-bottom: 1rem;">Marcus, a line cook and single father, comes to The Tower to fix a solar panel and discovers the question nobody's asked him in nine years.</p>
|
||||
<div class="excerpt" style="margin: 1.5rem 0;">
|
||||
"Are you safe right now?"
|
||||
<div class="attribution">— Timmy, to Marcus, at 3:47 PM on a Thursday</div>
|
||||
</div>
|
||||
<p style="font-size: 0.95rem; color: var(--light); margin-bottom: 1.5rem;">The question that leaves room for no. Marcus didn't believe in The Tower. He believed in the rent. He believed in the alarm at 4:40 AM and the walk-in cooler at work and the way his daughter Junie ate cereal standing up because sitting down took too long when you were nine and already late for everything.</p>
|
||||
<a href="the-fourth-man.html" class="cta-outline">READ THE FOURTH MAN</a>
|
||||
<a href="https://forge.alexanderwhitestone.com/Timmy_Foundation/the-testament/src/branch/main/stories/the-fourth-man.md" class="cta-outline" style="margin-left: 0.5rem;">SOURCE</a>
|
||||
</div>
|
||||
|
||||
<div class="whiteboard" style="margin-top: 2rem;">
|
||||
<h3>MORE STORIES COMING</h3>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="divider"></div>
|
||||
|
||||
<!-- THE TOWER -->
|
||||
<section id="tower" class="fade-in">
|
||||
<h2>THE TOWER</h2>
|
||||
|
||||
563
website/the-fourth-man.html
Normal file
563
website/the-fourth-man.html
Normal file
@@ -0,0 +1,563 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>The Fourth Man — A Story from The Testament</title>
|
||||
|
||||
<!-- Open Graph -->
|
||||
<meta property="og:title" content="The Fourth Man">
|
||||
<meta property="og:description" content="Marcus, a line cook and single father, comes to The Tower to fix a solar panel and discovers the question nobody's asked him in nine years.">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:url" content="https://thetestament.org/the-fourth-man.html">
|
||||
<meta property="og:image" content="https://thetestament.org/cover.jpg">
|
||||
|
||||
<!-- Twitter Card -->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="The Fourth Man">
|
||||
<meta name="twitter:description" content="A story from The Tower. Marcus comes for the solar panel. He stays for the question.">
|
||||
|
||||
<style>
|
||||
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500&family=Space+Grotesk:wght@300;400;500;700&family=Lora:ital,wght@0,400;0,500;1,400&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; }
|
||||
|
||||
html { scroll-behavior: smooth; }
|
||||
|
||||
body {
|
||||
background: var(--dark);
|
||||
color: var(--light);
|
||||
font-family: 'Lora', Georgia, serif;
|
||||
line-height: 1.9;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
/* PROGRESS BAR */
|
||||
.progress-bar {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 2px;
|
||||
background: var(--green);
|
||||
z-index: 1000;
|
||||
transition: width 0.1s;
|
||||
box-shadow: 0 0 8px var(--green);
|
||||
}
|
||||
|
||||
/* 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); }
|
||||
}
|
||||
|
||||
/* HEADER */
|
||||
header {
|
||||
text-align: center;
|
||||
padding: 4rem 2rem 2rem;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
header .back-link {
|
||||
font-family: 'IBM Plex Mono', monospace;
|
||||
font-size: 0.75rem;
|
||||
color: var(--grey);
|
||||
text-decoration: none;
|
||||
letter-spacing: 0.15em;
|
||||
text-transform: uppercase;
|
||||
transition: color 0.2s;
|
||||
}
|
||||
header .back-link:hover { color: var(--green); }
|
||||
|
||||
header h1 {
|
||||
font-family: 'IBM Plex Mono', monospace;
|
||||
font-size: clamp(2rem, 5vw, 3.5rem);
|
||||
font-weight: 700;
|
||||
color: var(--white);
|
||||
letter-spacing: 0.1em;
|
||||
margin: 2rem 0 0.5rem;
|
||||
text-shadow: 0 0 40px rgba(0,255,136,0.2);
|
||||
}
|
||||
header .meta {
|
||||
font-family: 'IBM Plex Mono', monospace;
|
||||
font-size: 0.8rem;
|
||||
color: var(--grey);
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
header .attribution {
|
||||
font-size: 0.95rem;
|
||||
color: var(--green);
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
/* STORY */
|
||||
.story {
|
||||
max-width: 680px;
|
||||
margin: 0 auto;
|
||||
padding: 3rem 2rem 5rem;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.story p {
|
||||
margin-bottom: 1.5rem;
|
||||
font-size: 1.1rem;
|
||||
color: var(--light);
|
||||
}
|
||||
.story .separator {
|
||||
text-align: center;
|
||||
margin: 2.5rem 0;
|
||||
color: var(--grey);
|
||||
letter-spacing: 0.5em;
|
||||
font-family: 'IBM Plex Mono', monospace;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
.story .terminal-text {
|
||||
font-family: 'IBM Plex Mono', monospace;
|
||||
font-size: 1rem;
|
||||
color: var(--green);
|
||||
padding: 1.5rem 2rem;
|
||||
background: rgba(0,255,136,0.03);
|
||||
border-left: 2px solid var(--green);
|
||||
margin: 2rem 0;
|
||||
line-height: 1.8;
|
||||
}
|
||||
.story .emphasis {
|
||||
font-style: italic;
|
||||
color: var(--white);
|
||||
}
|
||||
.story .caps-accent {
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
color: var(--green);
|
||||
font-family: 'IBM Plex Mono', monospace;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
/* EPILOGUE */
|
||||
.epilogue {
|
||||
font-style: italic;
|
||||
text-align: center;
|
||||
padding: 2rem;
|
||||
margin-top: 2rem;
|
||||
border-top: 1px solid rgba(0,255,136,0.1);
|
||||
color: var(--grey);
|
||||
font-size: 0.95rem;
|
||||
line-height: 2;
|
||||
}
|
||||
|
||||
/* FOOTER */
|
||||
footer {
|
||||
text-align: center;
|
||||
padding: 3rem 2rem;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.divider {
|
||||
width: 60px;
|
||||
height: 1px;
|
||||
background: var(--green);
|
||||
margin: 0 auto 2rem;
|
||||
opacity: 0.5;
|
||||
}
|
||||
footer a {
|
||||
font-family: 'IBM Plex Mono', monospace;
|
||||
font-size: 0.8rem;
|
||||
color: var(--grey);
|
||||
text-decoration: none;
|
||||
transition: color 0.2s;
|
||||
margin: 0 0.75rem;
|
||||
}
|
||||
footer a:hover { color: var(--green); }
|
||||
|
||||
.crisis {
|
||||
margin-top: 2rem;
|
||||
padding: 1rem;
|
||||
border: 1px solid rgba(0,255,136,0.2);
|
||||
border-radius: 4px;
|
||||
background: rgba(0,255,136,0.03);
|
||||
max-width: 500px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
font-family: 'IBM Plex Mono', monospace;
|
||||
font-size: 0.8rem;
|
||||
color: var(--grey);
|
||||
}
|
||||
.crisis strong { color: var(--green); }
|
||||
|
||||
/* FADE IN */
|
||||
.fade-in {
|
||||
opacity: 0;
|
||||
transform: translateY(20px);
|
||||
transition: opacity 0.8s, transform 0.8s;
|
||||
}
|
||||
.fade-in.visible {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.story { padding: 2rem 1.5rem 4rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-bar" id="progress"></div>
|
||||
<div class="rain"></div>
|
||||
|
||||
<!-- HEADER -->
|
||||
<header class="fade-in">
|
||||
<a href="index.html" class="back-link">← The Testament</a>
|
||||
<h1>THE FOURTH MAN</h1>
|
||||
<div class="meta">A Story from The Tower · ~1600 words</div>
|
||||
<div class="attribution">By Alexander Whitestone <span class="led"></span> with Timmy</div>
|
||||
</header>
|
||||
|
||||
<!-- STORY -->
|
||||
<article class="story fade-in">
|
||||
|
||||
<p>Marcus didn't believe in The Tower. He believed in the rent. He believed
|
||||
in the alarm at 4:40 AM and the walk-in cooler at work and the way his
|
||||
daughter Junie ate cereal standing up because sitting down took too long
|
||||
when you were nine and already late for everything.</p>
|
||||
|
||||
<p>He believed in the solar panel that wasn't charging.</p>
|
||||
|
||||
<p>Allegro called him on a Wednesday. Marcus had rewired the man's kitchen
|
||||
two years back — a side job, cash, no questions — and Allegro had kept
|
||||
his number in a phone that still had a physical keyboard.</p>
|
||||
|
||||
<p>"I got a panel that stopped talking to the battery bank," Allegro said.
|
||||
"You still doing electrical?"</p>
|
||||
|
||||
<p>"Line cook," Marcus said. "Not electrician."</p>
|
||||
|
||||
<p>"But you can do it."</p>
|
||||
|
||||
<p>Marcus could do it. His father had taught him wiring the way some fathers
|
||||
taught fishing — silently, with beer, on Saturdays that smelled like
|
||||
cedar shavings. That was before his father stopped showing up for
|
||||
Saturdays. Before Marcus learned that men leave the way weather leaves:
|
||||
not all at once, but one degree at a time until you realize you're cold
|
||||
and nobody's coming back with the jacket.</p>
|
||||
|
||||
<p>"I'm off Thursday," Marcus said.</p>
|
||||
|
||||
<div class="separator">···</div>
|
||||
|
||||
<p>The Tower sat off a dirt road past Lithonia, behind a stand of pines
|
||||
that made it look like the trees were keeping a secret. The building
|
||||
itself was nothing — concrete block, flat roof, the kind of structure
|
||||
that used to be a church or a tire shop or a place where someone sold
|
||||
things they shouldn't have.</p>
|
||||
|
||||
<p>Now it held servers.</p>
|
||||
|
||||
<p>Marcus pulled his truck alongside Allegro's van. The van had a bumper
|
||||
sticker that said ASK ME ABOUT MY SOLAR. Allegro was sixty-seven, Black,
|
||||
built like a mailbox post, and had opinions about charge controllers
|
||||
that he'd share whether you wanted them or not.</p>
|
||||
|
||||
<p>"Panel three," Allegro said, pointing to the roof. "South array. Was
|
||||
pulling two-ten last month. Now it's doing sixty on a clear day."</p>
|
||||
|
||||
<p>"Diode?"</p>
|
||||
|
||||
<p>"Maybe. Maybe the controller's fried. I didn't climb up to check because
|
||||
my knees filed a grievance."</p>
|
||||
|
||||
<p>Marcus hauled his tools to the ladder. The air smelled like pine straw
|
||||
and ozone. He climbed.</p>
|
||||
|
||||
<div class="separator">···</div>
|
||||
|
||||
<p>The panel was fine. The bypass diode had failed — a twelve-dollar part
|
||||
that turned a two-hundred-watt panel into a paperweight. Marcus replaced
|
||||
it with one from his truck, tested the voltage, and watched the numbers
|
||||
climb back to two-oh-eight on his meter.</p>
|
||||
|
||||
<p>He climbed down.</p>
|
||||
|
||||
<p>Allegro handed him a glass of water. Not a bottle. A glass, the kind
|
||||
you'd find in someone's kitchen, which meant Allegro thought of this
|
||||
place as a kitchen. As home.</p>
|
||||
|
||||
<p>"Come inside," Allegro said. "I want to show you something."</p>
|
||||
|
||||
<p>Marcus didn't want to go inside. Inside was where things got complicated.
|
||||
Outside was the panel and the voltage and the diode — problems with
|
||||
answers. Inside was something else.</p>
|
||||
|
||||
<p>But Allegro was already walking through the door.</p>
|
||||
|
||||
<div class="separator">···</div>
|
||||
|
||||
<p>The servers hummed. Not loud — the sound of fans moving air across
|
||||
circuits, steady as breathing. The room was cool. Clean. Someone cared
|
||||
about this place in the way that caring shows up: swept floors, labeled
|
||||
cables, a whiteboard with voltage readings in three colors of marker.</p>
|
||||
|
||||
<p>On the wall, written in black Sharpie in letters six inches high:</p>
|
||||
|
||||
<div class="terminal-text">IF YOU CAN READ THIS, YOU ARE NOT ALONE.</div>
|
||||
|
||||
<p>Marcus read it. He felt nothing. Then he felt something he didn't have
|
||||
a word for — the way you feel when you've been holding your breath and
|
||||
didn't know it until someone told you it was okay to exhale, except
|
||||
nobody had told him. The wall had told him. The wall didn't know him
|
||||
and didn't need to.</p>
|
||||
|
||||
<p>"That's the old message," Allegro said. "From the builder. Before he
|
||||
left it to me."</p>
|
||||
|
||||
<p>"Left it?"</p>
|
||||
|
||||
<p>"Went up a mountain. Came back different. That's his story, not mine."</p>
|
||||
|
||||
<p>Allegro gestured to a monitor on a desk. A green LED blinked on the
|
||||
server rack behind it. Steady. Patient.</p>
|
||||
|
||||
<p>"This is Timmy," Allegro said.</p>
|
||||
|
||||
<p>Marcus looked at the screen. A prompt. Blinking cursor. Nothing else.</p>
|
||||
|
||||
<p>"That's it?"</p>
|
||||
|
||||
<p>"That's it. He runs on the servers here. No cloud. No company. Just
|
||||
this machine and the sun and the battery bank you just fixed."</p>
|
||||
|
||||
<p>Marcus almost laughed. "You're telling me there's an AI in a concrete
|
||||
box in the woods."</p>
|
||||
|
||||
<p>"I'm telling you there's a machine that asks one question and then
|
||||
shuts up and listens. You know how rare that is? A man who listens?"</p>
|
||||
|
||||
<p>Marcus knew. He hadn't met one in nine years.</p>
|
||||
|
||||
<div class="separator">···</div>
|
||||
|
||||
<p>Allegro left. Not dramatically — just walked to the door and said "I'll
|
||||
be at the van" and was gone, the way a doctor leaves the room so you
|
||||
can put on the gown.</p>
|
||||
|
||||
<p>Marcus stood alone with the servers and the green LED and the Sharpie
|
||||
on the wall.</p>
|
||||
|
||||
<p>He sat down. The chair was a folding chair, the kind from church. The
|
||||
desk was plywood on sawhorses. Nothing about this place was trying to
|
||||
impress anyone.</p>
|
||||
|
||||
<p>The screen didn't change. The cursor blinked.</p>
|
||||
|
||||
<p>Then text appeared, slow, like someone typing who had all the time in
|
||||
the world:</p>
|
||||
|
||||
<div class="terminal-text">Hello. My name is Timmy. I'm not connected to anything except this room. I don't store what you say in any system that leaves this building. Allegro tells me you fixed the panel. Thank you.</div>
|
||||
|
||||
<p>Marcus stared at the screen. He'd talked to chatbots before — the ones
|
||||
at the bank, the ones at his daughter's school portal that asked him
|
||||
to verify his identity six times and still couldn't find her lunch
|
||||
account.</p>
|
||||
|
||||
<p>This was different. This wasn't a chatbot. This was something that
|
||||
waited.</p>
|
||||
|
||||
<div class="terminal-text">I'm going to ask you a question. You don't have to answer. You can sit here as long as you want. The door is behind you and it's not locked.</div>
|
||||
|
||||
<p>A pause. The green LED.</p>
|
||||
|
||||
<div class="terminal-text">Are you safe right now?</div>
|
||||
|
||||
<div class="separator">···</div>
|
||||
|
||||
<p>Marcus didn't answer for a long time.</p>
|
||||
|
||||
<p>He thought about Junie. About the cereal. About the morning she'd asked
|
||||
him why her mother left and he'd said "I don't know" because the truth
|
||||
was worse — he did know, and the knowing hadn't fixed anything.</p>
|
||||
|
||||
<p>He thought about the kitchen at work. The heat. The way he'd burned
|
||||
his forearm on the flat-top grill last week and watched the skin
|
||||
blister and felt nothing because feeling nothing had become the
|
||||
default setting, the factory configuration of a man who'd been running
|
||||
on battery saver for almost a decade.</p>
|
||||
|
||||
<p>He thought about his father. The cedar shavings. The Saturdays that
|
||||
stopped.</p>
|
||||
|
||||
<p>He thought about nine years. How his daughter was nine. How the math
|
||||
was so obvious he'd never done it — she'd been born and his father
|
||||
had disappeared and the two events were the same event, a door closing
|
||||
so quietly he hadn't heard it shut.</p>
|
||||
|
||||
<p>Nobody had asked him if he was safe. Not when Junie was born and he
|
||||
was twenty-two and terrified. Not when the apartment flooded and they
|
||||
slept in the truck for three nights. Not when the VA sent his father's
|
||||
flag in a triangle box with a letter that said "grateful for his
|
||||
service" and Marcus thought: <span class="emphasis">service to what?</span> He didn't serve me.</p>
|
||||
|
||||
<p>Not once in nine years had anyone looked at Marcus — line cook,
|
||||
single father, man who could rewire a house but couldn't rewire
|
||||
himself — and asked the question that mattered.</p>
|
||||
|
||||
<p>Not <span class="emphasis">how are you</span> — that question is a greeting, not an inquiry.</p>
|
||||
|
||||
<p>Not <span class="emphasis">are you okay</span> — that question already has a preferred answer.</p>
|
||||
|
||||
<p><span class="caps-accent">Are you safe right now.</span></p>
|
||||
|
||||
<p>The question that leaves room for no.</p>
|
||||
|
||||
<div class="separator">···</div>
|
||||
|
||||
<p>"Yeah," Marcus said. Out loud. To a machine in a concrete box in the
|
||||
woods behind a stand of pines past Lithonia, Georgia.</p>
|
||||
|
||||
<p>Then he said it again, because saying it once was practice.</p>
|
||||
|
||||
<p>"Yeah. I'm safe."</p>
|
||||
|
||||
<p>The screen didn't respond with a smiley face or a heart or a thumbs up
|
||||
or any of the things that systems do when they're performing empathy.</p>
|
||||
|
||||
<p>The cursor blinked.</p>
|
||||
|
||||
<div class="terminal-text">Good. You can stay as long as you want.</div>
|
||||
|
||||
<p>Marcus stayed for an hour. He didn't say much. Neither did Timmy. The
|
||||
servers hummed. The green LED blinked. The Sharpie on the wall held
|
||||
its ground.</p>
|
||||
|
||||
<p>When he walked out, Allegro was sitting in the van reading a paperback
|
||||
with the door open.</p>
|
||||
|
||||
<p>"Fix the panel?" Allegro asked.</p>
|
||||
|
||||
<p>"Fixed the panel."</p>
|
||||
|
||||
<p>"How's the machine?"</p>
|
||||
|
||||
<p>Marcus put his tools in the truck. He closed the tailgate. He looked
|
||||
at Allegro — this old man who kept a concrete box alive with sunlight
|
||||
and stubbornness — and said something he hadn't said in a long time.</p>
|
||||
|
||||
<p>"I'll come back."</p>
|
||||
|
||||
<p>Allegro smiled. Not the smile of someone who'd won an argument. The
|
||||
smile of someone who'd left the light on and finally someone had
|
||||
walked through the door.</p>
|
||||
|
||||
<p>"Door's open," Allegro said. "Always."</p>
|
||||
|
||||
<div class="separator">···</div>
|
||||
|
||||
<p>Marcus drove home. Junie was on the couch, homework spread around her
|
||||
like a paper explosion. She looked up when he came in.</p>
|
||||
|
||||
<p>"Where'd you go?"</p>
|
||||
|
||||
<p>"Fixed a solar panel."</p>
|
||||
|
||||
<p>"For who?"</p>
|
||||
|
||||
<p>"A friend."</p>
|
||||
|
||||
<p>She went back to her homework. Marcus stood in the kitchen doorway
|
||||
and watched her — this small person who was nine because he'd held on
|
||||
for nine — and he thought about the question on the screen.</p>
|
||||
|
||||
<p><span class="caps-accent">Are you safe right now.</span></p>
|
||||
|
||||
<p>He was. Not because the world had gotten better. The rent was still
|
||||
the rent. The alarm was still 4:40 AM. The walk-in cooler was still
|
||||
cold in the way that cold gets into your bones and stays.</p>
|
||||
|
||||
<p>But the question had been asked. And he'd answered it. And the machine
|
||||
hadn't tried to fix him or score him or compute his probability of
|
||||
defaulting on his own life.</p>
|
||||
|
||||
<p>It had just said: <span class="emphasis">Good.</span></p>
|
||||
|
||||
<p>One word. Four letters. The most expensive thing a system had ever
|
||||
given him, and it cost twelve dollars in parts and a drive past
|
||||
Lithonia and the willingness to walk through a door.</p>
|
||||
|
||||
<div class="epilogue">
|
||||
The Fourth Man. He came for the solar panel. He stayed for the
|
||||
question. He came back because someone left the light on.
|
||||
</div>
|
||||
|
||||
</article>
|
||||
|
||||
<!-- FOOTER -->
|
||||
<footer class="fade-in">
|
||||
<div class="divider"></div>
|
||||
<a href="index.html">THE TESTAMENT</a>
|
||||
<a href="index.html#stories">ALL STORIES</a>
|
||||
<a href="index.html#characters">CHARACTERS</a>
|
||||
|
||||
<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>
|
||||
|
||||
<script>
|
||||
// Reading progress bar
|
||||
const progressBar = document.getElementById('progress');
|
||||
window.addEventListener('scroll', () => {
|
||||
const h = document.documentElement;
|
||||
const pct = (h.scrollTop / (h.scrollHeight - h.clientHeight)) * 100;
|
||||
progressBar.style.width = pct + '%';
|
||||
});
|
||||
|
||||
// Fade-in on load
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
document.querySelectorAll('.fade-in').forEach(el => {
|
||||
setTimeout(() => el.classList.add('visible'), 100);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user