docs: mark P0-2a complete, unblock P0-2b

Update task tracker: P0-2a is done (15 files, 8 TDD tests, 116/116
pass). P0-2b (Go-side ControlHost + allFlag race fix) is now unblocked.
Also fixed pre-existing goto-clean bug in worker_ctrl that leaked
write lock + reference count on HOST_OPEN/HOST_CLOSE no-op paths.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Rongsong Shen 2026-04-17 07:47:30 +00:00
parent dcb1b4fe25
commit ff940223ec

View file

@ -44,22 +44,23 @@
## P0-2: Host Control via Backend
- [ ] **#6 P0-2a: C-side plumbing for host control**
- `schema/controller.capnp` — Add `HostControl` struct + `hostctrlmsg @21`
- `include/typemap.h` — Add `xce_hostctrl_t* hostctrlmsg;` to body union
- `include/client.h` — Add `xcecli_hostctrl()` declaration
- `include/xceapi.h` — Add `xce_hostctrl()` declaration
- `include/request.h` — Add `xce_hostctrl_req()` declaration
- `lib/client.c` — Implement `xcecli_hostctrl()`
- `lib/xceapi.c` — Implement `xce_hostctrl()` with `cbuf_get()` wait
- `lib/request.c` — Implement `xce_hostctrl_req()` (validate HOST_OPEN/HOST_CLOSE only)
- `lib/helper.c` — Add `Request_body_hostctrlmsg` case to `xce_request_body()` + `xce_request_msg_name()`
- `controller/cluster.c` — Add `OPCode_hostcontrol` case → `do_hostcontrol_op()`
- `controller/worker.c` — Implement `do_hostcontrol_op()` calling `worker_ctrl()`
- `controller/include/cluster.h` — Declare `do_hostcontrol_op()`
- Regenerate capnp: `ninja -C build`
- [x] **#6 P0-2a: C-side plumbing for host control**
- `schema/controller.capnp` — Added `HostControl` struct + `hostctrlmsg @21`
- `include/typemap.h` — Added `xce_hostctrl_t* hostctrlmsg;` to body union (after @20 clrpreasonmsg, matching capnp ordinal)
- `include/client.h` — Added `xcecli_hostctrl()` declaration
- `include/xceapi.h` — Added `xce_hostctrl()` declaration
- `include/request.h` — Added `xce_hostctrl_req()` declaration
- `lib/client.c` — Implemented `xcecli_hostctrl()`
- `lib/xceapi.c` — Implemented `xce_hostctrl()` with `cbuf_get()` wait
- `lib/request.c` — Implemented `xce_hostctrl_req()` (validates HOST_OPEN/HOST_CLOSE only, rejects HOST_TAG/UNTAG)
- `lib/helper.c` — Added `Request_body_hostctrlmsg` case to `xce_request_body()` + `xce_request_msg_name()`
- `controller/cluster.c` — Added `OPCode_hostcontrol` case → `do_hostcontrol_op()`
- `controller/worker.c` — Implemented `do_hostcontrol_op()` calling `worker_ctrl()`; fixed pre-existing `goto clean` bug that leaked write lock + reference count
- `controller/include/cluster.h` — Declared `do_hostcontrol_op()`
- `lib/testsuite/test_request.c` — 8 TDD validation tests (null ep/ctrl/hostname, empty hostname, HOST_DO_NONE no-op, HOST_TAG/UNTAG reject, negative action)
- Regenerated capnp via `ninja -C build`
- [>] **#7 P0-2b: Implement Go-side ControlHost + fix allFlag race** (blocked by #6)
- [ ] **#7 P0-2b: Implement Go-side ControlHost + fix allFlag race** (unblocked)
- `backend/clib.go` — Replace `ControlHost()` stub with real implementation via `xcecli_hostctrl()`
- `controllers/hosts.go` — Fix data race: remove `var allFlag bool`, return from `preCheckHostControlRequest` as local
- `controllers/queues.go` — Same allFlag data race fix (lines 534-536 / 465)