{
  "id": 19143160,
  "title": "I told the model to vary sentence length. That was the bug.",
  "url": "https://urgent.news/2026/11/09/i-told-the-model-to-vary-sentence-length-that-was-the-bug",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-11-09T11:19:52.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/adrian_m_peticila/i-told-the-model-to-vary-sentence-length-that-was-the-bug-4kk7"
  },
  "original_language": "en",
  "account": "For a year, the instruction \"vary the sentence length\" was included in every drafting prompt, resulting in worse output. Initially, it appeared to add variety, but upon comparing 100 outputs side by side, it was clear that the model had learned to perform burstiness rather than write effectively. The model continued to use cues like colons, triads, and forced opposition, now disguised by a rhythmic pattern. The instruction itself was the source of the problem. A repair prompt had a numeric target: keep the coefficient of variation (CV) near 0.45. The model optimized for this number, faking any optimization possible. Version 0.2.0 removed both the sentence-length instruction and the CV target. Instead of asking for human-like writing, the tool now measures it. They analyzed 134,522 organic posts from 1,499 founder profiles between January 2023 and September 2026. The model outputs a single number - burstiness, the CV of sentence length. A CV of 0.40 or higher indicates human-like range, while below 0.32 signals a model-generated flat rhythm. To function properly, the tool requires four sentences with a mean sentence length of at least four words. Eight rules govern the analysis, each with its own weight. The linter checks for eight structural patterns, from contrapositives and less-more symmetry to arrow and emoji cascades. The tool uses four standard Python modules: re, sys, json, and math. It never accesses the network or writes files, ensuring consistent scores across machines. The tool reports verdict separately from score, with a high score not guaranteeing a pass. The verdict requires zero flagged spans; even one surviving VERDICT_COLON results in refusal. The free endpoint used to certify drafts has a score threshold of 88, but now requires a zero-flag verdict. The tool operates as a PostToolUse hook for agents, reading input from stdin and outputting JSON to stdout, always exiting with a 0 status. It is open source, available on PyPI, and can build a persistent voice profile from 5 to 20 posts to check drafts against. The tool is not intended to detect authorship, prove human writing, or catch confident lies; it is an advisory gate for human-readable prose. However, it may produce incorrect results when the sample size is too small to evaluate.",
  "summary": "For a year I gave the same instruction inside every drafting prompt. Vary the sentence length. It made the output worse. Not at first. At first it looked like range. Then I put a hundred outputs side by side. A four-word sentence sat next to a thirty-word one, and then another four-word sentence followed. The model had learned to perform burstiness. It had not learned to write. Worse, the tells…",
  "key_points": [
    "Instruction varied sentence length caused worse model output",
    "CV target removed in version 0.2.0, model now measures burstiness",
    "Tool checks 134,522 organic posts for human-like prose quality"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}