From a81be87b5f97fe3984d13e176316a966fcc239d7 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Tue, 19 May 2026 03:09:57 +0600 Subject: [PATCH] Failed to authenticate. API Error: 401 Invalid authentication credentials [2026-05-19] vault sync --- .../wiki-curation-runs/2026-05-19.md | 57 +++++++++++ wiki/concepts/executor-orchestrator.md | 98 +++++++++++++++++++ wiki/concepts/knowledge-lifecycle.md | 82 ++++++++++++++++ wiki/concepts/kraken-media-stack.md | 13 ++- wiki/index.md | 11 ++- wiki/log.md | 26 +++++ wiki/tech/hermes-docker-kraken.md | 6 ++ wiki/tech/jellyfin-transcode-rpi5.md | 8 +- wiki/tech/truenas-inpxer.md | 6 ++ 9 files changed, 302 insertions(+), 5 deletions(-) create mode 100644 personal/projects/personal-os/wiki-curation-runs/2026-05-19.md create mode 100644 wiki/concepts/executor-orchestrator.md create mode 100644 wiki/concepts/knowledge-lifecycle.md diff --git a/personal/projects/personal-os/wiki-curation-runs/2026-05-19.md b/personal/projects/personal-os/wiki-curation-runs/2026-05-19.md new file mode 100644 index 00000000..2c8042e4 --- /dev/null +++ b/personal/projects/personal-os/wiki-curation-runs/2026-05-19.md @@ -0,0 +1,57 @@ +--- +date: 2026-05-19 +status: complete +--- +# Wiki Curation — 2026-05-19 + +## Done + +- **Conflict scan:** No git conflict markers found across ~/obsidian/ ✅ +- **Previous run (2026-05-18 02:00):** Status = complete, no Unfinished — nothing to resume +- **Orientation:** Read SCHEMA.md (20 pages in table), index.md (22 pages listed), log.md (last 40 lines) +- **Change detection:** + - `family/projects/watchlist-sync.md` — new watchlist-sync project spec → added note to `concepts/kraken-media-stack.md` ✅ + - `family/how-to/openmediavault-rpi5.md` — updated with Transmission hook + PGS→SRT (already captured in tech pages from yesterday's 02:00 run) + - `personal/projects/personal-os/executor-orchestrator-redesign.md` — detailed orchestrator redesign → crystallized ✅ + - `personal/projects/psychologist-app/` — product spec for separate app; not wiki domain, skipped + - 3 tech pages from yesterday's 02:00 run were NOT in index.md: hermes-docker-kraken, jellyfin-transcode-rpi5, truenas-inpxer → fixed ✅ +- **Inbox:** `raw/inbox/` empty ✅ +- **Sessions (2026-05-19):** 2 sessions checked; both cover psychologist app UX (not wiki domain); executor-orchestrator knowledge crystallized from personal/ file instead +- **Pages created (2):** + - `wiki/concepts/executor-orchestrator.md` — Eagle spawns Executor as separate Hermes profile; auto-approval table; GTD orchestration idea; Hermes Profiles mechanism + - `wiki/concepts/knowledge-lifecycle.md` — synthesis of agent-memory-architecture + vault-strategy + wiki-ingest-process: 3 barriers, tools table, degradation risks +- **Pages updated (2):** + - `wiki/concepts/kraken-media-stack.md` — watchlist-sync section added; updated: 2026-05-19 + - `wiki/index.md` — 5 missing entries added (3 tech pages from yesterday + 2 new concepts); total 27 pages; updated: 2026-05-19 +- **Frontmatter fixes (3 pages, lint):** + - `tech/hermes-docker-kraken.md` — added namespace: work + - `tech/jellyfin-transcode-rpi5.md` — added namespace: work + - `tech/truenas-inpxer.md` — added namespace: work +- **Wikilinks added:** all 3 tech pages now have 2+ outbound wikilinks +- **Synthesis page:** `concepts/knowledge-lifecycle.md` — cross-synthesis of agent-memory-architecture + vault-strategy + wiki-ingest-process (co-occurring in 3+ pages, no prior synthesis) +- **Lint:** 27 pages; frontmatter ✅; wikilinks ✅; orphans: none ✅; sizes: all <200 lines ✅; no broken links ✅ +- **Validation:** 7 modified files — all OK ✅ +- **Log:** appended 2026-05-19 entry to wiki/log.md + +## Validation fixes + +- none (all 7 files passed clean after frontmatter namespace additions) + +## Unresolved conflicts + +(none) + +## Unfinished + +(none) + +## Stats + +- Conflicts resolved: 0 +- Inbox processed: 0 +- Sessions crystallized: 0 / 2 checked (executor-orchestrator crystallized from personal/ file, not session) +- Synthesis pages created: 1 (concepts/knowledge-lifecycle) +- Pages created: 2 (executor-orchestrator, knowledge-lifecycle) +- Pages updated: 2 (kraken-media-stack, index.md) + 3 frontmatter fixes (tech pages) +- Lint issues fixed: 4 (3 missing namespace fields + 3 missing index entries from yesterday) +- Validation issues fixed: 0 diff --git a/wiki/concepts/executor-orchestrator.md b/wiki/concepts/executor-orchestrator.md new file mode 100644 index 00000000..4136823e --- /dev/null +++ b/wiki/concepts/executor-orchestrator.md @@ -0,0 +1,98 @@ +--- +namespace: work +tags: + - architecture + - agent + - executor + - orchestrator +created: '2026-05-19' +updated: '2026-05-19' +type: concept +confidence: 0.85 +sources: + - personal/projects/personal-os/executor-orchestrator-redesign.md +--- +# Executor-as-Worker — Orchestrator Pattern + +Архитектурный паттерн для запуска задач: Eagle как orchestrator спавнит Executor как отдельный worker-процесс с собственной Zulip-идентичностью. + +## Проблема + +Текущий режим (inline execution): +- Eagle берёт задачу прямо в разговорном треде +- Спрашивает разрешения у Alex в середине задачи — блокирует поток +- Тесная связность между conversational layer и execution layer + +## Целевая архитектура + +``` +Alex → Eagle (orchestrator, Zulip topic) + ↓ spawn + Executor (worker, отдельный Hermes-профиль) + ↓ пишет в #executor + Eagle мониторит #executor (2-мин cron) + ↓ auto-approve безопасные действия + ↓ эскалирует неоднозначные → @mention Alex +``` + +## Протокол сообщений (Executor → Eagle) + +``` +[STATUS: investigation] Analysing bug GID 123456... +[REQUEST: create_worktree] Branch: fix/tab-preview-stuck +[REQUEST: run_tests] Scheme: macOS UI Tests CI +[STATUS: pr_open] Draft PR: https://github.com/... +[DONE: pr_ready] PR #1234 opened, CI green +[ESCALATE: scope_expansion] Found unrelated issue — should I fix it? +``` + +## Таблица auto-approve (Eagle) + +| Тип сообщения | Действие | +|---|---| +| `[REQUEST: create_worktree]` | ✅ auto-approve | +| `[REQUEST: run_build]` | ✅ auto-approve | +| `[REQUEST: run_tests]` | ✅ auto-approve | +| `[REQUEST: open_draft_pr]` | ✅ auto-approve | +| `[REQUEST: push_branch]` | ✅ auto-approve | +| `[REQUEST: post_asana_comment]` | ⚠️ показать Alex, ждать | +| `[REQUEST: merge_pr]` | ❌ всегда эскалация | +| `[ESCALATE: *]` | ⚠️ всегда эскалация | +| `[ESCALATE: scope_expansion]` | ❌ deny + notify Alex | + +## Реализация через Hermes Profiles + +- **Механизм**: Hermes Profiles → `~/.hermes/profiles/executor/` с SOUL.md, отдельным Zulip bot token, отдельным gateway. +- **Команда**: `hermes profile create executor --clone` +- **Bot identity**: "Исполнитель" (не Eagle) + +## Мониторинг Eagle + +Eagle **не** запускает непрерывный процесс мониторинга. Вместо этого: +- Hermes cron каждые 2 мин → читает последние 20 сообщений из `#executor` по текущему `executor_run_id` +- Structured messages → O(1) парсинг без LLM +- Sliding window — не полный тред + +## GTD-фреймворк оркестрации (идея, 2026-05-18) + +> Eagle как orchestrator должен управлять очередью задач по GTD-принципам: capture all inputs → clarify → organize → execute. Это высвободит ручную координацию (~2-4ч/день). + +## Шаги реализации + +1. Определить message protocol (structured tags) +2. Добавить Zulip sender в executor worker prompts +3. Создать Eagle monitoring cron (2 мин, `#executor` stream) +4. Реализовать auto-approval logic в monitoring prompt +5. Добавить `@mention Alex` на эскалацию +6. Тест с dry-run executor run + +## Open Questions + +- Как Executor «спавнится» как отдельный bot? (Profile A vs отдельный gateway vs `hermes run -p executor-worker.md`) +- Concurrent runs: нужен `run_id` в каждом сообщении + +## Связанные страницы + +- [[personal-os-architecture]] — полная карта агентов и executor modes (v2 bash daemons) +- [[personal-os-agent-rules]] — правила поведения агентов +- [[concepts/agent-memory-architecture]] — memory model для агентов diff --git a/wiki/concepts/knowledge-lifecycle.md b/wiki/concepts/knowledge-lifecycle.md new file mode 100644 index 00000000..a64c0a1b --- /dev/null +++ b/wiki/concepts/knowledge-lifecycle.md @@ -0,0 +1,82 @@ +--- +namespace: work +tags: + - agent + - memory + - wiki + - synthesis + - vault +created: '2026-05-19' +updated: '2026-05-19' +type: concept +confidence: 0.9 +sources: + - wiki/concepts/agent-memory-architecture.md + - wiki/concepts/vault-strategy.md + - wiki/wiki-ingest-process.md + - wiki/personal-os-self-modification.md +--- +# Knowledge Lifecycle — From Session to Permanent Memory + +Синтез: как знание движется от рабочей сессии к постоянной памяти в personal-os. Объединяет [[concepts/agent-memory-architecture]], [[concepts/vault-strategy]] и [[wiki-ingest-process]]. + +## Общая схема + +``` +Событие/Разговор + │ + ▼ +Working Memory (контекст сессии, эфемерный) + │ session_search + SHA256 hash + ▼ +Episodic Memory (SQLite sessions, сжатые саммари) + │ crystallization (wiki-curation cron 02:00) + ▼ +Semantic Memory (wiki/ pages, постоянное знание) + │ wiki-ingest 22:00 (launchd, claude -p) + │ overflow rule (>150 chars → vault) + ▼ +Procedural Memory (skills/, workflows) +``` + +## Три барьера кристаллизации + +Не всё знание заслуживает кристаллизации. Барьеры: + +| Уровень | Критерий | Место | +|---------|----------|-------| +| Session → Wiki | Painful to re-derive? Fits domain? Contains facts (not conversation)? | `wiki/` | +| Wiki → MEMORY.md | Стабильный факт, ≤150 символов? | `~/.hermes/MEMORY.md` | +| Any → Skills | Пошаговая процедура, повторяемая? | `~/.hermes/skills/` | + +**Правило overflow:** MEMORY.md — только короткие стабильные факты. Детали → в wiki с pointer в MEMORY.md: `"media-pipeline питфолы → wiki/tech/media-pipeline-pitfalls.md"`. + +## Три задачи vault (не смешивать) + +1. **Vault Enrichment** — frontmatter + aliases + wikilinks на `personal/`, `family/` +2. **LLM Wiki** — crystallization sessions → `wiki/` (этот файл про это) +3. **Proactive Research** — агент генерирует гипотезы → `wiki/research-queue.md` → Saturday cron + +## Риски деградации + +- **Summarization drift:** после 3+ циклов сжатия теряются критические инструкции. Решение: vault как immutable store (не перезаписывать, только аппендить/обновлять dated sections). +- **Repetitive behavior:** без weekly reflection агент деградирует (Generative Agents, 48ч без рефлексии). Фикс: Retrospector каждую пятницу читает corrections_log. +- **Orphaned knowledge:** факт записан, но никогда не читается. Фикс: lint (orphan pages), провалидированные wikilinks. + +## Инструменты в personal-os + +| Инструмент | Функция | +|-----------|---------| +| wiki-curation cron (02:00) | Crystallization: sessions → wiki | +| wiki-ingest launchd (22:00) | Synthesis: raw/ symlinks → wiki pages | +| `session_search` | Episodic retrieval | +| obsidian MCP | Semantic retrieval | +| MEMORY.md | Fast facts, overflow pointers | +| research-queue.md | Proactive research agenda | + +## Связанные страницы + +- [[concepts/agent-memory-architecture]] — когнитивная таксономия памяти (episodic/semantic/procedural) +- [[concepts/vault-strategy]] — три задачи vault: enrichment, LLM wiki, proactive research +- [[wiki-ingest-process]] — hash-based incremental ingest из raw/ symlinks +- [[personal-os-self-modification]] — как система эволюционирует через корректировки diff --git a/wiki/concepts/kraken-media-stack.md b/wiki/concepts/kraken-media-stack.md index 2fc73e84..c5f85886 100644 --- a/wiki/concepts/kraken-media-stack.md +++ b/wiki/concepts/kraken-media-stack.md @@ -1,7 +1,7 @@ --- title: Kraken Media Server — Full Stack created: '2026-05-18' -updated: '2026-05-18' +updated: '2026-05-19' type: concept tags: - kraken @@ -72,6 +72,17 @@ Prowlarr (RuTracker) → Radarr (7878) / Sonarr (8989) - ⏳ Трекер-парсеры (Steps D-F): audio/non-video scanner, fixture тесты для rutor/nnm-club - ⏳ Transmission torrent-fix: 271/293 файлов без привязки после pipeline apply +## Watchlist Sync (в разработке, 2026-05-19) + +Python-сервис `~/Developer/watchlist-sync` для автоматической синхронизации `family/documents/movies-watchlist.md` с Radarr/Sonarr/Jellyfin: +- **parse** → `[ ]`/`[x]`/`❓`/`⬇️` статусы из .md +- **resolve** → TMDB + KP API → ID + тип (movie/tv) +- **sync-down** → добавить в Radarr/Sonarr батчами по 5 +- **sync-up** → Jellyfin watched history → `[x]` в .md +- **AI curation** → Hermes Kraken cron, disambiguation ❓ → Zulip `#personal::Kraken torrents` + +Stage 2 (после 50+ просмотров): персонализированные рекомендации по профилю (3 списка: вдвоём / один / семейное). + ## Агент-доступ Kraken-Hermes в контейнере (`hermes-kraken`) доступен через Zulip. Скачать медиа: diff --git a/wiki/index.md b/wiki/index.md index 898e262d..53525c85 100644 --- a/wiki/index.md +++ b/wiki/index.md @@ -9,7 +9,7 @@ updated: '2026-05-16' # Wiki Index Auto-maintained catalog of all pages in `wiki/`. Updated by the daily curation cron. -> Last updated: 2026-05-18 | Total pages: 22 +> Last updated: 2026-05-19 | Total pages: 27 ## Core Architecture @@ -34,7 +34,9 @@ Auto-maintained catalog of all pages in `wiki/`. Updated by the daily curation c - [[concepts/agent-memory-architecture]] — Three-level memory model (episodic/semantic/procedural) for LLM agents; overflow rules; Hermes implementation - [[concepts/vault-strategy]] — Three distinct vault tasks: enrichment, LLM wiki accumulation, proactive research; topic map principle -- [[concepts/kraken-media-stack]] — Full Kraken media server: media-pipeline (Swift) + *arr stack + Jellyfin; pitfalls synthesis +- [[concepts/kraken-media-stack]] — Full Kraken media server: media-pipeline (Swift) + *arr stack + Jellyfin + watchlist-sync; pitfalls synthesis +- [[concepts/executor-orchestrator]] — Executor-as-worker pattern: Eagle spawns Executor as separate Hermes profile; auto-approval rules; GTD orchestration idea +- [[concepts/knowledge-lifecycle]] — How knowledge moves from session to permanent memory: barriers, tools, degradation risks ## Entities @@ -44,8 +46,11 @@ Auto-maintained catalog of all pages in `wiki/`. Updated by the daily curation c - [[tech/media-pipeline-pitfalls]] — Swift media-pipeline: §9.x score engine, transliteration, KP rate limit, Docker run pattern - [[tech/vault-namespace]] — Vault namespace rules: work/personal/family separation, write permissions, agent access -- [[tech/kraken-network]] — Kraken network topology, WireGuard, media volume mount paths +- [[tech/kraken-network]] — Kraken network topology, WireGuard, media volume mount paths, *arr stack, HDD error recovery - [[tech/htpc-steam-emulators]] — HTPC Steam/emulator rules, gamepad config, save paths +- [[tech/hermes-docker-kraken]] — Hermes Docker on Kraken: docker run rules, HERMES_SKIP_CHOWN, pitfalls +- [[tech/jellyfin-transcode-rpi5]] — Jellyfin PGS/ASS subtitle transcoding pitfalls on RPi5; pgsrip conversion; Transmission hook +- [[tech/truenas-inpxer]] — TrueNAS inpxer book library: paths, Badger DB lock pitfall ## Workflows diff --git a/wiki/log.md b/wiki/log.md index 6987dc2f..facf9da6 100644 --- a/wiki/log.md +++ b/wiki/log.md @@ -145,3 +145,29 @@ Activity log for the daily Eagle wiki-curation cron job. - **Vault root triage:** 4 empty Untitled*.md files — still 0 bytes, cannot delete via MCP; flagged for manual `rm` - **Lint:** 0 pages with missing wikilinks (fixed above) ✅; no orphans ✅; no broken links ✅; no new pages created + + +## [2026-05-19] wiki-curation | 5 pages created/2 updated, 3 tech pages added to index + +- **Conflict scan:** No git conflict markers found across ~/obsidian/ ✅ +- **Previous run (2026-05-18 02:00):** Status = complete, no Unfinished section — nothing to resume +- **Change detection:** + - `family/projects/watchlist-sync.md` — new watchlist-sync project spec → added note to `concepts/kraken-media-stack.md` + - `family/how-to/openmediavault-rpi5.md` — updated (Transmission hook + PGS→SRT complete) → already captured in `tech/jellyfin-transcode-rpi5.md` (written yesterday by 02:00 run) + - `personal/projects/personal-os/executor-orchestrator-redesign.md` — redesign spec → crystallized to wiki + - `personal/projects/psychologist-app/` — product spec for separate app; not wiki domain, skip +- **Inbox:** `raw/inbox/` empty ✅ +- **Sessions crystallized (2026-05-19):** 2 sessions checked; 0 crystallized (psychologist app UX work — not wiki domain); executor-orchestrator crystallized from personal/ file +- **Pages created (2):** + - `concepts/executor-orchestrator.md` — Eagle/Executor orchestrator pattern, auto-approval rules, Hermes Profiles mechanism + - `concepts/knowledge-lifecycle.md` — synthesis: how knowledge moves from session to permanent memory (barriers, tools, degradation risks) +- **Pages updated (2):** + - `concepts/kraken-media-stack.md` — added watchlist-sync section; bumped updated to 2026-05-19 + - `index.md` — added 5 missing entries (hermes-docker-kraken, jellyfin-transcode-rpi5, truenas-inpxer, executor-orchestrator, knowledge-lifecycle); bumped to 27 pages, 2026-05-19 +- **Frontmatter fixes (3 tech pages missing namespace field):** + - `tech/hermes-docker-kraken.md` — added namespace: work ✅ + - `tech/jellyfin-transcode-rpi5.md` — added namespace: work ✅ + - `tech/truenas-inpxer.md` — added namespace: work ✅ +- **Wikilinks added:** all 3 new tech pages now have 2+ outbound wikilinks ✅ +- **Lint:** 27 pages scanned; frontmatter ✅; wikilinks ✅; orphans: none ✅; sizes: all <200 lines ✅ +- **Validation:** 7 files checked — all OK ✅ diff --git a/wiki/tech/hermes-docker-kraken.md b/wiki/tech/hermes-docker-kraken.md index 4bde9171..0b20d54e 100644 --- a/wiki/tech/hermes-docker-kraken.md +++ b/wiki/tech/hermes-docker-kraken.md @@ -1,6 +1,7 @@ --- title: Hermes Docker на Кракене — Правила запуска type: reference +namespace: work tags: - hermes - docker @@ -44,3 +45,8 @@ docker run -d \ | `HERMES_ALLOW_ROOT_GATEWAY` | `1` | | `HERMES_SKIP_CHOWN` | `1` | | `HERMES_UID/GID` | ❌ не задавать | + +## Связанные страницы + +- [[tech/kraken-network]] — сетевая топология и инфра Кракена +- [[concepts/kraken-media-stack]] — полный медиастек на Кракене diff --git a/wiki/tech/jellyfin-transcode-rpi5.md b/wiki/tech/jellyfin-transcode-rpi5.md index d7228585..e3c8255d 100644 --- a/wiki/tech/jellyfin-transcode-rpi5.md +++ b/wiki/tech/jellyfin-transcode-rpi5.md @@ -1,6 +1,7 @@ --- title: Jellyfin Транскод на RPi5 — PGS/Subtitle Pitfalls type: reference +namespace: work tags: - jellyfin - kraken @@ -71,8 +72,13 @@ pgs-to-srt.sh /media ## Итог по субтитрам | Тип | Direct Play | Транскод | -|-----|------------|---------| +|-----|------------|---------| | Нет субтитров | ✅ | — | | Внешний SRT | ✅ | — | | ASS/SSA | ❌ | burn-in, 275% CPU | | PGS (MKS/MKV) | ❌ | burn-in, 275% CPU | + +## Связанные страницы + +- [[concepts/kraken-media-stack]] — полный медиастек: *arr + Jellyfin + media-pipeline +- [[tech/kraken-network]] — инфра Кракена, HDD error recovery diff --git a/wiki/tech/truenas-inpxer.md b/wiki/tech/truenas-inpxer.md index 284d12e7..cfae4b19 100644 --- a/wiki/tech/truenas-inpxer.md +++ b/wiki/tech/truenas-inpxer.md @@ -1,6 +1,7 @@ --- title: TrueNAS Inpxer — Книги & Pitfalls type: reference +namespace: work tags: - truenas - inpxer @@ -34,3 +35,8 @@ for book in *.epub; do upload "$book"; done # Правильно (последовательно с паузой): for book in *.epub; do upload "$book"; sleep 3; done ``` + +## Связанные страницы + +- [[entities/library-app]] — книжная библиотека на TrueNAS (inpxer UI) +- [[concepts/kraken-media-stack]] — полный стек на Кракене (медиа + книги)