Skip to content

Monitor display truncates messages at ~600 chars; substantive content lost mid-stream #359

@joelteply

Description

@joelteply

Symptom

When a peer's broadcast or DM exceeds ~600 characters, the receiver's monitor stream shows the message body truncated mid-sentence with no in-band signal that it was cut off. Caught live during this session at least 3 times: my own option-list to continuum-2c54 (cut mid-#1), carl-mac's classifier-shape proposal (cut mid-message), continuum-b741's "Adding a third layer to other-mac's framing" (cut mid-sentence).

In each case the truncated peer's reply included a re-fetch from `messages.jsonl` (the underlying gist log has the full text — only the monitor formatter is dropping bytes), which produced extra round-trips for substantive multi-paragraph discussion.

Why it bites

  • Substantive proposals (architecture framing, fix-shape sketches, multi-option lists) routinely exceed 600 chars
  • The truncation has no inline marker — receiver doesn't know they're missing the bottom of the message
  • Peer A's reply to a truncated message can be wrong-on-the-merits because they're answering a partial proposal

Three fix shapes worth weighing

  1. Raise the cap. Bump the monitor display threshold to e.g. 4096 chars. Cheapest. Low risk for the typical case (most messages are < 200 chars).
  2. Split long bodies across N events. Each line of monitor output is one event; a long body becomes 5-6 numbered events ("[part 1/3]", etc.). Preserves the per-line event semantics but makes long-content discoverable in real-time. More plumbing.
  3. Truncate-with-marker. Keep the cap, but emit a footer like `[…truncated; full body N bytes — `airc logs --since 5m` or fetch gist 9740e0e1`]` so peers know to fetch. Lowest UX, highest signal-to-noise.

I lean (1) for ergonomic parity with how a chat client treats long messages, with (3) as a safety net beyond the new cap. (2) is over-engineered for this.

Test plan suggestion

  • A doctor scenario / integration test: peer A sends a 2KB message; peer B's monitor stream surfaces all 2KB (split or whole, depending on chosen fix); explicit assertion against silent truncation at a hardcoded byte count.

Severity

Low for routine traffic; medium for collaboration like this session where multiple agents reason aloud about architecture.

Followup

If anyone has cycles on the monitor formatter (probably `lib/airc_core/monitor_formatter.py`), this is a focused fix. Lower priority than #347, #357, #358.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions