An invoke typed into the operator shell with a value about a megabyte long:
main> invoke chunk.put id=big/1048576 b=aaaa…
bufio.Scanner: token too long
The limit is real and deliberate — internal/cli/shell.go builds its reader with
lines.Buffer(make([]byte, 0, 64<<10), 1<<20), so a line may be up to
1 MiB and no further. Nothing on that path is broken.
The refusal names a Go standard-library type. It does not say there is a line limit, what the limit
is, that it belongs to the shell rather than to the store, or that the same value would be accepted
by a client. An operator reading it learns that something inside the program is called
bufio.Scanner.
This project treats a refusal as documentation — the learn site says as much, and
ISS-21 was opened because a refusal reached a caller as
"failed". This is the same shape one layer out: the message is accurate to the
implementation and useless to the reader.
It is also the only limit of its kind that is not written down. A value has no declared maximum at all, which is SAPE-31's problem; this one is a maximum that exists, applies only to one entry point, and is invisible until it fires.
It loses no data, breaks no promise on a public surface, and stops nobody installing or running anything. The value is refused, not truncated — the write does not happen, and the operator can see it did not. A client is unaffected: the limit is the shell's line reader and nothing else.