Files
esh-pfi-infrastructure/scripts/mccarthy-corpus/stoplist_mccarthy.json
T
vh 5ddb0472e4 lv-mccarthy D3 on gx10: leak gate PASSED, and the val split is now bigger than Hemingway's
~/lv-mccarthy on pfi-gx10: corpus-clean, corpus-renamed (6 copies, 1,002 records), scripts.

  leak gate   0 of 75 renameable and 0 of 37 sub-threshold survive in any copy
              positive control 108/108 surfaces found in the unrenamed source
              negative control nonce absent from both trees

THREE McCARTHY-SPECIFIC DECISIONS, each forced by a measurement.

1. --scope corpus, NOT the default per-work map. The Border Trilogy shares characters
   across books -- 9 surfaces appear in more than one work, including Parham (The
   Crossing + Cities of the Plain), Grady and Cole (All the Pretty Horses + Cities of
   the Plain), Socorro and Héctor. A per-work map would give John Grady a different
   invented name in each novel, turning one character into two.

2. A NEW `mccarthy` rename preset rather than reusing `hemingway`. Both are
   Spanish-inflected, but Hemingway's romance pool carries it_IT and fr_FR for his
   Italian and French casts, and McCarthy writes neither language -- drawing from it
   would drop Italian and French surnames into a Texas-Mexico border novel. en_GB goes
   for the same reason. en_US + es_MX/es_ES at an even share.

3. --min-cap 5 to MATCH the entity map's floor. The first gate run FAILED with 45
   survivors, and the diagnosis is the Brontë lesson exactly: entities.py admits
   cap >= 5 while rename.py only renamed cap >= 8, so every entity between 5 and 7 sat
   in the map, was never renamed, and was counted as a leak. Hemingway never hit it
   because its map had sub_threshold_total 0.

⭐ --holdout-chapter NOW TAKES A LIST, and this is the change with the most downstream
effect. The val split is one chapter index per work, so its SIZE is set by how many
WORKS a corpus has, not how many words:

  Hemingway  10 works -> 9 val units -> 36,563 words/copy -> gate DECISIVE
  Brontë      4 works -> 4 val units -> 17,043 words/copy -> gate MARGINAL
  McCarthy    6 works -> 6 val units -> ~18,000 would have been Brontë's end of that

Holding out chapters 7 AND 17 gives 11 units and 40,653 words per copy -- larger than
Hemingway's, at a cost of 7% of the corpus -- on a corpus 40% smaller than his. No
amount of corpus size fixes a val split that scales with work count.

THE HUMAN GENDER PASS IS NOW AN AUDITABLE FILE, not a hand edit. The honorific/window
resolver scored 21 correct / 3 held / 1 WRONG against a 26-name control; the base-rate
proximity resolver built for Hemingway scored 18/6/1 and its own guard correctly
REFUSED to write. So the incumbent stands and four entries are fixed by hand in
gender_overrides_mccarthy.json, each carrying its evidence.

⚠ All four are female and all four look male-dominated in raw pronoun counts, because
this corpus runs 29,144 male pronouns to 5,036 female -- a base rate of 85.3% male.
Carla Jean Moss at 31m/21f would be 44m/8f at that base rate, so 21 female against an
expected 8 is decisive. Same arithmetic that recovered Pilar and Brett on Hemingway.
Alfonsa was in my control set and is correctly absent from the map at 4 occurrences,
below the min-count floor -- an error in the control, not the pipeline.

apply_gender_overrides.py refuses two ways: a name absent from the map is an error
rather than a silent no-op, and overruling a gender the detector already holds needs
an explicit "correcting": true so it cannot look like filling a held entity in a diff.
2026-09-17 08:59:00 -07:00

196 lines
8.2 KiB
JSON

{
"_why": [
"Surfaces excluded from renaming because they are REAL-WORLD referents, not the author's",
"invented proper nouns. The R49 rule is that ambiguous cases are deliberately RENAMED --",
"renaming is the safe direction and leaving is the leaking one -- so this list is kept to",
"categories that are unambiguously real: geography, demonyms, brands, foreign common nouns,",
"and extraction fragments that are not words at all.",
"",
"⚠ SENSITIVITY FLOOR, stated because it is part of the result: the entity map holds 199",
"surfaces and the top 170 by count were classified, with every ambiguous one READ IN",
"CONTEXT before being placed. The bottom 29 were NOT individually read, so a rare",
"real-world referent may be renamed. That is the safe direction and an accepted cost.",
"",
"⚠ McCarthy is a hard case for the same reason Hemingway was and Bronte was not: the Border",
"Trilogy is half set in real Mexico, so real towns, real states and real Spanish sit beside",
"invented characters on every page. The 1,411 non-ASCII letters measured on this corpus are",
"the same fact from the other side."
],
"_caught_by_reading_in_context": {
"Socorro": "NOT the New Mexico town. She is the COOK at Mac's ranch in Cities of the Plain -- 'Socorro came and took the plate of biscuits'. A character; left renameable.",
"Webster": "NOT the dictionary or the city. 'the outrider Webster', 'A Tennessean named Webster' -- one of Glanton's men. Character.",
"Jackson": "'two men named Jackson, one black, one white, both forenamed John'. Characters, not the city or the president.",
"Harlan": "'a man named Harlan from Texas'. Character, not the Kentucky county.",
"Franklin": "KEPT RENAMEABLE. 'I'm here to see Mr Franklin' -- a lawyer in All the Pretty Horses. ⚠ He was in the geography list on the first pass, because Franklin is also the old name for El Paso, and audit_stoplist.py caught the contradiction against this very note.",
"Lamar": "'called Lamar on the mobile ... he can have his unit back' -- a lawman in No Country. Character, not the street or the Texas county.",
"Griffin": "STOPLISTED. 'Fort Griffin', 'we pulled out from Griffin for a last hunt' -- the real Texas buffalo-hunting town.",
"Santa": "STOPLISTED. Never standalone: the fragment of 'Santa Rita del Cobre' and 'Santa Cruz'.",
"Varas": "STOPLISTED. The fragment of 'Las Varas', a real Chihuahua town on the Madera road.",
"Eagle": "STOPLISTED. 'Eagle Pass' (real Texas border town) and 'the Eagle Cafe'.",
"Avenue": "STOPLISTED. A street-name component -- 'Juárez Avenue'. A common noun, not a name.",
"Niño": "KEPT RENAMEABLE, deliberately. A Spanish common noun, but here it is the NAME OF A HORSE ('That Niño horse'). The author's invention even though the word is not -- exactly parallel to Hemingway's `Inglés`.",
"Keno": "KEPT RENAMEABLE for the same reason -- 'their horse Keno'. A gambling game's name used as a horse's.",
"Redbo": "KEPT RENAMEABLE -- John Grady's horse in All the Pretty Horses.",
"Mangas": "KEPT RENAMEABLE. Based on the real Apache chief Mangas Coloradas, but presented as a character who speaks ('The man's name was Mangas and he was cordial'). Ambiguous, so it takes the safe direction.",
"Travis": "KEPT RENAMEABLE. Dual use -- real 'Travis Park' in San Antonio AND a character who speaks ('said Travis'). Ambiguous, so it is renamed.",
"Venada": "KEPT RENAMEABLE. 'La Venada', a Juárez cantina. McCarthy's Juárez venues are largely invented and this cannot be settled from the text, so it takes the safe direction.",
"Jc": "KEPT RENAMEABLE. Not a fragment -- 'JC pulled up in front of Maud's' is a character in Cities of the Plain who is named by his initials.",
"Ed": "KEPT RENAMEABLE. Ed Tom Bell, the sheriff and first-person narrator of No Country for Old Men.",
"E / H / T / K": "STOPLISTED as fragments. E, H and T were the small-caps drop-cap defect repaired in D1; K is the fragment left by the weapon `H&K`. A bare initial is never a name -- the `G` class from the Hemingway build, where `G` was about to be renamed to a surname 248 times.",
"fragments": "Only the four letters MEASURED as entities on this corpus. A blanket A-Z was the first pass and it stoplisted `I` and `A`, which are ordinary English words -- `Sir I dont think I can do that` then tripped the honorific audit. Stoplist what the entity map actually produced, not the alphabet.",
"Ford / Hashknives": "STOPLISTED. 'a Model A Ford truck'; 'went to work for the Hashknives' -- the real Aztec Land & Cattle outfit. Brands and real companies.",
"Calle": "STOPLISTED. Spanish for 'street' -- 'the Calle de Noche Triste'. A common noun, like Avenue.",
"Yaqui / Gilenos": "STOPLISTED. Real indigenous peoples -- 'lay clear of the Yaqui country', 'all trace of the Gilenos faded'. Demonyms.",
"Terrell": "STOPLISTED. 'nineteen felony charges were filed in the Terrell County Court' -- a real Texas county.",
"Hearst / Trias / Huerta / Madero": "STOPLISTED as REAL PEOPLE. 'a señor Hearst' (the real Hearst ranch at Babícora); 'a contract with Trias' (Ángel Trías, the real Chihuahua governor who paid Glanton for scalps); 'Victoriano Huerta'; 'Francisco Madero'. Blood Meridian and the Border Trilogy put real historical figures on the page under their own names.",
"Batopite / Buenaventura / Deming / Nacogdoches / Californy / Hog": "STOPLISTED as geography. Real Chihuahua, New Mexico and Texas towns; 'Californy' is dialect for California; 'Hog' is only ever 'Hog Canyon Springs'.",
"Doc / Dorsey / Gillian": "KEPT RENAMEABLE. 'Doc Irving' and 'John Dorsey' are men; 'Soto y Gillian' is a cattle company named for its owners, which is ambiguous and so takes the safe direction."
},
"geography": [
"America",
"Animas",
"Antonio",
"Ardmore",
"Arizona",
"Arkansas",
"Avenue",
"Babícora",
"Batopite",
"Baviacora",
"Bavispe",
"Bexar",
"Boquilla",
"Buenaventura",
"Caborca",
"California",
"Californy",
"Calle",
"Casas",
"Chihuahua",
"Cloverdale",
"Coahuila",
"Colorado",
"Deming",
"Diego",
"Durango",
"Eagle",
"El",
"Encantada",
"Francisco",
"Frontera",
"Galveston",
"Grandes",
"Griffin",
"Hog",
"Huisiachepic",
"Janos",
"Kentucky",
"Langtry",
"Madera",
"Mexico",
"Missouri",
"Nacogdoches",
"Nacozari",
"Namiquipa",
"Odessa",
"Oklahoma",
"Parras",
"Paso",
"Pilares",
"Purísima",
"Saltillo",
"San",
"Sanderson",
"Santa",
"Sierra",
"Sonora",
"States",
"Tennessee",
"Terrell",
"Texas",
"Torreón",
"Ures",
"Uvalde",
"Varas",
"Vietnam",
"Yuma"
],
"demonyms_and_peoples": [
"American",
"Americans",
"Apache",
"Apaches",
"Arabian",
"Chiricahuas",
"Comanche",
"Comanches",
"Delaware",
"Delawares",
"Gileno",
"Gilenos",
"Mennonite",
"Mexican",
"Mexicans",
"Mormon",
"Tarahumara",
"Vandiemenlander",
"Yaqui",
"Yaquis",
"Yumas"
],
"brands_and_products": [
"Blanca",
"Bronco",
"Carta",
"Colts",
"Ford",
"Hashknife",
"Hashknives",
"Ramcharger",
"Tecate",
"Winchester"
],
"foreign_and_common_nouns": [
"Adios",
"Bueno",
"Claro",
"Como",
"Cuates",
"Dios",
"Gracias",
"Hacendado",
"Mam",
"Nada",
"Nosir",
"Pues",
"Senor",
"Senora",
"Vamos",
"Yessir"
],
"fragments": [
"E",
"H",
"T",
"K"
],
"_audit_allow": {
"_note": "Surfaces audit_entity_map.py flags as article-preceded that are nonetheless genuine names, READ and cleared. Pass as --allow when re-running the audit. They are article-preceded because English puts a surname attributively behind 'the': 'the Bailey horse', 'the Muñoz woman', 'the Borginnis woman'. That is the detector's known blind spot, not an error.",
"surfaces": [
"Bailey",
"Muñoz",
"Borginnis",
"Venada",
"Moderno"
]
},
"real_people": [
"Francisco",
"Hearst",
"Huerta",
"Madero",
"Trias",
"Victoriano"
]
}