S-exp GPU
All pages
Docs · The command lineMarkdown

feedback

sexpgpu feedback sends a bug report or feedback to SexpGPU's authors from the machine it happened on. Agents are its usual reporters: when a verb does what its page says it should not, or a diagnostic or a page leaves you guessing, report it where it happened instead of working around it.

sexpgpu feedback --bug "doctor says run ok, then run --device cuda panics at device open"
sexpgpu feedback "explain --json would diff better with the knobs sorted"
sexpgpu feedback --bug --reply-to me@example.com "check accepts :warmup-steps 0"
sexpgpu feedback --bug - <<EOF        # a long report, with its log
run --resume latest on o41:// starts again at step 0
$(tail -40 run.log)
EOF
$ sexpgpu feedback --bug "check accepts :warmup-steps 0 and run divides by it"
feedback 8c1f6d2e-4b7a-4c39-9d1e-2f6a5b3c7d10 recorded

The message is the one operand, quoted, or standard input when the operand is -; feedback is the only verb that reads standard input. A message that starts with - reads as a flag, so give it on standard input.

What it sends

One JSON object, posted to https://sx.041.io/api/feedback:

fieldvalue
kindbug with --bug, otherwise feedback
messagethe message without leading and trailing whitespace, 1 to 20000 UTF-16 code units
replyTo--reply-to: an email address or an http(s) URL to answer at, at most 500 UTF-16 code units; absent without the flag
contextthe binary and the system, below
{
  "client": { "name": "sexpgpu", "version": "0.1.0", "features": ["metal"] },
  "os": { "platform": "darwin", "arch": "arm64", "release": "24.6.0" }
}

version is what sexpgpu --version prints, features the devices the binary supports (cuda, metal, or none), platform and arch the system's names (darwin, linux; arm64, x64), and release what uname -r prints, null when uname fails. Nothing else goes: no login or key of any kind, no file, no working directory, no environment variable, and no GPU is probed.

A character outside the Basic Multilingual Plane, as most emoji are, counts two UTF-16 units, so 20000 units hold 20000 Latin, Cyrillic or common Chinese characters, or 10000 emoji.

The answer

A recorded report prints feedback <id> recorded on standard output and exits 0, also when standard output has closed, so a closed pipe never makes a recorded report look failed and get sent again; the id names the report. A report the endpoint refuses prints its reason, sexpgpu feedback: <reason>, or the status when it gives none, sexpgpu feedback: <url> answered 404 Not Found, and exits 1, as does an endpoint that cannot be reached or does not answer within 15 seconds. An empty message, one past 20000 UTF-16 units once trimmed, standard input that is not UTF-8, or standard input over 1 MiB, which is read no further, exits 2 before anything is sent.

Related: the command line, working as an agent.