Packt house style rules
Every rule packt-prose enforces, generated from the rules themselves by
packt-prose rules --format md.
Each rule has an identifier you will see in a finding, a severity, and a reference to the section of the house style it comes from. Severity says how much confidence to place in a finding:
- error — a house rule with no exceptions.
- warning — a rule that holds unless the sentence says otherwise.
- advice — a candidate for a human or a model to judge, not an order.
Rules marked autofix are mechanical enough that packt-prose autofix
applies them without a model. Everything else needs judgement.
Acronyms
cmos.acro.expansion-casing
Authors title-case every word of an expansion because the acronym beside it is capitalized, putting false capitals on ordinary nouns. The rule flags a fully title-cased expansion whose words spell the acronym; whether it is a proper name — a company, a product, a standard body — is the judgement, so this is advice with a bias to lowercase generic terms. Words the chapter also capitalizes mid-sentence elsewhere read as names and are not flagged.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §10.6
cmos.acro.pointless-expansion
An abbreviation is worth defining only when the term recurs — Chicago's line is roughly five uses. The rule reports a parenthesized definition whose acronym is used at most once afterward in prose: the definition clutters the sentence and the reader never needed the abbreviation. The repair is a deletion of the parenthetical, and spelling out the stray later use. Acronyms the chapter's code uses are exempt — the definition serves the code's vocabulary even when prose rarely repeats it.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §10.2–10.3
packt.acro.first-use
An acronym is expanded once, at first use, with the short form in parentheses: "a redundant array of independent disks (RAID) storage device". Only the first unexplained use is reported. A glossary or list of abbreviations elsewhere in the book never satisfies this (CMOS 17 §1.44): the reader meets the term in running text, and the expansion belongs there, not behind a lookup. This is advice rather than a warning because the set of capitalized tokens that need no expansion has no boundary: it includes every country, company and standard a book might mention. The exempt list covers the terms a technical reader certainly knows, and a human decides the rest. It also holds the capitalized words that are not acronyms at all — the literal values a configuration file carries. A real copyedit was asked to expand the 'TRUE' and 'FALSE' in a YAML snippet quoted inside a sentence, and there is nothing to expand: the word is already the word.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Formatting; CMOS 17 §10.3
packt.acro.re-expansion
Define before use, once. After the first expansion the acronym stands alone, and a later re-expansion is deleted — the corpus cuts the author's "RAID stands for…" sentence entirely.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Formatting; CMOS 17 §10.3
packt.acro.tighten
Define once, then use the short form. After "machine learning (ML)" the chapter writes ML, and the corpus makes that replacement roughly 10,000 times across its top phrase substitutions — machine learning to ML 345 times, artificial intelligence to AI 222, virtual machine to VM 349. The definition is read from the document rather than from a list, because which acronyms a chapter has defined is a fact about that chapter. The rule looks for the house definition shape — the spelled-out term followed by its acronym in parentheses — and checks that the initials match, so a parenthesis that happens to follow a phrase does not define anything. Only uses after the definition are reported, and the definition itself never is. It is advice rather than a warning because a spelled-out form is sometimes deliberate: a section opening after many pages, or a sentence where the acronym would read as a different word, are both reasons an editor leaves it alone.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Formatting
Advisory checks
cmos.advice.subhead-referent
Readers scan subheads and re-enter the prose out of context, so the first sentence of a section repeats its subject rather than referring to the heading with a pronoun. The rule reports a section-opening paragraph that begins with "This", "These", or "It" followed by a verb-like word rather than a noun that restates the topic. The chapter-furniture openers are exempt: "This chapter covers…" and "This section shows…" name their referent in the next word.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §1.55
cmos.advice.symbol-start
A sentence should not begin with a mathematical symbol or code token, because the reader cannot tell where the previous sentence ended. The rule reports a protected code span sitting at the very start of a prose paragraph or immediately after a sentence break. List items are exempt: a step that opens on the command it runs is the house shape for procedures.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §12.7
packt.advice.clause-count
One idea per sentence: chains of three or more clauses are split. Note that the corpus average sentence length rose slightly overall, because clarity insertions outweighed the splitting — so length alone is not a fault.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §5 Sentence construction
packt.advice.comma-splice
Comma splices are repaired by splitting or subordinating. The corpus example runs "…very important, it also allows you to…" and becomes two sentences.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Punctuation; CMOS 17 §6.22, §6.56
packt.advice.fillers
basically, actually, of course, simply — trimmed where they carry nothing. Reported only when a paragraph has several, since one is usually voice rather than filler.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §3 Tone
packt.advice.heading-siblings
Sibling headings at the same level are uniformly imperative or uniformly noun-phrase, never mixed. The minority is reported: in a run of four headings where three give instructions, the fourth is the one to look at.
- Severity: advice
- Applies to: headings
- House style: STYLE_ANALYSIS §9 Consistency
packt.advice.inline-list
"The following recipes: X, Y, and Z" run into one sentence is a list refusing its bullets. When the tool's output was diffed against print-accepted chapters, the human copyeditors on both had converted this shape into a real bulleted list. Splitting a paragraph is a structural change the edit channel cannot express, so this is advice for a person, and a comment carrying the proposed items is the editor's move.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: Copyedited corpus, structure
packt.advice.passive
Passive constructions are reported, never rewritten: in technical writing the passive is often the right choice, because the actor is the system and saying so adds nothing.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §5 Sentence construction
packt.advice.referent
A sentence opening with a bare This, That, It or These makes the reader look backwards. The corpus fix is to name the thing: "This uses CPU…" becomes "This inefficient querying uses CPU…".
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §5 Sentence construction
packt.advice.serial-comma
House style always uses the serial comma; the count of ", and" nearly doubled across the corpus edit. Reported as advice because recognising a three-item list from punctuation alone is not certain.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Punctuation; CMOS 17 §6.19
packt.advice.which-that
A restrictive clause — one that says which thing is meant rather than adding an aside — takes "that" and no comma. The corpus made this change 21 times. A "which" after a comma or a preposition is left alone.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Word-level substitutions; CMOS 17 §6.27, §5.250
Capitalization
cmos.caps.eponyms
An adjective formed from a person's name keeps the capital: Bayesian
inference, a Boolean flag, Gaussian noise, Cartesian coordinates, a Markov
chain, Euclidean distance, Newtonian mechanics, a Hamiltonian path, a Turing
machine, the Fibonacci sequence, Dijkstra's algorithm. The autofix restores
the capital wherever the lowercase form appears. Code needs no carve-out
here: boolean as a type name or an identifier is protected automatically,
so only the English word is ever touched. A book that deliberately
down-styles a term throughout — some write "boolean" lowercase as a term
of art — turns the rule off with --off cmos.caps.eponyms rather than
arguing with each finding. The list holds only names whose capital survives
in current use. An eponym that common use has worn down to lowercase —
kafkaesque, quixotic, herculean — is left as the author wrote it, which is
why kafkaesque is not in the list.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: CMOS 17 §8.60
cmos.caps.file-formats
Chicago sets file-format names in full capitals - PNG, GIF, JPEG, HTML - and lowercases the literal extension with its dot: .png, .html. The pattern requires whitespace before the token, so extensions (.png), paths (/png) and hyphenated code tokens never match, and code-formatted text is protected before any rule runs. A lowercase token in prose that means the extension or a field name - "set format to json in the config" - keeps its case; that is the judgement each finding asks for.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §7.77
cmos.caps.internet-terms
The internet and the web are generic nouns, lowercase, and the compounds close up: website, webpage. The capitals are how the terms were set in the nineties, and Chicago dropped them in the seventeenth edition. Proper names built on the words keep their capitals, and the rule steps around them: the Internet of Things, Internet Explorer, the Web Audio API, and the World Wide Web are all left alone, as are Wi-Fi, Ethernet, and HTTP, which were never in question. "Internet" is lowered only when a lowercase article or preposition precedes it, so a sentence that opens with "The Internet" keeps its forced capital and is left for the editor. "Web site" and "web page" close up wherever they appear; when one opens a sentence the fix keeps the capital, so "Web sites cache aggressively" becomes "Websites cache aggressively" rather than dropping its case.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §7.80
packt.caps.consistency
A term has one casing within a book. This rule learns each term's casing from the document itself and reports the minority spellings, so it covers the product names, framework names and domain nouns that no vocabulary can list — the largest part of the 171,000 casing edits in the corpus, whose sampled vocabulary ran to 230 distinct terms in 400 examples. A term is only judged when the document is decided about it: it must appear at least four times, and at least four fifths of those must agree. Anything less is a document that has not made up its mind, and reporting the minority would be inventing a house style rather than enforcing one. Positions where the casing is forced by something other than the term are excluded, as evidence and as findings both. A word that opens a sentence, a heading, or a list item is capitalized whatever its usual form; a word in a heading may be title case; and a word inside quotation marks belongs to whoever is being quoted. All three were found reporting against a lowercase majority on real manuscripts — a quoted requirement beginning "The aircraft…" and a painting's title in quotation marks among them. Function words are skipped outright. "The", "in" and "for" have an overwhelming lowercase majority in any document, so every legitimate capitalized use — a title, a quotation, a proper name — looks like a minority spelling. They are also not terms: a casing rule is about the nouns a book names things with. The suggestion names the document's dominant form. It is a suggestion and not a fix because the majority can be wrong — a chapter that writes "kubernetes" throughout is consistently wrong — and because the right repair is then the other direction.
- Severity: warning
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §9 Consistency
packt.caps.feature-nouns
The ruling: product features are common nouns in prose. Capitals survive in exactly four places. First, vendor-branded names the vendor's CURRENT documentation capitalizes — Windows Autopilot, GitHub Actions, Delta Live Tables — which live in this rule's vocabulary and exempt any match they cover; the vocabulary follows the vendor's present style, not the style of the release the author learned. Second, exact UI labels in instructions, which house style bolds — a bolded match keeps the screen's casing and is never flagged. Third, typed API kinds where lowercase collides with the generic word — a Kubernetes Service is not "a service", a Salesforce Opportunity is not "an opportunity" — and the right fix there is the code character style, which also protects the token; the rule steps around proper-name runs, so "Jobs Browser" and "Kinesis Data Streams" never fire. Fourth, editions and SKUs: Windows 11 Pro, Intune Plan 2, the Premium tier. Whichever form wins, one form per book: packt.caps.consistency measures the drift, and this rule says which direction to resolve it. Judgement stays in three places, which is why there is no autofix. A book may deliberately keep a vendor's older capitals — an Unreal Engine book writes "Blueprints" bare because Epic still brands the scripting system that way, and the bare word is not in the vocabulary because an AWS Glue book must lowercase its blueprints. A word may be a brand's shorthand — bare "Actions" in a GitHub book, bare "Checkout" in a Stripe book — where the vocabulary carries only the full branded phrase and the shorthand is the editor's call. And the vocabulary cannot be complete: when a capitalized feature is not listed, check the vendor's current documentation; if it capitalizes, leave the capital and note the gap.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: House ruling 2026-08-18; CMOS 17 §8.1
packt.caps.headings
Section headings are sentence case, and how-to headings are recast as imperatives. A heading is only reported when several of its words are capitalized, which is the shape of a title-cased heading; product names in the vocabulary never count as evidence.
- Severity: warning
- Applies to: headings
- House style: STYLE_ANALYSIS §4 Numbers, units, capitalization; CMOS 17 §8.157-8.160
packt.caps.hyphenated-compound
A hyphenated compound is capitalized as a single word, so "Multi-Factor" becomes "Multi-factor". The corpus makes this change about 1,500 times. The first part must be one of the words listed below, and the list is closed for a reason a wider rule found out the hard way: matching any capitalized word before the hyphen re-cases hyphenated proper names, and the first draft of this rule turned the surname "Jones" into "jones". The words on the list were mined from the compounds editors actually re-case in the corpus — multi, real, cross, non, self, fine, role, event, decision and their relatives — and not one of them can begin a person's name. An acronym after the hyphen keeps its capitals: "Cloud-NAT" and "USB-C" are left alone, because the part after the hyphen has to read as an ordinary capitalized word — one capital followed by lowercase letters — before it is touched. An acronym before the hyphen is skipped too: "AI-Powered" would be safe to lower, but "US-East" would not, and nothing in the spelling separates them. A word the document uses as a name in its own right is also left alone, however ordinary it looks. An AWS chapter writes "Region" throughout and "multi-Region" with it, and an earlier version of this rule down-cased 29 of them in one chapter; the corpus never changes that word in either direction. So the document decides: if it capitalizes the word on its own, away from a sentence opening, the capital belongs to the word rather than to the compound.
- Severity: advice · autofix
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §4 Numbers, units, capitalization
packt.caps.midprose
Authors capitalize concepts for emphasis — "Virtual Machines", "Make a Change" — and the corpus down-cases them. Only two or more capitalized words in a row are reported, since a single one is far more likely to be a proper noun. The boundary of this rule is worth stating plainly: no vocabulary can list every proper noun a book might use, so a multi-word place, person, company or library name that is not in the vocabulary below will be reported. That is why the rule is advice with no fix — an editor confirms each one. Cited titles and quoted names are excluded automatically.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Numbers, units, capitalization; CMOS 17 §8.1
packt.caps.products
Product-name casing is sacrosanct: MongoDB, WiredTiger, PostgreSQL, macOS. Two kinds of name are deliberately absent. Names that are correctly lowercase, such as mongos and pandas, would be legitimately capitalized at the start of a sentence. Names that are also ordinary English words — Go, Rust, React, Spark, Windows, Apache — would flag every use of the word: "go through the following sections" is not a misspelt product name. Measured against the mined corpus: of the times this rule fired on a real author sentence, the published text agreed 235 times and kept the author's form 369 times (39% agreement across 403 books). Agreement is mixed, so the casing is reported for a human to confirm rather than corrected automatically. Product names still have one correct form.
- Severity: warning
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §9 Consistency; CMOS 17 §8.153-8.155
packt.caps.title
The chapter title, and only the chapter title, is title case. Short words — articles, conjunctions and prepositions — stay lowercase.
- Severity: warning
- Applies to: headings
- House style: STYLE_ANALYSIS §4 Numbers, units, capitalization; CMOS 17 §8.157
Consistency
cmos.consist.data-agreement
"Data" may be a mass noun with a singular verb or a plural, and Chicago accepts both — what it does not accept is a document that mixes them. The rule counts the singular and plural verb forms directly following "data" (and "media") across the chapter and reports the minority instances with the majority's form as the suggestion. A chapter using only one form is silent. A book profile (--book) can pin the choice so every chapter agrees. One shape is exempt from the count in either direction: a coordinated modifier ahead of the noun — "the 2021 and 2024 data have different schemas", "both data" — names several datasets, and there the plural is grammar rather than style. The house decision governs the mass noun, not a compound subject.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.14, §5.250 (data)
cmos.consist.methodology-casing
Chicago capitalizes a school of thought consistently through a work or lowercases it throughout, but never mixes. The rule counts each methodology term's cased and lowercase forms in prose — skipping positions where the capital is forced — and reports the minority instances with the majority form suggested. The vocabulary is deliberately small: agile, scrum, kanban, waterfall, lean. DevOps and named frameworks belong to the product-casing rules.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §8.79
packt.consist.compound-modifiers
Hyphenation is the largest mechanical family the corpus records — 29,773 events — and this rule carries its closed, mined core: compounds that human editors hyphenate with strong direction agreement (every pair here runs at least four conversions to one reversal, across at least six books, and most run uncontested). "single-cell", "command-line", "time-series" and their relatives were also the single largest family of human copyedits the tool missed when its output was diffed against print-accepted chapters. Most pairs take the hyphen only in attributive position — "command-line arguments" but "at the command line" — so their patterns consume the following word and the shared exclude refuses a function word there: a compound followed by "is", "the", or "between" is standing on its own and stays open. A short list is hyphenated in any position, because the verb or adjective itself carries the hyphen: double-check, fine-tune, time-consuming, error-prone, decision-making. The deliberately open compounds stay deliberately absent. The corpus's own evidence says "open source", "ad hoc", and "end to end" stay open even attributively, and the verb-colliding singulars — "start up the server", "walk through the code", "trade off latency" — are excluded in favor of their unambiguous plurals.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: Copyedited corpus, hyphenation family; CMOS 17 §7.81-7.89
packt.consist.compound-usage
The corpus's hyphenation family is dominated by book-specific compounds no global vocabulary can list. This rule learns each document's own: when the hyphenated form of a pair appears at least four times and at least three times as often as the open form, the open occurrences in attributive position are reported with the dominant form as the suggestion. Deliberately open compounds — open source, ad hoc, end to end — are never judged, whatever a document does.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: Copyedited corpus, hyphenation family
packt.consist.compounds
Packt closes some compounds and opens others, and the choice is deliberate: "filesystem" is one word against the Chicago Manual's "file system", because that is what technical readers write. Each group lists the house form first. Measured against the mined corpus: of the times this rule fired on a real author sentence, the published text agreed 5 times and kept the author's form 156 times (3% agreement across 403 books). Editors left the author's compound alone in the overwhelming majority of cases, so these are suggestions. The closed forms remain what house style prefers.
- Severity: advice
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §4 Hyphenation and compounds
packt.consist.terms
Informal clippings read as conversation rather than as a published chapter, so house style writes the word out. This is advice rather than a rule because the mined corpus only agrees 24% of the time: across 403 books, editors often left the short form alone. Three earlier entries were removed after the corpus showed them doing harm. "DB" is Amazon's own name in "DB instance", "env" and "prod" appear in real identifiers, and expanding any of them inside an acronym definition — "MFA (Multi-Factor Authentication)" — corrupts the definition.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §9 Consistency
packt.consist.type-noun
An identifier takes at most one type noun: "the np.repeat() function", not "the function np.repeat() function". The corpus repairs about 3,100 of these, across function, method, command, class, module, package, variable, property, parameter, table, column, field, file, object, value, and keyword. Only the duplicate is deleted, and only the trailing one, because that is the direction the corpus takes and the one that leaves the sentence's article in place: "the function np.repeat()" reads correctly once the second label is gone. A missing label is not reported. Whether an identifier needs one depends on whether the sentence has already said what it is, which is a reading of the paragraph rather than a fact about the words.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §8 Technical writing rules
packt.consist.us-spelling
Packt books use US spelling throughout. The list covers the endings that actually turn up in technical manuscripts rather than attempting a dictionary. Matching ignores case so that a spelling opening a sentence or a heading is caught, and the fix keeps the capital it found. Note that "analyses" is absent on purpose: it is the correct US plural of "analysis". Measured against the mined corpus: of the times this rule fired on a real author sentence, the published text agreed 286 times and kept the author's form 203 times (58% agreement across 403 books). Editors applied US spelling in the majority of cases but not all, which is exactly the kind of inconsistency a linter is better at than a person. Matching is literal and has no stemming, so every inflected form needs its own entry. Measuring the copyedited corpus found that 46% of the UK spellings editors actually changed — 1,668 of 3,618 — used a form this list did not carry; those forms are now here, in corpus-frequency order after the original list. "dialogue"/"dialog" is deliberately still absent: it is the one pair that fires in both directions at comparable volume, because it is a sense split rather than drift — a dialog box against a dialogue between people — and a mechanical swap would break the distinction editors are keeping. Two more directional-adverb pairs are deliberately absent, for the same collides-with-something-real reason. "forwards"/"forward" is out because "forwards" is also the verb — "the proxy forwards requests" is on every other page of a networking book, and an error-severity autofix would rewrite it to nonsense; "towards", "backwards", "afterwards", "onwards" and "upwards" have no verb reading, which is why those pairs are safe and present. "gotten"/"got" is out because "got" alone is the correct simple past — only the participle slot ("has got") prefers "gotten", and telling the two apart needs the auxiliary, which a literal token pair cannot see.
- Severity: error · autofix
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §9 Consistency
Whole-document checks
cmos.doc.block-quote
Chicago's threshold is roughly a hundred words, or any quotation of more than one paragraph, or quoted material that needs its own formatting. The rule reports a paragraph that is substantially one quotation — it opens with a quotation mark, closes with one, and runs to eighty words or more. The restyle into an extract is a production decision, so the finding anchors an author comment rather than an edit.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §13.9–13.11
cmos.doc.caption-case
A caption body may be sentence-cased or headline-cased, but the choice is made once per work. The rule classifies each caption by its capitalized non-initial words — sheltering any word the chapter never writes lowercase, so product names prove nothing — and reports the minority style's captions when the chapter is decisively mixed. Advice, anchored on each minority caption, because recasing a caption is judged wording work.
- Severity: advice
- Applies to: prose and headings
- House style: CMOS 17 §3.54
cmos.doc.column-head-caps
Column heads capitalize the first word and proper nouns only. The rule reports a header cell whose later words are capitalized despite the chapter writing them lowercase in prose — the shelter that keeps product names and code out of it. Advice, applied consistently across the row by whoever fixes it: CMOS's own caution is not to recase one head in isolation.
- Severity: advice
- Applies to: prose and headings
- House style: CMOS 17 §3.56
cmos.doc.list-capitalization
Within one list, either every item opens with a capital or none does. The rule reports the items that disagree with the majority of their own list, and offers the flipped letter as a suggestion rather than a fix because a capitalized first word may be a proper noun doing nothing wrong. An item whose first word never appears lowercase elsewhere in the chapter is treated as a proper noun and neither counted nor flagged; the same shelter covers items opening with code, which are protected anyway.
- Severity: warning
- Applies to: prose and headings
- House style: CMOS 17 §6.130
cmos.doc.run-in-semicolons
A run-in list numbered (1), (2), (3) separates its items with commas — until an item grows a comma of its own. Then every boundary is a semicolon: "the driver (1) opens a connection, retrying on failure; (2) sends the payload". Mixing the two leaves the reader parsing which commas are item boundaries and which are grammar. The rule looks for a first item that both contains a comma and is closed off by a comma before (2) arrives. It reports rather than fixes because each comma in the item has to be read: some mark the boundary, some belong to the item, and promoting the wrong ones to semicolons rewrites the sentence's meaning. Parenthesized numerals also serve as equation and citation labels — "equation (1), and (2) follows" — which is another reason the finding waits for an editor.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §6.129
cmos.doc.table-title-shape
The claim belongs in prose; the title names what the table holds. The rule reads a Table caption's body with the same clause test the cell-punctuation rule uses — enough words to be a clause and a finite verb among them — and reports the titles that read as sentences. Advice, because a deliberate full-sentence caption under a figure-like table is an author's call to make.
- Severity: advice
- Applies to: prose and headings
- House style: CMOS 17 §3.54
packt.doc.acronym-expansion
Full-form asks are 1.1% of all mined editor comments. The rule reports a purely alphabetic acronym of three to six capitals that appears in three or more prose paragraphs with no parenthetical expansion anywhere in the chapter. Acronyms every Packt reader holds — API, SQL, JSON — are exempt, a token that also appears in the chapter's code or inline code is the code's vocabulary rather than an acronym, capitalized English words are ignored, and a profile can extend the exemptions with the acronyms-known option, comma-separated.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: COMMENT_ANALYSIS taxonomy: content-ask
packt.doc.adjacent-blocks
Two non-prose elements are always separated by prose. A figure followed directly by another figure, a code listing running straight into a table, a table into a listing — each pair needs a sentence between them introducing the second element, and a single lead-in above the first never covers both. The rule reports junctions between figures, tables, and code listings. Consecutive paragraphs of one kind are one element — a multi-paragraph image block is one figure, a split listing is one listing, the cells of a table are one table — and a caption binds to its element without separating anything, which is how two figures with only their captions between them are still back to back. Junctions at headings belong to other rules: section-close owns an element that ends a section, and the lead-in family owns a section that opens on one. There is no fix, deliberately. A generic inserted lead-in reads as filler; the sentence that belongs here says what the second element shows, and only the author or an editor reading closely can write it. Repair this as a comment asking for the bridging sentence — or, when the content supports a specific introduction, write that sentence and say what the element actually shows.
- Severity: warning
- Applies to: prose and headings
- House style: House ruling 2026-08-25 (editorial team)
packt.doc.bold-emphasis
Bold survives only as a bullet lead-in: "Denormalization: Denormalizing data does not always mean…". Bold for emphasis in a sentence is removed, as in "not equal to null" becoming plain "not".
- Severity: error
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Formatting
packt.doc.bullet-punctuation
Within one list, either every item ends with a period or none does. The rule reports the items that disagree with the majority of their own list. List punctuation is 45% of every period edit in the copyedited corpus, which is what makes it worth fixing automatically: the answer is not a judgement about the sentence but a count of its neighbours. The fix covers the item's last word rather than the whole item, so the tracked change an editor reviews is the character that actually moved. A fix is only offered where the change cannot be anything other than the period. An item ending in a question mark, a colon, a comma, an ellipsis, or a closing bracket is reported without one: the terminal punctuation it does have may be deliberate, and appending a period to "…and why?" would be a defect.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §9 Consistency
packt.doc.cell-punctuation
A table cell holding a full sentence ends with a period; a cell holding a fragment or a label does not. The corpus applies this in both directions across flashcards and question banks, which are the two document types it edits most densely. A sentence is recognized by having a subject and a verb, which this rule approximates the only way it can without a parser: three or more words, one of which is a known verb form. The verb list is the same curated approach the advisory checks take, and where it is incomplete the rule stays quiet rather than guessing. It carries no fix. The corpus resolves these both by adding the period and by rewriting the cell into a fragment, and which is right depends on what the card is teaching. Findings are limited to cells short enough to be one thought. A cell holding several sentences is prose in a table and is judged by the ordinary prose rules.
- Severity: advice
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §9 Consistency
packt.doc.code-lead-in
A code listing is introduced by the prose above it, in the same way a figure or a list is: the sentence before says what the code does, and usually ends with a colon. The rule reports the prose paragraph above an unannounced listing, because that is where the missing sentence goes. Only the first listing of a run is judged. A walkthrough that alternates code with the prose explaining it is the house shape, and each fragment of one listing split across paragraphs is not a new listing. A listing that follows a numbered step, a note box, or another listing is exempt: the step is the lead-in.
- Severity: advice
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §6 Paragraph construction
packt.doc.figure-announced
Every figure and table is introduced by the sentence before it. Three shapes count as an announcement: a "following …" reference either way round (the published corpus uses 31 of them against 2 "above/below"; "the diagram that follows" counts too), an explicit numbered reference such as "as shown in Figure 6.1", and a lead-in that ends with a colon directly above the image block — the drawing itself, or an ASCII diagram set as code, does not break that adjacency. A preceding caption's own "Figure N" text announces nothing. When repairing this as an edit, announce without the figure number: "the following diagram shows…". Writing the number into prose that did not have one is refused by entity_drift on purpose — the rule is satisfied by the shape, not the number.
- Severity: warning
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §6 Paragraph construction
packt.doc.figure-captioned
Caption asks are 3.0% of all mined editor comments. The rule reports an image with no caption within the two paragraphs that follow it, anchored on the nearest prose before the image, which is where an editor pins the same ask.
- Severity: warning
- Applies to: prose and headings
- House style: COMMENT_ANALYSIS taxonomy: structure
packt.doc.figure-sequence
Figure and table numbers must run in order: a deleted figure leaves a gap, an inserted one repeats a number, and either way every later cross-reference silently points at the wrong image. A sixteen-figure renumbering cascade was caught by an editor reading a chapter end to end; the sequence is deterministic, so a rule reads it instead. No fix is offered — whether the right repair is renumbering the figures or fixing one caption is the author's decision, and the finding is the anchor for that query.
- Severity: warning
- Applies to: prose and headings
- House style: COMMENT_ANALYSIS taxonomy: numbering
packt.doc.heading-ladder
Heading-level corrections are 0.5% of all mined editor comments ("h2", "h3" pinned on the offending heading). A heading may be any number of levels shallower than its predecessor but at most one level deeper.
- Severity: warning
- Applies to: headings
- House style: COMMENT_ANALYSIS taxonomy: structure
packt.doc.identifier-style
An identifier in a sentence — a function, a path, a flag, a dotted call — carries the code character style. Authors type most of them as ordinary text, and applying the style is among the largest families in the corpus's 514,000 run-format revisions. The check reads the spans extraction marks as code-shaped but unformatted, so it reports only what the document has not already styled. It is advice and carries no fix: the repair is character formatting rather than a change of words, and this tool writes text edits and paragraph styles. Reporting it puts the work where a person or a production step can do it. One finding is reported per distinct token per document. An identifier used forty times is one decision, and forty findings would bury the rest of the report.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Formatting
packt.doc.lead-in-colon
The sentence introducing a list or a code listing ends with a colon, because it runs on into the block. Combining the period edits and the colon edits that say so, this is the largest uncovered punctuation pattern in the corpus at roughly 13,000 events. The rule only fires where the introduction is already doing its job: the paragraph announces what follows — it ends in "the following", "as follows", or names the items — and ends with a period. A paragraph that ends mid-thought, in a question mark, or in a colon already is left alone, and so is one whose last characters are protected, because a colon after a code token may belong to the token.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §6 Paragraph construction
packt.doc.list-lead-in
Lead-in asks are 5.5% of all mined editor comments. A list run whose preceding paragraph is a heading is reported as a warning — the reader arrives with no prose at all — and one whose preceding prose neither ends with a colon nor announces the list is advice, because a well-written sentence can introduce a list without either.
- Severity: advice
- Applies to: prose and headings
- House style: COMMENT_ANALYSIS taxonomy: structure
packt.doc.placeholder
TODO, TBD, TK, FIXME, XXX, and lorem ipsum are notes the author left for a later self, and a book has shipped with more than one of them still in it. There is no fix to offer, because the placeholder stands for something only the author knows; the finding anchors the query that asks them.
- Severity: error
- Applies to: prose and headings
- House style: COMMENT_ANALYSIS taxonomy: completeness
packt.doc.section-close
Transition and signpost asks are 5.1% of all mined editor comments. The rule reports a section whose last content is a list item, code listing, caption, figure, or table, anchored on the last editable paragraph of the section. Reference-shaped sections — Further reading, Questions, Exercises, Discussion topics — end on lists by design and are exempt.
- Severity: advice
- Applies to: prose and headings
- House style: COMMENT_ANALYSIS taxonomy: structure
packt.doc.section-intro
Signpost asks are part of the 5.1% transition share of the mined editor comments. The rule reports a heading whose next content is a deeper heading, anchored on the outer heading.
- Severity: advice
- Applies to: headings
- House style: COMMENT_ANALYSIS taxonomy: structure
grammar
cmos.grammar.possessive-s
Chicago forms every singular possessive with apostrophe-s, including proper names ending in s — Redis's, Kubernetes's, AWS's — and calls the bare-apostrophe alternative "not recommended". The bare apostrophe remains correct on a plural: "the nodes' configuration" owns nothing singular. The wider CMOS system (7.16-7.24), for the judged read rather than this pattern: a plural not ending in s takes apostrophe-s (the people's choice); a compound phrase puts the possessive on its final element only (the site reliability engineers' rotation); and a name that is plural in form but singular in meaning may take the bare apostrophe by tradition — a call the editor makes once per name and holds. A capitalized word ending in s followed by a bare apostrophe and an owned noun is matched; the reader decides whether it is a singular name (take the fix) or a plural (leave it). Acronym plurals such as "the VMs' addresses" are plurals, and stay. The word after the apostrophe is consumed so a closing quotation mark cannot pose as a possessive — a possessive owns a noun, and a closing quote is followed by the sentence's function words ("…'Other Race', and 'All Observations' as shown…" carries no possessive), which the exclusions name.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §7.16-7.18
packt.grammar.a-an
"an" goes before a vowel sound and "a" before a consonant sound. The copyedited corpus makes this correction 664 times — a→an 493, an→a 171 — which makes it the most frequent grammar repair small enough to be mechanical. The rule is scoped to the cases where the sound follows from the spelling, and the two families of exception are handled by leaving them out rather than by guessing: A word beginning with "u" is never touched, in either direction. Whether it takes "a" or "an" depends on which sound the "u" makes — "a unique index" and "a utility" against "an update" and "an unusual case" — and the spelling does not say which. This was a closed list of "yoo" words for a while, and the list could not hold: it had "unique" and "unicode" but not "univariate", so the rule offered to write "an univariate time series" into a book, twice in one chapter, as a fix needing no judgement. Nor can the prefix be read: "uni" is "yoo" in "uniform" and "uh" in "uninstall". The cost is the genuine "an update" this now misses. That is the right way round: a rule that silently writes an error into a manuscript is worse than one that leaves a correction for the editor, and this rule carries an autofix. A word beginning with a capital letter is skipped entirely, in both directions. Whether an acronym takes "a" or "an" depends on how a reader says it — an SQL query but a SQL Server instance, an HTTP header but a HTTP handler, depending on whether the letters are spelled out — and no spelling rule decides that. Those stay for a human. An acronym an author wrote in lowercase is skipped by the same reasoning, which the consonant pattern reaches in an indirect way: the word must contain a vowel to be treated as a word at all. "an mqtt handler" is correct English because MQTT is said "em-cue-tee-tee", and a rule that only looked at the first letter changed it to "a mqtt" on a real manuscript. Requiring a vowel somewhere in the word leaves mqtt, sql, html, xml, ftp and their relatives alone. "h" is likewise absent from the consonant list, so "an hour" and "an honest mistake" are never touched.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §5 Sentence construction; CMOS 17 §5.250, §10.9
packt.grammar.less-fewer
Editors corrected "less" to "fewer" before countable nouns 75 times across 51 books — "200 or less authentication requests per second" — and never the reverse. The distinction is the countability of the noun, which a pattern can only approximate: the rule matches "less" in front of a plural-shaped word and the numeric "N or less" idiom, and leaves the call to a reader, because "less useful features" is comparing usefulness, not counting features. Uncountable plurals that end in a singular's clothing — analysis, process, progress — never match, because the plural shape the pattern wants is a consonant or e before the s, with u excluded alongside the vowels so that "less obvious" and the rest of the -ous adjectives stay out. That last exclusion came from a real chapter.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: Copyedited corpus, grammar tier; CMOS 17 §5.250 (less; fewer)
packt.grammar.that-who
A relative clause about people takes "who". The corpus makes this change 427 times, always in the same direction. The nouns are listed rather than inferred, because whether a noun refers to people is not something the spelling says: a "client" may be a person or a process, and a "user" is a person in a manual and a row in a database. The list holds the nouns that are people in a technical book often enough for the corpus to have made the change. No fix is applied. "that" is sometimes correct even after a person — a restrictive clause defining which group is meant — and the choice is a reading of the sentence.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Word-level substitutions; CMOS 17 §6.27
Punctuation and mechanics
cmos.mech.acronym-plural
Chicago: capital-letter abbreviations and numerals form their plurals by adding s alone — APIs, URLs, VMs, the 1990s. The apostrophe-s form is the possessive, and both are common in the same chapter, so every match is a question with an obvious answer in its own sentence: is the acronym many, or does it own the next noun? Plural: "configure three API's" → "configure three APIs". Possessive, left alone: "the API's response body". The suggested rewrite is the plural; take it only when the sentence means the plural.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §7.15
cmos.mech.am-pm
Times of day take the lowercase, pointed form with a space after the numeral: "2 AM", "9:30PM", and "10 A.M." all become "2 a.m.", "9:30 p.m.", and "10 a.m.". Every pattern requires a leading digit, which is what keeps the verb in "I am ready" out of reach. When the time ends the sentence, the pattern consumes the sentence period so the abbreviation's own period serves both jobs, as Chicago has it. The abbreviation already names the half of the day, so a trailing time-of-day phrase is deleted: "10 a.m. in the morning" becomes "10 a.m.", and "p.m." sheds "in the afternoon", "in the evening", and "at night" the same way. A form fixed to a.m. in the same pass keeps its redundant phrase until the next run, because the redundancy patterns match the pointed form only. One collision is guarded by name: "AM" after a numeral can be amplitude modulation, so a match that continues into "radio" or "station" is dropped — "2 AM radio" stays as the author wrote it. Other unit-like readings of AM after a digit are rare enough that the corpus has not yet produced one; if one arrives, it joins the guard.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: CMOS 17 §9.37, §10.41
cmos.mech.ampersand-initialism
When an ampersand joins single letters, the whole forms one initialism and closes up: "R & D" becomes "R&D", "Q & A" becomes "Q&A". Chicago spaces an ampersand between words but never between initials. The pattern requires a single capital letter on each side — a letter that is a whole word, not the end of one — so company and product names made of full words keep their spaced ampersand: "Johnson & Johnson" never matches, and an already-solid "AT&T" has no spaces to lose.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: CMOS 17 §10.10
cmos.mech.apostrophe-direction
An apostrophe standing for omitted characters is the same glyph wherever it sits: the right single quotation mark. Autocorrect gets word-initial ones wrong because it cannot tell "’90s" from a quotation opening, so "‘90s", "‘em", "‘til", "‘tis", and "rock ‘n’ roll" all arrive curled left. The fix turns the mark around and changes nothing else. This rule is the complement of the smart-quotes rule: that one converts straight marks to curly, this one corrects a curly mark that curls the wrong way. Only known elisions are fixed — two-digit decades and the closed word list — because a left single quote before any other word is probably a real quotation opening. A candidate followed immediately by a closing quote is skipped for the same reason: "‘em’" is someone quoting the word or the CSS unit, not eliding "them", so the pattern consumes the closing mark and the exclusion drops the match.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: CMOS 17 §6.117, §9.30
cmos.mech.city-state-comma
When a sentence continues past a city-state pair, the state is closed with a comma: "Redmond, WA, is where the team gathers". Chicago treats the state as an appositive, and an appositive that opens with a comma must close with one. Only the mechanical case is fixed: a capitalized word, a comma, a two-letter state abbreviation, and one of a short list of verbs that prove the sentence continues — is, was, has, had, will, remains, hosts, sits. Anything else that follows a state abbreviation needs a human reading, so the general case is judged rather than pattern-matched; the verb list is deliberately short because every entry must guarantee the pair sits mid-sentence.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §10.29
cmos.mech.colon-capital
Chicago lowercases the word after a colon within a sentence unless it starts a proper noun, two or more complete sentences, dialogue, or a quotation. Technical prose adds its own legitimate capitals - product names, UI labels, key-value pairs - so every match here is a candidate, not a verdict. Only words rarely capitalized for any other reason are matched, which keeps product names and labels out of the findings. A "Status: Failed" pair is a label, not prose, and its capital stays. Take the suggested lowercase form only when what follows the colon is a single clause.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §6.63
cmos.mech.date-ordinal
A date after a month name takes a plain numeral: "January 21, 2026", never "January 21st, 2026". The suffix is how the date is said aloud, not how it is set, and Chicago has never used it in the month-day form. The pattern requires the month name, which is what keeps standalone ordinals safe: "by the twenty-fifth" and "the 3rd attempt" are different rules' business and are not touched here. Table cells are exempt (exemptCells): a date in a data cell is the data.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: CMOS 17 §9.31
cmos.mech.decimal-zero
Chicago is unambiguous: a quantity less than one takes a zero before the decimal point. Technical prose is where the rule earns its keep, because thresholds, rates and probabilities below one are everywhere. The pattern requires whitespace or an opening bracket before the point, so a version such as 3.11, an extension such as .png, and .NET never match; code-formatted text is protected before any rule runs. One convention outranks the zero (CMOS 17 §9.19, §3.72): statistics that cannot exceed one — p-values, correlation coefficients — conventionally drop it, and a table column written that way is a deliberate style. The pattern consumes a statistical lead-in (p =, r <, R² ≥ and kin) exactly so the exclusion can see it and stand down; a bare .5 threshold in prose still gets its zero.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §9.19
cmos.mech.double-degree
A comparative or superlative formed with -er or -est never takes more, most, less, or least as well: "more faster" becomes "faster" and "most simplest" becomes "simplest". The intensifier goes and the suffixed form stays, because the suffix is the form the author committed to. The adjective list is curated rather than pattern-matched, because -er and -est are also how English ends server, master, user, filter, and rest — a "more server" must never lose its more. Every entry is a true comparative or superlative, and a word outside the list is never touched. Two idioms are guarded by consuming the word before the intensifier: "more or less faster" and "much less faster" are set phrases in which "less" is not a degree word, so those matches are dropped. Only lowercase intensifiers are matched: a sentence-initial "More faster" would need its replacement recapitalized, which a pattern cannot do, so that rare shape is left to judgement.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.87
cmos.mech.el-zero-confusion
A token that mixes the letter l or O directly with digits — l0, 1O, 10l — is flagged for a human look, because the confusion runs both ways: the author may have typed the letter meaning the digit, or the digit belongs and the letter is a typo. No fix is offered and none could be safe, which is also why this sits at the advice tier: the gates already protect real numbers and code from edits, so the report is a proofreading aid, not a repair. Two shapes are excluded by name. A 0x-prefixed token is consumed by the pattern so the exclusion can see it and hex literals pass unflagged, and O365 is the common product shorthand rather than a confusion. Table cells are exempt (exemptCells): identifiers dumped into a data table are verbatim output.
- Severity: advice
- Applies to: prose and headings
- House style: CMOS 17 §2.80.16
cmos.mech.initials-spacing
Initials standing for given names take a period and a space each: "R. P. Feynman", not "R.P. Feynman". The pattern requires what only a name has — two or three single-letter initials followed by a capitalized word of three or more letters — so an initialism standing alone is never touched. Two guard families keep the abbreviations out. Known two-letter abbreviations that precede capitalized words in ordinary prose — U.S., U.K., E.U., U.N., A.I., I.T., I.P., D.C., N.B., P.S., A.M., P.M., B.C., A.D. — are excluded by name, so "U.S. Policy" keeps its closed form. And a match whose "surname" is a sentence-starting word (The, This, However, and their relatives) is excluded too, because that shape is a sentence ending in initials, not a name: "signed R.P. The follow-up landed" must not become "R. P. The". Both lists are closed and can grow as counter- examples arrive.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: CMOS 17 §8.4
cmos.mech.nested-parens
A parenthetical inside a parenthetical takes square brackets: "(the validator (see Chapter 3) rejects it)" becomes "(the validator [see Chapter 3] rejects it)". Two rounds of round brackets leave the closing marks ambiguous; the bracket swap is Chicago's fix and it is purely mechanical. The pattern requires genuine nesting — an open, an inner pair, a close, with no other parentheses between them — so two separate parentheticals such as "(a) and (b)" never match. Deeper nesting than one level is rare enough that the first fix exposes the next pair to a later pass.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §6.97
cmos.mech.number-noun-hyphen
Chicago's hyphenation table: a number plus a noun hyphenates before a noun it modifies — a five-step process, a 3-node cluster — and stays open everywhere else: "the process has five steps". A numeral joined to an abbreviated unit never hyphenates at all: "a 500 ms timeout" keeps its space, which is why unit abbreviations are absent from the noun list here. The pattern matches a digit, one of the count nouns technical prose actually compounds, and a following word. The following word must be the modified noun for the hyphen to be right — "a 3 node cluster" earns it, "the 3 node types" does not ("3" counts the types, not the nodes) — so read the sentence before taking the fix.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §7.89 (number + noun), §9.16
cmos.mech.numeral-plural
Chicago pluralizes numerals with s alone: the 1990s, the mid-40s, a run of 404s. The apostrophe form is common in drafts because "1990's" looks possessive-shaped, but house style follows CMOS here even when a decade modifies a noun — "the 1990's web" becomes "the 1990s web". Only three shapes are fixed, because only three are safe: four-digit years in the 1000s, two-digit round numbers such as 40 and 90, and three-digit HTTP status codes. A singular numeral that genuinely owns something — "the 747's engines" — falls outside those shapes and is left alone, as are decades written 2000-and-up, whose apostrophe form is as likely a possessive year as a decade. The one collision inside the safe shapes is the radix idiom: "10's complement" and "100's place" are genuine possessives, so the patterns consume a following "complement" or "place" and the exclusion drops those matches.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: CMOS 17 §9.33, §9.53
cmos.mech.paren-comma
A comma or semicolon immediately before a closing parenthesis is deleted: "(see Chapter 3,)" becomes "(see Chapter 3)". Chicago places the sentence's own punctuation after the closing mark, never inside it, and the mark this pattern finds is almost always debris from a revision that moved or deleted the words that once followed it. The fix is deletion only. Whether the sentence needs a comma after the parenthesis is the comma pass's judgement, not this rule's — in the common revision-artifact case the text after the parenthesis already carries whatever the sentence needs.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: CMOS 17 §6.98, §6.18
cmos.mech.prefix-hyphens
Prefix compounds are normally closed. CMOS names the exceptions, and two are detectable without judgement: before a capitalized word or a numeral the prefix takes a hyphen (non-Windows, pre-2020, post-COVID), and a doubled prefix hyphenates once (sub-subentry). The rule repairs the open two-word form of the first case — "non Windows environments" — which authors type constantly. The other direction is curated rather than general: a short list of compounds that arrive hyphenated but that the dictionary closes (re-use, pre-defined, sub-directory, non-existent, co-exist, re-run as a verb). Anything not on the list is left alone, because technical convention keeps many prefix hyphens the dictionary would close (multi-tenant, non-blocking) and the majority-usage call belongs to packt.consist.compound-usage, not a static rule. The vendored prefix table (reference/CMOS_ASSETS.md) records the full CMOS list with its exceptions, for extending either direction deliberately.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §7.89 sec. 4
cmos.mech.prime-marks
A double quotation mark riding a number — a 3.5" drive, a 27” display — is almost always inches set with the wrong character. The measurement symbol is the double prime, ″, and Chicago reserves quotation marks for quotations. The finding is advice with no fix because the same shape has an innocent reading: a number that ends a quoted string — type "42" — puts a closing quotation mark right after a digit, and that mark is doing its real job. A quoted value carrying code formatting is protected and never reported; one set as plain prose is reported for a person to read. Only an eye on the sentence can tell the drive bay from the dialog box, so the rule points and the editor chooses. Table cells are exempt (exemptCells): coordinates and measurements in a data table are reproduced, not repunctuated.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §10.36; §10.66
cmos.mech.question-period
"Does it scale?." carries two sentence enders, and Chicago keeps the stronger one: the period after a question mark or exclamation point is deleted. The typo is common where a sentence was rewritten into a question and the old period survived. The pattern requires a space or the end of the paragraph after the period, which keeps ellipses safe: "wait?..." is three-dot punctuation doing deliberate work, and it does not match.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: CMOS 17 §6.124
cmos.mech.quotation-ellipsis
A quotation is assumed to be an excerpt, so trimming its start or end needs no signal: “...the driver must retry” carries an ellipsis Chicago would simply delete. When words are dropped from the middle, the mark is three spaced periods — the driver . . . must retry — not the tight three-dot run or the single … character. The rule reports a dot run or an … pressed against an opening or closing quotation mark, curly or straight, which catches the over-marked trims. It carries no fix because the repair depends on what was cut: an edge ellipsis is deleted, a mid-quote run is respaced, and only a reading tells which the author meant. A straight closing quote followed by dots can also be narration trailing off after a quotation ends; straight marks are ambiguous by nature, and the finding hands that reading to the editor too.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §§13.50–55
cmos.mech.quote-comma
A direct quotation introduced by a verb of saying — say, ask, answer, reply, respond, wonder — takes a comma between the verb and the opening quotation mark: "You are essentially a juror who needs to answer, “can I act upon this data beyond reasonable doubt?”". The corpus editors add these; the editorial team flagged the misses. The rule only fires when the quotation reads as speech: the quoted text ends with terminal punctuation inside its own marks. A quoted fragment — a cited term, a UI label, a value the reader should type — carries no terminal punctuation and takes no comma, so "the error says “file not found”" is left alone. Verbs of instruction (type, enter, write) are deliberately absent: their quotes are values, not speech.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §13.14; editorial team 2026-08-25
cmos.mech.quote-nesting
Quotation marks alternate as they nest: double outside, single inside. Two shapes betray a nesting gone wrong, and the rule reports both. Straight double quotes inside curly double quotes — “the docs say "use with care" here” — are an inner quotation that should be ‘single’ and curly. A second opening curly double before the first has closed — “the manual reads “danger” — is the same mistake set entirely in curly marks. There is no fix because the repair is a reading, not a swap: the editor decides where the inner quotation starts and ends before changing its marks, and a stray straight quote may turn out to be an unconverted apostrophe or an inch mark instead. packt.mech.smart-quotes handles the plain straight-to-curly conversion; this rule is only about nesting.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §13.30
cmos.mech.quote-semicolon
The companion to packt.mech.quote-terminal-punct, which moves periods and commas inward: semicolons and colons go the other way, always outside the closing mark. The finding is reported rather than fixed because a quoted code fragment legitimately ends in a semicolon — "always end the statement with 'return x;'" — and only a reading tells a quoted literal from a sentence's own punctuation. When the semicolon belongs to the sentence, move it outside; when it belongs to the quoted string, leave it and set the string in code style, where no punctuation rule will touch it again.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §6.9–6.10, table 6.1
cmos.mech.range-preposition
Chicago's rule for ranges: an en dash stands for "to" only when the range stands alone, as in "pages 75-110". Once the sentence opens the range with "from" or "between", the dash may not close it — "from" pairs with "to", and "between" pairs with "and". Only numeric ranges are matched, because "between load-balancing and caching" is a hyphenated compound, not a range. Standalone ranges with no preposition are left alone; they are correct with the dash.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §6.78, §9.60
cmos.mech.sentence-number-start
A sentence must not open on a numeral. Chicago's first remedy is to reword — "42 threads saturate the pool" becomes "The pool saturates at 42 threads" — and its fallback is to spell the number out. Because the reword is usually the better fix and no pattern can write it, this rule reports rather than repairs, with the finding anchored on the numeral itself. The pattern fires at a paragraph start and after a sentence-ending mark. Numbers with internal separators are caught whole — "1,200" and "3.5" are one numeral each — but a numeral inside a sentence is never touched, and headings are exempt because chapter and section titles legitimately open on numbers. Table cells are exempt (exemptCells): a data cell holding a bare numeral is data, not a sentence opening on one.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §9.5
cmos.mech.suspended-hyphen
Chicago: when the second part of a hyphenated compound is omitted from all but the last of a series, the omission is marked with a suspended hyphen — read- and write-heavy workloads, 32- and 64-bit builds. Two shapes are matched: a number paired with a number-compound, where the sharing is nearly certain, and a curated list of adjective and noun first elements that technical prose actually suspends. Both are judged: take the fix when the first term is a truncated compound, and leave it when the first term is simply its own word. A series of three or more suspends every element but the last, with commas between (CMOS 17 §7.88): four-, eight-, and sixteen-node configurations. The comma-series shapes are matched alongside the pairs.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §7.88
cmos.mech.thousands-comma
US style groups digits in threes with commas. The rule fixes bare numerals of five digits or more; four-digit numerals are left alone on purpose, because in technical prose they are usually ports, years, powers of two, and line numbers rather than narrated quantities. Guards, all learned from what the fix must never touch: a numeral whose preceding word names an identifier-like quantity (port, line, error, status, code, id, PID, offset, address, version, build, year) is a label and stays — and the guard reads through a colon, hash, or equals sign, so "error code: 500000" and a hash-prefixed build stamp keep their guard word; a power of two up to 2^24 is a size constant and stays; anything code-formatted or code-shaped is protected before this rule ever sees it; and table cells are exempt wholesale, because a data dump's numbers are the data. Digits to the right of a decimal point are never grouped. The entity gates already treat thousands separators as formatting, so the fix passes number preservation by construction.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §9.54
cmos.mech.timezone-casing
Spelled out, a time zone is a description, not a name: eastern standard time, Pacific daylight time only when Pacific opens the sentence, Greenwich mean time with Greenwich keeping the capital it owns. Abbreviations stay capped — EST, PDT, GMT — which is why "3 p.m. EST" is never touched. The rewrites are literal because a pattern cannot lowercase what it captures: each of the eight zone-and-season combinations is spelled out, plus Greenwich. A zone name at the start of the paragraph keeps its first capital; one that opens a sentence mid-paragraph does not get that courtesy, because "9 p.m. Eastern Standard Time" — the commonest context of all — puts a full stop right in front of the name, and treating every full stop as a sentence break would break the common case to save a rare one. The tracked change makes the rare slip easy to spot and reverse.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §8.90
cmos.mech.trademark-symbols
Trademark and service-mark symbols do not belong in prose. Chicago's position is that using a name in text carries no obligation to decorate it, and a book that starts appending ® must then do it on every mention of every mark. The fix deletes the glyph and keeps the word. The pattern requires a word character immediately before the symbol, so a sentence discussing the glyph itself — "the ® symbol" — is left alone: only a symbol appended to a name is removed.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: CMOS 17 §8.153
cmos.mech.unit-plural
"64 GBs of RAM" pluralizes a symbol, and symbols do not inflect: the form is "64 GB" at any quantity, just as it is 5 km and 30 ms. The fix drops the s and normalizes the spacing in the same stroke, so "64GBs" also comes out as "64 GB". The pattern requires a leading number, so a possessive or an ordinary word ending in a unit's letters — "the OS's scheduler" — is out of reach. Units whose symbol already ends in per-second s, such as Mbps, are listed so a correct "100 Mbps" never matches: the pattern needs an extra s after the whole symbol, and there is none.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: CMOS 17 §10.52, §10.68
packt.mech.caption-separator
The house caption format is "Figure/Table [Chapter].[Number] – [Caption in sentence case]": a spaced en dash after the number. A colon directly after the number is the one acceptable alternative, and either choice must hold across the whole book. The rule learns the chapter's dominant style by counting its en-dash and colon captions, en dash winning a tie or an undecided chapter because it is the house template's own form, and then repairs every caption that disagrees: a period after the number ("Figure 7.5. Caption"), a bare hyphen, a missing separator, wrong spacing around a right separator, and the minority of the two acceptable styles. The fix covers the label through the first word of the caption text so the tracked change stays small and the anchor stays unique. An em dash in a caption is left to packt.mech.em-dash, which turns it into the spaced en dash; a chapter whose dominant style is the colon converges on the next lint pass.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: House ruling 2026-08-25 (editorial team)
packt.mech.caption-stop
A figure or table caption carries no terminal punctuation: the caption is a label, not a sentence, and the full stop comes off even when the caption reads as one. The fix covers the last word and its period, so the tracked change is the one character that moved. A period that is not a full stop survives: an ellipsis, an abbreviation such as "etc.", a period inside closing quotation marks around a code term, and a period belonging to a code-formatted token are all left alone, as are question marks and exclamation marks, which a caption only ends with on purpose.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: House ruling 2026-08-25 (editorial team)
packt.mech.colon-lead
The Writers' Guide gives the colon a single use in running text: "To introduce a list or series where the clause preceding the colon is itself a full sentence." Its example pair is exactly the test: ✗ Colors of the rainbow: red, blue, and yellow. ✓ The rainbow includes these colors: red, blue, and yellow. A fragment before the colon reads as a label rather than an introduction, and the repair is usually to supply the verb the fragment is missing — "includes these colors" — rather than to remove the colon. The guide adds a second condition worth carrying: the clause must be a direct description of what follows, "necessary to avoid confusion over what exactly the series intends to exemplify". That part needs a reader, so this rule checks only the first. Headings, captions, list items and table cells are all exempt, because each is a label by design. A heading takes a colon in a subtitle — "Zero Trust: The Invisible Gatekeeper" — and a caption takes one after its number — "Figure 14.1: DTW accumulated cost matrix". Judging those as sentences reported thirty-six of one chapter's captions and none of its prose. This is the opposite of packt.doc.lead-in-colon, which reports the line before a list that is missing its colon. The two together say that a list takes an introduction and the introduction is a sentence.
- Severity: warning
- Applies to: prose and headings
- House style: Writers' Guide §2.7.2
packt.mech.duplicate-sentence
A sentence that says what a sentence near it already said is cut. The corpus deletes about 500 of these, usually the survivor of a rewrite. Comparison is on the sentence's words, lowercased, with punctuation dropped, so a repeat that differs only in typography is still caught. Sentences shorter than eight words are ignored: "This is important." recurs legitimately, and so do step labels and short captions. The window is the twelve paragraphs before, which is about a page. Beyond that a repeat is often deliberate — a summary restating a section, or a warning repeated where it applies — and the corpus editors leave those alone. Which of the two copies to keep is the editor's choice, so no fix is offered.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §6 Paragraph construction
packt.mech.em-dash
The ruling inverts the older guide. The Writers' Guide once named the spaced en dash "the most egregious misuse" and asked for the em dash; current policy is the opposite: no em dashes in prose or headings, and a break is set with an en dash carrying a space on each side. The change is not grammatical — the em dash is correct English — it is reputational: readers now read it as AI. Two fixes, by shape. A dash between numbers is a range and takes the unspaced en dash: "10—50 ms" becomes "10–50 ms". Every other em dash becomes a spaced en dash with exactly one space on each side, whatever spacing the author gave it — "definitions—enter inheritance" becomes "definitions – enter inheritance". A sentence that reads better with a comma, a semicolon, or a split is still the editor's better fix; the autofix only guarantees the em dash itself never survives. Front matter keeps its exemption: in a foreword or a bio the corpus shows editors adding dashes, because that is a person writing in their own voice. The front-matter profile turns this rule off.
- Severity: error · autofix
- Applies to: prose and headings
- House style: House ruling 2026-08-19; supersedes Writers' Guide §2.7.3
packt.mech.example-comma
When "such as" or "including" adds examples to a thought that is already complete, a comma goes in front of it: "the driver retries idempotent operations, such as reads". The corpus inserts about 3,400 of these commas. Whether the comma belongs is a reading of the sentence, which is why this is advice and carries no fix. The same words can restrict rather than add — "languages such as Go compile to a single binary" is about those languages only, and a comma there would change what the sentence claims. The finding covers the word before the phrase so an editor can see which reading applies.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Punctuation; CMOS 17 §6.51
packt.mech.intro-comma
Introductory words and phrases take a comma: "So,", "By default,", "In this case,", "However,". The list is closed rather than open-ended, because guessing at what counts as introductory produces false positives in technical prose. The The finding covers the introductory phrase alone, and the fix appends the comma to it, so the highlighted text is exactly what changes. One exclusion does most of the work, and it is general rather than a list of phrases: the comma is withheld whenever the word after the phrase continues it instead of starting a clause. "Instead of using binary bits" is not "Instead" followed by a clause, and neither is "As a result of the migration", "In Chapter 3 of this book", or "Second of all" — in each the next word is a preposition or a conjunction, and a comma cuts the phrase in half. That guard is written this way because the narrow version was not enough. The rule shipped with "Instead of" and "In addition to" excluded by name after they were found mangling three books, and the moment the phrase list grew, four new phrases arrived with exactly the same defect. A rule with a list of phrases needs a rule about the list, not another entry each time. "So far, all our analyses…" already has its comma in the right place. "However the balancer keeps migrating…" is introductory and is reported. Measured against the mined corpus: of the times this rule fired on a real author sentence, the published text agreed 141 times and kept the author's form 245 times (36% agreement across 403 books). Agreement is moderate. The rule stays applicable because the comma is a documented house convention and adding one is never wrong, but the number is worth knowing. The second group of phrases — Now, Then, Here, Next, First, Again, "In this chapter" and their relatives — was added from the copyedited corpus, where editors insert a comma after them thousands of times. Each was measured against its own counter-evidence before being listed, comparing how often the published text carries the comma with how often it does not: Again 99%, Next 96% once its phrases are excluded, First 95%, Here 92%, Then 79%, Now 72%. The exclusions below are the counter-evidence itself, which is why they name specific following words rather than guessing at a grammar. "There" was measured and deliberately left out. A sentence-initial "There" takes a comma 64 times in the corpus and does not take one 4,695 times, because "There are two ways…" puts the subject after the verb. It is the clearest case of a phrase that looks introductory and is not.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Punctuation; CMOS 17 §6.24-6.33
packt.mech.io
I/O always carries the slash. This is why ALL-CAPS acronyms are deliberately left editable by the code-token guards: the guard would otherwise protect "IO" and silently disable this rule. Measured against the mined corpus: of the times this rule fired on a real author sentence, the published text agreed 7 times and kept the author's form 17 times (29% agreement across 403 books). A small sample with moderate agreement. The slash is a documented house form and the change is safe.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §4 Hyphenation and compounds
packt.mech.markdown-artifact
Manuscripts arrive with Markdown left in them: a bracket-and-parenthesis link, bold asterisks, a hash heading. Production strips these, and they are flagged rather than fixed because the right repair depends on what was meant.
- Severity: error
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §4 Formatting
packt.mech.note-label
A note or tip box carries its own label through the paragraph style, so a label typed into the text as well is printed twice. The corpus deletes about 400 of these. The rule only fires inside a paragraph the document has already styled as a note box: in ordinary prose "Note:" may be doing real work, and deleting it would remove the only signal there is.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Formatting
packt.mech.note-that
"Note that" at the start of a sentence carries no information: the reader is already reading. The corpus deletes it and keeps the sentence.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §3 Tone
packt.mech.number-words
The contextual system, as the editorial team applies it. In body text, whole numbers zero through nine are spelled out and 10 or greater take numerals: "five databases", "10 screen savers". Units of time follow the same split when written as words — "seven years", "28 days" — and the numeral survives only with an abbreviated unit ("12 hrs"). Numerals always win in the categories where a spelled number would be wrong rather than merely different: measurements and abbreviated units (3 GB, 5 ms, 1.76 lb), pixels and dimensions (80 × 80), values the reader is told to enter ("Enter 5"), round numbers of a million or more (7 million), percentages (1 percent, 3%), versions, coordinates and numbered document parts (row 3, Chapter 9, Volume 2), and anything code-shaped. Each pattern captures the word before the number so those exclusions can see it. Three of the team's rules need a reading and stay with the editor rather than this rule: same-type consistency (one 16-page article beside a 7-page one keeps both as numerals), two different quantities side by side ("fifteen 20-page articles" spells one and not the other), and a sentence that opens with a numeral of 10 or more, which is recast or spelled. The judged passes carry all three. Applying it needed the entity check taught to compare values rather than characters: "3" leaving while "three" arrives is the same number, and the gate now knows it, while "3 nodes" becoming "two nodes" is still refused.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: House ruling 2026-08-19; CMOS 17 §9.3
packt.mech.quote-terminal-punct
Packt sets US punctuation, which puts a period or a comma inside the closing quotation mark: the book says "roll forward," not "roll forward",. The copyedited corpus makes this move with no counter-examples in the sampled quote edits. The replacement also curls the quotation mark, so the whole repair is one tracked change rather than two edits arguing over the same character with packt.mech.smart-quotes. That is why the rule matches a straight closing quote as well as a curly one. Only the period and the comma move. A colon and a semicolon stay outside the quotation mark in US style too, and a question mark belongs wherever the question does — inside when the quoted words are the question, outside when the sentence is — which is a reading of the sentence, not a typographic rule. The pattern takes the word in front of the quotation mark with it. A find of "”." alone is two characters of punctuation, which the degenerate_find gate refuses because it does not say where in the paragraph it is — and since this rule is autofixable, every one of its findings was being planned and then dropped before anything reached the document.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Punctuation; CMOS 17 §6.9-6.10
packt.mech.redundant-list-numbering
An ordered list is numbered by the document, so a number in the item's text is printed twice and stops agreeing with the real one the moment a step is inserted. The corpus deletes about 1,200 of these. The rule fires only on a paragraph the document has marked as an ordered list item. A number at the start of an unordered item, or of ordinary prose, is the author's own numbering and is left alone.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §4 Formatting
packt.mech.self-reference
"As I mentioned earlier" and its relatives spend a clause telling the reader about the book instead of about the subject. The corpus deletes about 300 of them. They are reported rather than deleted because the phrase sometimes carries a real cross-reference — the sentence it introduces depends on something the reader needs reminding of — and the repair is then to name what was said, not to cut the clause. Where nothing follows from it, deleting is right, and the finding covers exactly the words to remove. The same reflex names the book as a possession: "our book" and "my book" put the author between the reader and the subject. House style has the book call itself "this book", so those are reported too; the repair is usually the plain swap, but the sentence sometimes wants the reference cut entirely, which is why the finding stays report-only. Two shapes are left alone: "your book", because a reader's own book is a real thing a sentence can be about, and "in my book", the idiom for "in my opinion" — the pattern consumes the "in" so the exclusion can see it.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §3 Tone
packt.mech.semicolon-density
The Writers' Guide names the limit: "There should be no more than one instance of a semi-colon within a single paragraph (except in the case of a complex series, as discussed above)." Its reasoning is about what the mark is for: "By keeping this mark to a minimum, you maintain its effectiveness as a literary tool; the sentences you choose to combine retain the full weight of their strong correlation. Overuse will make this device all but meaningless." And on the alternative: "Periods do not negate thematic connections between sentences. They are not that full a stop." This is the kind of limit a human reviewer applies unevenly. Reading a chapter straight through, the third semicolon in a paragraph looks like the first two, which were fine. Counting is what a rule is for. The complex-series exception is honoured: a paragraph whose semicolons separate items that carry their own internal commas — "Althea, 92%; Filip, 90%; Gomez, 89%" — is the guide's own permitted case and is not reported. No fix is offered. Which semicolon survives, and whether the others become full stops or the sentences merge, is a judgement about what the paragraph is arguing.
- Severity: advice
- Applies to: prose and headings
- House style: Writers' Guide §2.7.4
packt.mech.smart-quotes
Published Packt prose uses curly quotation marks and apostrophes. A
manuscript written in a code editor arrives with straight ones, and
converting them is the single largest purely typographic repair in the
copyedited corpus: 129 of 200 sampled quote edits are this and nothing else,
around 14,800 events across the corpus. It is reported and never applied,
and the reason is a gate rather than a doubt about the finding. The
quote_churn check refuses any edit whose only difference is a quotation
mark or an apostrophe, because Packt production normalizes those downstream
— so a tracked change here buys nothing and costs an editor a review. This
rule shipped as an autofix for one afternoon, and a real run found every one
of its edits refused at the gate: 125 findings on one chapter, none of them
applicable. Advice is what it should have been. Read it as a report on the
manuscript rather than a queue of work. A chapter full of straight quotes
tells you how it was written; it does not tell you to go and change them.
Code is exempt without the rule having to say so. Every code-formatted run
and code-shaped token is a protected span, and the engine drops a finding
that touches one — which matters here more than anywhere else, because a
curly quotation mark inside a command or a JSON literal breaks it. The
corpus shows editors repairing exactly that damage in the other direction
when a straight quote has already been curled inside code. Straight single
quotes standing as quotation marks are deliberately left alone. Only an
apostrophe between letters, or after a letter at the end of a word, is
converted; anything else is indistinguishable from a foot mark, a prime, or
a shell literal.
- Severity: advice
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §4 Formatting
packt.mech.spelling
A word that appears in no published Packt book is worth a second look. The dictionary is the corpus vocabulary — every word used in at least three different books — which is what lets the check run over technical prose without reporting kubelet, WiredTiger, or a product released last week. Findings are advice and carry no fix. The dictionary says a word is unpublished, not that it is wrong, and proposing a correction would mean guessing which word was meant. Three shapes are never reported, because the dictionary cannot speak to them: a capitalized word, which may be any proper noun in the world; anything carrying an inner capital, an underscore or a dot, which is an identifier whatever it is styled as; and anything shorter than four letters, where real abbreviations far outnumber real typos. Code and protected spans are excluded by the engine before the rule sees them. A word the manuscript itself establishes is accepted: if the document defines it as an acronym, or uses it as an identifier inside a protected span, it is this book's vocabulary and the rule stays quiet. That is why the check reads the whole document before reporting anything.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §9 Consistency
packt.mech.teaser
Forward teasers are cut: "more on that shortly!" and its relatives promise something instead of saying it. Enthusiasm itself is kept — exclamation marks survived the corpus edit unchanged — but a teaser is not enthusiasm.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §3 Tone
packt.mech.that-is
The corpus writes "(that is, stop parallel execution)" with the comma. Only the parenthetical form is checked, so an ordinary sentence such as "that is the point" is left alone. Measured against the mined corpus: of the times this rule fired on a real author sentence, the published text agreed 0 times and kept the author's form 3 times (0% agreement across 403 books). No agreement in the corpus at all, on a small sample.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Punctuation
packt.mech.unit-space
House style writes 32 GB and 16 MB, with a space. Units are matched case-sensitively so an identifier such as 3ms inside code, or a version string, is not caught; code is protected in any case. The finding covers the whole number and its unit, so what an editor sees highlighted is what the fix replaces. Measured against the mined corpus: of the times this rule fired on a real author sentence, the published text agreed 38 times and kept the author's form 50 times (43% agreement across 403 books). Agreement is moderate: editors often leave the spacing alone. The fix stays automatic because unit spacing is typographic and adding the space cannot change meaning.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §4 Numbers, units, capitalization; CMOS 17 §9.16
Word choice
cmos.words.amount-number
Chicago's glossary: amount is for what you measure ("the amount of memory"), number for what you count ("the number of requests"). The swap is only safe when the following noun is unambiguously a count plural, so the rule matches a curated list of the count nouns technical prose actually counts rather than guessing plurality from a trailing "s" — a guess that would fire on mass nouns that happen to end in "s" ("analytics", "kubernetes") and miss "data", the mass noun that follows "amount of" most often and is correct there. The capitalized form gets its own rewrite, because the replacement swaps the first word and cannot copy its capital from a captured letter.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 (amount; number)
cmos.words.and-or
Chicago's glossary asks writers to avoid the construction: in most sentences plain "or" already includes the both-at-once case, and where it genuinely does not, "X or Y, or both" says so explicitly. No fix is offered because the three repairs — "and", "or", "or both" — each change the sentence's logic, and only a reader can say which one the author meant.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 (and/or)
cmos.words.angle-placeholders
A token like <your-bucket-name> or <namespace> is a placeholder from a
command line, and it belongs in code style with the command it came from.
When it turns up in plain prose the formatting has been lost, and a reader
meets raw angle brackets mid-sentence. Code spans are protected
automatically, so anything this rule matches is by definition prose: a
placeholder that kept its code formatting is never reported. The fix is the
editor's to choose — restore the code style, or rewrite the sentence to
name the thing in words ("the bucket you created") — which is why the
finding carries no replacement. The pattern wants the lowercase-hyphenated
shape placeholders actually take. Comparisons survive because their angle
brackets touch spaces, and production scaffolding like <IMAGE PLACEHOLDER>
is uppercase, which is a different rule's business.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §6.104
cmos.words.as-such
Chicago's glossary: "as such" means "in that capacity", and the "such" must have an antecedent noun — "Redis is a cache; as such, it holds no durable state" is right because "such" points at "a cache". The common misuse opens a sentence with "As such," as a synonym for "therefore" or "consequently", with nothing for "such" to refer to. Only the sentence-initial form is matched — the start of the paragraph or the start of a new sentence — because that is where the connective misuse lives; mid-sentence "as such" ("the driver registers itself as such") is almost always the correct in-that-capacity sense and never fires. The finding is advice with no fix: the sentence-initial form is legitimate when the previous sentence names the capacity, and only a reader can see whether it does.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 (as such)
cmos.words.cf-see
The abbreviation cf. is Latin confer, "compare", and Chicago holds it to that meaning: it asks the reader to weigh this passage against that one. Most manuscripts use it as a fancy "see", and "cf. Chapter 4" pointing at a numbered element is almost always a plain cross-reference in disguise. The rule flags cf. only in front of Chapter, Figure, Table, or Section, where the pointer reading dominates. It is advice with no fix because the author may genuinely mean compare — "the results differ; cf. Table 3" is correct as written — and only the sentence says which it is. A cf. aimed at an idea rather than a numbered element is left alone entirely.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §10.42
cmos.words.comprised-of
Chicago's usage glossary draws the line: comprise means "consist of, include" — the whole comprises the parts — and compose means "make up" — the parts compose the whole. "Is comprised of" mixes the two and survives in no careful register. Each inflection gets its own rewrite so the fix agrees with the subject: "is comprised of" becomes "consists of", "are comprised of" becomes "consist of", and a bare participle — "a cluster comprised of three nodes" — becomes "composed of".
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 (comprise; compose)
cmos.words.confusables
Chicago's usage glossary supplies the pairs and the line between them. Affect and effect: affect is the verb ("the patch affects performance"), effect the noun ("no visible effect on latency"). "Effect" as a verb means to bring about — "effect a rollback" — and is left alone. Imply and infer: the evidence implies; the reader infers. Logs, output and documentation cannot infer anything. Principle and principal: a principle is a rule; principal is a person or the leading instance. "Principal component analysis" and job titles are correct with principal and never matched. Ensure and insure: ensure makes an event certain; insure is what an underwriter does. Outside financial prose, "insure that" means "ensure that". Complement and compliment: to complement is to complete or pair well; to compliment is to praise. Two tools that "compliment each other" are flattering one another, which is charming but rarely what the author meant; the sentence keeps the final say because teams genuinely do compliment each other. Discreet and discrete: discreet is tactful, discrete is separate. Values, steps, states and their kin are discrete; only people are discreet, so "discreet values" is matched against a list of the count nouns technical prose separates. Peak, peek and pique: a peak is a summit, a peek is a glance, and pique is what curiosity gets. "Peaked my curiosity", "sneak peak" and "take a peak at" each use the summit where the glance or the provocation belongs. Lead and led: the past tense of lead is led. After has, have or had, "lead to" is always the misspelled participle; "that lead to" is left alone because a plural subject makes it a correct present tense ("the steps that lead to the summary"). Forgo and forego: to forgo is to do without; to forego is to precede, which survives almost only in "foregoing" and "foregone". "Forego the overhead" means forgoing it. "Foregoing" and "foregone conclusion" are never matched. Alternate and alternative: alternate is taking turns; an option is an alternative. "An alternate approach" is matched before the nouns that name options; "alternate" as a verb or in fixed terms ("alternate rows") is untouched. Your and you're, whose and who's, their, there and they're: possessives against contractions. Each direction is matched only in an unmistakable shape — a contraction directly before a bare noun ("you're code", "who's account"), a possessive directly before a verb or verb phrase ("your welcome to", "their is") — so the vast correct majority never fires. Past and passed: past is the time, passed the verb. "The deadline has past", "in the passed" and "the passed few years" each write the verb where the noun or adjective belongs. "Had past experience" is correct — past is the adjective there — which is why the verb shape requires a subject noun before "has past". Precede and proceed: to precede is to come before, to proceed is to continue. "The proceeding chapter" means the preceding one, and "precede to the next step" means proceed.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 usage glossary
cmos.words.continual-continuous
Chicago's glossary draws the line: continual means recurring — stopping and starting — and continuous means without interruption. A stream is continuous; retries, polling, alerts, restarts and their kin are continual, because each is a discrete event with a gap before the next. The rule matches "continuous" only before a noun from that repeated-with-gaps family, so the genuinely unbroken uses — continuous stream, continuous function — never fire. Continuous integration, deployment and delivery are terms of art and stay exempt the same way: none of their nouns is in the list. The suggestion carries "continual" but the finding is advice, not a fix, because an author can mean the strong claim — polling that genuinely never pauses — and only the surrounding sentence says so.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 (continual; continuous)
cmos.words.criteria
Chicago's glossary: criteria is the plural of criterion. It takes a plural verb, "criterias" does not exist, and a single test is a criterion. "A criteria" becomes "a criterion" only when the word stands alone; in an attributive position such as "a criteria list" the plural is doing adjective work and the sentence is left for a person. "This criteria is" needs the noun changed rather than the verb, which is a judgement the autofix cannot make, so the determiner cases are left for a person too.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 (criteria)
cmos.words.due-to
Chicago's glossary keeps "due to" for the predicate — after a linking verb, as in "the slowdown was due to a missing index" — and prefers "because of" or "owing to" when the phrase opens a clause adverbially. Only the sentence-initial position is matched, where the adverbial use is unambiguous. Mid-sentence "due to" after a form of "be" is correct and never flagged; mid-sentence adverbial uses exist but cannot be told from the predicate ones mechanically, and the sentence-initial form is where drafts concentrate the habit.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 (due to)
cmos.words.errata
Chicago's usage glossary calls each of these an error, not a choice between registers, which is what separates this rule from the preference rules around it: there is no sentence in which the matched form is right. The list: "irregardless" is "regardless"; "preventative" is "preventive"; to "mitigate against" a risk is to mitigate it (militate is the verb that takes "against"); to "hone in" is to "home in"; havoc is wreaked, never wrecked, and the past tense is "wreaked"; "'til" — straight or curly apostrophe — is "until"; "thusly" is "thus"; "in regards to" and "with regards to" are "regarding"; and "in actual fact" is "actually". Each inflection is matched so the fix agrees with the sentence: "mitigates against" becomes "mitigates", "honing in" becomes "homing in", "wrecked havoc" becomes "wreaked havoc". Where the replacement cannot copy its capital from a captured letter — "'til" to "until", "in regards to" to "regarding" — the capitalized form gets its own rewrite, so a sentence-opening error keeps its capital.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 usage glossary
cmos.words.extraneous-of
Three prepositions pick up a spare "of" in drafts: "jumped off of the ledge", "inside of the container", "runs outside of the sandbox". The "of" adds nothing and the fix deletes it, keeping the preposition the author chose. One sense is protected: "outside of" meaning "except for" or "beyond the bounds of" is idiomatic before words like work, hours, and scope — "outside of scope for this chapter" is not a location. The pattern consumes the following word so the exclusion can see it, and those common except-for shapes are left alone; an except-for use before some other noun is rarer than the locative and is accepted as the cost of the fix.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250
cmos.words.generic-pronoun
The rule pairs a generic role noun — a user, each developer, every administrator — with a gendered pronoun later in the same sentence, which is the shape a word list alone cannot catch: "his" is unremarkable until the sentence's subject is hypothetical. Chicago's nine rewrite techniques (5.255) are the menu: omit the pronoun, repeat the noun, pluralize the antecedent, swap in an article, use the imperative, or use singular they, which house style accepts for the generic user and prefers to any "he or she" scaffolding. Prefer the free plural rewrite when it reads naturally. Real people keep their real pronouns: the rule requires the indefinite determiner, so "the engineer Priya... her design" never fires — "the" before a role noun matches only when no name follows. Deliberately single-sex contexts (a maternity-leave example) are the named exception: flag nothing that is about one sex on purpose.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.252, §5.255–5.256; editorial policy
cmos.words.impact-verb
Chicago's glossary accepts impact as a noun and as a literal strike, and flags the figurative verb — "this impacts performance" — as jargon. "Affects" or "influences" is the plain verb; "impactful" has no careful register at all and becomes "significant" or "influential". Matching is shaped to catch the verb without catching the noun. The unambiguous inflections ("impacted the", "impacting your") and the auxiliary-marked infinitive ("will impact the", "could significantly impact how") are safe; "impacts" before a determiner is nearly always the verb, and the rare plural-noun reading — "the impacts the storm caused" — is tolerable at advice level. The bare uninflected verb with no auxiliary ("these changes impact the schedule") is left unmatched on purpose: without the auxiliary it is indistinguishable from the noun ("the impact the change had"), and a guess would flag the correct noun constantly.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 (impact)
cmos.words.include-comprise
Chicago's glossary: the whole comprises all of its parts, so "the cluster comprises three nodes" promises there is no fourth. "Include" makes no such promise, which is why it is the verb for a partial list. The rule fires where "comprise" meets a quantifier that often signals a sample rather than a census — "comprises several", "comprise many", "comprises the following" — and asks the author which they meant. It is advice with no fix because the exhaustive reading is frequently correct: "the pipeline comprises three stages" is exactly right when there are three. Only the author knows whether the list is the whole.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 (include; comprise)
cmos.words.its-contraction
Chicago's glossary: its is the possessive of it; it's is the contraction of it is or it has. The patterns flag the two reliable shapes — "it's" where a possessive slot follows (a noun the pronoun owns), and "its" where a contraction slot follows (an adjective or adverb that needs "it is" in front of it). Both lists are deliberately narrow. "its being deprecated" is a correct possessive before a gerund, and "it's broken" is a correct contraction before a participle, so only words that sit on one side of the line are matched. The suggested rewrite carries the other word; read the sentence before taking it.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 (its; it's)
cmos.words.latin-plurals
Chicago's glossary: phenomenon and stratum are the singulars, phenomena and strata their plurals, and the double plurals "phenomenas" and "stratas" do not exist. The rule is the criteria rule's shape applied to the next two Latin plurals technical prose actually uses. The safe repairs are matched: a singular determiner directly before the plural — "this phenomena", "a phenomena", "each strata" — takes the singular noun, and a double plural collapses to the plain plural. A determiner two words away ("this phenomena set") does not occur the way "a criteria list" does, so no attributive guard is needed here.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 (phenomenon; stratum)
cmos.words.like-as-clause
Chicago keeps the traditional line: like is a preposition and takes a noun ("works like a filter"); a full clause — subject and verb — wants the conjunction "as" ("works as you would expect") or "as if" ("looks as if it failed"). The rule matches "like" only when a pronoun and a verb follow, which is the unmistakable clause shape; "like" before any noun phrase, including "like you" at the end of a sentence, never fires. No fix is offered because the repair splits — "as" for a real comparison of actions, "as if" for an appearance — and some sentences read better recast with a noun after all.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.185
cmos.words.majority-most
Chicago's glossary reserves "majority" for countable votes and shares, where more-than-half is a fact worth stating; before a mass noun it is padding, and "most" carries the sentence. "The majority of the time" becomes "most of the time". The rule matches only "the majority of the" followed by a mass noun from a curated list, because that is where the swap is mechanical. A countable use — "the majority of the voters", "a majority of respondents" — can be a genuine claim about proportion, so it never fires. The capitalized form gets its own rewrite: the replacement swaps the first word and cannot copy its capital from a captured letter.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 (majority)
cmos.words.noncomparable
Chicago lists adjectives that resist comparison because they name absolute states: unique, optimal, impossible, essential, complete, identical, perfect, universal, ultimate, mandatory. An intensifier in front of one — very, more, most, somewhat, quite, rather, extremely, highly — adds nothing the adjective did not already say, so the fix deletes it and keeps the adjective. Only lowercase intensifiers are fixed. A sentence-initial "Very unique" would leave its replacement adjective lowercase at a sentence head, and a pattern cannot recapitalize it, so capitalized forms are left to judgement. Comparisons are guarded by consumption: a match that runs into "than" — immediately or within the same clause — or into "of" is dropped, because "more essential than metrics" cannot lose its "more" without stranding the "than". The safe direction is silence, and those sentences go to a person.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.89, §5.250
cmos.words.percent
Chicago separates the pair: percent is used with a numeral — "latency dropped by 12 percent" — and percentage is the noun for an unnumbered share — "a small percentage of requests". They are not interchangeable, and a draft that mixes them usually mixes them both ways. "Percentage point" is its own term of art — the absolute difference between two percentages — and is never rewritten.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §9.18
cmos.words.prepositions
Chicago's list of prepositional idioms settles both: a thing is based on its foundation, never "based off" or "based off of", and one thing is independent of another, not "independent from" it. The extra "of" in "based off of" is consumed by the same rewrite, so both spoken forms land on "based on". "Consist in" is deliberately left alone. It looks like the same error — "consists of" is the parts reading — but "consist in" is the correct idiom for essence ("the value consists in its simplicity"), so a mechanical swap would break the sentences that use it well.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.195
cmos.words.presently
Chicago's glossary notes the split: traditionally "presently" meant "in a little while", and current American usage often means "at present". A technical sentence cannot afford the spread — "the feature is presently unavailable" reads as either a status or a promise. The finding is advice with no fix because both repairs are live: "now" (or "currently") when the sentence describes the present, "soon" when it describes the near future, and only the author knows which was meant.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 (presently)
cmos.words.reason-is-because
Chicago's usage note is blunt: the phrase is "the reason is that", and "the reason is because" is redundant. The fix swaps the "because" for "that" and touches nothing else, so "the reason the test flakes is because the clock drifts" becomes "the reason the test flakes is that the clock drifts". The pattern allows up to sixty characters of subject between "reason" and its verb, stopped at any sentence-ending mark, so the common shapes — a bare "the reason is because" and a "the reason X does Y is because" — are both caught. A "because" with no reason-verb pairing in front of it is ordinary causation and never matches.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250
cmos.words.shall
Chicago's usage note is blunt: outside law and formal specification, "shall" is an affectation. An obligation is "must", a prediction is "will", and a sentence like "the gateway shall reject unsigned requests" is a requirement wearing a standards document's clothes. The word does have one legitimate home in a technical book: a verbatim quotation from a specification. RFC 2119 language quoted as RFC 2119 language keeps its shall, which is why this is advice — the rule flags every occurrence and the editor declines the ones inside real quoted spec text rather than rewording someone else's standard.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 (shall)
cmos.words.us-state-spellout
In running prose a US state is spelled out: "the data center in Virginia", not "in VA". Chicago allows the two-letter postal codes only where an address is being given as an address. The rule looks for a code after a place-shaped preposition — in, to, from, near, outside, across — because a bare two-letter token means too many other things to flag on its own. Even with the preposition, collisions remain: CA is a certificate authority, OR an operator, ID a column, and "in CA format" names none of the fifty states. That is why the finding is report-only — the editor reads the sentence and spells out the state or declines. Cloud region codes never trip it: us-east-1 and friends are lowercase, and the pattern only matches capitals. DC is not in the list; it is not a state, and Chicago gives Washington, DC its own treatment.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §10.27
cmos.words.utilize
Chicago's glossary: "use" is the ordinary verb, and "utilize" adds only syllables. The mapping is one-to-one for every inflection — utilize/use, utilizes/uses, utilized/used, utilizing/using — so the fix is mechanical. Each capitalized form gets its own rewrite, because the replacement cannot copy a capital U from a captured letter. The noun is handled elsewhere: packt.words.usage suggests "usage" for "utilization", at advice level, because the corpus shows editors keeping the noun far more often than the verb. And the British spellings never reach this rule directly — packt.consist.us-spelling turns "utilise" into "utilize" first, and this rule takes it from there on the next pass.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §5.250 (utilize)
packt.words.all-your
"all of your" becomes "all your". The same applies to "all of the" only when it reads as a quantifier, which is a judgement, so only the "your" form is fixed here. Measured against the mined corpus: of the times this rule fired on a real author sentence, the published text agreed 1 times and kept the author's form 12 times (8% agreement across 403 books). Too few agreements to treat as a rule.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Word-level substitutions
packt.words.ampersand
Editors spelled a spaced ampersand out as "and" 818 times, and the corpus shows most of them living in headings and cross-referenced titles — "Rendering & Lighting Optimization", "Common Usage & Output" — which is why the rule reads headings, and only headings. In body prose the spaced ampersand's biggest population is citation author pairs — "Jeon & Han, Annual Review of Analytical Chemistry" — where the ampersand is the citation convention, and a three-character match cannot see the names around it to tell the difference. A real bioscience chapter put six of its seven ampersands in citations. Only the spaced form matches. A tight ampersand is part of a name — R&D, Q&A, AT&T — and stays. The rule does not autofix because a heading can still carry a proper name ("Barnes & Noble") that only a reader recognizes as one.
- Severity: warning
- Applies to: headings
- House style: Copyedited corpus, phrase substitutions; CMOS 17 §6.21, §10.10
packt.words.cliches
The Writers' Guide devotes a section to these and supplies the list this rule enforces. Its four reasons are worth keeping in front of you when you decide whether to act on a finding: They are inaccurate — the phrase was written for a moment and a subject that are not yours. "Why tell the reader that some program runs an operation 'under the hood'? What does that mean?" They are boring, repetitive, and unoriginal. They are inconsistent and self-contradictory, because more than one in a passage mixes metaphors: "You begin with one figurative expression, buckle your seatbelts, and end with an entirely different metaphor." They are not universal. "I wouldn't touch that with a bargepole", "touch wood", and "jumping the queue" read as oddly in America as "ten-foot-pole", "knock on wood", and "cutting in line" do in the UK. No fix is offered, because the replacement is whatever the author actually meant. That is the point: "take a moment, consider your true intent, and carefully complete the statement in your own, specific and accurate, words." The list is the guide's own, not an invention of this rule, so a finding can be shown to an author as house guidance rather than editorial taste.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: Writers' Guide rule 10; §2.4.2; CMOS 17 §5.250
packt.words.click-select
The guide raises this under accessible language, alongside jargon, and its reasoning is about who can follow the instruction rather than about style: "Using 'Click' as a verb or action excludes readers who cannot use a mouse and may be relying on assistive technology. While terms like 'right-click' may be unavoidable, for the purposed of inclusivity, a better option in these instances would be 'Select'." "Right-click" is exempt, on the guide's own reasoning that it may be unavoidable: it names a distinct action with no neutral equivalent, where a plain click does not. "Double-click" is exempt for the same reason. There is no fix, because the surrounding sentence usually needs a small adjustment: "click on the Save button" is "select Save", not "select on the Save button". Only the verb is matched, and only where something follows it to be clicked. "Click" is also an ordinary noun — "every click, every query, and every data access decision he made was being evaluated" is about events in a log, not an instruction to the reader — and a rule that read the noun as the verb would report a sentence no editor should touch.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: Writers' Guide §1.1.1
packt.words.clunky
The Writers' Guide lists these by name under "Clunky Phrases and Structures", with the reduction for each: "In terms of" is "a largely meaningless expression that is generally best replaced with another single preposition (such as about, of, or even as), if not removed from the sentence entirely." "The fact that" is "an often unnecessarily wordy way of saying 'that'". "In order to" reduces to "to" — kept here as well as in packt.words.to, which carries the autofix and the corpus evidence for it. "In the process of" introduces a participle phrase and is superfluous: "when you're in the process of revising a sentence" is "when you're revising a sentence". "Enables you to have" and "the ability to have" are "overly wordy and passive" ways of expressing function, replaced with "allows you to", "with", or "using". The guide adds that "capability to have" is always an error, being a confusion of "capability" and "ability". No fix is attached. Each of these sits in a different sentence shape and the guide's own examples resolve them three or four different ways — "In terms of operators, this one is the most efficient" becomes "This is the most efficient of the available operators", which no substitution produces. Chicago's glossary (CMOS 17 §5.250) supplies a second set of inflated phrases, each with the short form the suggestion carries: "in excess of" is "more than", "at the present time" is "currently", "at this time" is "now", "as of yet" is "yet", "in accordance with" is "per", "inasmuch as" is "because", "for the purpose of" is "to", "by means of" is "with", and "each individual" is "each" (or just the noun). "At this time" is guarded: the pattern consumes a following "of", "each", "every", "last", "yesterday" or "tomorrow" so the exclusion can see it, because "at this time of day" is a real point in time, not padding.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: Writers' Guide §2.4.3; CMOS 17 §5.250
packt.words.conjunction-opener
Sentence-initial "And" is one of the corpus's most consistent small deletions — nearly a thousand removals across more than a hundred books — and sentence-initial "But" becomes "However," 108 times across 59 books. The finding carries the matching repair, with the following word recapitalized where the conjunction was carrying the capital. Quoted sentences are left alone: a conjunction inside quotation marks belongs to whoever is being quoted. List items are left alone too — a bullet fragment is not a sentence making the rhetorical move this rule is about.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: Copyedited corpus, small deletions
packt.words.different-than
Editors changed "different than" to "different from" 76 times across 51 books, with almost nothing in the other direction. The corpus edits all sit in front of a noun phrase — "different than the linda object" — which is where "from" belongs. Before a clause, "than" holds its ground in US usage — "different than expected", "different than what we saw" — and editors leave those alone. So the rule gates on what follows rather than excluding what it cannot see: it fires only when a determiner opens a noun phrase after "than", and it does not autofix, because the boundary between a noun phrase and an elliptical clause still deserves a reader.
- Severity: warning
- Applies to: prose and headings
- House style: Copyedited corpus, phrase substitutions; CMOS 17 §5.250 (different)
packt.words.eg-ie
In prose, Latin abbreviations are spelled out: "e.g." becomes "for example" and "i.e." becomes "that is". What editors replace them with was measured over the copyedited corpus rather than assumed. When an editor does replace "e.g.", the replacement is "for example" 69% of the time and "such as" only 22%, so the suggestion names the form the corpus actually uses; "i.e." goes to "that is" 70% of the time, which is what this rule already offered. Whether to replace at all remains a judgement. Of the times this rule fired on a real author sentence, the published text agreed 65 times and kept the author's form 436 times (13% agreement across 403 books) — editors keep the abbreviation far more often than they spell it out, so this is a candidate to consider rather than a correction to apply. Since the rule does not autofix, the replacement reaches an editor as a suggestion.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Word-level substitutions; CMOS 17 §5.250, §6.51
packt.words.empty-modifiers
Two of the guide's sections converge on the same list. On quantifying terms: "By far the worst of these vague quantifying terms is the word 'very'. The adverb is as ambiguous as it is overused. You should aim to avoid it entirely." The instruction around it is to be specific — "Don't say the block is 'large'; say it will be '15 lines'." On adjectives: "Avoid descriptors like 'fantastic', 'wonderful', and 'awesome', as they don't offer any further description than positivity. These are hardly better than 'good' as modifiers go, and tell the reader nothing useful about the subject you're recommending. The same is true of adjectives on the opposite side of the quality spectrum. Words like 'horrible', 'terrible', and 'awful', are just a fancier way of saying 'bad'." The guide's test is a question: what does the word rule out? "I saw a house last week that was amazing. What does the speaker mean by 'amazing'? Were there 16 bathrooms? Did it have hardwood floors?" If the answer is nothing, the word is doing nothing. The adverb section gives the repair for the "very" cases, and it is not deletion but a better word: "The husky was very pretty" becomes "The husky was gorgeous"; "This program is very easy to use" becomes "This program is user-friendly". No fix is offered here for that reason. A technical term that happens to contain one of these words — "big data" is the guide's own example — is not a finding.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: Writers' Guide rule 11; §2.3.2, §2.3.3; CMOS 17 §5.250 (very)
packt.words.etc
"etc." is the fourth most frequent phrase edit in the copyedited corpus: 806 replacements with "and so on" across 144 books, and another 189 deletions, with not one edit in the other direction. The Latin abbreviation asks the reader to finish the list themselves; "and so on" says the same thing in the register the books are written in. The abbreviation carries its own full stop, which is what makes the sentence-end case delicate: in "…, Active Directory, etc. But why…" the dot after "etc" is also the sentence's period, so the rewrite has to leave one behind. The patterns take that case first. The rule only matches "etc" after a comma, which is the only place the abbreviation means "and the rest". A path such as /etc/hosts never follows a comma directly, and code is protected anyway.
- Severity: warning · autofix
- Applies to: prose and headings
- House style: Copyedited corpus, phrase substitutions; CMOS 17 §5.250 (etc.), §6.20
packt.words.gendered
The Writers' Guide gives this list and its replacements directly. It is unusually firm about the status of the section it sits in: "these are all non-optional. Consider each an absolute law. Breaking any one of them is not only offensive to at least a contingent of your readers, it is inappropriate and unprofessional. It is not a matter of personal preference." That is why this rule is error severity while most word-choice rules are warnings or advice. The replacement is not a matter of taste and the term is not defensible in context. The list is short because the guide's own is short, and it says so: "Gendered terms like these should be fairly self-explanatory. You will know them when you see them, and they are usually a simple fix." Treat a finding as a reminder that the whole class exists, not as the complete set — an editor who meets "manned" or "middleman" should fix it whether or not a rule fired. Where a sentence needs a pronoun and no rewrite will avoid it, the guide's instruction is to use singular "they": "despite official grammar rules on the subject, you should use the gender-neutral plural pronoun, 'they'."
- Severity: error
- Applies to: prose and headings
- House style: Writers' Guide rule 1; §1.2.1; CMOS 17 §5.251-5.260
packt.words.image-figure
When prose points at one of the book's own illustrations, editors rename "image" — 154 times to "figure", 78 to "screenshot", and "the image below" became "the following figure" 83 times. Which word is right depends on what the element shows, so the rule reports and a reader chooses. One boundary is hard (CMOS glossary): a rows-and-columns grid is a table, never a figure, even when it renders as a graphic on the page — the two carry separate numbering series, and calling one by the other's name sends the reader to the wrong numbered element. Only the pointing shapes match: an image the text is directing the reader to. "image" as subject matter — a Docker image, image processing, an image classifier — is the word, and matching it would make the rule unusable in half the catalogue. The excludes carry the technical senses the corpus actually contains.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: Copyedited corpus, word substitutions
packt.words.may-might
"may" is replaced by "might" when it expresses possibility, and kept when it expresses permission. Only a reader can tell which is meant, so this is advice with no fix.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §7 Word choice; CMOS 17 §5.147
packt.words.ordinal-adverbs
Editors trim "secondly" to "second" (29 times across 14 books) and the rest of the family with it. The -ly form is not wrong, so this is advice: where a chapter enumerates with "Firstly, … Secondly, …", the house prefers the plain ordinal, and whichever form wins should win consistently.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: Copyedited corpus, word substitutions; CMOS 17 §5.250
packt.words.redundant-pairs
Pairs where the second word repeats the first: "combined together" becomes "combined", "revert back" becomes "revert". The corpus shows the editor deleting the redundant half rather than rewriting the sentence.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Word-level substitutions; CMOS 17 §5.250
packt.words.since-because
Causal "since" is ambiguous with temporal "since". House style reserves "since" for time. Which one is meant cannot be decided mechanically, so this is advice with no fix. Matching ignores case because causal "since" most often opens a sentence.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Word-level substitutions; CMOS 17 §5.250 (since)
packt.words.such-as
House style introduces examples with "such as", not "like". This is the most frequent single substitution in the whole copyedited corpus: 15,926 occurrences across 46 or more books. The figure is worth stating because the rule was first calibrated at "21 or more times" from one book, which undersold it by three orders of magnitude — of every wording change Packt copyeditors make, this is the one they make most. There is still no fix attached, and the volume is not a reason to add one. "like" is also a verb and a legitimate comparison — "behaves like a queue", "users like the new page" — and the corpus contains both. Frequency says how often the rule is worth checking, not how safely it can be applied, so a human or a model decides each one. Only the example-introducing sense is reported. Fifty real copyedits running at once made the cost of the looser rule plain: it fired on "the growth curve should look like this", "just like the standard Prophet class", "feels like a technical endeavour" and "TPM-like capabilities", and "such as" is ungrammatical in every one of them. The comparison sense is excluded by what sits around the word — a verb of resemblance in front of it, an intensifier such as "just", a demonstrative after it, or a hyphen binding it into a compound.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Word-level substitutions; CMOS 17 §6.50
packt.words.to
"in order to" becomes "to". Measured before the pattern below took its
captured word, the published text agreed every time this rule fired on a
mined author sentence — 81 of 81 — which is why it is one of the few
substitutions applied without asking. Note that corpus calibrate now
under-reports it: the fix carries the preceding word, so searching the
edited sentence for the whole replacement misses agreements that any other
edit in the sentence hides. The preceding word is part of the match so that
"as much as you need to in order to implement" cannot become "need to to
implement". That sentence is real, from a mined chapter, and the earlier
form of this rule broke it. The captured word sits outside the reported
group, so the fix replaces only the phrase itself.
- Severity: warning · autofix
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Word-level substitutions; CMOS 17 §5.250
packt.words.usage
One term per concept: resource "usage". Both the American and the British spelling of "utilization" are replaced. Measured against the mined corpus: of the times this rule fired on a real author sentence, the published text agreed 1 times and kept the author's form 55 times (2% agreement across 403 books). Editors kept "utilization" almost every time. The preference is real in the book the style was derived from and is not general practice.
- Severity: advice
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §4 Word-level substitutions
packt.words.versus
House style writes "versus" rather than "vs." or "vs", in both headings and body text. Measured against the mined corpus: of the times this rule fired on a real author sentence, the published text agreed 66 times and kept the author's form 149 times (31% agreement across 403 books). Editors keep "vs." in parentheticals and comparisons about twice as often as they expand it, so the fix is no longer applied automatically.
- Severity: warning
- Applies to: prose and headings
- House style: STYLE_ANALYSIS §4 Word-level substitutions
packt.words.whether
After a verb of investigation — determine, check, see, decide, verify, tell — house style takes "whether", because "if" reads as a condition. The corpus example is "to determine if your pool size needs adjustment" becoming "to determine whether your pool size needs adjustment". Matching ignores case so that an imperative instruction — "Check if the balancer is running" — is caught as well; the replacement keeps the verb exactly as it was written. Measured against the mined corpus: of the times this rule fired on a real author sentence, the published text agreed 12 times and kept the author's form 112 times (10% agreement across 403 books). Editors kept "if" in nine cases out of ten, so the "whether" preference is a suggestion, not a rule.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §4 Word-level substitutions; CMOS 17 §5.250 (if; whether)
Cross-references
cmos.xref.page-number
"See page 42" is a promise the book cannot keep. The manuscript's page 42 is not the typeset book's page 42, and the e-book has no page 42 at all — reflowable text has no pages. Chicago's advice to authors is the house's: cross-reference by chapter, section, or figure, which survive every format. The rule flags a page pointer after "see", "on", or "at", including the abbreviated forms p. and pp. It carries no fix because the right target — the chapter, the section name, the figure number — is knowledge only the author or editor has.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: CMOS 17 §2.35
packt.xref.above-below
Print and reflowable formats put things in different places, so "above" and "below" can be wrong by the time a reader sees them. The published corpus uses 31 "following" references against 2 "above/below" ones. Never "the code above". Each pattern carries the replacement the copyedited corpus reaches for, so a finding arrives with house wording attached rather than leaving an editor to invent one: above becomes preceding (797 times in the corpus) and below becomes following (770 as "here", 211 as "the following"), while "the image below" becomes "the following figure" (83). The direction word and its noun swap places, so the article an author already wrote stays where it is: "The code above" becomes "The preceding code". The rule does not autofix, so the replacement is offered as a suggestion. A direction word is a claim about where something will sit on a page nobody has laid out yet, and only a reader can confirm the reference still points at the right thing. The redundancy patterns come first, and their order is load-bearing. "The following figure below" already says where the figure is, so the repair is to drop the locator — the single most common cross-reference edit in the corpus, at 1,468 "below" deletions and 997 "above" deletions across 200-odd books, almost all of them beside a "following" or "preceding" that made the direction word redundant. Matched second, the plain patterns would read "figure below" inside that phrase and suggest "following following figure"; matched first, the wider span wins the rule's own deduplication and the plain patterns keep to the shapes they were written for.
- Severity: error
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §8 Technical writing rules
packt.xref.chapter-format
A cross-reference carries the chapter number and its title, so the reader can find it without the table of contents: "Chapter 13, Operating Systems and System Resources". A bare number is flagged. Applying the italics is a production step, not a text edit, so no fix is offered.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §8 Technical writing rules; CMOS 17 §8.180
Voice
packt.voice.contractions
The default policy is expand, with a reader's test rather than a sweep: expand each contraction unless the full form sounds awkward or unnatural read aloud. The Writers' Guide names "I'm, I'll, We're, you'll, shouldn't" among unprofessional contractions, and the editorial team's ruling makes expansion the general rule. The read-aloud test is what keeps it a judgement: "don't confuse the two" expands cleanly to "do not confuse the two", while a tag like "isn't it?" or a quoted speaker's own voice does not survive expansion and stays. Contractions inside quotations, dialogue, and reported speech are the speaker's, never expanded. The mined edits are nearly balanced (1,124 expansions, 909 introductions), which is the evidence for the test rather than against the direction: the expansions humans made were the ones that read naturally. A deliberately conversational title sets house, which reverses the rule and flags a full form as a candidate for contraction, as advice; neutral silences the rule both ways. It is never mechanical under any policy — expanding a contraction changes voice, and voice decisions are made per instance by an editor. Under every policy "cannot" is preferred over "can't", and "let's" survives in a walkthrough.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: Writers' Guide §1.2; house ruling 2026-08-19; CMOS 17 §5.103
packt.voice.first-person
The editorial team's point-of-view policy assigns each person a job, and this rule surfaces every first-person instance for that decision. Instruction, process, and expected outcome are the reader's: "you", always. The conversion takes whichever of three shapes reads best. Substitute the pronoun. We will learn → You will learn This allows us → This allows you Our screen should → Your screen should Drop it altogether, leaving an imperative the reader completes: We will use → Use Let's take a look at → Take a look at Flip the sentence back onto the reader: We recommend → You should I will now show you how to create a database → You will now create a database Three kinds of first person survive, each a rung with a test. A genuinely shared "we" — the author and reader working through a walkthrough together, or a recap of work done together earlier in the book ("Now that we have configured the database, we can test the connection"; "In Chapter 2, we explored the schema") — stays, and is also the right conversion target for a draft's "In Chapter 2, I explored" (a chapter explores nothing; an impersonal rewrite that makes furniture the actor is a new error). But "we" is the narrow conversion target, not the default: an instruction the reader performs converts to "you" or the imperative even mid-walkthrough, and a sweep that lands on "we" wholesale changes the register instead of enforcing it — one produced a chapter with more first person than the draft. The author's own experience, opinion, observation, or recollection keeps its "I" ("I first encountered this problem in production", "in my experience") — but not an instructional statement wearing an opinion, which converts. And Packt speaking as the publisher keeps its "we"; the excludes name those shapes. The line between instruction and experience is the walkthrough test: if the verb is something the reader will do with the same material, it converts. Converting a mental-state verb also changes its tense — the author's past thought is not the reader's past, so "I expected" becomes "you would expect", never "you expected". No fix is attached and the severity is warning rather than error because every instance is one of these judgements. This does not overrule packt.voice.readers-you, which handles the opposite error of writing about "the reader" in the third person. Between them the two rules push a chapter toward addressing one person directly.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: Editorial point-of-view policy R1-R3; Writers' Guide rule 6, §2.1
packt.voice.hedging
The Writers' Guide puts the case in terms of the teacher–student relationship the book depends on: "If your readers cannot see that you, as instructor, are confident in your informative assertions, how can they possibly believe in their accuracy? If your language betrays a lack of conviction, peppered with the literary equivalent of hemming and hawing, you cannot reasonably expect your readers to trust in your ability to teach them." Its worked example is the test to apply. In "Reading about the lifetime of global and local variables is all well and good, but it seems like nothing beats an actual demonstration", ask what "it seems like" contributes: "Does it change the meaning at all? Is the statement in any way more accurate in this form? The answers to these questions are immediately evident: None, no, and no." The guide allows the hedge where the uncertainty is real, with a condition attached: "You must give the reader a reason for your uncertainty, lest you lose authority as instructor." So "the cat seems to be stealing my socks" stands only as "the cat seems to be stealing my socks, but I have never witnessed it". A finding on a hedge that carries its reason is one to decline. Hypothetical statements are exempt by the guide's own wording — "except where appropriate (in some hypothetical statements, for instance)". packt.words.may-might covers the neighbouring case of modal uncertainty.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: Writers' Guide rule 9; §2.3.1
packt.voice.our-the
A named thing belongs to the software, not to the author and reader jointly. The corpus replaces "our" with "the" 825 times, which makes it the second most frequent single-word substitution in the whole corpus after "if" to "whether". The rule only fires before a capitalized name or a familiar interface noun, which is where the corpus makes the change: "our Lambda function" becomes "the Lambda function". A genuinely shared possession — "our example", "our cluster", "our approach" — is the collaborative voice the house style keeps, so the pattern deliberately does not match a lowercase common noun.
- Severity: advice
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §2 Voice
packt.voice.pov-mix
A passage holds one point of view. The rule flags each paragraph whose prose carries both a first-person singular (I, me, my, myself) and a first-person plural (we, us, our, ourselves), anchored on the first pronoun that breaks with the paragraph's opening person. The mix is usually not the author's: it appears when a point-of-view conversion is applied sentence by sentence and leaves remnants — "the axes give us an outlook… it also tells me" — so the paragraph reads as two narrators. A conversion is finished per passage, not per match, and this rule is the check on that. No fix is attached: which person the paragraph should hold is the surrounding passage's decision, and a genuine anecdote mixes legitimately when the plural is the author's own party rather than the author and reader ("my colleague and I knew we were wrong"). Declining names that reason.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: Editorial point-of-view policy R6
packt.voice.readers-you
Packt prose speaks to one reader as "you". An author writing about "readers" or "the reader" is describing an audience from outside it, and the corpus converts that: readers to you 326 times, "the reader" to you 111 times. The substitution runs one way only. Editors never replace "you" with "the reader", which is what separates this from the wider question of narrator voice — whether a chapter says "we" or "you" — where the corpus shows reduction rather than replacement and the choice stays with the book. No fix is applied because the surrounding grammar usually has to move with the pronoun: "readers will find" becomes "you will find", and a possessive or a verb agreement often changes in the same sentence. The suggestion names the pronoun; a human or a model rewrites the clause. Role nouns — "the user", "the administrator", "the developer", "the operator" — are deliberately not in the table. A role noun converts to "you" only when it names the person holding the book, and in system descriptions it usually names someone else: "the administrator configures the permissions, while the user accesses the application" must keep both. That is a judgement per sentence (point-of-view policy rule 9), never a substitution.
- Severity: warning
- Applies to: body prose, captions, and info boxes
- House style: STYLE_ANALYSIS §2 Voice
Rules the default profile turns off
packt.advice.missing-articlepackt.consist.part-not-sectionpackt.doc.chapter-furniture