# jun11-prod — long-run production (hours to days) Stack: v16ab bridge core + errors-only logging + supervisor auto-restart + field resilience. ## What prod mode does - Bridge: `--prod` → writes `fixture-timing/prod-data/errors.jsonl` only - No `packets.raw`, no `events.jsonl`, no `fixture_stats.json` - Logs: session_start, local_slave_tid_learned, errors, inject timeouts, synth_skip (no_x9 only), link carrier up/down transitions - `errors.jsonl` rotates at **10 KiB** → `errors.jsonl.{UTCstamp}`; rotated files **>24 h** deleted (env: `FIXTURE_PROD_ERRORS_MAX_BYTES`, `FIXTURE_PROD_LOG_MAX_AGE_S`) - Supervisor log same policy (`FIXTURE_PROD_SUPERVISOR_LOG_MAX_BYTES`, default 10 KiB) - Manager: `jun11-prod/prod_log_manager.py` ## Start (bench trial — no systemd) From PC after deploy: cd sync .\orchestrate_fixture.ps1 -Action start-prod Per-Pi manual: FIXTURE_POS=N bash sync/switch_prod_bridge.sh If fixture-prod.service is enabled (field commissioned), start-prod restarts systemd instead of nohup. ## Stop (no rclone timeout) .\orchestrate_fixture.ps1 -Action stop-prod Returns to debug capture: .\orchestrate_fixture.ps1 -Action start ## Boot persistence (field — one-time per Pi) From PC (all 4 Pis): .\orchestrate_fixture.ps1 -Action install-prod-boot Per-Pi: FIXTURE_POS=N sudo bash jun11-prod/commission_prod_boot.sh See FIELD_RELIABILITY.txt for hot-plug, port swap, and soak tests. Disable without uninstall: FIXTURE_POS=N bash jun11-prod/disable_prod.sh ## Sync prod errors to Dropbox On Pi (lightweight — prod-data only): PROD_SYNC=1 bash sync/sync_to_dropbox.sh Or auto-detected when `prod-data/errors.jsonl` exists and no debug `data/events.jsonl`. ## Health check tail -f fixture-timing/prod-data/errors.jsonl wc -l fixture-timing/prod-data/errors.jsonl Silence is normal. Lines mean something worth investigating. ## Config locked in run_bridge_prod.sh Same status-0D synth + v16ab local-TID policy as debug milestone (block_all + synth + first_passthrough + synth_from_x9; local TID never dedupe / never transaction-gate). CHANNEL defaults to both (machine + OIS). Do not enable LAB_KENO_JPOT_SYNTH in production. FIXTURE_ETH_LIVE_PORTS_ONLY=1 — UART and ETH relay skip carrier-down ports.