Repository navigation
v3.30.8: Apply combined task edits atomically - #101
Merged
Merged
Conversation
puretensor
force-pushed
the
audit/atomic-task-edits
branch
from
September 12, 2026 10:00
3eba4e2 to
8b6ba44
Compare
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.
Problem and evidence
Severity: medium; high confidence. A combined edit could mutate early fields and then reject a later field. An MCP or Rust dashboard request containing a valid title and priority 6 returned an error after changing the title; local
pt editdid the same with a valid title and invalid deadline. The Python sidecar also continued topt priorityafterpt editfailed. Callers could reasonably retry a reported failure while the task and journal already contained partial changes.Regression tests were run against unchanged baseline logic at
a95a43b36c23b41532ee3fd7976e1185c8e9e204(with only regression tests and version metadata added). The MCP/dashboard unchanged-title assertions failed, the corrected local CLI test using a PT-N identifier failed, and the Python HTTP test observed two subprocess calls instead of one.Root cause and fix
The adapters composed separately committed core mutations. Introduce a shared
TaskEditoperation that validates inputs and commits requested fields, recurrence metadata, labels, interactions, and one attributedtask.updatedevent in an IMMEDIATE transaction. Local CLI, MCP, and Rust dashboard edits now use it. Keep existing single-field APIs and post-edit rescoring behavior.The Python sidecar now returns immediately when its first CLI mutation fails.
Regression coverage
The complete fixed-branch workspace suite passed 411 tests, with 49 native-feature tests, 67 dashboard Python tests, 5 script tests, and 35 Node tests also passing.
Validation
Validation on Rust 1.98.1, all exit 0:
Builds used a dedicated audit target directory and CPU fence; database tests used disposable stores.
Independent read-only diff review found no outstanding blockers. Remote CI is separate from these local results and will be reported by the checks on this PR.
Compatibility, residual risks, and rollout
No schema migration, dependency update, production change, or public argument change. A combined Rust edit now emits one event containing the requested fields instead of several separately committed events. Existing event consumers receive the same
task.updatedtype; scoring remains a separate post-commit operation.The Python sidecar still uses separate
pt editandpt prioritycalls for compatibility with existing binaries. A later priority failure cannot roll back an earlier successful edit. This limit is documented; the sidecar change only prevents subsequent mutation after an earlier failure. Remote CLI sync batches are outside this transaction change.Workspace version: 3.30.8; sidecar version: 0.19.2. This PR is independent of the other audit branches and based directly on confirmed
mainata95a43b. Version metadata may need reconciliation when landing multiple audit PRs; no stacking dependency is required.No overlapping open GitHub issue/PR was found before publishing the audit branches. No deployment or merge has been performed.
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.