# Daily Notes — 2026-03-02

## MRAV Voice Call — 11:14 AM

**Note from Adner (captured via voice call):**
"Telephoning is now working. We should pat ourselves on the back."

Context: Adner was testing the MRAV voice call system. After multiple tests, confirmed it is working — audio is being received and transcribed successfully.

Status: ✅ MRAV voice plugin confirmed working as of March 2, 2026.

## MRAV — Tasks Captured

**Calendar:**
- Schedule meeting with Erica on Friday at 3pm
- Schedule meeting with Adner and Erica on March 10th at 5pm in the conference room
- Schedule meeting with Adner and Geraldine on March 5th at 9am
- Reminder: Meet with Max on March 5th at 10:30am
- Visit friend Ignacio on March 5th at 6pm ⚠️ IMPORTANT
- Schedule meeting with Adner and Jerry on Wednesday at 10am
- Schedule meeting with Gary on Wednesday at 10am

**Reminder:**
- Call Jerry about the RPA project
- Review the DocuSign template before Friday

---

## MRAV Follow-up Check-in — later

**Note from Adner:**
MRAV is answering properly and everything is going according to plan.

## ✅ Phase 1 COMPLETE — Native voice plugin live (~09:30 EST)
- Call answered with voice — rough quality but functional
- TTS config fix: must nest under `openai: { model, voice }` — flat format silently fails
- Model: gpt-4o-mini-tts, voice: ash
- Gateway hot-reloads on config file write — NEVER use SIGHUP (kills session)
- Tailscale Funnel fix: use `tailscale funnel --bg http://127.0.0.1:<port>` NOT `tailscale funnel 443`

## Next session — remaining work
1. Voice quality tuning (ash rough on telephony — try coral or onyx)
2. Give MRAV context: system prompt needs to inject memory/board/calendar access
3. Re-enable signature verification (skipSignatureVerification → false)
4. Run all 5 Opus tests
5. After tests pass → decommission ECS
- 12:03 EST: ⚪ Session health check — level=OK, tokens=96,296, compactions=0.

## ✅ Phase 2A + 2B COMPLETE (~14:30 EST)
- Phase 2A: call-watcher.py running via system cron every 2 minutes, sends Telegram on call end
- Phase 2B: extraction added — transcript → Claude Sonnet 4.6 → structured JSON → Telegram
- Fix applied: strip markdown fences from Claude response before JSON.loads()
- Anthropic API key stored at: ~/.openclaw/secrets/anthropic.env (600 perms)
- Extractions saved to: ~/.openclaw/voice-calls/extractions/{call_id}.json
- Full pipeline confirmed: call → STT → LLM → TTS → hang up → cron → extract → Telegram

## Phase 2C — next session
- Route extracted items to actual tools: board API (tasks/follow_ups), gog calendar (calendar_events), memory (notes/decisions)
- Handle ambiguous items: Telegram prompt to Adner for clarification before routing

## MRAV Capture — 4:24 PM

**Note (via voice call, Mar 2, 11:13 AM):**
Note for Mr. Anderson: telephoning is now working — we should pat ourselves on the back.
- 18:03 EST: ⚪ Session health check — level=OK, tokens=162,850, compactions=0.

## ✅ Session wrap ~19:35 EST — model routing changes applied
- gpt-4.1-mini added to models.providers (openai) + agents.defaults.models allowlist
- Gmail intake cron (528d84f7) updated: gpt-4o-mini → gpt-4.1-mini
- Heartbeat model set: agents.defaults.heartbeat.model = openai/gpt-4.1-mini
- gog keyring fix confirmed end-to-end: GOG_KEYRING_PASSWORD in gog.env, get_gog_env() wired into call-watcher.py, synthetic calendar routing test passed

## ✅ Phase 2C COMPLETE (~18:30 EST)
- Routing live: task/follow_up → board, calendar_event → gog calendar, note/decision → memory file
- Calendar auth: srvdeskops@gmail.com re-authenticated, GOG_KEYRING_PASSWORD saved to ~/.openclaw/secrets/gog.env
- Atomic board writes confirmed working (temp file + rename)
- Full end-to-end test confirmed by Adner — notifications arrived
- Cron runs every 2 minutes via system crontab — survives gateway restarts
