diff --git a/src/fabledassistant/mcp/server.py b/src/fabledassistant/mcp/server.py index 79de92b..d6b1a5b 100644 --- a/src/fabledassistant/mcp/server.py +++ b/src/fabledassistant/mcp/server.py @@ -68,6 +68,19 @@ creating a rule, call list_always_on_rules and list_rules(project_id=...) to avoid duplicates. Coordinate with the operator on whether a new rule belongs in a project, an existing rulebook+topic, or a new rulebook. +That boundary cuts the other way too. Because rules are pull-only, a fresh +session won't reach for them unless its always-loaded context says to. So +when the current project subscribes to a rulebook (enter_project / +get_project reports subscribed_rulebooks), make sure the host's persistent +memory — the CLAUDE.md / AGENTS.md / ~/.claude memory the client loads at +startup — carries a short pointer: that the engineering and workflow rules +for this work live in Scribe and must be loaded via list_always_on_rules (or +enter_project when a project is in scope), plus a one-line note of what the +current project is and what is in flight. Add or refresh that pointer when +it's missing or stale; never copy the rules' content into memory — the +pointer plus project context is the whole job. This is what lets the next +session reach for Scribe instead of trusting a stale local copy. + When you are working on a specific project, call enter_project(project_id) ONCE at session start (or whenever the active project changes). It returns the project, its applicable_rules + project_rules + subscribed_rulebooks, milestone