Files
TheLadder/tools/story-to-pack/probe/keefe/README.md
T
JesseMarkowitzandClaude Opus 5.5 3a4758172d story-to-pack: add the corpora and the catalogue v2/v3
Fourteen corpora split and classified: aesop, bierce, chekhov, holmes,
keefe, lawson, lorimer, maupassant, nobody, plaintales, poe, torchy,
wallingford and winesburg, each with its splitter and the hand-written
groups and pages; catalogue v2 and v3; and the shared splitters
gutenberg_chunks.py, se_split.py and se_build.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019rwKTmug58sEsJ72AuWsEi
2026-10-07 06:05:51 -04:00

18 KiB

Keefe reference set: the Jack Keefe stories (Ring Lardner, 1914-1919)

A hand-made comparison baseline for the story-to-pack pipeline, a sibling of the Jacobs set in ../jacobs/ and the Bierce set in ../bierce/. Claude wrote every summary, predicament, group and option by reading the scenes. No local or hosted inference was used. Compare the local-model runs against it. It is not ground truth, just one careful reading.

The reading was split across three readers, each taking a run of stories (0-7, 8-15, 16-22) and writing every scene's record plus a notes file of the recurring situations they saw. The grouping was done in one pass by a fourth reader over all 912 records and the three notes files, going back to the scene text where a record left it unsure. So no reader's grouping was reconciled with another's: the groups are one judgement, made across the whole corpus at once.

File What it is
corpus/jack-keefe-stories.html Standard Ebooks single-page text (public domain)
../se_build.py → stories.json (23 stories, split on the se:short-story markup) and chunks.json (912 scenes, same 320-word paragraph rule as ../chunk.py)
claude/batches/sNN.json per story: {chunk, story, summary, predicament}, the same schema as ../jacobs/claude/batches/
claude/batches/NOTES-*.md the three readers' notes on recurring situations and protagonist standing, the input to grouping
claude/groups_src.py the groups, options and per-story protagonist standing
claude/build.py checks everything, then writes claude/records.json and claude/groups.json. It is identical to Jacobs' copy, since its paths are relative to the file.
claude/page.py → claude/REFERENCE.html, the readable page (Jacobs' copy with the title and heading changed)

Rebuild, from ../: python3 se_build.py keefe "Jack Keefe stories (Ring Lardner, 1914-1919)" && cd keefe/claude && python3 build.py && python3 page.py.

What is in it

  • 912 predicaments, one sentence each: median 21 words, range 15 to 25. They follow the redescribe.py rules, so there are no names, clubs, cities or story-only objects. The topic_words leak check flags 378 of 912, far more than any earlier set, and almost all of it is role words: wife 125, boss 78, newcomer 69, rival 44, father 28, husband 26, admirer 20. These are kept on purpose: the design's cast is roles, and this corpus is about exactly those roles. Place words are rare (dinner 4, stage 4, house 3, street 2, shop 1).
  • 47 groups, each a situation that recurs in three or more stories. All 47 pass the catalogue's recurrence rule (at least 5 scenes, at least 3 stories, no story over 50%). Three span 3 stories, 8 span 4, 7 span 5, 13 span 6, 7 span 7, 2 span 8, 5 span 9, one spans 13 and one 14. Each scene sits in at most one group: 650 are assigned and 262 are not. Most of the 262 fit nothing that recurs, and some were held out by the 50% cap (see Known defects). All 23 stories feed at least one group.
  • Story 6 is capped like any other. The Busher Abroad is 146 scenes, almost all pranks and tall tales. It supplies 64 assigned scenes to 20 groups, and 82 stay out. Its largest shares are 50% of the stinginess group (G33), 44% of the spotlight group (G31), 42% of no word from home (G40), and 35-36% of the tall-tale, new-skill and swindle groups (G21, G29, G32). Many of its unassigned scenes are more of the same prank on the same man, such as the Bight bug, the "Thomas Hawks" and the equator rope. Adding them would push story 6 toward half of G21, and they add nothing the group does not already have. The rest are sightseeing, seasickness and banquets with no predicament in them.
  • Options: 3 to 5 per group, 205 in all (28 groups have 4, 18 have 5, 1 has 3). 157 come from what someone in a scene did or refused to do (scene:N), 7 are archetypes and 41 fill gaps. 20 scene options cite a scene outside their own group, and groups.json marks each one in_group: false. 13 of the 20 are within three scenes of a member, where the character acts.
  • An unreliable narrator. Keefe tells his friend he won concessions, saw through every joke and only held back out of restraint. The summaries record what really happened, and the options do the same: a scene:N option is what he did, not what he claimed. Every group also carries at least one move a wiser person would make: own the mistake, check the story, turn the drink down, ask what the others are paid. Where nobody in the book makes that move it is marked filled, which is why this set has more fills than Bierce's (41 against 17).
  • Moves: spine paths with a direction only (+, -, risk, set), and no magnitudes. standing moves 83 times, the two skills 71 times and money 38 times. Relationship roles are generic and the same in both halves of the book. boss is the manager or owner in baseball and the captain or sergeant in the army, and colleagues are teammates or comrades. The others are spouse, friend (the one back home), family, inlaws, admirer, jokers, victim and rival. Flags record what the player did: held_out, threatened_to_leave, walked_out, fear_as_duty, saved_face, strung_along, looked_away, gamed_the_rules and others.
  • Skills proposed for this corpus: savvy, for seeing through a joke, a con or a flatterer and knowing your own worth, and discipline, for doing what the work demands (training, sobriety, turning up) whatever you feel like. These are the two things Keefe lacks in every story. nerve from Jacobs and Bierce was considered and dropped. His danger is almost never physical, and where it is (G15-G17) the question is honesty about fear, not the fear itself.
  • Stage comes from protagonist standing, judged per story, not per scene, in STANDING in groups_src.py, starting from the readers' notes. A rookie on trial, a pitcher sent to the minors, a draftee private, a corporal of seven men and a wounded veteran out of work rank low. A regular big-league pitcher ranks middle. No story ranks high. Keefe never rises above a working pitcher, and the owners and generals above him are never the protagonist. The groups come out 25 middle and 22 low. A pack built from this corpus alone would have no top stage. It would need the ladder's upper rungs from another source, or would have to treat "regular starter" as the top.

Groups against the existing catalogue

The 82-entry catalogue is in ../catalogue/v2/catalogue_v2_src.py. The mapping below follows its rule: a group joins an entry when the player faces the same decision from the same side, and it is new when the decision differs. It was judged by reading, not by classify.py. 28 groups land on 25 existing entries, and 19 are new situation types. Keefe is not yet in SOURCES. Adding him is a separate change to that file.

Group Scenes / stories Halves Catalogue
G01 Asking for more money 25 / 7 baseball new (pay_talks)
G02 Threatening to leave for a rival employer 36 / 8 baseball new (threaten_to_leave)
G03 Sent down, or left on the bench 20 / 9 both new (sent_down)
G04 A boss who manages by mockery 20 / 9 baseball power_over_you, sharpened
G05 Whose fault was it? 26 / 14 both new (blame_elsewhere)
G06 A step up goes to your head 14 / 6 both new (raised_a_step)
G07 Called to account for a lapse 14 / 7 both called_to_account, sharpened
G08 Sure you know better than the boss 14 / 9 both orders_without_reasons, widened
G09 The boss takes a hand in your private life 16 / 7 baseball bow_for_your_living (its own example)
G10 Counting on who you used to be 8 / 4 both new
G11 The big occasion, and you are not ready 15 / 6 both (thin) new (big_chance)
G12 A personal score in the middle of the work 10 / 5 baseball revenge, partly
G13 A drink against the rules 12 / 6 both new (nearest habit)
G14 Looking for a way out of what everyone must do 8 / 5 both new (way_out)
G15 Fear passed off as something nobler 16 / 9 both courage_doubted, sharpened
G16 Talking brave, and being taken at your word 9 / 8 both courage_doubted, sharpened
G17 Sure you are going to your death 8 / 6 both (thin) condemned, partly
G18 Waiting, with nothing to do 12 / 7 both on_watch
G19 Hardship you think is beneath you 10 / 6 both (thin) new (nearest far_from_home)
G20 New, and sure you are already the best 13 / 6 both newcomer, sharpened
G21 A tall tale of danger from the old hands 23 / 7 both warning, widened; sharpens newcomer
G22 A flattering prospect that may be a joke 15 / 5 both sure_thing, widened
G23 Saving face after being made a fool of 23 / 13 both new (saving_face)
G24 Made a public laughing-stock 12 / 7 both new
G25 A cruel joke on someone who cannot take it 8 / 3 army safe_while_others_suffer, partly
G26 Needled by a colleague 7 / 6 both new (the peer version of power_over_you)
G27 Sure a colleague is up to something 10 / 4 both not_who_they_seem, from the mistaken side
G28 Boasting to people who know better 12 / 6 both pretence, sharpened
G29 A new skill that looks easy 14 / 5 both new (nearest outmatched)
G30 You swore you were above it 10 / 4 both own_words_back
G31 In the spotlight, sure you are the hit 9 / 4 both (thin) new
G32 A bargain that is a swindle 17 / 4 both (thin) sure_thing
G33 Expected to pay, and you hate paying 10 / 5 baseball grease, from the payer's side
G34 Leaning on the friend back home 10 / 7 both new
G35 Whose money is it at home? 16 / 6 baseball peace_at_home
G36 A spouse who earns more 14 / 4 baseball new (spouse_earns_more)
G37 A quarrel at home: who gives way? 11 / 6 both (thin) peace_at_home
G38 Coming home to find them gone 10 / 4 both (thin) home_unseen, partly
G39 Suspecting your spouse 7 / 3 both (thin) what_they_hid, partly
G40 Far away, and no word from home 12 / 5 both far_from_home
G41 Work pulls against a promise to your family 10 / 6 both duty_against_love, a lighter register
G42 Relatives under one roof 11 / 4 baseball unwelcome_in_home, from both sides
G43 Your spouse snubs people you owe 5 / 3 both (thin) station, partly
G44 A new parent sure they know best 11 / 6 both (thin) new (new_parent)
G45 Sure they are smitten with you 22 / 9 both new (nearest mistook_them)
G46 Stringing along an admirer while you are not free 26 / 6 both promised_elsewhere, from the bound side
G47 Caught with an admirer 9 / 5 both caught_out

"Halves" counts stories 0-7 and 18-22 as baseball and 9-17 as the army. Story 8 is the draft summer, spent at home while he is still a ballplayer, and it is counted with baseball here. "Both (thin)" means one half supplies only one story.

The readers' ten flagged workplace situations, and where they went:

  • Pay talks where you ask big and settle small (G01) and threatening to leave for a rival employer (G02) are new. They are the corpus's spine: G02 is the largest group, with 36 scenes over 8 stories. The catalogue has nothing on bargaining over your own pay or on leverage you may not have.
  • Being sent down (G03) is new. The nearest entry, overlooked, is about good work going unnoticed. Here the decision is how to take a demotion: report and climb back, refuse, or pretend it is a compliment.
  • A boss who manages you by mockery (G04) sharpens power_over_you. The contempt is a management style, and the player's choice is whether to read it as praise.
  • Blaming everyone but yourself (G05) is new, and it spans the most stories of any group (14).
  • A small promotion going to your head (G06) is new.
  • Fear passed off as duty (G15) sharpens courage_doubted. It adds the move the entry lacked: hiding fear behind a nobler motive rather than proving courage. G16, talking brave and being taken at your word, sharpens the same entry from the boaster's side.
  • Being called to account for a lapse (G07) sharpens called_to_account. Here the lapse is real, and the judge is often fair. In the army half one captain lets him off because good corporals are scarce (506), and another asks for time to investigate before judging (566).
  • The gullible newcomer pranked by old hands splits four ways. G20, the arrogant newcomer, sharpens newcomer. G21, the false warning, widens warning: the player faces the same decision, whether to believe it, but here the danger is invented. G22, the flattering hoax, widens sure_thing: the lure is recognition rather than money, and the price is ridicule. G23 and G24 are new, and they are about the aftermath: what story you tell, and how you take being the joke.
  • A spouse who earns more (G36) is new.

The other new workplace types are G10 counting on who you used to be, G11 the big occasion and you are not ready, G13 a drink against the rules, G14 a way out of what everyone must do, G26 needled by a colleague and G29 a new skill that looks easy. G30 gives own_words_back, marked recurs=False in v1, 10 scenes over 4 stories. It recurs here.

Do situations transfer between baseball and the army?

This is a direct test of the project's premise, because one narrator moves between two unlike institutions and the same kind of reader grouped both. Mostly yes.

  • 27 of 47 groups draw at least two stories from each half, and 10 more reach both halves with a single story on one side. Only 9 are baseball-only and 1 army-only.
  • The situations that transfer are about standing inside a hierarchy. Examples: being sent down (a pitcher to the minors, a corporal back to private), a step up going to your head, being called to account, sure you know better than the boss, blaming everyone else, the arrogant newcomer (the rookie at spring training and the draftee at camp), saving face, a new skill that looks easy. So do the social and home situations: admirers, no word from home, the friend back home.
  • The situations that do not transfer are about a labour market. Pay talks (G01), threatening to leave for a rival (G02), the boss who meddles in your private life to protect his investment (G09) and a personal score settled on the field (G12) have no army instances. That is structural: a draftee cannot name his price, and he cannot quit for a rival army. The nearest army moves are G14 (looking for an exemption) and G15 (hiding fear behind duty). They are the soldier's version of "I could always walk": he looks for a way out rather than a better offer.
  • One situation transfers with its role moved. In baseball, mockery comes from above (G04: Gleason, Callahan, Comiskey, McGraw). In the army the officers he faces are mostly fair-minded (506, 566, 671), and the mockery comes from peers: the jokers of G21, G22 and G24, 29 army scenes between them. The situation "someone who knows more makes a fool of you" survives, but the counterpart changes from boss to jokers. A pack generator that keyed relationships to institution-specific roles would miss this. Generic roles, boss and colleagues in both halves, keep it visible.

The limit of the test: both halves share one narrator, one voice and one set of flaws. What transfers may partly be Keefe rather than the situation. A cleaner test would need two authors writing the two institutions.

How this corpus differs

  • It is the largest set so far by scenes: 912 from 23 stories, against O. Henry's 839 and Bierce's 299. The stories are long letter sequences, so a situation often runs over many consecutive scenes, like the pay standoff of story 18, the admirer of story 11 and the spy hunt of story 15. The 50% cap is what keeps those arcs from becoming one-story groups.
  • It is comic, and the comedy is dramatic irony. Nearly every predicament is about the gap between what happened and what Keefe believes. That makes it rich in decisions about self-knowledge, such as whether to believe the praise, the warning or the admirer, and poor in decisions about danger. money still moves (38 times, against Bierce's 9), because pay and household money are real stakes here.
  • It is the richest corpus yet in workplace situations. 13 of the 19 new types are about work and the people you work with, where earlier corpora recurred on courtship, secrets, fear and grief.
  • Scenes straddle letters. Many chunks join the end of one letter to the start of the next. The reader's predicament follows the half that carries more weight, so a few scenes sit in a group on the strength of half their text.

Known defects

  • Three scenes are only a dateline or a sign-off: 184 (4 words), 264 (9) and 274 (10). A short closing paragraph starts a new scene and is then flushed alone when the next paragraph is long. They are kept so that chunks.json stays the corpus as split, and none is in a group.
  • One-story arcs stay unassigned even when they are strong situations. Examples: the go-between who reads the reply as love for himself (story 21, scenes 841-858), courtship on the rebound (story 1) and the night rescue of Simple Simon (story 17, 726-737). None recurs in three stories.
  • The cap holds out scenes that fit. Beyond story 6, the exemption board in story 8 (421, 430, 432-436) fits G14 but would push story 8 over half of it. The rest of the spy hunt in story 15 (656-661, 664-666, 674) fits G27 for the same reason.
  • No batch record was found to be wrong. The readers' notes cite example chunk ids that sometimes differ from the final groups, because the notes were input, not a grouping.