{ "project": "Dynamic Salary Cap Refactor", "description": "Replace hardcoded salary cap values (32.0/32.001) with Team.salary_cap field", "created": "2025-12-09", "tasks": [ { "id": "SWAR-001", "name": "Add salary cap helper function", "description": "Create a helper function in helpers.py that retrieves the salary cap for a team, with fallback to default 32.0 for backwards compatibility", "files": ["helpers.py"], "lines": [1215, 1257], "priority": 1, "completed": true, "tested": true, "notes": "Added get_team_salary_cap() and exceeds_salary_cap() functions with Pydantic model support" }, { "id": "SWAR-002", "name": "Update draft cap space check", "description": "Replace hardcoded 32.00001 cap check in draft.py with team.salary_cap from the Team model", "files": ["cogs/draft.py"], "lines": [442, 447], "priority": 2, "completed": true, "tested": false, "notes": "Now uses exceeds_salary_cap() and shows actual cap in error message" }, { "id": "SWAR-003", "name": "Update trade validation sWAR check", "description": "Replace hardcoded 32.001 cap threshold in trade validation with team.salary_cap", "files": ["cogs/transactions.py"], "lines": [1281, 1293], "priority": 2, "completed": true, "tested": false, "notes": "Now uses exceeds_salary_cap() and shows actual cap in error message" }, { "id": "SWAR-004", "name": "Update first drop/add validation", "description": "Replace hardcoded 32.001 cap threshold in first drop/add validation block with team.salary_cap", "files": ["cogs/transactions.py"], "lines": [1768, 1780], "priority": 2, "completed": true, "tested": false, "notes": "Now uses exceeds_salary_cap() and shows actual cap in error message" }, { "id": "SWAR-005", "name": "Update second drop/add validation", "description": "Replace hardcoded 32.001 cap threshold in second drop/add validation block with team.salary_cap", "files": ["cogs/transactions.py"], "lines": [2072, 2081], "priority": 2, "completed": true, "tested": false, "notes": "Now uses exceeds_salary_cap() and shows actual cap in error message" }, { "id": "SWAR-006", "name": "Update roster validation error message", "description": "Replace hardcoded '(cap 32.0)' in error message with actual team salary_cap value", "files": ["cogs/transactions.py"], "lines": [2216, 2226], "priority": 2, "completed": true, "tested": false, "notes": "Now uses exceeds_salary_cap() and shows actual cap in error message" }, { "id": "SWAR-007", "name": "Add default salary cap constant", "description": "Define DEFAULT_SALARY_CAP = 32.0 constant in helpers.py for use as fallback when team.salary_cap is None", "files": ["helpers.py"], "lines": [30, 31], "priority": 1, "completed": true, "tested": true, "notes": "Added DEFAULT_SALARY_CAP and SALARY_CAP_TOLERANCE constants" }, { "id": "SWAR-008", "name": "Verify Team model salary_cap field", "description": "Confirm api_calls/team.py has salary_cap field properly defined and API returns this value", "files": ["api_calls/team.py"], "lines": [26], "priority": 1, "completed": true, "tested": true, "notes": "Field exists: salary_cap: Optional[float] = None" } ], "completion_checklist": [ "All hardcoded 32.0/32.001 values replaced - DONE", "Helper function created with fallback logic - DONE", "All affected cogs tested manually - PENDING", "Unit tests added for salary cap validation - DONE (21 tests)", "Error messages display correct cap values - DONE" ] }