| 100.00% | Adverbs in dialogue tags | Target: ≤10% dialogue tags with adverbs | |
| 100.00% | AI-ism adverb frequency | Target: <2% AI-ism adverbs (58 tracked) | | wordCount | 2190 | | totalAiIsmAdverbs | 0 | | found | (empty) | | highlights | (empty) | |
| 100.00% | AI-ism character names | Target: 0 AI-default names (17 tracked, −20% each) | | codexExemptions | (empty) | | found | (empty) | |
| 100.00% | AI-ism location names | Target: 0 AI-default location names (33 tracked, −20% each) | | codexExemptions | (empty) | | found | (empty) | |
| 86.30% | AI-ism word frequency | Target: <2% AI-ism words (290 tracked) | | wordCount | 2190 | | totalAiIsms | 6 | | found | | | highlights | | 0 | "pulsed" | | 1 | "porcelain" | | 2 | "marble" | | 3 | "shattered" | | 4 | "whisper" | | 5 | "weight" |
| |
| 100.00% | Cliché density | Target: ≤1 cliche(s) per 800-word window | | totalCliches | 1 | | maxInWindow | 1 | | found | | 0 | | label | "hung in the air" | | count | 1 |
|
| | highlights | | |
| 100.00% | Emotion telling (show vs. tell) | Target: ≤3% sentences with emotion telling | | emotionTells | 0 | | narrationSentences | 166 | | matches | (empty) | |
| 100.00% | Filter word density | Target: ≤3% sentences with filter/hedge words | | filterCount | 0 | | hedgeCount | 0 | | narrationSentences | 166 | | filterMatches | (empty) | | hedgeMatches | (empty) | |
| 100.00% | Gibberish response detection | Target: ≤1% gibberish-like sentences (hard fail if a sentence exceeds 800 words) | | analyzedSentences | 188 | | gibberishSentences | 0 | | adjustedGibberishSentences | 0 | | longSentenceCount | 0 | | runOnParagraphCount | 0 | | giantParagraphCount | 0 | | wordSaladCount | 0 | | repetitionLoopCount | 0 | | controlTokenCount | 0 | | repeatedSegmentCount | 0 | | maxSentenceWordsSeen | 47 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Markdown formatting overuse | Target: ≤5% words in markdown formatting | | markdownSpans | 0 | | markdownWords | 0 | | totalWords | 2190 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Missing dialogue indicators (quotation marks) | Target: ≤10% speech attributions without quotation marks | | totalAttributions | 2 | | unquotedAttributions | 0 | | matches | (empty) | |
| 66.67% | Name drop frequency | Target: ≤1.0 per-name mentions per 100 words | | totalMentions | 63 | | wordCount | 1944 | | uniqueNames | 14 | | maxNameDensity | 1.44 | | worstName | "Rory" | | maxWindowNameDensity | 3 | | worstWindowName | "Rory" | | discoveredNames | | Veil | 2 | | Richmond | 1 | | Park | 1 | | Heartstone | 1 | | Pendant | 1 | | Rory | 28 | | Dymas | 1 | | Fae-forged | 1 | | Isolde | 11 | | Nyx | 8 | | Fae | 2 | | Carter | 1 | | Laila | 1 | | Cold | 4 |
| | persons | | 0 | "Veil" | | 1 | "Rory" | | 2 | "Dymas" | | 3 | "Isolde" | | 4 | "Nyx" | | 5 | "Carter" | | 6 | "Laila" | | 7 | "Cold" |
| | places | | | globalScore | 0.78 | | windowScore | 0.667 | |
| 100.00% | Narrator intent-glossing | Target: ≤2% narration sentences with intent-glossing patterns | | analyzedSentences | 128 | | glossingSentenceCount | 0 | | matches | (empty) | |
| 100.00% | "Not X but Y" pattern overuse | Target: ≤1 "not X but Y" per 1000 words | | totalMatches | 0 | | per1kWords | 0 | | wordCount | 2190 | | matches | (empty) | |
| 100.00% | Overuse of "that" (subordinate clause padding) | Target: ≤2% sentences with "that" clauses | | thatCount | 0 | | totalSentences | 188 | | matches | (empty) | |
| 100.00% | Paragraph length variance | Target: CV ≥0.5 for paragraph word counts | | totalParagraphs | 74 | | mean | 29.59 | | std | 22.09 | | cv | 0.747 | | sampleLengths | | 0 | 19 | | 1 | 43 | | 2 | 42 | | 3 | 37 | | 4 | 27 | | 5 | 14 | | 6 | 82 | | 7 | 25 | | 8 | 7 | | 9 | 29 | | 10 | 15 | | 11 | 20 | | 12 | 14 | | 13 | 43 | | 14 | 49 | | 15 | 28 | | 16 | 23 | | 17 | 4 | | 18 | 31 | | 19 | 12 | | 20 | 11 | | 21 | 17 | | 22 | 29 | | 23 | 12 | | 24 | 60 | | 25 | 39 | | 26 | 108 | | 27 | 11 | | 28 | 34 | | 29 | 31 | | 30 | 4 | | 31 | 23 | | 32 | 10 | | 33 | 50 | | 34 | 13 | | 35 | 15 | | 36 | 30 | | 37 | 56 | | 38 | 6 | | 39 | 22 | | 40 | 9 | | 41 | 59 | | 42 | 56 | | 43 | 43 | | 44 | 12 | | 45 | 65 | | 46 | 32 | | 47 | 15 | | 48 | 11 | | 49 | 51 |
| |
| 100.00% | Passive voice overuse | Target: ≤2% passive sentences | | passiveCount | 0 | | totalSentences | 166 | | matches | (empty) | |
| 100.00% | Past progressive (was/were + -ing) overuse | Target: ≤2% past progressive verbs | | pastProgressiveCount | 0 | | totalVerbs | 297 | | matches | (empty) | |
| 100.00% | Em-dash & semicolon overuse | Target: ≤2% sentences with em-dashes/semicolons | | emDashCount | 0 | | semicolonCount | 0 | | flaggedSentences | 0 | | totalSentences | 188 | | ratio | 0 | | matches | (empty) | |
| 100.00% | Purple prose (modifier overload) | Target: <4% adverbs, <2% -ly adverbs, no adj stacking | | wordCount | 1948 | | adjectiveStacks | 0 | | stackExamples | (empty) | | adverbCount | 33 | | adverbRatio | 0.016940451745379878 | | lyAdverbCount | 0 | | lyAdverbRatio | 0 | |
| 100.00% | Repeated phrase echo | Target: ≤20% sentences with echoes (window: 2) | | totalSentences | 188 | | echoCount | 0 | | echoWords | (empty) | |
| 100.00% | Sentence length variance | Target: CV ≥0.4 for sentence word counts | | totalSentences | 188 | | mean | 11.65 | | std | 7.45 | | cv | 0.64 | | sampleLengths | | 0 | 19 | | 1 | 4 | | 2 | 10 | | 3 | 5 | | 4 | 24 | | 5 | 7 | | 6 | 35 | | 7 | 9 | | 8 | 21 | | 9 | 7 | | 10 | 3 | | 11 | 11 | | 12 | 13 | | 13 | 14 | | 14 | 5 | | 15 | 11 | | 16 | 32 | | 17 | 34 | | 18 | 11 | | 19 | 1 | | 20 | 1 | | 21 | 2 | | 22 | 2 | | 23 | 8 | | 24 | 7 | | 25 | 8 | | 26 | 21 | | 27 | 15 | | 28 | 7 | | 29 | 13 | | 30 | 14 | | 31 | 16 | | 32 | 9 | | 33 | 18 | | 34 | 6 | | 35 | 11 | | 36 | 8 | | 37 | 24 | | 38 | 10 | | 39 | 5 | | 40 | 13 | | 41 | 8 | | 42 | 15 | | 43 | 4 | | 44 | 5 | | 45 | 9 | | 46 | 17 | | 47 | 4 | | 48 | 5 | | 49 | 3 |
| |
| 55.67% | Sentence opener variety | Target: ≥60% unique sentence openers | | consecutiveRepeats | 17 | | diversityRatio | 0.3882978723404255 | | totalSentences | 188 | | uniqueOpeners | 73 | |
| 0.00% | Adverb-first sentence starts | Target: ≥3% sentences starting with an adverb | | adverbCount | 0 | | totalSentences | 161 | | matches | (empty) | | ratio | 0 | |
| 100.00% | Pronoun-first sentence starts | Target: ≤30% sentences starting with a pronoun | | pronounCount | 32 | | totalSentences | 161 | | matches | | 0 | "Her boot left wet grass" | | 1 | "Their humanoid silhouette stretched to" | | 2 | "Her silver hair lifted in" | | 3 | "Her bare feet crossed mud" | | 4 | "It lay across vineyard rows" | | 5 | "It caught on orchard trees" | | 6 | "It lit a road of" | | 7 | "Their shadow body thinned at" | | 8 | "His hand passed through the" | | 9 | "Her crescent-shaped scar on her" | | 10 | "She rubbed it with her" | | 11 | "Their form pulled in tight," | | 12 | "His smile stayed fixed while" | | 13 | "He backed into the press" | | 14 | "Their silhouette stretched across the" | | 15 | "She raised the blade to" | | 16 | "It cooled the sweat that" | | 17 | "Their body folded at the" | | 18 | "She reached out and stopped" | | 19 | "She snatched her hand back" |
| | ratio | 0.199 | |
| 37.64% | Subject-first sentence starts | Target: ≤72% sentences starting with a subject | | subjectCount | 136 | | totalSentences | 161 | | matches | | 0 | "The Veil parted between the" | | 1 | "Rory stepped through first." | | 2 | "Heat rolled across the other." | | 3 | "Her boot left wet grass" | | 4 | "The Heartstone Pendant jumped against" | | 5 | "The deep crimson stone on" | | 6 | "Nyx came through beside her" | | 7 | "Their humanoid silhouette stretched to" | | 8 | "Violet light burned in place" | | 9 | "Isolde crossed last." | | 10 | "Her silver hair lifted in" | | 11 | "Her bare feet crossed mud" | | 12 | "The light came from everywhere." | | 13 | "It lay across vineyard rows" | | 14 | "It caught on orchard trees" | | 15 | "It lit a road of" | | 16 | "Rory lifted her chin and" | | 17 | "Blood orange peel scorched on" | | 18 | "Nyx turned their head toward" | | 19 | "Their shadow body thinned at" |
| | ratio | 0.845 | |
| 31.06% | Subordinate conjunction sentence starts | Target: ≥2% sentences starting with a subordinating conjunction | | subConjCount | 1 | | totalSentences | 161 | | matches | | 0 | "Before them, Dymas opened under" |
| | ratio | 0.006 | |
| 68.97% | Technical jargon density | Target: ≤6% sentences with technical-jargon patterns | | analyzedSentences | 87 | | technicalSentenceCount | 9 | | matches | | 0 | "It lay across vineyard rows that climbed hills in green terraces." | | 1 | "It lit a road of pale stone that ran from the standing stones on this side of the Veil, down through gardens and long open halls, toward a city of domes and kit…" | | 2 | "Veins of copper ran through it, then veins of bone white marble, then panels of dark glass that reflected the amber sky and none of the three travellers." | | 3 | "It cooled the sweat that had gathered between Rory's shoulder blades under the amber heat." | | 4 | "Their body folded at the gap and re-formed on the far side with violet eyes flaring in the shade of a tree that bore pears and white roses together." | | 5 | "Each touch left a note in her ears, a chord that faded as she straightened on the garden path." | | 6 | "The leaves bore script in their veins, lines that shifted when she tilted her head." | | 7 | "She reached out and stopped with her fingers above a leaf that spelled her name in green thread, then broke the letters apart and re-formed them as Carter, then…" | | 8 | "Rory looked from the chef to the river, to the rings rising around them, to the tables of black stone sunk deeper into the garden where more chains ran into mor…" |
| |
| 100.00% | Useless dialogue additions | Target: ≤5% dialogue tags with trailing filler fragments | | totalTags | 0 | | uselessAdditionCount | 0 | | matches | (empty) | |
| 100.00% | Dialogue tag variety (said vs. fancy) | Target: ≤10% fancy dialogue tags | |