DiscordChatExporter/docs/plans/2026-06-04-052-feat-channel-passthrough-remaining-operators-plan.md
Copilot 8057a4443a feat(operators): pass --channel through handoff, prove, and proof
Complete the operator CLI chain so focused yes_general catch-up can run
end-to-end with --target and --channel on handoff dry-run, prove scrape,
and operator-proof orchestration.
2026-06-03 06:36:02 -05:00

4.8 KiB

title type status date origin deepened
feat: Pass --channel through remaining operator wrappers feat complete 2026-06-04 /lfg — plan 049 wired --channel on documents-scrape and operator-validation; handoff, prove, and operator-proof still reject it, blocking focused yes_general catch-up 2026-06-04

feat: Pass --channel through remaining operator wrappers

Summary

Complete the operator CLI chain by accepting repeatable --channel ID in operator-handoff.sh, prove-incremental-append.sh, and run-operator-proof.sh, forwarding to downstream scripts the same way plan 049 did for documents-scrape and operator-validation.

Problem Frame

Operators re-running KotOR yes_general (221726893064454144) need single-channel workflows end-to-end:

./scripts/run-operator-proof.sh --target KotOR_discord_msgs --channel 221726893064454144

Plan 049 fixed run-documents-scrape.sh and run-operator-validation.sh, but operator-handoff dry-run, prove-incremental-append scrape step, and run-operator-proof orchestration still die on --channel.

Requirements

ID Requirement
R1 operator-handoff.sh accepts repeatable --channel ID and forwards to run-documents-scrape.sh --dry-run
R2 prove-incremental-append.sh accepts repeatable --channel ID and forwards to run-discord-scrape-host.sh scrape
R3 run-operator-proof.sh accepts repeatable --channel ID and forwards to handoff, documents scrape, and prove
R4 Usage text on all three scripts documents --channel requires exactly one --target (enforced downstream)
R5 Smokes cover --channel acceptance on handoff dry-run path; prove smoke documents passthrough via arg capture or dry-run stub where feasible
R6 DCE_MIN_FREE_MB=0 ./scripts/run-all-smokes.sh passes

Key Technical Decisions

  • Mirror plan 049 passthrough pattern: collect --channel into an array during option parsing; append to downstream invocations unchanged.
  • Snapshot scope unchanged: prove-incremental-append still snapshots all archives under the target; single-channel scrape must not shrink any existing archive (existing compare logic).
  • Handoff only dry-runs scrape: --channel affects the dry-run invocation only; verify-operator-ready remains target-wide.

Implementation Units

U1. operator-handoff --channel passthrough

Goal: Handoff dry-run accepts and forwards --channel.

Requirements: R1, R4

Files:

  • scripts/operator-handoff.sh
  • scripts/tests/operator-handoff-smoke.sh

Approach: Parse --channel into CHANNEL_ARGS; pass "${CHANNEL_ARGS[@]}" to "$DOCUMENTS_SCRAPE" --dry-run.

Test scenarios:

  • Handoff with --target demo --channel 111... on temp config completes with "Handoff complete" (dry-run path; no live Discord).

Verification: operator-handoff-smoke.sh passes.

U2. prove-incremental-append --channel passthrough

Goal: Prove script forwards --channel to host scrape runner.

Requirements: R2, R4

Files:

  • scripts/prove-incremental-append.sh
  • scripts/tests/prove-incremental-append-smoke.sh (optional arg-capture if host stubbed; at minimum usage/help acceptance)

Approach: Parse --channel into array; append to "$HOST_RUNNER" scrape ... invocation.

Test scenarios:

  • --help or dry-run parse path accepts --channel without "Unknown option".
  • When fake host runner captures argv, --channel appears on scrape command (if smoke infrastructure allows; otherwise extend handoff-style config-only test).

Verification: prove-incremental-append-smoke.sh passes.

U3. run-operator-proof --channel passthrough

Goal: End-to-end operator proof orchestrator forwards --channel to all three steps.

Requirements: R3, R4

Files:

  • scripts/run-operator-proof.sh

Approach: Parse --channel once; pass to "$HANDOFF", "$DOCUMENTS", and "$PROVE" when --target is set.

Test scenarios:

  • --dry-run with --target demo --channel 111... completes without unknown-option error.

Verification: Manual or documents-scrape-smoke pattern; full proof requires auth (out of scope for smoke).

U4. Full smoke gate

Goal: Confirm no regressions across operator chain.

Requirements: R6

Files: (none — verification only)

Verification: DCE_MIN_FREE_MB=0 ./scripts/run-all-smokes.sh → 20/20 (or current count) pass.

Scope Boundaries

In scope

  • CLI passthrough on three remaining operator wrappers
  • Targeted smoke updates

Deferred to Follow-Up Work

  • Stopping stale full-target validation processes
  • Running live yes_general catch-up inside LFG
  • Container memory tuning for large channels

Assumptions

  • Downstream --channel + single --target validation in run-discord-scrape.sh remains authoritative; wrappers do not re-validate channel membership.