Two delivery failures in one session (2026-08-27), same workspace, architect → builder direction, both on longer messages:
- Truncation: a ~1,900-char single
afx send arrived at the builder as only its tail fragment ("...of the synthesis doc." — the final ~30 chars). Sender saw [ok] Message delivered.
- Empty body: a ~900-char send arrived as just the message-header delimiter block with no body at all ("your last message arrived empty (just a '###...' delimiter, no body — and nothing in my inbox)"). Sender again saw
[ok] Message delivered.
Short messages (≤ ~600 chars) delivered fine throughout the same session, including immediately after each failure — resending the same content split into 2 parts worked.
Impact: silent content loss with a success result at the sender — the worst failure shape for gate-decision traffic. In case 2 the builder was correctly paranoid and held at a porch gate rather than treating an empty message as approval, but that safety came from agent discipline, not the transport.
Suggestions: (a) size limit enforced loudly at send time (reject or auto-chunk, never silently truncate); (b) delivered-length echo in the send result so sender can detect mismatch; (c) if a render-gate/PTY-write constraint is the culprit, route oversize bodies through the durable mailbox (afx inbox) automatically with a pointer injected instead.
Env: afx/codev 3.3.1, Tower 3.3.1, macOS 26, architect and builder terminals in the same workspace.
Two delivery failures in one session (2026-08-27), same workspace, architect → builder direction, both on longer messages:
afx sendarrived at the builder as only its tail fragment ("...of the synthesis doc." — the final ~30 chars). Sender saw[ok] Message delivered.[ok] Message delivered.Short messages (≤ ~600 chars) delivered fine throughout the same session, including immediately after each failure — resending the same content split into 2 parts worked.
Impact: silent content loss with a success result at the sender — the worst failure shape for gate-decision traffic. In case 2 the builder was correctly paranoid and held at a porch gate rather than treating an empty message as approval, but that safety came from agent discipline, not the transport.
Suggestions: (a) size limit enforced loudly at send time (reject or auto-chunk, never silently truncate); (b) delivered-length echo in the send result so sender can detect mismatch; (c) if a render-gate/PTY-write constraint is the culprit, route oversize bodies through the durable mailbox (
afx inbox) automatically with a pointer injected instead.Env: afx/codev 3.3.1, Tower 3.3.1, macOS 26, architect and builder terminals in the same workspace.