diff --git a/.docs/Recurring-Scrape-Setup.md b/.docs/Recurring-Scrape-Setup.md index 25e43a99..35646c66 100644 --- a/.docs/Recurring-Scrape-Setup.md +++ b/.docs/Recurring-Scrape-Setup.md @@ -11,7 +11,9 @@ This guide walks you through setting up automated recurring Discord exports usin ## Quick Start -**Fastest path:** `./scripts/verify-operator-ready.sh` then `./scripts/bootstrap-recurring-scrape.sh` (see [operator checklist](../docs/recurring-scrape-operator-checklist.md)). +**Fastest path:** `./scripts/operator-handoff.sh` (disk + verify + archive dry-run), then `./scripts/bootstrap-recurring-scrape.sh` without `--dry-run` when ready (see [operator checklist](../docs/recurring-scrape-operator-checklist.md)). + +**Disk space:** `verify-operator-ready` and scrape entrypoints fail below 1 GiB free by default (`DCE_MIN_FREE_MB`, default 1024). Large channel JSON merges need extra headroom. **Append-only contract (read first)** diff --git a/Readme.md b/Readme.md index cf69f4ba..8268bb36 100644 --- a/Readme.md +++ b/Readme.md @@ -81,7 +81,7 @@ To learn more about the war and how you can help, [click here](https://tyrrrz.me ## See also -- [**Recurring Exports**](.docs/Recurring-Scrape-Setup.md) — append-only incremental JSON exports via Docker/cron (Linux/macOS). From the source repo: `./scripts/bootstrap-recurring-scrape.sh`, then `./scripts/run-documents-scrape.sh`; validate with `./scripts/run-all-smokes.sh`. GUI zip users: `../DiscordChatExporter.linux-x64/RECURRING-SCRAPE.md`. Maintainer summary: [docs/recurring-scrape-merge-readiness.md](docs/recurring-scrape-merge-readiness.md). +- [**Recurring Exports**](.docs/Recurring-Scrape-Setup.md) — append-only incremental JSON exports via Docker/cron (Linux/macOS). From the source repo: `./scripts/operator-handoff.sh`, then `./scripts/run-documents-scrape.sh`; validate with `./scripts/run-all-smokes.sh`. GUI zip users: `../DiscordChatExporter.linux-x64/RECURRING-SCRAPE.md`. Maintainer summary: [docs/recurring-scrape-merge-readiness.md](docs/recurring-scrape-merge-readiness.md). - [**Documented solutions**](docs/solutions/) — searchable learnings (append-only scrape, Docker/cron workflow); YAML frontmatter: `module`, `tags`, `problem_type` - [**Chat Analytics**](https://github.com/mlomb/chat-analytics) — solution for analyzing chat patterns of Discord users, using exports produced by **DiscordChatExporter**. - [**DiscordChatExporter-frontend**](https://github.com/slatinsky/DiscordChatExporter-frontend) — convenient viewer for exports produced by **DiscordChatExporter**. diff --git a/docs/plans/2026-05-29-029-docs-lfg-closure-bridge-sync-plan.md b/docs/plans/2026-05-29-029-docs-lfg-closure-bridge-sync-plan.md new file mode 100644 index 00000000..225e75a3 --- /dev/null +++ b/docs/plans/2026-05-29-029-docs-lfg-closure-bridge-sync-plan.md @@ -0,0 +1,26 @@ +--- +title: docs: LFG closure — sync operator docs and GUI bridge +type: docs +status: complete +date: 2026-05-29 +origin: /lfg — feature stack complete; align GUI zip bridge and README with operator-handoff +--- + +# docs: LFG closure — sync operator docs and GUI bridge + +## Summary + +Recurring scrape implementation is complete. Update operator-facing docs so GUI zip users and README readers see `operator-handoff.sh`, disk preflight, and the correct `run-documents-scrape.sh` invocation (no `scrape` subcommand). + +## Requirements + +| ID | Requirement | +|----|-------------| +| R1 | `Readme.md` See also mentions `operator-handoff.sh` | +| R2 | `.docs/Recurring-Scrape-Setup.md` quick path includes handoff + disk note | +| R3 | `DiscordChatExporter.linux-x64/RECURRING-SCRAPE.md` updated (sibling bridge) | +| R4 | `run-all-smokes.sh` still passes (17 smokes) | + +## Verification + +- `DCE_MIN_FREE_MB=0 ./scripts/run-all-smokes.sh` diff --git a/scripts/tests/operator-handoff-smoke.sh b/scripts/tests/operator-handoff-smoke.sh index 655e0701..842dae08 100755 --- a/scripts/tests/operator-handoff-smoke.sh +++ b/scripts/tests/operator-handoff-smoke.sh @@ -34,9 +34,20 @@ JSON printf 'DISCORD_TOKEN=dummy\n' >"$ENV_PATH" -DCE_MIN_FREE_MB=0 \ - DCE_CONFIG_FILE="$CONFIG_PATH" \ - DCE_ENV_FILE="$ENV_PATH" \ - "$HANDOFF" --config "$CONFIG_PATH" --skip-df | grep -q 'Handoff complete' +set +e +handoff_output=$( + DCE_MIN_FREE_MB=0 \ + DCE_CONFIG_FILE="$CONFIG_PATH" \ + DCE_ENV_FILE="$ENV_PATH" \ + "$HANDOFF" --config "$CONFIG_PATH" --skip-df 2>&1 +) +handoff_status=$? +set -e + +if [[ "$handoff_status" -ne 0 ]] || ! grep -q 'Handoff complete' <<<"$handoff_output"; then + printf 'operator-handoff failed (status=%s)\n' "$handoff_status" >&2 + printf '%s\n' "$handoff_output" >&2 + exit 1 +fi printf 'operator-handoff-smoke: ok\n'