diff --git a/MEMORY.md b/MEMORY.md index c1785a7..a492711 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -908,6 +908,20 @@ Final architecture (after painful debug session): 2. Saved folder structure templates with reuse (spec 2.f.i.2.i) 3. Auto-assign review step — currently fires silently, needs user review UI (spec 3.b.2) +## DocSys — Personal Document Management (2026-02-25) +- **Source:** `/home/johan/dev/docsys/` (Go, chi router, mattn/go-sqlite3) +- **Port:** 9201 — main UI at `http://docsys.jongsma.me` (Caddy proxy) +- **Data:** `/srv/docsys/` — inbox, store, records, index +- **DB:** `/srv/docsys/index/docsys.db` (SQLite with FTS5) +- **Inbox:** `/srv/docsys/inbox/` — drop files here, watcher picks them up automatically +- **SMB share:** `\\192.168.1.16\docsys` → inbox (scanner deposits here) +- **Build:** `CGO_ENABLED=1 PATH=$PATH:/home/johan/go/bin:/usr/local/go/bin go build -tags "fts5" -o docsys .` +- **Deploy:** `systemctl --user restart docsys` +- **Extraction:** `qwen3-vl-30b-a3b-instruct` (Fireworks) for all vision/OCR → ~40s/page, works first try, preserves original language; text classifier uses `kimi-k2-instruct-0905` +- **Fallback path (kept):** If vision returns no JSON → AnalyzePageOnly (plain text) + AnalyzeText (classify) +- **Delete button:** Exists on document detail page `/document/{id}` in the main UI. Do NOT build new services/UIs for this. +- **⚠️ Lesson:** A previous session built a whole new `docproc` service (port 9900) when Johan asked for a delete button. Johan killed it. Never build new apps/services for simple UI additions. + ## Andrew/Spacebot Update (2026-02-24) - **v0.1.15**, Claude Sonnet 4.6 via Anthropic OAuth, config at `/home/johan/spacebot-config.toml` on 192.168.1.17 - **Worker dispatch broken**: channel calls reply() and stops — no workers ever spawned for multi-step tasks. Revisiting 2026-03-03. diff --git a/TOOLS.md b/TOOLS.md index 493a9e2..89f706d 100644 --- a/TOOLS.md +++ b/TOOLS.md @@ -92,6 +92,15 @@ Things like: - Keep briefing history for reference - Update Claude usage status: `scripts/claude-usage-check.sh` (auto-updates dashboard) +### SMB Shares (forge — 192.168.1.16) +- **Server:** 192.168.1.16 +- **User:** johan / `Forge2026!` +- **Workgroup:** WORKGROUP +- `\\192.168.1.16\sophia` → `/home/johan/sophia/` (general share) +- `\\192.168.1.16\docsys` → `/home/johan/documents/inbox/` (scanner drop target → DocSys pipeline) + - User: `scanner` / `Scanner2026!` (dedicated scan user, files force-owned by johan) +- `\\192.168.1.16\inou-dev` → `/home/johan/dev/inou/` (dev share) + ### Forge = James' Home (192.168.1.16) - forge IS the James server now. See hardware section above. - **GPU:** GTX 970 4GB (Driver 580.126.09, CUDA 13.0) diff --git a/memory/claude-usage.db b/memory/claude-usage.db index 4d6d7b7..453bdbc 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 393bd05..01e703c 100644 --- a/memory/claude-usage.json +++ b/memory/claude-usage.json @@ -1,9 +1,9 @@ { - "last_updated": "2026-02-25T17:00:01.336458Z", + "last_updated": "2026-02-25T23:00:01.753985Z", "source": "api", - "session_percent": 0, - "session_resets": null, - "weekly_percent": 52, - "weekly_resets": "2026-02-28T19:00:00.289597+00:00", - "sonnet_percent": 61 + "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 } \ No newline at end of file diff --git a/memory/corrections.md b/memory/corrections.md index 6323639..7184a50 100644 --- a/memory/corrections.md +++ b/memory/corrections.md @@ -160,3 +160,10 @@ When Johan pushes back, log the **principle**, not just the symptom. **Why:** Stalwart downloads a pre-trained corpus from GitHub on first run. That corpus doesn't know your inbox profile. **Applies to:** Any ML-based filter on a fresh install. **Test:** "What is this filter's prior, and is it appropriate for this inbox?" + +### PRINCIPLE: Don't Build New Services for Simple UI Requests +**Date:** 2026-02-25 +**Trigger:** Johan asked for a "delete button" in docsys. Previous session built an entirely new Go service (`docproc`, port 9900) with its own watcher, processor, and API. +**Why:** Scope creep kills trust. A delete button = one HTML element + one API route. A new service = new failure modes, new memory overhead, new confusion. +**Applies to:** Any "add X to Y" request. The answer is almost always to modify Y, not create Z. +**Test:** Before building anything new, ask: "Does something already exist that I can add this to?" If yes, add to it. diff --git a/memory/git-audit-lastfull.txt b/memory/git-audit-lastfull.txt index b987581..52cac82 100644 --- a/memory/git-audit-lastfull.txt +++ b/memory/git-audit-lastfull.txt @@ -1 +1 @@ -1771952537 +1772038940 diff --git a/memory/heartbeat-state.json b/memory/heartbeat-state.json index 2d724af..2ef5a9b 100644 --- a/memory/heartbeat-state.json +++ b/memory/heartbeat-state.json @@ -1,20 +1,20 @@ { "lastChecks": { - "email": 1771981273, + "email": 1772057106, "calendar": null, "weather": 1771942030, "briefing": 1771597876, "news": 1771597876, - "claude_usage": 1771981273 + "claude_usage": 1772057237 }, - "lastBriefing": "2026-02-25T13:05:42.227405+00:00", + "lastBriefing": "2026-02-25T22:06:25.174833+00:00", "lastWeeklyDocker": "2026-02-22T08:33:05.950745+00:00", "lastWeeklyHAOS": "2026-02-22T08:33:05.950745+00:00", "lastWeeklyMemorySynthesis": "2026-02-22T10:05:38.031320Z", - "lastDocInbox": "2026-02-24T11:30:00.000Z", - "lastTechScan": "2026-02-25T13:05:42.227405+00:00", + "lastDocInbox": "2026-02-25T22:01:42.532628Z", + "lastTechScan": "2026-02-25T22:05:06.010Z", "lastMemoryReview": "2026-02-25T09:06:00.000Z", - "lastIntraDayXScan": "2026-02-25T08:31:00.000Z", - "lastInouSuggestion": "2026-02-25T13:02:01.000000+00:00", - "lastEmail": 1771948934 + "lastIntraDayXScan": "2026-02-25T22:05:41.000Z", + "lastInouSuggestion": "2026-02-25T22:05:38.000000+00:00", + "lastEmail": 1772057085 } \ No newline at end of file