Skip to content

v3.30.6: release claims when recurring tasks advance - #99

Merged
puretensor merged 1 commit into
mainfrom
audit/recurrence-release-claim
Sep 12, 2026
Merged

puretensor merged 1 commit into
mainfrom
audit/recurrence-release-claim

Conversation

@puretensor

@puretensor puretensor commented Sep 12, 2026 •

Copy link
Copy Markdown
Owner

Completing a claimed recurring task advances its deadline but leaves it in_progress, so the next occurrence cannot be claimed. Completing snoozed recurring work similarly retains the previous snooze.

The recurrence transaction now resets the next occurrence to todo/legacy pending and clears snoozed_until, preserving the UUID and PT-N. It also checks current terminal state inside the transaction: completing a stale reference cannot revive a dismissed recurrence. The recurrence guide now describes in-place advancement and actual supported grammar/CLI options.

Original-code evidence at a95a43b: cargo test -p ptask-core recurring_completion_releases --locked failed because the next occurrence remained in_progress instead of todo. The fixed regression covers both fixed and completion-relative schedules, claimed and snoozed states, stable identity, matching recurrence deadline and a subsequent successful claim. A separate stale-reference test checks that a dismissed task, schedule and event cursor remain unchanged. Severity: medium; recurring agent work becomes unavailable after its first completion.

Validation on Rust 1.98.1, all exit 0:

cargo test --workspace --locked
cargo clippy --workspace --all-targets --locked -- -D warnings
cargo build --workspace --locked
cargo test -p ptask-distill --features native-ml --locked
cargo clippy -p ptask-distill --all-targets --features native-ml --locked -- -D warnings
cargo fmt --all -- --check
cargo deny check advisories licenses sources
bash scripts/ci-version-check.sh
bash scripts/generated-artifacts.sh --check
bash scripts/ci-production-build-check.sh
actionlint
python3 -m unittest discover -s scripts/tests -v
PYTHONPATH=dashboard python3 -m unittest discover -s dashboard/tests -v
node --test dashboard/tests/face_unlock.test.mjs dashboard/tests/face_unlock_markup.test.mjs dashboard/tests/domains_markup.test.mjs
git diff --check
git diff origin/main -- . ':!Cargo.lock' | gitleaks stdin --redact --no-banner --log-level warn

Builds used a dedicated audit target directory and CPU fence; database tests used disposable stores.

Compatibility: active recurring completion releases the previous occurrence's claim/snooze. Terminal recurring tasks must be explicitly reopened before another completion. No schema change, dependency update or production activity. Workspace, internal requirements, lockfile and manpage bump together to v3.30.6. Independent branch from main at a95a43b; reconcile version metadata when landing multiple independent audit PRs. No overlapping open issue or PR. Remote CI is separate from the executed local results above.

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.0 and unused BSD-2-Clause allowance warnings. The upstream-backed chacha20 correction is isolated in PR #102, not folded into this defect branch.

@puretensor
puretensor force-pushed the audit/recurrence-release-claim branch from 49ab488 to 2f645b1 Compare September 12, 2026 09:59
@puretensor
puretensor merged commit 279e34d into main Sep 12, 2026
7 checks passed
@puretensor
puretensor deleted the audit/recurrence-release-claim branch September 12, 2026 09:59
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