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

151 lines
11 KiB
Markdown

# Wallingford reference set: *Get-Rich-Quick Wallingford* (1908)
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 read every scene and wrote each summary,
predicament, group and option. **No local inference was used.** Compare the local-model runs against it.
Do not treat it as ground truth: it is one careful reading.
| File | What it is |
| --- | --- |
| `corpus/get-rich-quick-wallingford.txt` | Project Gutenberg #37010, George Randolph Chester |
| `split_gutenberg.py` | → `stories.json` (28 chapters, one "story" each) and `chunks.json` (334 scenes, same 320-word paragraph rule as `../chunk.py`) |
| `dump.py` | `python3 dump.py A B` prints scenes A..B for reading (copied from Jacobs) |
| `claude/batches/sNN.json` | per chapter: `{chunk, story, summary, predicament}`, the same schema as `../jacobs/claude/batches/` |
| `claude/groups_src.py` | the schemes (`ARCS`), the groups, options and protagonist standing; `python3 groups_src.py` prints the scheme-level recurrence check |
| `claude/build.py` | checks everything, then writes `claude/records.json` and `claude/groups.json` (unchanged from Jacobs) |
| `claude/page.py` | → `claude/REFERENCE.html`, the readable page (Jacobs' page with the title and heading changed) |
Rebuild: `python3 split_gutenberg.py && cd claude && python3 build.py && python3 page.py && python3 groups_src.py`.
## What is in it
- **334 predicaments**: one sentence each (median 21 words, min 16, max 24), written to the
`redescribe.py` rules: no names, jobs, titles, places or story-only objects. A carpet tack is "a
trivial product", a patent is "legal protection", a traction line is "the great enterprise". The
predicament is written from whichever side of the scheme the scene centres on, the schemer's or the
target's. The `topic_words` leak check flags 141 of 334. Almost all are role words (partner 67,
employee 17, rival, newcomer, employer, host, guest, widow, clerk), kept on purpose because the
design's cast is roles. The rest are generic: *house*, *dinner*, *room*, *lunch*, *party* (as in a
travelling party), *station* (social station), *court* and *judge* (as verbs), *stage* (a stage set).
- **22 groups**, each a situation that recurs in **three or more schemes** (see below). Each scene sits
in at most one group: **191 are assigned and 143 fit nothing that recurs**. All 28 chapters and all
six schemes feed at least one group.
- **Options**: 4 or 5 per group (12 have 5, 10 have 4), 100 in all. 89 come from what someone in a
scene did or refused to do (`scene:N`), 6 are archetypes and 5 fill gaps. **11 scene options cite a
scene outside their own group**, and `groups.json` marks each one `in_group: false`. As in Bierce,
most are a neighbouring scene where the character acts, or a scene held by a sibling group (the
old man who cashes out, scene 278, is both the lone sceptic and an option in the speculative fever).
- **Moves**: spine paths with a direction only (`+`, `-`, `risk`, `set`), no magnitudes. `money` is
moved 59 times and `standing` 41, against Bierce's 9 and 65. This is the first reference set where
money carries the weight. Relationship roles are generic (`partner`, `investors`, `promoter`,
`creditor`, `neighbours`, `newcomer`, `old_friend`, `bosses`, `victims` and others), and flags record
what the player did (`living_on_credit`, `bill_outstanding`, `bought_in`, `mortgaged`, `complicit`,
`sold_out`, `bad_check`, `went_straight`).
- **Skills** proposed for this corpus: `charm`, for the front that makes people trust, lend and give
credit, and `cunning`, for paper tricks, reading a contract and seeing the catch. Jacobs' `nerve` fits
less well: the swindler is a physical coward and wins on bearing, not courage.
- **Stage** comes from protagonist standing, **judged per scheme** and recorded per chapter in `STANDING`
(`build.py` expects chapter keys). The swindler arrives nearly penniless among small savers (tacks:
low), runs two mid-sized schemes (insurance, recorder: middle), becomes the great man of a town and
then of a farmers' movement (traction, wheat: high), and ends broke among cigar-shop keepers (cigars:
low). The groups come out 8 low, 7 middle and 7 high.
## Schemes and scheme-level recurrence
The book is a novel in linked episodes, not a story collection, so the unit for recurrence is the
**scheme**, not the chapter. A situation seen in three chapters of one scheme has not recurred.
`ARCS` in `groups_src.py` maps each chapter to one of six schemes, read from the text. The chapter
titles suggest about seven; the seventh would be the honeymoon trip of chapter 17, but that only
strands the swindler in the town of the traction scheme, so it belongs there.
| Scheme | Chapters | Scenes (after overrides) | What happens |
| --- | --- | --- | --- |
| `tacks` | 0-6 | 83 | A company floated on a worthless covered carpet tack, sold to a careful clerk and his lodge friends |
| `insurance` | 7-10 | 40 | A fraternal insurance order turned into a stock sale to its own members, a widow included |
| `recorder` | 11-16 | 62 | A real inventor's machine and his friends' savings, sold behind their backs to the monopoly |
| `traction` | 17-20 | 61 | A town lured into a land boom by a traction line never meant to be built |
| `wheat` | 21-24 | 44 | A farmers' association that holds wheat for $1.50 and is steered into buying the promoter out |
| `cigars` | 25-27 | 44 | A consolidation of small cigar shops, the last scheme, which lands the swindler in jail |
Four chapters open or close on the neighbouring scheme, so `ARC_OVERRIDE` moves 15 scenes: 78-82 (the
tack takings, spent and lost at the start of chapter 7) to `tacks`; 120-122 (the insurance takings, at
the start of chapter 11) to `insurance`; 244-245 (the traction line sold for real, at the start of
chapter 21) to `traction`; 290-294 (the cigar shop where the next scheme starts, at the end of chapter
24) to `cigars`.
**Rule**, applied per group: at least 5 scenes, at least 3 schemes, no scheme over 50% of the group.
**All 22 groups pass.** 4 groups span 3 schemes, 10 span 4, 5 span 5 and 3 span 6. Seven sit exactly at
the 50% ceiling (G01, G02, G06, G07, G14, G19, G21): each is a situation one scheme dramatises at
length and the others touch briefly. Membership was trimmed to reach the ceiling; nothing above it was
kept. Measured by chapter instead, as `build.py` reports, every group spans at least three chapters,
which overstates recurrence for a novel. That is why the scheme count is the one to use.
## Against the catalogue
The v2 catalogue has 82 entries (`../catalogue/v2/catalogue_v2_src.py`). Money and deals, the thinnest
area for a career game, are this book's whole subject.
**Eleven groups match an existing entry.** Seven match closely: G08 partners who mean to cheat each
other (`your_scheme`, as Jacobs G06), G11 charmed out of your doubts (`sure_thing`), G12 the lone
sceptic (`against_the_verdict`), G13 cornered by the people you cheated (`caught_out`), G16 courting the
rich newcomer (`patron`), G18 learning what your partner really does (`what_they_hid`) and G20 an old
accomplice in trouble (`plea_for_help`). **Four sharpen an entry** rather than duplicate it, and could
become sub-entries or widen its `includes`:
- G01 **keeping up a front of wealth on credit** sharpens `pretence`: the front is not vanity but the
thing that raises the money.
- G03 **a share in something that does not exist yet** sharpens `sure_thing`: the decision is the fear
of being left out of a paper venture, not trusting a stranger. With G11 this book gives `sure_thing`
two distinct sides.
- G07 **working inside a crooked business** sharpens `compromise_for_money`: you are already on the
payroll when you understand it, and the options run from silence to staying on to rebuild it.
- G09 **out-swindled by someone you trusted** sharpens `outmatched`: the sharper one is the placid broker
or the mark you despised.
**Eleven are new situation types**:
- **Raising money:** G04 raising money on a promise you cannot keep; G19 buying in with nothing (paying for
a full share with a note or a postdated check); G10 let in on the inside (a mark made a partner).
- **Holding money:** G02 the bill is due and you cannot pay; G06 sunk in, and asked for more; G14 wiped out;
G22 selling out before the crash.
- **Markets and rivals:** G05 a town caught in a speculative fever; G15 small against the giant.
- **Going straight:** G17 a partner who wants to go straight; G21 the sham turns out to be real.
All nine situations the brief asked about were found and recur across schemes: raising money on a
promise (G04), a share in what does not exist (G03), the employee who sees it is crooked (G07), the
partner who wants to go straight (G17), the mark who becomes a partner (G10), the scheme that becomes a
real business (G21), out-swindled by a supposed mark (G09), a front of wealth on credit (G01, with G02)
and a speculative fever (G05).
## How this corpus differs
It is **one book**, the case DESIGN.md calls hard ("one long novel is the hard case and is not the
target"). It works better than that warning suggests because the book is built as six near-repeats of
one plot: arrive broke, look rich, find marks, float a venture, sell out, leave. The same situations
come round in every scheme, seen from new angles, so recurrence across schemes is real, not an artefact
of chapter splitting. The cost is **cast concentration**. One schemer, his wife and his confederate are
in almost every scene, so groups like G17 and G18 are one marriage seen six times. A pack built from it
should vary the counterpart more than the book does.
**Both sides of the swindle recur.** Many groups come in pairs: raising money on a promise (G04)
against buying a share in nothing (G03); the charmed doubter (G11) against the lone sceptic (G12);
cheating a partner (G08) against being out-swindled (G09). Predicaments are written from the side the
scene centres on, so a tool should expect a scheme's marks and its promoter in different groups.
**143 scenes stay unassigned.** Most are one-scheme set pieces with no second instance: the planted
flaw the recruit "solves" (22-25), the widow's visit (91-94), the drugging of the lawyer (176-182), the
honeymoon trip and the stranded private car (185-203), the fountain dedication (236-241) and the dice
game (309-313). The rest are narration: the night drive, the parade speeches, the farm office tour.
## Known defects
- `stories.json` titles are `capitalize()`d by the splitter, so names come out lower-case ("In which
j. rufus wallingford ..."). Left as split.
- Because `STANDING` is keyed by chapter, the 15 overridden scenes take their chapter's stage, not their
scheme's: the five cigar-shop scenes at the end of chapter 24 count as `high` (wheat) although the
cigars scheme is `low`. This changes the stage of three groups. Counted by scheme, G09 would be `low`
instead of `high`, and G11 and G15 would tie between `low` and `middle` instead of coming out
`middle`. `build.py` was left unchanged, so `groups.json` carries the chapter-based stage.
- Scene 116 is a single sentence (the swindler's bearing silencing the room), and scene 41 is two lines.
Both were summarised anyway; 116 is in G13.