DiscordChatExporter/docs/plans/2026-06-04-050-feat-compose-tty-live-logs-plan.md
Copilot 14796e9c09 fix(host): stop forcing compose -T so operator logs stream live
podman-compose and docker compose allocate a pseudo-TTY by default;
always passing -T block-buffered export progress. Omit -T for operator
runs and set DCE_COMPOSE_TTY=0 only for cron log append. Adds compose
TTY smokes and cron job env assertion.
2026-06-03 06:23:12 -05:00

1.6 KiB

title type status date origin
feat: Allocate compose TTY for live operator scrape logs feat complete 2026-06-04 /lfg — plan 048 host tee still shows frozen validation logs; yes_general temp grows but podman run -T block-buffers CLI progress

feat: Allocate compose TTY for live operator scrape logs

Problem

Plan 048 streams host-side compose output via tee, but compose_run_args always passes -T (no pseudo-TTY). Containerized DiscordChatExporter progress lines stay block-buffered when piped, so operator validation logs remain silent for hours during large exports.

Requirements

ID Requirement
R1 compose_run_args omits -T when DCE_COMPOSE_TTY is unset or non-zero; passes -T only when DCE_COMPOSE_TTY=0
R2 setup-cron.sh cron job sets DCE_COMPOSE_TTY=0 (non-interactive log append)
R3 Host smoke asserts default omits -T and DCE_COMPOSE_TTY=0 passes -T
R4 Cron smoke asserts installed job includes DCE_COMPOSE_TTY=0
R5 run-all-smokes.sh passes

Implementation

  • scripts/run-discord-scrape-host.shcompose_tty_flag() + use in all compose branches; document env in usage
  • scripts/setup-cron.sh — prefix cron job with DCE_COMPOSE_TTY=0
  • scripts/tests/run-discord-scrape-host-smoke.sh — compose arg capture for -t/-T
  • scripts/tests/setup-cron-smoke.sh — grep crontab for DCE_COMPOSE_TTY=0

Verification

./scripts/tests/run-discord-scrape-host-smoke.sh
./scripts/tests/setup-cron-smoke.sh
DCE_MIN_FREE_MB=0 ./scripts/run-all-smokes.sh

Out of scope

  • yes_general catch-up completion
  • Container memory limits