mirror of
https://github.com/Tyrrrz/DiscordChatExporter.git
synced 2026-06-09 15:52:37 -06:00
Introduce read-only scrape-lock-status.sh and surface lock state during operator-handoff so shared Documents archives show active or stale holders before starting another scrape.
1.8 KiB
1.8 KiB
| title | type | status | date | origin |
|---|---|---|---|---|
| feat: Scrape lock status diagnostic | feat | complete | 2026-06-04 | /lfg — plan 053 moved lock to archive_root; operators need read-only visibility before starting validation or killing stale runs |
feat: Scrape lock status diagnostic
Summary
Add scripts/scrape-lock-status.sh to report archive-root scrape lock state (path, holder pid/cmd/started, live vs stale) and call it from operator-handoff.sh so handoff surfaces blocking scrapes.
Problem Frame
Two checkouts can share ~/Documents archives. A long validation holds {archive_root}/.dce-scrape.lock but operators only discover it when a second scrape fails. They need a read-only check before starting work.
Requirements
| ID | Requirement |
|---|---|
| R1 | scrape-lock-status.sh --config PATH prints lock file path and state |
| R2 | Resolves lock via DCE_SCRAPE_LOCK_FILE or {archive_root}/.dce-scrape.lock (same rules as host runner) |
| R3 | Reads .meta sidecar when present (pid, started, cmd) |
| R4 | Exit 0 when safe to scrape (free or stale reclaimable); exit 1 when actively held |
| R5 | operator-handoff.sh prints lock status section after verify-operator-ready |
| R6 | Offline smoke covers held, free, and archive-root path; run-all-smokes.sh passes |
Implementation Units
U1. scrape-lock-status.sh
Files: scripts/scrape-lock-status.sh
U2. Operator handoff integration
Files: scripts/operator-handoff.sh, scripts/tests/operator-handoff-smoke.sh
U3. Lock status smoke
Files: scripts/tests/scrape-lock-status-smoke.sh
Scope Boundaries
Deferred
- Refactoring host runner to shared lib (duplicate minimal resolve logic in status script)
- Live KotOR catch-up on host
- operator-handoff
--salvage-only