v0.14.1 — long final answers no longer get silently cut
Single bug fix on top of 0.14.0.
-
Fixed long final answers being truncated at 1500 characters and the
remainder discarded without any marker, warning, or log entry. One delivery
path (the ambient final mirror) was passing the answer text through the
status-card size limit instead of an answer limit, so anything past 1500
characters vanished. The bridge logged a normal successful send, so nothing
downstream could tell that content had been lost — the only way to notice was
to compare against the terminal.The card limit is now a parameter rather than a fixed ceiling: status cards
keep the card size, while the six call sites that carry an actual answer pass
the answer limit (12000). That value is a runaway guard, not a display limit —
Telegram sends are already split into chunks — and exceeding it now truncates
visibly, with the usual truncation marker.
Regression coverage added: a behavioral test that reads what the fake Telegram
transport actually received (not just the constant), a limit-ordering assertion,
a truncation-marker assertion, and an assertion that status cards still use the
card size.
Verified before publishing: clean-room export, private-value and Bot-API-token
scans (0 hits), byte-exact public test manifest match, full public test suite,
py_compile and import self-test, and twine check PASSED on both sdist and
wheel.