Files
TheLadder/tools/story-to-pack/probe/lorimer/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

193 lines
14 KiB
Markdown

# Lorimer reference set and advice-book pilot: *Letters from a Self-Made Merchant to His Son* (1902)
A hand-made reference set for the story-to-pack pipeline, a sibling of the Jacobs set in `../jacobs/`
and the Lawson set in `../lawson/`. It is also the first **advice book** the pipeline has read, so it
carries a pilot the story sets do not. The pilot asks whether an advice book can supply options for the
catalogue's situations and justify their effect directions from the text. Stories supply that part of a
pack weakly.
Claude read every scene and wrote each summary, predicament, advice item, group and option. **No
inference of any kind was used.** Do not treat it as ground truth: it is one careful reading.
| File | What it is |
| --- | --- |
| `corpus/letters-from-a-self-made-merchant.txt` | Project Gutenberg text, eBook #21959 (public domain) |
| `split_gutenberg.py` | → `stories.json` (20 letters, each titled by its contents synopsis) and `chunks.json` (186 scenes, same paragraph rule as `../chunk.py`). 48,101 words |
| `dump.py` | `python3 dump.py A B` prints scenes A..B for reading |
| `claude/batches/sNN.json` | per letter: `{chunk, story, summary, predicament, advice}`. `advice` is a list of `{move, outcome, quote, stance}` |
| `claude/groups_src.py` | the groups, options and per-letter standing of the son |
| `claude/options_src.py` | **the pilot**: each advice item mapped to a catalogue v2 entry or a proposed new one, with its moves and the `stated` judgement |
| `claude/build.py` | checks everything, then writes `claude/records.json`, `claude/groups.json` and `claude/options_by_entry.json`, and prints the pilot numbers |
| `claude/build.log` | that printout, as last run |
| `claude/page.py` | → `claude/REFERENCE.html`, the readable page: groups, scenes with their advice, and the pilot by entry |
Rebuild: `python3 split_gutenberg.py && cd claude && python3 build.py > build.log && python3 page.py`.
`build.py` checks the following. Every scene appears once, in order. Every predicament is one sentence
of 12 to 26 words. Every quote appears verbatim in its scene (whitespace aside) and runs to 30 words
at most. No scene sits in two groups. Every group has 3 to 5 options and spans at least three letters,
and no letter supplies more than half of any group's members. Every move is a spine path with a
direction. Every pilot option points at a real advice item, and no item is used twice. Every
`options_by_entry.json` key is a catalogue v2 id or a defined `new:` entry.
## What is in it
- **186 predicaments**, one sentence each (median 19 words, 15 to 23), written to the `redescribe.py`
rules: no names, jobs, places or story-only objects. Packer, drummer, clerk and broker become
generic roles: someone at work, a seller, a superior, a person with a little to stake. The
`topic_words` leak check flags 25 of 186. 22 are for role words kept on purpose (partner, customer,
newcomer, employer, rival, manager, owner, employee, author). Two are for "judge" used as a verb, and
one is for "court" in scene 160, also a verb ("court one person after another"). One place word,
"office", was caught and rewritten.
- **Advice**: 202 items in 127 scenes (87 `do`, 115 `avoid`). Each item has a generic move, what the
text says the move leads to, and a verbatim quote of at most 30 words. Only advice the text gives is
recorded. Two items give a move with no consequence at all (133, 166), and their outcome reads
`not stated`. 52 book scenes carry none: the anecdotes' middles, where the father is telling the
story and not yet drawing the lesson.
- **18 groups**, each a situation that recurs in **three or more letters** (13 span 3 and 5 span 4).
Every group has 4 to 8 scenes, and no letter supplies more than half of any group, so all pass the
Lawson recurrence rule except that two groups (G07, G17) have only 4 scenes. **106 scenes are
assigned and 80 are not**, and 7 of the 80 are not the book (see Known defects). All 20 letters feed
at least one group.
- **Options**: 90 in all, 5 per group. **81 cite the book's own advice (`advice:N`)** and 9 cite
what someone in a scene did (`scene:N`). There are no archetypes and no filled gaps: the book had a
move for every slot. 9 options cite a scene outside their own group, and `groups.json` marks each
one `in_group: false`. Most of these are advice given in one letter that answers a situation
grouped from another.
- **Moves**: spine paths with a direction only (`+`, `-`, `risk`, `set`). Relationships are moved 65
times, `money` 39, `standing` 29, the skills 32 and flags 15. The roles are the ones a workplace
has: `boss`, `staff`, `peers`, `customer`, `rival`, `partner`, `family`, `friend`, and `schemer`
for the man with a sure thing. `other_side` is used where one side's gain is the other's loss.
- **Skills** proposed for this corpus: `judgment`, the sizing up of goods, prices, claims and men
(the father's "one-part talk and nine-parts judgment"), and `hustle`, the drive to do the second
half of the work. Jacobs' `cunning` and Lawson's `grit` do not fit. Lorimer's people are rarely
scheming or enduring. They are either sizing things up or not trying hard enough.
- **Stage** comes from the son's standing, judged **per letter**, in `STANDING` in `groups_src.py`.
Letters 1 to 9 are low (student, then mailing and billing clerk), 10 to 14 middle (travelling
salesman) and 15 to 20 high (assistant manager, the top of this book's ladder). The groups come out
11 low, 4 middle and 3 high. The son is staged even when a scene is an anecdote about someone else,
because the letter is written to him at that rung. **This is the first corpus whose protagonist
climbs a ladder, so stage carries real information.** It is uneven all the same: the advice about
money and effort is given early, and the advice about managing people late.
## How this corpus differs
**It is not fiction.** Each "story" is a letter: a paragraph of maxims, then an anecdote, then the
moral, and often a second anecdote. The anecdotes are one-off tales (a quack's button-hook trick, a
pet pig, an heir engaged to three girls at once), so their middles recur nowhere and account for most
of the unassigned scenes. The heir's tangle in Letter 19 fills 12 scenes, and none of them joins a
group. The
situations that recur are the maxims', and they recur because the father returns to his themes
across the whole year of letters.
**It is the game's premise.** Earlier corpora needed their situations translated into work. This one
is about work already: starting at the bottom, doing just enough, a hard boss, spending ahead of pay,
selling to a buyer who does not want it, managing people, and the pull of the fast set. It has almost
nothing about danger, the supernatural, crime or grief, which fill much of the catalogue.
**It speaks from the top.** The father owns the firm, so much of his advice is an employer's: whom to
hire, when to fire, how to read a clerk. For a player climbing the ladder, some of it has to be turned
round ("the owner passes over the one who comes in late" becomes the option *come in late*). The new
entry `in_charge`, 17 options, is advice for the rung the player reaches last.
## Pilot result
The question: can an advice book supply options for the catalogue's existing situations, and justify
their effect directions from the text?
**Coverage.**
- **127 of 186 scenes carry advice**, or 127 of the 179 that are the book. There are **202 advice
items**, and every one became an option.
- **24 of the 82 catalogue v2 entries receive at least one sourced option**, 73 options in all:
`pretence` 11, `power_over_you` 7, `mistook_them` 5, `overlooked` 5, `newcomer` 4,
`not_who_they_seem` 4, `sure_thing` 4, `called_to_account` 3, `family_against_your_path` 3,
`plea_for_help` 3, `self_betrayal` 3, and 1 or 2 each for `after_your_money`, `bow_for_your_living`,
`caught_out`, `compromise_for_money`, `cover_up_spiral`, `gone_missing`, `habit`,
`outside_looking_in`, `outmatched`, `owning_up`, `peace_at_home`, `used` and `warning`.
- **129 options (64%) fit no existing entry** and sit under **19 `new:` entries**. The biggest are
`in_charge` 17, `just_enough` 15, `difficult_customer` 11, `fast_set` 9, `sizing_up_a_match` 9,
`learning_that_pays` 8 and `between_two_sides` 7. The full list is in `options_by_entry.json`
under `_new_entries`. Most are the work and money situations that the fiction-built catalogue never
needed. Twelve of them are the same situations as groups found here (`spending_ahead` is G01,
`just_enough` G03, `in_charge` G12, and so on). `spending_ahead` also sits beside the two debt
groups Lawson reported as new.
**The share with `stated: true`.** `stated` is true only when the quoted words say what the move leads
to, for every direction in `moves`. The rules applied are in `options_src.py`: an outcome in the next
sentence does not count, and "it pays" or "a safe rule" with no path named does not count. The moves
were written first, as a pack author would want them, and no direction was dropped to make an option
count as stated.
| | options | stated | share |
| --- | --- | --- | --- |
| On existing catalogue entries | 73 | 29 | 40% |
| On `new:` entries | 129 | 53 | 41% |
| **All** | **202** | **82** | **41%** |
16 of the 24 covered entries have at least one stated option, and all 19 new ones do. Two patterns
hold across the set:
- **Warnings state their cost; recommendations mostly do not.** 47% of `avoid` items are stated
(54 of 115), against 32% of `do` items (28 of 87). "He'd punch my bank account as full of holes"
names a path. "It pays" and "that's what counts" do not.
- **The text rarely justifies more than one path.** 54% of one-path options are stated (60 of 111),
against 25% of two-path options (22 of 88) and none of the three three-path options. A typical
sentence names one consequence, so an option that moves money *and* the boss's regard usually has
one direction sourced and one inferred.
**Against the story packs.** Every option in a story pack has an inferred direction. A scene shows
what someone did, and sometimes what happened to that one person, never what the move generally leads
to. So their `stated` share is effectively 0.
| Pack | options | `scene:N` | `archetype` | `filled` | stated |
| --- | --- | --- | --- | --- | --- |
| Lawson, *While the Billy Boils* | 142 | 118 | 12 | 12 | ~0% |
| Bierce | 128 | 96 | 15 | 17 | ~0% |
| **Lorimer, pilot** | 202 | (advice) | 0 | 0 | **41%** |
| Lorimer, groups | 90 | 9 + 81 `advice:N` | 0 | 0 | not scored |
**Verdict: yes, run it on other advice books, but as a second source beside the stories, not in
place of them.** It did what the stories cannot. Two options in five come with a textual warrant for
every direction, and every option comes from a move the text itself recommends or warns against.
The groups needed no archetype or filled option at all. It did not do what the pilot mainly hoped for, which was
to fill the *existing* catalogue. Only 24 of 82 entries got anything, and two thirds of the advice
went to situations the catalogue lacks. That is less a failure than a finding: the story-built
catalogue is thin on exactly the situations a career game runs on, and an advice book supplies those
situations along with their options. Pick advice books whose subject is the game's (work, money,
standing, getting on with people) and expect them to extend the catalogue as much as to feed it.
**What went wrong or was hard.**
- **The 30-word quote cap splits move from outcome.** Lorimer often states the move in one sentence
and the consequence in the next, or lets an anecdote end a scene later. Several items had to be cut
to a quote that holds the outcome and not the move, or the move and not the outcome. The strict rule,
where the evidence must carry the outcome, cost the stated share several points. Allowing two short
quotes per option would raise it honestly.
- **Figurative language.** The father speaks in hogs, mules, hams and horse races. Deciding whether
"it's bankruptcy to tell about them" moves money (no) or "they'll bite" moves money (yes) is a
judgement on every item. The stated share rests on those calls, and a second reader would move some.
- **Stated is not the same as right.** A stated direction is the father's claim, argued from one
anecdote or none. The pilot measures whether the text gives a warrant, not whether the warrant
holds.
- **Mostly one side of each situation.** The advice comes from the man at the top. Turning it into
options for a climber is routine but constant work. Some entries, `in_charge` above all, fit a
late stage only.
- **The anecdotes are not advice.** 52 book scenes are anecdote with no lesson yet. As story material
they recur nowhere, so this book yields fewer grouped scenes per word than Lawson.
## Known defects
- **Scenes 179 to 185 are the publisher's back-matter advertisements**, left inside Letter 20 by
`split_gutenberg.py`. They are recorded with a "No situation" predicament and no advice, and are
unassigned. The split was not changed, so `chunks.json` stays the corpus as split. A production
splitter should cut at the last letter's sign-off.
- Scenes 7, 24, 31, 38, 62, 70, 99, 107, 118, 125, 147, 157 and 171 end with the next letter's boxed
heading (the Gutenberg text's framed synopsis). They are harmless to reading but inflate those
scenes' word counts.
- **G07 and G17 have only 4 scenes.** They pass this set's rule (three letters, none over half) but
not the catalogue's recurrence rule of at least 5 scenes.
- The `stated` judgements and the entry mapping are one reader's. Some mappings stretch an entry.
The Widow's "wait until you know" is filed under `gone_missing`, and Old Abe the Judas steer under
`used`. Each is recorded, not rounded.