Repository navigation
v3.30.4: preserve sync data on invalid edits and read failures - #97
Merged
Merged
Conversation
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.
Malformed
task_editdeadline values currently clear an existing deadline and report success. Incremental sync also treats every task-row read error as deletion, returning an advanced cursor that can permanently hide an update from a client.This change accepts only strings or explicit JSON null for deadline edits and propagates database/pool/decode failures during delta reads. Missing rows retain the existing tombstone behavior. No schema or valid-request changes are required.
Regression evidence against
a95a43b: a boolean deadline returnedsync_status: okwithdeadline: null; renaming the isolated test database's task table returned HTTP 200 instead of 500. Both regression tests now pass. Coverage also includes numbers/arrays/objects, valid date and null edits, retrying a rejected command ID, missing fields, recovery using the original cursor, and deletion tombstones.Validation on Rust 1.98.1, all exit 0:
The original regression run was
cargo test -p ptask-server routes::sync::tests --locked: two expected failures and one existing pass. Final workspace tests include both fixed regressions. Builds used a dedicated audit target directory and CPU fence; database tests used disposable stores. Remote CI is separate from these local results and will run on this PR.Compatibility: clients receive a command error for invalid deadline types, and HTTP 500 on real delta read failures; they must retry using their previous cursor. Valid inputs, command idempotency and tombstones are preserved. Workspace, internal dependency requirements, lockfile and manpage are bumped together to v3.30.4; no dependencies were upgraded. Independent branch from
mainata95a43b, with no dependency on other audit PRs. Other independent audit PRs also bump version metadata, so reconcile those stamps when landing them. No deployment or production testing performed. No overlapping open issue or PR was found.Additional validation limits
Native-feature tests include existing model-dependent cases that can return early when assets are unavailable; model-loaded coverage is not claimed. Local builds were debug workspace builds, not release or cross-target builds. Dependency-policy checks passed with pre-existing yanked
chacha20 0.10.0and unusedBSD-2-Clauseallowance warnings. The upstream-backed chacha20 correction is isolated in PR #102, not folded into this defect branch.