agent/pkg
Snider d47946ff82 feat(agent/process): add Timeout + GracePeriod + KillGroup to dispatch (#540)
Per RFC.pipeline.md "go-process Improvements Needed": hung agent
processes blocked dispatch slots forever. Now killed after configured
timeout, with SIGTERM-then-SIGKILL grace period and process-group kill
to prevent orphaned subprocesses.

Lands:
* pkg/agentic/dispatch.go — every c.Process().Run() that spawns an
  agent now passes Timeout (DispatchConfig.TimeoutMinutes, default 60),
  GracePeriod: 30s, KillGroup: true. Watchdog writes timeout-specific
  failure reason into workspace status.
* pkg/agentic/queue.go — DispatchConfig adds TimeoutMinutes int (YAML:
  timeout_minutes, default 60) so operators can tune per-deployment.
* dispatch_test.go — TestDispatch_Run_Bad_Timeout asserts slow process
  transitions to failed state with timeout reason
* queue_test.go — TestQueue_Config_Good_TimeoutDefault asserts default 60

Verified go-process exposes timeout/gracePeriod/killGroup option keys
in the local checkout — no BLOCKED sibling needed.

Plain go build blocked by unrelated go.work conflict + sibling go-ws
coreerr.Warn missing (out of allowlist); supervisor's clean workspace
build will catch any remaining compile.

Co-authored-by: Codex <noreply@openai.com>
Closes tasks.lthn.sh/view.php?id=540
2026-04-25 23:08:19 +01:00
..
agentic feat(agent/process): add Timeout + GracePeriod + KillGroup to dispatch (#540) 2026-04-25 23:08:19 +01:00
brain feat(agent/brain): non-Laravel callers route through shared OpenBrain client (#121) 2026-04-25 20:33:33 +01:00
lib feat(agent/lib/flow): YAML flow library — Parse + ParseFile + LoadEmbedded 2026-04-25 20:21:33 +01:00
messages revert fcb9c189e5 2026-04-23 12:32:57 +01:00
monitor fix(agent/monitor): AX-6 sweep on sync.go — net/url → core.URLEncode 2026-04-25 13:32:52 +01:00
runner revert fcb9c189e5 2026-04-23 12:32:57 +01:00
setup revert fcb9c189e5 2026-04-23 12:32:57 +01:00
.DS_Store revert fcb9c189e5 2026-04-23 12:32:57 +01:00