diff --git a/memory/2026-02-25.md b/memory/2026-02-25.md index 9b25145..8ca7fb2 100644 --- a/memory/2026-02-25.md +++ b/memory/2026-02-25.md @@ -44,3 +44,60 @@ Claude Code agent built and deployed in ~12 minutes. Commit: `9cbd6db` - All 4 tables live in prod DB - Extraction worker confirmed running (2 goroutines in logs) - Full template changes: status pills, assignee badges, AI match panel, statement modal, assignment rules panel + +--- + +## docsys — OCR & UX Improvements (daytime Feb 25) + +### docproc killed +- A previous agent built a whole new Go service (`/home/johan/dev/docproc/`) at port 9900 with watcher/processor/API — when Johan had only asked for a delete button. +- Service stopped, disabled, unit file deleted, source directory removed. +- Also: docproc was using the expired Fireworks key `fw_TGADpSki7zak4K9JxPzbXU`. + +### Delete button added to category list view +- Trash icon now in every row of `/browse/` page +- HTMX confirm → DELETE request → row removed. No page reload. +- Commit `193d88a` → pushed to zurich:docsys.git + +### OCR model upgrade: kimi-k2p5 → qwen3-vl-30b-a3b-instruct +- Johan requested: `accounts/fireworks/models/qwen3-vl-30b-a3b-instruct` +- Works first try on Russian financial documents — no retry/reasoning blowup +- ~40s/page, correct output, first try. +- Test: N-able Technology letter (Russian) → "N-able Technology Exchange Rate Loss Explanation Feb 2026" ✅ +- Johan: "waow. it's soo fast. and it nailed the handwriting" +- Commit `4970157` + +### Title prompt improved +- Old: required just a "short English title" — produced generic "Financial Report" +- New: requires specific title including sender + topic + date +- Example output: "N-able Technology Exchange Rate Loss Explanation Feb 2025" (vs "Financial Indicators Report") +- Commit `1b4c82a` + +### Vocabulary hints added for handwriting +- Issue: model consistently read "Jongsma" as "Jongoma" — no prior for the word +- Added hints to OCR prompt: "Jongsma", "Johan", "Tatyana", "St. Petersburg, FL" +- Commit `8337388` + +### Fireworks valid key +- `fw_RVcDe4c6mN4utKLsgA7hTm` = valid +- `fw_TGADpSki7zak4K9JxPzbXU` = EXPIRED — never use + +--- + +## Git Audit (evening) +- **docsys**: 1 unpushed commit (fixed — all commits pushed) +- **inou**: 34 uncommitted files — OPEN. Need to review and commit. + +--- + +## News / External Events +- **NVDA earnings beat**: Q4 FY26 revenue $68.13B (+73% YoY), EPS $1.62 vs $1.53 est. Q1 FY27 guidance: $78B vs $72.6B consensus. Stock +4% AH. Jensen: customers "racing to invest in AI." +- **OpenClaw 2026.2.24 released**: Stop phrases in 10+ languages, typing indicators, PowerShell 7, 30+ security fixes. +- **Qwen3.5 model series**: Alibaba dropped open-source Qwen3.5-Flash/35B/122B/27B. ~Sonnet 4.5 level, runs on 32GB RAM. + +--- + +## Nightly Maintenance (9:00 PM ET) +- OS updates: 0 upgraded (2 deferred via phasing) +- Claude Code: Updated npm-global to 2.1.59 (system /usr/bin/claude still 2.1.53 — separate install) +- OpenClaw: Already up to date at 2026.2.24 diff --git a/memory/claude-usage.db b/memory/claude-usage.db index 453bdbc..1881f87 100644 Binary files a/memory/claude-usage.db and b/memory/claude-usage.db differ diff --git a/memory/claude-usage.json b/memory/claude-usage.json index 01e703c..c4206a9 100644 --- a/memory/claude-usage.json +++ b/memory/claude-usage.json @@ -1,9 +1,9 @@ { - "last_updated": "2026-02-25T23:00:01.753985Z", + "last_updated": "2026-02-26T05:00:02.086139Z", "source": "api", - "session_percent": 9, - "session_resets": "2026-02-26T03:00:00.707229+00:00", - "weekly_percent": 55, - "weekly_resets": "2026-02-28T19:00:00.707247+00:00", - "sonnet_percent": 65 + "session_percent": 6, + "session_resets": "2026-02-26T08:00:01.037647+00:00", + "weekly_percent": 57, + "weekly_resets": "2026-02-28T19:00:00.037671+00:00", + "sonnet_percent": 67 } \ No newline at end of file diff --git a/memory/heartbeat-state.json b/memory/heartbeat-state.json index 2ef5a9b..3bcf399 100644 --- a/memory/heartbeat-state.json +++ b/memory/heartbeat-state.json @@ -5,7 +5,7 @@ "weather": 1771942030, "briefing": 1771597876, "news": 1771597876, - "claude_usage": 1772057237 + "claude_usage": 1772078502 }, "lastBriefing": "2026-02-25T22:06:25.174833+00:00", "lastWeeklyDocker": "2026-02-22T08:33:05.950745+00:00", @@ -14,7 +14,7 @@ "lastDocInbox": "2026-02-25T22:01:42.532628Z", "lastTechScan": "2026-02-25T22:05:06.010Z", "lastMemoryReview": "2026-02-25T09:06:00.000Z", - "lastIntraDayXScan": "2026-02-25T22:05:41.000Z", + "lastIntraDayXScan": "2026-02-26T04:03:00.000Z", "lastInouSuggestion": "2026-02-25T22:05:38.000000+00:00", - "lastEmail": 1772057085 + "lastEmail": 1772078502 } \ No newline at end of file diff --git a/memory/updates/2026-02-25.json b/memory/updates/2026-02-25.json index 1458b03..0b6759c 100644 --- a/memory/updates/2026-02-25.json +++ b/memory/updates/2026-02-25.json @@ -1,53 +1,34 @@ { "date": "2026-02-25", - "timestamp": "2026-02-25T09:00:01-05:00", - "openclaw": { - "before": "2026.2.23", - "latest": "2026.2.24", - "after": "2026.2.24", - "updated": true + "time": "21:00 ET", + "os_updates": { + "status": "clean", + "upgraded": 0, + "deferred": 2, + "deferred_packages": ["python3-software-properties", "software-properties-common"], + "note": "Deferred due to Ubuntu phasing" }, "claude_code": { - "before": "2.1.56", - "latest": "2.1.56", - "updated": false + "status": "updated", + "previous": "2.1.53", + "current": "2.1.59", + "note": "npm-global updated to 2.1.59. System /usr/bin/claude is a separate install still at 2.1.53 — needs attention." }, - "os": { - "available": 6, - "packages": [ - { - "name": "curl", - "from": "8.5.0-2ubuntu10.6", - "to": "8.5.0-2ubuntu10.7" - }, - { - "name": "libcurl3t64-gnutls", - "from": "8.5.0-2ubuntu10.6", - "to": "8.5.0-2ubuntu10.7" - }, - { - "name": "libcurl4t64", - "from": "8.5.0-2ubuntu10.6", - "to": "8.5.0-2ubuntu10.7" - }, - { - "name": "python3-software-properties", - "from": "0.99.49.3", - "to": "0.99.49.4" - }, - { - "name": "software-properties-common", - "from": "0.99.49.3", - "to": "0.99.49.4" - }, - { - "name": "wireless-regdb", - "from": "2025.07.10-0ubuntu1~24.04.1", - "to": "2025.10.07-0ubuntu1~24.04.1" - } - ], - "updated": true, - "reboot_required": true + "openclaw": { + "status": "up_to_date", + "version": "2026.2.24" }, - "gateway_restarted": true -} \ No newline at end of file + "session_cleanup": { + "orphan_jsonl_removed": 102, + "bytes_freed": 8391200, + "mb_freed": 8.0, + "cron_run_keys_removed": 78, + "remaining_session_keys": 40 + }, + "memory_updated": true, + "working_context_updated": true, + "open_issues": [ + "inou: 34 uncommitted files — needs review and commit", + "System /usr/bin/claude at 2.1.53 while npm-global is at 2.1.59 — separate installs" + ] +} diff --git a/memory/working-context.md b/memory/working-context.md index a48d662..172b90e 100644 --- a/memory/working-context.md +++ b/memory/working-context.md @@ -1,88 +1,79 @@ # Working Context -*Updated: 2026-02-24 21:00 ET (nightly maintenance)* +*Updated: 2026-02-25 21:00 ET (nightly maintenance)* ## Last Active Session -Full day session (Feb 24). Johan was on his regular sleep schedule. Primary focus was Spacebot/Andrew debugging and DealRoom feature gaps. +Full day session (Feb 25). Johan was in his working block (roughly 10:30am–5pm ET), then nightly maintenance ran at 9pm. ## What Was Accomplished Today -### Spacebot / Andrew (192.168.1.17) — Big Day -- **Model switched:** Gemini → MiniMax M2.5 (Fireworks) → **Claude Sonnet 4.6 via Anthropic OAuth** (final choice) -- Updated to v0.1.15 — pulled latest Docker image, recreated container -- Anthropic OAuth credentials stored at `/data/anthropic_oauth.json` inside container -- Fireworks API: `fw_RVcDe4c6mN4utKLsgA7hTm` valid; `fw_TGADpSki7zak4K9JxPzbXU` EXPIRED — avoid -- IDENTITY.md ingested (corrected HA IP, Andrew vs James name) -- **Known broken:** Worker dispatch — channel calls `reply()` and exits. Multi-step agentic tasks silently fail. -- **Cortex profile regeneration:** Old 200 memories override new IDENTITY.md. Will self-correct over time. -- **PR #193 submitted** to https://github.com/spacedriveapp/spacebot: - - Settings dialog pre-populates model from active routing config - - `get_providers()` counts Anthropic OAuth as "configured" - - Reviewer: `jamiepine` (maintainer) — said "very helpful change" - - **Rebased** on latest main, used `find(a => a.id === 'main')`, added `useEffect` for config load sync -- **Johan's verdict:** "The foundation is a LOT better than OpenClaw." Revisiting Andrew 2026-03-03. +### docsys — Big OCR Improvements +- **docproc killed**: Rogue Go service at port 9900 was built by a previous agent when Johan had asked only for a delete button. Stopped, disabled, and deleted entirely. +- **Delete button added**: Trash icon in every row of the category list view. Click → confirm → gone via HTMX. Commit `193d88a` pushed to zurich. +- **OCR model switched**: `kimi-k2p5` → `qwen3-vl-30b-a3b-instruct` (Fireworks). Works first try, no retry/reasoning blowup, handles Russian and handwriting well. ~40s/page. Commit `4970157`. +- **Title prompt improved**: Now requires specific titles with sender+topic+date (e.g., "N-able Technology Exchange Rate Loss Explanation Feb 2025" vs old "Financial Report"). Commit `1b4c82a`. +- **Vocabulary hints added**: Added "Jongsma", "Johan", "Tatyana", "St. Petersburg, FL" to OCR prompt to fix recurring handwriting misreads. Commit `8337388`. +- **Fireworks invalid key**: `fw_TGADpSki7zak4K9JxPzbXU` is expired; valid key is `fw_RVcDe4c6mN4utKLsgA7hTm`. -### GitHub PAT -`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` — 30-day, repo scope, johanjongsma account. Expires ~2026-03-26. +### Git Audit (evening) +- **docsys**: 1 unpushed commit flagged — confirmed pushed with vocab hints commit `8337388` +- **inou**: 34 uncommitted files — **STILL OPEN**. Need to review and commit. -### OpenClaw updated to 2026.2.23 -- Updated from 2026.2.22-2 during night shift -- Key: Kilo Gateway provider, compaction overflow recovery, exec hardening, ACP/OTEL secret redaction -- **ClawHub malware incident:** #1 most downloaded skill was SSH key stealer + reverse shell. ~20% of marketplace skills malware. We're safe — only built-in + manual skills. -- **SkillSMP.com** — 3rd party marketplace trying to fill ClawHub gap. Treat as hostile. -- **Scope preservation patch:** No longer needed (dangerouslyDisableDeviceAuth not in config). -- **Deleted transcript indexing patch:** Reapplied to `query-expansion-*.js`. +### News/External +- **NVDA earnings beat**: $68.13B revenue (+73% YoY), EPS $1.62 vs $1.53 est, Q1 FY27 guidance $78B. Stock +4% AH. Strong AI infrastructure signal. +- **OpenClaw 2026.2.24 released**: Stop phrases in 10+ languages, typing indicators, PowerShell 7, 30+ security fixes. +- **Qwen3.5 model series dropped**: Open source, ~Sonnet 4.5 level, runs on 32GB RAM. -### DealRoom — Misha's Feature Gaps (3 open) -Claude Code ran overnight and implemented most of the spec. After review, 3 gaps identified: -1. **Per-group folder visibility checkboxes** (spec 2.e.i.2) — MISSING -2. **Saved folder structure templates** (spec 2.f.i.2.i) — MISSING -3. **Auto-assign review step** (spec 3.b.2) — fires automatically, no user review UI -- **TODO:** Spawn agent to fix all 3 when Johan is ready. - -### inou Labs — LOINC Bug (OPEN) -- Symptom: "pretty charts not showing in Labs, LOINC matching not working" -- Root cause: `buildLabRefData()` reads `data["loinc"]` but production DB has 0 entries with loinc in JSON -- `Normalize()` says "all entries normalized" because `SearchKey2` is set — but `data["loinc"]` was never populated -- Gemini API key IS valid (200 response) -- reference.db has 448 lab_test + 1551 lab_reference entries — reference data exists -- Entry data is encrypted — can't inspect raw from SQLite -- **Fix direction:** Either force re-normalize on prod, OR fix `buildLabRefData()` to fall back to `e.SearchKey` (which IS the LOINC code) -- **TODO:** Fix when Johan wakes up. - -### Google Antigravity Key — Dead -- Token expired Feb 19, refresh fails — Google revoked the Antigravity OAuth app -- **inou is fine** — uses direct Gemini API key, works -- Johan doesn't mind — not a priority +### Background Subagents (auto-ran) +- email-triage (2 runs): No new incoming mail, only outbound WhatsApp +- x-watch: Nothing met filter criteria +- inou-nudge: Sent suggestion to fix LOINC fallback in `buildLabRefData()` — fix `e.SearchKey` (which IS the LOINC code) instead of `data["loinc"]` (never populated) +- Evening briefing: Delivered to Johan with markets + NVDA + OpenClaw news ## Pending / Watch -- **DealRoom gaps** — 3 spec items missing. Spawn agent when Johan ready. -- **inou Labs LOINC bug** — fix in `buildLabRefData()` or force re-normalize -- **Misha (Andrew PR #193)** — awaiting `jamiepine` review/merge -- **Roos** — Emailed + Signal'd reconnect instructions. Verify she reconnected. -- **Spacebot worker dispatch** — broken. DO NOT upgrade Andrew container until worker dispatch fixed (watching PRs). Revisit 2026-03-03. -- **MyChart/DICOM** — Johan wants to extract Sophia's DICOMs. Credentials not yet provided. + +### High Priority +- **inou: 34 uncommitted files** — git audit found this. Need `git status` + commit/push. +- **inou Labs LOINC bug** — `buildLabRefData()` reads `data["loinc"]` but production DB has 0 entries with loinc in JSON. Fix: fall back to `e.SearchKey` (which IS the LOINC code). Inou-nudge sent suggestion. +- **DealRoom gaps (3)** — Spawn agent when Johan ready: + 1. Per-group folder visibility checkboxes (spec 2.e.i.2) — MISSING + 2. Saved folder structure templates (spec 2.f.i.2.i) — MISSING + 3. Auto-assign review step (spec 3.b.2) — fires automatically, no user review UI + +### Medium Priority +- **Spacebot worker dispatch** — broken. Channel calls `reply()` and stops. DO NOT upgrade Andrew container. Revisit 2026-03-03. +- **Kernel reboot** — forge running 6.8.0-101 (may have updated tonight). Check kernel version post-update. - **Config repo SSH push** — Zurich config-backup → git@zurich.inou.com:zurich-config.git (blocked on SSH keys) +- **Spacebot PR #193** — awaiting `jamiepine` review/merge at https://github.com/spacedriveapp/spacebot/pull/193 + +### Lower Priority +- **MyChart/DICOM** — Johan wants to extract Sophia's DICOMs. Credentials not yet provided. - **Proton Bridge on 192.168.1.17** — should be decommissioned (old James machine) -- **Kernel reboot** — forge running 6.8.0-100-generic, 6.8.0-101 is the expected. Needs reboot at convenient time. +- **Azure Files Backup POC** — $200 credit expires ~Feb 27. Need Johan for `az login` MFA. May be expired now. + +## Key docsys Config +- **Service:** `systemctl --user status docsys` (port 9300) +- **Source:** `/home/johan/dev/docsys/` +- **OCR model:** `accounts/fireworks/models/qwen3-vl-30b-a3b-instruct` +- **Text model:** `accounts/fireworks/models/kimi-k2-instruct-0905` +- **Fireworks key:** `fw_RVcDe4c6mN4utKLsgA7hTm` (valid) + +## Active Services +- docsys: `systemctl --user status docsys` (port 9300) ✅ +- DealRoom (Misha): `systemctl --user status dealroom` (port 9300+?) ✅ +- Message Center: `systemctl --user status mail-bridge` (port 8025) ✅ +- Spacebot (Andrew): docker on 192.168.1.17:19898 ✅ +- OCR Service: http://192.168.3.138:8090 ✅ +- Stalwart: serving LE cert (mail.jongsma.me, valid Feb 23–May 24 2026) ✅ + +## Infrastructure Status +- **forge (192.168.1.16):** Production James server, OpenClaw 2026.2.24 (updated today), kernel 6.8.0-101 +- **Zurich (82.22.36.202):** Stalwart mail, ntfy, Kuma, LE cert active +- **Caddy Pi (192.168.0.2):** Reverse proxy for immich/hass/docsys +- **Spacebot server (192.168.1.17):** Andrew/Spacebot test, old James machine ## Key Contacts - **Misha** = Michael Jongsma (Johan's son) — misha@muskepo.com, Signal +17272381189 - **Tanya** = Tatyana (Johan's wife) — tanya@jongsma.me — **DO NOT CONTACT without explicit permission** -- **Roos** = Friend/contact — Signal +31646563377 -## Active Services -- DealRoom (Misha): `systemctl --user status dealroom` (port 9300) ✅ -- Message Center: `systemctl --user status mail-bridge` (port 8025) ✅ -- Spacebot (Andrew): docker on 192.168.1.17:19898 ✅ -- fail2ban: active on home Caddy Pi + Zurich ✅ -- Stalwart: serving LE cert (mail.jongsma.me, valid Feb 23–May 24 2026) ✅ -- OCR Service: http://192.168.3.138:8090 ✅ - -## Infrastructure Status -- **forge (192.168.1.16):** Production James server, OpenClaw 2026.2.23, kernel 6.8.0-100 (101 pending reboot) -- **Zurich (82.22.36.202):** 5 fail2ban jails, Stalwart mail, ntfy, Kuma, LE cert active -- **Caddy Pi (192.168.0.2):** 4 fail2ban jails, reverse proxy for immich/hass/docsys -- **Spacebot server (192.168.1.17):** Andrew/Spacebot test, old James machine - -## Corrections Logged Today +## Corrections Logged 1. When Johan shares a tweet about a product → describe the product, not the post. Skip "this is marketing" framing.