Retire the always-on tier — every rule arrives by retrieval (milestone 394) #152

Merged
bvandeusen merged 13 commits from dev into main 2026-09-11 16:43:20 -04:00
3 changed files with 3 additions and 11 deletions
Showing only changes of commit 4eebe271ed - Show all commits
+3 -3
View File
@@ -18,7 +18,7 @@ from scribe.mcp._context import current_user_id
from scribe.services import dedup as dedup_svc from scribe.services import dedup as dedup_svc
from scribe.services import rulebooks as rulebooks_svc from scribe.services import rulebooks as rulebooks_svc
from scribe.services import trash as trash_svc from scribe.services import trash as trash_svc
from scribe.services.rule_usage import record_rule_pulled, record_rule_surfaced from scribe.services.rule_usage import record_rule_pulled
# ── Rulebook CRUD ─────────────────────────────────────────────────────── # ── Rulebook CRUD ───────────────────────────────────────────────────────
@@ -249,7 +249,7 @@ async def create_rule(
topic_id: int, title: str, statement: str, when_to_apply: str = "", topic_id: int, title: str, statement: str, when_to_apply: str = "",
why: str = "", how_to_apply: str = "", order_index: int = 0, why: str = "", how_to_apply: str = "", order_index: int = 0,
arose_from_id: int = 0, verify_with: str = "", expires_when: str = "", arose_from_id: int = 0, verify_with: str = "", expires_when: str = "",
force: bool = False, system_ids: list[int] | None = None, force: bool = False,
) -> dict: ) -> dict:
"""Create a new rule in a rulebook (a SHARED rule — keep it general). """Create a new rule in a rulebook (a SHARED rule — keep it general).
@@ -415,7 +415,7 @@ async def create_project_rule(
project_id: int, statement: str, title: str = "", when_to_apply: str = "", project_id: int, statement: str, title: str = "", when_to_apply: str = "",
why: str = "", how_to_apply: str = "", order_index: int = 0, why: str = "", how_to_apply: str = "", order_index: int = 0,
arose_from_id: int = 0, verify_with: str = "", expires_when: str = "", arose_from_id: int = 0, verify_with: str = "", expires_when: str = "",
force: bool = False, system_ids: list[int] | None = None, force: bool = False,
) -> dict: ) -> dict:
"""Create a rule scoped to a single project (no rulebook needed). """Create a rule scoped to a single project (no rulebook needed).
-4
View File
@@ -18,15 +18,11 @@ import logging
import re import re
import time import time
from sqlalchemy import select
from scribe.models import async_session
from scribe.models.rulebook import RulebookTopic
from scribe.services import design_systems as design_systems_svc from scribe.services import design_systems as design_systems_svc
from scribe.services import knowledge as knowledge_svc from scribe.services import knowledge as knowledge_svc
from scribe.services import notes as notes_svc from scribe.services import notes as notes_svc
from scribe.services import projects as projects_svc from scribe.services import projects as projects_svc
from scribe.services import rulebooks as rulebooks_svc
from scribe.services import shape_ledger as shape_ledger_svc from scribe.services import shape_ledger as shape_ledger_svc
from scribe.services import snippets as snippets_svc from scribe.services import snippets as snippets_svc
from scribe.services.access import label_shared_items, owner_names_for from scribe.services.access import label_shared_items, owner_names_for
-4
View File
@@ -9,7 +9,6 @@ from __future__ import annotations
import logging import logging
from collections.abc import Iterable from collections.abc import Iterable
from datetime import datetime
from typing import Optional from typing import Optional
from sqlalchemy import and_, delete as sql_delete, false as sa_false, insert, or_, select from sqlalchemy import and_, delete as sql_delete, false as sa_false, insert, or_, select
@@ -933,9 +932,6 @@ async def delete_rule(rule_id: int, user_id: int) -> None:
# ── Subscriptions + get_applicable_rules ─────────────────────────────── # ── Subscriptions + get_applicable_rules ───────────────────────────────
from sqlalchemy.exc import IntegrityError
async def subscribe_project( async def subscribe_project(
project_id: int, rulebook_id: int, user_id: int, project_id: int, rulebook_id: int, user_id: int,
) -> None: ) -> None: