The queue: parking, the operator's order, blocked items (M2.2)
CI / checks (push) Skipped
CI / checks (pull_request) Successful in 3m26s

Several work items on the new loop (L1, D4):
- Switching parks the item on the workspace: its work is committed and its
  branch pushed; resuming checks the item's branch back out. Branches of
  open items are never set aside by a fresh workspace.
- Next item: the operator's "do #N next" first, otherwise the oldest.
- Issues with open Gitea dependencies are blocked until they close, checked
  at intake and on every round; status shows blocked items and the line.

Tests: queue unit tests, the property walk over several issues with
dependencies and a new parked_work_safe property (it catches parking
disabled), and an end-to-end test with two issues where B depends on A.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPQ14L3LikyefCMFBqEbKE
This commit is contained in:
dongarandClaude Opus 5.5 committed 2026-10-04 13:34:09 +00:00
1 parent d504588a57
commit cceb30c729
11 files changed
+657 -85

No files matched your search

+10
View File
@@ -237,6 +237,16 @@ class GiteaClient:
if not item.get("pull_request")
]
def open_dependencies(self, repo: str, index: int) -> list[str]:
"""The issues this one depends on that are still open, as
"owner/repo#N": what blocks it (L1)."""
data = self._request("GET", f"/repos/{repo}/issues/{index}/dependencies")
return [
f"{(item.get('repository') or {}).get('full_name', repo)}#{item['number']}"
for item in data or []
if item.get("state") == "open"
]
def assigned_by(self, repo: str, index: int, assignee: str) -> str | None:
"""Who last assigned the issue to ``assignee``, from its timeline;
None if the timeline doesn't say."""