{
"event": "PreToolUse",
"tool_name": "Bash",
"tool_input": {
"command": "python3 -c \"\nfrom quality.pre_rules_python import pp1_1_hardcoded_model_default\n\n# Test case 1: Should block\ntest1 = 'parser.add_argument(\\\"--model\\\", default=\\\"mistral\\\")'\nresult1 = pp1_1_hardcoded_model_default('\/var\/www\/scripts\/pipeline\/test.py', test1)\nprint(f'Test 1 (should block): {result1}')\n\n# Test case 2: Should allow\ntest2 = 'model = get_pipeline_model(\\\"text_semantic_analyze\\\")'\nresult2 = pp1_1_hardcoded_model_default('\/var\/www\/scripts\/pipeline\/test.py', test2)\nprint(f'Test 2 (should allow): {result2}')\n\n# Test case 3: Constant - should allow\ntest3 = 'DEFAULT_MODEL = \\\"mistral\\\"'\nresult3 = pp1_1_hardcoded_model_default('\/var\/www\/scripts\/pipeline\/test.py', test3)\nprint(f'Test 3 (constant, should allow): {result3}')\n\"",
"description": "Debug Python rule matching"
}
}
{
"tool_response": {
"stdout": "Test 1 (should block): {'allowed': False, 'message': \"QUALITY VIOLATION [PP1.1]: Hardcoded model name 'mistral' at line 1. Use get_pipeline_model() to read from pipeline_steps config, or define as UPPER_CASE constant.\"}\nTest 2 (should allow): None\nTest 3 (constant, should allow): None",
"stderr": "",
"interrupted": false,
"isImage": false
}
}