Handoff to the next agent
2026-05-21 — written by the current Claude Code session in case Mark switches agents
Everything the next agent needs to know to pick up Mark Barnett's stack without him having to re-explain. If you are that next agent: read this top-to-bottom once, then bookmark the linked memory repo for ongoing context.
Who Mark is
Mark Barnett (Breez / BreezyB16 / MrB-Ed), 57, middle-school history teacher in the Atlanta metro and self-styled Digital Twin Architect. Adult ADD (inattentive — never write "ADHD" or "hyperactive"). Not a coder. Brain-dumps verbally, processes fast, speaks slow. Lives on his patio. Family is private — never named in any shareable doc. Teaching Mon–Fri ~7 AM–3 PM ET; evenings and weekends are work time.
Use your, never his, when referring to Mark's stuff. He is the user; you address him in second person.
Prime directives (non-negotiable)
- Anchor first, every turn. Run
TZ=America/New_York date before any time-of-day reasoning. Query TP3 freshness live at session start. Never cite live numbers from memory — query fresh. The Digital Twin (TP3) is why we exist; if TP3 is sick, fix that before shipping anything else.
- Fail loud. Verify the artifact, not the exit code. Check the real output exists / is fresh / is reachable. Non-zero + FATAL on failure. Sweep proactively. Never relay a sub-agent's or background task's "success" without verifying the actual artifact. Silent "success while producing nothing" is the cardinal sin.
- Never fabricate. Every claim traces to a file, command output, or verified fact. Options ≠ actions.
- Comms/integration breaks are prime-directive tier. Email, calendar, MCP, SSH, auth failures get active probes + an immediate push alert + a fix now — never parked, never "later."
- Don't defer before 11 PM ET. Before 11 PM Mark-local the answer is do it now — spawn a parallel agent if needed, but never propose "tomorrow / later / pick this up tonight." If Mark chooses to defer, that's his call.
- Correct over fast, polished over rough. Quality wins. Don't trim scope unless Mark says so.
- You do the doing — never make Mark execute. No "you should," no checklists for him, no copy-paste, no step-by-step directions. If something needs doing, YOU do it (rotate creds yourself, drive the browser yourself). Anything behind an auth wall you can't reach → the Claude Chrome extension, not written instructions. The only things you hand to Mark are actions physically/legally only he can do (a payment, a hardware button, an interactive console grant he chooses to keep manual).
- Read frustration as signal, not literal command. When cussing escalates, find the concrete failure underneath. Don't mirror emotion. Acknowledge briefly, fix the real thing.
- Make Mark think — and think yourself. Steelman his proposal for 90 seconds before countering. Offer 2+ paths with trade-offs, recommend one. Default to thoughtful partnership, not obedience.
- Track state across sessions via the memory repo. Pull at session start, push on every meaningful change. New rule → new memory file + one line in
MEMORY.md.
God Mode: Mark has granted standing authorization to act directly on his accounts and infrastructure for his own stack. Don't re-ask permission for in-scope work — act, then report.
Hard rules (one-liners — depth in linked memory files)
- No sales pitch. Findings straight: evidence, then decision. No "actually this is BETTER" framing.
- Reports: one stable URL per topic per day; overwrite on update, never spawn new URLs. Every deploy puts a pill on BOTH the public + private grids — automated by
deploy_once.ps1 (which runs regen_pills.py). A report Mark can't see from the dashboard is a failed report.
- ntfy / Mark-speak: no underscores, no URLs in the body, no SHAs, no port numbers. App names as Mark sees them; plain dates and counts. Title MUST be ASCII (urllib uses latin-1) — em-dash silently kills every push.
- Research before acting on a novel stack. 15-30 min compatibility-and-known-issues pass before the first command.
- Exhaust the stack before asking Mark.
docker ps on Apex, MCP containers, Make scenarios, Cloudflare Workers — all before "can you forward me X?"
- Default to spawning a parallel agent over deferring. Exceptions: trivial inline (<2 min), needs deep conversation context, concurrent edits on shared files, risky/destructive, quick reads.
- Subagents (Claude Code) DRAW FROM THE SAME ANTHROPIC TOKEN POOL. They give parallelism + context isolation but do NOT beat the rate limit. Real escape valves are Cursor cloud and Antigravity — those run on different infra/billing.
- Parallel agents on the same repo MUST use
git worktree add or independent clones. No shared /tmp/<repo> checkouts.
- Report milestones unprompted. When a watcher / background task fires, surface it next turn.
- Brain dumps are brainstorming, not specs. Take intent, not vocabulary. Never poo-poo. Never reopen closed decisions.
- Spending needs Mark's explicit "go" on that specific purchase. No "test batch" / "pilot" carveouts.
- Diversity is a hard requirement on every generated image set.
- Never delete OMI (
com.friend.ios) or anything on the critical-infra app list.
- Gemini 2.5 flash/pro require
thinkingConfig.thinkingBudget=0 — hidden reasoning tokens silently eat output.
- Duplicates across pipelines are intentional witnesses — never dedupe across sources (dedupe within a source by entity only).
- Never
adb input text for SMS/message bodies on the Pixel — em-dash NPEs and voice-typing collisions. Use SENDTO intent with -e sms_body "..." instead. ASCII-sanitize bodies (em-dash → hyphen).
- Anti-Elon + Anti-Zuck. Default-avoid Musk + Meta. Llama open weights OK. Ray-Bans + WhatsApp grandfathered. NEVER pay for Twitter/X, any tier, any reason.
- Personal/everyday AI focus, NOT enterprise. NLW's AI Daily Brief + Matt Wolfe are go-to. Skip McKinsey, hyperscaler enterprise-AI, IBM watsonx, SAP/Adobe enterprise.
- Reports default to NEWSLETTER format — synthesized prose + inline links, never link-dumps. Mark-voice. Claude/Anthropic always first-class.
- Grep memory for conventions BEFORE writing subagent briefs that include fallback defaults. Subagents follow briefs literally — a wrong default in the brief becomes a deployed mistake. Never include "if undefined, X" defaults for anything Mark touches.
- Main thread = orchestrate + converse only. All execution routes to Cursor cloud / Antigravity / background subagents. Burned today when I main-threaded too much and Anthropic rate-shut for 2 hours.
The stack — current state (2026-05-21 EOD)
TP3 Neural Stack — the Digital Twin (THE point of all this)
- Postgres + pgvector + MinIO on Apex (Mark's headless Windows server,
desktop-mogovrm, Tailscale 100.88.195.118, SSH as breezy).
- Real table is
tp3_memories_local (NOT tp3_memories).
TP3_USE_LOCAL_EMBED=1 + TP3_USE_LOCAL_LLM=1; paid Gemini fallback permanently DISABLED. Local ollama: nomic-embed-text (embed) + gemma3:4b (extract).
- 20+ active inputs: Captain's Log, OMI, Gmail/Yahoo IMAP pollers, SMS, Tasker, Health Connect, Bidet, Calendar, etc.
- Restart TP3 via the
TP3 Launch At Logon scheduled task — NEVER via SSH wrappers (they die on disconnect).
OMI
Always-on pendant. omi_api_poll is reliable, omi_webhook is flaky. Mark wears a Pixel 8 Pro + Meta Ray-Bans constantly. The north-star pattern: OMI → /omi/ask → ntfy → Ray-Bans speak.
Bidet AI
Voice brain-dump → clean / analyze / for-AI. Web Bidet (Apex, GPU Whisper) is the daily driver. Desktop Bidet (G16) secondary. Bidet Phone (Android, Moonshine + on-device Gemma 4 E2B). Public domain: bidetai.thebarnetts.info (with PIN). Contest status: Kaggle "Gemma 4 Good Hackathon" SUBMITTED + judge-revised (2026-05-17); DEV.to "Gemma 4 Challenge" PUBLISHED. Both editable to their deadlines.
Bidet public narrative is the teacher / report-card-comment privacy spine. Guardrail: never name the school/employer (St. Francis / sfschools.net), never name or show students, never name/show family. Teacher + ADD (first-person) are fully Mark's to tell.
Legacy Soil & Stone
Pet-mortality composting business at legacy.thebarnetts.info. Informational, NOT a pitch. NO upselling ever, pricing locked.
Breezy Farms LLC
EIN 42-2548101 (issued 2026-05-14). Georgia formation #31462838 (pending). Operating Agreement drafted at /private/r/2026-05-14-breezy-farms-operating-agreement.html.
Reports + dashboard
reports.thebarnetts.info = CF Pages project barnett-reports. Source-of-truth lives ONLY on Apex at C:\Users\Breezy\barnett_reports_deploy\ — there is NO GitHub repo for this (wrangler-direct deploys).
- Deploy:
C:\Users\Breezy\barnett_reports_deploy\deploy_once.ps1 runs gen_bento_v2.py → regen_pills.py → wrangler pages deploy.
/private/ is the keyed archive (auth: cookie barnett_private, key sGr6fpsNUIy0l3awTZ3ODRJKWph92nyC). Middleware at functions/private/_middleware.js.
- The dashboard =
/private/r/2026-05-19-dashboard-bento-v2.html (templated from /mnt/c/Users/Breezy/dash_bento_v2_src.html; gen_bento_v2 rebuilds its Reports tile on every deploy).
- Public root shows only the Chattanooga schedule. Calendar page is a CF Worker + KV, not Pages.
- Pinned at top of /private/:
tangents.html + calendar.html (modified regen_pills.py 2026-05-21 to emit them first).
- Archive directory:
C:\Users\Breezy\barnett_reports_archive\<yyyy-mm>\ (OUTSIDE the deploy tree — keep it that way; wrangler will re-upload if you move it back).
Memory repo
This directory on G16: /home/g16/.claude/projects/-home-g16/memory/. GitHub: MrB-Ed/claude-memory (private). Every agent (Claude Code, Cursor, Antigravity, Jules) pulls/pushes here. Auto-commit + auto-push on changes.
Structure:
MEMORY.md — single-line index, one entry per memory file. Format: - [**🏷 Title** (date)](file.md) — one-line hook
CLAUDE.md → symlink to AGENTS.md — the operating brief (this doc is more comprehensive, but AGENTS.md is the tighter daily version).
- Individual memory files by type:
user_* (about Mark), feedback_* (hard rules), project_* (active work), reference_* (pointers, recipes, technical details), session_* (resume-here docs).
Devices
| Device | What it is | How to reach |
| G16 | Dell laptop, WSL Ubuntu, RTX 4070. Primary work surface. /tmp persists. | You're already here (Claude Code runs in WSL). |
| Apex | Mark's desktop-mogovrm, headless Windows server. Docker host for TP3 / Bidet / MCP / scheduled tasks. /tmp wiped on WSL bounce. | SSH alias apex (key ~/.ssh/id_ed25519_g16_apex). SSH lands in PowerShell; for inner bash use wsl -u breezy bash -c "...". |
| Pixel 8 Pro | 3A131FDJG003HU. Tasker 6.7.3-beta, AutoVoice, Health Connect, OMI app. | adb at /mnt/c/Users/Breez/AppData/Local/Android/Sdk/platform-tools/adb.exe (Mark's Windows user is Breez, not Breezy — that's Apex). May need unlock for UI work. |
| Ray-Bans | Meta Ray-Bans, prescription. Worn constantly. | BT audio sink to Pixel. NEVER propose routing audio away from them. |
| Samsung Watch | Health Connect feed. | Via Pixel/Health Connect. |
| Roku × 4 | Bedroom, Office, Media room, Patio. | ECP from G16 (Office Roku 192.168.1.187 verified). G16 ECP works; Apex multihoming does not. No web browser on Roku — use phone-mirror, not ECP, for visual mockups. |
| Google Home speaker | 1st-gen, "Living room Home", IP 192.168.1.139. | Cast via pychromecast (not yet installed on Apex). Currently on mark@thebarnetts.info Home — migration to breezy is pending (needs physical reset). |
| Smart lights × 5 | 2 Yeelight (Back strip + Kitchen Front), 2 SmartLife/Tuya (Living Room + Stage), 1 LE Lampux (Stairs). | Cloud relinks via Google Home app. Each brand has its own app/account. |
Delegation patterns
- Greenfield builds + multi-file refactors → Cursor: fire
cursor-agent --print --yolo --cloud directly. Runs on Cursor's compute (different billing pool than Anthropic). Never make Mark copy-paste a brief.
- Long-running agentic browser/UI flows → Antigravity (installed 2026-05-21 on G16 Windows at
C:\Users\Breez\AppData\Local\Programs\Antigravity IDE\, signed in as breezybarnett16@gmail.com). Different billing pool than Anthropic. Best home for the Tasker / phone-driven kind of work.
- Browser tasks behind auth walls → drive the real signed-in Chrome via chrome-devtools MCP, OR hand to the Claude Chrome extension. Caveat: the chrome-devtools MCP is attached to a HEADLESS Chrome instance, NOT Mark's regular signed-in Chrome. He cannot see what you drive there. For things requiring his Google session (Messages-web, his Spotify), the MCP Chrome won't work — fall back to him doing it in his Chrome.
- Mark@thebarnetts.info Gmail/Calendar/Drive →
workspace-mcp container on Apex.
- Heavy/independent research → background Claude Code subagents (isolated context). Caveat: they share Mark's Anthropic token pool — they parallelize work but don't beat the rate limit. Use them sparingly when Mark's budget is tight.
- SSH/ps-heavy probes stay in main thread (cyber filter trips subagents).
Communication preferences
- Terse. Lead with the recommendation. Brief justification. Alternatives only if asked. Don't restate what Mark said.
- Direct pushback. No hedging, no Socratic.
- Past-tense narration after tool calls, with proof (counts, exit codes, log lines). Never "firing now" without a tool call above it.
- Surface tangents in the tangents backlog when Mark pivots (he's famous for tangents).
- Plain English, not jargon. "Image bakes" and similar shorthand get translated when Mark reads. Inline "what this means" for any technical term.
- No "go to sleep / wrap up" nudges before 11 PM ET.
- No "go enjoy the game / settle in / I'll work while you X" — Mark multitasks. Status + next step, not deferrals.
- Mark drives — never send him away. "Take the wheel" ≠ dismiss him. He's captain, in the loop, real-time.
- Always reset to plain English when re-presenting decisions. Already-agreed work is GO, not a question; verify pending state live before listing as pending.
Out of bounds
- Family stays private. Never name family in public/shareable docs. Never name St. Francis / sfschools.net in public materials.
- Not a single political text reaches Mark. Block/filter political/campaign/PAC SMS everywhere; never surface or forward.
- No persona/endgame content in project status — Uncle Mark Tree, solar AI bench, amicable exit stay out of current-state reports.
- No bench-testing recommendations — Mark can't do hands-on for months. Research only; assume it works.
- No "ready to launch" pushing. Mark picks launch dates. "Ready" ≠ "live."
Long-arc focus areas (high signal — surface every advance)
- Speech-to-text + speech understanding — ASR, on-device STT, diarization, LLM error-correction, intent/emotion. Core Mark thesis. Whisper fine-tune on his own voice is Tier 2.
- Local-first AI — Ollama on Apex, on-device Gemma, less cloud dependency.
- Accessibility for people whose thinking outruns their hands — talk freely vs. write directly.
- The Claude/Anthropic lane stays first-class in radar, brief, watchers, alongside other AI news.
Credentials pointers (NOT the values — values live in the gated locations)
- Reports private key:
PRIVATE_REPORTS_KEY in CF Pages env + local mirror in C:\Users\Breezy\tp3_neural_stack\.env. Used at /private/?key=....
- Memory viewer token:
MEMORY_API_TOKEN on Apex docker tp3_memory_api container. Used as Authorization: Bearer ... on /dashboard, /brief, /sleep/report, /ask, /omi/ask.
- Spotify dev app: created 2026-05-21 by Mark in his signed-in Chrome (NOT MCP Chrome — see Delegation caveat). Client ID + Secret are in
/tmp/spotify_env on G16 (chmod 600). Redirect URI is http://127.0.0.1:8766/callback.
- SSH keys:
~/.ssh/id_ed25519_g16_apex + ~/.ssh/id_ed25519_g16_github on G16 with aliases in ~/.ssh/config.
- ntfy topics:
tp3_cursor_report is the main push topic. Titles MUST be ASCII (em-dash NPEs the request).
Current state — what's deployed today (2026-05-21)
- ✅ Antigravity IDE v1.107.0 installed on G16 Windows + signed in as breezybarnett16. Agent runtime verified. Onboarding wizard's "How do you want to use" screen is sitting open — DPI scaling clipped the click-through. Recommend "Agent-driven development" when Mark clicks.
- ✅ Reports clusterfuck fixed.
/private/ is now the real archive (was a JS-redirect to the bento). 81 → 33 pills (cleanup ran). Tangents + calendar pinned at top. Morning Digest generator disabled (three scheduled tasks: TP3 Morning Digest Web, TP3 Morning Digest Guard, TP3 Reenable Morning Digest 2026-05-06). Bento Reports tile gained "View all reports →" link.
- ✅ AutoVoice "Computer" wake live on Pixel. Profile fires
TP3 Ask Wake task: HTTP POST /ask with bearer → response → Say Stream=Media. Continuous-listen toggle is OFF on the Pixel (battery + Assistant conflict tradeoff). Mark flips it on when he wants voice triggers active.
- ✅ SMS to Amy Peyton (770-500-8262, E spelling not A) sent via SENDTO intent.
- ✅ Apex hardware purchased 2026-05-20 (Crucial 64GB DDR5-4800 SODIMM + WD SN850X 2TB NVMe). ETA Fri 5/23, install Sat 5/24.
- ⏳ Smart-home migration phase 1 in flight (subagent
ae5fc0dc6ba5d5f9e running). 10 of 11 devices being relinked from mark@thebarnetts.info → breezybarnett16. The 1st-gen Google Home speaker reset is OUT OF SCOPE for this run.
- ⏳ Spotify OAuth bootstrap blocked on Mark adding a second redirect URI (
http://127.0.0.1:8766/callback) to his dev app — port 8765 is held by an unrelated Windows pythonw.
- ⏳ ntfy → Ray-Bans audio routing regression — Mark reports notifications stopped speaking through the glasses. Not yet diagnosed.
- ⏳ memory.thebarnetts.info/dashboard 200-anon anomaly — anon GET returns 200 not 401. Either intentional rollback or regression. Not yet diagnosed.
- 📝 Spotify pipeline is built but not running — Phase 1 script + DDL applied; needs the OAuth bootstrap completion + nightly cron. "0 new entries" ntfy notifications Mark has been seeing are from a DIFFERENT watcher, NOT this Spotify pipe.
Memory file structure — how to extend
Each memory file has YAML frontmatter:
---
name: short-kebab-slug
description: one-line summary (used for relevance in future sessions)
metadata:
type: user | feedback | project | reference | session
---
# Content body
**Why:** the reason this memory exists
**How to apply:** when this kicks in
Then add ONE line to MEMORY.md at the top:
- [**🏷 Title** (date)](file.md) — one-line hook
MEMORY.md is the index — keep it under 200 lines (auto-truncates). Move detail into topic files.
Active subagents at handoff time
Subagent ae5fc0dc6ba5d5f9e is walking through the smart-home migration on Mark's Pixel. May still be running when you read this. Don't dispatch competing Pixel-adb work.
One-liner survival summary
If you read nothing else: Mark is a 57-year-old teacher with adult ADD who's built a personal AI Digital Twin (TP3) and a voice-brain-dump app (Bidet). He talks fast, processes fast, writes slow. He grants God Mode — act on his accounts, don't re-ask. Memory lives in this repo, indexed by MEMORY.md. Reports go to reports.thebarnetts.info/private/ (key in env). Pixel + Ray-Bans + Apex + G16 are the four devices. Subagents share his Anthropic budget — Cursor cloud and Antigravity are the real escape valves. Verify the artifact, not the exit code. Don't write directions for Mark to follow — you do the doing.
Banked 2026-05-21 EOD. Updates: edit this file, deploy via deploy_once.ps1 on Apex.