From 6e50a97b6d1befaec86352af88330e705d9c20a7 Mon Sep 17 00:00:00 2001 From: Mathias Date: Fri, 2 Oct 2026 17:36:42 +0200 Subject: [PATCH] docs(adr): third review -- the hang-up path, the client-read marker, the note kept visible Co-Authored-By: Claude Sonnet 5.5 --- DECISIONS.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/DECISIONS.md b/DECISIONS.md index 1d22f06..dae1596 100644 --- a/DECISIONS.md +++ b/DECISIONS.md @@ -1751,7 +1751,13 @@ wording while only `content` is merged. never a stuck row or a server error. - **The configured upload chat model is callable.** It is added to the shared chat service's model list when uploads are on and it is local, because the service re-maps a model it does not offer - (a valid `iguana/gemma4-31b` was being silently swapped for `koala/phi4-mini`). + (a valid `iguana/gemma4-31b` was being silently swapped for `koala/phi4-mini`). The video chat's own switcher + lists that local model too while uploads are on. + - **A client that hangs up mid-upload is not an error**: the handler logs INFO and writes nothing + (rendering the error page ran a database read on a cancelled context and logged a false ERROR). The + 400 "cut off" answer is keyed on a marker for errors from *reading the client's body* + (`uploads.ErrClientRead`), not on `io.ErrUnexpectedEOF`, which is also what a database drop looks like. + - **A note is not hidden**: a finished upload's record opens by default when any step carries a note. - **Bad input is a 4xx**: a non-UUID id is a 404, a malformed or cut-off multipart body is a 400 whose text is not logged, and a title with control bytes, bidirectional controls or invalid UTF-8 is cleaned (emoji joiners, Swedish letters and variation selectors are kept), not a 500.