--- id: "bug-1577" status: "fixed" status_updated: "2026-09-24" status_note: "" component: "unknown" severity: "crash" timestamp: "2026-08-17T00:00:00Z" last_seen: "2026-09-19T09:00:00Z" occurrences: 1 files: [".claude/skills/xce-test-resources/run-resource-verify.sh"] tags: ["resource-value-verification", "xce-deploy-ha", "worker-daemon", "bug-1572", "task-6.1"] related: ["bug-1572"] legacy: true --- # bug-1577: No explicit error -- discovered via live testing task 6.1 (resource-value-verification)… ## Description No explicit error -- discovered via live testing task 6.1 (resource-value-verification): xce-deploy-ha's deploy-ha.sh Step 3 opt-in-by-presence worker branch (predates this feature) generates start-worker.sh whenever a worker binary (xcecd_virtual) happens to exist alongside the controller build, and generated start-all.sh always launches it. run-resource-verify.sh's own deployment (task 5.1+6.1) unconditionally hit this since a full `/xce-build all` leaves xcecd_virtual built. Result: a REAL worker daemon ('worker-1') ran for the whole duration of every xce-test-resources run, silently violating Requirement 2.1's design intent ('no real worker daemon process required') and periodically re-reporting its own resources (~every 15s) -- a live risk of triggering the still-open bug-1572 (scheduler double-free/crash on a resource's 2nd periodic report) if a run happened to last that long. ## Environment _Not recorded (migrated from buglog.json)._ ## Reproduction _Not recorded (migrated from buglog.json)._ ## Root cause deploy-ha.sh's worker-detection/start-all.sh generation is out of this task's edit boundary (xce-deploy-ha files are done/approved for this feature) and has no flag to skip the worker step -- it only conditionally starts one when a binary is present, with no opt-out. ## Fix start_all() now exports XCE_WORKER_BIN=/bin/true before invoking the generated start-all.sh. The generated start-worker.sh already reads ${XCE_WORKER_BIN:-} at RUN time from its own inherited environment, so pointing it at a real no-op binary makes the worker step exit immediately with no persistent process, without touching deploy-ha.sh itself. Verified via a /proc/*/exe-based watcher (not pgrep -f text matching, which self-matches -- see bug-1576) across a full default-resource-set run: zero xcecd_virtual/xcecd/xcecd_worker processes at any point post-fix, versus one running the entire time pre-fix. ## Verification _Not recorded (migrated from buglog.json)._ ## References - Related: bug-1572