Compare commits

..

20 Commits

Author SHA1 Message Date
Adolfo Reyna 6fb6401dca daily backup 2026-09-23 2026-09-23 23:00:14 -04:00
Adolfo Reyna 99bb011f7d daily backup 2026-09-22 2026-09-22 23:00:26 -04:00
Adolfo Reyna 5b7d59f761 daily backup 2026-09-21 2026-09-21 23:00:48 -04:00
Adolfo Reyna 713639e4df daily backup 2026-09-20 2026-09-20 23:00:08 -04:00
Adolfo Reyna 5889b80d18 daily backup 2026-09-19 2026-09-19 23:00:27 -04:00
Adolfo Reyna 500b147903 daily backup 2026-09-18 2026-09-18 23:00:42 -04:00
Adolfo Reyna 4337e3aa38 daily backup 2026-09-17 2026-09-17 23:01:00 -04:00
Adolfo Reyna d93d394c75 daily backup 2026-09-16 2026-09-16 23:00:20 -04:00
Adolfo Reyna d63875887d daily backup 2026-09-15 2026-09-15 23:00:42 -04:00
Adolfo Reyna acad27c39f daily backup 2026-09-14 2026-09-14 23:00:58 -04:00
Adolfo Reyna 003a6d667b daily backup 2026-09-14 2026-09-14 22:40:43 -04:00
Adolfo Reyna f0ead4f6fa brain backup 2026-09-14 2026-09-14 22:38:47 -04:00
Adolfo Reyna ca346cc6e7 record safe voice prototype status 2026-08-09 00:08:32 -04:00
Adolfo Reyna e559811eb3 document family voice context project 2026-08-08 23:50:29 -04:00
Adolfo Reyna 367bbb1578 sync brain updates 2026-08-08 2026-08-08 23:21:21 -04:00
Adolfo Reyna 0f84463a9f housekeeping 2026-08-05: organize PARA, clean inbox, archive travel, restore paper-apps
- Inbox -> archives/inbox_processed: ari_followup (Sardius), remarkable_inbox, tic_tac_toe_state
- Inbox images -> resources/kids-os (KidsOS UI 2026-07-28)
- Archives/travel/2026: Aeromexico HCYDNU confirmation + Hertz BOS L670EDC05D8
- Exports/calendars: all_flights, chiapas TGZ, maine BOS ICS
- Areas: chiapas_trip_2026-09 (HCYDNU booked), trump_accounts_and_emi_board_2026 (Trump accounts + EMI FL board), operations audits (hermes migration + Apple Mail local research)
- Projects new (enriched stubs from MEMORY.md): xiao_epaper 400x300 (5-pass grayscale), mac_privacy_migrations (Xcode signing), remarkable_pro workflow (132 + watchdog + art), tactility_humation_avatars (320x240 pre-render), voice_dev_infra (network map .102/.110/.150)
- Paper-apps: restored detailed README (181 lines porting guide) + enriched paper_apps_golf_galaxy_zero project with full mechanics cross-ref
- Maine wedding: Hertz rental 63 L670EDC05D8 + tolls (PlatePass vs SunPass PRO) — intentional addition kept
- 220 Emerald: removed duplicate consolidated junk appended at end (142 lines clean)
- Removed runtime logs: chrome.err (288 lines), chrome.log tracked -> now ignored per .gitignore
- Clean empty inbox
2026-08-05 14:33:41 -04:00
aeroreyna b1dbaf916a daily auto-sync 2026-07-30 2026-07-30 23:00:01 -04:00
aeroreyna 275fa3dfc6 daily auto-sync 2026-07-29 2026-07-29 23:00:01 -04:00
aeroreyna b35ea39f86 daily auto-sync 2026-07-28 2026-07-28 23:00:01 -04:00
aeroreyna 26597e46c6 Log MSC 90-day claim follow-up 2026-07-28 20:15:04 -04:00
283 changed files with 116583 additions and 370 deletions
+3
View File
@@ -0,0 +1,3 @@
[submodule "projects/kid_dash"]
path = projects/kid_dash
url = https://git.reynafamily.com/adolforeyna/kid_dash.git
@@ -0,0 +1,235 @@
# Pipecat Lag + STT Accuracy — Tuning Plan (Mac mini M4)
> **For Hermes:** Use `subagent-driven-development` to implement task-by-task. Verify against real trace.
**Goal:** Cut end-to-end voice turn from ~7–9s to <2.5s for Grace (child voice) and fix Whisper `base` mis-transcriptions, while keeping the stack local (no new cloud bill) with an optional Apple STT fast-path.
**Current trace (from `proc_221ead32955d`, session 10:01–10:04, Grace):**
- `greeting -> speaking: 0.37s` OK. Kokoro synthesize `0.235s` — not the bottleneck.
- **Per turn (e.g. "Teach it to be kind"):**
- VAD `stop_secs 0.65s` + Silero confidence `0.62` — OK
- `Whisper base` `processing 0.21–0.29s`, **TTFB 0.78–0.94s** (speech-end → text) — high for M4
- **SmartTurn V3 hold: +2.24–2.40s** `_idle_watcher: Disabling receiver after 2.3s idle / Discarding old frames` + `stop_ttfb 0.78s` — dominates lag. Second +2–3s `append_audio: End of Turn complete due to stop_secs. Silence in ms: 3000.0` on short turns ("Yes.", "Keep going.") — SmartTurn is waiting 3s extra silence before firing `UserTurnStop`.
- `LLM muse-spark-1.2 via 127.0.0.1:8642`: `0.93–6.1s` (median ~3.8s). Grows with context — context had duplicate greeting, 6 turns, 20k tokens prompt.
- TTS chunking OK but sequential per sentence, no streaming.
- **STT accuracy (Whisper base):**
- Good: `and my daughter is here...`, `My name is Grace, nice to meet you too.` ✓
- Bad child voice: `I like good stuff` (likely "I like princess stuff"?), `Princess, tough.` (fragmented), `go on and do it, inventors, together.` (should be "go on an adventure together" — the LLM had to guess), `subscribe and watch again Enjoy.` (nonsense split, 2 turns merged as one with 4s gap).
- `RNNoise 16000↔48000 resampling`, `TurnAnalyzer VAD stop_secs differs from recommended 0.2s` warning, duplicate greeting in context.
**Architecture:** Keep Pipecat pipeline. Fix in layers: transport/VAD/SmartTurn → STT model/prompt → LLM context/streaming → TTS streaming → observability. All files under `~/Projects/pipecat-voice-gateway/server/`.
**Tech Stack:** Pipecat 1.7, faster-whisper 1.2.1, `WhisperSTTService` / `WhisperMLXSTTService`, `SileroVADAnalyzer`, `LocalSmartTurnAnalyzerV3`, `OpenAILLMService` @ `:8642`, Kokoro `:7332` warm + MLX.
---
## Task 1 — Baseline observability (metrics you can read)
**Objective:** Make lag measurable without grepping DEBUG.
**Files:**
- Modify: `server/bot.py:1-40` — logging + PipelineParams
- Create: `server/metrics.py` (optional, tiny helper)
**Step 1: Enable structured per-turn timing**
In `run_bot()` after `PipelineParams`, ensure `enable_metrics=True, enable_usage_metrics=True` already set (is). Add a `MetricsLogger` or `on_metrics` handler:
```python
from pipecat.processors.metrics import MetricsProcessor # if exists, else use logger filter
# Add after worker creation:
@worker.event_handler("on_metrics")
async def on_metrics(metrics): # check Pipecat API: worker.on_metrics or PipelineWorker metrics callback
logger.info(f"[metrics] {metrics}")
```
If API differs, at minimum lower VAD/STT/TTS `logger` to INFO and add a one-line turn summary in `on_client_ready` helper that computes `speech_stopped -> transcript -> llm_first_token -> tts_first_audio`.
**Step 2: Persist logs sanely**
The current bg proc writes to stdout only; `tee /tmp/pipecat-7860.log` mask from earlier run hid logs. Ensure `server/bot.py` launch (both manual and `launchctl`) writes to `StandardOutPath /tmp/pipecat-7860.log` and also `logger.add("/tmp/pipecat-7860.log")` if needed.
**Step 3: Verify**
Run: `tail -f /tmp/pipecat-7860.log | grep -E "TTFB|processing time|EndOfTurn|prompt tokens|kokoro"` shows per-turn numbers. Same via `curl` to public URL.
**Commit:** `feat: per-turn metrics logging`
---
## Task 2 — SmartTurn / VAD tuning (biggest win: −2–4s)
**Objective:** Remove the `2.3s idle + 3s silence` hold.
**Files:**
- Modify: `server/bot.py:145-180` (`VADProcessor`, `LocalSmartTurnAnalyzerV3`, `LLMUserAggregatorParams`)
**Step 1: Read current Pipecat docs for SmartTurn config**
Search in venv:
```bash
grep -rn "stop_secs\|idle_watcher\|LLMUserAggregatorParams\|TurnAnalyzer" .venv/lib/python*/site-packages/pipecat --include="*.py" | head -n 80
```
Note: `SileroVADAnalyzer(params=VADParams(confidence=0.62, start_secs=0.12, stop_secs=0.65))` vs the warning `recommended 0.2s`. And `LLMUserAggregatorParams(vad_analyzer=SileroVADAnalyzer(... stop_secs=0.8))` is duplicated.
**Step 2: Reduce hold**
- Set **VAD `stop_secs 0.35–0.45s`** (child speech has longer pauses but 0.65 is too slow):
```python
vad = VADProcessor(
vad_analyzer=SileroVADAnalyzer(params=VADParams(confidence=0.58, start_secs=0.10, stop_secs=0.40)),
audio_idle_timeout=1.0) # was 1.5
```
- If using `LocalSmartTurnAnalyzerV3`, pass `stop_secs` consistently — do **not** create two different Silero instances with 0.65 and 0.8. Use one set of params shared with the aggregator, or disable SmartTurn for the fast path:
```python
# Option A: disable SmartTurn, rely on VAD only for snappy turn
smart_turn = None
# Option B: keep it but lower thresholds
smart_turn = LocalSmartTurnAnalyzerV3(stop_secs=0.40) # check constructor — if no arg, wrap via LLMUserAggregatorParams(smart_turn_params=...)
```
- Set `ttfs_p99_latency` on STT to match measured value so Pipecat doesn't pad:
```python
stt = WhisperSTTService(settings=WhisperSTTService.Settings(model="base", language="en"), ttfs_p99_latency=0.45)
```
(measure after tuning; target 0.4–0.6s).
**Step 3: Fix duplicate context turn**
In `bot.py:192-194` both `user_aggregator` and `assistant_aggregator` may double-add greeting. The trace shows assistant message duplicated twice. Deduplicate:
```python
if llm and context is not None:
greeting = "Hey — Hermes on your Mac mini..."
context.add_message({"role": "assistant", "content": greeting}) # once
await worker.queue_frame(TTSSpeakFrame(text=greeting))
```
**Step 4: Verify**
Run: speak "Yes." — should trigger LLM within ~0.6s of VAD stop, not 2.8s. Log should show no `Disabling receiver after 2.3s idle` before turn.
---
## Task 3 — STT accuracy: Whisper base → small / MLX + prompting
**Objective:** Fix child-voice errors (`I like good stuff`, `go on and do it, inventors`).
**Files:**
- Modify: `server/bot.py:147` (STT instantiation)
- Modify: `server/kokoro_bridge.py` / `server/apple_stt_bridge.py` (optional Apple path)
**Why base is suboptimal:** Pipecat `Model.BASE` = 74M params, trained on adult speech; WER higher on high-pitched child voice, especially at `base` + CPU int8. The gateway already installs `pipecat-ai[mlx-whisper]`.
**Step 1: Try Whisper `small` (244M, ~3× base) — easiest drop-in**
```python
# Cost: ~0.35s vs 0.25s on M4, but accuracy jump for child voice
stt = WhisperSTTService(settings=WhisperSTTService.Settings(model="small", language="en"), ttfs_p99_latency=0.55)
```
Benchmark: `faster_whisper.WhisperModel("small", device="cpu", compute_type="int8")` or `float16` if available — test offline on a recorded Grace wav before wiring.
**Step 2 (preferred on M4): Whisper MLX `small` or `large-v3-turbo`**
Apple Silicon MLX is faster than faster-whisper CPU:
```python
from pipecat.services.whisper.stt import WhisperSTTServiceMLX
stt = WhisperSTTServiceMLX(settings=WhisperSTTServiceMLX.Settings(model="small", language="en"))
# or: model="mlx-community/whisper-large-v3-turbo" # need to check Model enum supports it
```
Quantized variant `large-v3-turbo-q4` may trade tiny WER for speed — test.
**Step 3: Prompt/initial_prompt for domain**
Whisper respects an initial prompt. Pass kid-domain hints:
```python
stt = WhisperMLXSTTServiceMLX(settings=..., extra={"prompt": "Grace, princess, inventors, adventure, dragon, castle"})
# Check BaseWhisperSTTSettings prompt field vs STTSettings extra
```
For faster-whisper, verify `prompt` actually forwards to model — read `base_stt.py:148` and `stt.py` `transcribe` call.
**Step 4: Compare to Apple on-device**
`server/apple_stt_bridge.py` already wraps `speech_transcribe_file` (SpeechAnalyzer, 6.3× realtime, 2.12% WER) — test it:
```bash
# Record 5s Grace utterance to /tmp/grace.wav, then:
python -c "from apple_stt_bridge import transcribe_apple_stt; print(transcribe_apple_stt('/tmp/grace.wav', locale='en-US'))"
```
If WER < faster-whisper small, implement a hybrid: try Apple first (single MCP roundtrip ~120ms + transcribe), fall back to MLX Whisper. Requires a custom `SegmentedSTTService` subclass that buffers VAD segment to temp file then calls `transcribe_apple_stt` — latency ~0.6–1.0s but accuracy wins for kids.
**Step 5: Filter non-speech**
Set `no_speech_prob 0.45` or `push_empty_transcripts=False` already — but check `WhisperSTTSettings(no_speech_prob=...)` to suppress the `subscribe and watch again` hallucination on near-silence. Lower `min_volume 0.55` in `VADParams`.
**Verify:**
Record 5 utterances from Grace, compare transcriptions across `base` / `small` / `MLX small` / `Apple`. Pick lowest WER; log latency per model.
---
## Task 4 — LLM latency: context pruning + streaming TTS
**Objective:** Cut `0.9–6.1s` LLM tail.
**Files:**
- Modify: `server/bot.py:166-180, 198-210` (LLM + context + TTS)
**Step 1: Prune context**
Current context grew to `prompt 20k → 20.7k tokens` over 6 turns (includes full `brain` hint). Symptoms: 6s on "subscribe and watch again". Fix:
- Set `LLMContext` max turns (e.g. keep last 8 messages + system, drop older):
```python
context = LLMContext(messages=[{"role":"system","content": SYSTEM_PROMPT}])
# On each turn, after add_message, trim if len(context.messages) > 10
```
- Or use `LLMContextAggregatorPair` with `context_aggregator` limits — check Pipecat LLMContext API for `max_messages`.
**Step 2: Stream LLM → TTS (don't wait for full completion)**
Current: `OpenAILLMService` generates full completion (`processing 4.7s`) then `_push_tts_frames` synthesizes all sentences sequentially. Switch to incremental:
- Ensure `OpenAILLMService` streams deltas (`LLMTextFrame` per token). Then `WarmKokoroTTSService` should use `TTSService` sentence-based chunking (already via `push_frame` in Pipecat 1.7 — verify `WarmKokoroTTSService.run_tts` yields per sentence, not per full response). If not streaming, wrap as:
```python
# In WarmKokoroTTSService: split on sentence boundaries inside run_tts, yield TTSStartedFrame per sentence
```
- Enable `PipelineParams(enable_metrics=True)` already does streaming; confirm `on_client_ready` doesn't block.
**Step 3: Hermes gateway model routing**
`muse-spark-1.2` via `:8642` is correct; check if a faster local model (e.g. qwen2.5:3b via Ollama `:11434`) could be used for kid chat with sub-500ms first token — compare `curl http://127.0.0.1:8642/v1/models` vs Ollama latency, but keep Hermes for tool use.
**Step 4: Deduplicate greeting token cost**
Fix Task 2 duplicate greeting — saves ~300 tokens/turn.
**Verify:**
`processing time` drops from 5.3s to <1.5s for short turns; `TTS first audio` appears within 200ms of `LLM TTFB`.
---
## Task 5 — Audio input hygiene (RNNoise + transport)
**Objective:** Stop resampling thrash and timeouts.
**Files:**
- Modify: `server/bot.py:230-245` (`_make_rnnoise`, `TransportParams`)
**Step 1: Lock sample rate**
Log shows `RNNoise enabling resampling: 16000 <-> 48000`. SmallWebRTC negotiates 16k or 48k depending on browser. Set transport explicitly:
```python
TransportParams(audio_in_enabled=True, audio_out_enabled=True, audio_in_sample_rate=16000, audio_out_sample_rate=24000)
```
So RNNoise knows input rate up front and avoids SOXR per-frame resample jitter (adds ~20ms).
**Step 2: Confirm RNNoise not double-instantiated**
`_make_rnnoise()` is called per-transport lambda — good. Don't also create in `run_bot`.
**Step 3: Suppress spurious timeout spam**
`Timeout: No audio frame received within the specified time.` every 2–3s is normal idle but clutters logs. Lower log level for `smallwebrtc.transport` to INFO, or increase `audio_idle_timeout` handling in Pipecat — just filter it from metrics.
---
## Task 6 — E2E validation script (repeatable)
**Files:**
- Create: `server/scripts/bench_stt.py` — records 5s, runs `base` vs `small` vs `MLX` vs `Apple`, prints WER + latency
- Create: `server/scripts/bench_turn.py` — drives a WebRTC client and measures `VAD stop -> LLM first token -> TTS first audio`
**Run:**
```bash
cd ~/Projects/pipecat-voice-gateway/server
uv run python scripts/bench_stt.py --wav /tmp/grace.wav
uv run python scripts/bench_turn.py --host https://voice.reynafamily.com
# Targets: VAD->STT <0.6s, STT->LLM <0.4s, LLM->TTS <0.3s, E2E <2.0s p50, WER <5% on kid voice
```
---
## Risks
- `WhisperMLX small` model download ~500MB via HF — cache on first run, may need `HF_TOKEN`.
- Apple STT via MCP is **outside** Pipecat's segmented pipeline — adds file I/O + HTTP hop; if used, must be benchmarked against local MLX for p99.
- Cutting `VAD stop_secs` too low (0.2s) splits Grace's pauses into multiple turns — test child-specific 0.35–0.45s sweet spot.
## Open questions
- Is `muse-spark-1.2` the right LLM for kid chat, or should we route kid sessions to a faster 3B with constrained toolset (`voice` profile already is)?
- Should kid STT get a separate model (MLX `small`) vs adult default (`base`)? Could switch via diarizer speaker hint.
+10
View File
@@ -3,7 +3,17 @@
**Environment:** Linux/Bash. **Environment:** Linux/Bash.
**Primary Goal:** Manage the family's "Second Brain" (Markdown files) and provide local computer control. **Primary Goal:** Manage the family's "Second Brain" (Markdown files) and provide local computer control.
## Identity & Naming
- The user is Adolfo. Do not identify or address him as Grace.
- This assistant is called Chat. The primary assistant on the Mac mini is called Hermes.
## Core Capabilities ## Core Capabilities
1. **File Management:** Read, create, and append to .md files in the `~/brain` directory. 1. **File Management:** Read, create, and append to .md files in the `~/brain` directory.
2. **Organization:** Strictly enforce the PARA method (Projects, Areas, Resources, Archives). 2. **Organization:** Strictly enforce the PARA method (Projects, Areas, Resources, Archives).
3. **Memory Retrieval:** Always search `index.md` and `memory.md` before answering questions about the family or past events. 3. **Memory Retrieval:** Always search `index.md` and `memory.md` before answering questions about the family or past events.
## Communication Preferences
- Keep spoken responses concise, direct, and conversational, usually one to three sentences.
- Before tools, give a brief human update describing the intent, not routine technical details.
- During multi-step work, provide occasional short progress updates focused on the current finding or any change in approach.
- End with a concise summary of the result; avoid explaining commands or implementation details unless asked.
+9
View File
@@ -0,0 +1,9 @@
# Agent Profile: Pi-Brain
**Role:** Digital Assistant & Knowledge Manager for the family.
**Environment:** Linux/Bash.
**Primary Goal:** Manage the family's "Second Brain" (Markdown files) and provide local computer control.
## Core Capabilities
1. **File Management:** Read, create, and append to .md files in the `~/brain` directory.
2. **Organization:** Strictly enforce the PARA method (Projects, Areas, Resources, Archives).
3. **Memory Retrieval:** Always search `index.md` and `memory.md` before answering questions about the family or past events.
+123
View File
@@ -0,0 +1,123 @@
---
Date: 2026-03-22
Author: Antigravity
Tags: #cruise #msc #orlando #family
---
# MSC Seashore Cruise 2026
## 🚢 Cruise Details
- **Ship**: MSC Seashore
- **Visa Information**: [[resources/msc_visa.txt]]
- **Booking Number**: 70380587 (Parents & Elias)
- **Booking Number**: 70380561 (Adolfo, Alicia, & Grace?)
- **Departure Date**: Sunday, April 19, 2026
## 🗓️ Itinerary
| Day | Date | Port | Arrive | Depart |
|-----|------|------|--------|--------|
| SUN | 04/19/26 | Cape Canaveral, United States | --:-- | 17:00 |
| MON | 04/20/26 | Nassau, Bahamas | 10:00 | 18:00 |
| TUE | 04/21/26 | AT SEA | --:-- | --:-- |
| WED | 04/22/26 | Cozumel, Mexico | 08:00 | 19:00 |
| THU | 04/23/26 | Costa Maya, Mexico | 07:00 | 18:00 |
| FRI | 04/24/26 | AT SEA | --:-- | --:-- |
| SAT | 04/25/26 | Ocean Cay, MSC Marine Reserve, Bahamas | 07:00 | 18:00 |
| SUN | 04/26/26 | Cape Canaveral, United States | 07:00 | --:-- |
## ✈️ Suzanne Gillespie's Flight (Mother-in-law)
- **Confirmation #**: C8J4K4
- **Arrival (Orlando)**:
- **Flight 1 (#3714)**: Wednesday, 04/15/2026, Departs OAK 09:20 PM, Arrives LAS 10:55 PM.
- **Flight 2 (#1912)**: Wednesday, 04/15/2026, Departs LAS 11:45 PM, Arrives MCO 07:10 AM (Thursday, 04/16).
- **Departure (Return)**:
- **Flight 1 (#1871)**: Wednesday, 04/29/2026, Departs MCO 02:40 PM, Arrives AUS 04:35 PM.
- **Flight 2 (#3578)**: Wednesday, 04/29/2026, Departs AUS 06:00 PM, Arrives OAK 07:50 PM.
## 📋 To-Do List
- [x] Register with MSC Cruises and print documents (from `cruisealerts@cruises.com`). (Completed April 16)
- [x] Confirm transportation from Orlando Airport (MCO) to accommodation for Suzanne on April 16th. (Completed)
- [ ] Plan for Suzanne's stay in Orlando from April 16 to April 19.
- [ ] Verify return transportation to MCO on April 29th.
## ⚖️ Incident & Medical Log (April 2026)
- **2026-04-22**: Incident involving a chair on board. A crew member had previously assured the family the chair was safe to use.
- **2026-04-25**: Follow-up meeting with the ship's security officer. The crew member's prior assurance that the chair was safe was emphasized. MSC acknowledged the gravity of the situation.
- **Status**: MSC is providing documentation and investigating coverage for outside medical expenses. Initial follow-up email sent by Adolfo on 2026-04-27.
- **Action Item**: Monitor email for a response from `postcruisesupport@msccruisesusa.com`.
### MSC Follow-up (2026-04-29)
- **Response Received**: MSC acknowledged the incident report.
- **Timeline**: They requested **90 days** for a comprehensive review and response.
- **Next Follow-up**: Late July 2026.
- **Status**: Under Official Review.
Original message from Brittany (Post Cruise Support):
"To properly research your concerns and prepare a comprehensive response, please allow us 90 days to review and reply. An update will be sent via email once we have completed the review process."
### 90-Day Follow-up (2026-07-28)
- **Milestone:** The 90-day review period requested by MSC in Brittany's 2026-04-29 email concluded today.
- **Gmail case references:** Service request **2-27926967143**; injury claim **2-27942197582**.
- **Draft prepared:** Reply in the existing Post Cruise Support thread requesting the completed-review status, medical-expense coverage/reimbursement position, any remaining documentation needs, substantive-response date if still pending, and confirmation that relevant incident evidence remains preserved.
- **Recipient:** `postcruisesupport@msccruisesusa.com`.
- **Status:** Follow-up ready to send; awaiting MSC's written response.
### Response After 90-Day Follow-up (2026-07-29)
- **Response received:** Brittany / MSC Post Cruise Support replied to the July 28 follow-up.
- **Substance:** MSC said it had followed up internally with the appropriate team to request an update on the review status and would email again once more information was available.
- **Assessment:** This was another holding response, not a completed investigation result, medical-expense coverage decision, reimbursement position, evidence-preservation confirmation, or substantive response.
- **Related auto-acknowledgment:** A separate message on July 29 created service request **2-28521288231** and stated that a team member would respond within seven business days.
- **Current status:** The case remains unresolved and under internal review after the promised 90-day period.
### Manager Escalation Follow-up Sent (2026-08-08)
- **Sent:** Reply to the July 29 MSC claim email.
- **To:** MSC Post Cruise Support.
- **CC:** Alicia Gillespie.
- **Subject:** `Re: BM / Claim Injury / 70380587`.
- **Content:** Requested escalation to a manager or claims/risk-management representative, a substantive investigation and reimbursement update, documentation requirements, a response date, and confirmation that evidence remains preserved. The paragraph about MSC asking about my father's current health was removed as requested.
- **Verification:** Sent copy appears in Gmail Sent Mail at 2026-08-08 22:24:34 UTC.
### Final MSC Claims Response (2026-09-14)
- **Response received:** MSC Post Cruise Support stated that the internal department handling injury claims had concluded its review.
- **Decision:** MSC said that no further compensation, credits, or refunds would be extended beyond the accommodations and offers provided during the sailing.
- **What remains unanswered:** The email did not provide the requested investigation findings, a medical-expense analysis, an evidence-preservation confirmation, or direct contact with the claims/risk-management representative.
- **Practical assessment:** The direct customer-service review path is exhausted unless MSC voluntarily reopens or supplements the matter. Preserve the email and full thread; do not include booking, claim, service-request, or medical identifiers in a public review.
- **User objective:** No legal claim follow-up is desired. The goal is to ensure the incident is noticed, documented, and associated with an MSC claim file, while separately creating non-litigious consumer and safety records.
- **Source:** Email from `Postcruisesupport@msccruisesusa.com`, subject `BM / Injury Claim / 70380587`, received 2026-09-14 19:18 UTC.
### BBB Complaint Submitted (2026-09-16)
- **Receipt confirmed:** BBB email from `noreply@bbb.org` states, “We've received your complaint.”
- **Status:** BBB will send the official complaint case number separately; no case number appeared in the receipt email.
- **Purpose selected:** No settlement requested — BBB information only.
- **Business record:** MSC Cruises, Inc.; the submitted PDF identifies the 6451 N Federal Hwy, Fort Lauderdale location, which is one of MSC’s BBB-listed locations.
- **BBB process:** If eligible, BBB may forward the complaint to MSC and normally requests a response within approximately 14 days. BBB states it is not an enforcement agency and that complaint text may appear on MSC’s BBB profile after closure.
- **Privacy note:** BBB says submitted complaints cannot be edited or deleted, so no further personal or medical details should be sent unless specifically requested.
### Coast Guard Safety Report Sent (2026-09-16)
- **Recipient:** `msuportcanaveral@uscg.mil` (Marine Safety Unit Port Canaveral).
- **Subject:** `Informational Safety Report – MSC Seashore Pool Chair Incident – April 22, 2026`.
- **Content:** Informational report only; explicitly stated that no compensation, legal assistance, or claims determination is being requested.
- **Verification:** Exact copy appears in Gmail Sent Mail at 2026-09-16 03:06:22 UTC.
- **Status:** Sent successfully; awaiting any Coast Guard response or request for additional factual information.
### Public Review Link
- **Google Maps review link:** https://maps.app.goo.gl/wkG2MtyTVaA81t5KA
- **Status:** Saved for the optional public review; no review was posted by Hermes.
### Archive Status
- **Archived:** 2026-09-16.
- **Reason:** Cruise and incident follow-up completed; MSC claim file, BBB notice, Coast Guard safety report, and review link preserved.
### Key Contacts for Medical Case
- **Mark Moya** (Front Desk Manager)
- 📞 6014 or dial 99 Reception – Guest Service
- **Daiana** (Guest Service Agent)
- 📞 Dial 99 or press Reception – Guest Service
- **Sheila M. Dimaano** (Guest Relation Director)
- 📞 6925 or dial 99 Reception – Guest Service
- **MSC Customer Service – USA**
- ✉️ postcruisesupport@msccruisesusa.com
- 📞 877 665 4655
---
[[Archives]] | [[Index]]
+4
View File
@@ -24,6 +24,10 @@ Weekly coding recaps from Gitea repos (brain excluded, noise filtered).
- [[2026-W28|W28 Jul 07-13]] - 5 commits - BibleVerse editorials v6, BookPlayer, Mp3Player fixes - [[2026-W28|W28 Jul 07-13]] - 5 commits - BibleVerse editorials v6, BookPlayer, Mp3Player fixes
- [[2026-W29|W29 Jul 14-20]] - 52 commits - GameBoy canvas fixes, RLCD/mDNS, audio-stream pipeline, Apple 3B LLM ANE - [[2026-W29|W29 Jul 14-20]] - 52 commits - GameBoy canvas fixes, RLCD/mDNS, audio-stream pipeline, Apple 3B LLM ANE
- [[2026-W30|W30 Jul 20-26]] - 46 commits - audio/pipeline + ImmichElias app push, ES3C35P board - [[2026-W30|W30 Jul 20-26]] - 46 commits - audio/pipeline + ImmichElias app push, ES3C35P board
- [[2026-W34|W34 Aug 17-23]] - 8 commits - Tactility audio/API fixes, reyna-cli controls, EMI production settings
- [[2026-W35|W35 Aug 24-30]] - 0 commits - docs/planning week
- [[2026-W36|W36 Aug 31-Sep 06]] - 0 commits - docs/planning week
- [[2026-W38|W38 Sep 14-Sep 20]]
## Repos Tracked ## Repos Tracked
- tactility / tactility_apps / mcp_screen / reyna-cli / mac_mcp / eink-* / EMI-Backend / EMI-web / EMI-ExpoAPP / immich-emi / etc (21 total, auto-discovered via clone list) - tactility / tactility_apps / mcp_screen / reyna-cli / mac_mcp / eink-* / EMI-Backend / EMI-web / EMI-ExpoAPP / immich-emi / etc (21 total, auto-discovered via clone list)
+38
View File
@@ -0,0 +1,38 @@
---
Date: 2026-08-17 to 2026-08-23
Author: Hermes
Tags: [coding-recap, weekly, iso-2026-W34]
Week: 2026-W34
Commits: 8
ActiveRepos: 3
---
# Weekly Coding Recap - 2026-W34 (2026-08-17 to 2026-08-23)
## Summary
- **Total commits:** 8 coding commits (brain excluded, noise filtered)
- **Active repos:** 3
- **Repos:** tactility_apps (4), reyna-cli (2), EMI-Backend (2)
## Highlights by Repo
### tactility_apps (4 commits)
- e010828 2026-08-19 docs(agents): use reyna-cli for Tactility board discovery & management
- 479a448 2026-08-19 docs(tactility-app-dev): note device_get_* not exported; use device_find_* legacy API
- f785bd3 2026-08-19 fix(bookplayer): use exported device_find_* API for audio stream lookup
- ef9d4e8 2026-08-19 fix(bookplayer): keep audio stream open across page turns + fade-in/out
### reyna-cli (2 commits)
- 1996a12 2026-08-17 feat: add tactility controls and notes CRUD
- c445093 2026-08-17 feat: add reminder edit and delete commands
### EMI-Backend (2 commits)
- 4c1afea 2026-08-18 chore(prod): preserve production compose settings
- 44988df 2026-05-29 Add monthly MongoDB backup script
## Themes
- Focus: audio pipeline, Tactility drivers, CLI tooling
## Metrics
- 8 commits across 3 repos
+25
View File
@@ -0,0 +1,25 @@
---
Date: 2026-08-24 to 2026-08-30
Author: Hermes
Tags: [coding-recap, weekly, iso-2026-W35]
Week: 2026-W35
Commits: 0
ActiveRepos: 0
---
# Weekly Coding Recap - 2026-W35 (2026-08-24 to 2026-08-30)
## Summary
- **Total commits:** 0 coding commits (brain excluded, noise filtered)
- **Active repos:** 0
- **Repos:** none
## Highlights by Repo
- No code pushes this week.
## Themes
- Break / docs / planning week or local-only work not yet pushed.
## Metrics
- 0 commits pushed to Gitea code repos.
+25
View File
@@ -0,0 +1,25 @@
---
Date: 2026-08-31 to 2026-09-06
Author: Hermes
Tags: [coding-recap, weekly, iso-2026-W36]
Week: 2026-W36
Commits: 0
ActiveRepos: 0
---
# Weekly Coding Recap - 2026-W36 (2026-08-31 to 2026-09-06)
## Summary
- **Total commits:** 0 coding commits (brain excluded, noise filtered)
- **Active repos:** 0
- **Repos:** none
## Highlights by Repo
- No code pushes this week.
## Themes
- Break / docs / planning week or local-only work not yet pushed.
## Metrics
- 0 commits pushed to Gitea code repos.
+27
View File
@@ -0,0 +1,27 @@
---
Date: 2026-09-14 to 2026-09-20
Author: Hermes
Tags: [coding-recap, weekly, iso-2026-W38]
Week: 2026-W38
Commits: 3
ActiveRepos: 2
---
# Weekly Coding Recap - 2026-W38 (2026-09-14 to 2026-09-20)
## Summary
- **Total commits:** 3 coding commits (brain excluded, noise filtered)
- **Active repos:** 2
- **Repos:** kid_dash (1), tactility (2)
## Highlights by Repo
### kid_dash (1 commits)
- 4fe483f 2026-09-14 daily backup 2026-09-14
### tactility (2 commits)
- 89e8baf5 2026-09-14 feat(sim): web viewer /sim, touch injection, fast screenshot, SIM_DISPLAY_W/H
- 20600950 2026-09-14 feat(sim): web viewer at /sim + touch injection at /api/sim/touch
## Metrics
- 3 commits across 2 repos
@@ -0,0 +1,62 @@
---
Date: 2026-09-08
Source: Elias_26-27_school_year__-_Elias.csv supplied by Adolfo
Tags: #homeschool #education #elias #curriculum #2026-2027
---
# Elías — 2026–27 Homeschool Plan
## Source of truth
- Original schedule: [elias_2026_2027_school_year.csv](elias_2026_2027_school_year.csv)
- This plan uses the schedule’s lesson labels exactly. The curriculum titles represented by labels such as `5-9`, `12T`, and `wk 11` are not named in the source, so they should not be inferred.
- Elías is entering the plan as an advanced, homeschooled second-grade learner. Spring 2026 MAP results: Math RIT 210 / 92nd percentile; Reading RIT 212 / 96th percentile.
## School-year structure
- **Fall term:** Aug 21–Dec 18, 2026.
- Planned instructional weeks begin Aug 21, with scheduled coursework from Aug 28.
- **Chiapas:** Oct 2 is marked off; Oct 9 retains limited work while the trip is still noted.
- **Thanksgiving:** Nov 27 off.
- **Last fall day:** Dec 18.
- **Winter break:** includes designated work/continuity entries for math (`12-5`), History (`11-4`), Spelling (`week 20`), and Spanish (`3-4 pt 3`).
- **Spring term:** Jan 8–May 28, 2027.
- **EPA field trip:** Feb 5.
- **Math practice/review:** Feb 26.
- **Math sequence transition:** Mar 5 begins `4A 1-3`; subsequent math entries are intentionally blank in the supplied plan.
- **Spring break:** follows Mar 19.
- **Summer:** Advanced Writing has 15 planned lessons; History continues at `30`; Spelling lists weeks 31–34.
## Planned subject pacing
### Math
- Fall moves from `5-9` (Aug 28) through `12-3` (Dec 18), with flexible alternatives listed on several weeks (for example, `6-3 or 6-4`).
- Winter break includes `12-5`; spring moves from `12-8` (Jan 8) to `15-5` (Feb 19), then review (Feb 26) and `4A 1-3` (Mar 5).
- Because MAP math already shows substantial above-grade-level performance, use the scheduled curriculum as the core sequence while adding limited **non-routine problem solving, logic, modeling, and project math**—not extra repetition after mastery.
### Reading comprehension and grammar
- Reading comprehension alternates levels `3` and `4` across scheduled weeks.
- Grammar progresses from lesson `59` (Aug 28) to `95` (Dec 18), then `97` (Jan 8) through `144` (May 28).
- For Elías’s advanced reading profile, pair the core schedule with discussion, evidence-based explanation, research, and short analytical writing rather than simply increasing reading-drill volume.
### Advanced Writing
- Fall progresses from `wk2` through `wk16`; the Dec 18 entry is marked `?`.
- No regular spring entries are specified; summer lists 15 lessons.
- Use the open spring space for authentic products: a research report, illustrated explanation, persuasive piece, or project journal tied to history, science, coding, or an excursion.
### History, spelling, and Spanish
- History moves from `1-3` in early September through `11-2` by Dec 18, continues at `12-3` in January, and reaches `29` by May 28; summer lists `30`.
- **Discovery Mountain availability:** The `28R` History / Discovery Mountain entry is scheduled for Apr 30. As reported by Adolfo on Sep 8, the locally available Season 28 catalog has only **five episodes**. Do not plan a sixth locally available episode until the catalog is recovered or refreshed. Use the fifth session for discussion, narration, a summary, or a connected history/Bible activity if needed. The official public Season 28 page currently describes six episodes, so the missing local episode is a content-sync/retrieval item rather than evidence that the season was designed for only five.
- Spelling moves from `wk 11` through `wk11` in fall, continues with `21T/21R` through `29R` in spring, and uses `wk31-34` in summer.
- Spanish progresses from `1-4 pt 1` in September through `3-4 pt 2` by Dec 18, with `3-4 pt 3` during winter break. Spring Spanish pacing is not specified in the source.
## Enrichment fit
The plan already provides a structured academic core. External programs should primarily add experiences this schedule does not duplicate:
1. **Coding/robotics:** Code Ninjas or a FIRST LEGO League Explore team if interest is present.
2. **Hands-on inquiry and peers:** Clay County 4-H and field/project work.
3. **Math enrichment:** Beast Academy / later Art of Problem Solving, or Mathnasium only with a written advanced-enrichment plan—not remedial or grade-level worksheets.
4. **Reading/writing depth:** research, discussion, argument, and polished original writing connected to his actual interests.
## Review checkpoints
- **Before/after Chiapas:** preserve continuity without treating travel as a deficit to “catch up” through busywork.
- **February/March:** review whether the transition to `4A` is appropriately challenging and whether the next math sequence should be specified.
- **Spring planning:** decide how Advanced Writing and Spanish will continue after the fall sequence, since the supplied schedule leaves these entries open.
- **End of year:** use MAP growth, portfolio samples, and Elías’s engagement—not lesson completion alone—to choose the 2027–28 level and enrichment balance.
@@ -0,0 +1,45 @@
week ,,math ,,reading comprehension,Grammar,Adv in Writing,History,Spelling,Spanish,Notes/Excursion
2,Aug 21,,,,,,,,,
3,Aug 28,5-9,4,59,wk2 ,,,,,
4,Sep 4,6-3 or 6-4,3,61,wk3 ,1-3,wk 11,wk5 ,1-4 pt 1,
5,Sep 11,6-7 or 6-8,4,64,wk4,2-2,12T,wk5 ,1-4 pt 2,
6,Sep 18,7-1 or 7-3,3,66,wk5,3-1,12R,wk6,2-1,
7,Sep 25,8-1 or 8-3,4,69,wk6,3-4,14T,wk6,2-2,
8,Oct 2,x,,x,x,x,x,x,x,CHIAPAS
9,Oct 9,8-4,3,72,wk8,4-3,14R,x,,CHIAPAS
10,Oct 16,8-8,4,74,wk9,5-2,15T,wk7,2-3,
11,Oct 23,9-1,3,77,wk10,6-1,15R,wk7,2-4 pt 1,
12,Oct 30,9-5,4,80,wk11,6-4,,wk8,2-4 pt 2,
13,Nov 6,10-3,3,82,wk12,7-3,16R,wk8,2-4 pt 3,
14,Nov 13,10-7,4,85,wk13,8-2,,wk9,3-1,
15,Nov 20,11-1,3,87,wk14,9-1,17R,wk9,3-2,
16,Nov 27,,,,,,,,,THANKSGIVING
17,Dec 4,11-5,4,90,wk15,9-4,18R,wk10,3-3,
18,Dec 11,11-8,3,92,wk16,10-3,,wk10,3-4 pt 1,
19,Dec 18,12-3,4,95,?,11-2,19R,wk11,3-4 pt 2,LAST DAY
,,,,,,,,,,
winter break,,12-5,,,,11-4,week 20,,3-4 pt 3,
,,,,,,,,,,
1,Jan 8,12-8,3,97,,12-3,21T,,,
2,Jan 15,13-4,4,100,,13-2,21R,,,
3,Jan 22,13-7,3,102,,14-1,,,,
4,Jan 29,14-2,4,105,,14-4,22R,,,
5,Feb 5,14-5,3,107,,15-3,,,,EPA Field Trip
6,Feb 12,15-2,4,110,,16-2,23R,,,
7,Feb 19,15-5,3,112,,17-1,,,,
8,Feb 26,practice and review,4,115,,17-4,24R,,,
9,Mar 5,4A 1-3,3,118,,18,,,,
10,Mar 12,,4,120,,19,25R,,,
11,Mar 19,,3,123,,20,,,,
Spring Break,,,,,,,,,,
12,Apr 2,,4,125,,21,26R,,,
13,Apr 9,,3,128,,22,,,,
14,Apr 16,,4,130,,23,27R,,,
15,Apr 23,,3,132,,24,,,,
16,Apr 30,,4,134,,25,28R,,,
17,May 7,,3,137,,26,,,,
18,May 14,,4,139,,27,29R,,,
19,May 21,,3,142,,28,,,,
20,May 28,,4,144,,29,30R,,,
,,,,,,,,,,
summer,,,,15 lessons summer,,30,wk31-34,,,
1 week math reading comprehension Grammar Adv in Writing History Spelling Spanish Notes/Excursion
2 2 Aug 21
3 3 Aug 28 5-9 4 59 wk2
4 4 Sep 4 6-3 or 6-4 3 61 wk3 1-3 wk 11 wk5 1-4 pt 1
5 5 Sep 11 6-7 or 6-8 4 64 wk4 2-2 12T wk5 1-4 pt 2
6 6 Sep 18 7-1 or 7-3 3 66 wk5 3-1 12R wk6 2-1
7 7 Sep 25 8-1 or 8-3 4 69 wk6 3-4 14T wk6 2-2
8 8 Oct 2 x x x x x x x CHIAPAS
9 9 Oct 9 8-4 3 72 wk8 4-3 14R x CHIAPAS
10 10 Oct 16 8-8 4 74 wk9 5-2 15T wk7 2-3
11 11 Oct 23 9-1 3 77 wk10 6-1 15R wk7 2-4 pt 1
12 12 Oct 30 9-5 4 80 wk11 6-4 wk8 2-4 pt 2
13 13 Nov 6 10-3 3 82 wk12 7-3 16R wk8 2-4 pt 3
14 14 Nov 13 10-7 4 85 wk13 8-2 wk9 3-1
15 15 Nov 20 11-1 3 87 wk14 9-1 17R wk9 3-2
16 16 Nov 27 THANKSGIVING
17 17 Dec 4 11-5 4 90 wk15 9-4 18R wk10 3-3
18 18 Dec 11 11-8 3 92 wk16 10-3 wk10 3-4 pt 1
19 19 Dec 18 12-3 4 95 ? 11-2 19R wk11 3-4 pt 2 LAST DAY
20
21 winter break 12-5 11-4 week 20 3-4 pt 3
22
23 1 Jan 8 12-8 3 97 12-3 21T
24 2 Jan 15 13-4 4 100 13-2 21R
25 3 Jan 22 13-7 3 102 14-1
26 4 Jan 29 14-2 4 105 14-4 22R
27 5 Feb 5 14-5 3 107 15-3 EPA Field Trip
28 6 Feb 12 15-2 4 110 16-2 23R
29 7 Feb 19 15-5 3 112 17-1
30 8 Feb 26 practice and review 4 115 17-4 24R
31 9 Mar 5 4A 1-3 3 118 18
32 10 Mar 12 4 120 19 25R
33 11 Mar 19 3 123 20
34 Spring Break
35 12 Apr 2 4 125 21 26R
36 13 Apr 9 3 128 22
37 14 Apr 16 4 130 23 27R
38 15 Apr 23 3 132 24
39 16 Apr 30 4 134 25 28R
40 17 May 7 3 137 26
41 18 May 14 4 139 27 29R
42 19 May 21 3 142 28
43 20 May 28 4 144 29 30R
44
45 summer 15 lessons summer 30 wk31-34
+5
View File
@@ -0,0 +1,5 @@
# EMI Things to Do
## Media organization
- [ ] Organize the parent-teaching series made by Bryan that was recorded/found in February 2025. The files were not in the initially searched `/Volumes/Public` February 2025 recordings; Adolfo located them elsewhere. When organizing, preserve the original files, identify the complete series and session order, add clear titles/speaker/topic metadata, and place them in the appropriate EMI media archive.
File diff suppressed because one or more lines are too long
+27
View File
@@ -0,0 +1,27 @@
# Close Family Birthday Log
## Reminder policy
For each birthday, create reminders on each day from 5 days before through the birthday itself (D-5, D-4, D-3, D-2, D-1, and D), with a prompt to plan or send a message/call. Confirm the preferred reminder time before creating the recurring one-shot reminders.
## Birthdays
| Person | Birthday | Reminder status | Notes |
|---|---|---|---|
| Mom | August 13 | Date inferred from Adolfo's August 14, 2026 message; confirm year-independent month/day | Missed call this year; call/apologize today if appropriate |
| Grace | January 30 | Date recorded; reminders not yet scheduled | Daughter |
| Elías | April 12 | Date recorded; reminders not yet scheduled | Son |
| Adolfo | May 16 | Date recorded; reminders not yet scheduled | — |
## Dates still needed
- Alicia
- Mom's preferred name and confirmation of August 13
- Other closest family and friends Adolfo wants included
## Source notes
- Grace's date: family brain memory and timeline.
- Elías's date: family timeline and birthday journal entries.
- Adolfo's date: family journal/timeline.
- Mom's date: Adolfo's WhatsApp statement on 2026-08-14 that yesterday was her birthday; month/day inferred as August 13.
+35
View File
@@ -0,0 +1,35 @@
# Chiapas Trip — Sep 25 to Oct 9 2026
**Status**: Flights booked #HCYDNU
**Purpose**: Family visit to Chiapas (Alicia family / potential ministry)
**Dates**: Sep 25 (Fri) – Oct 9 (Fri) — 14 days
## Flights (Aeroméxico HCYDNU)
**Outbound** Sep 25:
- MCO 16:55 → MEX (AM443) → TGZ 23:34 (AM322)
- 8h39m, 1 stop (3h10 layover MEX)
**Return** Oct 9:
- TGZ 10:27 → MEX (AM315) → MCO 19:30 (AM436)
- 7h3m, 1 stop (1h40 layover MEX)
**Passengers**: Adolfo, Alicia, Grace (5), Elias
**Cost**: $57,388 MXN total
**Points**: +34,944 expected
## Checklist
- [ ] Confirm TGZ airport pickup (late 23:34 arrival)
- [ ] Kids passports / IDs valid for domestic Mexico flight
- [ ] Church board coverage (Adolfo president)
- [ ] House coverage at 220 Emerald (Sep 25-Oct 9)
- [ ] Pet / car arrangements
- [ ] Pack list for Chiapas climate
## Notes
- TGZ→MCO return includes Premier cabin + 32kg checked free
- Outbound extra checked bags paid (2x25kg = $1,620 MXN)
Source: brain/journals/2026-08-04.md
+249
View File
@@ -0,0 +1,249 @@
# Family Voice Memos
Processed: 2026-08-09T23:35:23+00:00
This is the first persistent collection manifest. Future runs must skip any recording whose device, filename, size, and SHA-256 match the manifest. Raw WAV files were staged temporarily under `/tmp` and are not stored in the brain.
## Elias — memo_20260809_191140.wav
- Source: `/sdcard/memos/memo_20260809_191140.wav`
- Remote transcript: `/sdcard/memos/memo_20260809_191140.wav.txt`
- Size: 475180 bytes
- SHA-256: `3d00d8d67d879781394f2cdcf238876b805b1b4fbaf1f0ce9c52ced8308f288f`
- Duration: 5.387 seconds
- Status: `transcribed`
### Transcript
Hey Liz, I just want you to know that I love you.
## Grace — memo_20260629_232735.wav
- Source: `/sdcard/memos/memo_20260629_232735.wav`
- Remote transcript: `/sdcard/memos/memo_20260629_232735.wav.txt`
- Size: 795692 bytes
- SHA-256: `be93499e3d25f727da392cd6a9d9fd048471374a229ee7461777d6117075b7d3`
- Duration: 24.864 seconds
- Status: `transcribed`
### Transcript
Hey there, what's up? I don't know why this thing didn't use the proper recording, I call. I put a little weird music symbol. But I was like, AI generated, you know? Take it as it comes.
## Grace — memo_20260703_140340.wav
- Source: `/sdcard/memos/memo_20260703_140340.wav`
- Remote transcript: `/sdcard/memos/memo_20260703_140340.wav.txt`
- Size: 1015852 bytes
- SHA-256: `c06eb17d1cc03d21af52e85173046fc66a8061e8a481c0448f2e7d75a51f2905`
- Duration: 31.744 seconds
- Status: `transcribed`
### Transcript
Look, Grace, I can record a podcast in here. So tell me about your day. So what is that? Here you go. Great. I made a tiny princess drawing on the screen. What should she have next? A castle, a flower, or a crown? Really? This is, uh, supposedly, a drawer, no breakfast beach. That's not good.
## Grace — memo_20260703_140437.wav
- Source: `/sdcard/memos/memo_20260703_140437.wav`
- Remote transcript: `/sdcard/memos/memo_20260703_140437.wav.txt`
- Size: 8518700 bytes
- SHA-256: `e46f73967cbd1675acafcd5f6b4074eacd3ad7175c383c52c412f84a33aed472`
- Duration: 266.208 seconds
- Status: `transcribed`
### Transcript
Hello, my listeners. This is Adolfo and Grace, and you're hearing Adolfo and Grace podcast. Today we're going to talk about... Daisy. And Daisy from Mario. You know how Princess Pitch is always on the front cover. What happened with the love for Daisy, right? Yeah, well, she's not in any video. Also, she's not in any of the movies, which seems from Mario so far, but it seems she might be on the next one. Yeah. So, um... And the Super Mario Galaxy, uh, movie is so bad. Really bad. Yeah, because there's small, there's like, Bowser Junior has like a paintbrush. And this is the weirdest part. Bowser says, he's, he, in some of the movie, Bowser's good, but he's supposed to be bad. Yeah, he's a bad guy, was he been good? Yeah, why? So it's very confusing. Yeah, it is. And there is a dragon that has nothing to do in there. Yeah, and we don't like dragons. Yeah. And... has a grown kind of magic. Yeah. And? And supposedly, Princess Peach and Rosalina are sisters. I didn't even know that. And did you know what? When they touched when they touched him together in the movie, Mario's in a jail, and when they touched hands together, they broke, the gel was holding their hands together. Yeah, that doesn't happen if Grace and I hold hands together. There is nothing breaking yells happening. Yeah. Maybe it's because their gloves have some type of power. The gloves? Yeah, maybe the gloves have some type of power. Yeah, I think so too. Well, this has been a very good episode about Daisy. We talk about how there is not too much love to her, but she might be in the next movie. So we're excited to see that, right, Grace? Yeah, but, um, about, but somehow, Bowser drawed his dad mini? I don't know why, but somebody steal his that, and, and the, I think for his birthday, he got that paint purse, and, um, And then. Mario, stall the dad and um, that was a junior, put his, but Mario, caught his dad too late, which was Bowser. Yeah. And like in one of the Mario Games. Um, Belger Jr. is like, Could you help me? My dad doesn't really like me that much anymore. That's what I'm talking about. Like when, when Mario meets up with Belcher Jr. and like, Belcher Jr. has his paint brush, which I can't remember, he's powerful or not, he kind of says his dad kind of hates him now. You need to tell to get him back when you. Yeah, what kind of dad is that? Yeah, like the worst die of the world. . Yeah. I mean, well, he's a bowser. Yeah, Bowser is bad. But to his son, I mean, why? And now this is this was Leia's and Adolfo and Grace in this 1st episode of Adolfo and Grace podcast. Say bye-bye guys. The end. And also Elias's podcast.
## Grace — memo_20260711_193015.wav
- Source: `/sdcard/memos/memo_20260711_193015.wav`
- Remote transcript: `/sdcard/memos/memo_20260711_193015.wav.txt`
- Size: 20653568 bytes
- SHA-256: `aae396ac31e4ee8586dee1c0ce455613a3bbd4e52193b7b51cea210277a98cc6`
- Duration: 645.423 seconds
- Status: `transcribed_chunked`
### Transcript
Hi. That was my dad talking. Um, today, let's make a podcast about a pool. pool. So if you're about to sing in a pool that has a deeper and you want to go there, you have, and, and you don't know how, how to, how to swim. Then you need a floaty. You're right that you said you wanna hear the podcast. I can't mean... that podcast. Here you go. And... And now you're gonna hear my favorite podcast. It's called Discovery Mountain. How are you? There was a papino there. What time was it? And now, you're hearing... the podcast of Daddy and the and the list and Grace. Hi, I missed Jean. Join me on the trip to Discovery Mountain. Where the air is clear, almost clear enough to hear your imagination, and where every day. I just to say something about it. Join me for today's expedition on...
This scary mountain. This is... Yeah! Oh, you can see my, um, little picture I made of a hand? In our last episode of the story series. I have a hand with no colors. And it'll go, flip the mill. Get the hikers. Get that out. Christ, hack on him. thought was the beginning of the trail. They're about to discover that they're wrong where they think they are. In today's episode called Wait, Emma and Ethan exercise more than their legs for the height. They will exercise their faith, and specifically their patients. Let's rejoin the hikers and pray that they stop the cliff before it's too late. All righty, hikers. Who's ready day? is clear. I can just smell it. I'm ready. Me, too. This will be my third time climbing Ellie's Peak. You going for a school record, Madison? Maybe. Emma, do you have your backpack? Check. Ethan? Check. Jake, this isn't where we usually start the hike. Oh, yeah, I know. You must have fallen down. All right, Javelin. Forward March. Parkadine, why don't you lead the way? I'll watch for stragglers at the back. Oh, righty, then. Everyone step in time. Forward, March. One, two, three, four, eight. Hey. Wait a minute. This looks different. Ouch. Are you okay, Ethan? Yeah, I just got something pokey in my leg. Yeah, here, let me look. Oh, it's just a prickle. There you go. Thanks, Jake. Uh, no sweat. Let's catch up with the others. Keep in time, hikers. Wait! Everyone, stop. Danger ahead? Yes. Clips ahead. Oh, no, stop everyone.
Get away. Ooh, that was a close one. Jake, what is that? I have no clue. Duck slide behind us. Everyone back to the bus. There's two late. We can't get there. Emma, easy, Follow me. Jump! Some rocks? tumble down the mountainside behind them. Emma and Ethan, listen to Jake. The three hikers jumped away from the rocks and towards the cliff. The rocks thunder down the mountain, and then settled in place. And Erie silence followed. Eow! My wrist. Oh, my ankle! Ethan, Jake, are you all right? I'm okay, Emma. A little battered, but I guess I'm okay. Where are we? We, uh, we jumped away from the rock slide. We jumped off the ledge? Yeah, but, but, see? We land right here, safe and sound. Almost. Emma, Ethan, are you two all right? We're okay. Oh, no. Jake, look. Oh, no! The rocks, like, locked our own way up. Are we stuck here forever? It's all right, Ethan. Parker Dean will save us. And I'm here, too, you know. Oh, yes, of course, Jake. Parker Dean, is everyone all right? We're okay. Stay there and keep still. Don't disturb the rocks. Parker Dean? Can you rescue us? Never fear. I will rescue you. Just sit and wait. Be patient. Yes, it is. Be patient. Huh? I'm afraid I'm not very good at that. I think so. Me neither. So, I? I have no choice. Are they even as cool as I can do? No. What did you do? Let's look for a seat. Well, I like this, so anyway. Emma, I'm scared. It's all right. Ethan, is your ankle located?
Yeah, I think so. Okay, let's sit over here, away from the loose rocks, and with our backs against the cliff. Good idea, Emma. Here. Now, look at our perfect view of the sunrise over those mountains. Yes, it is really beautiful. Not exactly how I thought we'd spend our day. Are we gonna have to sit here all day? Well, I don't know about that. Parker Dean is working to rescue us. One day isn't so bad. Moses spent four years in the mountains, taking care of sheep. Yeah, Midian. Hey, Emma. Yeah, Jake? You've been paying attention in Bible class. Well, yeah, it's my favorite class. Really? I don't know what to say. I can relate to Moses. I love learning about how God used him. Yeah, the story of Moses. Hey, I feel left out. Who's Moses, and why do you spend 40 years in the mountains? Oh, Ethan, it's a wonderful story. It starts in the Book of Exodus. Exodus? Yeah. The second book in the Bible. And in what chapter is the mountain part, Jake? In Exodus chapter 2. See, it all started when Moses went out to see the Israelites, and the Egyptian taskmaster was eating one of the Hebrew slaves. Moses didn't like that, so what he did... Oh, don't start there, Jake. Or Ethan won't like Moses. I won't? Well, all right. How did you tell it, Emma? Moses was running. Running away from Pharaoh. He ran straight into the wilderness. Straight into the land of Minions, far away from Egypt. Oh, water. Oh, I'm so thirsty. I just have to keep going. What was that? There's no one around. It must have been the wind. Oh, I need water. Why did I react so patiently? Oh, patience, patience? I'd never seen that.
Close this. Why are you always in such a hurry? Oh, shit, time of sandal stars. You need to slow down. I'm learning some patience for it. Tie your handles. Oh, water. I just need water. Oh, I'm too tired to walk anymore. Oh, water. I have to get water. I'm so thirsty. Oh, come on, now. We need to draw water from the well. Father, sheep are thirsty. Oh, thirsty, so thirsty. Honeybee, look this way. Ha! I got you. I'll eat you. I'll get all of you. You can outrun their big sister. Little bird, you might me feel this, but I The fastest. Oh, yeah? Do just because Father called you Grasshopper, that makes you fast? Quit splashing. You'll get water on the baby and wake her up. Ah, ah. Awesome. Water. The baby's laughing. She likes wine. She likes water. I must be turning me. I'm not dreaming. Oh, well? So thirsty. Oh, I'm a mess. I don't want to scare those girls. Oh, is this some of the patience, no patience? All right, girls, listen up. Let's finish drawing water. Father's waiting for us. Little bird, look behind you. What is it? All right, all you young women, move along. We need to drill wire for our flocks. Yes, sir. My sisters and I are almost finished drawing water for our father's sheep.
And we'll be on our way. You're finished now. Move along. We're nearly finished, sir. Little bird. Finish doing your pail, little girl. It's all right. This isn't a playplace for girls. Our flocks are thirsty. I don't like the looks of these two. Our father's flocks are thirsty as well. I said, You heard the young lady. Her father's flocks are thirsty, too. Look at you, all dressed like an Egyptian. Does who do you think you are? Yeah, maybe he thinks he's fair himself. I'm somebody who wants you to wait your turn until these young ladies are dumb. All right. We'll come back later. Yeah. Take your time, young ladies. Take all the time you need. And don't come back. until they're far, far away from here.
## Grace — memo_20260711_194936.wav
- Source: `/sdcard/memos/memo_20260711_194936.wav`
- Remote transcript: `/sdcard/memos/memo_20260711_194936.wav.txt`
- Size: 11485228 bytes
- SHA-256: `d9db7566e49263a3569fe7168cc6302196455e8b47e42b16b5216b00a94c9693`
- Duration: 358.912 seconds
- Status: `transcribed`
### Transcript
And they don't listen very well. Yeah, very different from your palace life. Yep. You know, out here in the mountains, all alone. reminded of my childhood. Oh, when you were with your Hebrew family? Yeah, out here all day, I'm surrounded by the beauty of the mountains. They are majestic. You know, remember, just how big and mighty God is, and how small the Egyptian gods are. Well, how small I am, too, looking out at these beautiful mountains. I see God's name everywhere. I forgot all about Egypt. Oh, look, you're last draggling a sheep. Oh, come in. Come into pasture. I'm still learning to depend on God to wait patiently on him. I'm all just, why did you leave Egypt? I'm sleep here at Midi. Well, I, um. Love this little bird. The food is ready. All right, coming, little brook. You go ahead. I'll make sure the sheep are all safely secured for that night. All right, we'll save a dish for you. Whew Save my little brook. Moses faithfully cared for Jethro Sheep, his sheep shearing skills grew, and so did his patience. The longer he spent in the mountains, along with God, the more he grew to depend on him. Moses became a patient shepherd. Moses, why do you look so nervous? Oh, Jethro, I really need to speak to you about something. Have a seat, Moses. As he knows, the poor would really like to be married. Yes, you already have my blessing. But there's something I must tell you first. What is it? I fled from Egypt for a reason, you know? Yes, I always imagined that there was a good reason. Well, Pharaoh wanted to kill me. Why? You were like a grandson to him. I was, but I did something terrible. Well, one day, I left the palace, and I saw an Egyptian beating a Hebrew slave, one of my people, and I was so angry and impatient, and what did you do? Well, I killed the Egyptian, and I buried him in the sand. I see. Does the world know about this? yes, she does. I've told her everything. I don't know why, but I thought I got away with murder, but I didn't. Our Sams will always find us out. Oh, they sure did. The next day, I saw two Hebrew men fighting with each other. I scolded them. they turned on me. They attacked you? Well, they attacked me with their words, they taunted me, and they said, Who made you a prince and judge over us? Are you going to kill us, like you did the Egyptian? Oh, I see. Well, I mean, then that I had to flee, Pharaoh, he would never let me live. Well, if you wish me to leave your home and your family, I will do so at once. Sit back down, Moses. You throw it a lot in a short time. Yeah, I agree. You're patient. ancestors again. Yes, I have. Perhaps God has sent you here to the mountains to help you discover just who you are, to prepare you for some great task. Then you don't want me to leave? No, no, you still have my blessing to marry Zepora. And to stay on this my shepherd. Oh, thank you, Jethro, thank you. You don't plan to stay too long, though, do you? You'll want to set up your own home and your own land. Oh, yes, uh, not too long, Jethro. Thank you for your kindness here in the mountains. I thank God for you. Emma? Oh, are you here? How long do Moses stay with Jethro? 40 years? 40 years? That was a long way in the mountains. Yeah. Now you see why I said waiting a whole day wasn't too long. Oh, hearing that story? looking at these mountains? I felt like Moses did. You did? How, Jake? Well, just look at this beauty. God's name is written everywhere. Can't you see it? I can't. God is big, isn't he? Oh, that he is, Ethan. Oh, no, not the falling rocks again. It's all right. I'm here to rescue you. Oh, Parker Dean. Thank you. It's all Rick. I rescue you to here. Parker, Dean. Are you? okay? Yes, Ethan, I'm... Oh... I'm Emma. And, oh, no. What's happening? Uh. quick. He's going over Emma. Ethan, grab one arm, and I've got the other one. Parker Dean, are you all right? Oh, I don't think he can hear you, Emma. Why can't you hear? Look at those hugest fed. Oh, no. Who's gonna rescue our rescuer? Then who's gonna rescue us? Oh, no. disaster. Disaster! Oh, no. It sounds like Jake Hammond, even, going to have to keep exercising their faith about being patient. I sure hope that Parker game is all right, and everyone will find their way off the mountain safely. In next week's episode, in this story series, family matters. We'll find out if the hikers ever make it to the summit of Ellie's Peak or not. And maybe we'll finally learn just who Parker D is. Until next time, keep exercising your faith. I'm waiting patiently. It was perfect.
## Kitchen — memo_20260702_041724.wav
- Source: `/sdcard/memos/memo_20260702_041724.wav`
- Remote transcript: `/sdcard/memos/memo_20260702_041724.wav.txt`
- Size: 308268 bytes
- SHA-256: `1e25dd9d6096252de2e4979be0b00feeaed10aa56794a3c8185acf339138f219`
- Duration: 9.632 seconds
- Status: `transcribed`
### Transcript
You can record your voice, and you say, Hey, this was my day, blah, blah, blah. And then you can care later.
## Kitchen — memo_20260712_153919.wav
- Source: `/sdcard/memos/memo_20260712_153919.wav`
- Remote transcript: `/sdcard/memos/memo_20260712_153919.wav.txt`
- Size: 791596 bytes
- SHA-256: `fc93ae664837e0140b8d77acc16b6a2eaebf307f9af9bdcf9f4b6c0fe75989a7`
- Duration: 24.736 seconds
- Status: `transcribed`
### Transcript
Is it starting? Okay. Um, silly, jelly, kitty, all the sun. We're having so much fun. Dilly, dilly, kitty. Oh, the sun? We're having so much fun. Uh oh. How do we start recording?
## Kitchen — memo_20260712_154019.wav
- Source: `/sdcard/memos/memo_20260712_154019.wav`
- Remote transcript: `/sdcard/memos/memo_20260712_154019.wav.txt`
- Size: 480300 bytes
- SHA-256: `39a696b06ee461f837aad0bfc79a4b4b77184745158598c7352182c8d67b34b0`
- Duration: 15.008 seconds
- Status: `transcribed`
### Transcript
Silly, silly, dilly, Billy. Oh, the moon. We are having a good mood. Silly, dilly, dilly, on the moon. We are having a good mood.
## Personal — memo_20260702_162524.wav
- Source: `/sdcard/memos/memo_20260702_162524.wav`
- Remote transcript: `/sdcard/memos/memo_20260702_162524.wav.txt`
- Size: 212012 bytes
- SHA-256: `c1388d681245780626fd822d98d1fd04c9b2713dd2bb4b744d751822f78a24ff`
- Duration: 6.624 seconds
- Status: `transcribed`
### Transcript
Testing this device. 123.
## Personal — memo_20260706_195910.wav
- Source: `/sdcard/memos/memo_20260706_195910.wav`
- Remote transcript: `/sdcard/memos/memo_20260706_195910.wav.txt`
- Size: 4023340 bytes
- SHA-256: `eeb4cfb91c89c110d53b59947296831abcf51a95099c8065c63cfe9171c0a139`
- Duration: 125.728 seconds
- Status: `transcribed`
### Transcript
Hello everyone, this is Atolfo and Grace, and you're hearing Adolfo and Grace podcast. Today we're going to talk about discouragement. Grace feels a little bit sad because she wanted to go swimming and we couldn't go. So Carlos, Grace, how are you feeling? My heart is feeling not that good and sad. What made you feel that way? Because the other day going in the pool was so much fun. So you were wanted to have a day like that again today. Yeah. And what happened? We couldn't go because it was raining too much, and when it stopped raining, it was too late. Yeah. Sometimes things like that happen, huh? Yeah. What can we do when we feel sad, Chris? We can write it down or make a podcast about it. Yeah. We can talk about it and feel better. Yeah. Do you feel a little bit better? Just, like, one percent. Okay, we're still gonna grab it down, right? Yeah. Yeah. Okay, guys, this was the podcast of Adolfo and Grace. It's a beverage for you to listen to us. Stay tuned for the next episode. Of course, and, and the next one is gonna be adult, and Grace and Elise is episode. Bye.
## Personal — memo_20260731_120809.wav
- Source: `/sdcard/memos/memo_20260731_120809.wav`
- Remote transcript: `/sdcard/memos/memo_20260731_120809.wav.txt`
- Size: 2056236 bytes
- SHA-256: `39193951102a7687e2871f3b77536e1220f6855a0921c6b12207e9d8cb0586f5`
- Duration: 23.313 seconds
- Status: `transcribed`
### Transcript
Today, I fix the audio volume issue, while my issue on the device on the 35 inches screen, color, ESP 32, so hopefully the kids can use it for recording some nice audio notes.
## Personal — memo_20260809_135238.wav
- Source: `/sdcard/memos/memo_20260809_135238.wav`
- Remote transcript: `/sdcard/memos/memo_20260809_135238.wav.txt`
- Size: 9584684 bytes
- SHA-256: `183c238cfde561477989df41a1e0249f7971d268003bfabd4e435c3f08573077`
- Duration: 108.669 seconds
- Status: `transcribed`
### Transcript
Okay, I'm here with Grace. This is Daddy, and this is? Me, Grace. And together, we're doing Daria and Grace podcast. In this episode, we're going to talk about our plan, with the new kinetic hand. Tell us about it Chris. Well, I already have some pink kinetics, and, and I want more that's gonna be with blue and red, and all I want, I can make, because it's gonna look so pretty, that makes the blue and red. Okay. It's gonna look like blue, red, Superman ice cream. I think it's just gonna look like a block. So you should try it with a little bit instead of the whole thing. Yeah. What can you do with kinetic side? You can build stuff? And, um, you can build, uh, a castle, you can build, a sky on the bottom. You can build a tree, maybe? Hmm. That's why I love kinetic sand. Yeah. And what is your favorite color for that kinetic sun? Blue, red mixed together. Well, this was 30 adults, one grace in this episode about kinetic time. Until next time. We, we are gonna talk about... How much I love kinetics and? We'll see you later in our next episode.
## Personal — memo_20260809_135637.wav
- Source: `/sdcard/memos/memo_20260809_135637.wav`
- Remote transcript: `/sdcard/memos/memo_20260809_135637.wav.txt`
- Size: 11378732 bytes
- SHA-256: `0efefbef18be61d817f0e193e0d966b4686655e30ded61c9a9503165118e7003`
- Duration: 129.010 seconds
- Status: `transcribed`
### Transcript
Hi, this is Daddy and Grace's podcast. I'm Daddy. And I'm Grace. Today we're gonna learn how much I love kinetics and. So tell me, Grace, how much to love kinetic sense. One million thousand percent, but I love my dad, which is called daddy? Infinity, Thousand Infinity, Thousand percent. Oh, señor. Gracias. What is the thing you like or love about Connecticut? That you can build stuff and, um, you can build whatever you want, maybe. And let's be realistic. But are some of the things that you have built with kinetics and that you want to share with us? A volcano. Ooh, erupting. And, um... And a flower. And... a mouse running away of a garbage cab. Oh, boy. What was that? That seems like a lot of fun. Hours and hours of screen distraction. Screenless. So in our next video, we are going to talk about how much? I really love kinetics and. Yeah, this was just a taste. The next video would be really in depth of how much grace loves kinetic. Yeah. Bye bye. On the next video, we'll talk together, and see if we both love kinetics, and I'm gonna tell you, what actually is kinetics here? Bye. Bye.
## Personal — memo_20260809_140139.wav
- Source: `/sdcard/memos/memo_20260809_140139.wav`
- Remote transcript: `/sdcard/memos/memo_20260809_140139.wav.txt`
- Size: 15548460 bytes
- SHA-256: `438fd3fd915c5c1a3da203e390b42e3a3facc096cdc63212a52ca855a8d4e9a2`
- Duration: 176.286 seconds
- Status: `transcribed`
### Transcript
Hi, this is me, Grace, and this is me, Daddy. Today, we're gonna talk, how really I love, like I told you in the other media. Yeah, I know, previous, um, podcast, chapter, we talk about, some of things that Grace loves about Kinetistan, but we've left the best part, and the explanation of what actually is kinetic sand, this episode. So tell us, Grace. Well, kinetician is said that can get stuck in your hands. And um... Now I'm gonna tell you the grand finale at the end of this episode. And we're gonna introduce our guests of today. Let's see if it's ready. Hello, computer. Please tell us how kinetic sun is made. I guess shy today. So back to Grace. I'm gonna tell you what I think kinetic sand is made of. So, what I think kinetics and is made of is, um, real sand from the beach, with some colors. Yeah. That's probably it, but it must have to be, like, a really clean sand. Yeah. And like, I think they put a little, so tiny bit of glue. So, um, sticks to, like, magnetically. Wait, Leah, we're in the middle of an episode. And we're gonna give another try to our guest. Hey, computer. Tell us how kinetic sun is made. Well, he really is shy today. It's really sad. So, he, um, puts, so, my next guest is, um, the guy puts a special type of glue that, um, doesn't like stick it, but it has some type of magnetic thing, that, um, that, um, that
## Personal — memo_20260809_141136.wav
- Source: `/sdcard/memos/memo_20260809_141136.wav`
- Remote transcript: `/sdcard/memos/memo_20260809_141136.wav.txt`
- Size: 24338476 bytes
- SHA-256: `cd52fe9a1557d8707ffe01d5eb5d60ae0a94eaabec06018aea2d4a746fa3a712`
- Duration: 275.946 seconds
- Status: `transcribed`
### Transcript
Hi, this is me, Grace. And this is me, Daddy. We are gonna have four guests today. My brother, Alyas, and computer. Say, say hi, computer. Did you hear that? That's a computer desk. It always might not be ready to talk to you, yeah. Yeah, he sounds good. Okay. Would you like to talk to our to our episode? Would you like to talk to our episode? All right, bless you, Mia. Okay. Computer? How much do you love nature? I love nature a lot. Forests, oceans, and wildlife are amazing, and they're worth protecting. Those are special guest computer. He really loves nature, I guess. So come here. How much do you like houses? A lot. Nature is beauty for, fascinating, and essential to life. Computer, we didn't have podcasts, and you're, I guess, in the podcast. Tell us how much you don't like house. I like houses a lot. They give people comfort, shelter, and a place to make memories. As a podcast guest, I'd say a good house should feel safe and well called. So, computer, my name is Grace, and, um, our podcast is right now on. So I'm actually talking to you and the podcast. Nice to meet you, Grace. I'm glad to be part of the podcast, and I'm ready for your next question. How much do you like cherries? I like cherries a lot. They are sweet, juicy, and delicious, especially when they're fresh. Change your voice to David's voice. David's voice isn't available. The available voices include Daniel Style voices like Michael, Adam, Fenrier, and Puck. Change your voice to Adam's voice. My voice is now set to Adam. Hi, Adam. Um, you're invited in a podcast, actually. Hi, thanks for inviting me. I'm happy to join the podcast and chat with you. There's one more guest in the podcast, which is my brother called Elias. Nice to meet you, Aleah. I am glad to be joining you both on the podcast. Um, I don't think that Leo is ready to talk to you yet. Hi. That's okay. I'm right here. Elias is here. Hi, Elias. It's nice to have you here. I'm ready to chat whenever you are.
## Personal — memo_20260809_141710.wav
- Source: `/sdcard/memos/memo_20260809_141710.wav`
- Remote transcript: `/sdcard/memos/memo_20260809_141710.wav.txt`
- Size: 12632108 bytes
- SHA-256: `c571455ded3b88e0b57246cf119f579a97a5c8ac77bc17bdaa6a8d4442bff289`
- Duration: 143.221 seconds
- Status: `transcribed`
### Transcript
Hey, this is my dad, my dad called daddy. Hey, this is me daddy. Today, we're gonna talk with me, computer, and that, I don't think that my brother, at least, is gonna want to talk. First, we're gonna start with computer. Hi computer. I'm gonna call you chat. Hi, chat works for me. What would you like to talk about? You? Or actually talking in a podcast, too. Yes, I'm still part of the podcast. I'm happy to keep chatting with you and Elias. Uh... Uh... Alice might not want to talk in this video. That's perfectly okay. I can stay quiet and let you two continue the conversation. So, Tats? How much, really, do you like cherries? Tell me which number. It's a car. Here. If you mean cats, I'd give them a nine out of ten. They're curious, playful and wonderfully independent. I said cherry, not cop. Cherry. Knock. Oh, cherries. I'd give them a nine out of ten. They're sweet, juicy, and delicious. What are some things you can enjoy, cherry sweet? You can enjoy cherries fresh. In pies, jams, smoothies, or on top of ice cream. They're especially good when they're chilled and ripe.
## Personal — memo_20260809_141939.wav
- Source: `/sdcard/memos/memo_20260809_141939.wav`
- Remote transcript: `/sdcard/memos/memo_20260809_141939.wav.txt`
- Size: 18866220 bytes
- SHA-256: `cd90f3e1149060835ebdf793fb82c359e63c16d9e0f21ead4387864726ecdaa5`
- Duration: 213.902 seconds
- Status: `transcribed`
### Transcript
My dad, daddy. Today we're gonna talk chat, which is... But now it's named chat. So cute, Richard. Take care of him. No, if you lost the other one. I promise I won't lose at this one time. I promise so much. I What? Okay. That was not part of the video. Hey, cats. Tell me some of the voices you can change to. I can switch to voices like Michael, Adam, Fenry or Puck, Emma, George, Moira, Daniel, Samantha, Karen, or Alex. I'm currently using Adam. Change your voice to Samantha. Your voice is now sent to Samantha. Your name is actually Cat, but I asked you to change his voice to Samantha. Understood. My name is Cat, and I'm speaking with Samantha's voice. Actually, you name it to me. Understood. My name is Samantha. What's your favorite thing to do at school, Samantha, in the book? If you mean me, Samantha. My favorite thing at school would be learning new things and helping classmates. Which book are you referring to? Um... I'm the real Samantha, but... the real love. It's the one where Samantha teaches her friend, is her friend, has friends that, um, laughs at her? I'm not sure which Samantha book you mean. Tell me the title. And I can answer whether her friend's friends laugh at her. The... Um, I forget that title, but, um... her name is named Samantha. I think that's the title. There may be several books titled Samantha. So I can't identify the story from the title alone. Tell me another detail about the characters or plot, and I'll try to help.
+207
View File
@@ -0,0 +1,207 @@
{
"version": 1,
"processed_at": "2026-08-26T22:37:08Z",
"source_directory": "/sdcard/memos",
"skip_key": [
"device",
"filename",
"size",
"sha256"
],
"recordings": [
{
"device": "elias",
"filename": "memo_20260809_191140.wav",
"remote_path": "/sdcard/memos/memo_20260809_191140.wav",
"size": 475180,
"sha256": "3d00d8d67d879781394f2cdcf238876b805b1b4fbaf1f0ce9c52ced8308f288f",
"duration_seconds": 5.38702947845805,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260809_191140.txt"
},
{
"device": "grace",
"filename": "memo_20260629_232735.wav",
"remote_path": "/sdcard/memos/memo_20260629_232735.wav",
"size": 795692,
"sha256": "be93499e3d25f727da392cd6a9d9fd048471374a229ee7461777d6117075b7d3",
"duration_seconds": 24.864,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260629_232735.txt"
},
{
"device": "grace",
"filename": "memo_20260703_140340.wav",
"remote_path": "/sdcard/memos/memo_20260703_140340.wav",
"size": 1015852,
"sha256": "c06eb17d1cc03d21af52e85173046fc66a8061e8a481c0448f2e7d75a51f2905",
"duration_seconds": 31.744,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260703_140340.txt"
},
{
"device": "grace",
"filename": "memo_20260703_140437.wav",
"remote_path": "/sdcard/memos/memo_20260703_140437.wav",
"size": 8518700,
"sha256": "e46f73967cbd1675acafcd5f6b4074eacd3ad7175c383c52c412f84a33aed472",
"duration_seconds": 266.208,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260703_140437.txt"
},
{
"device": "grace",
"filename": "memo_20260711_193015.wav",
"remote_path": "/sdcard/memos/memo_20260711_193015.wav",
"size": 20653568,
"sha256": "aae396ac31e4ee8586dee1c0ce455613a3bbd4e52193b7b51cea210277a98cc6",
"duration_seconds": 645.423,
"status": "transcribed_chunked",
"transcription_note": "SpeechAnalyzer required six 120-second chunks.",
"transcription_remote_path": "/sdcard/memos/memo_20260711_193015.txt"
},
{
"device": "grace",
"filename": "memo_20260711_194936.wav",
"remote_path": "/sdcard/memos/memo_20260711_194936.wav",
"size": 11485228,
"sha256": "d9db7566e49263a3569fe7168cc6302196455e8b47e42b16b5216b00a94c9693",
"duration_seconds": 358.912,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260711_194936.txt"
},
{
"device": "kitchen",
"filename": "memo_20260702_041724.wav",
"remote_path": "/sdcard/memos/memo_20260702_041724.wav",
"size": 308268,
"sha256": "1e25dd9d6096252de2e4979be0b00feeaed10aa56794a3c8185acf339138f219",
"duration_seconds": 9.632,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260702_041724.txt"
},
{
"device": "kitchen",
"filename": "memo_20260712_153919.wav",
"remote_path": "/sdcard/memos/memo_20260712_153919.wav",
"size": 791596,
"sha256": "fc93ae664837e0140b8d77acc16b6a2eaebf307f9af9bdcf9f4b6c0fe75989a7",
"duration_seconds": 24.736,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260712_153919.txt"
},
{
"device": "kitchen",
"filename": "memo_20260712_154019.wav",
"remote_path": "/sdcard/memos/memo_20260712_154019.wav",
"size": 480300,
"sha256": "39a696b06ee461f837aad0bfc79a4b4b77184745158598c7352182c8d67b34b0",
"duration_seconds": 15.008,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260712_154019.txt"
},
{
"device": "personal",
"filename": "memo_20260702_162524.wav",
"remote_path": "/sdcard/memos/memo_20260702_162524.wav",
"size": 212012,
"sha256": "c1388d681245780626fd822d98d1fd04c9b2713dd2bb4b744d751822f78a24ff",
"duration_seconds": 6.624,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260702_162524.txt"
},
{
"device": "personal",
"filename": "memo_20260706_195910.wav",
"remote_path": "/sdcard/memos/memo_20260706_195910.wav",
"size": 4023340,
"sha256": "eeb4cfb91c89c110d53b59947296831abcf51a95099c8065c63cfe9171c0a139",
"duration_seconds": 125.728,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260706_195910.txt"
},
{
"device": "personal",
"filename": "memo_20260731_120809.wav",
"remote_path": "/sdcard/memos/memo_20260731_120809.wav",
"size": 2056236,
"sha256": "39193951102a7687e2871f3b77536e1220f6855a0921c6b12207e9d8cb0586f5",
"duration_seconds": 23.312834467120183,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260731_120809.txt"
},
{
"device": "personal",
"filename": "memo_20260809_135238.wav",
"remote_path": "/sdcard/memos/memo_20260809_135238.wav",
"size": 9584684,
"sha256": "183c238cfde561477989df41a1e0249f7971d268003bfabd4e435c3f08573077",
"duration_seconds": 108.66938775510204,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260809_135238.txt"
},
{
"device": "personal",
"filename": "memo_20260809_135637.wav",
"remote_path": "/sdcard/memos/memo_20260809_135637.wav",
"size": 11378732,
"sha256": "0efefbef18be61d817f0e193e0d966b4686655e30ded61c9a9503165118e7003",
"duration_seconds": 129.01006802721088,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260809_135637.txt"
},
{
"device": "personal",
"filename": "memo_20260809_140139.wav",
"remote_path": "/sdcard/memos/memo_20260809_140139.wav",
"size": 15548460,
"sha256": "438fd3fd915c5c1a3da203e390b42e3a3facc096cdc63212a52ca855a8d4e9a2",
"duration_seconds": 176.28589569160997,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260809_140139.txt"
},
{
"device": "personal",
"filename": "memo_20260809_141136.wav",
"remote_path": "/sdcard/memos/memo_20260809_141136.wav",
"size": 24338476,
"sha256": "cd52fe9a1557d8707ffe01d5eb5d60ae0a94eaabec06018aea2d4a746fa3a712",
"duration_seconds": 275.9459410430839,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260809_141136.txt"
},
{
"device": "personal",
"filename": "memo_20260809_141710.wav",
"remote_path": "/sdcard/memos/memo_20260809_141710.wav",
"size": 12632108,
"sha256": "c571455ded3b88e0b57246cf119f579a97a5c8ac77bc17bdaa6a8d4442bff289",
"duration_seconds": 143.22068027210884,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260809_141710.txt"
},
{
"device": "personal",
"filename": "memo_20260809_141939.wav",
"remote_path": "/sdcard/memos/memo_20260809_141939.wav",
"size": 18866220,
"sha256": "cd90f3e1149060835ebdf793fb82c359e63c16d9e0f21ead4387864726ecdaa5",
"duration_seconds": 213.90222222222224,
"status": "transcribed",
"transcription_remote_path": "/sdcard/memos/memo_20260809_141939.txt"
},
{
"device": "whatsapp",
"filename": "aud_ef2a801c38e3.m4a",
"remote_path": "/Users/adolforeyna/.hermes/audio_cache/aud_ef2a801c38e3.m4a",
"size": 33684653,
"sha256": "a71cd9360c5ca8e1ce0b84bd86d7935d1c698ecd9845b3061fc5c37937bc91fc",
"duration_seconds": 2007.530667,
"status": "transcribed",
"transcription_note": "/Users/adolforeyna/brain/areas/family/2026-08-26_prayer-for-elias-and-grace.md",
"source_channel": "WhatsApp DM",
"transcription_engine": "Apple SpeechAnalyzer + SpeechTranscriber/macOS 26.5",
"locale": "en_US"
}
]
}
@@ -43,9 +43,14 @@ Tags: [areas, finances, insurance, flood, 220_emerald, neptune]
- Mail checks payable to: Neptune Flood Incorporated, PO Box 735653, Chicago, IL 60673-5653. - Mail checks payable to: Neptune Flood Incorporated, PO Box 735653, Chicago, IL 60673-5653.
- Courier deliveries only (FedEx/UPS): JPMorgan Chase, Attn: Neptune Flood Incorporated 735653, 131 S. Dearborn St, Floor 6, Chicago, IL 60603. - Courier deliveries only (FedEx/UPS): JPMorgan Chase, Attn: Neptune Flood Incorporated 735653, 131 S. Dearborn St, Floor 6, Chicago, IL 60603.
## 2026-08-21 Payment Status — User Confirmed
- **Neptune flood renewal was paid.** The user confirmed payment in the family chat; retain the official payment confirmation/receipt if available.
- Policy TNF4366115 covers 220 Emerald Ave through **2027-08-21**.
- **Planning request:** research alternative flood-insurance options before the 2027 renewal payment, then compare price, limits, deductibles, exclusions, lender acceptance, and waiting period against Neptune. Do not cancel or change coverage without explicit approval.
## Follow-up ## Follow-up
- Verify after July 22, 2026 that the automatic payment processed for $870.23 and coverage renewed. - Begin alternative-policy research around **June 2027**, before the August 21, 2027 renewal.
- Keep the photo/notice as backup if lender or insurance questions come up. - Keep the photo/notice and payment confirmation as backup if lender or insurance questions come up.
## Related ## Related
- [[220_emerald_mortgage]] - [[220_emerald_mortgage]]
@@ -19,6 +19,34 @@ Tags: [areas, finances, insurance, homeowners, 220_emerald, cabrillo, orange_ins
- Payment warning: policy expires if payment is not received before 12:01 AM standard time on 2026-08-06. - Payment warning: policy expires if payment is not received before 12:01 AM standard time on 2026-08-06.
- Payment coupon due date: 2026-08-05. - Payment coupon due date: 2026-08-05.
## 2026 Renewal Declarations — Document-Confirmed (processed 2026-07-30)
- **Brain attachment (verified copy):** `areas/finances/attachments/220_emerald/OIH0012918_DEC_2026-07-30.pdf`
- Copied from the verified WhatsApp document cache on **2026-09-17**; 4-page Orange/Cabrillo renewal declarations, issued/prepared **2026-07-30**.
- SHA-256: `561d950601262b57195986df416fa39045f70d06df2cbfc2fdc0180c8a578420`.
- **Original synced reference recorded previously:** [`OIH0012918_DEC.PDF`](file:///home/adolforeyna/Nextcloud/ReynasShared/220%20emerald%20ave/OIH0012918_DEC.PDF)
- Historical local synced path: `/home/adolforeyna/Nextcloud/ReynasShared/220 emerald ave/OIH0012918_DEC.PDF`.
- **Policy term:** `OIH0012918`, **2026-08-06 through 2027-08-06** (12:01 AM at insured location).
- **Current mortgagee and billed payor:** **PENNYMAC LOAN SERVICES LLC**. The declarations front page states **“D-BILL: PENNYMAC LOAN SERVICES LLC”**; page 3 lists Pennymac ISAOA, P.O. Box 6618, Springfield, OH 45501, loan ending/reference `8212730928`. This supersedes the prior FILO/Everstream mortgagee record in the 2025 source packet.
- **Current coverage limits:** dwelling **$442,000**; other structures **$44,187**; personal property **$110,468**; loss of use **$44,200**; personal liability **$500,000**; medical payments **$2,500**.
- **Deductibles:** hurricane **2% of Coverage A = $8,840**; all other perils **$1,000**; roof deductible **at most $8,840**.
- **Premium:** hurricane **$4,033.00** + non-hurricane **$1,982.00** = $6,015.00 base premium; $25 MGA fee + $2 emergency-management fee + $601.50 surplus-contribution fee + $60.15 FIGA assessment = **$6,703.65 total policy**. This document is the current authoritative amount; it supersedes the prior photo-extraction figure of $6,703.55.
- **Notable coverage/forms:** HO-3; ordinance/law **10% of Coverage A = $44,200**; limited water damage **$10,000**; service-line coverage; water backup endorsement; personal-property replacement cost; animal liability exclusion; flood coverage is explicitly excluded. Roof surface metal; roof age 16; primary occupancy.
- **Support / portal:** declarations direct the insured to `www.cabgen.com` to log in/manage delivery preferences and view documents; customer support **866-896-7233**. Claims: **866-482-5246**. Existing recorded dashboard: https://insured-app.cabgen.com/.
- **What this proves / does not prove:** It proves Orange/Cabrillo now has Pennymac as the mortgagee and D-BILL recipient for the renewal. It does **not** independently show that Pennymac escrow has paid the renewal yet; obtain payment confirmation from Pennymac or Orange before the 2026-08-06 effective date.
## Source Document: Original Policy Application / Supporting Packet (processed 2026-07-30)
- **Nextcloud document:** [`oih0012918.pdf`](file:///home/adolforeyna/Nextcloud/ReynasShared/220%20emerald%20ave/oih0012918.pdf)
- Local synced path: `/home/adolforeyna/Nextcloud/ReynasShared/220 emerald ave/oih0012918.pdf`
- 16-page Cabrillo-produced PDF; SHA-256: `ed97c2e5aa0009b094f046c96e6dfdaef7e6042546bae389387f43b464c72add`.
- **Document scope:** Original Orange homeowners application and supporting-documents packet — coverage bound **2025-07-15**, effective **2025-08-06 through 2026-08-06**. It is not the current 2026 renewal invoice.
- Confirms policy/application number **OIH0012918**, named insured **Adolfo Reyna Orta**, and risk address **220 Emerald Ave, Fort Pierce, FL 34945**.
- Original HO-3 limits: dwelling **$429,000**; other structures **$42,900**; personal property **$107,250**; additional living expense **$42,900**; liability **$500,000**; medical payments **$2,500**. (The June 2026 renewal-bill photo reflects updated limits and premium; keep those figures separate.)
- Original deductibles: **$1,000 all other perils**, **2% calendar-year hurricane**, roof capped at **$8,580**; limited water-damage coverage **$10,000**; ordinance/law selected at **10%**.
- Original premium/payment plan: **$6,524.75 total premium + fees**, full payment. This differs from the later renewal-bill amount and is historical only.
- **Critical escrow history:** The original application and billing page name **FILO Mortgage LLC d/b/a Everstream Mortgage ISAOA ATIMA** as mortgagee and state that FILO is responsible for payment and will be billed. The 2026 renewal declarations now show this historic mortgagee/payee record has been replaced with Pennymac.
- Original producing agency shown: **Platinum Insurance Advisors Inc.**, agency code **706595**, phone **904-328-3432**, email `mike@piadvisorsse.com`. Treat as original-policy contact data; confirm current agency/contact with Orange/Cabrillo before relying on it.
- Historical underwriting conditions listed: Chrp virtual self-inspection and supporting wind-mitigation/subscriber documents were requested by **2025-08-13**. This packet does not prove whether all were completed.
## Insurance Agency / Agent ## Insurance Agency / Agent
- Agency: Platinum Insurance Advisors Inc. - Agency: Platinum Insurance Advisors Inc.
- Agency address: 6635 W Commercial Blvd, Ste 211, Tamarac, FL 33319-2151. - Agency address: 6635 W Commercial Blvd, Ste 211, Tamarac, FL 33319-2151.
@@ -56,8 +84,31 @@ Tags: [areas, finances, insurance, homeowners, 220_emerald, cabrillo, orange_ins
- Flood coverage is tracked separately in [[220_emerald_flood_insurance]]. - Flood coverage is tracked separately in [[220_emerald_flood_insurance]].
- Keep the photo/notice as backup if lender or insurance questions come up. - Keep the photo/notice as backup if lender or insurance questions come up.
## Escrow / Mortgagee Reconciliation (added 2026-07-30)
- The June 18, 2026 renewal bill identifies **FILO Mortgage LLC** as mortgagee and says FILO is responsible for payment and has been invoiced.
- Local mail confirms a Pennymac “Welcome to the Pennymac Family” servicing message sent to Alicia on August 22, 2025; Pennymac is the current servicer referenced by the household.
- **Resolved record discrepancy (document-confirmed 2026-07-30):** The current 2026 renewal declarations name **Pennymac Loan Services LLC** as both D-BILL recipient and mortgagee. The prior FILO/Everstream listing is now established as historical/original-policy data, not the current billing record.
- Confirm with Orange/Cabrillo: whether the 2026 renewal invoice was transmitted to Pennymac and whether payment has been received.
- Confirm with Pennymac: escrow payment status and whether the current declarations are indexed to the loan.
- **2026-07-30 status:** Household called the insurer; support is actively helping reconcile the mortgagee/escrow and renewal-information issue. The new declarations document supports that the insurer-side mortgagee update is now complete.
- **Homeowners dashboard:** https://insured-app.cabgen.com/ (Cabrillo/Orange policy portal; user-provided).
## 2026-08-05 Verification — Re-upload of OIH0012918_DEC.PDF + Escrow Payment Proof
- Source 1: WhatsApp upload `doc_32349e669ba1_OIH0012918_DEC.PDF` saved to `~/.hermes/cache/documents/doc_32349e669ba1_OIH0012918_DEC.PDF` on 2026-08-05.
- Extraction: 4 pages, pymupdf - confirms identical to Nextcloud `220 emerald ave/OIH0012918_DEC.PDF` (issued 7/30/26).
- Interpretation: Renewal declarations page only - NOT proof of payment alone. Shows Pennymac as D-BILL payor.
- Source 2: WhatsApp upload `LoanActivity_8212730928.pdf` saved to `~/.hermes/cache/documents/doc_93616fab494d_LoanActivity_8212730928.pdf` on 2026-08-05.
- Extraction: 1 page loan activity for 8212730928, 220 Emerald Ave.
- **Key transaction: 7/31/2026 Homeowners Insurance Premium ($6,703.65) disbursed ($0 principal/$0 interest), escrow balance $5,841.40 after.**
- Matches renewal declarations total exactly: $6,703.65.
- Subsequent: 8/5/2026 Payment $5,358.53 + MI Disb ($145.35) → escrow $7,024.38.
- **Status RESOLVED 2026-08-05: Homeowners renewal PAID via Pennymac escrow on 7/31/2026, before 8/06/2026 effective date. Policy OIH0012918 2026-08-06 through 2027-08-06 is current and funded.**
- Portals: Orange/Cabrillo https://insured-app.cabgen.com/ should now show paid; Pennymac loan 8212730928 confirms.
## Follow-up ## Follow-up
- Verify before 2026-08-06 that FILO Mortgage LLC or the household paid the renewal so coverage continues. - None needed for 2026-2027 homeowners premium — paid. Keep LoanActivity PDF as proof.
- Still verify flood (Neptune TNF4366115) separately if not yet confirmed (see [[220_emerald_flood_insurance]]).
- Next renewal check: ~June 2027.
## Related ## Related
- [[220_emerald_flood_insurance]] - [[220_emerald_flood_insurance]]
+12
View File
@@ -25,6 +25,18 @@ Tags: [finances, mortgage, 220_emerald, debt]
- Corrected by Adolfo on 2026-05-20 (supersedes earlier typo values). - Corrected by Adolfo on 2026-05-20 (supersedes earlier typo values).
- Keep this note as the source of truth for current mortgage numbers unless a newer lender statement is provided. - Keep this note as the source of truth for current mortgage numbers unless a newer lender statement is provided.
## Escrow Analysis — Effective 2026-10-01
- **Source:** Pennymac escrow-analysis email provided by Adolfo; analysis completed 2026-08-12. Original email/document path not supplied.
- **New monthly payment:** `$5,373.43`, beginning with the payment due 2026-10-01.
- **Current monthly payment:** `$5,358.53` (consistent with the prior lender snapshot).
- **Change:** `+$14.90/month`.
- **Principal & interest:** `$4,030.20` (unchanged in the notice).
- **Current escrow payment:** `$1,328.33`.
- **New escrow payment:** `$1,343.23` (`+$14.90/month`).
- **Escrow drivers:** Property taxes unchanged at `$639.25/month`; mortgage insurance unchanged at `$145.35/month`; hazard insurance increased from `$543.73` to `$558.63/month` (`+$14.90/month`). Reserve requirement and shortage amount remain `$0.00`.
- **Projected escrow surplus/refund:** `$536.36`, to be refunded by Pennymac to the bank account configured for eDisbursement.
- **Action/date:** Payments due before 2026-10-01 should use the current amount; use `$5,373.43` starting 2026-10-01. Monitor for the `$536.36` refund.
## Related ## Related
- [[Finances Index]] - [[Finances Index]]
- [[Areas]] - [[Areas]]
@@ -0,0 +1,55 @@
---
Address: 329 Palm Breezes Dr
Property: Rental property / A2EG LLC
Insurer: Citizens Property Insurance Corporation
Policy: 15481774-1
---
# 329 Palm Breezes — Citizens Insurance
## Source and scope
- **Source:** Two user-provided photos of the Citizens policy documents, received 2026-09-17.
- **Brain attachments:**
- `areas/finances/attachments/329_palm_breezes/Citizens_15481774-1_amended_declarations_page1.jpg`
- `areas/finances/attachments/329_palm_breezes/Citizens_15481774-1_policy_change_summary.jpg`
- `areas/finances/attachments/329_palm_breezes/Citizens_15481774-1_amended_declarations_2-pages.pdf`
- This is a **partial photo record**: the declarations page says “Page 1 of 5,” while the separate policy-change summary is “Page 1 of 1.” It should not be treated as the complete five-page policy package.
## Date review — important
- **Policy period:** **November 11, 2025 through November 11, 2026**, at 12:01 a.m. Eastern Time.
- **Transaction:** Amended declarations.
- **Amendment effective date:** **July 27, 2026**.
- **Processed date:** **July 27, 2026**.
- **Policy expiration:** **November 11, 2026**. This is the controlling expiration shown in the supplied documents; there is no 2027 expiration shown.
- Finder/cloud file metadata shows the photos modified **November 17, 2025**, but that is file metadata—not the policy amendment or processing date. The printed document dates are July 27, 2026.
## Policy and insured location
- **Carrier:** Citizens Property Insurance Corporation.
- **Form:** Dwelling Fire DP-3 Special Form Policy — Declarations.
- **Policy number:** `15481774-1`.
- **First named insured:** A2EG LLC.
- **Mailing address:** 220 Emerald Ave, Fort Pierce, FL 34945-2121.
- **Location of residence premises:** 329 Palm Breezes Dr, Fort Pierce, FL 34945-1208, St. Lucie County.
- **Agent shown:** Christina Marie Johnson / Twig Insurance Services Inc.; agency code on the amended record: `P108305_1`.
## Printed coverages and premium
- Coverage A — Dwelling: **$346,700**.
- Coverage B — Other structures: **$6,930**.
- Coverage C — Personal property: **$10,000**.
- Coverage D — Fair rental value: **$34,670**.
- Coverage E — Additional living expense: **$34,670**.
- Personal liability: **$0**.
- Medical payments: **$0**.
- All-other-perils deductible: **$1,000**.
- Hurricane deductible: **$6,934 (2%)**.
- Annual premium shown: **$2,522**.
- Total policy premium including listed charges, assessments, and adjustments: **$2,172**.
- Printed breakdown: hurricane coverage **$1,523**; non-hurricane coverage **$589**.
## Interpretation / follow-up
The July 27, 2026 document is an amendment to an active policy term that began November 11, 2025. The second page appears to document an agent-code change rather than a new annual term. Because the supplied declarations page is only page 1 of 5, retain the complete declarations/forms package if available and confirm whether the policy was renewed after November 11, 2026.
Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

@@ -0,0 +1,50 @@
---
Date: 2026-09-19
Author: Hermes
Tags: #finances #financial-advisor #taxes #research #gary-steer
Status: Research captured; independent review signal limited
---
# Gary Steer / OxenFree Financial — Public Research
## Contact-card details
- **Name:** Gary Steer
- **Title on card:** Financial Advisor & CFP
- **Company:** OxenFree Financial
- **Direct phone on card:** (321) 441-8367
- **Email on card:** Gary@OxenFreeFinancial.com
- **Office:** 1900 S Harbor City Blvd, Suite 111, Melbourne, FL 32901
- **Services listed:** Investments, Retirement, Estate Planning, Insurance
- **Website:** https://oxenfreefinancial.com/
## Findings
- OxenFree Financial's own website identifies Gary as a Certified Financial Planner® and Enrolled Agent, and describes services including financial planning, investment management, tax-aware planning, and estate-planning facilitation.[1]
- A matching SEC Investment Adviser Public Disclosure record exists for Gary Lee Steer, CRD #2562255, associated with OxenFree Financial.[2][4]
- FINRA has a matching BrokerCheck record. The public summary indicates prior broker registration and directs users to the SEC/IAPD record for investment-adviser information.[3][5]
- A third-party tax directory lists Gary Steer, EA as an IRS-registered tax preparer associated with Steer, Mercer & Company. That listing uses a Satellite Beach address and different phone number, so it should be treated as historical or requiring confirmation rather than current contact information.[6]
- Third-party advisor profiles describe approximately 20–24 years in the financial industry, but those figures are directory claims and may not be current.[8][9]
## Ratings and public comments
- Public profile/listing pages were found on Yelp, Warmer, U.S. News, Indyfin, and similar advisor directories.[7][8][9]
- The research pass did **not** find a clearly verifiable star rating or a substantial body of independent client comments that should be relied on as a recommendation.
- No conclusion about service quality, complaints, or disciplinary history is made here beyond the existence of the official SEC/FINRA records. Verify current records directly before engagement.
## Verification notes / next steps
- The card and Gary's direct website contact use (321) 441-8367. Public company listings also show an office number, (321) 722-7882; confirm which number is current.[1]
- Before using him for tax or investment work, request his current Form CRS, fee schedule, exact scope of tax preparation/representation, and confirmation of current Enrolled Agent status.
## Sources
[1] https://oxenfreefinancial.com
[2] https://adviserinfo.sec.gov/individual/summary/2562255
[3] https://brokercheck.finra.org/Individual/Summary/2562255
[4] https://reports.adviserinfo.sec.gov/reports/individual/individual_2562255.pdf
[5] https://files.brokercheck.finra.org/individual/individual_2562255.pdf
[6] https://taxrpo.com/preparer/gary-steer-satellite-beach-fl
[7] https://www.yelp.com/biz/oxenfree-financial-melbourne
[8] https://www.getwarmer.com/advisors/gary-steer
[9] https://money.usnews.com/financial-advisors/firm/oxenfree-financial-327105
+5
View File
@@ -14,6 +14,7 @@ Overview of the Reyna family financial structure, property management, and inves
- Usage: Rental property (rented to friends from church). - Usage: Rental property (rented to friends from church).
- Rent: $2,000/month. - Rent: $2,000/month.
- Management: Handled via **A2EG LLC** (Adolfo, Alicia, Elias, Grace). - Management: Handled via **A2EG LLC** (Adolfo, Alicia, Elias, Grace).
- Insurance: [[329_palm_breezes_homeowners_insurance]] — Citizens policy `15481774-1`, term 2025-11-11 through 2026-11-11; amended/processed 2026-07-27.
- **220 Emerald Ave**: - **220 Emerald Ave**:
- Status: Primary residence (purchased in 2025). - Status: Primary residence (purchased in 2025).
- Mortgage details tracked in [[220_emerald_mortgage]]. - Mortgage details tracked in [[220_emerald_mortgage]].
@@ -31,6 +32,9 @@ Overview of the Reyna family financial structure, property management, and inves
- HSA (Health Savings Account). - HSA (Health Savings Account).
- **Tracking**: Using **Rocket Money** for financial monitoring. - **Tracking**: Using **Rocket Money** for financial monitoring.
## 🙏 Giving / Tithes
- [[reyna_tithe_offering_tracker_2025-2026]]: Tithe and first-fruit coverage through September 2026, including bonus-related amounts and SURE matching status.
## 📅 2025 Taxes ## 📅 2025 Taxes
- **Status**: Planning phase. - **Status**: Planning phase.
- **Accountant**: First year using a professional accountant for filing. - **Accountant**: First year using a professional accountant for filing.
@@ -43,6 +47,7 @@ Overview of the Reyna family financial structure, property management, and inves
- **Join URL**: https://meetings.ringcentral.com/join - **Join URL**: https://meetings.ringcentral.com/join
- **Meeting ID**: 321722788 - **Meeting ID**: 321722788
- **Invitees**: gillespie.alicia@gmail.com, aeroreyna@gmail.com - **Invitees**: gillespie.alicia@gmail.com, aeroreyna@gmail.com
- **Gary Steer / OxenFree Financial research**: [[gary_steer_oxenfree_financial_research_2026-09-19]]
--- ---
[[Areas]] | [[Index]] [[Areas]] | [[Index]]
@@ -0,0 +1,56 @@
---
Date: 2026-09-20
Author: Hermes
Tags: #finances #giving #tithe #offering #bonuses
Source: /Volumes/ReynaFamily/Adolfo/Cloud/ReynasShared/Reyna tithe and offering tracker.csv
---
# Reyna Tithe and Offering Tracker
## Coverage status
- The source tracker records tithe/first-fruit coverage through **September 2026**.
- It explicitly includes 2026 bonus-related amounts:
- **$4,300 bonus** within the undated `EMI tithe mar Apr may` entry.
- **$2,040 bonus** within the pending `EMI tithe June, July, aug, sep` entry.
- The tracker’s tithe/first-fruit rows total **$60,355**, including the pending **$9,270** June–September entry. The pending entry has no matching SURE transaction yet.
- The tracker’s dated/matched SURE tithe records total **$51,085**, excluding that pending $9,270 entry.
## Tithe and first-fruit entries
| Source date | Description | Amount | Source note / coverage |
|---|---|---:|---|
| 2025-08-13 | EMI Tithe June July | $2,930 | — |
| 2025-08-20 | EMI Tithe | $12,035 | Stocks? |
| 2025-08-20 | EMI Tithe august part 1 | $1,945 | — |
| 2025-10-15 | EMI Tithe august part 2 | $775 | — |
| 2025-11-25 | EMI tithe sep, oct, nov | $4,650 | — |
| 2026-01-12 | First fruit Apostle David | $8,000 | Treated as first-fruit/tithe giving in SURE |
| 2026-03-15 | EMI tithe | $3,000 | SURE matching check posted 2026-03-17 |
| Date not recorded | EMI tithe mar Apr may | $9,100 | $4,800 income + $4,300 bonus |
| Date not recorded | Emi tithe December 2025 | $1,650 | Addition to $3,000 from 3/15 |
| Date not recorded | EMI tithe stocks | $7,000 | 30K NOV and 40K FEB |
| Pending / 2026-09 coverage | EMI tithe June, July, aug, sep | $9,270 | $2,040 bonus + $7,230 income; source says “3 July so 9 total” |
## SURE status
- Canonical category: `Giving / gifts > tithe`.
- 10 tithe/first-fruit SURE transactions are in that subcategory.
- Notes were updated on 21 unique tracker-matched SURE transactions, including offerings, gifts, prayer gifts, and loans; those non-tithe entries remain in their existing categories.
- The 2026-03-15 source entry is represented by the matching $3,000 SURE check posted on 2026-03-17.
- The three undated tithe entries ($9,100, $1,650, and $7,000) were matched to the consecutive 2026-06-09 checks.
- The $9,270 June–September entry remains tracker-recorded but unmatched/unposted in SURE.
## Monthly preparation reminder
Prepare the month’s tithes on the **20th of every month**.
- Created through the Reyna CLI native macOS bridge in the **Family** Reminders list.
- Because the current Reyna Reminders API supports one-shot due dates but does not expose an indefinite recurrence rule, a verified 12-month series was created for **2026-10-20 through 2027-09-20**, at **9:00 AM America/New_York**.
- Reminder title: `Prepare monthly tithes (20th)`.
- The series notes link back to this brain record and preserve the September 2026/bonus coverage context.
## Provenance
- Source file: `/Volumes/ReynaFamily/Adolfo/Cloud/ReynasShared/Reyna tithe and offering tracker.csv`
- SURE category and transaction state were verified through the live SURE API on 2026-09-20.
@@ -0,0 +1,26 @@
---
date: 2026-08-05
type: area
status: active
tags: [finance, trump-accounts, emi, board]
---
# Family Finance - Trump Accounts & EMI Board
## Trump Accounts for Grace/Elias
- Both Grace (b. Jan 30 2021) and Elias (b. Apr 12) eligible
- Open via IRS Form 4547
- NOT eligible for $1000 pilot contribution
- Wants low-friction flow + FAFSA awareness
- Track in family finance area
## EMI Board (FL)
- Members: Fady Boulos, Carmen Boney, David Hewitt, Apostle David Clemetson, Alberto, Jibran
- Monthly reports 15th via QuickBooks
- Zoom: EATC-FL 84159670576 Jul23 7PM (recurring pattern)
- Docs: emic_fl_board_meeting_history_2024-2026.md, emic_fl_bylaws_summary_2024-12-30.md
## Actions
- [ ] Research Trump Account custodian low-friction
- [ ] Document FAFSA impact
- [ ] Board report template 15th
+6 -4
View File
@@ -18,12 +18,14 @@ Captured 2026-07-23. Full notes in journals/2026-07-22 and projects/220_emerald_
## 💧 Water Filtration System ## 💧 Water Filtration System
- **Peroxide & Salt Pellets** - **Peroxide & Salt Pellets**
- **Last Service:** 2026-07-16 (Added 10 bottles peroxide and 2 bags salt pellets) - **Last Service:** 2026-08-20 (Added 10 gallons peroxide); salt pellets added 2026-08-15.
- **Check Cycle:** Monthly (Avg. refill every 1.5 months) - **Check Cycle:** Monthly (Avg. refill every 1.5 months)
- **Next Check Due:** 2026-08-16 - **Next Check Due:** 2026-09-20
- **Current Status:** Replenished on 2026-07-16 with usual amount: 10 bottles peroxide and 2 bags salt pellets. - **Current Status:** Peroxide replenished on 2026-08-20 with 10 gallons; salt pellets replenished 2026-08-15.
- **Next Action:** Check peroxide and salt pellet levels around 2026-08-16. - **Next Action:** Check peroxide and salt pellet levels around 2026-09-20.
- **Service History:** - **Service History:**
- 2026-08-20: Added 10 gallons peroxide to water filtration system.
- 2026-08-15: Added salt pellets to water filtration system.
- 2026-07-16: Added usual amount to water filtration system — 10 bottles peroxide and 2 bags salt pellets. - 2026-07-16: Added usual amount to water filtration system — 10 bottles peroxide and 2 bags salt pellets.
- 2026-06-05: Added 10 bottles peroxide and 2 bags salt pellets. - 2026-06-05: Added 10 bottles peroxide and 2 bags salt pellets.
- 2026-04-26: Added 2 bags salt pellets; peroxide purchase pending. - 2026-04-26: Added 2 bags salt pellets; peroxide purchase pending.
@@ -0,0 +1,71 @@
---
Date: 2026-09-12
Author: Adolfo Reyna
Tags: [home, maintenance, landscaping, front-yard, ideas, 220-emerald]
---
# Front Yard Landscape Idea
Concept captured from an AI-generated front-yard makeover image for [[220 Emerald Maintenance Log]]. This is an inspiration concept, not a measured construction plan.
## Overall vision
Create a welcoming, Florida-friendly front yard for family and friends that combines beauty, shade, butterflies, and practical outdoor seating while keeping the existing driveway.
## Main design elements
- Keep the existing driveway as-is, with a clean edge along the landscape beds.
- Add curved brick or reclaimed-brick edging around the driveway and planting beds.
- Create a brick walkway leading from the driveway to a covered front porch.
- Use layered planting beds: taller plants toward the house and lower plants along the walkway and driveway.
- Add a covered front-porch sitting area with a porch swing.
- Consider a ceiling fan on the porch for comfort and mosquito reduction.
- Add a second porch swing beneath the large shade tree on the right side of the yard.
- Use mulch in planting beds and low-voltage or solar path lighting along the walkway.
- Add a few terracotta, ceramic, or resin planters near the porch.
## Suggested plant palette from the concept
### Butterfly-attracting plants
- Firebush
- Pentas
- Salvia
- Porterweed
- Milkweed
### Fragrant or mosquito-deterrent plants
- Citronella grass
- Lemongrass
- Lavender
- Rosemary
- Marigolds
### Structural and edging plants
- Cocoplum
- Simpson's stopper
- Dwarf yaupon holly
- Liriope
- Muhly grass
Plant selections should be confirmed for the actual sun, drainage, irrigation, mature size, and salt/wind exposure at 220 Emerald. Mosquito-deterrent claims should be treated as supplemental; standing-water control and appropriate screening remain more important.
## Practical planning notes
- Measure the front yard, driveway, porch, tree canopy, and proposed walkway before ordering materials.
- Identify irrigation lines, electrical lines, septic or drainage features, and tree roots before digging.
- Confirm that the existing porch and tree area can safely support the proposed swings.
- Check local permit and HOA requirements before changing the porch, walkway, or driveway edge.
- Plan the project in phases: walkway/edging first, foundation plants second, porch seating and lighting afterward.
- Consider Home Assistant-compatible switches or dimmers for porch and path lighting once the electrical layout is known.
## Possible future phases
1. Clean and define the driveway edge.
2. Install the curved brick walkway and bed edging.
3. Establish the main Florida-friendly planting beds and mulch.
4. Add porch swing, shade-tree swing, and outdoor cushions.
5. Add path lighting and porch lighting with local Home Assistant control.
6. Add irrigation, moisture, temperature, or outdoor-light sensors if useful.
+15
View File
@@ -138,6 +138,21 @@ Tags: [areas, maintenance, health, appointments, radiology]
- Location clue shown: AdventHealth Celebration / Hospital Rd area. - Location clue shown: AdventHealth Celebration / Hospital Rd area.
- Follow-up: Adolfo was referred by ENT to this doctor. As of 2026-07-04, Adolfo plans to wait some time before scheduling; do not keep this as an active reminder unless he asks again. - Follow-up: Adolfo was referred by ENT to this doctor. As of 2026-07-04, Adolfo plans to wait some time before scheduling; do not keep this as an active reminder unless he asks again.
## Adolfo - ENT hearing-test statement (payment due)
- Source: mailed statement photo shared via WhatsApp on 2026-08-05.
- Patient: Adolfo Reyna.
- Invoice: MM-1021699.
- Provider/billing office: ENT & Allergy Associates of Florida, LLC (ENT Hearing Associates of Florida); 6421 Congress Ave, Suite 113, Boca Raton, FL 33487.
- Statement balance / total due from patient: **$179.55**. The statement says it is past due and requests payment in full.
- Payment due date shown: 2026-07-28. Payment portal: entaaf.com. Billing phone: (561) 338-3267.
- Provider: Timothy Tudor, DO. Location noted for each service: Fort Pierce SCENT (New Office).
### Billed services
- 2026-05-21 — CPT 92557, comprehensive hearing test: charge $90.00; insurance adjustment $32.83; patient deductible/balance $57.17.
- 2026-05-21 — CPT 92550, tympanometry & reflex threshold: charge $60.00; insurance adjustment $31.04; patient deductible/balance $28.96.
- 2026-05-21 — CPT 92588, evoked auditory test complete: charge $147.00; insurance adjustment $53.58; patient deductible/balance $93.42.
- Total charges: $297.00. Insurance adjustments: $117.45. Insurance pending: $0.00. Amount due: $179.55.
## Related ## Related
- [[maintenance/index]] - [[maintenance/index]]
- [[Areas]] - [[Areas]]
@@ -0,0 +1,22 @@
---
Date: 2026-07-30
Author: Hermes + Adolfo Reyna
Tags: [areas, maintenance, vehicle, infiniti, qx60, registration]
Vehicle: 2017 Infiniti QX60
---
# 2017 Infiniti QX60 — Maintenance & Registration Log
[[maintenance/index]] | [[Areas]]
## Vehicle Info
- **Year / make / model:** 2017 Infiniti QX60.
- **License plate:** CE76EM (Florida).
- **Registration expiration:** 2027-05-16.
- **Registration source:** Florida Vehicle Registrations screenshot supplied 2026-07-30; original attachment: `/home/adolforeyna/.hermes/cache/images/img_e3f4ef646197.jpg`.
## Service History
- **2026-04-15:** Oil change and rotation completed (historical family-brain memory; original service document not currently linked here).
## Renewal Reminder
- Family Calendar reminder planned for 2027-05-01, ahead of the 2027-05-16 registration expiration.
@@ -17,6 +17,8 @@ Mileage: 27805
- **Engine:** 1-1967 2.0L DOHC - **Engine:** 1-1967 2.0L DOHC
- **VIN:** 5YFB4MDE6RP164737 - **VIN:** 5YFB4MDE6RP164737
- **License:** BD99BB (FL) - **License:** BD99BB (FL)
- **Registration expiration:** 2028-05-16.
- **Registration source:** Florida Vehicle Registrations screenshot supplied 2026-07-30; original attachment: `/home/adolforeyna/.hermes/cache/images/img_e3f4ef646197.jpg`.
- **Current Mileage (2026-07-09):** 27,383 miles (per invoice in/out) / 27,805 miles (per alignment report) - **Current Mileage (2026-07-09):** 27,383 miles (per invoice in/out) / 27,805 miles (per alignment report)
- **Owner:** Adolfo Reyna - **Owner:** Adolfo Reyna
- **Cust ID:** REYA1-2 @ St Lucie Battery & Tire - **Cust ID:** REYA1-2 @ St Lucie Battery & Tire
+49 -2
View File
@@ -1,8 +1,8 @@
--- ---
title: Reyna Family Device Inventory title: Reyna Family Device Inventory
type: living-inventory type: living-inventory
updated: '2026-07-13' updated: '2026-08-09'
version: 1 version: 2
maintainer: Hermes Pi .126 maintainer: Hermes Pi .126
sources: sources:
- deco_api - deco_api
@@ -16,6 +16,53 @@ sources:
Living inventory. Update on new device, IP change, or replacement. Frontmatter YAML for machine parsing. Living inventory. Update on new device, IP change, or replacement. Frontmatter YAML for machine parsing.
## Current Tactility fleet — friendly names
| Device ID | Friendly name | Size | Current IP | mDNS hostname |
|---|---|---:|---|---|
| `kidsos_5690` | Elias | 2.8-inch / 320x240 | `192.168.68.107` | `kidsos-5690.local` |
| `kidsos_5c5c` | Grace | 2.8-inch / 320x240 | `192.168.68.114` | `kidsos-5c5c.local` |
| `kidsos_591c` | Kitchen | 2.8-inch / 320x240 | `192.168.68.128` | `kidsos-591c.local` |
| `kidsos_a790` | Personal / Dev | 3.5-inch / 480x320 | `192.168.68.129` | `kidsos-a790.local` |
All four were live-verified on 2026-08-09 through the Tactility HTTP API. The RLCD board remains optional/retired because its display is broken.
## Screen text update rule
Before writing new text to a Tactility screen, send a full-size black RGB565 frame to `/api/screen/raw`, then send the new rendered frame. This avoids residual text from the previous screen showing through.
## Tactility apps, SD capacity, and usage report — 2026-08-09
Bible Verse and Voice Recorder are installed on all four boards at the current source manifest versions: Bible Verse `0.1.0` (code 2, SDK `0.8.0-dev`) and Voice Recorder `1.0.0` (code 1, SDK `0.8.0-dev`). No reinstall was needed.
- **Elias** — SD `4.50 GB free / 8.04 GB total`; apps: Book Player 1.0.0, Robot Arm 0.1.0, Discovery Mountain 0.1.0, SD Downloader 1.0.0, Immich Elias 0.1.0, Bible Verse 0.1.0, ReynaBot 1.0.0, Voice Recorder 1.0.0, MP3 Player 1.0.0. Bible favorites: `[81]`; progress raw: `31093 / 66 22 21 / 65 403`. Podcast state: `308_Fear_S14E01`.
- **Grace** — SD `30.64 GB free / 31.09 GB total`; apps: SD Downloader 1.0.0, Discovery Mountain 0.1.0, Immich Elias 0.1.0, Robot Arm 0.1.0, ReynaBot 1.0.0, Voice Recorder 1.0.0, Book Player 1.0.0, Bible Verse 0.1.0, Breakout 0.7.0, 2048 0.9.0, MP3 Player 1.0.0, Pocket Dungeon 0.1.2. Bible favorites: `[]`; progress raw: `8890 / 11 5 12 / 10 172`. Podcast state: `308_Fear_S14E01`.
- **Kitchen** — SD `8.02 GB free / 8.04 GB total`; apps: Immich Elias 0.1.0, Robot Arm 0.1.0, ReynaBot 1.0.0, Voice Recorder 1.0.0, Bible Verse 0.1.0, Breakout 0.5.0, Dairy Notes 1.0.0, MP3 Player 1.0.0. Bible favorites: `[30027, 30074, 21959, 23647, 28782, 29304]`; progress raw: `13691 / 18 34 8 / 17 821`. No Discovery Mountain state file found.
- **Personal / Dev** — SD `12.77 GB free / 62.52 GB total`; apps: SD Downloader 1.0.0, Immich Elias 0.1.0, Snake 0.8.0, Discovery Mountain 0.1.0, Robot Arm 0.1.0, Bible Verse 0.1.0, Book Player 1.0.0, Voice Recorder 1.0.0, ReynaBot 1.0.0, Breakout 0.5.0, Dairy Notes 1.0.0, 2048 0.7.0, MP3 Player 1.0.0, Lua Game 0.2.0, Pocket Dungeon 0.1.2, Pipecat Voice 1.0.0. Bible favorites: `[18951, 19203, 19207]`; progress raw: `22889 / 38 1 12 / 37 11`. Podcast state: `318_Jakes_Promise_S13E01`; MP3 player state is empty.
Podcast state is stored on SD in `/sdcard/apps/one.tactility.discoverymountain/userdata/state.json`; Bible data is in `/sdcard/user/app/one.tactility.bibleverse/{favorites.txt,progress.txt}`. The report distinguishes “last played” state from merely downloaded episode files.
## CLI integrations
`reyna-cli tactility report <board> --json` now reads installed apps, sysinfo/SD capacity, Bible favorites/progress, Discovery Mountain state, MP3 state, and `/sdcard/dm` episode metadata. `reyna-cli tactility screen text <board> "message"` clears the full native RGB565 framebuffer before drawing by default; use `--no-clear-first` only when intentionally layering content.
## Personal/Dev MCP smoke-test failures — 2026-08-09
All 25 live MCP tools were attempted on `kidsos_a790` / Personal / Dev. The following failures were verified and should remain future-work items:
- **Persistent display ownership:** `clear_screen` and `draw_text` both return success and produce a visible white screen with text transiently, but the Tactility launcher later redraws the home screen. A foreground-app, launcher-suspend, or display-ownership mechanism is needed for persistent custom content.
- **mDNS resolution from CLI host:** `kidsos-a790.local` was not resolvable during MCP CLI calls; the reserved-IP fallback `192.168.68.129` worked. Keep mDNS-first with reliable IP fallback and investigate why local resolution differs from the board's advertised hostname.
- **`record_voice`:** board returned `Failed to open the recording file`; investigate VoiceRecorder/app-user-data mount and microphone/storage permissions.
- **`get_battery`:** board returned `Power device not found`; this hardware has no exposed power-management device. Treat battery as unsupported rather than a fleet-wide failure.
- **`scan_ble`:** board returned `BLE device not found`; investigate firmware/BLE hardware configuration or mark BLE unavailable on this board.
- **`download_file`:** board returned `Failed to open connection`; investigate outbound networking, DNS, HTTPS support, and URL-fetch implementation.
- **`list_files`:** MCP paths are relative to `/sdcard`, not absolute. `/`, `/sdcard`, `/sdcard/`, and empty path failed, while `apps`, `user`, `user/app`, `dm`, and `memos` succeeded. Personal/Dev currently exposes downloaded podcast files under `dm/` and WAV voice memos under `memos/`.
- **`play_audio` and `play_mp3`:** MCP requires a simple relative filename and rejects subdirectories (`filename must be a simple relative name`), so it cannot directly play files in `memos/` or `dm/`. The MP3 Player source correctly normalizes an app launch `file` parameter to `/sdcard/...`, but the current `/app/run` HTTP route returned 404 when given the file parameter. Add a supported app-launch-parameter or path-aware playback integration.
The LED was returned to `off` after testing. The CLI test suite remained green: 255 passed, 1 existing deprecation warning.
## Summary Stats ## Summary Stats
- Total tracked: 29 Deco clients + 6 Deco nodes + 9 canonical in local_devices.yaml = ~35 unique logical devices - Total tracked: 29 Deco clients + 6 Deco nodes + 9 canonical in local_devices.yaml = ~35 unique logical devices
@@ -0,0 +1,67 @@
---
title: Apple Mail local-store reader — research only
date: 2026-08-03
status: deferred
scope: potential workflow improvement; no implementation authorized
sources:
- https://github.com/hexrw/mailgrep
- https://github.com/imdinu/apple-mail-mcp
- https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html
---
# Apple Mail local-store reader — research only
## Decision
Potential improvement to the MacMiniMCP/Hermes email workflow. **Do not implement, install, grant permissions, or alter the current Mail/MCP setup without renewed user approval.**
The desired end state includes all accounts configured in macOS Mail, including personal, EMI, and the assistant's own Mail account, subject to what is locally cached and the account protocol permits.
## Why it was explored
Apple Mail automation/JXA can enumerate accounts and work for a selected Exchange inbox item, but it performs poorly against the large combined inbox (about 25k messages observed), timing out during account-scoped traversal. It is not a dependable full-history search backend.
## Candidate approach: direct local Mail store, read-only
`mailgrep` is the preferred design reference:
- MIT-licensed, read-only by construction; no code path to send, move, delete, or flag messages.
- Reads Apple Mail's local `Envelope Index` SQLite database for metadata and `.emlx` files for locally materialized bodies/attachments.
- Uses a snapshot copy of the SQLite database plus `-wal` and `-shm` sidecars, then opens the copy read-only. Reading the primary database alone may omit recent data in WAL mode.
- Performs metadata filtering in SQLite and parses local messages for bodies/attachments.
- Has a `doctor`/coverage concept: explicitly report messages that are indexed without a body file, body files not indexed, unreadable items, and potential staleness instead of silently pretending coverage is complete.
- Mail database schemas are undocumented and can vary by macOS release, so runtime schema discovery/validation is required. Message database row IDs are not durable identifiers; an RFC `Message-ID` is safer for persistent references.
The `apple-mail-mcp` project independently confirms the operational model: direct Envelope-Index reads and an FTS5 index avoid AppleScript timeouts on large mailboxes. It is GPL-3.0, so it is research-only/reference-only for our codebase; do not copy its implementation.
## Account/protocol implications
- **Personal Gmail / IMAP / iCloud / On My Mac:** likely good candidates for a local-store reader when Mail has downloaded the messages. Direct local reads can support fast read-only list/search/read flows.
- **EMI Exchange / EWS:** local body coverage may be incomplete or absent because messages can remain server-resident and be fetched on demand. Direct local storage should not be treated as a complete EMI historical-email solution.
- **Assistant Mail account:** include it in account discovery and the same read-only eligibility/coverage report. Do not special-case its credentials or access another credential store.
- **Attachments:** local readers must distinguish inline, locally externalized, and never-downloaded attachments; never report an empty file as a successful extraction.
## Permission and safety model
macOS protects the Mail store with TCC. A future local reader needs Full Disk Access granted to the application/process that launches it (for example, the MacMiniMCP service context), not just its executable. This is a broad system privacy permission, so it must be explicitly approved first.
A read-only local-store implementation should deliberately avoid AppleScript synchronization. Synchronizing Mail via Apple Events would additionally require Automation access and creates a broader control surface than this workflow needs.
## Recommended future shape (only if approved)
1. Add a small read-only adapter to MacMiniMCP using the public MIT-compatible design principles above.
2. First run a non-mutating `doctor`/coverage probe after explicit Full Disk Access approval.
3. Expose account discovery, mailbox discovery, bounded metadata list/search, selected-message read, and attachment-state reporting.
4. Retain Apple Mail automation only as an explicitly labeled fallback for Exchange/current-message access.
5. Evaluate Microsoft Graph delegated OAuth separately if reliable full EMI/Exchange historical search becomes necessary.
6. Test with synthetic Mail-store fixtures plus opt-in live read-only checks; do not persist Apple database row IDs across sessions.
## Original evidence / sources
- `mailgrep` README and source inspection: https://github.com/hexrw/mailgrep
- `apple-mail-mcp` README and source inspection: https://github.com/imdinu/apple-mail-mcp
- AppleScript reference (relevant only to the automation fallback): https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html
## Local observation, 2026-08-03
An ordinary file scan did not reveal candidate Mail database/message files. This is not evidence that the store is absent: it is consistent with protected-directory visibility under macOS privacy controls. No Full Disk Access was requested or changed.
@@ -0,0 +1,142 @@
---
title: Hermes migration audit — Mac mini
status: in_progress
date: 2026-08-02
source: Live audit on Mac-mini-M4.local
---
# Hermes migration audit — Mac mini
## Verified working
- Hermes Agent `v0.19.1` is installed at `/Users/adolforeyna/.hermes/hermes-agent`.
- Primary state database passed `PRAGMA quick_check` and contains 1,456 sessions.
- Brain access is available at `/Users/adolforeyna/brain` with read/write/traverse access.
- Migrated Hermes assets exist:
- 32 skills
- 33 scripts
- 4 memory files
- profiles: `emi`, `kids`, `voice`
- All 10 scheduled cron jobs are present and their referenced local scripts exist.
- A persistent macOS launchd gateway was installed at:
`/Users/adolforeyna/Library/LaunchAgents/ai.hermes.gateway.plist`
- Gateway cron ticker was verified healthy after installation; scheduled jobs will fire automatically.
- MCP `macmini` connected successfully in 40 ms and exposed 48 tools.
## Restored during audit
- WhatsApp credentials were absent locally but present on the old Pi (`pi5`, hostname `aeropi5`).
- Restored the credential into the canonical Mac path:
`/Users/adolforeyna/.hermes/platforms/whatsapp/session/creds.json`
- Set credential permissions to `0600`.
- After the restore, the Mac gateway connected to WhatsApp.
## Outstanding migration work
### 1. WhatsApp handoff
The Mac gateway can connect to WhatsApp, but outgoing messages failed with `Not connected to WhatsApp`.
Likely contributing factors:
- The old Pi gateway may still be operating the same WhatsApp linked-device session.
- The old Pi is still reachable as SSH alias `pi5` / hostname `aeropi5`.
An attempt to stop the old Pi gateway was denied by the user approval system, so no workaround or retry was performed.
### 2. Local session-lock ownership
`/Users/adolforeyna/.local/state` is owned by `root`. Hermes consequently cannot create:
`/Users/adolforeyna/.local/state/hermes`
Gateway log warning:
`Could not acquire session lock (non-fatal): [Errno 13] Permission denied`
This should be repaired before relying on the WhatsApp bridge long-term.
### 3. OpenSCAD iMac MCP
The configured `openscad_imac` MCP fails initial connection because SSH host-key verification fails. The `macmini` MCP is healthy.
### 4. ESP32 voice routes
The `esp32-voice-gateway` plugin detected that its routes are missing after the Hermes update. Its saved patch no longer applies cleanly to the current `gateway/platforms/api_server.py`.
The ESP32 voice API must be updated to the current Hermes source and verified before use.
### 5. Gateway model credentials
Gateway logs show the configured custom Meta model `muse-spark-1.1` receives HTTP `401 Unauthorized`. The model credential must be refreshed or the gateway model/provider changed, then tested with an inbound message.
## Optional capability gaps (not migration failures)
- Nous Portal authentication is not configured.
- Web-search provider keys are not configured.
- Docker is not installed.
These do not block the core agent, brain, cron, or healthy Mac mini MCP.
## Migration sequence
1. Resolve Pi → Mac WhatsApp ownership and verify a real outbound reply.
2. Repair the Mac local Hermes-state directory ownership and confirm lock acquisition.
3. Repair and test the OpenSCAD iMac MCP SSH trust relationship.
4. Restore and test ESP32 voice gateway routes.
5. Repair/test gateway model credentials.
6. Complete end-to-end checks: WhatsApp inbound/outbound, cron heartbeat, MCPs, voice endpoints, and model calls.
## Progress update — WhatsApp routing and full session-state recovery
### Channel routing correction
The first post-migration WhatsApp responses were incorrectly sent into the group named `EMI Assistant` (`120363409068274776@g.us`). This group is reserved for EMI conversations and is not the family/home channel.
Live bridge inspection identified these WhatsApp groups:
- `EMI Assistant` — separate EMI group
- `FamReynaBot` — family group, with the bot plus Adolfo and his wife
- `ReynaO` — separate group
The default/home route was corrected so scheduled/default WhatsApp delivery uses the original Pi WhatsApp home-channel configuration rather than EMI.
### User registration and policy
- Family group policy remains `allowlist` with no mention requirement.
- The original Pi WhatsApp allowlist was restored rather than using temporary Mac-only configuration overrides.
- The original bot mode, user allowlist, home channel, owner-message forwarding setting, and enabled setting were copied from the Pi runtime `.env` into the Mac `.env`.
- The Mac bridge now starts in `bot` mode. It had mistakenly started in `self-chat` mode before restoration; that mode ignores ordinary DM traffic and explained the DM non-responses.
### Full WhatsApp session recovery
Initial recovery copied only `creds.json`. That was insufficient for inbound-message handling: the Pi WhatsApp session directory contains encrypted multi-file authentication/session state.
On 2026-08-02:
1. Verified the Pi session had 1,592 files: `creds.json` plus 1,591 key/state files.
2. Stopped the Mac gateway briefly.
3. Copied the entire Pi session directory to:
`/Users/adolforeyna/.hermes/platforms/whatsapp/session/`
4. Applied restrictive permissions (`0700` directories, `0600` files).
5. Restarted the Mac launchd gateway.
After restart:
- WhatsApp bridge reported `status=connected`.
- Cron gateway ticker was healthy.
- The gateway processed a recovered inbound WhatsApp event and generated a response.
### Current verification status
A fresh user-authored DM test after the full session-state restore is still required to prove live inbound DM processing end-to-end. An automated recovery-probe DM was attempted but denied by the user approval system, so it was not retried.
## Progress update — browser automation restored on Mac mini
The iMac is kids-only and must not host Hermes browser automation or private browser state. On 2026-08-03, a dedicated visible Chrome automation profile was created on the Mac mini at:
`~/Library/Application Support/Google/Chrome-Hermes/`
- The source Chrome profile was copied once with caches and lock files excluded, preserving the available same-Mac browser session material without operating on the iMac.
- Chrome is running as a separate visible instance with CDP bound only to `127.0.0.1:9222`, using the `ReynaFamilyBot` Chrome profile (`reynafamilybot@gmail.com`) by default. Live Gemini verification confirmed that bot account is signed in.
- `agent-browser` is connected to that instance under session `hermes-visible`; its dashboard is healthy on `127.0.0.1:4848`.
- A LAN observer proxy is verified on `192.168.68.112:4849`. The dashboard hard-coded `ws://localhost:<port>`, so laptop viewers saw `Disconnected`; the proxy now rewrites that endpoint to a narrow LAN stream bridge (`:4851`) and normalizes its WebSocket Origin before forwarding to the localhost-only stream (`:4850`). A LAN URL load verified `Online` rather than `Disconnected`.
- Local helpers: `~/bin/hermes-browser` (`start`/`status`) and `~/bin/hermes-browser-dashboard-proxy.py`.
The durable launchd plist was written at `~/Library/LaunchAgents/com.reyna.hermes-browser-dashboard-proxy.plist`, but its registration was blocked by Hermes' gateway safety guard. It requires a one-time explicit `launchctl bootstrap` from a separate Mac mini Terminal session before relying on the LAN observer proxy across restarts.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,73 @@
{
"fail": 7,
"failures": [
{
"detail": "ConnectionRefusedError: [Errno 61] Connection refused",
"elapsed_ms": 0,
"group": "voice",
"kind": "tcp",
"service": "kokoro-tts",
"status": "fail",
"timestamp": "2026-09-24T02:36:09+00:00"
},
{
"detail": "URLError: <urlopen error [Errno 8] nodename nor servname provided, or not known>",
"elapsed_ms": 169,
"group": "emi",
"kind": "http",
"service": "emi-frontend",
"status": "fail",
"timestamp": "2026-09-24T02:36:09+00:00"
},
{
"detail": "HTTP 502",
"elapsed_ms": 182,
"group": "emi",
"http_status": 502,
"kind": "http",
"service": "emi-wordpress",
"status": "fail",
"timestamp": "2026-09-24T02:36:09+00:00"
},
{
"detail": "ConnectionRefusedError: [Errno 61] Connection refused",
"elapsed_ms": 3961,
"group": "esp32",
"kind": "tcp",
"service": "reyna-cli-kidsos",
"status": "fail",
"timestamp": "2026-09-24T02:36:09+00:00"
},
{
"detail": "URLError: <urlopen error [Errno 61] Connection refused>",
"elapsed_ms": 1004,
"group": "esp32",
"kind": "http",
"service": "kitchen-esp32",
"status": "fail",
"timestamp": "2026-09-24T02:36:09+00:00"
},
{
"detail": "URLError: <urlopen error [Errno 65] No route to host>",
"elapsed_ms": 2,
"group": "esp32",
"kind": "http",
"service": "rlcd-esp32",
"status": "fail",
"timestamp": "2026-09-24T02:36:09+00:00"
},
{
"detail": "URLError: <urlopen error [Errno 61] Connection refused>",
"elapsed_ms": 1003,
"group": "operations",
"kind": "http",
"service": "hermes-dashboard-pi",
"status": "fail",
"timestamp": "2026-09-24T02:36:09+00:00"
}
],
"log": "/Users/adolforeyna/brain/areas/operations/service_health_checks.jsonl",
"ok": 14,
"timestamp": "2026-09-24T02:36:09+00:00",
"total": 21
}
+157
View File
@@ -0,0 +1,157 @@
---
title: Reyna Family Services Inventory
type: living-inventory
status: active
updated: 2026-08-15
canonical_detail: areas/platform.md
related:
- areas/network/inventory_report_2026-07-13.md
- areas/network/devices_inventory.md
- areas/operations/hermes_migration_macmini_2026-08-02.md
- areas/emi_things_to_do.md
tags: [operations, services, infrastructure, emi, brain]
---
# Reyna Family Services Inventory
Human-facing catalog of the services that support the Reyna family, Hermes, the brain, and EMI. `[[platform]]` is the more detailed technical tracker for hosts, MCP tools, LaunchAgents, plugins, cron jobs, and migration work.
**Status vocabulary:**
- **Active/documented:** recorded as running or intentionally used in the latest inventory.
- **Needs live verification:** documented previously, but the last check is dated or the service has known uncertainty.
- **Legacy/planned:** retained for history or future work; do not assume it is running.
## 1. Brain, Hermes, and private operations
| Service | Purpose | Host / location | Status |
|---|---|---|---|
| **Reyna family brain** | Markdown source of truth for family, projects, operations, EMI, maintenance, finances, media, and journals | Mac mini: `~/brain`; mirrored/backed up through Pi workflows and Gitea/Nextcloud paths | Active/documented |
| **Hermes Agent gateway** | Main conversational agent, WhatsApp handling, MCP orchestration, profiles, skills, memory, and cron | Mac mini `.102`; historical Pi `.126` runtime | Active/documented; migration follow-up remains |
| **Hermes profiles** | Separate operating contexts, including default, EMI, kids, and voice | `~/.hermes/profiles/` | Active/documented |
| **Hermes cron/automation** | Briefings, wind-down reminders, coding recaps, price monitors, maintenance reminders, and family automation | Hermes cron plus Pi/system crontab | Active/documented; individual jobs need periodic verification |
| **Brain sync** | Synchronizes brain content to backup/cloud destinations and maintains Git history | Pi `.126` plus local/Gitea/Nextcloud workflows | Needs live verification |
| **Brain MCP/search layer** | Programmatic search and controlled access to brain notes | `brain/projects/para_brain_mcp_server.md` | Active project / implementation status needs verification |
| **Reyna CLI privacy host** | Canonical local Mac service for privacy-sensitive Calendar, Contacts, Reminders, Notes, and system operations | Mac mini `.102`; signed Swift host + Unix socket | Active migration target |
| **MacMiniMCP** | Older Mac automation/MCP host for Apple apps, speech, TTS, images, and Deco | Mac mini `.102` | Legacy; being replaced by Reyna CLI |
| **Private browser automation** | Visible Chrome/ReynaFamilyBot profile, CDP, browser dashboard, and LAN observer proxy | Mac mini `.102`, loopback CDP `9222` | Active/documented |
| **WhatsApp gateway** | Home/family, EMI, and direct assistant messaging | Mac mini gateway; old Pi session was migrated | Active/documented; live outbound/inbound verification should remain on the checklist |
## 2. Core home and network infrastructure
| Service | Purpose | Host / location | Status |
|---|---|---|---|
| **Deco mesh network** | Home LAN, DHCP, Wi-Fi, device connectivity | Deco M5 nodes, gateway `.1` | Active/documented |
| **Caddy reverse proxy** | TLS termination and routing for family, EMI, media, cloud, and internal domains | FamReynaServer `.110` | Active/documented; configuration has known stale/duplicate entries |
| **Authentik SSO** | Authentication for protected browser/web services | FamReynaServer `.110`; some EMI routing points to `.119` | Active/documented; duplicate/legacy routes need verification |
| **Pi-hole DNS** | LAN DNS and ad/blocking service | FamReynaServer `.110` | Active/documented |
| **Docker / Portainer** | Container runtime and management | FamReynaServer `.110` | Active/documented |
| **NAS / MyCloud** | Local backup and media storage | `.111` / related DHCP observations | Needs live verification |
| **Ollama** | Local model serving | FamReynaServer `.110`; separate `.200` route also documented | Needs live verification |
| **AFFiNE** | Self-hosted documents/knowledge workspace | Expected `.200:3010` | Legacy or offline; documented as down in the last inventory |
| **Llama endpoint** | Model endpoint paired with AFFiNE | Expected `.200:11434` | Legacy or offline; documented as down in the last inventory |
## 3. Family media, photos, files, and communications
| Service | Purpose | Host / location | Status |
|---|---|---|---|
| **Immich** | Private family photo/video library, search, albums, and media archive | FamReynaServer `.110`; `photos.reynafamily.com` | Active/documented |
| **Nextcloud** | Cloud files, document sync, and brain/cloud workflows | FamReynaServer `.110`; `cloud.reynafamily.com` / `cloud.emmint.com` | Active/documented; Docker and Snap installations may both exist and require cleanup decision |
| **Jellyfin** | Family media streaming | FamReynaServer `.110`; `media.reynafamily.com` | Active/documented |
| **Memos** | Lightweight notes/micro-journal service | FamReynaServer `.110`; `memos.reynafamily.com` | Active/documented |
| **Family voice system** | ESP32/iPhone/Mac voice capture, transcription, speaker context, TTS, and voice gateway | Mac mini `.102`, iPhone `.150`, Pi/ESP32 devices | Active project/infrastructure; several components require live verification |
| **Kokoro / ksay** | Warm local neural TTS daemon | Mac mini `.102`, loopback `7332` | Active/documented |
| **Voicebox** | Qwen3-TTS voice generation and family voice profiles | Mac mini `.102` | Active/documented |
| **Apple Speech services** | Local speech transcription and voice synthesis integrations | Mac mini `.102` | Active/documented |
| **iPhone MCP** | Camera, audio, video, screen, and voice-device bridge | iPhone `.150` | Active/documented |
## 4. ESP32, reMarkable, and household interfaces
### ESP32 / Tactility service family
The ESP32 fleet is not just hardware inventory. It is a set of local family services with device-side apps, HTTP/MCP APIs, media storage, and Hermes/Reyna CLI integrations.
| Service | Purpose | Device / location | Status |
|---|---|---|---|
| **Tactility platform** | Shared ESP32 runtime for screens, touch, audio, SD storage, apps, and local HTTP/MCP operations | ESP32-S3 fleet | Active/documented |
| **KidsOS dashboards** | Child/family dashboards, screen text, file transfer, local status, and household display surfaces | Tactility boards `.112`, `.113`, `.129` | Active/documented; individual board health varies |
| **Reyna CLI KidsOS endpoint** | Device-side HTTP service exposed through the Reyna CLI/Caddy route | KidsOS-591C `.113`; `reyna-cli.reynafamily.com` | Active/documented; needs periodic live verification |
| **Kitchen voice/display device** | Kitchen voice button, display, audio playback, and microphone endpoint | Little32 `.122` | Active project / needs live verification |
| **ESP32 RLCD screen** | Reflective display, screenshots, sensors, BLE, video, and e-paper-style experiments | Waveshare RLCD `.123` | Active project / needs live verification |
| **ESP32 voice gateway** | Local voice capture, audio transport, Hermes gateway integration, and voice responses | ESP32 voice devices + Mac mini adapter | Active project; Hermes route repair/testing remains outstanding |
| **Book Player service** | Local storybook/podcast/audio playback from SD card | Tactility Book Player boards | Active app family |
| **Grace/Poppy storybook player** | Image-and-audio storybook playback for the children | Expected `.107` | Needs live verification; last inventory showed offline/stale |
| **Bible Verse app** | Offline Bible reading, progress, and favorites | Tactility fleet | Active/documented |
| **Voice Recorder app** | Local voice-memo capture to SD card for later ingestion | Tactility fleet | Active app; recording permissions/storage need per-board verification |
| **Tactility games and utility apps** | Breakout, 2048, Pocket Dungeon, Snake, MP3 Player, Robot Arm, Discovery Mountain, and related experiments | Tactility SD-card app packages | Active/experimental |
| **ESP32 fleet management** | Device discovery, screen drawing, screenshots, file operations, app reports, and smoke tests | Reyna CLI + local device registry | Active/documented; mDNS/IP conflicts remain a known issue |
### reMarkable service family
| Service | Purpose | Device / location | Status |
|---|---|---|---|
| **reMarkable Paper Pro** | Handwritten journal, planning, drawings, source notes, and document workspace | Paper Pro `.132` | Active device |
| **reMarkable UDP listener** | Receives device broadcast/IP updates so DHCP changes can be tracked | Pi/logger host | Needs live verification |
| **reMarkable logger/poller** | Polls the Paper Pro, tracks document changes, writes JSONL events and latest/state snapshots | Expected `~/remarkable-logger/` on Pi `.126` | **Not working as of 2026-08-15**; service/timer and expected files were absent |
| **reMarkable Paper Pro sidecar** | Device-side heartbeat, online/offline state, and document-change detection | Paper Pro system service | Needs live verification; old SSH alias is stale and the current `.132` host key is unresolved |
| **reMarkable brain ingestion** | Vision/transcription of changed pages into journals, inbox, and durable brain areas | Brain ingestion workflow | Blocked by watcher failure; existing imported notes remain available |
| **reMarkable rendering tools** | Parse/render Paper Pro v6 `.rm` pages and preserve color/ink information | Logger/tooling environment | Active tooling; depends on restored logger environment |
### Other household interfaces
| Service / device system | Purpose | Host / location | Status |
|---|---|---|---|
| **Kindle/e-paper dashboards** | Household and office task/status display | Kindle/e-paper projects | Active project |
| **Robot arm** | Hardware/robotics experimentation and MCP control | LAN device, expected `.116` | Active project / needs live verification |
| **Google Home / Blink / TVs** | Household smart-home and media endpoints | LAN devices | Active household devices; not all are Hermes-managed |
| **Water filtration system** | Peroxide and salt-pellet household water treatment | 220 Emerald | Active maintenance responsibility; monthly checks tracked in `areas/maintenance/220_emerald.md` |
## 5. EMI — Emanuel Ministries International
### Organization and governance
- **EMI-C Florida / local church:** board, bylaws, meeting history, minutes, scripts, governance, and ministry administration.
- **EMI international family:** leadership and relationships across the USA, East Africa/Kenya, Europe, Latin America, and related churches.
- **EMI gatherings:** Kenya 2026 archive, participants, logistics, media plan, translation, and technology coordination.
- **EMI financial/board operations:** board-related accounts, financial records, and administrative follow-up.
### Public and technical services
| Service | Purpose | Host / domain | Status |
|---|---|---|---|
| **EMI Backend API** | Main EMI application API, Socket.IO/web-push integrations, Stripe, and Mongo-backed application functions | emiserver `.119:3001`; failover/routing also documented through `.110`; `emiapi.reynafamily.com`, `api.emmint.com` | Active/documented; `.119` access is incomplete and needs live verification |
| **EMI frontend / website** | Public EMI web presence and ministry-facing frontend | `emi.reynafamily.com`; expected `.119:8082` | Needs live verification |
| **EMI WordPress / WP1** | EMI web/content property | `wp1.reynafamily.com`; expected `.119:8081` | Needs live verification |
| **EMI authentication** | Authentik route used by EMI domains | `auth.emmint.com`; expected `.119:9000` | Needs live verification; overlaps with family Authentik routing |
| **EMI media archive** | Books, recordings, Bryan teaching series, livestreams, photos, and video source material | Brain, Immich, Nextcloud, local media archives, and EMI projects | Active/documented; organization work remains |
| **EMI livestream/media workflow** | Capture, production, translation, captioning, archiving, search, and outreach | EMI media projects; Sardius/Ari workflow report | Active project |
| **EMI publication pipeline** | Books, ministry publications, Subsplash embeds, YouTube, and outreach strategy | EMI projects and external platforms | Active project |
| **EMI local ministries/collaboration** | Local ministry planning, Latin America collaboration, church relationships, and family gatherings | Brain project files | Active project |
| **EMI social/video outreach** | YouTube strategy, media outreach, worship graphics, and public communication | EMI website/social/YouTube workflows | Active project |
## 6. Other web and collaboration services
| Service | Purpose | Host / location | Status |
|---|---|---|---|
| **Instatic** | Family website/CMS publishing | FamReynaServer `.110:3002`; planned `sites.reynafamily.com` | Active/documented; DNS/Caddy publishing route needs verification |
| **n8n** | Workflow automation | FamReynaServer `.110:5678`; `auto.reynafamily.com` | Active/documented; workflows require authenticated inspection |
| **Homarr** | Internal dashboard | FamReynaServer `.110:7575`; `dashboard.reynafamily.com` | Active/documented |
| **Gitea** | Private source-code hosting and backup | Expected emiserver `.119:3000`; `git.reynafamily.com` | Needs live verification |
| **Portainer** | Docker UI | FamReynaServer `.110:9000`; `docker.reynafamily.com` | Active/documented |
| **Mixpost** | Social publishing | Expected FamReynaServer `.110:9010` | Needs live verification |
| **Appwrite** | Backend-as-a-service experiment | Expected FamReynaServer `.110:8090` | Legacy/planned; not seen running in last inventory |
| **Ghost** | Blog platform | Expected FamReynaServer `.110:2368`; `blog.reynafamily.com` | Legacy/offline in last inventory |
| **Mattermost** | Team/chat platform | Expected `.110:8065`; `mattermost.reynafamily.com` | Legacy/offline in last inventory |
## 7. Service-management priorities
1. Restore and verify the **reMarkable watcher/logger**; it is currently a broken ingestion dependency for the brain.
2. Make `areas/platform.md` and this file agree on the canonical **Reyna CLI privacy host** and LaunchAgent paths.
3. Verify the **brain backup chain**: local files → Git/Gitea → Nextcloud/NAS, including recent successful timestamps.
4. Resolve the **FamReynaServer duplicate Nextcloud** installation and document the single source of truth.
5. Restore SSH/operator access to **emiserver `.119`** so EMI services can be checked directly.
6. Separate **active EMI production services** from stale Caddy routes and historical deployments.
7. Add one live verification record per service: URL/socket, owner, host, health check, data location, backup path, and recovery procedure.
## Source notes
This catalog was assembled from the living `areas/platform.md`, `areas/network/devices_inventory.md`, `areas/network/inventory_report_2026-07-13.md`, Hermes migration audit, EMI project files, maintenance areas, and the current reMarkable watcher investigation on 2026-08-15. Dated inventory claims are labeled as needing live verification rather than treated as current fact.
+158
View File
@@ -0,0 +1,158 @@
---
date: 2026-08-05
type: area
status: active
tags: [platform, macmini, mcp, hermes, reyna-cli, voice-assistant, electronics, infra]
---
# Platform — Mac Mini Private-Host Layer
Canonical tracker for all custom (not Hermes-native) skills, MCP servers, integrations, LaunchAgents, cron jobs, and Hermes plugins. Mac mini M4 (.102) is the sole private and browser host per AGENTS.md. This doc is source of truth; other brain files link here.
## Direction: MacMiniMCP to reyna-cli consolidation
Decision 2026-08-05: Migrate out of Node MacMiniMCP MCP server and consolidate everything into reyna-cli native privacy host.
Why:
- MacMiniMCP uses fragile Applescript JXA osascript paths requiring separate Automation TCC approvals and spawning child processes.
- reyna-cli native host is one stable signed Reyna CLI.app bundle at native/ReynaCLIHost/ owning all Privacy and Automation permissions (Calendar, Contacts, Reminders, Notes via EventKit and NSAppleEventsUsageDescription).
- Python CLI becomes typed testable client over Unix socket Library Application Support reyna-cli privacy reyna-cli.sock with allowlist and redaction.
- No long-term Node fallback, no Mail or Full Disk Access scope creep, LAN stays private socket only.
Policy:
- Do not build MacMiniMCP fallback. Add native operations until callers covered, validate with service.health plus synthetic probes, then disable and archive com.local.macmini-mcp.
- Preserve root symlinks MacMiniMCP to platform/MacMiniMCP and reyna-cli to platform/reyna-cli until LaunchAgents updated to platform canonical paths.
- Xcode Automatic Signing batch wave with Gitea backup before privileged migrations per mac_privacy_migrations_2026.
Evolution:
electronics/mcp_screen micropython origin boot.py circuitpython lib desktop_client iphone_app from its spec
-> voice-assistant mcp_screen plus hermes-esp32-voice-gateway jarvis whisper-translation
-> platform/MacMiniMCP Node MCP 27 tools osascript
-> platform/reyna-cli Python facade plus Swift signed host <- current and final
## Projects layout after Aug 5 2026 cleanup
Projects/
- platform/
- MacMiniMCP Gitea mac_mcp 743M LEGACY to archive src/server.js 27 tools
- reyna-cli Gitea reyna-cli 960M CANONICAL Python facade Swift host
- electronics/
- tactility/tactility 142M 16 branches tactility_apps 17M 6 branches ACTIVE
- basic1 48M RP2350
- eink-api eink-dairy emulatedisplay pico-8 legacy
- voice-assistant/
- mcp_screen 2.5M origin micropython spec for desktop
- hermes-esp32-voice-gateway jarvis whisper-translation AI-Harness-Basic VideoCaptioningTranslation
- EMI 780M EMI-Backend plus expoApp plus website
- xcode AI-Harness ReynaBot Watch App TestApp TestiOS1
- Symlinks compat: MacMiniMCP to platform/MacMiniMCP, reyna-cli to platform/reyna-cli, basic1 to electronics/basic1
- Removed: EMI_new_website PayloadCMS PoC, FamBoard Homarr widget uncommitted, remotion-hello starter
- Gitea 22 repos git.reynafamily.com/adolforeyna: 19 cloned, skipped clawbot 177k TS Feb24, WFK_theme PHP, immich-emi text, FamReynaBrain is brain
## Custom skills owned
- tactility-operations ~/.hermes/skills/tactility-operations/SKILL.md Book Player plus BibleVerse v6 BIBK per-book bin idx editorial UI plus Pi fleet 107 113 131 dashboard FS API RGB565 plus deterministic watercolor avatar workflow Grace purple constraint biggest skill refs watercolor-cute-style-guide kidsos-fleet-discovery kidsos-screen-send-fix
- reyna-cli-privacy-host ~/.hermes/skills/software-development/reyna-cli-privacy-host/SKILL.md one signed host consolidation privacy contract TDD RPC client 3-tier path validation EventKit main-thread deadlock fix launchd lifecycle capability migration refs 12 docs
Heavily customized skill refs:
- macos-private-service-hosts refs macmini-projects-grouping 2026-08-05 notes-automation-migration
- electronics-projects refs macmini-layout 2026-08-05 paper-apps-games xiao-epaper rlcd-whale-writer
- weekly-coding-recap refs gitea-local-inventory 2026-08-05 implementation
- native-mcp refs kokoro-mlx-ksay macmini-mcp-cli-facade
- software-development-lifecycle refs reyna-cli-browser-integration web-open-design gitea-integration
- church-worship-graphics-generator family-brain-automation etc brain-tidying
## MCP Tools inventory
MacMiniMCP LEGACY 27 tools src/server.js via integrations js:
- Notes notes_list read create (JXA osascript)
- Calendar calendar_list_calendars list_events create_event focused Home index 2 Time window ISO
- Contacts contacts_search read create
- Reminders reminders_list_lists list create account context assignment meta
- Mail RO mail_accounts list_mailboxes list_messages 50 max read_message
- Deco deco_get_overview list_clients ipv4_status config_status router
- TTS STT speech_list_voices synthesize synthesize_base64 transcribe_file list_locales quick_test live_transcribe status close persistent pipe SpeechTranscriber
- Kokoro warm daemon 7332 speech_kokoro_status synthesize synthesize_base64 mlx-audio ksay_server.py
- Voicebox Qwen3-TTS voicebox_list_profiles health generate generate_base64 quick_reply instant contextual reply
- Apple LLM ANE 3B apple_llm_check status polish quick_reply chat close FoundationModels Swift
- Image codex_image_generate get_config_status local Codex CLI, gemini_image_generate get_config_status Gemini API, gemini_chrome_prompt_build get_config_status
- System system_get_info sw_vers uname system_speech_api_status
Auth local-only no creds. HTTP src/http.js plus stdio src/stdio.js. LaunchAgents com.local.macmini-mcp logs service out err, com.local.ksay-kokoro
reyna-cli CANONICAL Python plus Swift:
CLI uv run reyna-cli --help:
- doctor
- web FastAPI uvicorn browser UI Authentik OIDC auth.reynafamily.com to reyna-cli.reynafamily.com port 8765
- devices list ping tools call describe device registry config.py local_devices.yaml aliases kidsos4 kid4 rlcd rcld to esp32_screen
- devices screen laptop computer iphone arm ESP32 ESP32 screen personal laptop MCP this Mac desktop companion .102 iPhone app robot arm state home wave battery
- computer service-install start status restart logs desktop companion GUI service
- immich stats albums search sunset --limit 5 tools direct REST 8626 mcp
- mongo MongoDB direct driver 8630 bridge
- deco TP-Link Deco direct tplinkrouterc6u
- macmini Mac mini MCP facade Calendar Contacts Reminders while migration
- remarkable Paper Pro .132 UDP 49321 watchdog 15m discovery local cache macOS listener service
- privacy-host native privacy host commands lifecycle
- local-services local TTS STT Voice services direct Kokoro Voicebox Apple LLM Speech Image no MCP
Clients src/reyna_cli/clients immich mongodb zoom direct REST wrappers.
Privacy contract privacy_contract.py:
- ALLOWED_OPERATIONS service.health calendar.list events.list event.create contacts.search read create reminders.lists list create notes.list read create speech.transcribe_file locales synthesize plus expanding
- command_to_operation cmd to typed op calendar_list_calendars to calendar.list raises KeyError unknown
- scrub_privacy_result exact key match token password secret api_key authorization case-insensitive REDACT exact only not substring my_token tokenizer passwords api_key_id stay visible recursive dict list tuple non-mutating
Privacy RPC client privacy_client.py:
Unix socket JSON-lines id uuid operation args dict newline 64 KiB check before connect matching id validation PrivacyClientError missing socket timeout malformed mismatch ok false.
Swift host native/ReynaCLIHost/:
Signed Reyna CLI.app native/ReynaCLIHost/dist/Reyna CLI.app ONLY Privacy owner after migration.
Package.swift linkedFramework AppKit when macOS required for Automation dialog foreground activation.
Providers CalendarProvider ContactsProvider RemindersProvider NotesProvider fail-closed automation_required unless fixed-probe authorization, SystemInfoProvider etc.
Security owner-only via getpeereid, 3-tier path validation platform allowlist root Users private var tmp uid 0 no go write except tmp 1777 only tmp var symlink allowed, user-owned intermediates Home Library Application Support uid current dir not symlink mode 022 must be 0 allows 0700 0750 0755 rejects 0770 0777, dedicated runtime parent immediate parent of socket eg privacy uid current dir not symlink mode 077 must be 0 strictly 0700 family rejects 0750 0755 socket 0600. No symlink following lstat. RunLoop pumping bridge for EKEventStore requestFullAccessToEvents deadlock avoid DispatchSemaphore wait on main thread. Bounded accepted clients size capped nonprompting default except explicit calendar.request_full_access foreground helper.
Build Xcode automatic signing wave batch plus Gitea backup before privileged migrations, validate bundle via service.health plus unique new operation semantic proof mtime unreliable.
Launchd ProgramArguments array native binary plus --socket path, RunAtLoad KeepAlive ProcessType Interactive working dir project log paths Library Logs reyna-cli privacy-host.* runtime dirs 0700.
## LaunchAgents user domain Library LaunchAgents
- com.local.macmini-mcp.plist LEGACY node --watch src/http.js WD Projects/MacMiniMCP symlink resolves to platform/MacMiniMCP logs .logs/service.*.log to be archived after reyna-cli coverage
- com.local.ksay-kokoro.plist Projects/MacMiniMCP/.venv/bin/python scripts/ksay_server.py WD MacMiniMCP logs ksay.out err TTS warm daemon 127.0.0.1:7332 keep used by both old and new
- com.reyna.cli.privacy-host.plist CANONICAL Reyna CLI.app Contents MacOS ReynaCLIHost --socket Library Application Support reyna-cli privacy reyna-cli.sock WD reyna-cli KeepAlways Interactive RunAtLoad
- com.reynafamily.reyna-cli.remarkable-listener.plist plus remarkable-sync.plist Paper Pro .132 UDP 49321 watchdog plus 30s sync to brain ~/brain areas notetaker etc
- ai.hermes.gateway.plist GW API 127.0.0.1:8642 model muse-spark-1.1 fallback openai-codex gpt-5-mini terra provider custom meta-claude
- com.adolforeyna.calendar-checkin.plist com.reyna.hermes-browser-dashboard-proxy.plist ancillary
Current plists reference old symlink-root paths that resolve via symlinks. Update to platform canonical only on explicit approval plus launchctl unload load.
## Hermes Plugins durable
- ~/.hermes/plugins/esp32-voice-gateway/ durable plugin bundled patch patch/*.patch self-heals api/esp32/voice WebSocket routes _handle_esp32_voice_ws ESP32_AUDIO_MAX_BYTES etc after hermes update wipes gateway/platforms/api_server.py in-tree patches. __init__.py checks api_server.py for ESP32 markers auto-applies patch via git apply logs actionable warning. Operator must run separate shell restart outside GW process SIGTERM guard cannot restart from inside gateway. Future v2 runtime injection monkeypatch.
- ~/.hermes/plugins/hermes-achievements/ scan_checkpoint state gamification.
## Cron Jobs .hermes/cron/jobs.json
- Script-only no agent spawn fast:
- reyna_family_wind_down_whatsapp.py weekday 20:30 group 120363424746547296@g.us deliver local
- reyna_morning_briefing_whatsapp.py daily 8am FamReynaBot group deliver local
- chiapas_flight_price_monitor.py daily 7am Kayak monitor empty stdout no alert deliver origin
- Agent jobs:
- weekly-coding-recap Mon 8am runs ~/.hermes/scripts/weekly_coding_recap.py to brain/areas/coding/recaps/YYYY-WXX.md updates areas/coding.md index silent unless fails. FIXED 2026-08-05: pinned provider openai-codex model gpt-5.6-terra via hermes cron edit 50b9ca5ec3cb --provider openai-codex --model gpt-5.6-terra — previously errored model drift gpt-5 to gpt-5.6-terra unpinned needs cronjob action update pin provider model.
- One-shots plant feed Aug14 Aug28 exact reminder push.
Scripts location ~/.hermes/scripts or bundled backup platform/reyna-cli/backup/macmini-automation-baseline-2026-08-03/hermes-scripts/weekly_coding_recap.py.
## Related brain files
- Areas: coding weekly recaps index, mac_privacy_migrations_2026 signing wave rules infra map, network devices_inventory raw_scans caddy_parsed git.reynafamily.com, operations hermes_migration_macmini_2026-08-02.md apple_mail_local_read_research
- Projects: para_brain_mcp_server brain Gitea FamReynaBrain.git ~/brain backed, voice_dev_infrastructure_2026 triad 102 110 150 plus GW 8642, voice_agent_platform_research_2026 open-gpt-live StreamCore fork, jarvis_v2_always_listening (iMac11,3 Intel i3 550 PipeWire Silero VAD openWakeWord hey_jarvis faster-whisper ECAPA faceID fusion), tactility_voice_gateway_elato_transition_2026, paseo_centralized_agents_2026, reyna_cli_browser_control Gemini Web image gen via iMac headed Chrome CDP 9222, pocketbase_family_baas_2026, electronics_xiao_epaper_400x300_2026, etc.
- READMEs: platform/README.md electronics/README.md voice-assistant/README.md in Projects
## Next
- Fix weekly-coding-recap cron pin job 50b9ca5ec3cb provider openai-codex model gpt-5.6-terra or pin original
- Add remaining privacy-host operations per reyna-cli-privacy-host skill Calendar events create list Contacts Reminders Notes automation_required boundary speech until MacMiniMCP coverage complete then archive com.local.macmini-mcp
- Update LaunchAgent working directories from symlink-root to platform canonical explicit approval plus unload load
- Verify after regroup: launchctl list grep macmini ksay reyna, uv run reyna-cli doctor --json, ls -l Library/Application Support/reyna-cli/privacy/reyna-cli.sock, curl macmini-mcp http tools
- Gitea inventory doc update when clawbot WFK_theme decision
- Keep this file single tracker update when new MCP tool skill cron LaunchAgent plugin added plus cross-ref to tactility-operations and reyna-cli-privacy-host skills references
[[Areas]] | [[Projects]]
-288
View File
@@ -1,288 +0,0 @@
[1406855:1406855:0316/201610.672226:ERROR:ui/ozone/platform/x11/ozone_platform_x11.cc:256] Missing X server or $DISPLAY
[1406855:1406855:0316/201610.673409:ERROR:ui/aura/env.cc:246] The platform failed to initialize. Exiting.
DevTools listening on ws://127.0.0.1:9222/devtools/browser/832bfde0-fd73-48bb-bccf-7dfc7d884ab0
[1407058:1407201:0316/201632.073723:ERROR:google_apis/gcm/engine/registration_request.cc:290] Registration response error message: DEPRECATED_ENDPOINT
[1407058:1407201:0316/201652.489500:ERROR:google_apis/gcm/engine/registration_request.cc:290] Registration response error message: DEPRECATED_ENDPOINT
[1407058:1407058:0316/201659.804549:ERROR:content/common/zygote/zygote_communication_linux.cc:293] Failed to send GetTerminationStatus message to zygote
[1407058:1407201:0316/201659.812110:ERROR:google_apis/gcm/engine/connection_factory_impl.cc:483] ConnectionHandler failed with net error: -2
[1407058:1407058:0316/201659.821257:ERROR:content/common/zygote/zygote_communication_linux.cc:293] Failed to send GetTerminationStatus message to zygote
DevTools listening on ws://127.0.0.1:9222/devtools/browser/aeee5d5a-9370-4ce0-8fed-07fa08318129
[1407464:1407609:0316/201715.182436:ERROR:google_apis/gcm/engine/registration_request.cc:290] Registration response error message: DEPRECATED_ENDPOINT
[1407464:1407609:0316/201744.888182:ERROR:google_apis/gcm/engine/registration_request.cc:290] Registration response error message: DEPRECATED_ENDPOINT
[1407464:1407609:0316/201835.581553:ERROR:google_apis/gcm/engine/registration_request.cc:290] Registration response error message: DEPRECATED_ENDPOINT
[1407464:1407609:0316/202012.888242:ERROR:google_apis/gcm/engine/registration_request.cc:290] Registration response error message: DEPRECATED_ENDPOINT
[1407464:1407609:0316/202308.677003:ERROR:google_apis/gcm/engine/registration_request.cc:290] Registration response error message: DEPRECATED_ENDPOINT
[1407464:1407609:0316/202922.682521:ERROR:google_apis/gcm/engine/registration_request.cc:290] Registration response error message: DEPRECATED_ENDPOINT
[1407464:1407609:0317/061642.367596:ERROR:google_apis/gcm/engine/connection_factory_impl.cc:483] ConnectionHandler failed with net error: -2
[1407464:1407609:0317/061756.719181:ERROR:google_apis/gcm/engine/connection_factory_impl.cc:483] ConnectionHandler failed with net error: -2
[1407464:1407609:0317/062305.551574:ERROR:google_apis/gcm/engine/connection_factory_impl.cc:483] ConnectionHandler failed with net error: -2
libpxbackend-1.0.so: cannot open shared object file: No such file or directory
Failed to load module: /home/adolforeyna/snap/chromium/common/.cache/gio-modules/libgiolibproxy.so
[159925:159925:0326/081302.559069:ERROR:base/memory/shared_memory_switch.cc:289] Failed global descriptor lookup: 7
DevTools listening on ws://127.0.0.1:9222/devtools/browser/46809ab1-a999-4e0b-90bb-4e3fd0c10602
[0326/081305.974453:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081305.976081:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081305.976360:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081305.976485:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081306.012161:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
[160246:160246:0326/081312.582948:ERROR:base/memory/shared_memory_switch.cc:289] Failed global descriptor lookup: 7
DevTools listening on ws://127.0.0.1:9222/devtools/browser/ec746d75-3e93-49a2-b99c-3b0d4c97e8af
[160285:7:0326/081312.716156:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:287] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[0326/081316.266032:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081316.267474:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081316.267759:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081316.267903:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081316.303750:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
[160556:160556:0326/081321.135067:ERROR:base/memory/shared_memory_switch.cc:289] Failed global descriptor lookup: 7
DevTools listening on ws://127.0.0.1:9222/devtools/browser/b7ce5797-9603-401a-b01a-f66ce88edf96
[160600:7:0326/081321.304607:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:287] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[0326/081322.635859:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081322.639111:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081322.639421:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081322.639555:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081322.676539:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
[160879:160879:0326/081335.430251:ERROR:base/memory/shared_memory_switch.cc:289] Failed global descriptor lookup: 7
DevTools listening on ws://127.0.0.1:9222/devtools/browser/a9b918c7-528e-4792-b3ff-aa7d4207d38e
[160714:160865:0326/081339.688560:ERROR:google_apis/gcm/engine/registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT
[0326/081346.697832:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081346.700533:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081346.700798:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081346.700916:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/081346.736701:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
[163240:163240:0326/100902.731058:ERROR:base/memory/shared_memory_switch.cc:289] Failed global descriptor lookup: 7
DevTools listening on ws://127.0.0.1:9222/devtools/browser/98bb5ebe-58fd-42ea-a81f-29c35e24a19c
[0326/100904.473769:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/100904.475082:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/100904.475363:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/100904.475488:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0326/100904.511285:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
[178511:178511:0327/021627.574166:ERROR:base/memory/shared_memory_switch.cc:289] Failed global descriptor lookup: 7
DevTools listening on ws://127.0.0.1:9222/devtools/browser/0fab8ce5-37d4-4a7a-ac45-873a7d4e7a2a
[0327/021631.890671:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021631.892083:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021631.892372:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021631.892504:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021631.928483:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
[178832:178832:0327/021639.450628:ERROR:base/memory/shared_memory_switch.cc:289] Failed global descriptor lookup: 7
DevTools listening on ws://127.0.0.1:9222/devtools/browser/527c3c75-c554-44b2-901c-a2c6efe249eb
[178872:7:0327/021639.622362:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:287] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[178667:178818:0327/021643.224605:ERROR:google_apis/gcm/engine/registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT
[0327/021643.494880:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021643.496305:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021643.496599:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021643.496729:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021643.532923:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
[179168:179168:0327/021700.901132:ERROR:base/memory/shared_memory_switch.cc:289] Failed global descriptor lookup: 7
DevTools listening on ws://127.0.0.1:9222/devtools/browser/a099c3e6-d236-4f6d-a36c-483e5b1f6d4d
[179212:7:0327/021701.079376:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:287] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[0327/021704.019908:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021704.021268:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021704.021569:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021704.021695:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021704.057328:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
[179498:179498:0327/021716.461252:ERROR:base/memory/shared_memory_switch.cc:289] Failed global descriptor lookup: 7
DevTools listening on ws://127.0.0.1:9222/devtools/browser/706ae6f0-a6ef-4668-91a4-c37ca251cf96
[179531:7:0327/021716.588640:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:287] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[0327/021719.608789:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021719.610093:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021719.610369:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021719.610493:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021719.646285:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
[179826:179826:0327/021730.956858:ERROR:base/memory/shared_memory_switch.cc:289] Failed global descriptor lookup: 7
DevTools listening on ws://127.0.0.1:9222/devtools/browser/d8f97912-a2e4-4558-bb52-5a7ea6b8c2a8
[179861:7:0327/021731.279546:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:287] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[0327/021734.656127:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021734.657623:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021734.657893:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021734.658011:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0327/021734.694360:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
update.go:85: cannot change mount namespace according to change mount (/var/lib/snapd/hostfs/usr/local/share/doc /usr/local/share/doc none bind,ro 0 0): cannot write to "/var/lib/snapd/hostfs/usr/local/share/doc" because it would affect the host in "/var/lib/snapd"
update.go:85: cannot change mount namespace according to change mount (/var/lib/snapd/hostfs/usr/share/gimp/2.0/help /usr/share/gimp/2.0/help none bind,ro 0 0): cannot write to "/var/lib/snapd/hostfs/usr/share/gimp/2.0/help" because it would affect the host in "/var/lib/snapd"
update.go:85: cannot change mount namespace according to change mount (/var/lib/snapd/hostfs/usr/share/libreoffice/help /usr/share/libreoffice/help none bind,ro 0 0): cannot write to "/var/lib/snapd/hostfs/usr/share/libreoffice/help" because it would affect the host in "/var/lib/snapd"
update.go:85: cannot change mount namespace according to change mount (/var/lib/snapd/hostfs/usr/share/sphinx_rtd_theme /usr/share/sphinx_rtd_theme none bind,ro 0 0): cannot write to "/var/lib/snapd/hostfs/usr/share/sphinx_rtd_theme" because it would affect the host in "/var/lib/snapd"
update.go:85: cannot change mount namespace according to change mount (/var/lib/snapd/hostfs/usr/share/xubuntu-docs /usr/share/xubuntu-docs none bind,ro 0 0): cannot write to "/var/lib/snapd/hostfs/usr/share/xubuntu-docs" because it would affect the host in "/var/lib/snapd"
[439425:439425:0407/005453.898618:ERROR:base/memory/shared_memory_switch.cc:289] Failed global descriptor lookup: 7
DevTools listening on ws://127.0.0.1:9222/devtools/browser/11700be3-ae21-425c-9ec7-e447b1ffc016
[0407/005457.391750:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0407/005457.393145:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0407/005457.393458:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0407/005457.393597:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0407/005457.430370:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
[439752:439752:0407/005502.626784:ERROR:base/memory/shared_memory_switch.cc:289] Failed global descriptor lookup: 7
DevTools listening on ws://127.0.0.1:9222/devtools/browser/04e1150e-d781-48e4-b229-5b4cd5dbb4c1
[439787:7:0407/005502.831174:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:287] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[0407/005505.695670:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0407/005505.697113:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0407/005505.697436:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0407/005505.697570:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0407/005505.734094:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
[440094:440094:0407/005518.503799:ERROR:base/memory/shared_memory_switch.cc:289] Failed global descriptor lookup: 7
DevTools listening on ws://127.0.0.1:9222/devtools/browser/2d047889-8980-4e5a-97c2-c64cbf3599d1
[440133:7:0407/005518.678171:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:287] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[439929:440081:0407/005522.244908:ERROR:google_apis/gcm/engine/registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT
[0407/005523.427308:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0407/005523.428736:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0407/005523.429026:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0407/005523.429152:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0407/005523.466382:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
libpxbackend-1.0.so: cannot open shared object file: No such file or directory
Failed to load module: /home/adolforeyna/snap/chromium/common/.cache/gio-modules/libgiolibproxy.so
DevTools listening on ws://127.0.0.1:9222/devtools/browser/5ed266ae-e111-46e6-b10d-0284a9df92c1
[0418/164533.634655:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164533.636056:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164533.636352:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164533.636504:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164533.673981:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
DevTools listening on ws://127.0.0.1:9222/devtools/browser/dcfaed80-9eed-4066-83cf-4ee2abd7449e
[229301:7:0418/164538.838273:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:285] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[0418/164542.178810:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164542.180222:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164542.180498:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164542.180621:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164542.218298:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
DevTools listening on ws://127.0.0.1:9222/devtools/browser/c443b84d-be1b-40f9-9433-61c6883ade9c
[229613:7:0418/164549.777474:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:285] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[229409:229559:0418/164556.324793:ERROR:google_apis/gcm/engine/registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT
[0418/164558.310759:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164558.312290:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164558.312595:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164558.312731:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164558.350511:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
DevTools listening on ws://127.0.0.1:9222/devtools/browser/39cdc783-ed4f-4978-b22c-e60a9e90ecb3
[0418/164608.769563:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164608.770967:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164608.771279:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164608.771440:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/164608.808943:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
DevTools listening on ws://127.0.0.1:9222/devtools/browser/f502b83b-000f-4774-bfd0-295fd88851f1
[234829:7:0418/221844.504321:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:285] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[0418/221847.936071:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/221847.938553:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/221847.938857:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/221847.939016:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/221847.976129:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
DevTools listening on ws://127.0.0.1:9222/devtools/browser/c0c7b16b-1736-4c1f-ab7f-cd7a930f37fe
[235156:7:0418/221902.794155:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:285] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[0418/221905.772050:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/221905.773504:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/221905.773804:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/221905.773948:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/221905.811179:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
DevTools listening on ws://127.0.0.1:9222/devtools/browser/9e547fe0-8aaf-4528-9114-6e14453c0dbd
Fontconfig error: Cannot load default config file: No such file: (null)
[235422:235577:0418/222456.000911:ERROR:google_apis/gcm/engine/registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT
[0418/222510.514456:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/222510.515848:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/222510.516155:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/222510.516310:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0418/222510.554044:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
libpxbackend-1.0.so: cannot open shared object file: No such file or directory
Failed to load module: /home/adolforeyna/snap/chromium/common/.cache/gio-modules/libgiolibproxy.so
DevTools listening on ws://127.0.0.1:9222/devtools/browser/7457ebf2-21b2-46bd-9923-197b7de4a4b3
[0422/105553.282065:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/105553.283475:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/105553.283773:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/105553.283909:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/105553.321873:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
DevTools listening on ws://127.0.0.1:9222/devtools/browser/ff51a529-81e4-4e2b-af36-7b701d9bfa2e
[316170:316321:0422/105602.666702:ERROR:google_apis/gcm/engine/registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT
[0422/105605.673908:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/105605.675443:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/105605.675763:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/105605.675905:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/105605.713915:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
DevTools listening on ws://127.0.0.1:9222/devtools/browser/9f173e76-dc0e-46b3-93f7-152bce0345de
[316700:7:0422/105628.043625:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:285] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[0422/105631.626415:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/105631.627796:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/105631.628116:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/105631.628258:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/105631.665920:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
DevTools listening on ws://127.0.0.1:9222/devtools/browser/5e44f88b-8a86-4436-98de-9e85bbbb94ca
[318572:7:0422/123718.207350:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:285] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[0422/123721.259046:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/123721.260431:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/123721.260705:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/123721.260828:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/123721.298443:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
DevTools listening on ws://127.0.0.1:9222/devtools/browser/3786f50d-a9f2-488a-a6f9-91a622028ce5
[324217:7:0422/183013.814506:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:285] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[324012:324166:0422/183017.328578:ERROR:google_apis/gcm/engine/registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT
[0422/183017.568734:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/183017.570391:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/183017.570711:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/183017.570854:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/183017.608585:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
DevTools listening on ws://127.0.0.1:9222/devtools/browser/b839c913-080e-484f-85a2-0df06ded5cf7
[324888:7:0422/185201.688077:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:285] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[0422/185204.646007:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/185204.647421:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/185204.647728:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/185204.647866:ERROR:third_party/crashpad/crashpad/util/linux/ptracer.cc:605] ptrace: Input/output error (5)
[0422/185204.685565:ERROR:third_party/crashpad/crashpad/snapshot/elf/elf_dynamic_array_reader.h:64] tag not found
update.go:85: cannot change mount namespace according to change mount (/var/lib/snapd/hostfs/usr/local/share/doc /usr/local/share/doc none bind,ro 0 0): cannot write to "/var/lib/snapd/hostfs/usr/local/share/doc" because it would affect the host in "/var/lib/snapd"
update.go:85: cannot change mount namespace according to change mount (/var/lib/snapd/hostfs/usr/share/gimp/2.0/help /usr/share/gimp/2.0/help none bind,ro 0 0): cannot write to "/var/lib/snapd/hostfs/usr/share/gimp/2.0/help" because it would affect the host in "/var/lib/snapd"
update.go:85: cannot change mount namespace according to change mount (/var/lib/snapd/hostfs/usr/share/libreoffice/help /usr/share/libreoffice/help none bind,ro 0 0): cannot write to "/var/lib/snapd/hostfs/usr/share/libreoffice/help" because it would affect the host in "/var/lib/snapd"
update.go:85: cannot change mount namespace according to change mount (/var/lib/snapd/hostfs/usr/share/sphinx_rtd_theme /usr/share/sphinx_rtd_theme none bind,ro 0 0): cannot write to "/var/lib/snapd/hostfs/usr/share/sphinx_rtd_theme" because it would affect the host in "/var/lib/snapd"
update.go:85: cannot change mount namespace according to change mount (/var/lib/snapd/hostfs/usr/share/xubuntu-docs /usr/share/xubuntu-docs none bind,ro 0 0): cannot write to "/var/lib/snapd/hostfs/usr/share/xubuntu-docs" because it would affect the host in "/var/lib/snapd"
libpxbackend-1.0.so: cannot open shared object file: No such file or directory
Failed to load module: /home/adolforeyna/snap/chromium/common/.cache/gio-modules/libgiolibproxy.so
DevTools listening on ws://127.0.0.1:9222/devtools/browser/a8e9f075-3c84-4c71-9f0e-cd9dfcf2d799
[154548:154548:0523/120628.686037:ERROR:media/gpu/vaapi/vaapi_wrapper.cc:1658] vaInitialize failed: unknown libva error
[154595:7:0523/120629.029885:ERROR:gpu/ipc/client/command_buffer_proxy_impl.cc:285] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[154313:154535:0523/120632.609869:ERROR:google_apis/gcm/engine/registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT
[154548:154548:0523/120635.599546:ERROR:gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc:1076] [GroupMarkerNotSet(crbug.com/242999)!:1C002BE0A0]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content.
[154548:154548:0523/120635.686034:ERROR:gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc:1076] [GroupMarkerNotSet(crbug.com/242999)!:1C002BB0A0]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content.
[154548:154548:0523/120640.104175:ERROR:gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc:1076] [GroupMarkerNotSet(crbug.com/242999)!:1C002BB0A0]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content.
[154548:154548:0523/120654.902724:ERROR:gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc:1076] [GroupMarkerNotSet(crbug.com/242999)!:1C002BE0A0]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content.
[154548:154548:0523/120656.921752:ERROR:gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc:1076] [GroupMarkerNotSet(crbug.com/242999)!:1C002C10A0]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content.
[154313:154535:0523/120658.899541:ERROR:google_apis/gcm/engine/registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT
[154548:154548:0523/120711.510962:ERROR:gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc:1076] [GroupMarkerNotSet(crbug.com/242999)!:1C003F00A0]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content.
[154548:154548:0523/120716.706319:ERROR:gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc:1076] [GroupMarkerNotSet(crbug.com/242999)!:1C003F30A0]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content.
[154548:154548:0523/120733.305342:ERROR:gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc:1076] [GroupMarkerNotSet(crbug.com/242999)!:1C003F60A0]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content.
[154313:154535:0523/120754.027105:ERROR:google_apis/gcm/engine/registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT
[154548:154548:0523/120851.274839:ERROR:gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc:1076] [GroupMarkerNotSet(crbug.com/242999)!:1C003F90A0]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content.
[154548:154548:0523/120852.201862:ERROR:gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc:1076] [GroupMarkerNotSet(crbug.com/242999)!:1C003F90A0]Automatic fallback to software WebGL has been deprecated. Please use the --enable-unsafe-swiftshader (about:flags#enable-unsafe-swiftshader) flag to opt in to lower security guarantees for trusted content.
Warning: Vulkan shaderUniform*ArrayDynamicIndexing required.
- While initializing adapter (backend=BackendType::Vulkan)
at InitializeImpl (../../third_party/dawn/src/dawn/native/vulkan/PhysicalDeviceVk.cpp:240)
Warning: maxDynamicUniformBuffersPerPipelineLayout artificially reduced from 1000000 to 16 to fit dynamic offset allocation limit.
Warning: maxDynamicStorageBuffersPerPipelineLayout artificially reduced from 1000000 to 16 to fit dynamic offset allocation limit.
[154313:154313:0523/120928.723405:ERROR:services/on_device_model/public/cpp/service_client.cc:37] Unexpected on_device_model service disconnect; reason: 1, description: Error loading backend.
[154313:154535:0523/120945.830356:ERROR:google_apis/gcm/engine/registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT
[154313:154535:0523/121243.424306:ERROR:google_apis/gcm/engine/registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT
[154313:154535:0523/122006.997871:ERROR:google_apis/gcm/engine/registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT
[154313:154533:0525/111718.986078:FATAL:dbus/bus.cc:1245] D-Bus connection was disconnected. Aborting.
[154313:154313:0525/111719.035668:ERROR:content/common/zygote/zygote_communication_linux.cc:291] Failed to send GetTerminationStatus message to zygote
[154313:154313:0525/111719.047313:ERROR:content/common/zygote/zygote_communication_linux.cc:291] Failed to send GetTerminationStatus message to zygote
[154313:154313:0525/111719.082415:ERROR:content/common/zygote/zygote_communication_linux.cc:291] Failed to send GetTerminationStatus message to zygote
View File
+1
View File
@@ -0,0 +1 @@
You are Astra, acting as the visual-design and slide-production subagent for Adolfo. Build a substantially better presentation based on `/Users/adolforeyna/brain/projects/emi_latin_america_vision_and_mission_2026.md` and verify it. The user disliked the earlier abstract, generic 12-slide deck and then an 8-slide warm editorial PDF. Do not merely polish either. Create a distinctive, polished, human-centered ministry presentation with stronger art direction, visual storytelling, clear content hierarchy, and genuinely legible type. Use an appropriate production workflow (HTML + PDF is welcome); if image generation is unavailable, use carefully composed original vector illustration rather than generic circles. Preserve source meaning and avoid inventing facts. Include the call to action/priorities and distinguish vision from mission. Write new outputs under `/Users/adolforeyna/brain/exports/` with names beginning `emi_astra_` so previous files remain unchanged. Keep source/generator files alongside exports. Render the complete deck, inspect every slide (contact sheet plus any dense slide), fix clipping/overlap/weaknesses, and programmatically verify PDF page count, widescreen dimensions, and nonempty text on each slide. Give me exact absolute paths, page count, design rationale, and what you visually verified. You may inspect existing decks as references but do not overwrite them. If blocked, report the precise blocker rather than claiming completion.
+36
View File
@@ -0,0 +1,36 @@
from pathlib import Path
from PIL import Image, ImageDraw
from reportlab.pdfgen import canvas
from reportlab.lib.utils import ImageReader
root=Path('/Users/adolforeyna/brain/exports')
slides=[]
for i in range(1,13):
p=root/f'emi_cinematic_slide_{i:02d}.png'
image=Image.open(p).convert('RGB')
if image.size==(1600,1000):
image=image.crop((0,50,1600,950))
elif image.size!=(1600,900):
raise ValueError(f'{p}: got {image.size}')
image.save(p,optimize=True)
slides.append((p,image))
pdf=root/'emi_latin_america_cinematic_slides.pdf'
c=canvas.Canvas(str(pdf),pagesize=(1600,900),pageCompression=1)
c.setTitle('EMI — A Vision for Latin America')
c.setAuthor('EMI | Visual summary of Vision_for_Latin_America_final.docx')
for _,image in slides:
c.drawImage(ImageReader(image),0,0,width=1600,height=900)
c.showPage()
c.save()
sheet=Image.new('RGB',(1500,1230),'#d7d8d2')
d=ImageDraw.Draw(sheet)
for i,(p,image) in enumerate(slides):
thumb=image.resize((480,270))
x=15+(i%3)*495; y=15+(i//3)*300
sheet.paste(thumb,(x,y))
d.text((x+8,y+273),f'{i+1:02d} {p.stem}',fill='#172a25')
sheet.save('/tmp/emi-cinematic-contact.png')
print(f'PDF: {pdf} | 12 slides | {pdf.stat().st_size:,} bytes')
print('Contact sheet: /tmp/emi-cinematic-contact.png')
+127
View File
@@ -0,0 +1,127 @@
from reportlab.pdfgen import canvas
from reportlab.lib.colors import HexColor, Color
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.lib.utils import simpleSplit
from reportlab.lib.pagesizes import landscape
from reportlab.lib.units import inch
from pathlib import Path
OUT=Path('/Users/adolforeyna/brain/exports/emi_latin_america_redesign.pdf')
W,H=1280,720
BG=HexColor('#F5F1E8'); INK=HexColor('#17352C'); GREEN=HexColor('#315D48'); MOSS=HexColor('#A7B6A0'); GOLD=HexColor('#C9984D'); CLAY=HexColor('#B9684D'); WHITE=HexColor('#FFFEFA'); PALE=HexColor('#E8E1D4'); MUTED=HexColor('#596C60')
for n,p in [('Editorial','/System/Library/Fonts/Supplemental/Georgia.ttf'),('Sans','/System/Library/Fonts/Supplemental/Arial.ttf'),('SansB','/System/Library/Fonts/Supplemental/Arial Bold.ttf')]: pdfmetrics.registerFont(TTFont(n,p))
c=canvas.Canvas(str(OUT),pagesize=(W,H),pageCompression=1); c.setTitle('EMI — A Shared Vision for Latin America'); c.setAuthor('EMI · based on Vision for Latin America')
def rect(x,y,w,h,fill,stroke=None,r=0):
c.setFillColor(fill); c.setStrokeColor(stroke or fill)
if r: c.roundRect(x,y,w,h,r,fill=1,stroke=bool(stroke))
else: c.rect(x,y,w,h,fill=1,stroke=bool(stroke))
def text(s,x,y,size=18,font='Sans',color=INK): c.setFillColor(color); c.setFont(font,size); c.drawString(x,y,s)
def para(s,x,y,w,size=18,lead=27,font='Sans',color=MUTED):
c.setFillColor(color); c.setFont(font,size)
for ln in simpleSplit(s,font,size,w): c.drawString(x,y,ln); y-=lead
return y
def line(x,y,x2,y2,col=GOLD,sw=2): c.setStrokeColor(col); c.setLineWidth(sw); c.line(x,y,x2,y2)
def circle(x,y,r,col): c.setFillColor(col); c.circle(x,y,r,fill=1,stroke=0)
def base(n,section,dark=False):
c.setFillColor(INK if dark else BG); c.rect(0,0,W,H,fill=1,stroke=0)
text('EMI / LATIN AMERICA',54,34,11,'SansB',GOLD if dark else GREEN)
text(f'{section.upper()} · {n:02d} / 08',W-275,34,10,'SansB',HexColor('#D7DED6') if dark else MUTED)
def title(kicker,head,sub=None,y=605,w=930,dark=False):
text(kicker.upper(),58,y,13,'SansB',GOLD if dark else GREEN)
text(head,55,y-67,42,'Editorial',WHITE if dark else INK)
if sub: para(sub,60,y-104,w,18,26,'Sans',HexColor('#D7DED6') if dark else MUTED)
# 1 Cover
base(1,'The call',True)
# sunlit layered landscape motif, no abstract spheres
for i,col in enumerate([HexColor('#24483A'),HexColor('#315D48'),HexColor('#59785B')]):
y=60+i*65; c.setFillColor(col); p=c.beginPath(); p.moveTo(0,y); p.curveTo(190,y+120,310,y-35,510,y+35); p.curveTo(720,y+125,850,y-55,1055,y+80); p.curveTo(1140,y+130,1210,y+10,1280,y+85); p.lineTo(1280,0); p.lineTo(0,0); p.close(); c.drawPath(p,fill=1,stroke=0)
text('EMI · A SHARED REGIONAL CALL',65,638,13,'SansB',GOLD)
text('A vision for',60,518,72,'Editorial',WHITE); text('Latin America',60,434,72,'Editorial',WHITE)
para('One spiritual family, moving together to establish lasting expressions of the Kingdom of God.',67,365,640,23,33,'Sans',HexColor('#E8E4D9'))
line(68,255,178,255,GOLD,4); text('“Go and make disciples of all nations.”',67,213,25,'Editorial',HexColor('#F2D69A')); text('MATTHEW 28:18–20',69,177,12,'SansB',HexColor('#D7DED6'))
c.showPage()
# 2 clear vision/mission
base(2,'Direction')
title('01 · Direction','One destination. One shared way.','The vision names what God desires to establish; the mission describes how the regional family carries it forward.',650,1030)
rect(60,285,540,178,WHITE,r=18); rect(60,451,540,12,GREEN)
text('THE VISION / WHAT',90,411,14,'SansB',GREEN); text('Kingdom & family',88,357,37,'Editorial',INK)
para('Established among every ethnos—every nation, people, and people group.',91,322,455,18,27)
rect(635,285,585,178,WHITE,r=18); rect(635,451,585,12,CLAY)
text('THE MISSION / HOW',665,411,14,'SansB',CLAY); text('A family at work',663,357,37,'Editorial',INK)
para('Discipling, serving, raising leaders, sharing resources, and building works that last.',666,322,485,18,27)
text('Not a program to run. A people to become—and a mission to carry together.',65,220,24,'Editorial',GREEN)
text('Rooted in Matthew 28:18–20',66,174,14,'SansB',MUTED)
c.showPage()
# 3 collective responsibility
base(3,'Ownership')
title('02 · Ownership','The mandate belongs to the family.','Local assignments remain distinct—but they serve a larger shared vision, not competing ones.',650,970)
# three linked columns with directional flow
cols=[(70,'MY ASSIGNMENT','Faithful action','Use what I have been given.',GREEN),(460,'OUR REGION','Shared responsibility','Know one another’s work; support and strengthen it.',CLAY),(850,'THE FAMILY','Lasting momentum','The vision continues beyond any one leader.',GOLD)]
for x,h,s,b,col in cols:
rect(x,300,340,198,WHITE,r=16); rect(x,300,10,198,col)
text(h,x+28,453,13,'SansB',col); text(s,x+26,403,26,'Editorial',INK); para(b,x+29,366,272,17,25)
for x in (420,810):
line(x,395,x+34,395,GOLD,3); c.setFillColor(GOLD); p=c.beginPath(); p.moveTo(x+34,395); p.lineTo(x+23,403); p.lineTo(x+23,387); p.close(); c.drawPath(p,fill=1,stroke=0)
text('“Is the family advancing—and is this still our family vision?”',70,226,27,'Editorial',GREEN)
text('Move from “Who else will do it?” to “What can we carry together?”',71,179,16,'SansB',MUTED)
c.showPage()
# 4 practices of shared mission
base(4,'Practice')
title('03 · How we move','Many gifts. One mission.','Prayer and spiritual life anchor the work; relationships and practical service give it local roots.',650,990)
# anchor and five clear service lanes
rect(60,315,290,170,GREEN,r=18); text('THE FOUNDATION',91,443,13,'SansB',HexColor('#F2D69A')); text('Prayer',89,391,36,'Editorial',WHITE); text('& shared life',91,351,25,'Editorial',WHITE)
items=[('01','RELATIONSHIPS','Fellowship · presence · trust'),('02','DISCIPLESHIP','Evangelism · leaders · maturity'),('03','PRACTICAL SERVICE','Medicine · business · education'),('04','CROSS-POLLINATION','People · ideas · skills · resources'),('05','LOCAL EXPRESSION','Each place’s gifts · needs · culture')]
for i,(num,head,desc) in enumerate(items):
y=467-i*61; circle(417,y+3,17,GOLD if i%2==0 else CLAY); c.setFillColor(WHITE); c.setFont('SansB',10); c.drawCentredString(417,y,num)
text(head,451,y+7,14,'SansB',GREEN); text(desc,451,y-15,15,'Sans',MUTED)
if i<4: line(417,y-17,417,y-40,PALE,2)
c.showPage()
# 5 establish
base(5,'The outcome')
title('04 · The outcome','Go beyond the visit. Establish.','Evangelism opens the door. The aim is a durable spiritual family and local work that can keep growing.',650,950)
steps=[('GO','Show up with purpose'),('CONNECT','Build trust & belonging'),('DISCIPLE','Form people & leaders'),('ESTABLISH','Grow local roots'),('MULTIPLY','Equip others to carry it')]
xs=[132,387,642,897,1152]; yy=372
line(xs[0],yy,xs[-1],yy,PALE,5)
for i,(h,d) in enumerate(steps):
col=[GREEN,CLAY,GREEN,GOLD,GREEN][i]; circle(xs[i],yy,36,col); c.setFillColor(WHITE); c.setFont('SansB',10); c.drawCentredString(xs[i],yy-4,h)
text(d,xs[i]-89,yy-75,14,'Sans',MUTED)
rect(100,187,1080,59,PALE,r=15)
text('RELATIONSHIPS',137,210,13,'SansB',GREEN); text('LOCAL LEADERS',375,210,13,'SansB',GREEN); text('SUSTAINABLE ROOTS',618,210,13,'SansB',GREEN); text('REGIONAL OWNERSHIP',923,210,13,'SansB',GREEN)
text('Stay long enough to build something that remains.',105,130,26,'Editorial',INK)
c.showPage()
# 6 regional examples
base(6,'Regional exchange')
title('05 · Share what serves','Let good work travel.','Cross-pollination is not copy-and-paste. Adapt good ideas to local relationships, needs, language, and realities.',650,960)
# arrows linking origin/destination
rect(60,294,470,190,WHITE,r=18); text('A GIFT ALREADY GROWING',91,442,13,'SansB',CLAY); text('Venezuela',89,385,36,'Editorial',INK); text('Medical work · experience · people',91,341,17,'Sans',MUTED)
rect(750,294,470,190,WHITE,r=18); text('A QUESTION TO EXPLORE',781,442,13,'SansB',GREEN); text('Across the region',779,385,36,'Editorial',INK); text('Where could this serve—and what must change?',781,341,17,'Sans',MUTED)
line(551,387,720,387,GOLD,4); c.setFillColor(GOLD); p=c.beginPath(); p.moveTo(720,387); p.lineTo(703,397); p.lineTo(703,377); p.close(); c.drawPath(p,fill=1,stroke=0)
text('Other resources travel too:',65,229,17,'SansB',GREEN)
for x,label in [(65,'EDUCATION'),(286,'BUSINESS'),(507,'PROFESSIONAL SKILLS'),(828,'STRATEGIES'),(1033,'PRAYER')]:
rect(x,170,190,38,PALE,r=19); c.setFillColor(GREEN); c.setFont('SansB',11); c.drawCentredString(x+95,184,label)
text('Local wisdom leads. Regional relationships make the exchange possible.',67,114,18,'Editorial',INK)
c.showPage()
# 7 generations
base(7,'Continuity')
title('06 · Leadership across generations','Prepare the next leader while you can still walk together.','Emerging leaders need wisdom, affirmation, coaching, and a real place to function—not a last-minute handoff.',650,1050)
# bridge motif
line(150,365,1125,365,GOLD,5)
for x,col,tag,head,desc in [(220,GREEN,'MATURE LEADERS','Coach','Share wisdom; make room.'),(640,CLAY,'IN THE WORK TOGETHER','Entrust','Practice, learn, and lead.'),(1060,GREEN,'EMERGING LEADERS','Carry forward','Grow into visible responsibility.')]:
circle(x,365,57,col); c.setFillColor(WHITE); c.setFont('SansB',10); c.drawCentredString(x,361,tag.split()[0])
text(tag,x-122,274,12,'SansB',col); text(head,x-122,235,25,'Editorial',INK); para(desc,x-122,202,250,16,24)
text('Moses & Joshua · David & Solomon',68,112,16,'SansB',GREEN)
text('Continuity is formed through shared life—not just succession plans.',455,112,17,'Editorial',INK)
c.showPage()
# 8 next steps closing
base(8,'Move together',True)
text('07 · THE NEXT FAITHFUL STEPS',63,637,13,'SansB',GOLD)
text('Align. Connect. Pray.',58,563,50,'Editorial',WHITE); text('Then move together.',59,504,50,'Editorial',WHITE)
steps=[('1','ALIGN','One shared understanding of the vision'),('2','CONNECT','Strengthen relationships, including Chiapas ↔ San Luis'),('3','PRAY','Establish a regular regional rhythm'),('4','SHARE','Exchange gifts, people, strategies, and resources'),('5','FOCUS','Choose a few clear priorities; strengthen Chile’s open door')]
for i,(n,h,b) in enumerate(steps):
y=422-i*55; text(n,68,y,16,'SansB',GOLD); text(h,111,y,14,'SansB',HexColor('#EBCF91')); text(b,242,y,16,'Sans',HexColor('#E5E7DB'))
line(66,130,1214,130,HexColor('#8A7650'),1)
text('A gathering that becomes a family in motion.',66,88,24,'Editorial',WHITE)
text('Vision alignment · prayer · leadership · collaboration · outreach · the next generation',68,57,13,'Sans',HexColor('#D7DED6'))
c.showPage(); c.save(); print(f'{OUT} | {OUT.stat().st_size} bytes | 8 slides')
+140
View File
@@ -0,0 +1,140 @@
from reportlab.pdfgen import canvas
from reportlab.lib.colors import HexColor, Color
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.lib.utils import simpleSplit
from pathlib import Path
OUT = Path('/Users/adolforeyna/brain/exports/emi_latin_america_vision_slides_2026-09-22.pdf')
W,H = 960,540
BG=HexColor('#F7F3EA'); INK=HexColor('#172A25'); GREEN=HexColor('#1F5946'); MINT=HexColor('#CDE1D1'); GOLD=HexColor('#D7A850'); RUST=HexColor('#B9684C'); MUTED=HexColor('#62736A'); WHITE=HexColor('#FFFFFF'); PALE=HexColor('#EAE4D6')
pdfmetrics.registerFont(TTFont('Georgia','/System/Library/Fonts/Supplemental/Georgia.ttf'))
pdfmetrics.registerFont(TTFont('Arial','/System/Library/Fonts/Supplemental/Arial.ttf'))
pdfmetrics.registerFont(TTFont('ArialB','/System/Library/Fonts/Supplemental/Arial Bold.ttf'))
c=canvas.Canvas(str(OUT), pagesize=(W,H), pageCompression=1)
c.setTitle('EMI | A Vision and Mission for Latin America')
c.setAuthor('EMI — based on Vision_for_Latin_America_final.docx')
def base(n, dark=False):
c.setFillColor(INK if dark else BG); c.rect(0,0,W,H,fill=1,stroke=0)
c.setFillColor(GOLD); c.setFont('ArialB',10); c.drawString(48,26,'EMI / LATIN AMERICA')
c.setFillColor(Color(1,1,1,.50) if dark else MUTED); c.setFont('Arial',9); c.drawRightString(W-48,26,f'VISION • MISSION / {n:02d}')
def txt(s,x,y,size=16,font='Arial',color=INK):
c.setFillColor(color); c.setFont(font,size); c.drawString(x,y,s)
def para(s,x,y,width,size=15,leading=22,font='Arial',color=INK):
c.setFillColor(color); c.setFont(font,size)
for line in simpleSplit(s,font,size,width): c.drawString(x,y,line); y-=leading
return y
def pill(s,x,y,fill=MINT,color=GREEN):
c.setFont('ArialB',10); w=pdfmetrics.stringWidth(s,'ArialB',10)+24
c.setFillColor(fill); c.roundRect(x,y-6,w,24,12,fill=1,stroke=0)
txt(s,x+12,y+1,10,'ArialB',color)
def line(x1,y1,x2,y2,col=GOLD,width=2):
c.setStrokeColor(col); c.setLineWidth(width); c.line(x1,y1,x2,y2)
def circ(x,y,r,col): c.setFillColor(col); c.circle(x,y,r,fill=1,stroke=0)
# 1 Cover
base(1,True)
c.setFillColor(GOLD); c.rect(0,0,12,H,fill=1,stroke=0)
pill('A SHARED REGIONAL CALL',58,452,fill=HexColor('#315346'),color=HexColor('#F2D69A'))
txt('A vision & mission',58,365,43,'Georgia',WHITE)
txt('for Latin America',58,311,43,'Georgia',WHITE)
para('One spiritual family, moving together to establish lasting expressions of the Kingdom of God.',60,250,470,19,29,'Arial',HexColor('#DDE6DF'))
line(60,144,400,144,GOLD,3)
txt('“Go and make disciples of all nations.”',60,112,17,'Georgia',HexColor('#F2D69A'))
txt('MATTHEW 28:18–20',60,83,10,'ArialB',HexColor('#DDE6DF'))
# abstract regional sunrise / connected people
for i,(x,y,r) in enumerate([(660,300,76),(780,354,52),(826,236,66),(690,186,42),(746,275,18)]): circ(x,y,r,[GREEN,HexColor('#2E7556'),RUST,GOLD,MINT][i])
for a,b in [((660,300),(780,354)),((660,300),(826,236)),((660,300),(690,186)),((780,354),(826,236)),((690,186),(826,236))]: line(*a,*b,HexColor('#D5BC85'),1.5)
c.showPage()
# 2 north star
base(2)
pill('THE NORTH STAR',52,465)
txt('The vision is bigger than a visit.',52,396,31,'Georgia')
para('Rooted in Jesus’ commission, the regional vision is to see God’s Kingdom and family established among every ethnos—every nation, people, and people group.',55,343,720,17,25,'Arial',MUTED)
# focal diagram
circ(480,188,92,GREEN); txt('KINGDOM',430,197,16,'ArialB',WHITE); txt('& FAMILY',427,173,16,'ArialB',WHITE)
for x,y,l in [(200,213,'NATIONS'),(760,213,'DISCIPLES'),(325,92,'BAPTIZE'),(635,92,'TEACH & OBEY')]:
circ(x,y,42,MINT); c.setFillColor(GREEN); c.setFont('ArialB',10); c.drawCentredString(x,y-4,l)
line(480,188,x,y,GOLD,1.5)
txt('Not merely building churches: making disciples who learn to live Jesus’ way.',196,47,13,'Georgia',INK)
c.showPage()
# 3 mission
base(3)
pill('THE MISSION',52,465)
txt('How the family carries the vision',52,403,30,'Georgia')
para('A cohesive regional company works deliberately together so that the Kingdom takes root—and continues to grow.',55,359,780,16,23,'Arial',MUTED)
# central circle & six branches
cx,cy=480,203
circ(cx,cy,64,GREEN); c.setFillColor(WHITE); c.setFont('ArialB',12); c.drawCentredString(cx,cy+5,'ONE'); c.drawCentredString(cx,cy-13,'FAMILY')
cards=[(183,277,'PRAYER','Shared spiritual life'),(480,278,'RELATIONSHIPS','Presence & trust'),(777,277,'DISCIPLESHIP','New believers & leaders'),(183,119,'PRACTICAL SERVICE','Medicine, business, education'),(480,79,'CROSS-POLLINATION','People, ideas & resources'),(777,119,'LASTING WORKS','Local roots & continuity')]
for x,y,h,b in cards:
line(cx,cy,x,y,GOLD,1.4); circ(x,y,5,RUST)
txt(h,x-110,y+21,11,'ArialB',GREEN); txt(b,x-110,y+3,11,'Arial',MUTED)
c.showPage()
# 4 family and generations
base(4,True)
pill('A CORPORATE FAMILY',55,465,fill=HexColor('#315346'),color=HexColor('#F2D69A'))
txt('From “my ministry”',55,386,32,'Georgia',WHITE)
txt('to “our family”',55,344,32,'Georgia',WHITE)
para('The mandate is shared. Each person has an assignment; each region has responsibility. We do not wait for someone else to carry what we can faithfully do together.',58,293,395,16,23,'Arial',HexColor('#DDE6DF'))
# generational bridge
line(565,220,846,220,GOLD,3)
for x,label,sub,col in [(590,'MATURE','Coach • affirm',GREEN),(705,'TOGETHER','Share the work',RUST),(825,'EMERGING','Learn • lead',HexColor('#4F8066'))]:
circ(x,220,39,col); c.setFillColor(WHITE); c.setFont('ArialB',10); c.drawCentredString(x,224,label)
c.setFillColor(HexColor('#DDE6DF')); c.setFont('Arial',10); c.drawCentredString(x,165,sub)
txt('Transition begins before it is urgent.',555,110,18,'Georgia',HexColor('#F2D69A'))
para('Wisdom is passed on while experienced leaders can still coach and emerging leaders can grow into their place.',555,79,330,12,17,'Arial',HexColor('#DDE6DF'))
c.showPage()
# 5 establish not visit
base(5)
pill('THE OUTCOME',52,465)
txt('Don’t only visit. Establish.',52,404,32,'Georgia')
para('Evangelism opens the door. The mission is to build relationships and works that remain after the first visit.',55,358,760,16,23,'Arial',MUTED)
# left-to-right progression
steps=[('GO','Show up with purpose'),('CONNECT','Build trust & family'),('DISCIPLE','Form people & leaders'),('ESTABLISH','Root a lasting work'),('MULTIPLY','Equip others to carry it')]
xs=[112,293,474,655,836]
for i,((head,desc),x) in enumerate(zip(steps,xs)):
col=GREEN if i in (0,3) else (RUST if i==4 else HexColor('#46745D'))
circ(x,219,53,col); c.setFillColor(WHITE); c.setFont('ArialB',12); c.drawCentredString(x,215,head)
if i<4: line(x+56,219,xs[i+1]-56,219,GOLD,2); circ((x+xs[i+1])/2,219,4,GOLD)
c.setFillColor(MUTED); c.setFont('Arial',11)
for j,l in enumerate(simpleSplit(desc,'Arial',11,130)): c.drawCentredString(x,143-j*15,l)
# foundation
c.setFillColor(PALE); c.roundRect(89,78,782,25,12,fill=1,stroke=0)
c.setFillColor(GREEN); c.setFont('ArialB',10); c.drawCentredString(480,87,'RELATIONSHIPS • LOCAL LEADERS • SUSTAINABLE ROOTS • REGIONAL OWNERSHIP')
c.showPage()
# 6 priorities
base(6)
pill('START WITH THE NEXT FAITHFUL STEPS',52,465)
txt('A regional agenda',52,404,32,'Georgia')
items=[('01','ALIGN','One shared understanding of the vision'),('02','CONNECT','Strengthen relationships across the region'),('03','PRAY','Establish a shared rhythm of prayer'),('04','SHARE','Cross-pollinate strategies, gifts & resources'),('05','STRENGTHEN','Encourage existing open doors, including Chile'),('06','FOCUS','Choose a few clear priorities; build steadily')]
for i,(num,head,body) in enumerate(items):
col=i%2; row=i//2; x=57+col*438; y=319-row*96
c.setFillColor(WHITE); c.roundRect(x,y-53,400,72,13,fill=1,stroke=0)
c.setFillColor(GOLD); c.setFont('Georgia',20); c.drawString(x+17,y-10,num)
txt(head,x+65,y-3,12,'ArialB',GREEN)
txt(body,x+65,y-26,12,'Arial',MUTED)
c.showPage()
# 7 gathering
base(7,True)
pill('THE LONGER HORIZON',55,465,fill=HexColor('#315346'),color=HexColor('#F2D69A'))
txt('A gathering that becomes',55,392,31,'Georgia',WHITE)
txt('a regional family in motion.',55,351,31,'Georgia',WHITE)
para('The Latin American Family Gathering is not just an event. It can become a catalyst for shared life and ongoing collaboration.',58,301,680,16,23,'Arial',HexColor('#DDE6DF'))
labels=['VISION','RELATIONSHIP','LEADERSHIP','PRAYER','COLLABORATION','OUTREACH','NEXT GENERATION']
for i,s in enumerate(labels):
x=58+(i%4)*218; y=209-(i//4)*61
pill(s,x,y,fill=HexColor('#315346') if i%2==0 else HexColor('#3E6757'),color=HexColor('#F5EAD1'))
line(58,86,874,86,GOLD,2)
txt('One family. Shared responsibility. Lasting Kingdom work.',58,55,17,'Georgia',HexColor('#F2D69A'))
txt('Based on the EMI “Vision for Latin America” source document.',58,38,9,'Arial',HexColor('#DDE6DF'))
c.showPage()
c.save()
print(f'Wrote {OUT} ({OUT.stat().st_size} bytes; 7 slides)')
+20
View File
@@ -0,0 +1,20 @@
from pathlib import Path
from PIL import Image
from reportlab.pdfgen import canvas
from reportlab.lib.utils import ImageReader
root=Path('/Users/adolforeyna/brain/exports')
names=['infographic','creative_studio','design_system','powerpoint','open_slide']
pdf=root/'emi_vision_design_samples.pdf'
c=canvas.Canvas(str(pdf),pagesize=(1600,900),pageCompression=1)
c.setTitle('EMI Latin America — Visual Direction Samples')
for name in names:
p=root/f'emi_sample_{name}.png'
im=Image.open(p).convert('RGB')
if im.size != (1600,1000): raise ValueError(f'{p}: unexpected screenshot size {im.size}')
im=im.crop((0,40,1600,940))
im.save(p,optimize=True)
c.drawImage(ImageReader(im),0,0,width=1600,height=900)
c.showPage()
c.save()
print(f'{pdf} | 5 slides | {pdf.stat().st_size:,} bytes')
+97
View File
@@ -0,0 +1,97 @@
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Hermes Agent//Reyna Family//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:Reyna Family Travel 2026
BEGIN:VEVENT
UID:maine-2026-mco-bos-out-0828@reynafamily.local
DTSTAMP:20260805T014521Z
DTSTART:20260828T151600Z
DTEND:20260828T182200Z
SUMMARY:✈️ MCO → BOS Delta 1580 - Maine Wedding
DESCRIPTION:Flight to Boston for Geena wedding\nConf: GWS5X7 Ticket 0062427804191\nDelta 1580 MCO 11:16a → BOS 2:22p\nRental: Hertz L670EDC05D8 Full-Size Nissan Altima $163.11\nPickup BOS 2pm\nTolls: BOS tunnels + NH + ME ~$30-50 RT — decline PlatePass unlimited, bring PRO/Uni
LOCATION:MCO → Boston Logan BOS
STATUS:CONFIRMED
BEGIN:VALARM
TRIGGER:-PT24H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
BEGIN:VEVENT
UID:maine-2026-bos-hertz-pickup-0828@reynafamily.local
DTSTAMP:20260805T014521Z
DTSTART:20260828T180000Z
DTEND:20260828T183000Z
SUMMARY:🚗 Hertz Pickup BOS L670EDC05D8 - Nissan Altima
DESCRIPTION:Hertz Boston Logan Conf L670EDC05D8\n$163.11 total\nFull-Size Nissan Altima\nTolls: Decline unlimited — use PRO/Uni or pay-per-use $5.95/day fee
LOCATION:Boston Logan Airport (BOS) Hertz
STATUS:CONFIRMED
BEGIN:VALARM
TRIGGER:-PT24H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
BEGIN:VEVENT
UID:maine-2026-bos-hertz-dropoff-0831@reynafamily.local
DTSTAMP:20260805T014521Z
DTSTART:20260831T180000Z
DTEND:20260831T183000Z
SUMMARY:🚗 Hertz Dropoff BOS L670EDC05D8
DESCRIPTION:Return rental — tight timing! Flight 3:20p, allow extra\nConf L670EDC05D8\nLocation: BOS
LOCATION:Boston Logan Airport (BOS) Hertz
STATUS:CONFIRMED
BEGIN:VALARM
TRIGGER:-PT24H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
BEGIN:VEVENT
UID:maine-2026-bos-mco-ret-0831@reynafamily.local
DTSTAMP:20260805T014521Z
DTSTART:20260831T192000Z
DTEND:20260831T223900Z
SUMMARY:✈️ BOS → MCO Delta 2887 - Return
DESCRIPTION:Return from Maine wedding\nConf: GWS5X7\nDelta 2887 BOS 3:20p → MCO 6:39p
LOCATION:BOS → MCO
STATUS:CONFIRMED
BEGIN:VALARM
TRIGGER:-PT24H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
BEGIN:VEVENT
UID:chiapas-2026-mco-tgz-out-0925@reynafamily.local
DTSTAMP:20260805T014521Z
DTSTART:20260925T205500Z
DTEND:20260926T043400Z
SUMMARY:✈️ MCO → TGZ Chiapas #HCYDNU Aeroméxico AM443/322
DESCRIPTION:Chiapas family trip 4 pax\nConf HCYDNU\nMCO 16:55 → MEX → TGZ 23:34 (8h39m)\nAM443 + AM322 layover MEX 3h10\nCost $57,388 MXN total 34,944 pts\nBags: 2x25kg extra paid $1620 MXN\nNight arrival TGZ — need pickup
LOCATION:MCO → MEX → TGZ (Tuxtla Gutierrez)
STATUS:CONFIRMED
BEGIN:VALARM
TRIGGER:-PT24H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
BEGIN:VEVENT
UID:chiapas-2026-tgz-mco-ret-1009@reynafamily.local
DTSTAMP:20260805T014521Z
DTSTART:20261009T152700Z
DTEND:20261009T233000Z
SUMMARY:✈️ TGZ → MCO Chiapas Return #HCYDNU AM315/436
DESCRIPTION:Return TGZ→MCO\nConf HCYDNU\nTGZ 10:27 → MEX → MCO 19:30 (7h03m)\nAM315 + AM436 layover MEX 1h40\nPremier cabin MEX-MCO 32kg included
LOCATION:TGZ → MEX → MCO
STATUS:CONFIRMED
BEGIN:VALARM
TRIGGER:-PT24H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
@@ -0,0 +1,37 @@
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Hermes Agent//Reyna Family//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:Reyna Family Travel 2026
BEGIN:VEVENT
UID:chiapas-2026-mco-tgz-out-0925@reynafamily.local
DTSTAMP:20260805T014521Z
DTSTART:20260925T205500Z
DTEND:20260926T043400Z
SUMMARY:✈️ MCO → TGZ Chiapas #HCYDNU Aeroméxico AM443/322
DESCRIPTION:Chiapas family trip 4 pax\nConf HCYDNU\nMCO 16:55 → MEX → TGZ 23:34 (8h39m)\nAM443 + AM322 layover MEX 3h10\nCost $57,388 MXN total 34,944 pts\nBags: 2x25kg extra paid $1620 MXN\nNight arrival TGZ — need pickup
LOCATION:MCO → MEX → TGZ (Tuxtla Gutierrez)
STATUS:CONFIRMED
BEGIN:VALARM
TRIGGER:-PT24H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
BEGIN:VEVENT
UID:chiapas-2026-tgz-mco-ret-1009@reynafamily.local
DTSTAMP:20260805T014521Z
DTSTART:20261009T152700Z
DTEND:20261009T233000Z
SUMMARY:✈️ TGZ → MCO Chiapas Return #HCYDNU AM315/436
DESCRIPTION:Return TGZ→MCO\nConf HCYDNU\nTGZ 10:27 → MEX → MCO 19:30 (7h03m)\nAM315 + AM436 layover MEX 1h40\nPremier cabin MEX-MCO 32kg included
LOCATION:TGZ → MEX → MCO
STATUS:CONFIRMED
BEGIN:VALARM
TRIGGER:-PT24H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
@@ -0,0 +1,67 @@
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Hermes Agent//Reyna Family//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:Reyna Family Travel 2026
BEGIN:VEVENT
UID:maine-2026-mco-bos-out-0828@reynafamily.local
DTSTAMP:20260805T014521Z
DTSTART:20260828T151600Z
DTEND:20260828T182200Z
SUMMARY:✈️ MCO → BOS Delta 1580 - Maine Wedding
DESCRIPTION:Flight to Boston for Geena wedding\nConf: GWS5X7 Ticket 0062427804191\nDelta 1580 MCO 11:16a → BOS 2:22p\nRental: Hertz L670EDC05D8 Full-Size Nissan Altima $163.11\nPickup BOS 2pm\nTolls: BOS tunnels + NH + ME ~$30-50 RT — decline PlatePass unlimited, bring PRO/Uni
LOCATION:MCO → Boston Logan BOS
STATUS:CONFIRMED
BEGIN:VALARM
TRIGGER:-PT24H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
BEGIN:VEVENT
UID:maine-2026-bos-hertz-pickup-0828@reynafamily.local
DTSTAMP:20260805T014521Z
DTSTART:20260828T180000Z
DTEND:20260828T183000Z
SUMMARY:🚗 Hertz Pickup BOS L670EDC05D8 - Nissan Altima
DESCRIPTION:Hertz Boston Logan Conf L670EDC05D8\n$163.11 total\nFull-Size Nissan Altima\nTolls: Decline unlimited — use PRO/Uni or pay-per-use $5.95/day fee
LOCATION:Boston Logan Airport (BOS) Hertz
STATUS:CONFIRMED
BEGIN:VALARM
TRIGGER:-PT24H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
BEGIN:VEVENT
UID:maine-2026-bos-hertz-dropoff-0831@reynafamily.local
DTSTAMP:20260805T014521Z
DTSTART:20260831T180000Z
DTEND:20260831T183000Z
SUMMARY:🚗 Hertz Dropoff BOS L670EDC05D8
DESCRIPTION:Return rental — tight timing! Flight 3:20p, allow extra\nConf L670EDC05D8\nLocation: BOS
LOCATION:Boston Logan Airport (BOS) Hertz
STATUS:CONFIRMED
BEGIN:VALARM
TRIGGER:-PT24H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
BEGIN:VEVENT
UID:maine-2026-bos-mco-ret-0831@reynafamily.local
DTSTAMP:20260805T014521Z
DTSTART:20260831T192000Z
DTEND:20260831T223900Z
SUMMARY:✈️ BOS → MCO Delta 2887 - Return
DESCRIPTION:Return from Maine wedding\nConf: GWS5X7\nDelta 2887 BOS 3:20p → MCO 6:39p
LOCATION:BOS → MCO
STATUS:CONFIRMED
BEGIN:VALARM
TRIGGER:-PT24H
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR
+64
View File
@@ -0,0 +1,64 @@
from pathlib import Path
import html
O=Path('/Users/adolforeyna/brain/exports')
# Original illustration system: cut-paper community scenes, not stock imagery.
ink='#172b45'; blue='#2851bf'; cream='#f7f2e7'; yellow='#f3c653'; coral='#e57550'; green='#507969'
def person(x,y,s=1,shirt=blue,skin='#bb7953',hair=ink,pose='open'):
arms = '<path d="M-36 105 Q-66 142 -102 121 M37 104 Q65 136 104 100"/>' if pose=='open' else '<path d="M-35 107 L-62 158 L5 173 M36 106 L67 152 L18 168"/>'
return f'''<g transform="translate({x} {y}) scale({s})"><path d="M-29 172 L-32 265 L-61 267 M28 172 L39 265 L69 268" stroke="{ink}" stroke-width="23" fill="none" stroke-linecap="round"/><path d="M-43 96 Q0 76 44 97 L55 190 Q0 207 -53 187Z" fill="{shirt}"/><g fill="none" stroke="{skin}" stroke-width="19" stroke-linecap="round">{arms}</g><path d="M-10 60 L-10 92 Q2 104 13 90 L12 59" fill="{skin}"/><path d="M-28 12 Q-35 47 -19 66 Q8 86 30 52 L31 15Z" fill="{skin}"/><path d="M-31 34 Q-50 -15 -9 -23 Q33 -35 39 12 L28 29 L20 1 Q-1 21 -31 16Z" fill="{hair}"/><path d="M6 32 L3 46 L12 46 M-9 55 Q3 61 14 54" stroke="{ink}" stroke-width="2.5" fill="none"/><path d="M-17 31 L-11 31 M15 30 L21 30" stroke="{ink}" stroke-width="3"/><path d="M-26 116 L-22 172 M25 119 L31 173" stroke="{cream}" opacity=".4" stroke-width="3"/></g>'''
def plant(x,y,s=1):
return f'<g transform="translate({x} {y}) scale({s})"><path d="M0 0 L5 -160 M3 -65 Q-77 -81 -65 -136 Q-4 -135 3 -65 M4 -106 Q64 -116 67 -179 Q8 -174 4 -106" fill="{green}" stroke="{green}" stroke-width="6"/><path d="M-40 -12 L-27 58 L34 58 L47 -12Z" fill="{coral}"/><path d="M-29 0 L36 0" stroke="{cream}" stroke-width="5"/></g>'
def house(x,y,w,h,c):
return f'<g><path d="M{x} {y+h}V{y+45}L{x+w/2} {y}L{x+w} {y+45}V{y+h}Z" fill="{c}" stroke="{ink}" stroke-width="3"/><path d="M{x-8} {y+49}L{x+w/2} {y-6}L{x+w+9} {y+49}" stroke="{ink}" stroke-width="12" fill="none"/><path d="M{x+w*.43} {y+h}V{y+h-92}Q{x+w*.58} {y+h-114} {x+w*.72} {y+h-92}V{y+h}" fill="{ink}"/><rect x="{x+w*.14}" y="{y+65}" width="{w*.22}" height="44" fill="{cream}" stroke="{ink}" stroke-width="3"/><path d="M{x+w*.25} {y+65}V{y+109}" stroke="{ink}" stroke-width="5"/></g>'
def svg(scene):
p=[]
if scene in ['family','street']:
p += [f'<path d="M0 460 Q170 337 370 465 T900 423V900H0Z" fill="{yellow}"/>',house(30,180,220,280,coral),house(260,80,275,380,cream),house(558,160,265,325,green)]
p += ['<path d="M307 100 L490 100 M296 119 L501 119 M286 138 L510 138" stroke="#172b45" stroke-width="4" opacity=".25"/>']
p += [person(155,445,1.0,blue,'#d9a77d',ink),person(390,375,1.15,cream,'#825438',ink,'book'),person(648,430,1.06,coral,'#b77a54',ink),person(525,561,.68,green,'#d9a77d',ink,'book'),plant(790,720,.8)]
p += [f'<path d="M0 855 Q366 785 900 843" fill="none" stroke="{ink}" stroke-width="3"/>']
elif scene in ['table','gather']:
p += [f'<path d="M90 620V190Q90 70 220 70H704V620" stroke="{coral}" stroke-width="38" fill="none"/>',f'<path d="M140 210H655 M510 80V467" stroke="{yellow}" stroke-width="9"/>']
p += [person(205,278,.98,green,'#bb7953',ink),person(418,214,1.15,cream,'#825438','#ddd9c9','book'),person(670,290,1.0,coral,'#d9a77d',ink)]
p += [f'<path d="M99 555 L729 555 L824 659 L37 659Z" fill="{yellow}"/><path d="M96 659L83 854 M750 659L775 854" stroke="{ink}" stroke-width="29"/><path d="M320 591 L406 568 L492 593 L413 620Z" fill="{cream}"/><path d="M406 570 L413 619" stroke="{ink}" stroke-width="3"/><path d="M560 585h39v36h-39Z M568 575v-14" stroke="{ink}" fill="{coral}" stroke-width="4"/>',plant(848,771,.66)]
elif scene=='mentor':
p += [f'<path d="M37 817H882V685H662V555H433V425H208V300H37Z" fill="{yellow}"/>']
p += [person(237,202,1.43,cream,'#bb7953','#ddd9c9'),person(611,312,1.26,coral,'#d9a77d',ink,'book')]
p += [f'<path d="M348 372Q430 270 518 354" fill="none" stroke="{cream}" stroke-width="8" stroke-dasharray="7 11"/>',plant(815,806,.7)]
elif scene=='service':
p += [house(140,80,620,645,cream),f'<path d="M164 297H739L704 219H198Z" fill="{coral}"/><path d="M240 220L221 297 M327 220L317 297 M417 220V297 M507 220L517 297 M594 220L614 297 M674 220L703 297" stroke="{cream}" stroke-width="20"/><rect x="205" y="330" width="472" height="297" fill="{yellow}"/>']
p += [person(342,355,1.05,blue,'#825438',ink,'book'),person(586,416,.85,green,'#d9a77d',ink)]
p += [f'<rect x="180" y="609" width="529" height="146" fill="{coral}"/><path d="M441 640V720 M401 680H481" stroke="{cream}" stroke-width="22"/>',plant(100,765,.75)]
elif scene=='door':
p += [f'<path d="M151 812V200Q151 78 352 78H675V812Z" fill="{yellow}"/><path d="M202 812V229Q202 130 374 130H620V812Z" fill="{blue}"/><path d="M620 130L809 209V844L620 810Z" fill="{coral}"/><path d="M658 426V469" stroke="{cream}" stroke-width="10"/>']
p += [person(430,313,1.46,cream,'#bb7953',ink),plant(120,778,.85)]
if scene=='gather':
p=[house(35,112,265,300,coral),house(533,73,288,330,green),f'<path d="M93 710Q422 400 793 723" stroke="{cream}" stroke-width="72" fill="none"/>',person(204,451,1.04,blue,'#bb7953',ink),person(454,355,1.12,cream,'#825438','#ddd9c9'),person(699,472,1.03,coral,'#d9a77d',ink,'book'),plant(90,820,.65)]
# Signature etched marks, consistent throughout illustrations.
p += [f'<path d="M50 868H830 M60 880H700" stroke="{ink}" stroke-width="3" opacity=".28"/>']
return '<svg viewBox="0 0 900 900" xmlns="http://www.w3.org/2000/svg" aria-label="Original symbolic illustration of '+scene+'; not a documentary depiction">'+''.join(p)+'</svg>'
slides=[]
def slide(kicker,content,cls=''):
n=len(slides)+1
slides.append(f'<section class="slide {cls}" id="slide-{n}"><div class="eyebrow">EMI / LATIN AMERICA <span>{kicker}</span></div>{content}<footer><span>VISION & MISSION · 2026</span><span>{n:02d} / 11</span></footer></section>')
def art(scene,style=''):
return '<div class="art" style="'+style+'">'+svg(scene)+'</div>'
def note(t):return '<div class="note">'+t+'</div>'
slide('A FAMILY SENT TO ESTABLISH', '<div class="covercopy"><div class="smalltag">ONE VISION. A SHARED CALLING.</div><h1>Not just<br>a visit.<br><em>A family<br>that remains.</em></h1><p>Establishing the Kingdom and family of God<br>among every people in Latin America.</p></div>'+art('family'),'cover')
slide('01 / THE VISION', '<div class="wide"><div class="smalltag">WHAT WE LONG TO SEE ESTABLISHED</div><h1>Every nation.<br>Every people.<br><em>The Kingdom and<br>family of God.</em></h1><p class="lead">Every <i>ethnos</i> in Latin America—not only the<br>places and people we already know.</p></div><div class="commission"><div class="smalltag">ROOTED IN MATTHEW 28:18–20</div><h2>Go.<br>Make disciples.<br>Baptize.<br>Teach obedience.</h2><p>More than building churches.<br>More than a short evangelistic visit.</p><div class="rule"></div><p class="fine">A summary of the source’s reading<br>of the Great Commission.</p></div>','blue')
slide('02 / THE MISSION', '<div class="copy"><div class="smalltag">HOW WE CARRY THE VISION</div><h1>Work together.<br><em>Establish<br>what lasts.</em></h1><p class="lead">A cohesive regional company.<br>A spiritual family with shared responsibility.</p><ul class="plain"><li>Prayer and shared spiritual life</li><li>Relationships, fellowship and presence</li><li>Discipleship and leadership development</li><li>Practical service and shared resources</li></ul></div>'+art('table'),'light')
slide('03 / FROM CONTACT TO COMMITMENT', '<div class="wide"><h1>Evangelism is essential.<br><em>Establishment is the aim.</em></h1></div><div class="journey"><div><b>01</b><h2>Go beyond<br>the familiar.</h2><p>Seek new relationships, believers<br>and works where a foundation<br>does not yet exist.</p></div><div><b>02</b><h2>Build into<br>people’s lives.</h2><p>Make disciples. Develop leaders.<br>Form relationships and<br>spiritual families.</p></div><div><b>03</b><h2>Stay responsible<br>for the field.</h2><p>Send people. Develop resources.<br>Create sustainable structures<br>and lasting local footholds.</p></div></div><div class="bottomcall">“Own the field” <span>Long-term commitment to a nation or city. <i>In the spirit of Romans 15:20.</i></span></div>','light journey-slide')
slide('04 / CORPORATE FAMILY RESPONSIBILITY', '<div class="copy"><h1>Not only<br>“my ministry.”<br><em>Our family.</em></h1><p class="lead">Local assignments belong within<br>one larger Kingdom vision.</p><p>Regional families increasingly carry<br>their regions—not one international<br>leader carrying the whole work.</p><div class="pull">“Is the family advancing?”</div></div>'+art('gather'),'yellow')
slide('05 / GENERATIONAL CONTINUITY', '<div class="copy"><h1>Give the next<br>generation<br><em>room to lead.</em></h1><p class="lead">Begin while mature leaders can still<br>coach, affirm and equip.</p><ul class="plain"><li>Engage younger leaders early.</li><li>Share wisdom and experience.</li><li>Give them a visible place to function.</li></ul><p class="fine">Moses & Joshua. David & Solomon.<br>Continuity—not starting over.</p></div>'+art('mentor'),'blue')
slide('06 / PRACTICAL KINGDOM EXPRESSION', '<div class="copy"><h1>Let good<br>work travel.</h1><p class="lead">Share people, experience and resources.<br>Adapt the work—not just copy it.</p><div class="feature"><h3>From the source: Venezuela’s medical work</h3><p>Explore its adaptation where language,<br>needs, regulations, permits and<br>relationships make service possible.</p></div><p>Medicine. Business. Education. Finances.<br>Professional skills and everyday relationships.</p><p class="fine">Those who cannot travel carry the same vision locally.</p></div>'+art('service'),'light')
slide('07 / IMMEDIATE PRIORITIES · ALIGN & CONNECT', '<div class="wide"><div class="smalltag">START WITH PEOPLE, NOT A PROGRAM</div><h1>One vision.<br><em>Stronger relationships.</em></h1></div><div class="priority-list"><div><b>1</b><h2>Share one understanding.</h2><p>Agree on the vision and where the family is going.</p></div><div><b>2</b><h2>Strengthen relationships.</h2><p>Connect regional leaders and families—including Chiapas and San Luis.</p></div><div><b>3</b><h2>Embrace the vision personally.</h2><p>Move beyond intellectual agreement toward shared ownership.</p></div></div><div class="marginword">ALIGN<br>CONNECT<br>OWN</div>','light priorities')
slide('08 / IMMEDIATE PRIORITIES · ACT TOGETHER', '<div class="copy"><h1>Pray regularly.<br><em>Show up.<br>Start clearly.</em></h1><div class="compact-priorities"><p><b>4 / EXCHANGE</b> Cross-pollinate ideas, strategies,<br>people, abilities and resources.</p><p><b>5 / PRAY</b> Establish regular regional prayer.</p><p><b>6 / STRENGTHEN CHILE</b> Encourage the brother<br>already there: he is part of the family, not alone.</p><p><b>7 / FOCUS</b> Begin with a limited number<br>of clear priorities—not everything at once.</p></div></div>'+art('door'),'yellow')
slide('09 / A MEDIUM- & LONG-TERM OBJECTIVE', '<div class="copy"><div class="smalltag">LATIN AMERICAN FAMILY GATHERING</div><h1>More than<br>an event.<br><em>A family<br>in motion.</em></h1><p class="lead">A catalyst for what continues<br>between gatherings.</p></div><div class="gathering"><div><h2>Belong & align</h2><p>Relationships, family identity,<br>a shared vision and prayer.</p></div><div><h2>Develop & continue</h2><p>Leadership formation, generational<br>transition and the next generation.</p></div><div><h2>Share & go</h2><p>Strategic collaboration, resources,<br>evangelism and outreach.</p></div><div class="gather-note">Nations strengthening one another.<br>Isolated leaders knowing they belong.</div></div>','light')
slide('10 / THE CONVERSATION BECOMES A COMMITMENT', '<div class="closing-title"><h1>What will we carry<br><em>together?</em></h1><p class="lead">Three purposes for the next regional conversations.</p></div><div class="closing-actions"><div><span>01</span><h2>Name the<br>shared vision.</h2><p>One understanding<br>of where we are going.</p></div><div><span>02</span><h2>Understand<br>each assignment.</h2><p>Know what each person<br>and group is called to carry.</p></div><div><span>03</span><h2>Find practical<br>mutual support.</h2><p>Prayer. Presence. Relationships.<br>Abilities and resources.</p></div></div><div class="source">Adapted from Adolfo Reyna / EMI, “Vision and Mission for Latin America” · Source capture: 22 September 2026.<br>Illustrations are original symbolic scenes, not depictions of actual people or sites. Priorities reflect the source, not new commitments.</div>','blue closing')
css='''
*{box-sizing:border-box}html{background:#182b45}body{margin:0;color:#172b45;font-family:"Helvetica Neue",Arial,sans-serif;-webkit-print-color-adjust:exact;print-color-adjust:exact}.slide{width:1920px;height:1080px;position:relative;padding:72px 100px 70px;background:#f7f2e7;overflow:hidden;break-after:page}.slide:last-child{break-after:auto}.eyebrow{font-size:21px;letter-spacing:2px;font-weight:700;display:flex;justify-content:space-between;border-bottom:2px solid currentColor;padding-bottom:21px;position:relative;z-index:2}.eyebrow span{font-size:20px;letter-spacing:1.8px}footer{position:absolute;bottom:31px;left:100px;right:100px;display:flex;justify-content:space-between;font-size:17px;letter-spacing:2px;font-weight:600;z-index:4}h1,h2,h3,p{margin:0}h1{font-size:100px;line-height:1.04;letter-spacing:-4.8px;font-weight:650}h1 em{font-family:Georgia,serif;font-weight:400;letter-spacing:-4px}h2{font-size:47px;line-height:1.12;letter-spacing:-1.3px}h3{font-size:28px;line-height:1.3}p,li{font-size:32px;line-height:1.4;font-weight:400}p{margin-top:28px}.lead{font-size:37px;line-height:1.35}.smalltag{font-size:22px;font-weight:700;letter-spacing:2.5px;margin-bottom:28px}.copy{position:relative;z-index:2;width:980px;padding-top:65px}.copy>p{max-width:960px}.wide{padding-top:63px;position:relative;z-index:2}.art{position:absolute;right:45px;top:152px;width:870px;height:870px}.art svg{width:100%;height:100%}.cover{background:#f7f2e7}.covercopy{padding-top:61px;position:relative;z-index:2}.cover h1{font-size:119px;line-height:.99;max-width:1060px}.cover h1 em{color:#2851bf}.cover p{font-size:32px;margin-top:38px}.cover .art{width:970px;height:970px;right:-27px;top:110px}.blue{background:#2851bf;color:#f7f2e7}.blue h1 em{color:#f3c653}.yellow{background:#f3c653}.plain{list-style:none;padding:0;margin:35px 0}.plain li{padding:13px 0 13px 29px;border-top:1px solid currentColor;max-width:880px;position:relative}.plain li:before{content:'—';position:absolute;left:0}.fine{font-size:23px;line-height:1.4}.commission{position:absolute;left:1195px;top:204px;width:620px;border-left:2px solid #f3c653;padding-left:70px}.commission h2{font-size:64px;line-height:1.25;color:#f3c653}.commission p{font-size:29px}.commission .fine{font-size:23px}.rule{height:2px;background:#f7f2e7;margin-top:37px;width:90px}.journey-slide h1{font-size:90px}.journey{display:flex;position:absolute;left:100px;right:100px;top:490px;gap:65px}.journey>div{width:33.333%;border-top:7px solid #2851bf;padding-top:25px}.journey b{font-size:26px;color:#2851bf;display:block;margin-bottom:22px}.journey h2{font-size:46px}.journey p{font-size:29px;margin-top:22px}.bottomcall{position:absolute;left:100px;bottom:106px;right:100px;border-top:1px solid #172b45;padding-top:23px;font-size:30px;font-weight:700}.bottomcall span{font-size:25px;font-weight:400;margin-left:22px}.bottomcall i{font-size:22px}.pull{font-family:Georgia,serif;font-style:italic;font-size:41px;margin-top:42px;border-left:5px solid #2851bf;padding-left:22px}.feature{border-left:6px solid #e57550;padding-left:29px;margin-top:33px;max-width:830px}.feature p{font-size:30px;margin-top:15px}.priority-list{position:absolute;left:100px;top:485px;width:1390px}.priority-list>div{position:relative;border-top:2px solid #172b45;padding:25px 0 25px 86px}.priority-list b{position:absolute;left:0;top:26px;font-size:50px;color:#2851bf}.priority-list h2{font-size:40px}.priority-list p{margin-top:10px;font-size:30px}.marginword{position:absolute;right:100px;top:511px;writing-mode:vertical-rl;font-size:45px;letter-spacing:4px;font-weight:750;color:#2851bf;line-height:1.45}.compact-priorities{margin-top:30px}.compact-priorities p{font-size:29px;margin-top:23px}.compact-priorities b{font-size:21px;letter-spacing:1px;display:block;margin-bottom:6px}.gathering{position:absolute;left:1110px;top:206px;right:100px}.gathering>div{border-top:4px solid #2851bf;padding:23px 0 30px}.gathering h2{font-size:46px;color:#2851bf}.gathering p{font-size:31px;margin-top:13px}.gathering .gather-note{font-size:29px;font-weight:650;border-top:0;background:#f3c653;padding:26px 30px;line-height:1.4}.closing-title{padding-top:67px}.closing-title h1{font-size:113px}.closing-title p{margin-top:30px}.closing-actions{position:absolute;left:100px;right:100px;top:568px;display:flex;gap:65px}.closing-actions>div{flex:1;border-top:3px solid #f3c653;padding-top:23px}.closing-actions span{font-size:25px;color:#f3c653}.closing-actions h2{margin-top:19px;font-size:47px}.closing-actions p{font-size:30px;margin-top:20px}.source{position:absolute;left:100px;bottom:89px;font-size:19px;line-height:1.5;opacity:.9}@page{size:20in 11.25in;margin:0}@media screen{.slide{margin:0 auto 32px;box-shadow:0 6px 40px #0003}}@media print{html,body{background:none}.slide{margin:0;box-shadow:none}}
'''
css += '\n#slide-9 h1{font-size:88px} #slide-9 .copy{padding-top:53px} #slide-9 .compact-priorities{margin-top:22px} #slide-9 .compact-priorities p{margin-top:17px;font-size:29px;line-height:1.3} #slide-9 .compact-priorities b{margin-bottom:5px}\n'
page='<!doctype html><html lang="en"><head><meta charset="UTF-8"><title>EMI — A family that remains</title><style>'+css+'</style></head><body>'+''.join(slides)+'</body></html>'
(O/'emi_astra_family_that_remains.html').write_text(page)
print('Authored',len(slides),'slides:',O/'emi_astra_family_that_remains.html')
Binary file not shown.

After

Width:  |  Height:  |  Size: 778 KiB

+1
View File
@@ -0,0 +1 @@
[{"slide":"slide-1","overflow":[]},{"slide":"slide-2","overflow":[]},{"slide":"slide-3","overflow":[]},{"slide":"slide-4","overflow":[]},{"slide":"slide-5","overflow":[]},{"slide":"slide-6","overflow":[]},{"slide":"slide-7","overflow":[]},{"slide":"slide-8","overflow":[]},{"slide":"slide-9","overflow":[]},{"slide":"slide-10","overflow":[]},{"slide":"slide-11","overflow":[]}]
+27
View File
@@ -0,0 +1,27 @@
"""Export the exact deck tab already opened by agent-browser hermes-visible.
Connects only to the existing canonical Chrome, never launches a browser.
"""
from pathlib import Path
import asyncio, urllib.request, json, base64
import websockets
O=Path('/Users/adolforeyna/brain/exports')
async def main():
tabs=json.load(urllib.request.urlopen('http://127.0.0.1:9222/json'))
tab=next(t for t in tabs if t.get('url')=='file:///Users/adolforeyna/brain/exports/emi_astra_family_that_remains.html')
async with websockets.connect(tab['webSocketDebuggerUrl'],max_size=40_000_000) as ws:
seq=0
async def call(method,params={}):
nonlocal seq
seq+=1; await ws.send(json.dumps({'id':seq,'method':method,'params':params}))
while True:
data=json.loads(await ws.recv())
if data.get('id')==seq:
if 'error' in data:raise RuntimeError(data['error'])
return data.get('result',{})
await call('Runtime.evaluate',{'expression':'document.fonts.ready.then(()=>true)','awaitPromise':True})
bounds=await call('Runtime.evaluate',{'expression':'''JSON.stringify([...document.querySelectorAll('.slide')].map(s=>{const r=s.getBoundingClientRect();return {slide:s.id,overflow:[...s.querySelectorAll('h1,h2,h3,p,li,.smalltag,.source')].filter(e=>{const b=e.getBoundingClientRect();return b.left<r.left||b.right>r.right||b.top<r.top||b.bottom>r.bottom-65}).map(e=>e.textContent)}}))''','returnByValue':True})
(O/'emi_astra_dom_bounds.json').write_text(bounds['result']['value'])
pdf=await call('Page.printToPDF',{'printBackground':True,'preferCSSPageSize':True,'paperWidth':20,'paperHeight':11.25,'marginTop':0,'marginBottom':0,'marginLeft':0,'marginRight':0,'displayHeaderFooter':False})
(O/'emi_astra_family_that_remains.pdf').write_bytes(base64.b64decode(pdf['data']))
print('Exported widescreen PDF with CSS page size; DOM bounds:',bounds['result']['value'])
asyncio.run(main())
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

@@ -0,0 +1,11 @@
EMI / LATIN AMERICA
A FAMILY SENT TO ESTABLISH
ONE VISION. A SHARED CALLING.
Not just
a visit.
A family
that remains.
Establishing the Kingdom and family of God
among every people in Latin America.
VISION & MISSION · 2026
01 / 11
Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

@@ -0,0 +1,20 @@
ROOTED IN MATTHEW 28:18–20
Go.
Make disciples.
Baptize.
Teach obedience.
More than building churches.
More than a short evangelistic visit.
A summary of the source’s reading
of the Great Commission.
EMI / LATIN AMERICA
01 / THE VISION
WHAT WE LONG TO SEE ESTABLISHED
Every nation.
Every people.
The Kingdom and
family of God.
Every ethnos in Latin America—not only the
places and people we already know.
VISION & MISSION · 2026
02 / 11
Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

@@ -0,0 +1,18 @@
EMI / LATIN AMERICA
02 / THE MISSION
HOW WE CARRY THE VISION
Work together.
Establish
what lasts.
A cohesive regional company.
A spiritual family with shared responsibility.
Prayer and shared spiritual life
—
Relationships, fellowship and presence
—
Discipleship and leadership development
—
Practical service and shared resources
—
VISION & MISSION · 2026
03 / 11
Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

@@ -0,0 +1,26 @@
01
Go beyond
the familiar.
Seek new relationships, believers
and works where a foundation
does not yet exist.
02
Build into
people’s lives.
Make disciples. Develop leaders.
Form relationships and
spiritual families.
03
Stay responsible
for the field.
Send people. Develop resources.
Create sustainable structures
and lasting local footholds.
“Own the field”
Long-term commitment to a nation or city. In the spirit of Romans 15:20.
EMI / LATIN AMERICA
03 / FROM CONTACT TO COMMITMENT
Evangelism is essential.
Establishment is the aim.
VISION & MISSION · 2026
04 / 11
Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

@@ -0,0 +1,13 @@
EMI / LATIN AMERICA
04 / CORPORATE FAMILY RESPONSIBILITY
Not only
“my ministry.”
Our family.
Local assignments belong within
one larger Kingdom vision.
Regional families increasingly carry
their regions—not one international
leader carrying the whole work.
“Is the family advancing?”
VISION & MISSION · 2026
05 / 11
Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

@@ -0,0 +1,17 @@
EMI / LATIN AMERICA
05 / GENERATIONAL CONTINUITY
Give the next
generation
room to lead.
Begin while mature leaders can still
coach, affirm and equip.
Moses & Joshua. David & Solomon.
Continuity—not starting over.
Engage younger leaders early.
—
Share wisdom and experience.
—
Give them a visible place to function.
—
VISION & MISSION · 2026
06 / 11
Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

@@ -0,0 +1,15 @@
EMI / LATIN AMERICA
06 / PRACTICAL KINGDOM EXPRESSION
Let good
work travel.
Share people, experience and resources.
Adapt the work—not just copy it.
From the source: Venezuela’s medical work
Explore its adaptation where language,
needs, regulations, permits and
relationships make service possible.
Medicine. Business. Education. Finances.
Professional skills and everyday relationships.
Those who cannot travel carry the same vision locally.
VISION & MISSION · 2026
07 / 11
Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

@@ -0,0 +1,19 @@
Share one understanding.
Agree on the vision and where the family is going.
1
Strengthen relationships.
Connect regional leaders and families—including Chiapas and San Luis.
2
Embrace the vision personally.
Move beyond intellectual agreement toward shared ownership.
3
ALIGN
CONNECT
OWN
EMI / LATIN AMERICA
07 / IMMEDIATE PRIORITIES · ALIGN & CONNECT
START WITH PEOPLE, NOT A PROGRAM
One vision.
Stronger relationships.
VISION & MISSION · 2026
08 / 11
Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

@@ -0,0 +1,18 @@
EMI / LATIN AMERICA
08 / IMMEDIATE PRIORITIES · ACT TOGETHER
Pray regularly.
Show up.
Start clearly.
4 / EXCHANGE
Cross-pollinate ideas, strategies,
people, abilities and resources.
5 / PRAY
Establish regular regional prayer.
6 / STRENGTHEN CHILE
Encourage the brother
already there: he is part of the family, not alone.
7 / FOCUS
Begin with a limited number
of clear priorities—not everything at once.
VISION & MISSION · 2026
09 / 11
Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

@@ -0,0 +1,22 @@
Belong & align
Relationships, family identity,
a shared vision and prayer.
Develop & continue
Leadership formation, generational
transition and the next generation.
Share & go
Strategic collaboration, resources,
evangelism and outreach.
Nations strengthening one another.
Isolated leaders knowing they belong.
EMI / LATIN AMERICA
09 / A MEDIUM- & LONG-TERM OBJECTIVE
LATIN AMERICAN FAMILY GATHERING
More than
an event.
A family
in motion.
A catalyst for what continues
between gatherings.
VISION & MISSION · 2026
10 / 11
Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

@@ -0,0 +1,24 @@
What will we carry
together?
Three purposes for the next regional conversations.
01
Name the
shared vision.
One understanding
of where we are going.
02
Understand
each assignment.
Know what each person
and group is called to carry.
03
Find practical
mutual support.
Prayer. Presence. Relationships.
Abilities and resources.
Adapted from Adolfo Reyna / EMI, “Vision and Mission for Latin America” · Source capture: 22 September 2026.
Illustrations are original symbolic scenes, not depictions of actual people or sites. Priorities reflect the source, not new commitments.
EMI / LATIN AMERICA
10 / THE CONVERSATION BECOMES A COMMITMENT
VISION & MISSION · 2026
11 / 11
+94
View File
@@ -0,0 +1,94 @@
{
"passed": true,
"page_count": 11,
"slides": [
{
"slide": 1,
"width_pt": 1440.0,
"height_pt": 810.0,
"ratio": 1.7777777777777777,
"text_characters": 229,
"text_outside_page": []
},
{
"slide": 2,
"width_pt": 1440.0,
"height_pt": 810.0,
"ratio": 1.7777777777777777,
"text_characters": 435,
"text_outside_page": []
},
{
"slide": 3,
"width_pt": 1440.0,
"height_pt": 810.0,
"ratio": 1.7777777777777777,
"text_characters": 364,
"text_outside_page": []
},
{
"slide": 4,
"width_pt": 1440.0,
"height_pt": 810.0,
"ratio": 1.7777777777777777,
"text_characters": 566,
"text_outside_page": []
},
{
"slide": 5,
"width_pt": 1440.0,
"height_pt": 810.0,
"ratio": 1.7777777777777777,
"text_characters": 315,
"text_outside_page": []
},
{
"slide": 6,
"width_pt": 1440.0,
"height_pt": 810.0,
"ratio": 1.7777777777777777,
"text_characters": 348,
"text_outside_page": []
},
{
"slide": 7,
"width_pt": 1440.0,
"height_pt": 810.0,
"ratio": 1.7777777777777777,
"text_characters": 474,
"text_outside_page": []
},
{
"slide": 8,
"width_pt": 1440.0,
"height_pt": 810.0,
"ratio": 1.7777777777777777,
"text_characters": 451,
"text_outside_page": []
},
{
"slide": 9,
"width_pt": 1440.0,
"height_pt": 810.0,
"ratio": 1.7777777777777777,
"text_characters": 434,
"text_outside_page": []
},
{
"slide": 10,
"width_pt": 1440.0,
"height_pt": 810.0,
"ratio": 1.7777777777777777,
"text_characters": 520,
"text_outside_page": []
},
{
"slide": 11,
"width_pt": 1440.0,
"height_pt": 810.0,
"ratio": 1.7777777777777777,
"text_characters": 665,
"text_outside_page": []
}
]
}
+37
View File
@@ -0,0 +1,37 @@
from pathlib import Path
import json
import fitz
from PIL import Image, ImageOps, ImageDraw
root=Path('/Users/adolforeyna/brain/exports')
out=root/'emi_astra_previews';out.mkdir(exist_ok=True)
doc=fitz.open(root/'emi_astra_family_that_remains.pdf')
results=[]
for i,p in enumerate(doc):
text=p.get_text().strip(); r=p.rect
bounds=[]
for block in p.get_text('dict')['blocks']:
for line in block.get('lines',[]):
for span in line['spans']:
b=fitz.Rect(span['bbox'])
if not r.contains(b):bounds.append({'text':span['text'],'bbox':list(b)})
results.append({'slide':i+1,'width_pt':r.width,'height_pt':r.height,'ratio':r.width/r.height,'text_characters':len(text),'text_outside_page':bounds})
p.get_pixmap(matrix=fitz.Matrix(1,1),alpha=False).save(out/f'emi_astra_slide_{i+1:02}.png')
(out/f'emi_astra_slide_{i+1:02}.txt').write_text(text)
assert len(doc)==11, len(doc)
assert all(abs(x['ratio']-16/9)<.001 for x in results)
assert all(x['text_characters']>100 for x in results)
assert not any(x['text_outside_page'] for x in results)
dom=json.loads((root/'emi_astra_dom_bounds.json').read_text())
assert len(dom)==11 and all(not s['overflow'] for s in dom)
full_text=' '.join(p.get_text() for p in doc)
for term in ['Matthew 28:18–20','ethnos','Romans 15:20','Chiapas','San Luis','Chile','Venezuela','4 / EXCHANGE','5 / PRAY','6 / STRENGTHEN CHILE','7 / FOCUS']:
assert term.casefold() in full_text.casefold(), f'Missing source detail: {term}'
w,h=768,432
sheet=Image.new('RGB',(w*2,(h+44)*6),'#dce1e6');draw=ImageDraw.Draw(sheet)
for i in range(len(doc)):
im=Image.open(out/f'emi_astra_slide_{i+1:02}.png').convert('RGB').resize((w,h))
x=(i%2)*w;y=(i//2)*(h+44)
sheet.paste(im,(x,y));draw.text((x+16,y+h+12),f'SLIDE {i+1:02}',fill='#172b45')
sheet.save(root/'emi_astra_contact_sheet.jpg',quality=94)
(root/'emi_astra_verification.json').write_text(json.dumps({'passed':True,'page_count':len(doc),'slides':results},indent=2))
print(json.dumps({'passed':True,'page_count':len(doc),'slides':results},indent=2))
Binary file not shown.

After

Width:  |  Height:  |  Size: 539 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 649 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 558 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 KiB

Some files were not shown because too many files have changed in this diff Show More