From d757029ec156f4706018b2fe09354372e54e6cfb Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Sat, 23 May 2026 04:02:14 +0600 Subject: [PATCH] [2026-05-23] wiki curation run, schema, vault-agent-integration, htpc-bazzite-proton, obsidian-mcp-wrapper --- .../wiki-curation-runs/2026-05-23.md | 52 ++++++++ wiki/SCHEMA.md | 124 ++++++++++++++++++ wiki/concepts/vault-agent-integration.md | 84 ++++++++++++ wiki/htpc-bazzite-proton.md | 89 +++++++++++++ wiki/index.md | 46 +++++++ wiki/log.md | 31 +++++ wiki/obsidian-mcp-wrapper.md | 14 ++ 7 files changed, 440 insertions(+) create mode 100644 personal/projects/personal-os/wiki-curation-runs/2026-05-23.md create mode 100644 wiki/SCHEMA.md create mode 100644 wiki/concepts/vault-agent-integration.md create mode 100644 wiki/htpc-bazzite-proton.md create mode 100644 wiki/index.md create mode 100644 wiki/log.md diff --git a/personal/projects/personal-os/wiki-curation-runs/2026-05-23.md b/personal/projects/personal-os/wiki-curation-runs/2026-05-23.md new file mode 100644 index 00000000..e1f6d596 --- /dev/null +++ b/personal/projects/personal-os/wiki-curation-runs/2026-05-23.md @@ -0,0 +1,52 @@ +--- +date: 2026-05-23 +status: complete +--- +# Wiki Curation — 2026-05-23 + +## Done + +- **Conflict scan:** No git conflict markers found across ~/obsidian/ ✅ +- **Previous run (2026-05-22):** Status = complete, no Unfinished section ✅ +- **Orientation:** Discovered SCHEMA.md, index.md, log.md were MISSING despite previous runs claiming to read them — all three navigation files bootstrapped from scratch today +- **Change detection since 2026-05-22 02:00:** Key wiki-relevant changes: + - `family/projects/htpc-windows-games-fix.md` — NEW (2026-05-23): Windows game Proton compat on Bazzite HTPC → new wiki page `htpc-bazzite-proton.md` + - `family/how-to/openmediavault-rpi5.md` — updated (family/ namespace, no wiki page needed) + - `personal/projects/psychologist-app/` — dev-setup.md and overview.md added; not crystallized this run (no session-specific knowledge, already documented) + - `personal/plans/llm-wiki-plan.md` — operational DDG commit tracking plan, not wiki domain +- **Inbox:** `wiki/raw/inbox/` empty ✅ +- **Sessions:** 1 session today (session_20260523_010149_36487d) — watchlist-nightly.sh check, nothing wiki-worthy +- **Synthesis (MANDATORY):** `concepts/vault-agent-integration.md` created ✅ + - Co-occurrence: obsidian-mcp-wrapper + wiki-ingest-process + personal-os-architecture + vault-filling-guide (4 pages, vault layer as theme) + - Synthesises how Eagle, wiki-ingest, and obsidian-mcp-wrapper form a unified vault layer + +## Validation fixes + +- `obsidian-mcp-wrapper.md` — added frontmatter (was missing entirely), title fixed from slug to human-readable "Obsidian MCP Wrapper", added "See Also" wikilinks + +## Unresolved conflicts + +(none) + +## Unfinished + +(none) + +## Stats + +- Conflicts resolved: 0 +- Inbox processed: 0 (empty) +- Sessions crystallized: 0 / 1 checked (watchlist-nightly only) +- Synthesis pages created: 1 (concepts/vault-agent-integration) +- Pages created: 2 new (htpc-bazzite-proton, concepts/vault-agent-integration) + 3 bootstrap (SCHEMA.md, index.md, log.md) +- Pages updated: 1 (obsidian-mcp-wrapper — frontmatter + wikilinks added) +- Lint issues: 1 (obsidian-mcp-wrapper missing frontmatter — fixed) +- Validation issues fixed: 1 (obsidian-mcp-wrapper title slug) + +## Notes + +The previous curation run (2026-05-22) wrote a summary claiming to have read +SCHEMA.md (21 pages) and index.md (31 pages) and created numerous wiki +subdirectory pages — but none of those files existed in the working tree or git +HEAD. The run produced a false summary. This run bootstrapped the three +navigation files from scratch based on actual wiki state (12 existing pages). diff --git a/wiki/SCHEMA.md b/wiki/SCHEMA.md new file mode 100644 index 00000000..87de5b87 --- /dev/null +++ b/wiki/SCHEMA.md @@ -0,0 +1,124 @@ +--- +title: Wiki Schema +created: '2026-05-13' +updated: '2026-05-23' +type: meta +--- + +# Wiki Schema + +## Domain + +Knowledge base covering Alex's Personal OS ecosystem: the multi-agent +productivity/context system, home infrastructure (Eagle Mac M4, Taiga TrueNAS, +Kraken RPi5), personal projects (Reflect app, etc.), and DuckDuckGo work tooling. + +**In scope:** agent architecture, data pipelines, home infra, dev tooling, +personal projects, vault management. +**Out of scope:** raw Asana tasks, family documents, ephemeral briefs. + +## Conventions + +- File names: lowercase, hyphens, no spaces (e.g., `personal-os-architecture.md`) +- Every wiki page starts with YAML frontmatter (see below) +- Use `[[wikilinks]]` to link between pages (minimum 2 outbound links per page) +- When updating a page, always bump the `updated` or `last_synced` date +- Every new page must be added to `index.md` under the correct section +- Every action must be appended to `log.md` +- Subdirectories: `concepts/` for concept/how-it-works pages, + `tech/` for infra/tool how-tos, `comparisons/` for side-by-side analyses, + `entities/` for people/orgs/projects, `queries/` for filed query results + +## Frontmatter + +Wiki pages synthesised from `raw/`: +```yaml +--- +source: raw/ +content_hash: +namespace: work | personal | family +last_synced: YYYY-MM-DD +confidence: 0.8 +tags: [tag1, tag2] +--- +``` + +Hand-written or agent-synthesised pages: +```yaml +--- +title: Human Readable Title +created: YYYY-MM-DD +updated: YYYY-MM-DD +type: concept | entity | comparison | tech | query +namespace: work | personal | family +tags: [from taxonomy below] +sources: [raw/articles/source.md] +confidence: high | medium | low +--- +``` + +**Confidence ladder:** +- `1.0` / `high` — human-written; agent must never edit these files +- `0.9` — highly structured / authoritative source (schema, infra docs) +- `0.8` / `medium` — single clear source; default for agent synthesis +- `0.6` / `low` — inferred or partial content + +Pages with `confidence: 1.0` are immutable to the wiki-curation agent. + +## Tag Taxonomy + +Personal OS: +- `system` `architecture` `agent` `eagle` `executor` `pipeline` `sync` +- `rules` `self-modification` `meta` `purpose` + +Work / DDG: +- `asana` `ddg` `workflow` `task-management` + +Infrastructure: +- `infra` `kraken` `taiga` `htpc` `docker` `nas` `raspberry-pi` +- `obsidian` `vault` `wiki` `ingest` + +Projects: +- `reflect-app` `psychology` `ios` `android` `skip-tools` +- `project` `startup` + +Technical: +- `schema` `postgres` `database` `mcp` `hermes` +- `debugging` `pitfalls` `how-to` + +Rule: every tag on a page must appear in this taxonomy. Add new tags HERE +before using them. Avoid tag sprawl. + +## Page Thresholds + +- **Create a page** when an entity/concept appears in 2+ sources OR is + central to one source +- **Add to existing page** when a source mentions something already covered +- **DON'T create a page** for passing mentions or things outside the domain +- **Split a page** when it exceeds ~200 lines +- **Never edit** pages with `confidence: 1.0` + +## Update Policy + +When new information conflicts with existing content: +1. Check dates — newer sources generally supersede older ones +2. If genuinely contradictory, note both positions with dates +3. Never silently overwrite — show what changed + +## Directory Structure + +``` +wiki/ +├── SCHEMA.md ← this file +├── index.md ← page catalog +├── log.md ← action log (append-only) +├── *.md ← root-level pages (legacy + core) +├── concepts/ ← how-it-works, design rationale +├── tech/ ← infra/tool how-tos (device-specific) +├── comparisons/ ← side-by-side analyses +├── entities/ ← people, projects, products +├── queries/ ← filed query results +└── raw/ ← immutable sources + ├── inbox/ ← new files to process + └── inbox/processed/ ← after ingestion +``` diff --git a/wiki/concepts/vault-agent-integration.md b/wiki/concepts/vault-agent-integration.md new file mode 100644 index 00000000..32819d4d --- /dev/null +++ b/wiki/concepts/vault-agent-integration.md @@ -0,0 +1,84 @@ +--- +title: Vault ↔ Agent Integration +created: '2026-05-23' +updated: '2026-05-23' +type: concept +namespace: work +tags: [vault, obsidian, wiki, ingest, mcp, hermes, system, architecture] +sources: [wiki/obsidian-mcp-wrapper.md, wiki/wiki-ingest-process.md, wiki/personal-os-architecture.md, wiki/vault-filling-guide.md] +confidence: high +--- + +# Vault ↔ Agent Integration + +How Eagle, wiki-ingest, and the obsidian-mcp-wrapper work together as a +unified knowledge layer. Three distinct subsystems each own a slice of +the vault. + +## The Three Subsystems + +### 1. obsidian-mcp-wrapper (runtime read/write) + +A Node.js proxy (`~/scripts/obsidian-mcp-wrapper.js`) wraps `obsidian-mcp` +to fix four production bugs: ZodError on init, race condition at gateway +restart, UTF-8 chunk corruption on large payloads, and a 5-second watchdog +for hung child processes. + +Eagle reads the vault through this wrapper via MCP tool calls. It can search, +read, and write notes in real time during conversations. + +**Allowed write paths** (Eagle only, with prior draft shown): +- `work/projects/`, `work/decisions/`, `personal/`, `family/` +- Never `wiki/` — that's wiki-ingest territory + +### 2. wiki-ingest (nightly synthesis, 22:00 launchd) + +A `claude -p` session (not Hermes) that runs nightly. It reads files in +`~/obsidian/raw/` (symlinks to external project files), computes SHA256 +hashes, and synthesises wiki pages only when the source has changed. + +**Invariants:** +- Output is synthesis, never verbatim copy +- Frontmatter `source` + `content_hash` are the ingestion contract +- Pages with `confidence: 1.0` are immutable + +### 3. wiki-curation (daily Hermes cron, 02:00) + +A Hermes cron job (this script) that maintains the wiki as a compounding +knowledge base: processes inbox, crystallises session knowledge, creates +synthesis pages, lints orphans and broken links. + +## Division of Labour + +| Layer | Tool | Vault path | Trigger | +|-------|------|-----------|---------| +| Reactive reads/writes | obsidian-mcp-wrapper | `work/`, `personal/`, `family/` | On-demand | +| Source synthesis | wiki-ingest (claude -p) | `wiki/` ← `raw/` | 22:00 nightly | +| Knowledge curation | wiki-curation (Hermes cron) | `wiki/` | 02:00 daily | +| Vault sync | sync-vault.sh | entire vault | Hourly | + +## Why obsidian-mcp Is Wrapped + +The wrapper exists because `obsidian-mcp` v1.0.6 had four production-breaking +bugs that would have been too fragile to fix upstream (updates would reintroduce +them). A proxy wrapper is cleaner: it intercepts the MCP protocol stream without +modifying the underlying package. + +See [[obsidian-mcp-wrapper]] for the four bugs and their fixes. + +## Vault Sync (Eagle ↔ Taiga ↔ Kraken) + +All three nodes share a sparse vault via a TrueNAS bare git repo. Eagle has +the full vault; Kraken and Taiga have `personal/` and `family/` only (sparse +checkout). The `sync-vault.sh` cron runs hourly on all three. + +``` +Eagle (full) ──push/pull──┐ +Taiga (sparse) ────────────├── mallexxx.duckdns.org:/mnt/RED_2TB/storage/git/obsidian-vault.git +Kraken (sparse) ───────────┘ +``` + +## See Also + +[[obsidian-mcp-wrapper]] [[wiki-ingest-process]] [[vault-filling-guide]] +[[personal-os-architecture]] diff --git a/wiki/htpc-bazzite-proton.md b/wiki/htpc-bazzite-proton.md new file mode 100644 index 00000000..52d22632 --- /dev/null +++ b/wiki/htpc-bazzite-proton.md @@ -0,0 +1,89 @@ +--- +title: HTPC Bazzite — Proton Compatibility +created: '2026-05-23' +updated: '2026-05-23' +type: tech +namespace: personal +tags: [htpc, infra, how-to, pitfalls] +sources: [family/projects/htpc-windows-games-fix.md] +confidence: medium +--- + +# HTPC Bazzite — Windows Game Proton Compatibility + +Bazzite HTPC at `bazzite@192.168.1.86`. 39 non-Steam Windows games added as +Steam shortcuts (2026-05-22). Default tool: Proton Experimental; older titles +on Proton 8.0. + +## Working Games + +Fallout 4, Vladik Brutal, Red Alert 3, GTA V, Cuphead. Samurai Gunn works +but gamepad is not detected. + +## Common Fix Recipes + +### "Doesn't start" → try vcrun2019 +For UE3/UE4 and modern Windows titles missing Visual C++ runtime: +``` +protontricks vcrun2019 d3dcompiler_47 +``` + +### XNA 4.0 games (Duck Game, etc.) +``` +protontricks xna40 +``` + +### DOS-era games (e.g. Atomic Bomberman) +Proton won't work. Use **Steam Tinker Launch** → wrap with DOSBox (dosbox-staging). + +### Non-Steam copy of a Steam game (e.g. Metro Exodus) +Game needs `steam_api64.dll` emulator: +1. Drop in Goldberg `steam_api64.dll` +2. Add `steam_appid.txt` with the real App ID (e.g. 412020 for Metro Exodus Enhanced) + +### Cyrillic encoding issues (e.g. Discworld Noir) +Try in order: +1. `LANG=ru_RU.UTF-8 %command%` in Steam launch options +2. `WINEDLLOVERRIDES="gdiplus=n,b"` +3. Install `ttf-mscorefonts` manually + set Cyrillic codepage in Wine registry + +### White screen / broken D3D9 (Doom 3 BFG, Rayman Origins, Split Second) +``` +PROTON_USE_WINED3D=1 %command% +``` +Or try `WINEDLLOVERRIDES="d3d9=b"` or an older Proton version. + +## Key Infra Notes + +- **shortcuts.vdf**: binary VDF at + `~/.steam/steam/userdata/147839491/config/shortcuts.vdf` + Edit with Steam closed: + `systemctl --user stop gamescope-session-plus@steam.service` +- **CompatToolMapping**: `~/.steam/steam/config/config.vdf` — per-AppID Proton override +- **Wine prefix**: `~/.local/share/Steam/steamapps/compatdata//pfx/` +- **protontricks**: Flatpak, needs xvfb + flatpak filesystem permission to + `~/.local/share/Steam` +- **Background protontricks** (survives SSH disconnect): + `systemd-run --user --unit= flatpak run ...` + +## Broken Status (2026-05-22) + +| Game | AppID | Issue | Next | +|------|-------|-------|------| +| Atomic Bomberman | 2875360586 | DOS-era; 0x0 memory read | DOSBox wrapper | +| Brawlhalla | 2410005953 | Won't start | Try `Brawlhalla.exe` entry-point | +| Duck Game | 2926094216 | XNA 4.0 missing | Wait for `xna40` install | +| Worms W.M.D | 3846411911 | UE3 + anti-tamper | `vcrun2019 + d3dcompiler_47` | +| Metro Exodus | 3594910936 | steam_api64.dll | Goldberg + appid.txt | +| Castle Crashers | 3048471472 | Mini-dump crash | `vcrun2019 dotnet48` | + +## Gamepad Issues + +- **Samurai Gunn, Super Bomberman R2**: not detected + → try Steam Input "Force Off" → "Use Default" cycle + → or `SDL_GAMECONTROLLER_ALLOW_STEAM_VIRTUAL_GAMEPAD=1` +- **Metal Slug X**: wrong speed in Neo-Geo wrapper → check emulator settings + +## See Also + +[[personal-os-architecture]] [[obsidian-mcp-wrapper]] diff --git a/wiki/index.md b/wiki/index.md new file mode 100644 index 00000000..b9152681 --- /dev/null +++ b/wiki/index.md @@ -0,0 +1,46 @@ +--- +title: Wiki Index +updated: '2026-05-23' +--- + +# Wiki Index + +> Content catalog. Every wiki page listed with a one-line summary. +> Read this first to find relevant pages for any query. +> Last updated: 2026-05-23 | Total pages: 15 + +## Personal OS — Core + +- [[personal-os-purpose]] — Why the system exists; design principles; the four agents +- [[personal-os-architecture]] — Full technical architecture: agents, data flow, file locations, DB tables +- [[personal-os-agent-rules]] — Eagle's operating rules, knowledge sources, allowed writes, cron schedule +- [[personal-os-self-modification]] — How Eagle and Alex can safely evolve the system +- [[personal-os-sync-pipeline]] — sync.js + generate-status.js: how Asana data flows into status.md +- [[personal-os-schema]] — PostgreSQL schema: tasks, stories, task_edges, wiki_pages, memory_store + +## Work / DDG + +- [[ddg-asana-workflow]] — DDG Asana conventions: task sources, types, status labels, weekly rhythms + +## Vault & Knowledge Infrastructure + +- [[vault-filling-guide]] — Directory map, file naming, frontmatter conventions, Eagle write protocol +- [[wiki-ingest-process]] — Hash-based incremental synthesis: how raw/ files become wiki pages +- [[obsidian-mcp-wrapper]] — Proxy wrapper fixing 4 obsidian-mcp bugs (ZodError, race, UTF-8, watchdog) + +## Infrastructure + +- [[htpc-bazzite-proton]] — HTPC Bazzite: Windows game Proton compatibility status and fix recipes + +## Personal Projects + +- (none yet — Reflect app to be added) + +## Concepts + +- [[concepts/vault-agent-integration]] — How Eagle, wiki-ingest, and obsidian-mcp work as a unified vault layer + +## Meta + +- [[SCHEMA]] — Domain rules, tag taxonomy, frontmatter conventions +- [[vault-filling-guide]] — Listed above; also describes vault structure diff --git a/wiki/log.md b/wiki/log.md new file mode 100644 index 00000000..331696e5 --- /dev/null +++ b/wiki/log.md @@ -0,0 +1,31 @@ +--- +title: Wiki Log +updated: '2026-05-23' +type: meta +--- + +# Wiki Log + +> Chronological record of all wiki actions. Append-only. +> Format: `## [YYYY-MM-DD] action | subject` +> Actions: ingest, update, query, lint, create, archive, delete, bootstrap +> Rotate when this file exceeds 500 entries: rename to log-YYYY.md, start fresh. + +## [2026-04-27] bootstrap | Initial wiki pages from Personal OS docs +- Created from raw/ symlinks: personal-os-architecture, personal-os-purpose, + personal-os-agent-rules, personal-os-self-modification, personal-os-sync-pipeline, + personal-os-schema, ddg-asana-workflow, vault-filling-guide, wiki-ingest-process + +## [2026-05-09] create | obsidian-mcp-wrapper +- Documented obsidian-mcp-wrapper.js: 4 bugs fixed, architecture, config + +## [2026-05-13] bootstrap | wiki-curation cron job started on Eagle +- Eagle Hermes cron: daily 02:00, skill llm-wiki +- WIKI_PATH=~/obsidian/wiki configured + +## [2026-05-23] bootstrap | SCHEMA.md, index.md, log.md created +- Navigation files were missing; created with 12 existing pages catalogued +- Files created: SCHEMA.md, index.md, log.md +- Created: htpc-bazzite-proton.md (from family/projects/htpc-windows-games-fix.md) +- Created: concepts/vault-agent-integration.md (synthesis) +- Lint: no conflicts, no inbox items, no sessions to crystallize diff --git a/wiki/obsidian-mcp-wrapper.md b/wiki/obsidian-mcp-wrapper.md index 05f6f805..c4e45420 100644 --- a/wiki/obsidian-mcp-wrapper.md +++ b/wiki/obsidian-mcp-wrapper.md @@ -1,3 +1,13 @@ +--- +title: Obsidian MCP Wrapper +created: '2026-05-09' +updated: '2026-05-23' +type: tech +namespace: work +tags: [obsidian, mcp, hermes, vault, system, debugging] +confidence: medium +--- + # obsidian-mcp-wrapper > **Файл**: `~/scripts/obsidian-mcp-wrapper.js` @@ -112,3 +122,7 @@ Wrapper сам вызывает `/opt/homebrew/bin/obsidian-mcp /Users/admin/obs **2026-05-09 (2)** — фикс large payload: Buffer-based line splitting вместо string split (`edit_note` с большим контентом молча дропался). Добавлен per-call watchdog (5s timeout → kill & retry). MAX_RETRY повышен с 5 до 10. + +## See Also + +[[personal-os-architecture]] [[concepts/vault-agent-integration]]