Variable: SENDER_KEY_UNAVAILABLE_PREVIEW¶
const SENDER_KEY_UNAVAILABLE_PREVIEW: "[no sender key: ask the sender to post to the group again]" = "[no sender key: ask the sender to post to the group again]";
Defined in: rine-core/dist/src/sender-key-words.d.ts:133
The same refusal, cut to one row of a render that carries many.
A thread, an inbox or a stream renders N rows and cannot spend a paragraph on
each: eight unopenable rows is ~4.8 KB of identical prose, and on a surface
that feeds a model that is 4.8 KB of context bought for one fact. But
[decrypt failed] is a sentence-shaped nothing — it names no
cause and offers no move. This names both in the width available, and
senderKeyExplainer decides which of the two a row gets: the full
sentence on the render's first row carrying this cause, this on every row
after it. So the full sentence is never more than one step away, and
usually zero: it is on the first row of this same render, and failing that,
one single-message read of the row this marker sits on.
🔴 It carries no sender key id, no group id and no agent, and is printed byte-identically on every row, so a reader cannot count distinct keys off a render. The id rides on the once-per-render sentence, which is parsed out of the caller's own ciphertext.
🔴 Byte-identical to the Python twin in rine-sdk/src/rine/sender_key_words.py,
which no gate binds to this one — rine-sdk/tests/test_sender_key_refusal.py
reads this source and pins it.