FSKY Foundry is now Gitfield. All users, organizations, repos, and other things remain. Update your remote URLs, container image tags, and logins from foundry.fsky.io to gitfield.org.
On Windows and Plan 9, locking is implemented by creating <lock>.held with O_EXCL and removing it only from the normal release callback. A force-kill or machine crash leaves the marker behind; future commands report lock busy until an operator removes it manually. The acquisition timeout only waits and returns an error; it cannot distinguish stale markers.
Relevant code: internal/lock/lock_create.go:16-40; busy handling is in internal/lock/lock.go:40-56.
Use a process-lifetime kernel lock where available, or introduce a race-safe stale-lock protocol that verifies owner identity before recovery. Do not automatically delete a marker based only on age or risk concurrent writers corrupting state.
Acceptance: platform-specific tests or documented platform CI exercise normal contention, process termination while holding the lock, and safe subsequent acquisition without allowing two simultaneous owners.
On Windows and Plan 9, locking is implemented by creating `<lock>.held` with `O_EXCL` and removing it only from the normal release callback. A force-kill or machine crash leaves the marker behind; future commands report lock busy until an operator removes it manually. The acquisition timeout only waits and returns an error; it cannot distinguish stale markers.
Relevant code: `internal/lock/lock_create.go:16-40`; busy handling is in `internal/lock/lock.go:40-56`.
Use a process-lifetime kernel lock where available, or introduce a race-safe stale-lock protocol that verifies owner identity before recovery. Do not automatically delete a marker based only on age or risk concurrent writers corrupting state.
Acceptance: platform-specific tests or documented platform CI exercise normal contention, process termination while holding the lock, and safe subsequent acquisition without allowing two simultaneous owners.
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.
On Windows and Plan 9, locking is implemented by creating
<lock>.heldwithO_EXCLand removing it only from the normal release callback. A force-kill or machine crash leaves the marker behind; future commands report lock busy until an operator removes it manually. The acquisition timeout only waits and returns an error; it cannot distinguish stale markers.Relevant code:
internal/lock/lock_create.go:16-40; busy handling is ininternal/lock/lock.go:40-56.Use a process-lifetime kernel lock where available, or introduce a race-safe stale-lock protocol that verifies owner identity before recovery. Do not automatically delete a marker based only on age or risk concurrent writers corrupting state.
Acceptance: platform-specific tests or documented platform CI exercise normal contention, process termination while holding the lock, and safe subsequent acquisition without allowing two simultaneous owners.