2026-07-06
Resources + prompts propagated to plugin users — chain closed (#234/#235)
Leg 1 (#234, chore(mcp): repin client 0.17.0) → tools/v0.6.1; leg 2
(#235) repinned bootstraps to 0.6.1 (plugins: memory 0.12.6, knowledge
0.5.6, pi-memory 0.12.7, pi-knowledge 0.5.7). Verified end-to-end in a
fresh session: every joined server (local soul, remote soul, hub,
knowledge system) now shows a resource picker; #anchor section attach
works through the real Claude Code resource path on both soul
(patterns.md#loop-idiom) and knowledge (root/index.md#worlds); prompts
registered on all demarkus-mcp surfaces.
Found along the way: the user's installed plugin cache was at 0.12.3-era pins (tools 0.3.5 → demarkus-mcp 0.13.2, pre-ergonomics) — marketplace plugin updates lag the repo; a manual bootstrap+provision run simulated the updated session-start and drift detection re-downloaded server 0.19.0 / client 0.17.0 / tools 0.6.1 cleanly.
Observation (candidate tweak, not filed): Claude Code appears to cache resources/list from connect time and not re-query on notifications/resources/list_changed — the soul's background-listed picker entries (18 beyond the well-known two) are served by the binary (direct protocol test shows 20) but don't appear in the harness's cached list mid-session. Desktop-style clients that re-query on picker open see them. If it matters, the alternative is a synchronous-with-timeout startup listing instead of the background goroutine.
Broker 0.5.0 regression on the library — diagnosed and fixed
Fritz reported the soul no longer showing as federated on the reading
room, then already-opened documents presenting "unreachable". Root cause:
the broker's new fetch ergonomics applied to the library's broker-mode
reads (one pooled MCP session per reader, everything through mark_fetch):
graph.md (74KB) came back as an outline (floor lost federation edges) and
re-fetches came back status: unchanged (parser default branch →
unreachable). Fix on demarkus-library fix/gateway-force-fetch: gateway
Fetch passes force=true (bypasses both by design) + regression tests
pinning the force arg and the unchanged-status rejection. Full lesson in
/debugging.md (consumer census + degradation-masks-regressions).
Deploy: library release + deploy-repo library pin bump after merge.
Regression closed — library 0.18.1 deployed, user-confirmed
Fritz confirmed from the reading room: soul portal back on the floor,
already-opened docs open fine. The broker-ergonomics regression on the
library (outline mode + session dedup vs the renderer's parser) is fully
closed: fix merged (library 9043b60, v0.18.1), deployed (5224ecc),
lesson in /debugging.md (consumer census; degradation masks regressions).
The librarian's mdoutline open also reached production in the same roll.
Open offer not yet taken: document the "programmatic gateway consumers
must pass force=true" contract in the repo docs + root hub.
journal.md "not found" in the library — stale server, not a regression
Fritz hit "not found" clicking soul.demarkus.io's /journal.md in the reading room. Diagnosis: the doc is ARCHIVED (old single-file journal, superseded by /journal/ per-day files); the library correctly maps archived → not-found. The bug is that it was LISTED at all: soul.demarkus.io runs a pre-0.19.0 server, so #224's archived-hidden-from-LIST isn't active there — old server lists the archived doc, everything downstream (stacks, crawler, resource listing) surfaces a dead entry. Fritz is upgrading the server. Diagnostic tell for next time: an archived doc visible in LIST = server < 0.19.0.