Pin the new save-retry contract so future changes can't silently re-introduce the spam reported in #434: - Happy-path saves emit zero ERROR logs. - Transient locks during retries log at DEBUG, not ERROR. - Six attempts run before giving up, with the documented backoff schedule (0.2 + 0.5 + 1.0 + 2.0 + 4.0s). - Genuine exhaustion logs a single ERROR and writes config.json. - sqlite3.OperationalError("database is locked") routes to DEBUG; any other OperationalError still logs ERROR. - _connect_db() actually applies WAL + busy_timeout + synchronous=NORMAL. Also moves `import time` from inside _save_config to the module top so the tests can monkeypatch sleep cleanly. |
||
|---|---|---|
| .. | ||
| config.example.json | ||
| settings.py | ||