Skip to content

fix: preserve previous settings when saving fails - #5

Merged
RAMZI0TO99 merged 1 commit into
mainfrom
fix/atomic-settings-save
Nov 4, 2026
Merged

RAMZI0TO99 merged 1 commit into
mainfrom
fix/atomic-settings-save

Conversation

@RAMZI0TO99

Copy link
Copy Markdown
Owner

A failed save can destroy the last valid settings.json: the previous implementation opened the destination in write mode before serialization, so a serialization exception left the old file empty. A partial write could likewise leave invalid JSON.

Serialize first, write to a temporary file in the destination directory, close it, and replace the destination only after the write completes. Clean up the temporary file if writing or replacement fails. This preserves the previous file on ordinary save failures; it does not claim durability across power loss.

Add seven persistence tests covering existing-file replacement, failed serialization (with and without an old file), partial-write failure, replacement failure, first save, and Unicode. Both serialization regressions fail against the original implementation. All 15 lightweight tests now pass locally, including the existing request tests.

The CI workflow now runs the complete lightweight suite on Python 3.11 and 3.13. It installs python-dotenv alongside the existing test dependencies. Ruff check/format for the changed test file, source lint, Compose configuration, and git diff --check pass.

Tests use temporary directories and injected failures. No real credentials, model assets, running inference, or paid APIs are used. Prepared with OpenAI Codex assistance.

@RAMZI0TO99
RAMZI0TO99 merged commit cf2b20e into main Nov 4, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant