lock the two ticket rows before looking up or creating a link
keep the directional source/target behavior while serializing competing writes for the same pair
add a regression test that reuses the existing row when a reverse-direction link is saved again
Verification
APP_KEY=base64:wjZDR2PGCnMQwl5lcYY0c/MUNvn0Qa7z4CpRi4COr8M= php artisan test tests/Feature/Projects/ProjectTicketLinkControllerTest.php tests/Feature/Projects/ProjectTicketControllerTest.php tests/Feature/Models/TicketLinkTest.php
## Summary
- lock the two ticket rows before looking up or creating a link
- keep the directional source/target behavior while serializing competing writes for the same pair
- add a regression test that reuses the existing row when a reverse-direction link is saved again
## Verification
- APP_KEY=base64:wjZDR2PGCnMQwl5lcYY0c/MUNvn0Qa7z4CpRi4COr8M= php artisan test tests/Feature/Projects/ProjectTicketLinkControllerTest.php tests/Feature/Projects/ProjectTicketControllerTest.php tests/Feature/Models/TicketLinkTest.php
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Verification