bvandeusen and Claude Opus 5
188e78bbcd
CI & Build / Python lint (push) Successful in 4s
CI & Build / Plugin hooks (push) Successful in 9s
CI & Build / TypeScript typecheck (push) Successful in 54s
CI & Build / integration (push) Successful in 59s
CI & Build / Python tests (push) Successful in 1m37s
CI & Build / Build & push image (push) Successful in 31s
feat(rules): retrieval honours a rule's home — global everywhere, a project's rules only in that project ( #4074 )
...
semantic_search_rules searched every rule the user owned, and every hook arm
called it without a project, so each project's rules were injected into every
other project's sessions and a project rule meant nothing a session could feel.
The search now takes a scope: global rules by default (an unbound session, or a
caller that forgets to say), global plus project N when given project_id (N's
rules only if the caller can read that project, through access.can_read_project),
and every owned rule with everywhere=True. The four hook arms and the report
preference lookup pass the session's project; an explicit
search(content_type="rule") scopes to its project_id, or asks the whole rulebook
without one.
Milestone 414 step 1. Guarded by an AST walk that every hook call site passes
project_id, and an integration test on real Postgres that a rule is reached only
from its home.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01821k5B3Ysecp9fNYs92Kuy
2026-09-15 12:06:34 -04:00
..
2026-05-27 22:39:50 -04:00
2026-03-08 18:46:54 -04:00
2026-09-14 08:43:04 -04:00
2026-09-11 16:22:17 -04:00
2026-08-23 11:05:42 -04:00
2026-08-21 12:34:28 -04:00
2026-07-31 14:52:06 -04:00
2026-08-08 23:51:01 -04:00
2026-09-14 08:33:56 -04:00
2026-08-21 11:13:17 -04:00
2026-08-03 11:37:20 -04:00
2026-08-21 11:13:17 -04:00
2026-08-07 13:01:45 -04:00
2026-08-31 08:09:09 -04:00
2026-06-03 16:16:44 -04:00
2026-08-21 11:03:48 -04:00
2026-09-02 14:59:41 -04:00
2026-09-14 22:04:38 -04:00
2026-09-14 18:54:49 -04:00
2026-05-27 22:39:50 -04:00
2026-09-11 16:26:56 -04:00
2026-09-14 13:29:34 -04:00
2026-08-28 15:22:50 -04:00
2026-09-02 16:55:22 -04:00
2026-09-11 16:22:17 -04:00
2026-08-21 11:03:48 -04:00
2026-08-31 08:09:09 -04:00
2026-08-21 11:03:48 -04:00
2026-09-14 22:04:38 -04:00
2026-09-11 16:22:17 -04:00
2026-08-21 11:03:48 -04:00
2026-09-14 08:43:04 -04:00
2026-09-14 08:43:04 -04:00
2026-09-10 21:14:29 -04:00
2026-09-15 12:06:34 -04:00
2026-09-11 16:38:14 -04:00
2026-09-11 16:22:17 -04:00
2026-08-29 23:46:15 -04:00
2026-08-23 21:30:21 -04:00
2026-08-21 11:13:17 -04:00
2026-08-27 15:55:04 -04:00
2026-08-28 12:06:43 -04:00
2026-08-21 11:20:36 -04:00
2026-06-03 15:48:35 -04:00
2026-06-03 15:48:35 -04:00
2026-08-24 01:28:07 -04:00
2026-08-17 12:54:58 -04:00
2026-09-14 08:33:56 -04:00
2026-09-14 22:04:38 -04:00
2026-09-14 19:48:24 -04:00
2026-08-30 13:17:52 -04:00
2026-09-14 08:33:56 -04:00
2026-08-21 11:13:17 -04:00
2026-09-14 22:04:38 -04:00
2026-09-14 17:43:16 -04:00
2026-09-11 16:22:17 -04:00
2026-09-15 12:06:34 -04:00
2026-08-30 13:17:52 -04:00
2026-08-26 13:02:09 -04:00
2026-08-21 11:13:17 -04:00
2026-08-27 15:55:04 -04:00
2026-08-21 11:13:17 -04:00
2026-08-21 11:13:17 -04:00
2026-09-14 22:04:38 -04:00
2026-09-02 18:05:00 -04:00
2026-08-21 11:13:17 -04:00
2026-08-23 21:27:27 -04:00
2026-09-02 00:38:50 -04:00
2026-09-02 00:15:45 -04:00
2026-09-10 21:59:23 -04:00
2026-08-06 08:51:21 -04:00
2026-08-30 13:10:04 -04:00
2026-08-28 16:01:28 -04:00
2026-09-14 18:37:13 -04:00
2026-09-14 10:06:45 -04:00
2026-09-11 20:11:43 -04:00
2026-08-21 11:13:17 -04:00
2026-06-03 15:48:35 -04:00
2026-06-14 17:53:24 -04:00
2026-08-21 11:13:17 -04:00
2026-06-03 15:48:35 -04:00
2026-09-11 16:22:17 -04:00
2026-07-28 18:42:29 -04:00
2026-06-13 23:14:54 -04:00
2026-06-03 15:48:35 -04:00
2026-06-03 15:48:35 -04:00
2026-09-04 20:11:42 -04:00
2026-09-11 14:07:32 -04:00
2026-09-11 16:22:17 -04:00
2026-09-15 12:06:34 -04:00
2026-06-03 15:48:35 -04:00
2026-08-28 12:06:43 -04:00
2026-09-11 16:33:16 -04:00
2026-08-26 12:31:18 -04:00
2026-08-27 18:43:45 -04:00
2026-08-21 11:13:17 -04:00
2026-08-21 11:13:17 -04:00
2026-08-21 11:03:48 -04:00
2026-08-19 11:23:22 -04:00
2026-08-28 12:06:43 -04:00
2026-08-21 11:03:48 -04:00
2026-08-28 16:59:41 -04:00
2026-08-21 11:03:48 -04:00
2026-08-28 15:42:12 -04:00
2026-08-08 23:47:34 -04:00
2026-09-14 08:43:04 -04:00
2026-06-14 12:22:22 -04:00
2026-09-14 22:04:38 -04:00
2026-09-14 22:04:38 -04:00
2026-09-14 08:33:56 -04:00
2026-09-14 17:43:16 -04:00
2026-06-10 01:33:58 -04:00
2026-09-14 18:34:46 -04:00
2026-09-09 21:24:32 -04:00
2026-08-26 15:00:49 -04:00
2026-09-02 23:06:40 -04:00
2026-09-11 16:22:17 -04:00
2026-07-28 18:42:29 -04:00
2026-08-21 11:13:17 -04:00
2026-08-26 13:02:09 -04:00
2026-08-21 11:03:48 -04:00
2026-09-09 00:04:33 -04:00
2026-09-11 20:30:06 -04:00
2026-08-23 21:27:27 -04:00
2026-08-21 11:13:17 -04:00
2026-08-21 11:13:17 -04:00
2026-08-16 13:05:00 -04:00
2026-08-09 10:33:11 -04:00
2026-08-23 22:36:04 -04:00
2026-08-21 15:14:34 -04:00
2026-08-21 11:13:17 -04:00
2026-08-28 15:42:12 -04:00
2026-08-21 11:03:48 -04:00
2026-08-21 11:13:17 -04:00
2026-08-21 11:03:48 -04:00
2026-07-30 12:53:57 -04:00
2026-08-21 11:13:17 -04:00
2026-09-11 11:48:14 -04:00
2026-06-03 15:48:35 -04:00
2026-06-03 15:48:35 -04:00
2026-08-29 00:10:43 -04:00
2026-08-31 00:45:22 -04:00
2026-08-21 11:13:17 -04:00
2026-08-21 11:14:44 -04:00
2026-06-03 15:48:35 -04:00
2026-09-02 11:23:43 -04:00
2026-09-11 14:36:18 -04:00