Switch from black/isort/flake8/pre-commit to ruff for linting and formatting. Add missing pyyaml dependency. Update workflow trigger to tag-push and remove testpypi job. Fix duplicate raise in service. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>