M2.2 of the Development Plan: several work items on the new loop (L1, D4).
What changes
Parking and resuming. When the scheduler switches items, the item on the workspace is parked: its work is committed and its branch pushed, so nothing of a parked item lives only on the build VM. Resuming checks the item's branch back out. A fresh workspace (D3) no longer sets aside branches of open items.
Order. The operator's "do #N next" (or "work on #N first/now") goes first, the latest order first; otherwise the oldest ready item runs. It doesn't unblock.
Blocked items. Open Gitea dependencies (GET /issues/{n}/dependencies) block an issue at intake. Ready and blocked items are rechecked each round, so an item becomes ready once its dependencies close and is blocked if it gains one before it starts. A message to a blocked item gets a "blocked by …" reply.
Acknowledgement and status. The acknowledgement says how many items are ahead and what blocks the item; status shows blocked items and each ready item's place in line.
Tests
test_loop_queue.py covers parking with half-done work and resuming it, blocked items getting unblocked, an item that gains a dependency, the operator's order, and status.
The property walk now runs over several issues, some depending on others, with "do #N next" and half-finished work interrupted by questions. Two new properties:
blocked_never_runs;
parked_work_safe: every file an open item wrote is on the workspace or in the forge.
With parking disabled, the walk fails 3 of 32 seeds.
The e2e suite gained a test with two issues, B depending on A: B stays blocked while A runs, then starts from A's merged work. scripts/e2e.sh passed all 3 tests: the new test after fixing a false positive in its diff check, and the other two on the first run.
Deferred
The grace period before switching away from a waiting item (Development Plan §6, L1, 10 minutes). For now the scheduler switches as soon as the item waits.
Priority labels, and letting the driver choose the next item.
M2.2 of the Development Plan: several work items on the new loop (L1, D4).
## What changes
- **Parking and resuming.** When the scheduler switches items, the item on the workspace is parked: its work is committed and its branch pushed, so nothing of a parked item lives only on the build VM. Resuming checks the item's branch back out. A fresh workspace (D3) no longer sets aside branches of open items.
- **Order.** The operator's "do #N next" (or "work on #N first/now") goes first, the latest order first; otherwise the oldest ready item runs. It doesn't unblock.
- **Blocked items.** Open Gitea dependencies (`GET /issues/{n}/dependencies`) block an issue at intake. Ready and blocked items are rechecked each round, so an item becomes ready once its dependencies close and is blocked if it gains one before it starts. A message to a blocked item gets a "blocked by …" reply.
- **Acknowledgement and status.** The acknowledgement says how many items are ahead and what blocks the item; `status` shows blocked items and each ready item's place in line.
## Tests
- `test_loop_queue.py` covers parking with half-done work and resuming it, blocked items getting unblocked, an item that gains a dependency, the operator's order, and status.
- The property walk now runs over several issues, some depending on others, with "do #N next" and half-finished work interrupted by questions. Two new properties:
- `blocked_never_runs`;
- `parked_work_safe`: every file an open item wrote is on the workspace or in the forge.
With parking disabled, the walk fails 3 of 32 seeds.
- The e2e suite gained a test with two issues, B depending on A: B stays blocked while A runs, then starts from A's merged work. `scripts/e2e.sh` passed all 3 tests: the new test after fixing a false positive in its diff check, and the other two on the first run.
## Deferred
- The grace period before switching away from a waiting item (Development Plan §6, L1, 10 minutes). For now the scheduler switches as soon as the item waits.
- Priority labels, and letting the driver choose the next item.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01PPQ14L3LikyefCMFBqEbKE
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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
M2.2 of the Development Plan: several work items on the new loop (L1, D4).
What changes
GET /issues/{n}/dependencies) block an issue at intake. Ready and blocked items are rechecked each round, so an item becomes ready once its dependencies close and is blocked if it gains one before it starts. A message to a blocked item gets a "blocked by …" reply.statusshows blocked items and each ready item's place in line.Tests
test_loop_queue.pycovers parking with half-done work and resuming it, blocked items getting unblocked, an item that gains a dependency, the operator's order, and status.The property walk now runs over several issues, some depending on others, with "do #N next" and half-finished work interrupted by questions. Two new properties:
blocked_never_runs;parked_work_safe: every file an open item wrote is on the workspace or in the forge.With parking disabled, the walk fails 3 of 32 seeds.
The e2e suite gained a test with two issues, B depending on A: B stays blocked while A runs, then starts from A's merged work.
scripts/e2e.shpassed all 3 tests: the new test after fixing a false positive in its diff check, and the other two on the first run.Deferred
🤖 Generated with Claude Code
https://claude.ai/code/session_01PPQ14L3LikyefCMFBqEbKE