Two design questions answered:
1. Web/news/Karakeep INTO long-term memory? Yes, but with per-source TTL.
docs/08 gains a "Memory sources & retention" section that pins TTLs:
memo/obsidian/karakeep = permanent, mail = 365d, mail_digest = 90d,
rss = 30d, web_search = 90d, system = 30d. Every Qdrant point carries
payload.expires_at; a daily prune workflow honours it. New commands
in docs/05: #nexa:learn --permanent, #nexa:forget, #nexa:retain,
#nexa:ask --web (SearXNG → crawl4ai-mcp → markitdown-mcp → embed).
Phase 2.4 added to roadmap.
2. Re-ask unanswered open questions. Backoff schedule (3d → 7d → 21d →
60d) tracked in GraphDB per question. Surface ONE question per day
in the morning digest, but only when the digest is otherwise short
(capacity guard < 800 chars). User reply parsed → question auto-
resolved → docs/11 diff proposed (Phase 6.4 hook). New commands in
docs/05: #nexa:digest, #nexa:remind, #nexa:answered. Phase 5.3 added.
UNAS Pro details from the UniFi Drive dashboard:
- It's a Ubiquiti UNAS Pro (UniFi Drive 4.1.16 on UniFi OS 5.0.17),
SFP+, RAID 6, 19.96 TiB raw, 2.05 TiB used. Recorded in CLAUDE.md.
- SMB native paths: smb://192.168.1.31/<share> (mac) / \\192.168.1.31\
<share> (win). UniFi recommends SMB as the modern path — matches our
decision to default Nexa volumes to SMB.
- ⚠️ Storage-pool snapshots NOT configured ("Click to Setup"). Added as
optimization #38: highest-leverage data-protection change in the
homelab right now. Daily + weekly UniFi Drive snapshot, native, no
agent. RAID 6 doesn't protect against rm -rf or accidental mass-
delete; snapshots do.
- #39: Nexa workflows that mutate large state can use the same native
snapshots for fast rollback (pre-snapshot → operate → verify).
Verified from screenshots:
- Q6/Q7 → Lists & calendars discovered by NAME, not by ID. Names confirmed:
"Persönlich" (personal), "DLR" (work), "Einkaufsliste" (shopping),
"Wunschliste" (wishes). Self-healing: #nexa:config runs daily and on
cache-miss, so user-added lists become routable without code changes.
Routing logic in docs/07 expanded from 2-way to 4-way switch with a
Resolver step that consults the Qdrant _config cache before fanning out;
default route is "Persönlich" when SAIA confidence < 0.7.
- Q8 → Single Nextcloud Mail account fkrebs@nucli.de. No separate IMAP.
The "Waiting" folder is honored as a manual user signal — items there are
excluded from digest.
- Q9 → Pocket-ID SSO is global at the Zoraxy layer; Nexa surfaces inherit
it. No app-level basic-auth. Q10 folded in.
- Q11 → Capacity confirmed: 22 threads (Core Ultra 7 155H), 62 GiB RAM
(~32 GiB used, ~24 GiB of which is ZFS ARC), 1.64 TiB disk (0.35%).
Phase-3 budget (~7 GB) is comfortable; two levers documented (raise
LXC cap, or cap zfs_arc_max). Earlier "16 CPU" references corrected.
Propagation:
- system_prime.txt rewritten with the four context labels and the new
list names; legacy NC_LIST_ID_* placeholders removed.
- docs/04 integration matrix uses the German names directly.
- docs/05 documents that #nexa:config also runs scheduled and on
cache-miss, with the example output reflecting real list IDs.
- docs/09 step 6 mirrors the same flow + lists the Waiting-folder
semantics.
- CLAUDE.md gets an authoritative block of homelab decisions so future
agents don't re-litigate any of these.
New section in docs/12 (#17–25): Proxmox host tuning suggestions
based on the live node summary — cap ZFS ARC (frees ~16 GiB),
enable KSM (~1-3 GiB savings across 40 containers), suppress the
no-subscription banner, drop swappiness, verify scrub/SMART/fstrim
timers, NTP via AdGuard.