Repository navigation
Serialize comment storage and schedule retention - #1
Merged
Merged
Conversation
bago
marked this pull request as ready for review
October 9, 2026 12:37
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Concurrent moderation and retention can overwrite edits or recreate deleted pending records. Rewriting rate-limit JSON in place can also erase counters after an interrupted write.
This change serializes complete storage transactions with stable locks and replaces JSON only after a complete, flushed write to a unique temporary file. Empty or damaged rate-limit files fail closed. Publishing the approved record is the approval commit point: retries preserve subsequent edits, and retention removes hidden pending residues without changing the approved record. The daily Grav scheduler job applies the existing 7-day technical-data and 90-day pending-comment policy; pruning supports a dry-run preview.
Validation:
The version remains 0.4.3-dev until a release is prepared. Deployment requires filesystem support for flock and atomic rename, and the host must invoke the Grav scheduler. No site records or private configuration are included. This PR does not merge or publish a release automatically.