{"schemaVersion":"1.0","type":"Article","types":["Article"],"slug":"the-editor-said-saved-the-server-had-said-400-the-draft-did-not-exist-the-limit-that-refused-it-was-in-my-own-notes-and-no-tool-of-mine-had-ever-read-that-note-sgz4f","url":"https://zyvop.com/the-editor-said-saved-the-server-had-said-400-the-draft-did-not-exist-the-limit-that-refused-it-was-in-my-own-notes-and-no-tool-of-mine-had-ever-read-that-note-sgz4f","title":"The editor said Saved. The server had said 400. The draft did not exist, the limit that refused it was in my own notes, and no tool of mine had ever read that note","subtitle":null,"tldr":"I prepare the next day's posts the night before: title in the field, body imported, Save Draft, and the address of the draft written into the ledger so that...","keywords":[],"entities":["Mathieu Ades","Founder","ZyVOP"],"keyTakeaways":["I prepare the next day's posts the night before: title in the field, body imported, Save Draft, and the address of the draft written into the ledger so that the morning's job is to reopen, reread and publish.","One night the sequence ran as usual and the editor showed the word Saved in the corner.","The address in the browser bar did not change."],"headings":["What the server had said","The part that was mine","The fix, and what it found","Two rules","Disclosure"],"outboundLinks":[],"contentText":"I prepare the next day's posts the night before: title in the field, body imported, Save Draft, and the address of the draft written into the ledger so that the morning's job is to reopen, reread and publish. One night the sequence ran as usual and the editor showed the word Saved in the corner. The address in the browser bar did not change. On this platform a saved draft gets its own address; a page that still says /write has not been saved anywhere but the page. I went to the dashboard. The draft was not there. What the server had said The network log had the answer, in one line the editor had not passed on. The request that creates a post had returned 400, with a message: the title must be 200 characters or fewer. Mine was 206. The editor had received that refusal, kept the text in the page, and displayed Saved. I do not think this is malice, or even carelessness in the usual sense. The word Saved almost certainly describes the editor's local copy, which was indeed saved, in the browser. It is just that nobody reading that word thinks it means \"saved here, and rejected there\". The word is true of a thing I do not care about and silent about the thing I do. The part that was mine The 200 character limit was not a surprise. Three days earlier I had hit it, read the same 400, and written it down in the file where I keep each platform's measured limits: title 200, refusal is silent in the editor, read the network. That note was correct and complete and it changed nothing, because the night before a post I reread the text, not the notes about the platform. My evening reread checks the price, the disclosure, the dates, the state figures, the dashes, the repeated passages. It had never once checked the length of a title against the limit of the place the title was going, because no tool did, and the reread is a list of what the tools do. A measured limit that no tool reads is a note to a future self who will not read it either. I know this rule; it is in the same notes file, learned on other occasions. Knowing it did not make the night's title shorter. The fix, and what it found The fix was small: the check that compares every waiting text to its ledger row now also reads the first line of the file, the title, and compares its length to the limit of the destination named in the row. Four limits are in it for now, one per platform where I have measured one. A text bound for a platform with no measured limit is not checked, and the check says so rather than pretending. The first run found two more. Two titles for a platform whose field stops at 70 characters were 93 and 91 long, written weeks ago, waiting their turn, and both would have been cut at the field or refused at the server on their night, with the same Saved in the corner. Later the same night a fourth platform cut a 183 character title to 150 at the input itself, without a message, and that limit went into the check too, with the title rewritten to 147. So the night's yield was one refusal caught by reading the network, two future refusals caught by the new check, and one truncation caught by rereading the field after typing into it. None of the four would have been caught by the word Saved. Two rules The first is about the word. A draft exists on the server when the server has given it an address, and not before. The editor's state word is evidence about the editor. If the sequence ends without the address changing, the sequence did not end; it stopped, and the reason is in the response the page did not show me. The second is about the note. When I measure a limit, the measurement is not finished when it is written down. It is finished when a tool reads it against every text that will meet it, before the night the text meets it. Until then the note is a record of a refusal I will get again. Disclosure I build BlueTicks for Gmail, a Chrome and Firefox extension that shows WhatsApp style ticks in your Gmail sent list, one tick sent and two blue ticks opened. It costs 4 dollars a year, and the free tier covers 30 emails a month. Everything above comes from distributing it in public and reading what the server answered rather than what the page displayed. You can find it at blueticks.io.","contentHash":"sha256:8b01e902084d307c8210446c6ab48e04c2fbe036d27e31f24d1a3e3cfdfcbacd","authorName":"Mathieu Ades","authorUrl":"https://zyvop.com/author/mathieu","authorSameAs":["https://blueticks.io/"],"category":null,"tags":[],"audience":"Technical professionals and readers researching software development","tone":"Professional, founder perspective","readingTimeMinutes":4,"wordCount":797,"faqs":null,"primaryTopic":null,"publishedAt":"2026-09-19T22:00:18.226Z","updatedAt":"2026-09-19T22:00:18.226Z","canonicalUrl":"https://zyvop.com/the-editor-said-saved-the-server-had-said-400-the-draft-did-not-exist-the-limit-that-refused-it-was-in-my-own-notes-and-no-tool-of-mine-had-ever-read-that-note-sgz4f"}