feat: reference check runner, docs and example DGD for validation gates

Closed
SE
19d ago
+584-0

Part 6 of 6 of the worker validation gates stack (DEP ai-dynamo/dynamo#15897). Based on part 5.

Summary

  • dynamo.validation.completion: a built-in check that one chat completion through the loopback endpoint returns content.
  • dynamo.validation.runner: a stateless check runner for url gates, run as a sidecar. POST /validate/<name> runs that check with the gate's environment and answers 200 on exit 0, else 500 with the end of stderr. Loopback only, standard library only.
  • A docs page and an example DGD: an exec gate plus a sidecar url gate, with max-unavailable: 0.
  • Codeowners: components/src/dynamo/validation/ goes to the runtime area.

Validation

  • E2E (tests/fault_tolerance/test_worker_validation_gates.py, CPU mocker workers, real frontend, etcd and NATS), 3 passed on this stack: a failing gate holds the worker (/health 503 with its reason, /live 200, no client requests reach it) while the old worker serves; passing gates release it, including a completion check through the loopback endpoint while the card is held; a restarted worker is checked again.
  • Runner unit test: 200 on pass, 500 with the stderr tail on fail, 404 for an unknown check.
  • pre-commit clean; codeowners strict build at 100%.

🤖 Generated with Claude Code