diff --git a/tests/test_integration_embedding_yields_to_delete.py b/tests/test_integration_embedding_yields_to_delete.py index 356562b..265b44e 100644 --- a/tests/test_integration_embedding_yields_to_delete.py +++ b/tests/test_integration_embedding_yields_to_delete.py @@ -75,9 +75,9 @@ async def seeded(): book = await rulebooks_svc.create_rulebook(uid, "Lock fixtures") topic = await rulebooks_svc.create_topic(book.id, uid, "locks") rule = await rulebooks_svc.create_rule( - when_to_apply="when the moment this fixture stands in for arises", topic.id, uid, "A rule with vectors", "Something for the embedder to index.", + when_to_apply="when the moment this fixture stands in for arises", ) async with async_session() as s: note = Note(user_id=uid, title="A note with vectors", body="Body text.") diff --git a/tests/test_integration_rule_verification.py b/tests/test_integration_rule_verification.py index 4523442..9e94f52 100644 --- a/tests/test_integration_rule_verification.py +++ b/tests/test_integration_rule_verification.py @@ -44,11 +44,11 @@ async def constraint(): book = await rulebooks_svc.create_rulebook(uid, "Environment facts") topic = await rulebooks_svc.create_topic(book.id, uid, "ci") rule = await rulebooks_svc.create_rule( - when_to_apply="when the moment this fixture stands in for arises", topic.id, uid, "The runner has no bash", "Write every `run:` step in POSIX sh.", verify_with="read the workflow's shell setting", expires_when="the runner can be given a bash shell", + when_to_apply="when the moment this fixture stands in for arises", ) async with async_session() as s: row = await s.get(Rule, rule.id) @@ -154,18 +154,18 @@ async def rulebook_of_three(): book = await rulebooks_svc.create_rulebook(uid, "Sweep fixture") topic = await rulebooks_svc.create_topic(book.id, uid, "mixed") decision = await rulebooks_svc.create_rule( - when_to_apply="when the moment this fixture stands in for arises", topic.id, uid, "dev is home", "Work directly on dev.", + when_to_apply="when the moment this fixture stands in for arises", ) never = await rulebooks_svc.create_rule( - when_to_apply="when the moment this fixture stands in for arises", topic.id, uid, "The runner has no bash", "Use POSIX sh.", verify_with="read the workflow's shell setting", + when_to_apply="when the moment this fixture stands in for arises", ) stale = await rulebooks_svc.create_rule( - when_to_apply="when the moment this fixture stands in for arises", topic.id, uid, "Bumps need a dashboard tick", "Tick it first.", verify_with="cat CI-runner/renovate/config.js", + when_to_apply="when the moment this fixture stands in for arises", ) async with async_session() as s: row = await s.get(Rule, stale.id) diff --git a/tests/test_integration_rule_versions.py b/tests/test_integration_rule_versions.py index 9ebeed4..9b40533 100644 --- a/tests/test_integration_rule_versions.py +++ b/tests/test_integration_rule_versions.py @@ -57,11 +57,11 @@ async def constraint(): book = await rulebooks_svc.create_rulebook(uid, "History fixtures") topic = await rulebooks_svc.create_topic(book.id, uid, "ci") rule = await rulebooks_svc.create_rule( - when_to_apply="when the moment this fixture stands in for arises", topic.id, uid, "The runner has no bash", "Write every `run:` step in POSIX sh.", why="the image ships no bash", verify_with="read the workflow's shell setting", + when_to_apply="when the moment this fixture stands in for arises", ) return {"uid": uid, "rule_id": rule.id} @@ -259,8 +259,8 @@ async def test_a_version_cannot_be_read_through_a_DIFFERENT_rule(constraint): rule = await s.get(Rule, constraint["rule_id"]) topic_id = rule.topic_id sibling = await rulebooks_svc.create_rule( - when_to_apply="when the moment this fixture stands in for arises", topic_id, constraint["uid"], "A different rule", "Unrelated.", + when_to_apply="when the moment this fixture stands in for arises", ) assert await rulebooks_svc.get_rule_version( diff --git a/tests/test_mcp_tool_rulebooks.py b/tests/test_mcp_tool_rulebooks.py index 458d826..202a30b 100644 --- a/tests/test_mcp_tool_rulebooks.py +++ b/tests/test_mcp_tool_rulebooks.py @@ -62,8 +62,8 @@ async def test_create_rule_passes_required_fields(): with patch("scribe.mcp.tools.rulebooks.rulebooks_svc.create_rule", mock), _plain_detail(): from scribe.mcp.tools.rulebooks import create_rule await create_rule( - when_to_apply="when the moment this fixture stands in for arises", topic_id=10, title="dev is home", statement="Work directly on dev", + when_to_apply="when the moment this fixture stands in for arises", ) kwargs = mock.call_args.kwargs assert kwargs["user_id"] == 7 @@ -80,8 +80,7 @@ async def test_create_rule_blocked_by_duplicate_gate(): AsyncMock(return_value=dup)), \ patch("scribe.mcp.tools.rulebooks.rulebooks_svc.create_rule", create_mock): from scribe.mcp.tools.rulebooks import create_rule - out = await create_rule(topic_id=10, title="dev is home", statement="x") - when_to_apply="when the moment this fixture stands in for arises", + out = await create_rule(topic_id=10, title="dev is home", statement="x", when_to_apply="when the moment this fixture stands in for arises") assert out["duplicate"] is True assert out["existing_id"] == 47 assert "update_rule" in out["message"] @@ -96,8 +95,7 @@ async def test_create_rule_force_bypasses_duplicate_gate(): AsyncMock(return_value=fake_rule(id=5, title="r", statement="s", topic_id=10))), \ _plain_detail(): from scribe.mcp.tools.rulebooks import create_rule - out = await create_rule(topic_id=10, title="dev is home", statement="x", force=True) - when_to_apply="when the moment this fixture stands in for arises", + out = await create_rule(topic_id=10, title="dev is home", statement="x", force=True, when_to_apply="when the moment this fixture stands in for arises") assert out["id"] == 5 find_mock.assert_not_called() @@ -248,10 +246,10 @@ async def test_create_project_rule_passes_required_fields(): with patch("scribe.mcp.tools.rulebooks.rulebooks_svc.create_project_rule", mock), _plain_detail(): from scribe.mcp.tools.rulebooks import create_project_rule await create_project_rule( - when_to_apply="when the moment this fixture stands in for arises", project_id=42, statement="Always run migrations through alembic, not raw SQL.", why="audit trail", + when_to_apply="when the moment this fixture stands in for arises", ) kwargs = mock.call_args.kwargs assert kwargs["user_id"] == 7 @@ -267,9 +265,9 @@ async def test_create_project_rule_derives_title_from_statement(): with patch("scribe.mcp.tools.rulebooks.rulebooks_svc.create_project_rule", mock), _plain_detail(): from scribe.mcp.tools.rulebooks import create_project_rule await create_project_rule( - when_to_apply="when the moment this fixture stands in for arises", project_id=42, statement="Avoid auto-generated docstrings. Reviewers find them noise.", + when_to_apply="when the moment this fixture stands in for arises", ) kwargs = mock.call_args.kwargs # Title should be derived from the first sentence, capped at 50 chars @@ -283,10 +281,10 @@ async def test_create_project_rule_uses_explicit_title_when_given(): with patch("scribe.mcp.tools.rulebooks.rulebooks_svc.create_project_rule", mock), _plain_detail(): from scribe.mcp.tools.rulebooks import create_project_rule await create_project_rule( - when_to_apply="when the moment this fixture stands in for arises", project_id=42, statement="anything", title="no auto-docstrings", + when_to_apply="when the moment this fixture stands in for arises", ) kwargs = mock.call_args.kwargs assert kwargs["title"] == "no auto-docstrings" diff --git a/tests/test_preference_write_path.py b/tests/test_preference_write_path.py index 6d56e0c..f7ac662 100644 --- a/tests/test_preference_write_path.py +++ b/tests/test_preference_write_path.py @@ -9,8 +9,7 @@ a rule binds should have agreed to be bound. A preference inverts it. The operator's framing: *"preferences are rules that scribe can and should update during use."* A preference that asks every time never drifts, and drifting is the whole feature. Reaching one through -`create_rule(kind=...)` would mean reading it through the gate's prose, and -when_to_apply="when the moment this fixture stands in for arises", +`create_rule(kind=..., when_to_apply="when the moment this fixture stands in for arises")` would mean reading it through the gate's prose, and the caller would hesitate over exactly the act this kind exists to make routine. diff --git a/tests/test_services_rulebooks.py b/tests/test_services_rulebooks.py index 52e6b8d..46c2224 100644 --- a/tests/test_services_rulebooks.py +++ b/tests/test_services_rulebooks.py @@ -140,8 +140,8 @@ async def test_create_rule_requires_owned_topic(): from scribe.services.rulebooks import create_rule with pytest.raises(ValueError, match="topic .* not found"): await create_rule( - when_to_apply="when the moment this fixture stands in for arises", topic_id=999, user_id=7, title="x", statement="y", + when_to_apply="when the moment this fixture stands in for arises", )