mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-06-06 20:15:17 +02:00
Per-file verification of the slice-3 candidates showed receipts/ and
date_filters.py are shared contracts (consumed by shared/state + shared
middleware + subagents), so they correctly stay put.
permissions was the real misfit: the rule *model* lived at shared/permissions.py
while its enforcement lived at shared/middleware/permissions/. Unify them into a
single self-contained subsystem:
shared/permissions.py -> shared/permissions/model.py
shared/middleware/permissions/{deny,ask,middleware}
-> shared/permissions/{deny,ask,middleware}
The package __init__ re-exports the model API + build_permission_mw, so the 32
external model consumers keep importing `from ...shared.permissions import Rule`
unchanged; only the 8 internal files redirect to `.model` (cycle-safe, model
loaded before middleware).
|
||
|---|---|---|
| .. | ||
| adapters | ||
| agents | ||
| automations | ||
| connector_indexers | ||
| connectors | ||
| db | ||
| e2e_fakes | ||
| etl_pipeline | ||
| event_bus | ||
| gateway | ||
| google_unification | ||
| indexing_pipeline | ||
| middleware | ||
| notifications | ||
| observability | ||
| routes | ||
| services | ||
| tasks | ||
| utils | ||
| __init__.py | ||
| test_error_contract.py | ||
| test_obsidian_plugin_indexer.py | ||