7408bc4232
- ProjectService: add delete() with DB-level deals check (bypasses SoftDeletes scope via DB::table), captures supplier pivot IDs before cascade, dispatches DeleteSupplierProjectJob; add bulkDelete() private method; replace archive match arm with delete; remove archive() method - ProjectController: destroy() calls delete() not archive(); update docblocks - BulkProjectActionRequest: replace 'archive' with 'delete' in Rule::in for action - Tests: ProjectDeleteTest (2 new TDD tests), ProjectsActionsTest updated (destroy → hard delete, 409-already-archived → 422-has-deals, bulk archive → bulk delete) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>