DIS-007: Lock-File gegen Doppelstart #27

Merged
dev merged 1 commit from phase-0/startup-lockfile into main 2026-04-09 10:55:30 +00:00
Owner

Summary

  • (neu): schreibt PID+Timestamp, erkennt lebende Prozesse via , Stale-Lock wird übernommen, gibt zurück
  • : Lock wird nach Config-Load, vor DB-Init erworben; im Graceful-Shutdown
  • (neu): 4 Tests — Acquire, Doppel-Acquire wirft, Stale-Recovery, Release löscht Datei

Closes

Closes #8

Test Plan

disclaw@0.1.0 build
tsc grün

disclaw@0.1.0 test
vitest run

RUN v4.1.4 C:/Code/side/disclaw

Test Files 6 passed (6)
Tests 31 passed (31)
Start at 11:49:47
Duration 1.86s (transform 785ms, setup 0ms, import 3.38s, tests 111ms, environment 1ms) — 35/35 Tests grün (7 Dateien)

Breaking Changes

Nein. Erster Start legt unter an.

Reviewer-Checkliste

  • Doppelstart wirft verständliche Fehlermeldung mit PID
  • Stale-Lock (toter Prozess) wird automatisch übernommen
  • Lock wird im Graceful-Shutdown freigegeben
## Summary - (neu): schreibt PID+Timestamp, erkennt lebende Prozesse via , Stale-Lock wird übernommen, gibt zurück - : Lock wird nach Config-Load, vor DB-Init erworben; im Graceful-Shutdown - (neu): 4 Tests — Acquire, Doppel-Acquire wirft, Stale-Recovery, Release löscht Datei ## Closes Closes #8 ## Test Plan - [x] > disclaw@0.1.0 build > tsc grün - [x] > disclaw@0.1.0 test > vitest run RUN v4.1.4 C:/Code/side/disclaw Test Files 6 passed (6) Tests 31 passed (31) Start at 11:49:47 Duration 1.86s (transform 785ms, setup 0ms, import 3.38s, tests 111ms, environment 1ms) — 35/35 Tests grün (7 Dateien) ## Breaking Changes Nein. Erster Start legt unter an. ## Reviewer-Checkliste - [x] Doppelstart wirft verständliche Fehlermeldung mit PID - [x] Stale-Lock (toter Prozess) wird automatisch übernommen - [x] Lock wird im Graceful-Shutdown freigegeben
dev added the
type:feat
priority:p1
phase:0
labels 2026-04-09 09:49:52 +00:00
dev added 1 commit 2026-04-09 09:49:53 +00:00
Implements acquireLock() in src/runtime/lockfile.ts that writes a PID-stamped
lock file under workspaces_root, detects live vs stale locks via process.kill(pid, 0),
and returns a release function. src/index.ts acquires the lock before DB init and
releases it in the graceful-shutdown handler. Four unit tests cover acquire, duplicate-
acquire rejection, stale-lock recovery, and release.
dev merged commit f0d6c62347 into main 2026-04-09 10:55:30 +00:00
dev deleted branch phase-0/startup-lockfile 2026-04-09 10:55:32 +00:00
Sign in to join this conversation.
No description provided.