Skip to content

fix: preserve previous JSON reports on export failures - #6

Merged
lukisch merged 1 commit into
masterfrom
fix/codex-atomic-json-20260930
Sep 30, 2026
Merged

lukisch merged 1 commit into
masterfrom
fix/codex-atomic-json-20260930

Conversation

@lukisch

@lukisch lukisch commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

Der JSON-Exporter kürzte bisher einen vorhandenen Bericht vor der Serialisierung. Ein späterer TypeError hinterließ nur ein JSON-Fragment; Schreibfehler konnten ebenfalls die vorherige Ausgabe beschädigen.

Der Export serialisiert nun zuerst, schreibt UTF-8 vollständig in eine temporäre Datei im Zielverzeichnis, prüft die Schreiblänge, flush/fsync und ersetzt erst danach das Ziel atomar. Vorherige Bytes bleiben bei Fehlern vor dem Dateitausch erhalten. Eigene temporäre Dateien werden aufgeräumt; vorhandene Dateimodi und Berichts-Symlinks bleiben erhalten. Schreibgeschützte Ziele werden vor dem Tausch abgelehnt.

Validierung: sechs ursprüngliche Prüfungen vor Fix fehlgeschlagen; elf Regressionen insgesamt für Serialisierung, Teil-Schreibfehler, fsync/replace, neue/vorhandene Ziele, vollständiges UTF-8, Dateimodus, Read-only und Symlink. Lokal finale Gesamtsuite 225 bestanden, drei Symlink-Skips mangels Windows-Rechten, vier erwartete Latin-1-Warnungen. Ruff und git diff --check bestanden. README DE/EN und llms.txt ergänzt.

Grenzen: keine Sperre gegen konkurrierende externe Schreiber, kein directory-fsync-Versprechen bei Stromausfall. Atomarer Tausch erzeugt einen neuen Inode; andere Hard-Link-Namen werden nicht mitaktualisiert. CLI-Quellschutz aus PR #5 bleibt aktiv. Keine Versionsänderung, kein Release und kein Store-Update.

CI-Abnahme: Head ca5abc5, alle acht Testjobs Windows/Linux/macOS und CodeQL erfolgreich (Run 36774800823). Linux Python 3.13: 228 bestanden; test_report_symlink_is_preserved ausdrücklich PASSED (Job 110089914030).

@github-actions

Copy link
Copy Markdown

Welcome! 👋 Thanks for your first pull request in this repository.

A maintainer will review it soon. Please make sure:

  • Your changes are tested
  • Documentation is updated if needed
  • The PR description explains what and why

Thanks for contributing!

@lukisch
lukisch merged commit f1f9cba into master Sep 30, 2026
13 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