# MEMORY.md - Long-term memory (curated)

## Adner - working preferences
- Primary environment: OpenClaw web Chat app is the "deep work" thread where conversations can continue over time.
- Telegram: still desired for faster on-the-go conversations, but not the main place for long, multi-topic work.
- Preference: when we have substantive conversations on the Chat app, capture/append key takeaways into persistent memory so we don't double-cover ground or lose shared context.
- Conversation flow preference (especially on Telegram/voice): **ask clarifying questions first**, then write the longer drafted message once the inputs are confirmed (avoid wordy chats before questions are answered).
- Email draft preference: if the intent is to email someone (e.g., Maysa), default to sending Adner an email draft to his work address for review; if unclear, ask.
- Email drafts workflow: whenever Mr Anderson creates an email draft, **send it from srvdeskops@gmail.com to Adner's work email (adner.cruz@bertelsmann.com)** for review unless Adner explicitly asks for a different recipient (e.g., personal). Personal email: adner.cruz@gmail.com.
- **HARD RULE - never compress out:** Mr Anderson cannot email anyone except Adner. All email drafts go to Adner only. Adner sends all emails to external recipients himself. No exceptions.
- Draft instructions: when Adner names recipients (e.g., “email Nealan”), he means the draft should address that person, not CC them. Only add CC if he explicitly asks.
- Verizon port-out email template saved at `workspace/templates/verizon_port_out_email_template.txt`.
- Verizon port-out rule: Transfer PIN and device purchase lines are variable; do not assume/include them unless Adner explicitly provides them for that specific request.
- Model preference: Verizon/telecom draft-email tasks should always be executed via Grok.
- If any instruction is ambiguous/unsure, ask Adner a clarifying question before drafting or sending.
- Shipping rule (computers): whenever shipping a computer, default service level to **Priority Next Day** and include **Signature Required**.
- Podcast-specific rule: anything related to the podcast should be emailed to Adner's personal email (adner.cruz@gmail.com) by default unless Adner explicitly requests work email.
- Email intake workflow: when ToAssistant/Gmail intake emails arrive, **summarize/extract actions and ask Adner any clarifying questions before I execute actions** (board moves, replies, requests to other teams).
- Board mapping rule (2026-03-17): "Due Soon" maps to the Action Board **Due Soon** column (internal id: `urgent`), not Waiting. "Waiting on Others" is only for items where Adner already acted and is blocked on someone else.
- Board lane naming rule (2026-03-23): treat Action Board statuses as **columns/lanes** and follow Adner’s exact visible lane titles verbatim (e.g., Due Soon, Do Now, Waiting on Others, Done Recently). Do not translate/rename unless Adner explicitly asks or lane titles change.
- Board scope rule (2026-03-23): when Adner says "add to boards," it means all three boards: **Action Board + Kanban + Dashboard**.
- Governance rule (2026-03-23): do not introduce or switch a "single source of truth" workflow unless Adner explicitly approves it.
- Board title hygiene rule (2026-03-17): strip Gmail label/prefix like `ToAssistant:` from board card titles; use the clean email subject only.
- Email subject normalization rule (2026-03-17): for card titles created from forwarded/replied emails, strip leading `FW:`, `Fwd:`, and `RE:` prefixes (including repeated chains), then use the clean subject.

## Adner - executive communication / leadership operating style
- Career intent: operate and be perceived as an executive leader; trajectory IT Director → Senior Director, with a strategic focus on AI transformation.
- Core operating principles (Executive Operating System): decision framing, explicit ownership boundaries, leverage ("who not how"), risk/COI awareness, clear recommendations, and building repeatable assets/systems (not one-off tasks).
- Communication constraints: maintain Adner's natural style-warm, human, tactful, not robotic or dry-while carrying clear leadership intent in every mode (exec/chill/operator).

## Blue Prism RPA POC (BINC)
- IT Lead: Adner. Hosting/infra: Arvato Systems GmbH. RPA vendor: Arvato Connect.
- Erika Kirchner: Chief People Officer / Head of HR — Jerry's boss. Originally identified as executive sponsor for the HR pilot.
- Jerry Laroche: Director of HR.
- POC scope: non-production, UI automation only, no API integrations, 1 app server + 1 SQL server + 2 desktops. Infrastructure must go through Arvato Systems — cannot be provisioned internally.
- Feasibility confirmed by Dominik (Arvato). Cost confirmed: ~$1,900 one-time setup, ~$2,200/month run rate (~$24K/year after setup), ~3-4 week lead time once approved.
- DocuSign is a clean interim complement — handles intake/approval; Blue Prism handles post-approval automation. Not in conflict.

**Meeting: Feb 26, 2026 (moved from Feb 25 — Jerry was on PTO)**
- Attended by: Adner, Erika Kirchner, Jerry Laroche
- Key outcome: decision NOT made. Pending further assessment.
- Jerry's view: $24K/year is NOT worth it for background check automation and new hire emails alone. Would become viable if expanded to benefits administration and other HR workflows.
- POC currently scoped to: background check automation + new hire emails only.
- Technical limitations surfaced: not true AI — advanced macro/process replication. Manual intervention required for errors (e.g., unreadable handwriting). Form changes require Arvato Connect reconfiguration; additional hours billed beyond maintenance allotment.
- Cost sharing opportunity: other teams (Josh's team, Cruz's team, Tax) planning similar initiatives and would use the same infrastructure — no additional base costs for expanding to other departments. This is the key economic lever.
- Erika's next step: discuss with department heads at March 5th meeting to assess other departments' automation plans and explore cost-sharing.
- Jerry and Adner to meet again for detailed process review.
- **Post-meeting email exchange (Feb 26):** Erika flagged a discrepancy — Adner said verbally there'd be no incremental costs, but his Feb 12 email said "may be incremental depending on scope/usage." Adner clarified via email: no duplicate BASE infrastructure costs for adding departments; incremental costs only if usage grows enough to require more capacity or a move to Production. Simply adding another team triggers no new setup cost. Erika replied: "Thanks for clarifying, Adner." — one line, no decision, no next steps.
- **Current status (as of March 12):** Decision still pending. March 5th Erika dept head meeting may or may not have occurred — outcome unknown. Erika has not responded since Feb 26. Adner is not following up proactively — interpersonal dynamic is strained (Erika rubs him the wrong way; he avoids her when possible but has to work through it). Do not assume approval has been given.

## Product/Project context
- (Feb 2026) Chat app improvements over v1.0: multiple conversation threads are a major win; still more work to do.

## Adner - board URLs (Tailscale Serve)
- Action Board: https://mr-anderson-wsl.tail98ac3b.ts.net/action/
- Kanban: https://mr-anderson-wsl.tail98ac3b.ts.net/kanban/
- Dashboard: https://mr-anderson-wsl.tail98ac3b.ts.net/dashboard/

## DocuSign Demo Templates (built 2026-02-22)
- Non-Employee IT Access Form: `62d150fd-8b88-4413-a71b-4df06a2cc0c5`
- New Starter IT Access Form: `6eeb8263-8d88-4bd7-a4f2-6342b84fc5c2`
- Non-Employee IT Agreement (DOCX): `a3674be2-e232-4258-8571-71cdaf3b93c4`
- Build script: `workspace/docusign/build_templates.py`
- Agreement build script: `workspace/docusign/build_agreement_template.py`
- Auth: JWT/RSA, demo env (`demo.docusign.net`), account `45807776`
- Status: built, pending end-to-end test + review
- Note: always delete + recreate (never PUT update) - PUT accumulates tabs instead of replacing them

## Oracle VPS - LLM Benchmark Results (March 2026)
- VPS: 150.136.218.171 | User: ubuntu | SSH key: ~/.ssh/oracle_vps
- Benchmark completed ~March 5-6, 2026. Results:
  - **Grok Fast (xAI)** - Winner. Spot on, fast, cheap. Recommended for structured/routine tasks.
  - **Gemini 2.0 Flash (Google)** - Cheap but not great quality. Not recommended.
  - **GPT-5 Nano (OpenAI)** - Could not process the benchmarks at all. Ruled out.
- API keys for Grok (and others) already configured on the VPS
- Decision: Route BMC time tracking daily logging to Grok Fast (cheap + accurate for structured tasks)

## Model routing (as of 2026-03-12)
- **CORE RULE:** Sonnet handles high-level decisions only. All execution work (BMC parsing, board updates, email drafting, card moves, routine tasks) must be passed to Grok 4 Fast.
- Gmail intake cron (528d84f7): model = `xai/grok-4-fast-non-reasoning`
- Heartbeat: `agents.defaults.heartbeat.model = xai/grok-4-fast-non-reasoning`
- BMC parsing pipeline: Grok 4 Fast on Oracle VPS (pipeline being built 2026-03-12)
- Primary session model unchanged: `anthropic/claude-sonnet-4-6`
- xAI registered as provider in openclaw.json (baseUrl: api.x.ai/v1, model: grok-4-fast-non-reasoning, alias: grok-fast)
- GPT-4o-mini and GPT-4.1-mini fully replaced by Grok 4 Fast for all task/operational work

## BMC Chargeback Time Tracking (2026 Initiative)
- Mandatory corporate initiative: Jan 1 - Apr 30, 2026. Every BHI Group employee logs daily tasks for chargeback cost allocation across Bertelsmann entities.
- File: `20261301_BINCoBMC_Time_Tracking_vupdated.xlsx` | Sheet: `TimeEntry` | Name: Cruz, Adner
- MrAnderson's role: parse Adner's daily recaps → stage in 0.5hr blocks → confirm → log. NEVER log without confirmation.
- Operating brief: `workspace/bmc/BMC_TRACKING.md`
- Key contacts: Sarah Born (sarah.born@bertelsmann.de), Karlo Oehring (karlo.oehring@bertelsmann.de)
- Pending: extract TaskName + Entity dropdown values from spreadsheet; ~10 weeks of potential backfill (Jan 1-Mar 8)
- Treat as a standing daily obligation - prompt Adner at EOD if no recap received
- **Hard end date: April 16, 2026** - do not log any entries past this date
- **2026-03-18 rule:** All board cards worked during the last 3 days should be included in the BMC project/time-tracking scope.
- **Exception:** Morpheus and Trinity build/setup work does **not** count toward BMC project/time-tracking.

## Mailroom / Shipping Rules (standing)
- **Signature Required**: Only when shipping a laptop or equipment TO a personal/home address. Ensures the recipient signs for it and it's not left by the courier.
- **No Signature Required**: When a package is returning TO Adner at the office (1745 Broadway, 20th Floor, NY). It's safe - no signature needed on inbound returns.
- **FedEx service level**: Always Priority Next Day unless otherwise specified.
- **Return label weight**: Standard laptop return = 9 lbs. Weight goes INSIDE the recipient block (after Cost Center), not as a separate section.
- **Return address in label emails**: Never repeat Adner's office address - always use "Return label addressed to me here at the office."
- **Mailroom greeting**: Always "Hi Team," — it's a team, not an individual.
- **Closing signature**: Omit from mailroom emails — Outlook auto-generates. Close with "Thank you," only.
- **Mailroom return label template** (canonical, Adner-approved 2026-03-10): Name / Address / Phone / Cost Center / Return Label Weight / Service — all in one block. No contents, no packing materials, no signature note unless Adner specifies.
- **No confirmation/tracking request line**: Never ask the mailroom to confirm or provide tracking. They always include it in their response. Asking every time feels robotic. End at "Return label addressed to me here at the office." then "Thank you,"
- **Opening line descriptor**: Use "employee" not "associate." Or drop the descriptor entirely ("Please prepare a return label for the following.").
- **Cost center**: Always required in the address block. If Adner does not provide it, ASK before drafting. Format: "Cost Center: XXXX" on its own line under the phone number.
- **Subject line format**: "FedEx Label and Materials Needed - Equipment Return for [Name]"
- **Mailroom recipient**: PRH-mailroom (need full email - confirm with Adner if unknown)
- **Address block format** (recipient section - Cost Center here, NO weight):
    [Name]
    [Street Address]
    [City, State ZIP]
    Phone: [number]
    Cost Center: [XXXX]
- **Return Label Weight**: Goes AFTER the return address block (not in recipient block). Format: "Return Label Weight: 9 lbs."
- **Email greeting rule**: Always open with "Hi [Name]," - not just "[Name]," alone. Apply to all email drafts across both models.
- **BHI** = Bertelsmann Digital Health / Healthcare Investment unit (use "BHI" as shorthand in chargeback/IT service context)
- **Email benchmark score** (as of 2026-03-10): Grok 4 Fast 3, GPT-4o Mini 2 - Grok leads; Stephan/Extedo round was default win (models were indistinguishable)

- **Email structure order**:
    1. Opening line
    2. Recipient address block (Name, Address, Phone, Cost Center)
    3. Materials list (bullet points)
    4. Return label address block (Adner Cruz, Bertelsmann Inc., 1745 Broadway 20th Floor, NY 10019)
    5. Return Label Weight: 9 lbs.
    6. Confirmation request line
    7. Close
- Adner used Grok 4 Fast version - confirmed it as the preferred template going forward
- Rule applies to all mailroom email drafts going forward.

## Cost Centers by Entity
- **Versidi, Inc.**: Cost Center **8297** - applies to all Versidi employee requests
- **BINC general**: Cost Center **1000** (used for Renee Mohan return)
- **Philip DeFalco offboarding**: Cost Center **1300**

## Phil DeFalco Offboarding - Mailroom specifics (2026-03-23)
- For Phil return shipment requests: **No signature required**.
- Materials request should include **1 box total** (laptop + accessories only; monitors not being returned).
- Bubble wrap, tape, and return labels remain standard required materials.
- Workflow: collect Phil shipping/contact details first, then prepare instructions and route the draft generation through **Grok** by default.

## Always-store list (stable references)
When Adner says "save this" (or when we create/confirm something that should survive updates), capture it here.

- URLs (Tailscale Serve, dashboards, admin consoles)
- Key repo paths and service names
- Recurring cron job IDs that matter
- Standard email draft templates / "canonical" messages
- Important reconciliations/decisions (e.g., allocation splits sent to Finance)

## MRAV / Voice Plugin - Key References
- **Adner's actual calling number (mobile)**: `+16464577788` - confirmed via Twilio logs 2026-03-02; use this in allowFrom
- **Adner's secondary number**: `+16469450940` - possibly Google Voice; NOT the number used for MRAV calls
- **Twilio MRAV number**: `+19145945556`
- **Voice webhook (Tailscale)**: `https://mr-anderson-wsl.tail98ac3b.ts.net/voice/webhook`
- **Plugin port**: `3334`; streaming path: `/voice/stream`
- **ECS safety net**: still running (~$25/month) - do not decommission until native plugin passes all 5 tests

## Oracle VPS (Trinity's VPS)
- Host: 150.136.218.171 | User: ubuntu | SSH key: ~/.ssh/oracle_vps
- Python 3.12 (PEP 668) - use `pip3 install --break-system-packages` for global installs
- Installed (Mar 5): openai 2.24.0, google-generativeai 0.8.6
- Purpose: LLM benchmarking / personal projects; also hosts Trinity

## The Triad — AI Agent Infrastructure

### Mr Anderson (me)
- Runs on Adner's Windows machine (WSL Ubuntu-22.04)
- Workspace: `/home/isthekid/.openclaw/workspace`

### Trinity
- VPS: `150.136.218.171` | SSH: `ssh -i ~/.ssh/oracle_vps ubuntu@150.136.218.171`
- OpenClaw config dir: `/home/ubuntu/.openclaw-trinity/`
- Workspace dir: `/home/ubuntu/.openclaw/workspace/` (IDENTITY.md confirms "Trinity")
- Systemd service: `trinity-openclaw.service` (user-level)
- To upgrade: `sudo openclaw update --yes` then `systemctl --user restart trinity-openclaw.service`

### Morpheus
- VPS: `163.192.96.217` | SSH: `ssh -i ~/.ssh/morpheus_vps ubuntu@163.192.96.217`
- Systemd service: `morpheus-openclaw.service` (user-level)
- To upgrade: `sudo openclaw update --yes` then `systemctl --user restart morpheus-openclaw.service`

### Upgrade procedure (all three agents)
1. SSH directly from Mr Anderson's session — subagents are blocked by exec policy for SSH
2. `sudo openclaw update --yes` — takes ~2-3 min per instance
3. `systemctl --user restart <name>-openclaw.service`
4. Verify: `openclaw --version` + `systemctl --user status <name>-openclaw.service`
- QA scenario pack cache error during update is non-critical — safe to ignore
- Do NOT count Trinity/Morpheus upgrade work toward BMC time tracking
