safety layer: hard daily budget, user quotas, spend report, forgetme + privacy

This commit is contained in:
Oleksandr Kozachuk
2026-07-13 13:21:45 +02:00
parent f6c3e7d8e5
commit 02c989946b
11 changed files with 465 additions and 6 deletions
+3 -3
View File
@@ -10,7 +10,7 @@ from pathlib import Path
from unittest.mock import MagicMock
from fjerkroa_bot.ai_responder import AIMessage, AIResponder
from fjerkroa_bot.persistence import PersistentStore
from fjerkroa_bot.persistence import SCHEMA_VERSION, PersistentStore
from .test_bdd_envelope import FakeModelResponder, envelope
from .test_main import TestBotBase
@@ -78,12 +78,12 @@ class TestPickleMigration(StoreBase):
class TestDatabaseHygiene(StoreBase):
def test_wal_version_and_permissions(self):
"""PER-04: WAL mode, user_version = 1, file mode 0600."""
"""PER-04: WAL mode, user_version = current schema version, file mode 0600."""
PersistentStore(self.db_path)
conn = sqlite3.connect(self.db_path)
try:
self.assertEqual(conn.execute("PRAGMA journal_mode").fetchone()[0], "wal")
self.assertEqual(conn.execute("PRAGMA user_version").fetchone()[0], 1)
self.assertEqual(conn.execute("PRAGMA user_version").fetchone()[0], SCHEMA_VERSION)
finally:
conn.close()
mode = stat.S_IMODE(self.db_path.stat().st_mode)