16 KiB
Remove Dead Code from Laravel Project
Context
Original Request
Find and remove dead code (unused code) that is no longer used in the Laravel project. Focus on high-confidence, safe-to-delete items only.
Interview Summary
Key Discussions:
- User wants high-confidence dead code only (safe to delete)
- Exclude any items that might be in use or require manual verification
- Complete analysis across all code categories: models, controllers, views, services, Livewire components, methods, config files, migrations
Research Findings:
- Launched 11 parallel analysis agents to comprehensively scan codebase
- Performed exhaustive grep searches across all file types (PHP, Blade, JavaScript)
- Cross-referenced findings with routes, tests, and usage patterns
- Identified 4 Livewire components and 1 method with 0 references
Self-Review (Gap Analysis)
Gaps Identified and Resolved:
- Testing Strategy: Added comprehensive test suite verification to ensure nothing breaks after deletion
- Rollback Protection: Added git commit checkpoints after each deletion to enable safe rollback
- Verification Methods: Included both automated tests and manual verification checks
- Edge Cases: Checked for dynamic imports, reflection, and magic methods (none found for identified items)
Assumptions Made:
- grep searches captured all usage patterns (checked: @livewire, <livewire:, @volt, Livewire::test, method calls)
- NostrAuth::pleb() is not called via reflection or dynamic strings (verified by searching for "pleb" patterns)
- Livewire components are not loaded via Service Providers (verified by searching for use statements)
Scope Boundaries:
- INCLUDE: Only the 5 high-confidence dead code items identified
- EXCLUDE: Any potentially used code, experimental code, or items needing manual verification
- EXCLUDE: Tests or documentation files referencing dead code (cleanup separate concern)
Work Objectives
Core Objective
Safely remove 5 high-confidence dead code items from the Laravel codebase without breaking any functionality.
Concrete Deliverables
- Deleted files: 4 Livewire components
- Modified file: 1 method removed from NostrAuth.php
- Clean git commits with rollback capability
Definition of Done
- All 5 dead code items removed
- Test suite passes:
vendor/bin/sail artisan test --compact - No errors in browser logs
- Git commits created for each deletion with rollback capability
Must Have
- Preserve all git history (commits, not commits that delete history)
- All existing tests must continue to pass
- No new errors or warnings introduced
Must NOT Have (Guardrails)
- NO removal of any code with existing references
- NO deletion of test files (even if they test dead code)
- NO changes to documentation or README files
- NO modifications to git history
- NO deletion of files not explicitly listed in this plan
Verification Strategy
Test Decision
- Infrastructure exists: YES (Pest test suite with 20+ test files)
- User wants tests: YES (verify all existing tests still pass)
- Framework: Pest (already configured in project)
- QA approach: Run full test suite after each deletion to catch breakage immediately
Test Execution Strategy
After each deletion:
- Run the relevant subset of tests to verify no breakage
- Run the full test suite to ensure comprehensive coverage
Test Commands:
# Run full test suite
vendor/bin/sail artisan test --compact
# Run specific test files if needed
vendor/bin/sail artisan test --compact tests/Feature/Livewire/Association/ProfileTest.php
Acceptance Criteria for Each Task:
- Code deleted successfully (file or method)
vendor/bin/sail artisan test --compact→ PASS (all tests)- No new errors in browser logs (via laravel-boost_browser-logs)
- Git commit created with descriptive message
- Commit verified with
git log -1
Task Flow
Task 1 → Task 2 → Task 3 → Task 4 → Task 5
Parallelization
| Group | Tasks | Reason |
|---|---|---|
| N/A | All sequential | Each deletion must be verified before proceeding to next |
| Task | Depends On | Reason |
|---|---|---|
| 2 | 1 | Verify first deletion works before proceeding |
| 3 | 2 | Verify second deletion works before proceeding |
| 4 | 3 | Verify third deletion works before proceeding |
| 5 | 4 | Verify fourth deletion works before proceeding |
TODOs
-
1. Delete unused Livewire component: VoteForm
What to do:
- Delete file:
app/Livewire/Forms/VoteForm.php - Run full test suite to verify nothing breaks
- Create git commit for rollback capability
Must NOT do:
- Do NOT delete any tests that reference VoteForm (if any exist)
- Do NOT delete any documentation files
- Do NOT modify any other files
Parallelizable: NO (sequential for safe rollback)
References:
Evidence of 0 Usage (from exhaustive analysis):
- Grep for "VoteForm" in PHP files: Only 1 match (file definition itself)
- Grep for "VoteForm" in Blade files: 0 matches
- Grep for "VoteForm" in JS files: 0 matches
- Livewire::test calls: No tests reference VoteForm
- @livewire directives: No VoteForm usage
- <livewire: tags: No VoteForm usage
Test References (to verify no breakage):
- No test files reference VoteForm (safe to delete)
Acceptance Criteria:
- File deleted:
app/Livewire/Forms/VoteForm.php - Verify deletion:
ls app/Livewire/Forms/VoteForm.php→ Error (file not found) vendor/bin/sail artisan test --compact→ PASS (all tests, no failures)- Git commit created:
git add app/Livewire/Forms/VoteForm.php git commit -m "remove: unused Livewire component VoteForm (0 references in codebase)" git log -1 # Verify commit - Evidence: Command output captured from test run and git log
Commit: YES
- Message:
remove: unused Livewire component VoteForm (0 references in codebase) - Files:
app/Livewire/Forms/VoteForm.php - Pre-commit:
vendor/bin/sail artisan test --compact
- Delete file:
-
2. Delete unused Livewire component: NotificationForm
What to do:
- Delete file:
app/Livewire/Forms/NotificationForm.php - Run full test suite to verify nothing breaks
- Create git commit for rollback capability
Must NOT do:
- Do NOT delete any tests that reference NotificationForm (if any exist)
- Do NOT delete any documentation files
- Do NOT modify any other files
Parallelizable: NO (depends on 1)
References:
Evidence of 0 Usage (from exhaustive analysis):
- Grep for "NotificationForm" in PHP files: Only 1 match (file definition itself)
- Grep for "NotificationForm" in Blade files: 0 matches
- Grep for "NotificationForm" in JS files: 0 matches
- Livewire::test calls: No tests reference NotificationForm
- @livewire directives: No NotificationForm usage
- <livewire: tags: No NotificationForm usage
Test References (to verify no breakage):
- No test files reference NotificationForm (safe to delete)
Acceptance Criteria:
- File deleted:
app/Livewire/Forms/NotificationForm.php - Verify deletion:
ls app/Livewire/Forms/NotificationForm.php→ Error (file not found) vendor/bin/sail artisan test --compact→ PASS (all tests, no failures)- Git commit created:
git add app/Livewire/Forms/NotificationForm.php git commit -m "remove: unused Livewire component NotificationForm (0 references in codebase)" git log -1 # Verify commit - Evidence: Command output captured from test run and git log
Commit: YES
- Message:
remove: unused Livewire component NotificationForm (0 references in codebase) - Files:
app/Livewire/Forms/NotificationForm.php - Pre-commit:
vendor/bin/sail artisan test --compact
- Delete file:
-
3. Delete unused Livewire component: EinundzwanzigPlebTable
What to do:
- Delete file:
app/Livewire/EinundzwanzigPlebTable.php - Run full test suite to verify nothing breaks
- Create git commit for rollback capability
Must NOT do:
- Do NOT delete any tests that reference EinundzwanzigPlebTable (if any exist)
- Do NOT delete any documentation files
- Do NOT modify any other files
Parallelizable: NO (depends on 2)
References:
Evidence of 0 Usage (from exhaustive analysis):
- Grep for "EinundzwanzigPlebTable" in PHP files: Only 1 match (file definition itself)
- Grep for "EinundzwanzigPlebTable" in Blade files: 0 matches
- Grep for "EinundzwanzigPlebTable" in JS files: 0 matches
- Livewire::test calls: No tests reference EinundzwanzigPlebTable
- @livewire directives: No EinundzwanzigPlebTable usage
- <livewire: tags: No EinundzwanzigPlebTable usage
- Routes check: No routes reference EinundzwanzigPlebTable
File Context (for reference):
- Line 38 contains:
->view('components.detail') - This is a PowerGrid component, but never instantiated
Test References (to verify no breakage):
- No test files reference EinundzwanzigPlebTable (safe to delete)
Acceptance Criteria:
- File deleted:
app/Livewire/EinundzwanzigPlebTable.php - Verify deletion:
ls app/Livewire/EinundzwanzigPlebTable.php→ Error (file not found) vendor/bin/sail artisan test --compact→ PASS (all tests, no failures)- Git commit created:
git add app/Livewire/EinundzwanzigPlebTable.php git commit -m "remove: unused Livewire component EinundzwanzigPlebTable (0 references in codebase)" git log -1 # Verify commit - Evidence: Command output captured from test run and git log
Commit: YES
- Message:
remove: unused Livewire component EinundzwanzigPlebTable (0 references in codebase) - Files:
app/Livewire/EinundzwanzigPlebTable.php - Pre-commit:
vendor/bin/sail artisan test --compact
- Delete file:
-
4. Delete unused Livewire component: MeetupTable
What to do:
- Delete file:
app/Livewire/MeetupTable.php - Run full test suite to verify nothing breaks
- Create git commit for rollback capability
Must NOT do:
- Do NOT delete any tests that reference MeetupTable (if any exist)
- Do NOT delete any documentation files
- Do NOT modify any other files
Parallelizable: NO (depends on 3)
References:
Evidence of 0 Usage (from exhaustive analysis):
- Grep for "MeetupTable" in PHP files: Only 1 match (file definition itself)
- Grep for "MeetupTable" in Blade files: 0 matches
- Grep for "MeetupTable" in JS files: 0 matches
- Livewire::test calls: No tests reference MeetupTable
- @livewire directives: No MeetupTable usage
- <livewire: tags: No MeetupTable usage
- Routes check: No routes reference MeetupTable
File Context (for reference):
- Final class extending PowerGridComponent
- Never instantiated anywhere in codebase
Test References (to verify no breakage):
- No test files reference MeetupTable (safe to delete)
Acceptance Criteria:
- File deleted:
app/Livewire/MeetupTable.php - Verify deletion:
ls app/Livewire/MeetupTable.php→ Error (file not found) vendor/bin/sail artisan test --compact→ PASS (all tests, no failures)- Git commit created:
git add app/Livewire/MeetupTable.php git commit -m "remove: unused Livewire component MeetupTable (0 references in codebase)" git log -1 # Verify commit - Evidence: Command output captured from test run and git log
Commit: YES
- Message:
remove: unused Livewire component MeetupTable (0 references in codebase) - Files:
app/Livewire/MeetupTable.php - Pre-commit:
vendor/bin/sail artisan test --compact
- Delete file:
-
5. Remove unused method: NostrAuth::pleb()
What to do:
- Edit file:
app/Support/NostrAuth.php - Remove method
pleb()at lines 57-60 - Run full test suite to verify nothing breaks
- Create git commit for rollback capability
Must NOT do:
- Do NOT delete the entire NostrAuth.php file (other methods are used)
- Do NOT delete any tests that use NostrAuth::pleb() (none exist)
- Do NOT modify any other methods in the class
Parallelizable: NO (depends on 4)
References:
File Context (
app/Support/NostrAuth.php):class NostrAuth { public static function login(string $pubkey): void { ... } public static function logout(): void { ... } public static function user(): ?NostrUser { ... } // USED public static function check(): bool { ... } // USED (16 usages) public static function pubkey(): ?string { ... } // USED (9 usages) public static function pleb(): ?object // DELETE THIS { return self::user()?->getPleb(); } }Evidence of 0 Usage (from exhaustive analysis):
- Grep for "NostrAuth::pleb(" in PHP files: 0 matches
- Grep for "NostrAuth::pleb(" in Blade files: 0 matches
- Grep for "pleb" in relation to NostrAuth class: 0 matches
- Other NostrAuth methods are actively used:
login(): 60+ usages in tests and auth-buttonlogout(): 1 usage in routes/web.phpuser(): 1 usage in WithNostrAuth traitcheck(): 16 usages in Blade viewspubkey(): 9 usages in Blade views
pleb(): 0 usages anywhere in codebase
Test References (to verify no breakage):
- No test files use NostrAuth::pleb() (safe to remove)
Acceptance Criteria:
- Method removed: Lines 57-60 deleted from
app/Support/NostrAuth.php - Verify removal:
grep -n "function pleb" app/Support/NostrAuth.php→ No matches vendor/bin/sail artisan test --compact→ PASS (all tests, no failures)- Git commit created:
git add app/Support/NostrAuth.php git commit -m "remove: unused method NostrAuth::pleb() (0 usages in codebase)" git log -1 # Verify commit - Evidence: Command output captured from test run and git log
Commit: YES
- Message:
remove: unused method NostrAuth::pleb() (0 usages in codebase) - Files:
app/Support/NostrAuth.php - Pre-commit:
vendor/bin/sail artisan test --compact
- Edit file:
Commit Strategy
| After Task | Message | Files | Verification |
|---|---|---|---|
| 1 | remove: unused Livewire component VoteForm (0 references in codebase) |
app/Livewire/Forms/VoteForm.php |
vendor/bin/sail artisan test --compact |
| 2 | remove: unused Livewire component NotificationForm (0 references in codebase) |
app/Livewire/Forms/NotificationForm.php |
vendor/bin/sail artisan test --compact |
| 3 | remove: unused Livewire component EinundzwanzigPlebTable (0 references in codebase) |
app/Livewire/EinundzwanzigPlebTable.php |
vendor/bin/sail artisan test --compact |
| 4 | remove: unused Livewire component MeetupTable (0 references in codebase) |
app/Livewire/MeetupTable.php |
vendor/bin/sail artisan test --compact |
| 5 | remove: unused method NostrAuth::pleb() (0 usages in codebase) |
app/Support/NostrAuth.php |
vendor/bin/sail artisan test --compact |
Success Criteria
Verification Commands
# Verify all deletions completed
ls app/Livewire/Forms/VoteForm.php # Should fail (file not found)
ls app/Livewire/Forms/NotificationForm.php # Should fail (file not found)
ls app/Livewire/EinundzwanzigPlebTable.php # Should fail (file not found)
ls app/Livewire/MeetupTable.php # Should fail (file not found)
grep "function pleb" app/Support/NostrAuth.php # Should find no matches
# Verify all tests pass
vendor/bin/sail artisan test --compact # Should show PASS for all tests
# Verify git history
git log --oneline -5 # Should show 5 new commits
Final Checklist
- All 4 Livewire component files deleted
- NostrAuth::pleb() method removed
- All tests pass (0 failures)
- No new errors in browser logs
- 5 git commits created for rollback capability
- No other files modified or deleted
- Git history intact (no history rewrites)
Rollback Instructions (If Something Breaks)
If any tests fail or functionality breaks:
# Rollback all deletions
git reset --hard HEAD~5 # Undo last 5 commits
# Verify rollback successful
git log --oneline -3
vendor/bin/sail artisan test --compact # Tests should pass again