@@ -2901,6 +2901,20 @@ Steps:
29012901 append-construction, tuple-unpacking, and wide-positional-call cleanup gates
29022902 report zero violations with the 30-line production threshold and 60-line test
29032903 threshold, ` uvx pyrefly check ` , and ` git diff --check ` .
2904+ - [x] 2026-07-02: Removed the single-use project creation slug and duplicate
2905+ error helpers. ` project_create_slug ` now derives the requested/generated slug
2906+ and performs the duplicate check directly, keeping the slug validation path
2907+ in one short function. Verification:
2908+ ` uv run ruff check api/views/project_create.py docs/refactoring-plan.md ` ,
2909+ ` python -m py_compile api/views/project_create.py ` ,
2910+ ` uv run python manage.py test api.tests.test_project_creation api.tests.test_projects ` ,
2911+ removed-helper reference scan, touched-function line-threshold scan,
2912+ ` uvx pyrefly check ` , repository AST cleanup scan excluding migrations
2913+ (` forbidden_comprehensions=0 ` , ` threshold_violations=0 ` ,
2914+ ` append_constructed=0 ` , ` wide_tuple_unpacking=0 ` ,
2915+ ` wide_positional_calls=0 ` , ` wide_function_args=0 ` ,
2916+ ` nested_wide_for_unpacking=0 ` , ` range_len_loops=0 ` ), and
2917+ ` git diff --check ` .
29042918- [x] Split Datamailer campaign action data construction out of the campaign
29052919 action handler so the handler only resolves the client, builds action data,
29062920 and runs the guarded action. Verification:
0 commit comments