Track design and implementation plans

Seven plan documents covering the website JS infrastructure, show theme, caller
quality overhaul, cost dashboard, the Alpine relocation, and caller variety plus
Devon's search — the record of why the current architecture looks the way it
does. Plus the press release draft.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-14 04:23:53 -05:00
co-authored by Claude Opus 5
parent 9d49b013c2
commit 9071ed36d3
8 changed files with 2460 additions and 0 deletions
@@ -0,0 +1,78 @@
# Relocate the Show to Alpine, TX / Big Bend
**Date:** 2026-05-31
**Status:** Approved, implementing
## Goal
Luke moved to Alpine, Texas. Move the show's world from southern New Mexico
(Deming/Lordsburg) to the Big Bend region of far West Texas. Callers should come
from and be familiar with Alpine, Marfa, Marathon, Terlingua, Fort Stockton, and
the Big Bend area. Devon moves with the show. Silas gets an arc beat that
relocates The Wellspring to Terlingua.
## Changes
### 1. Caller generation — `backend/services/caller_gen.py`
- `BATCH_SYSTEM_PROMPT` opener: "…radio show in New Mexico" → "…in Alpine, Texas,
in the Big Bend country of far West Texas."
- Add a **geographic knowledge block** (real, accurate facts) so callers ground
themselves in real places instead of generic desert. Towns:
- **Alpine** — hub (~6k), Brewster County seat, Sul Ross State University,
mile-high ranching/railroad town, small arts scene.
- **Marfa** — minimalist-art tourist town (Chinati/Donald Judd, Prada Marfa),
the Marfa Lights, old ranching families vs. hipster influx.
- **Marathon** — tiny, the Gage Hotel, east gateway to Big Bend NP.
- **Terlingua** — quicksilver-mining ghost town, famous chili cookoff,
river-rafting outfitters, off-grid desert eccentrics, the Starlight Theatre,
near the Rio Grande / Mexico border.
- **Fort Stockton** — oilfield/I-10 town to the north, Pecos County, Paisano
Pete, working-class.
- **Big Bend** — Chisos Mountains, Rio Grande, dark skies (McDonald Observatory
near Fort Davis), remote, border proximity, Permian Basin oil money north.
- Rule: only reference real places/facts; don't invent businesses or landmarks.
### 2. Whisper prompt — `backend/services/transcription.py`
Update locale and seed proper nouns: "…a late-night radio talk show in Alpine,
Texas, in the Big Bend region. Callers reference Alpine, Marfa, Marathon,
Terlingua, Fort Stockton, and Big Bend."
### 3. Devon — `backend/services/intern.py`
Moved with the show. Keep "Communications degree from NMSU" (alma mater);
"You live in a studio in Deming" → "studio in Alpine."
### 4. Silas — relocate The Wellspring to Terlingua
- `~/code/dotfiles/silas/silas.md`: identity location Deming → Terlingua badlands;
update `arc_state` frontmatter to the relocation; add an Arc Log entry
(2026-05-31) — post-reckoning fresh start, moving the commune to desert outside
Terlingua, the move straining the forty members.
- `data/regulars.json`: update Silas's `job`, `location`, and the
`stable_seeds.style` "commune outside Deming" → Terlingua. Leave the 6 past
`call_history` summaries untouched — they happened in Deming; the move is the
new development.
### 5. Weather/town-news enrichment — `backend/main.py` (now a real feature)
The block in `enrich_caller_background()` called `_get_town_from_location` /
`_get_weather_for_town`, which never existed — silently NameError-ing. Implement:
- `BIG_BEND_TOWNS`: dict of town → (lat, lon) for Alpine, Marfa, Marathon,
Terlingua, Fort Stockton, Big Bend (Chisos Basin), Fort Davis, Presidio.
- `_get_town_from_location(text)`: scan lowercased text for a known town,
return canonical key (handles "ft stockton"/"fort stockton").
- `_get_weather_for_town(town)`: Open-Meteo current weather (free, no key),
WMO weather_code → phrase, returns e.g. "58°F, clear skies".
- Update town-news query: NM/AZ branch → `f"{town.title()} Texas"`.
- Wire session base_ctx `weather` (was hardcoded "cool desert night") to live
Alpine weather, graceful fallback on failure.
All network calls degrade gracefully (existing `asyncio.timeout` + try/except).
## Out of scope / left as-is
- Past `call_history` summaries (genuinely happened in Deming).
- `main.py:3124` state-abbreviation map (generic, not show-locale).