docs(email): point the specs at the canonical module paths

The move left three documents naming `routes/email_routes.py`,
`routes/email_helpers.py` and `routes/email_pollers.py` as where the
code is. The shims keep those import paths working, so nothing breaks —
but each of those files is now seventeen lines that redirect, and a
reader sent there finds no email code at all.

Follows the phrasing specs/persistence.md already uses for the
contacts and vault subpackages: name the canonical path and note the
shims.
This commit is contained in:
Léo
2026-09-30 17:17:39 +02:00
parent 4b4ae592da
commit 1408bce0ab
3 changed files with 5 additions and 4 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
"""odysseus-mail — Unix-style command-line wrapper around the email """odysseus-mail — Unix-style command-line wrapper around the email
backend that powers the web UI. backend that powers the web UI.
Calls the same helpers `routes/email_helpers.py` exports, so a request Calls the same helpers `routes/email/email_helpers.py` exports, so a request
issued from the shell hits IMAP/SMTP through the same connection pool issued from the shell hits IMAP/SMTP through the same connection pool
and the same parsing pipeline as the HTTP routes. State is shared via and the same parsing pipeline as the HTTP routes. State is shared via
`data/app.db` and `data/.app_key` (passwords decrypt automatically). `data/app.db` and `data/.app_key` (passwords decrypt automatically).
+2 -1
View File
@@ -8,7 +8,8 @@ This spec covers mail and contacts in:
- app wiring in `app.py`; - app wiring in `app.py`;
- `core.database.EmailAccount`; - `core.database.EmailAccount`;
- `routes/email_routes.py`, `routes/email_helpers.py`, and `routes/email_pollers.py`; - canonical `routes/email/email_routes.py`, `routes/email/email_helpers.py`, and
`routes/email/email_pollers.py`, plus their shims at the old flat paths;
- email threading in `src/email_thread_parser.py`; - email threading in `src/email_thread_parser.py`;
- email MCP tools in `mcp_servers/email_server.py`; - email MCP tools in `mcp_servers/email_server.py`;
- canonical contact/CardDAV routes in `routes/contacts/contacts_routes.py`, - canonical contact/CardDAV routes in `routes/contacts/contacts_routes.py`,
+2 -2
View File
@@ -16,7 +16,7 @@ This spec covers durable state in:
- `src/attachment_refs.py`, `src/upload_handler.py`, and - `src/attachment_refs.py`, `src/upload_handler.py`, and
`routes/upload_routes.py` for durable upload references and retention; `routes/upload_routes.py` for durable upload references and retention;
- JSON stores managed by `core/auth.py`, `src/settings.py`, `src/api_key_manager.py`, `src/preset_manager.py`, `src/integrations.py`, `src/upload_handler.py`, `src/personal_docs.py`, `src/research_handler.py`, `src/bg_jobs.py`, `routes/prefs_routes.py`, canonical `routes/contacts/contacts_routes.py` and `routes/vault/vault_routes.py` plus their shims, `routes/cookbook_routes.py`, and memory/skills managers; - JSON stores managed by `core/auth.py`, `src/settings.py`, `src/api_key_manager.py`, `src/preset_manager.py`, `src/integrations.py`, `src/upload_handler.py`, `src/personal_docs.py`, `src/research_handler.py`, `src/bg_jobs.py`, `routes/prefs_routes.py`, canonical `routes/contacts/contacts_routes.py` and `routes/vault/vault_routes.py` plus their shims, `routes/cookbook_routes.py`, and memory/skills managers;
- `routes/email_helpers.py` scheduled-email storage; - canonical `routes/email/email_helpers.py` scheduled-email storage;
- `routes/backup_routes.py` and `scripts/odysseus-backup`; - `routes/backup_routes.py` and `scripts/odysseus-backup`;
- runtime data under `data/`. - runtime data under `data/`.
@@ -61,7 +61,7 @@ Email default-account state is serialized per owner. Startup normalizes legacy d
`core/models.py` owns pure dataclasses used by `SessionManager`. It does not own database persistence. `core/models.py` owns pure dataclasses used by `SessionManager`. It does not own database persistence.
`routes/email_helpers.py` owns a second SQLite database at `data/scheduled_emails.db` for scheduled email, summary, reply, tag, sender-signature, urgency-alert, calendar-extraction, and cache state. Its migrations and owner backfills are local to that module, not `core/database.py`, and those auxiliary tables are owner-scoped. `routes/email/email_helpers.py` owns a second SQLite database at `data/scheduled_emails.db` for scheduled email, summary, reply, tag, sender-signature, urgency-alert, calendar-extraction, and cache state. Its migrations and owner backfills are local to that module, not `core/database.py`, and those auxiliary tables are owner-scoped.
## Migration Policy ## Migration Policy