DiscordChatExporter/docs/plans/2026-06-04-057-feat-operator-handoff-salvage-lock-gate-plan.md
Copilot 363749231d feat(scrape): handoff salvage-only mode and validation lock gate
Wire --salvage-only through operator-handoff and run-operator-proof, and
refuse run-operator-validation scrape steps while the archive-root lock
is actively held.
2026-06-03 07:01:33 -05:00

1.7 KiB

title type status date origin
feat: Operator handoff salvage-only and scrape lock gate feat complete 2026-06-04 /lfg — plan 056 deferred operator-handoff --salvage-only; proof lacks salvage-only mode and salvage smoke

feat: Operator handoff salvage-only and scrape lock gate

Summary

Add --salvage-only to operator-handoff.sh and run-operator-proof.sh, fail fast in run-operator-validation.sh when the archive-root scrape lock is held, and extend smokes.

Problem Frame

After stopping a crashed KotOR export, operators need a handoff entry that merges partial temps without dry-run or Discord:

./scripts/operator-handoff.sh --salvage-only --target KotOR_discord_msgs --channel 221726893064454144

Validation should refuse to start a scrape while another checkout holds {archive_root}/.dce-scrape.lock.

Requirements

ID Requirement
R1 operator-handoff.sh accepts --salvage-only (runs documents salvage instead of dry-run)
R2 run-operator-proof.sh accepts --salvage-only (handoff + salvage per target, no scrape/prove)
R3 run-operator-validation.sh exits before scrape when lock is actively held
R4 Lock gate skipped when DCE_SKIP_SCRAPE_LOCK=1 or --skip-scrape
R5 Smokes cover handoff and proof salvage-only; run-all-smokes.sh passes

Implementation Units

U1. Handoff and proof salvage-only

Files: scripts/operator-handoff.sh, scripts/run-operator-proof.sh, smokes

U2. Validation lock gate

Files: scripts/run-operator-validation.sh

U3. Smoke gate

Verification: DCE_MIN_FREE_MB=0 ./scripts/run-all-smokes.sh

Scope Boundaries

Deferred

  • Live KotOR catch-up on host
  • Docs refresh for new flags