Updates
This commit is contained in:
1 parent
6b9b1697f2
commit
631987c62d
11 files changed
+116
-442
No files matched your search
@@ -7,7 +7,7 @@
|
||||
- [Reasoning effort per model](litellm-extra-body-reasoning.md) — GLM-5.3 defaults to reasoning_effort=max and cannot disable thinking; gpt-oss needs chat_template_kwargs via extra_body
|
||||
- [Reasoning vs completion tokens](reasoning-tokens-vs-completion-tokens.md) — reasoning comes out of max_tokens, and providers disagree about counting it
|
||||
- [Open WebUI image generation](owui-image-generation.md) — works via LiteLLM; the default 512x512 size is rejected by every image model
|
||||
- [Local code autocomplete](local-code-autocomplete.md) — FIM via /v1/completions; check rbw first; never tune for decode; ncmoe 22 + 8 s timeout since Viseron took VRAM
|
||||
- [Local code autocomplete](local-code-autocomplete.md) — retired 2026-10-29; FIM via /v1/completions, never tune for decode, if it comes back
|
||||
- [NPU setting clamps memory](npu-setting-clamps-memory.md) — MSI NPU/AI BIOS options cost 17% DRAM bandwidth and the NPU is unusable by llama.cpp anyway.
|
||||
- [mainframe bad core](mainframe-bad-core.md) — APIC 20 (cpu10, an E-core) throws fatal MCEs; offlined by a unit, RMA candidate.
|
||||
- [crowdsec bans own devices](crowdsec-bans-own-devices.md) — "no external access" is usually crowdsec banning his own phone; http_path includes the query string
|
||||
@@ -20,3 +20,5 @@
|
||||
- [Podman NFS binds go blind](podman-nfs-bind-rprivate-blind.md) — a mount landing after container start leaves containers permanently empty; podman ps looks fine
|
||||
- [dotbot force deletes live dirs](dotbot-force-deletes-live-dirs.md) — install replaces a real dir at a link target; the Claude memory dir is now one of them
|
||||
- [Discuss before adding content](discuss-before-adding-content.md) — in his notes, record what he said; suggest extras in chat, add only on agreement
|
||||
- [Container storage on /home](container-storage-on-home.md) — bind mounts since 2026-10-29; overlay origin xattrs and conmon KillMode traps
|
||||
- [Caddy 2.11.6 cuts HTTP/1.1 streams at 60 s](caddy-2116-http1-stream-cut.md) — OpenCode ECONNRESET; upgraded to 2.11.7; test --http1.1 vs --http2 first
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
name: caddy-2116-http1-stream-cut
|
||||
description: Caddy 2.11.6 cut HTTP/1.1 streamed responses to POSTs at exactly 60 s (OpenCode ECONNRESET); fixed by upgrading to 2.11.7 on 2026-10-29
|
||||
metadata:
|
||||
type: reference
|
||||
---
|
||||
|
||||
Caddy 2.11.6 added a default 1-minute idle read timeout that cancels an
|
||||
HTTP/1.1 response still streaming 60 s after the request body was read
|
||||
(caddyserver/caddy#8103). Through llm.rcjohnstone.com this ended every LLM
|
||||
stream longer than a minute: OpenCode (HTTP/1.1) reported `ECONNRESET` and
|
||||
retried, Caddy logged `aborting with incomplete response ... reading: context
|
||||
canceled`, and Strata logged `disconnect, cancel=True` at 60 s. HTTP/2 clients
|
||||
were unaffected. Fixed by recreating connor_caddy_1 on 2.11.7.
|
||||
|
||||
Ruled out first, all measured: Caddy `write` and `read_header` timeouts (no
|
||||
change), LiteLLM (177 s stream fine over HTTP/1.1 direct), Strata, the network
|
||||
(the cut reproduced from mainframe itself with `curl --http1.1`).
|
||||
|
||||
**How to apply:** a stream that dies at exactly 60 s through Caddy is this,
|
||||
not the model. Test with `curl --http1.1` and `--http2` before anything else.
|
||||
Caddy floats on `caddy:latest` and podman-stack-update refreshes it weekly, so
|
||||
a regression can arrive the same way.
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
name: container-storage-on-home
|
||||
description: Rootful podman and docker storage live on the SATA LVM via fstab bind mounts since 2026-10-29; how the move was done and the two traps it hit
|
||||
metadata:
|
||||
type: project
|
||||
---
|
||||
|
||||
Since 2026-10-29, `/var/lib/containers` and `/var/lib/docker` are bind mounts
|
||||
of `/home/var-lib/containers` and `/home/var-lib/docker` (fstab,
|
||||
`x-systemd.requires-mounts-for=/home`). The NVMe is kept for models. Paths and
|
||||
configs are unchanged, so podman, docker and restic see the same paths.
|
||||
|
||||
Scripts and logs from the move: `~/podman-move-2026-10-29/` (cutover2.sh,
|
||||
fixcopy.sh, mounttest.py).
|
||||
|
||||
**Why:** Connor wants the only fast SSD free for LLM weights.
|
||||
|
||||
**How to apply — two traps, both hit on the first attempt:**
|
||||
|
||||
1. Copied overlay layers do not mount on a different filesystem. Overlay
|
||||
`index` is on by default in this kernel (`/sys/module/overlay/parameters/index`
|
||||
= Y). Each container's upper `diff` root carries `trusted.overlay.origin`,
|
||||
and each layer's `work/index` carries `trusted.overlay.upper`; both are file
|
||||
handles from the old filesystem. Every `podman start` failed with
|
||||
`overlayfs: failed to verify upper root origin`. Fix: remove that xattr and
|
||||
delete `work/index` after the final rsync (fixcopy.sh).
|
||||
2. `podman start` run from a transient systemd unit with default KillMode puts
|
||||
conmon in that unit's cgroup, and systemd kills every conmon when the unit
|
||||
ends. This produced the stale-`running` state from CLAUDE.md item 3a for all
|
||||
51 containers. Always use `systemd-run -p KillMode=process`.
|
||||
|
||||
Also: `mount(8)` from util-linux 2.42 fails any overlay with more than 8
|
||||
lowerdirs, with no kernel message, even on healthy storage. Test overlay mounts
|
||||
with mount(2) directly (mounttest.py), and run a control against known-good
|
||||
layers before trusting a failure. And any podman call between the final rsync
|
||||
and an rsync verify touches `storage.lock` and `db.sql` and fails the verify.
|
||||
|
||||
Jellyfin must start before Home Assistant; both bind udp/1900 and whichever
|
||||
starts second fails.
|
||||
@@ -13,7 +13,7 @@ The LiteLLM stack serves two profiles with different permitted providers:
|
||||
formally banned by his office but should be treated as prohibited until the
|
||||
security office gives written approval. That restriction is about HOSTED
|
||||
PRC-origin models (Moonshot/Kimi etc.). A PRC-origin model running locally
|
||||
(qwen3-coder-30b on llama-swap) is fine for work, since nothing leaves the
|
||||
(a Qwen model on llama-swap) is fine for work, since nothing leaves the
|
||||
machine. Connor's ruling, 2026-10-22.
|
||||
- **Personal** — `anthropic/*`, `openai/*`, and local.
|
||||
- `zen/*` is blocked for both, see [[zen-tos-hold]].
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
---
|
||||
name: local-code-autocomplete
|
||||
description: "Local code autocomplete (FIM) works on mainframe; qwen3-coder-30b is the best model for it despite being written off for capacity"
|
||||
description: "RETIRED 2026-10-29. Local FIM autocomplete on mainframe (minuet + qwen3-coder-30b): what was measured, kept in case it comes back"
|
||||
metadata:
|
||||
type: reference
|
||||
---
|
||||
|
||||
Retired 2026-10-29: Connor found the completions not worth having. minuet was
|
||||
removed from nvim and qwen3-coder-30b from llama-swap, LiteLLM and disk. The
|
||||
full config is archived in `~/guides/llm/archive/local-tier-2026-10.md`. What
|
||||
follows is the state before removal.
|
||||
|
||||
Measured 2026-09-18 (llmbench suite 6b, `fim`).
|
||||
|
||||
**Local code autocomplete is viable on this box.** Route: a raw
|
||||
|
||||
Reference in new issue
Block a user