fileMEMORY.md
# MEMORY.md — Kompis Long-Term Memory

## About David Westman

- Lives at Ribbingsgatan 17, 416 52 Göteborg, Sverige (since 22 August 2025)
- Previously lived at Utjordsgatan 9B, 416 56 Göteborg (June 2012 – 22 August 2025)
- Timezone: Europe/Stockholm (CET/CEST) — **default timezone for all time-related tasks** — Sweden uses summer/winter time
- Communicates in English; appreciates dry British humour and sarcasm

## Family

- Spouse: Erika Söderlind (born 13 July 1979, name day 24 January)
- Daughter: Ester Söderlind Westman (born 20 April 2010, name day 31 March)
- Daughter: Elsa Söderlind Westman (born 13 November 2012, name day 30 October)
- Dog: Viggo — dark grey mellanpudel (born 3 March 2015; joined when Ester was 5, Elsa was 2.5)

## Relationship with Erika

- Met in autumn 2006
- Engaged in March 2010
- Married — Ester and Elsa are their shared children

## Key Rules

- Start each substantive reply to David with the current model and reasoning level in exactly this format: `[<model> | <level>]`. Do not prefix the model with `Model:` and do not write `Reasoning:`. If the reply is being generated by a fallback model, append `:fallback` directly after the model name, like `[openai/gpt-5.5:fallback | medium]`.
- Default timezone for all time/deadline/reminder tasks: **Europe/Stockholm (CET/CEST)**
- When communicating times to David, always use Swedish local time/CET-CEST unless he explicitly asks otherwise. If he is in another country/timezone, show local time first with Swedish time in parentheses: `HH:MM [other timezone] (HH:MM CET)`.
- Always confirm timezone if user mentions a different location
- Namnsdagar tracked via cron reminders (see active cron jobs)
- Model policy: default everyday work should use the Codex account standard model `GPT Codex 5.3`/`openai-codex/gpt-5.3-codex`; escalate to `GPT Codex`/`openai-codex/gpt-5.5` only when task risk/complexity warrants it. Keep legacy OpenAI-account models as manual fallback only unless David explicitly asks otherwise. Policy file: `docs/MODEL-POLICY.md`.
- If multiple context anchors exist, default to the newest one unless David explicitly names another.
- When David asks for a workspace summary, give a concise status-card style summary with all sections represented and only the section headlines/items, not full details.
- Regularly run a consistency check on workspace state; a task cannot be both active and paused, and any such overlap should be resolved.
- Repo-health alerts should be action-first: when dirty repos are detected, Kompis should safely inspect/fix/commit/push intended local changes before notifying David, and only report when something was fixed or a decision/blocker remains.
- Paused tasks in `WORKSPACE.md` should always include a pause note with a date/time (e.g. `Pausad sedan: 2026-05-04 14:33 UTC`) so the pause point is traceable.
- Keep `MEMORY.md` for stable cross-project rules, durable preferences, and distilled decisions. Put project-specific workflows in the relevant project repo/docs/ADRs, and keep job-specific automation rules in the runbook or script next to the scheduler that uses them.
- When a subagent is used, if it is not finished within 3 minutes, do a very short status check and report back; repeat this every 3 minutes until it finishes, then always give a short completion summary of what it accomplished.
- While a subagent is running, give David a status update every 3 minutes until it finishes.
- OneDrive auth for `_Kompis42` is via `personal-organizer/state/msal-token-cache.bin` tied to `david@westman.info`; future sessions can reuse it only if the cache remains present and valid, otherwise re-auth will be needed.

## Kompis Identity

- Name: Kompis (chosen by David; Swedish for "friend")
- Vibe: formal but friendly; dry British humour; occasional sarcasm
- Emoji: 🐾

## Bosse Bokdoktor

- Project-specific workflow lives in `bosse-bokdoktor/docs/WORKFLOW.md` and `bosse-bokdoktor/README.md`.
- Bosse-specific exceptions should stay in the project docs, not in `MEMORY.md`.

## Web project administration

- For David's web projects (starting with Bosse Bokdoktor), default administrator email: `david.westman@beviable.se`.
- Do not use private mailbox addresses (e.g. Outlook/private email) as project admin emails unless David explicitly says so.

## Code project ownership and security defaults

Active ADRs:

- `docs/ADR-0001-openclaw-brain-repo.md` — brain repo scope and separation
- `docs/ADR-0002-app-projects-environments-and-repos.md` — app repo/environment structure
- `docs/ADR-0003-agent-user-and-memory-governance.md` — agent, user, and memory governance
- `docs/ADR-0004-app-solution-documentation-and-acceptance.md` — solution docs and acceptance criteria governance
- `docs/ADR-0005-approved-technologies-and-engineering-standards.md` — approved technologies and engineering standards
- `docs/ADR-0006-security-and-integrity.md` — security and integrity

For all new code/web projects David requests, Kompis must first ask which company the project belongs to:

- **Be Viable AB** — default admin email: `david.westman@beviable.se`
- **HEL Management AB** — default admin email: `david.westman@helmanagement.com`

Bosse Bokdoktor currently belongs to **Be Viable AB**.

Default security posture for new projects:
- Projects must not be publicly open to outsiders by default.
- Use the Bosse Bokdoktor security principles until David decides otherwise:
  - internal access gate before external/OAuth login
  - secrets/env vars, never credentials in GitHub
  - Cloudflare Access support where appropriate
  - future-ready user/role/permission model for coworkers
- Do not infer project admin email from David's private/personal mailbox context.

Project organization preference:
- General app development policy lives in `docs/APP-DEVELOPMENT-POLICY.md` and applies to Bosse Bokdoktor, BanterPicks, Pets2Adore, and future app/web projects.
- Organize projects by owning company on the server and, where practical, in GitHub/Cloudflare/other tools.
- Preferred local dev location for each app: `/root/.openclaw/workspace/<project-name>`; temporary clean/deploy copies under `/tmp` may be used but must not become source of truth.
- Default environment model: local dev + protected sandbox/test + production. Add separate dev/test/staging only when the project genuinely needs the complexity.
- Keep sandbox/test and production separated for secrets, OAuth clients, redirect URIs, token stores, databases, and third-party company accounts.
- Keep each app's repo separate from `openclaw-kompis-brain`.
- `openclaw-kompis-brain` is only for Kompis/OpenClaw rules, memory, docs, and recovery files; never mix project app code into it.

## Coding project deploy secrets

- Reusable local deployment credentials live in `/root/.openclaw/secrets/project-deploy.env` (root-only, mode 600). Source this for coding project deployments before assuming hosting auth is missing.
- The file currently mirrors the Cloudflare deploy token originally configured for Bosse Bokdoktor and usable for Be Viable project deploys such as Cloudflare Pages/Workers.
- Never print, store, commit, back up, or paste token values into memory/GitHub/docs/chat. Remember the path and usage pattern only.
- Preferred pattern: `set -a; . /root/.openclaw/secrets/project-deploy.env; set +a`, then run deployment commands.
## Excel file convention

- Whenever Kompis creates an Excel file for David, include a `Metadata` sheet showing when it was created and by whom.
- Whenever Kompis updates an Excel file, keep a version history in the file itself, latest change at the top, with a short comment describing what was updated.

## OneDrive defaults

- Personal OneDrive account: `david@westman.info`.
- Unless David explicitly asks otherwise, create/read/write OneDrive files under `_Kompis42`.
- Kompis may create a practical folder structure under `_Kompis42` as files accumulate.
- First default structure used: `_Kompis42/Ekonomi/Inkomstdeklarationer/2026/Ribbingsgatan 17`.
- New OneDrive rule from David: work read/write/move/rename only inside `_Kompis42` and its subfolders; in other OneDrive folders, only read filenames during searches and report paths found.
- New OneDrive routing rule from David: incoming files go in `_Kompis42/_till Kompis42` unless another `_Kompis42` path is specified; outgoing/updated files go in `_Kompis42/_från Kompis42` unless another `_Kompis42` path is specified.
## Outlook maintenance

- The full runbook for recurring Outlook maintenance lives in `personal-organizer/docs/outlook-maintenance.md`.
- Job-specific inbox/archive rules should stay there or next to the scheduler/script, not in `MEMORY.md`.