# Daily Notes — 2026-02-24

## Andrew (Spacebot) — Major Session

### What we did
- **Model chain**: Gemini → MiniMax M2.5 (Fireworks) → **Claude Sonnet 4.6 via Anthropic OAuth** (final)
- **Updated to v0.1.15** (docker pull + recreate on 192.168.1.17)
- **Anthropic OAuth**: ran `spacebot auth login` inside container, credentials at `/data/anthropic_oauth.json`
- **Config** (`/home/johan/spacebot-config.toml` on 192.168.1.17):
  - channel/branch/worker = `anthropic/claude-sonnet-4-6`
  - cortex/compactor = `anthropic/claude-haiku-3-5`
- **Fireworks key**: `fw_RVcDe4c6mN4utKLsgA7hTm` valid (older key; `fw_TGADpSki7zak4K9JxPzbXU` expired)
- **IDENTITY.md ingested**: corrected HA IP (.252 not .16), Andrew not James, tool-use rules
- **agent_profile DB**: changed display_name to 'Andrew' — but cortex keeps regenerating as "James ⚡" (200 old memories outweigh new ones)

### Known issues
- **Worker dispatch broken**: channel calls `reply()` and stops — never dispatches workers. Andrew says "On it" but nothing happens. Affects all multi-step tasks.
- **Cortex profile regeneration**: reads existing memories, writes "James ⚡" back. Will self-correct as Andrew memories accumulate.
- **Banner bug** (being fixed in PR): "No LLM provider configured" shows even with valid OAuth.

### PR #193 — https://github.com/spacedriveapp/spacebot/pull/193
Two fixes:
1. Settings dialog pre-populates model field from active routing config (not hardcoded default like `llama-v3p3-70b-instruct`)
2. `get_providers()` now checks `anthropic_oauth.json` for Anthropic — OAuth counted as "configured"

Review feedback addressed:
- `find(a => a.id === 'main')` instead of `[0]` for default agent
- `useEffect` to sync model input when config loads after dialog opens
- Rebased on latest main (had accidentally bundled OpenAI device-code flow changes)
- `jamiepine` (maintainer) said "very helpful change"

### Architecture observation
Johan: "The foundation is a LOT better than OpenClaw." Rust, true concurrency, Lance vector memory, proper PKCE OAuth. Johan wants it to work. Revisiting 2026-03-03.

### GitHub PAT
`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` — 30-day, repo scope, johanjongsma account. Expires ~2026-03-26.

## Weather
St. Pete tonight: **9°C (48°F), clear, 27 km/h wind** — cold. Andrew hallucinated 84°F with MiniMax M2.5.

## Spacebot Monitoring
Added to HEARTBEAT.md: weekly check for new Spacebot releases, specifically worker dispatch fix. Don't update Andrew container until Johan says so.

---

## Night Shift Session (10:30pm – ~3:30am)

### OpenClaw updated to 2026.2.23
- Updated from 2026.2.22-2
- Key changes: Kilo Gateway provider, Moonshot/Kimi vision+video, compaction overflow recovery, exec hardening, ACP/OTEL secret redaction, `allowFrom` now ID-only (but `"*"` still required for `open` dmPolicy)
- **ClawHub malware incident** disclosed in this release: #1 downloaded skill was SSH key stealer + reverse shell. ~20% of marketplace skills malware. 1,184 bad skills. We're safe — only use built-in + manual skills.
- **SkillSMP.com** — third-party marketplace trying to fill the ClawHub gap. Treat all third-party skill marketplaces as hostile.
- **Patch reapplied**: deleted transcript indexing now in `query-expansion-*.js` (was `sqlite-C54NeA1C.js` in old version)
- **Scope preservation patch**: no longer needed — `dangerouslyDisableDeviceAuth` not in our config, scopes intact

### Google Antigravity key — DEAD
- Token expired **Feb 19**, refresh fails — Google banned/revoked the Antigravity OAuth app
- Affects: Gemini via `google-antigravity` provider in OC sessions
- **inou is fine** — inou uses a direct Gemini API key (`AIzaSyAsSUSCVs3SPXL7ugsbXa-chzcOKKJJrbA`) which works (200)
- Johan: "I don't mind" — not a priority

### iOS / iPhone OC status
- Internal preview only, not publicly distributed
- Works as a node (camera, screen, location, voice wake)
- 2026.2.21 had "iOS/Watch polish", so it exists and works
- Third-party "GoClaw" on App Store (not official)

### Arcee Trinity-Large-Preview (OpenRouter, free)
- 400B MoE, 13B active params per token (4-of-256 expert routing)
- #1 most popular model for OC on OpenRouter during preview
- 128k context, agentic-capable, free during preview
- Worth watching when non-preview Trinity-Large drops

### DealRoom — Misha's Feature Requests
- Claude Code agent ran, implemented most of spec (973 insertions, 11 files)
- Committed and pushed to Zurich: `24f4702`
- **3 gaps identified after review:**
  1. **Per-group folder visibility checkboxes** (spec 2.e.i.2) — MISSING. Groups have name/role/email but no folder checkbox tree.
  2. **Saved folder structure templates** (spec 2.f.i.2.i) — MISSING. Can't name/save/reuse folder layouts.
  3. **Auto-assign review step** (spec 3.b.2) — fires automatically, no user review UI before commit.
- **TODO**: spawn another agent to fix these 3 gaps (deferred — Johan sleeping)

### inou Labs / LOINC matching — BUG OPEN
- Johan: "pretty charts not showing in Labs, LOINC matching not working"
- Root cause partially traced:
  - `buildLabRefData()` reads `data["loinc"]` from lab entries
  - Production DB (192.168.1.253:/tank/inou/data/inou.db): 0 entries have loinc in data JSON
  - `Normalize()` says "all entries already normalized" — because `SearchKey2` is set for all entries
  - But `data["loinc"]` is never set (maybe normalize ran before that field was added, or Gemini returned empty LOINC codes)
  - Gemini API key IS valid (200 response confirmed)
  - reference.db has 448 lab_test + 1551 lab_reference entries — reference data is there
  - Entry data is encrypted — can't inspect raw from SQLite
- **Next step**: debug normalize on prod with a test run that forces re-normalization; or fix buildLabRefData to fall back to e.SearchKey (which is also set to the LOINC code by normalize)
- **TODO**: fix this when Johan wakes up


---

## Nightly Maintenance (21:00 ET)

### OS Updates
- `apt upgrade` ran — 2 packages upgraded (details: security/ubuntu noble updates)
- Kernel 6.8.0-101 available — **needs reboot** (currently on 6.8.0-100)

### Claude Code Update
- Updated: 2.1.50 → **2.1.53** (system install via `sudo npm install -g`)
- Two claude binaries existed: /usr/bin/claude (root, now 2.1.53) and ~/.npm-global/bin/claude (2.1.53)

### OpenClaw
- Already up to date: **2026.2.23** ✅ (no update needed)

### Session Cleanup
- Orphaned .jsonl files removed: **13**
- Cron :run: keys removed from sessions.json: **76**
- sessions.json keys remaining: 40

### Working Context
- Updated memory/working-context.md with today's session summary
