Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion promptpilot/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -1023,7 +1023,10 @@ def update_series(series_id: int, fields: dict) -> bool:
return False
if "temporary_until" in fields and isinstance(fields["temporary_until"], datetime):
fields["temporary_until"] = _to_utc_iso(fields["temporary_until"])
if fields.get("temporary_recurrence") is None:
# Only an explicit clear ends a temporary cadence. Partial PATCHes such as
# a priority change must leave the active boost and its empty-run limit intact.
if ("temporary_recurrence" in fields
and fields["temporary_recurrence"] is None):
fields.setdefault("temporary_until", None)
fields.setdefault("temporary_empty_limit", None)
fields["temporary_empty_count"] = 0
Expand Down
16 changes: 16 additions & 0 deletions tests/test_schedule_series.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,22 @@ def test_event_only_policy_clears_previous_temporary_boost(isolated_db):
assert result["temporary_empty_count"] == 0


def test_unrelated_series_update_preserves_temporary_boost(isolated_db):
task = isolated_db.create_task(TaskCreate(
prompt="ExampleProject - TRIAGE", recurrence="30m"))
assert isolated_db.update_series(task.series_id, {
"temporary_recurrence": "15m", "temporary_empty_limit": 2,
})

assert isolated_db.update_series(task.series_id, {"priority": 4})

result = isolated_db.get_series(task.series_id)
assert result["priority"] == 4
assert result["temporary_recurrence"] == "15m"
assert result["temporary_empty_limit"] == 2
assert result["temporary_empty_count"] == 0


def test_adaptive_cadence_rejects_stale_profile_revision_guard(isolated_db):
task = isolated_db.create_task(TaskCreate(
prompt="ExampleProject - FIX", recurrence="30m"))
Expand Down
Loading