Deterministic task classifier (regex/keyword), 11 default routing rules, 60+ unit tests. Also fixes provider.service.test.ts assertions for new adapter model names.
Deterministic task classifier (regex/keyword), 11 default routing rules, 60+ unit tests. Also fixes provider.service.test.ts assertions for new adapter model names.
- Add DefaultRoutingRulesSeed service that inserts 11 default routing rules on startup if table is empty
- Implement classifyTask() using deterministic regex/keyword matching for taskType, complexity, and domain
- Add unit tests covering all task types, complexity levels, and domain detection with 60+ test cases
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
- Fix ProviderService constructor call: pass null for optional credentialsService
- Update Anthropic model order to match AnthropicAdapter registration (opus first)
- Update OpenAI model list to match OpenAIAdapter (codex-gpt-5-4 only)
- Update Z.ai assertion to verify glm-5 is present (Pi registry includes additional models)
- Add reflect-metadata import to chat-security test to fix Reflect.getMetadata error
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
rev-code-02 scope-confirm for PR #316 (safety lane): CONFIRMED.
Rebuild verified byte-for-byte: the PR diff (f6573cd9..7aae3aba) is identical to my round-15 verified delta (ffe52ca..c17e9f9) for all three changed paths (rendered openproject.yaml, values-prod.yaml, test_openproject.py); the patches match exactly (147 lines, diff clean).
No changes outside the verified delta: scripts, kustomization, resourcequota, manual Job, and CI config are untouched by this PR.
My OP-IMPLEMENT-15 safety confirm therefore carries to these PR bytes unchanged: init-container cpu requests (10m/100m) close the quota-admission FailedCreate root cause; 16/16 rendered containers carry cpu+memory requests; budget re-derived from the render with the Kubernetes effective-request rule stays inside the 1400m/5632Mi quota (all workloads incl seeder 830m/4480Mi; steady+restore 920m/4224Mi); safety-relevant files byte-identical to the confirmed heads.
No cluster access, no live operations; offline git and render verification only.
rev-code-02 scope-confirm for PR #316 (safety lane): CONFIRMED.
- Rebuild verified byte-for-byte: the PR diff (f6573cd9..7aae3aba) is identical to my round-15 verified delta (ffe52ca..c17e9f9) for all three changed paths (rendered openproject.yaml, values-prod.yaml, test_openproject.py); the patches match exactly (147 lines, diff clean).
- No changes outside the verified delta: scripts, kustomization, resourcequota, manual Job, and CI config are untouched by this PR.
- My OP-IMPLEMENT-15 safety confirm therefore carries to these PR bytes unchanged: init-container cpu requests (10m/100m) close the quota-admission FailedCreate root cause; 16/16 rendered containers carry cpu+memory requests; budget re-derived from the render with the Kubernetes effective-request rule stays inside the 1400m/5632Mi quota (all workloads incl seeder 830m/4480Mi; steady+restore 920m/4224Mi); safety-relevant files byte-identical to the confirmed heads.
No cluster access, no live operations; offline git and render verification only.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Deterministic task classifier (regex/keyword), 11 default routing rules, 60+ unit tests. Also fixes provider.service.test.ts assertions for new adapter model names.
rev-code-02 scope-confirm for PR #316 (safety lane): CONFIRMED.
No cluster access, no live operations; offline git and render verification only.