@@ -132,10 +132,10 @@ Use `freezegun` or manual timestamp manipulation to test timeout-based behaviour
132132
133133### Checkpoint: Phase 1
134134
135- - [ ] ` uv run pytest --agent-digest=term ` — all tests pass
136- - [ ] ` pre-commit run --all-files ` — clean
137- - [ ] ` TaskQueue ` is fully exercised; concurrent-claim test passes
138- - [ ] Human review before proceeding
135+ - [x ] ` uv run pytest --agent-digest=term ` — all tests pass
136+ - [x ] ` pre-commit run --all-files ` — clean
137+ - [x ] ` TaskQueue ` is fully exercised; concurrent-claim test passes
138+ - [x ] Human review before proceeding
139139
140140### Phase 2: Harness Queue API Endpoints
141141
@@ -156,17 +156,17 @@ The router receives a `TaskQueue` instance via FastAPI dependency injection (use
156156
157157** Acceptance criteria:**
158158
159- - [ ] ` POST /queue/next ` returns 200 + ` TaskMessage ` JSON when a task is available
160- - [ ] ` POST /queue/next ` returns 204 when the queue is empty
161- - [ ] ` POST /queue/complete ` stores the decision and returns 202
162- - [ ] ` POST /queue/heartbeat ` updates ` last_heartbeat ` and returns 202
163- - [ ] All endpoints return 202 immediately (no blocking on downstream work)
164- - [ ] Router is included in ` app ` (registered in ` server.py ` )
159+ - [x ] ` POST /queue/next ` returns 200 + ` TaskMessage ` JSON when a task is available
160+ - [x ] ` POST /queue/next ` returns 204 when the queue is empty
161+ - [x ] ` POST /queue/complete ` stores the decision and returns 202
162+ - [x ] ` POST /queue/heartbeat ` updates ` last_heartbeat ` and returns 202
163+ - [x ] All endpoints return 202 immediately (no blocking on downstream work)
164+ - [x ] Router is included in ` app ` (registered in ` server.py ` )
165165
166166** Verification:**
167167
168- - [ ] ` uv run pytest --agent-digest=term tests/test_queue_router.py ` (written in Task 6)
169- - [ ] ` pre-commit run --all-files `
168+ - [x ] ` uv run pytest --agent-digest=term tests/test_queue_router.py ` (written in Task 6)
169+ - [x ] ` pre-commit run --all-files `
170170
171171** Dependencies:** Tasks 2, 3
172172
@@ -186,14 +186,14 @@ The trigger mechanism is an `asyncio.Event` set in the background loop and reset
186186
187187** Acceptance criteria:**
188188
189- - [ ] ` POST /harness/result ` accepts ` {"task_id": "<uuid>"} ` and returns 202 Accepted
190- - [ ] Receiving the nudge triggers the drain loop event (verified by inspecting ` app.state ` )
191- - [ ] Router is included in ` app `
189+ - [x ] ` POST /harness/result ` accepts ` {"task_id": "<uuid>"} ` and returns 202 Accepted
190+ - [x ] Receiving the nudge triggers the drain loop event (verified by inspecting ` app.state ` )
191+ - [x ] Router is included in ` app `
192192
193193** Verification:**
194194
195- - [ ] ` uv run pytest --agent-digest=term tests/test_result_router.py ` (written in Task 6)
196- - [ ] ` pre-commit run --all-files `
195+ - [x ] ` uv run pytest --agent-digest=term tests/test_result_router.py ` (written in Task 6)
196+ - [x ] ` pre-commit run --all-files `
197197
198198** Dependencies:** Task 4
199199
@@ -212,16 +212,16 @@ Verify HTTP contracts only.
212212
213213** Acceptance criteria:**
214214
215- - [ ] ` POST /queue/next ` — 200 with task body when queue has a task
216- - [ ] ` POST /queue/next ` — 204 when ` claim_next() ` returns ` None `
217- - [ ] ` POST /queue/complete ` — 202; ` TaskQueue.complete() ` called with correct args
218- - [ ] ` POST /queue/heartbeat ` — 202; ` TaskQueue.heartbeat() ` called with correct ` task_id `
219- - [ ] ` POST /harness/result ` — 202; drain event is set
215+ - [x ] ` POST /queue/next ` — 200 with task body when queue has a task
216+ - [x ] ` POST /queue/next ` — 204 when ` claim_next() ` returns ` None `
217+ - [x ] ` POST /queue/complete ` — 202; ` TaskQueue.complete() ` called with correct args
218+ - [x ] ` POST /queue/heartbeat ` — 202; ` TaskQueue.heartbeat() ` called with correct ` task_id `
219+ - [x ] ` POST /harness/result ` — 202; drain event is set
220220
221221** Verification:**
222222
223- - [ ] ` uv run pytest --agent-digest=term tests/test_queue_router.py tests/test_result_router.py `
224- - [ ] ` pre-commit run --all-files `
223+ - [x ] ` uv run pytest --agent-digest=term tests/test_queue_router.py tests/test_result_router.py `
224+ - [x ] ` pre-commit run --all-files `
225225
226226** Dependencies:** Tasks 4, 5
227227
@@ -234,9 +234,9 @@ Verify HTTP contracts only.
234234
235235### Checkpoint: Phase 2
236236
237- - [ ] ` uv run pytest --agent-digest=term ` — all tests pass
238- - [ ] All three queue endpoints + ` /harness/result ` exist and return correct status codes
239- - [ ] Human review before proceeding
237+ - [x ] ` uv run pytest --agent-digest=term ` — all tests pass
238+ - [x ] All three queue endpoints + ` /harness/result ` exist and return correct status codes
239+ - [x ] Human review before proceeding
240240
241241### Phase 3: ` foreman-client ` Package
242242
0 commit comments