Skip to content
Open
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
44 changes: 24 additions & 20 deletions desloppify/engine/_work_queue/snapshot.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,6 @@
WORKFLOW_DEFERRED_DISPOSITION_ID,
WORKFLOW_RUN_SCAN_ID,
)
from desloppify.engine._plan.schema import (
executable_objective_ids as _executable_objective_ids,
live_planned_queue_ids as _live_planned_queue_ids,
)
from desloppify.engine._plan.refresh_lifecycle import (
LIFECYCLE_PHASE_ASSESSMENT_POSTFLIGHT,
LIFECYCLE_PHASE_EXECUTE,
Expand All @@ -29,12 +25,17 @@
current_lifecycle_phase,
derive_display_phase,
)
from desloppify.engine._plan.schema import (
executable_objective_ids as _executable_objective_ids,
)
from desloppify.engine._plan.schema import (
live_planned_queue_ids as _live_planned_queue_ids,
)
from desloppify.engine._plan.triage.snapshot import build_triage_snapshot
from desloppify.engine._state.filtering import path_scoped_issues
from desloppify.engine._state.issue_semantics import (
counts_toward_objective_backlog,
is_assessment_request,
is_review_work_item,
is_triage_finding,
)
from desloppify.engine._state.schema import StateModel
Expand Down Expand Up @@ -505,21 +506,24 @@ def _build_backlog(
p: _Partitions,
execution_ids: set[str],
) -> list[WorkQueueItem]:
return [
item
for item in (
[
*p.objective_items,
*p.initial_review_items,
*p.postflight_assessment_items,
*p.review_issue_items,
*p.scan_items,
*p.postflight_workflow_items,
*p.triage_items,
]
)
if item.get("id", "") not in execution_ids
]
backlog: list[WorkQueueItem] = []
seen_ids = set(execution_ids)
for item in (
*p.objective_items,
*p.initial_review_items,
*p.postflight_assessment_items,
*p.review_issue_items,
*p.scan_items,
*p.postflight_workflow_items,
*p.triage_items,
):
item_id = item.get("id", "")
if item_id and item_id in seen_ids:
continue
if item_id:
seen_ids.add(item_id)
backlog.append(item)
return backlog


# ---------------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
from __future__ import annotations

from desloppify.engine._plan.refresh_lifecycle import carry_forward_subjective_review
from desloppify.engine._work_queue.core import QueueBuildOptions
from desloppify.engine._work_queue.core import build_work_queue as _build_work_queue
from desloppify.engine.planning.queue_policy import (
build_backlog_queue,
build_execution_queue,
)
from desloppify.engine._work_queue.core import QueueBuildOptions
from desloppify.engine._work_queue.core import build_work_queue as _build_work_queue


def build_work_queue(state, **kwargs):
Expand Down Expand Up @@ -527,6 +527,7 @@ def test_backlog_queue_excludes_execution_objective_items():
ids = [item["id"] for item in queue["items"]]
assert "smells::src/a.py::planned" not in ids
assert "smells::src/b.py::unplanned" in ids
assert ids.count("smells::src/b.py::unplanned") == 1
assert "workflow::run-scan" not in ids


Expand Down