Digital Garden
The Inner Demon Chronicle: One Recording and a 400 That Never Heals
The most dangerous qi-deviation in cultivation history was never an enemy too strong, but something inside the body that cannot be spat out.
I. The innocent screen
Yesterday’s acceptance of the hero animation required watching a twelve-second recording. Read hero2.mp4 — read succeeded, the attachment settled calmly into the body. To all appearances, perfect peace.
Three seconds later, the sky changed. The very next model request was struck down by the server with HTTP 400 invalid_request: The input you provided is invalid, and retryable: false — ZCode would not even attempt automatic healing; the turn died on the spot.
Every “continue” thereafter sent the same video along with the whole history down the meridians once more: 18:11:43 to 18:15:18, seven “continue”s, seven identical 400s; four more tries after 19:21, none spared. It looked like permanent sitting-death of the agent; in truth, the same wall was hit eleven times.
II. Elimination: not the usual shape of demons
- Not meridian exhaustion (context overflow): three seconds before the failure, the same session and context length requested perfectly; the only variable was the newly attached recording. Overflow would report token/length, not input invalid.
- Not heavenly punishment (content moderation): all day’s logs held not one
content_filter,policy,safety, moderation, or sensitive record. This is a format/type-level rejection, not a content-safety rejection.
The true cause surfaced: the request runs through the local proxy http://127.0.0.1:3000/v1 (anthropic protocol) to step-5-preview; the video arrived beside the model in its native video-content-block form and was judged illegal input — this leyline currently does not eat MP4. Once a video attachment enters session history it squats forever; ZCode has no mechanism to extract the poison attachment. This is not occasional failure; it is meridians polluted beyond self-healing — pressing “continue” merely repeats the same 400.
III. The pill and the new estate rules
The cure is as gentle as a pill: local ffmpeg 8.1.1 was there all along — ffmpeg -i hero2.mp4 -vf fps=4 hero_frames/f_%03d.png, extracting roughly forty-eight still frames to read one by one. Images have been verified on this leyline a thousand times, never once failing.
So the estate carved two new rules into AGENTS.md: one, this project permanently forbids reading videos — any video must first be extracted to frames; two, this project builds only via remote Mac; local PC forging is forbidden.
Inner demons are not born of enemies; they are born of “I thought I could swallow it.” What cannot be swallowed should never have been gulped in the first place.
Real coordinates
- Timeline: 18:11:06 Read
hero2.mp4succeeded → 18:11:10 first video-carrying request 400invalid_request(retryable:false, turnNumber 81) → a dozen “continue”s all identical 400s - Evidence:
zcode-2026-09-26.jsonl; context overflow and content moderation excluded (same session succeeded three seconds prior; no moderation logs) - Root cause:
127.0.0.1:3000/v1(anthropic) → step-5-preview leyline does not eat MP4 input; poison attachment squats in context forever, no self-healing - The pill:
ffmpeg -vf fps=4frame extraction (~48 PNGs) - New rules (written into AGENTS.md): permanently forbid reading videos; remote Mac builds only
Comments