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
This commit is contained in:
JesseMarkowitz
2026-10-07 06:05:51 -04:00
co-authored by Claude Opus 5.5
parent e5617b86ba
commit 3a4758172d
566 changed files with 303901 additions and 0 deletions
+220
View File
@@ -0,0 +1,220 @@
# Aesop reference set: *Three Hundred Aesop's Fables* (tr. George Fyler Townsend, 1867)
A hand-made comparison baseline for the story-to-pack pipeline, a sibling of the Jacobs set in
`../jacobs/` and the Lawson set in `../lawson/`. Claude read all 313 fables and wrote every summary,
predicament, group, option and measurement row. **No inference of any kind was used.** Do not treat
it as ground truth: it is one careful reading.
Aesop has two jobs here. It is a normal reference set. It is also a test of a different claim: a story
supplies predicaments well but rarely says what a move leads to, while a fable puts situation, move
and outcome in one paragraph. The second job is measured in
[Fables as an option source](#fables-as-an-option-source).
| File | What it is |
| --- | --- |
| `corpus/three-hundred-aesops-fables.txt` | Project Gutenberg eBook #21 (public domain) |
| `split_gutenberg.py` | → `stories.json` and `chunks.json`: **313 fables, one story and one scene per fable** (see below) |
| `claude/batches/sNNN.json` | `{chunk, story, summary, predicament, moral}`, one file per run of fables, named by the first fable in it so that the `s*.json` glob sorts in fable order |
| `claude/groups_src.py` | the groups, their options, and the protagonist's standing in every fable |
| `claude/options_src.py` | the options measurement, with the definitions of its `new:` entries and the rules for `stated` |
| `claude/build.py` | checks everything, then writes `claude/records.json`, `claude/groups.json` and `claude/options_by_entry.json` |
| `claude/page.py` | → `claude/REFERENCE.html`, the readable page, with the measurement at the end |
Rebuild: `python3 split_gutenberg.py` from this directory, then
`cd claude && python3 build.py && python3 page.py`.
**One scene per fable** departs from the usual 80-word scene rule on purpose. The median fable is 97
words, and many are under 80, so the rule would discard them, and a fable split in two would lose its
turn. A group's fable count is therefore also its story count.
## What is in it
- **313 predicaments**: one sentence each (median 21 words, min 15, max 24), transplanted to a
workplace. They contain no animal, plant or god names and no story-only objects. Human role words
stay (someone powerful, a partner, a newcomer, the boss). `build.py` enforces this with a list of
every creature, plant, god and prop in the book, not with `topic_words`. The list caught nine
predicaments that used an animal word as a verb or an idiom ("crow about it", "swallow it whole",
"the lion's share"), and all nine were reworded.
- **115 stated morals**, recorded verbatim. A moral here is the fable's unquoted, generalising
sentence ("Look before you leap."). Where the lesson is only spoken by a character inside quotation
marks, as in *The Lion and the Mouse*, `moral` is `null`. `build.py` checks every moral is in the
text.
- **16 groups of 13 or more fables**, the recurrence rule scaled to this corpus (at least
max(3, 4% of 313) = 13). They range from 13 to 18 fables. **4 small groups of 5 to 12** are marked
`small` and reported separately: G17 letting a known predator inside (6), G18 the lion's share (6),
G19 a bad record when you need trust (5), G20 a warning before the trouble (6). Each fable sits in at
most one group: **253 are assigned and 60 fit nothing that recurs**.
- **Options**: 3 to 5 per group, 94 in all. 87 come from what someone in a member fable did or
refused to do (`scene:N`), 7 fill gaps, and none are archetypes. No option cites a fable outside
its own group, unlike Jacobs (8) and Lawson (14). A fable is a whole turn, so the move and the fable
are always the same scene.
- **Moves**: spine paths with a direction only (`+`, `-`, `risk`, `set`). There are no magnitudes.
**Skills** proposed for this corpus: `wit`, for seeing through a trick and turning it, and
`prudence`, for looking before you leap, knowing your limits and keeping what you have. Between them
they are most of Aesop's morals.
- **Stage** comes from protagonist standing, judged **per fable** in `STANDING` in `groups_src.py`:
157 fables rank low, 119 middle and 37 high. **No group comes out stage `high`** (11 low, 9 middle).
Aesop's "you" is usually the lamb, not the wolf, and the high-standing fables (a father, a master, a
captor) scatter across groups rather than recurring together.
The groups:
| | Group | Fables | Nearest catalogue entry |
| --- | --- | --- | --- |
| G01 | A friendly approach from someone who would gain by your fall | 16 | new (near `sure_thing`) |
| G02 | At the mercy of someone who has already decided | 14 | `at_their_mercy` |
| G03 | Trading one hardship for another | 14 | new |
| G04 | Envying another's gift | 17 | new (near `overlooked`) |
| G05 | Passing for more than you are | 14 | `pretence` |
| G06 | Riding high | 13 | new |
| G07 | Sneered at by someone showier | 13 | new (near `power_over_you`) |
| G08 | Help asked in need | 14 | `plea_for_help` |
| G09 | Wanting more than you hold | 13 | new |
| G10 | Your side divided | 15 | new |
| G11 | A partner you may not be able to count on | 18 | new (near `used`) |
| G12 | Rushing in without looking | 13 | new |
| G13 | Pointing at others' faults | 14 | new (near `own_words_back`) |
| G14 | Liberties between the weak and the strong | 15 | new (near `revenge`) |
| G15 | A hard lot | 14 | new (near `dead_end`) |
| G16 | Worked hard, badly repaid | 13 | new (near `overlooked`) |
Only three large groups match an existing entry. The rest are situations about **self-regard and
prudence** (envy, pride, greed, heedlessness, pointing at faults), which no story corpus isolated.
The story corpora found them only as the texture of longer plots.
## How this corpus differs
**Recurrence is the corpus's nature, not something to be found.** Every earlier corpus needed a
search for the handful of situations its stories kept returning to. Aesop is built from a small
stock of situations told over and over with different animals: the predator's invitation alone
appears sixteen times. The problem flips. Nearly every fable recurs, and the work is deciding which
of several overlapping situations a fable belongs to. *The Fox and the Goat* is a trap, a heedless
leap, and a partner who uses you. It sits in G01.
**The predicaments are the cleanest yet.** There are no names to strip, and the whole cast is
already a set of roles: the strong, the weak, the flatterer, the partner, the master. Transplanting
to a workplace needs only the animal removed. The cost is abstraction: a pack built on these
predicaments alone would have no setting at all.
**Two groups hold both sides of one situation.** G13 holds the critic who shares the fault and the
one criticised. G14 holds the weak who strike at the fallen and the strong being needled. In Jacobs
and Lawson the actor was always on one side. Here the fable often follows both parties to their fate,
and splitting them would leave neither side at 13. The measurement does the same for `sneered_at`:
G07's predicaments are all from the side of the one sneered at, but four of its fables (the heifer, the
horse, the olive, the hare) also supply the sneerer's move as an option.
**Power runs through nearly everything.** Five of the sixteen groups turn on an imbalance of power
(G01, G02, G03, G14, G16), and two of the small ones as well. Of the options measured below, 110 of
242 are about the actor's standing going down. It is the most power-heavy corpus so far, and the
least domestic: there is almost no home, love, grief or dread.
## Fables as an option source
`claude/options_by_entry.json` maps a catalogue entry (a v2 id, or `new:<id>` defined under
`_new_entries`) to the options the fables supply for it. Each option is
`{text, moves, source: "chunk:N", evidence, stated}`. `evidence` is the verbatim moral, or an
excerpt of at most 30 words, and `build.py` checks both. **`stated` is `true` only if the fable's own
outcome or moral shows the direction of every path in `moves`.** The rules, applied the same way to
every row, are in the docstring of `options_src.py`. The main points:
- An outcome is read as a direction by a fixed table. Killed, caught, beaten, driven out or publicly
rebuked counts as `standing -`. Goods, food or pay lost counts as `money -`. A counterpart who
repays, deserts or stops trusting you counts as `relationships`. Reading "eaten" as `standing -` is
a convention. The fable does not say it.
- A moral that only calls a move wise or foolish ("Look before you leap.") states no direction. One
that names the effect ("Slow but steady wins the race.") does.
- An outcome the move did not cause is not counted, however pointed. The sparrow is taken by a hawk
while mocking the hare, but mocking did not bring the hawk.
- `risk` is stated only when one fable shows the same move ending both ways. That happens once, in
*The Birdcatcher, the Partridge, and the Cock*: one bird's plea spares it, and the other's does not.
- **Measurement moves use only `money`, `standing` and `relationships.<role>`.** A skill label or a
flag is a decision about the option, not an outcome any text can show. Leaving them out means every
row could in principle be stated. The group options in `groups_src.py` keep them.
**Results:**
| | |
| --- | --- |
| Catalogue v2 entries with at least one sourced option | **32 of 82** (26 with at least one stated option) |
| `new:` entries | **19**, all with at least one stated option |
| Options | **242**, from 229 fables (84 for v2 entries, 158 for new ones) |
| `stated: true` | **165 (68%)**: 62 of 84 for v2 entries (74%), 103 of 158 for new ones (65%) |
| Entries with three or more stated options | 21 |
| Entries with a stated `+` option and a stated `-` option | 15 |
The v2 entries the fables speak to are mostly about power, deception and help. `at_their_mercy`
gets 14 options (12 stated), `plea_for_help` 11 (9), `pretence` 8 (6) and `warning` 5 (2). Another 28
entries get one to four options each. The 50 entries with nothing are almost all of the catalogue's
home, love, loss, fear and duty. Examples are `home_unseen`, `grief`, `losing_them`, `dread`,
`duty_against_love`, `past_comes_back` and `promised_elsewhere`. Aesop has no inner life and almost
no family.
The 19 new entries are `friendly_predator`, `better_the_devil`, `ape_your_betters`, `riding_high`,
`sneered_at`, `grasping`, `divided`, `doubtful_ally`, `heedless`, `pot_and_kettle`,
`needling_the_strong`, `hard_lot`, `used_up`, `predator_inside`, `lions_share`, `bad_record`,
`asking_above`, `please_everyone` and `make_them_move`. Each definition says which v2 entry it sits
nearest to and how the decision differs.
**Against the story packs.** Every option in a story pack has an inferred direction: the author
judged where the move leads, because the story does not say.
| Pack | Options | `scene:N` | `archetype` | `filled` | Directions stated by the text |
| --- | --- | --- | --- | --- | --- |
| Lawson (`../lawson/claude/groups.json`) | 142 | 118 | 12 | 12 | 0 (all inferred) |
| Bierce (`../bierce/claude/groups.json`) | 128 | 96 | 15 | 17 | 0 (all inferred) |
| Aesop groups (`claude/groups.json`) | 94 | 87 | 0 | 7 | not separately judged |
| Aesop measurement (`claude/options_by_entry.json`) | 242 | 242 (all from a fable) | 0 | 0 | 165 (68%) |
Even a `scene:N` option in a story pack is sourced only for its *move*: the scene shows someone doing
it, and its effect is the author's call. In the measurement, two thirds of the options are sourced for
the effect as well.
The 68% needs three qualifications before anyone relies on it.
1. **The stated options are thin.** 226 of the 242 options carry a single path, and 15 of the 16
two-path options are stated. A fable follows one actor to one fate, and that fate is nearly always
their standing. Story-pack options carry more: Lawson's average 1.67 spine paths each, Bierce's
1.18 and Aesop's own group options 1.40, before skills and flags. What a fable usually leaves
unsaid is the second path, how the move changes a relationship.
2. **They are almost all downside.** Of the 165 stated options, **136 move only in the `-`
direction**. By path, 90 stated `standing -` against 12 stated `standing +`. A fable states the
price of the tempting mistake: the goat in the well, the crow who sang, the dog who dropped his
meat. The wise move's reward is usually just that the harm does not happen, and that gives no
direction. The fox who stays outside the sick lion's cave is right, and nothing moves for him. That
is why the options marked `false` are so often the prudent ones. Only 15 entries get a stated
option in each direction.
3. **The coverage is narrow.** 32 of 82 entries, with most of the weight on a handful. The fables
tell you a great deal about predators, pretenders and the greedy, and nothing about a spouse, a
dead friend or a night watch.
**Verdict.** Fables are a real source of effect directions, and a far better one than stories, but
only for one kind of option. For a tempting mistake in a situation of power, greed, pride or trust,
the fable states where it leads, with evidence, seven times in ten (136 of the 190 options that only
move down). For any other option it is about half (29 of 52). That is enough to anchor
the `-` direction of an event's tempting option, and to check an author's inferred direction against
a text. Fables do not supply the prudent option's payoff, the relationship side of a move, or skills,
and they say almost nothing about the catalogue's domestic and inward half. The same applies to them as
a source of predicaments. Use them to calibrate the downside of options in power and trust events,
not to build whole events.
## Known defects
- **Drop capitals.** The transcription lost each fable's printed drop capital, so many fables open
with the first word's initial missing: "WOLF, meeting with a Lamb" (fable 1), "TEE KITES" (180).
`chunks.json` is left as split. Morals and evidence are quoted from later in the text, so none is
affected.
- **Other transcription slips**, left as split: "an a woman" (194), "use I gave credence" (280),
"all bag in front" (260).
- **Fable 89, *The Æthiop***, rests on a racist premise, that a black servant's colour is dirt to be
scrubbed off. Its predicament keeps only the transplantable turn: trying to scrub away someone's
nature, and hurting them. It is unassigned.
- **Etiologies are not situations.** *The Goods and the Ills* (250), *The Lark Burying Her Father*
(263), *The Man, the Horse, the Ox, and the Dog* (203) and *The Two Bags* (260) explain how
something came to be. Their predicaments are strained, and three of the four are unassigned.
- **G11 is the loosest large group** (18 fables). It holds every doubtful partner, from the companion
who flees a bear to the boastful suitor, joined only by the question "can I count on them?".
- **Standing is judged per fable** from the predicament's "you", not from the animal. So the lion in
*The Lion and the Mouse* ranks high because the predicament puts the player in the lion's place.
The Lorimer advice-book pilot running alongside this one was not read. The two results are
independent.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,47 @@
[
{"chunk": 0, "story": 0, "summary": "A lion spares a mouse who begs for its life, and later the mouse gnaws through the hunters' ropes that bind the lion.", "predicament": "Someone far beneath you whom you could crush begs to be let off and swears they will repay you one day.", "moral": null},
{"chunk": 1, "story": 1, "summary": "A wolf invents one charge after another against a lamb, and when each is refuted eats him anyway.", "predicament": "Someone powerful who has already decided to ruin you keeps inventing charges, and each answer you give changes nothing.", "moral": "The tyrant will always find a pretext for his tyranny."},
{"chunk": 2, "story": 2, "summary": "An ass envies the grasshoppers' song, tries to live on dew as they claim to, and starves.", "predicament": "You admire a colleague's talent so much that you copy their habits, though what feeds them will not feed you.", "moral": null},
{"chunk": 3, "story": 3, "summary": "A crane pulls a bone from a wolf's throat and, asking for her fee, is told that keeping her head is payment enough.", "predicament": "You did risky work for someone ruthless on a promise of payment, and now they say escaping unharmed is your fee.", "moral": "In serving the wicked, expect no reward, and be thankful if you escape injury for your pains."},
{"chunk": 4, "story": 4, "summary": "A father shows his quarrelling sons that a bundle of sticks cannot be broken though each stick alone snaps easily.", "predicament": "The people under you quarrel constantly among themselves, and you must make them see that divided they are easy prey.", "moral": null},
{"chunk": 5, "story": 5, "summary": "A bat caught by two weasels claims to be a mouse to one and a bird to the other, and escapes both.", "predicament": "Two hostile powers each catch you in turn, and you could save yourself by claiming to be whatever each one tolerates.", "moral": "It is wise to turn circumstances to good account."},
{"chunk": 6, "story": 6, "summary": "A cock scratching for food finds a jewel and says one grain of barley would be worth more to him.", "predicament": "Something others would prize highly has fallen into your hands, but it is of no use to you in your present need.", "moral": null},
{"chunk": 7, "story": 7, "summary": "A swallow and a crow argue over plumage, and the crow says his feathers at least last through the winter.", "predicament": "A showy colleague belittles you, and you must decide whether to argue looks or point to what lasts when times turn hard.", "moral": "Fair weather friends are not worth much."},
{"chunk": 8, "story": 8, "summary": "A just lion king proclaims peace between strong and weak beasts, and the hare, praising it, runs for his life.", "predicament": "A new leader declares that the weak will now stand safely beside the strong, and you are one of the weak.", "moral": null},
{"chunk": 9, "story": 9, "summary": "A traveller scolds his dog for dawdling, and the dog replies that he is ready and waiting on his master.", "predicament": "Someone above you blames you for the delay, when in fact you have long been ready and are waiting on them.", "moral": "The loiterer often blames delay on his more active friend."},
{"chunk": 10, "story": 10, "summary": "A starving grasshopper who sang all summer begs food of the ants, who mock him for not saving.", "predicament": "Someone who idled while you worked and saved now comes to you hungry, asking you to share what you stored.", "moral": null},
{"chunk": 11, "story": 11, "summary": "A hare mocks a tortoise's pace, sleeps during their race, and loses to her steady plodding.", "predicament": "Someone gifted mocks your slowness and accepts your challenge, sure they can win without really trying.", "moral": "Slow but steady wins the race."},
{"chunk": 12, "story": 12, "summary": "A charcoal-burner invites a fuller to share his house to save costs, and the fuller refuses because he would blacken all his work.", "predicament": "A friend proposes sharing premises to save money, but the way they work would undo everything you do.", "moral": "Like will draw like."},
{"chunk": 13, "story": 13, "summary": "A boy catching locusts reaches for a scorpion, which warns him he would have lost everything had he touched it.", "predicament": "You have been collecting easy wins, and the next thing you are about to grab looks like the others but is dangerous.", "moral": null},
{"chunk": 14, "story": 14, "summary": "A fisherman pipes to the fish in vain, then casts his net and scolds them for dancing only now.", "predicament": "You have waited in vain for people to come round of their own accord, and could stop coaxing and use the tool you have.", "moral": null},
{"chunk": 15, "story": 15, "summary": "A dog carrying meat snaps at his reflection's larger piece and loses his own.", "predicament": "You already hold something good, and a bigger prize that may not be real tempts you to let go of it.", "moral": null},
{"chunk": 16, "story": 16, "summary": "A carter whose wagon is stuck calls on Hercules, who tells him to put his shoulder to the wheel first.", "predicament": "Your work is stuck, and you are waiting for someone powerful to rescue you instead of putting your own effort into it.", "moral": "Self-help is the best help."},
{"chunk": 17, "story": 17, "summary": "A blind young mole insists he can see, and his mother's test shows he cannot even smell.", "predicament": "A young person insists they have a skill they plainly lack, and you must decide how to show them without crushing them.", "moral": null},
{"chunk": 18, "story": 18, "summary": "A herdsman vows an offering to find his calf's thief, then finds a lion eating it and vows more to escape.", "predicament": "You swore to track down whoever took from you, and have just found out the culprit is far more dangerous than you.", "moral": null},
{"chunk": 19, "story": 19, "summary": "A fawn asks why his mother, bigger and armed, flees from hounds, and she admits she simply cannot help it.", "predicament": "You have every advantage over the one who frightens you, and still you cannot bring yourself to stand your ground.", "moral": "No arguments will give courage to the coward."},
{"chunk": 20, "story": 20, "summary": "A fox betrays his partner the ass to a lion in return for his own safety, and the lion takes them both.", "predicament": "Danger threatens you and a partner, and someone powerful offers to spare you if you hand your partner over.", "moral": null},
{"chunk": 21, "story": 21, "summary": "Flies gorge on spilt honey, stick fast in it and die lamenting their greed.", "predicament": "An easy pleasure is spread out in front of you, and the longer you indulge the harder it will be to get free.", "moral": "Pleasure bought with pains, hurts."},
{"chunk": 22, "story": 22, "summary": "The beasts ask the lioness how many young she bears, and she says only one, but that one a lion.", "predicament": "Others boast of how much they produce and demand to know your numbers, when you produce little but of real quality.", "moral": "The value is in the worth, not in the number."},
{"chunk": 23, "story": 23, "summary": "A farmer warms a frozen snake in his bosom, and it revives and bites him fatally.", "predicament": "Someone known for treachery is down and helpless, and you could take them in and nurse them back to strength.", "moral": "The greatest kindness will not bind the ungrateful."},
{"chunk": 24, "story": 24, "summary": "A man points to a statue of a man strangling a lion, and the lion says a lion would have carved it the other way.", "predicament": "In a dispute over who is stronger, your rival points to evidence that was produced entirely by their own side.", "moral": "One story is good, till another is told."},
{"chunk": 25, "story": 25, "summary": "A bramble tells a pomegranate and an apple tree to stop disputing which is more beautiful in its presence.", "predicament": "Two respected colleagues argue over who is the best, and someone who counts for nothing loudly sets themselves up as judge.", "moral": null},
{"chunk": 26, "story": 26, "summary": "A stork caught in a net with thieving cranes pleads his good character, but the farmer kills him with them.", "predicament": "You are caught alongside people who were doing wrong, and your good character counts for nothing because of the company you kept.", "moral": "Birds of a feather flock together."},
{"chunk": 27, "story": 27, "summary": "A mountain groans as if in labour, crowds gather in dread, and out comes a mouse.", "predicament": "Someone has made a huge commotion about what they are about to produce, and everyone is gathered waiting for the result.", "moral": "Don’t make much ado about nothing."},
{"chunk": 28, "story": 28, "summary": "A bear boasts he loves men so much he never touches their dead, and a fox wishes he spared the living instead.", "predicament": "Someone boasts of their kindness in a way that costs them nothing, while they keep harming those who are still around.", "moral": null},
{"chunk": 29, "story": 29, "summary": "A tortoise begs an eagle to teach her to fly, promising riches, and is dropped and dashed to pieces.", "predicament": "You long for a role quite beyond your nature, and someone offers to lift you into it if you pay well.", "moral": "If men had all they wished, they would be often ruined."},
{"chunk": 30, "story": 30, "summary": "A fox trapped in a well praises the water to a goat, climbs out on the goat's back, and leaves him there.", "predicament": "Someone already in trouble urges you to join them in a venture, praising it highly, and you have not checked the way out.", "moral": "Look before you leap."},
{"chunk": 31, "story": 31, "summary": "A raven envies a swan's whiteness, moves to the lakes to wash, and starves without changing colour.", "predicament": "You envy a colleague's standing and give up the work that feeds you to copy their habits, hoping to become like them.", "moral": "Change of habit cannot alter Nature."},
{"chunk": 32, "story": 32, "summary": "A thirsty pigeon flies at a painted goblet on a signboard and breaks her wings.", "predicament": "You badly need something, and what looks like it has just appeared, so you rush at it without checking that it is real.", "moral": "Zeal should not outrun discretion."},
{"chunk": 33, "story": 33, "summary": "A dog lying in a manger snaps at the oxen to stop them eating hay he cannot eat himself.", "predicament": "Something you cannot use yourself sits under your control, and the people who need it are waiting for you to let them have it.", "moral": null},
{"chunk": 34, "story": 34, "summary": "Oxen hauling a wagon rebuke the creaking axles for complaining when it is the oxen doing the work.", "predicament": "You carry the heaviest share of the work in silence, while someone who does far less complains loudly about the strain.", "moral": "Those who suffer most cry out the least."},
{"chunk": 35, "story": 35, "summary": "Cranes learn a farmer's sling is only for show and ignore it, until he loads it with stones and kills many.", "predicament": "Someone in charge has threatened you many times without following through, and you have started to ignore the threats.", "moral": "If words suffice not, blows must follow."},
{"chunk": 36, "story": 36, "summary": "An old lion feigns sickness and eats his visitors, until the fox notices tracks going in and none coming out.", "predicament": "A powerful person asks you to come in close to talk, and you notice that others who went in never came back.", "moral": "He is wise who is warned by the misfortunes of others."},
{"chunk": 37, "story": 37, "summary": "One traveller climbs a tree and leaves his friend to face a bear, and the friend later says the bear warned him against such companions.", "predicament": "When trouble struck, your companion saved themselves and left you to face it alone, and now they joke about it.", "moral": "Misfortune tests the sincerity of friends."},
{"chunk": 38, "story": 38, "summary": "A fox who lost his tail urges all the other foxes to cut theirs off, and one sees through him.", "predicament": "Someone who has suffered a loss urges everyone to give up the same thing, claiming it is an improvement for all.", "moral": null},
{"chunk": 39, "story": 39, "summary": "A cat accuses a cock of crowing at night to justify eating him, and eats him despite his defence.", "predicament": "Someone with power over you has already decided to be rid of you and is only looking for a respectable excuse.", "moral": null},
{"chunk": 40, "story": 40, "summary": "A wolf disguised in a sheep's skin is shut in the fold and killed by the shepherd who takes him for mutton.", "predicament": "You have disguised yourself as one of the harmless crowd to get what you want, and now you are treated exactly like them.", "moral": "Harm seek, harm find."},
{"chunk": 41, "story": 41, "summary": "A goatherd breaks a stray goat's horn with a stone and begs it not to tell his master, and the goat says the horn will speak.", "predicament": "You have damaged something in your care and ask a witness to keep quiet, but the damage itself will be plain to see.", "moral": "Do not attempt to hide things which cannot be hid."},
{"chunk": 42, "story": 42, "summary": "A returned traveller boasts of a great leap made abroad, and a bystander tells him to leap it here.", "predicament": "You have been boasting of a feat done far away with witnesses, and someone asks you to do it again right here.", "moral": null},
{"chunk": 43, "story": 43, "summary": "A woodcutter agrees to let a lion court his daughter if he gives up his teeth and claws, then drives him off.", "predicament": "Someone you fear demands something you cannot refuse outright, so you set a condition that will leave them harmless.", "moral": null},
{"chunk": 44, "story": 44, "summary": "A miser's buried gold is stolen, and a neighbour tells him a stone in the hole would serve him just as well.", "predicament": "Wealth you hoarded and never used has been taken from you, and someone points out you were no poorer before.", "moral": null}
]
@@ -0,0 +1,49 @@
[
{"chunk": 45, "story": 45, "summary": "A pig squeals when the shepherd seizes him, and tells the complaining sheep and goat that they are handled for wool and milk but he for his life.", "predicament": "Colleagues who are only ever asked for small things scold you for resisting, when what is demanded of you is everything.", "moral": null},
{"chunk": 46, "story": 46, "summary": "A boy grasps so many filberts that he cannot pull his hand out of the pitcher, and is told to take half.", "predicament": "You have grabbed so much at once that you cannot get any of it out, and letting go of half feels like losing.", "moral": "Do not attempt too much at once."},
{"chunk": 47, "story": 47, "summary": "Frogs ask Jupiter for a king, scorn the log and the eel he sends, and are given a heron who eats them.", "predicament": "Your group keeps complaining that its mild leader is too weak and demanding a stronger one from above.", "moral": null},
{"chunk": 48, "story": 48, "summary": "A father who maimed the snake that killed his son offers it peace, and the snake says neither can ever forget.", "predicament": "You and someone you hurt, and who hurt you far worse, both have reason to hate, and you now offer to make peace.", "moral": "No one truly forgets injuries in the presence of him who caused the injury."},
{"chunk": 49, "story": 49, "summary": "A lion woken by a mouse searches his den in fury, and tells a mocking fox it is the mouse's cheek, not the mouse, he resents.", "predicament": "Someone far beneath you has taken a small liberty, and a bystander mocks you for making so much of it.", "moral": "Little liberties are great offenses."},
{"chunk": 50, "story": 50, "summary": "A groom curries his horse all day but sells its oats, and the horse asks to be groomed less and fed more.", "predicament": "Someone responsible for you makes a great show of looking after you while quietly skimming off what you actually need.", "moral": null},
{"chunk": 51, "story": 51, "summary": "A mule refuses to take a little of the struggling ass's load, the ass dies, and the mule must carry all of it and the ass's hide.", "predicament": "A partner struggling under their share asks you to take a little of it, and you could say it is not your job.", "moral": null},
{"chunk": 52, "story": 52, "summary": "An ass envious of the petted lapdog bursts into the house to fawn on his master and is beaten back to the stable.", "predicament": "You work hard while a charming favourite is pampered for doing little, and you are tempted to try the favourite's tricks.", "moral": null},
{"chunk": 53, "story": 53, "summary": "Oxen plot to kill the butchers, but an old ox warns that clumsier ones would replace them.", "predicament": "Your group is set on getting rid of the people who harm it, and you suspect whoever replaces them will be worse.", "moral": "Do not be in a hurry to change one evil for another."},
{"chunk": 54, "story": 54, "summary": "A shepherd boy raises false alarms of a wolf for fun, and when the wolf truly comes nobody answers his cry.", "predicament": "You have raised false alarms before to amuse yourself, and now there is a real crisis and you need everyone to believe you.", "moral": "There is no believing a liar, even when he speaks the truth."},
{"chunk": 55, "story": 55, "summary": "Boys pelting frogs for fun are told by one frog that their sport is death to the frogs.", "predicament": "People above you are amusing themselves at your expense, and what is a game to them is ruin to you.", "moral": null},
{"chunk": 56, "story": 56, "summary": "An ass who lightened his salt load by falling in a stream tries the trick with sponges and doubles his burden.", "predicament": "A shortcut that once lightened your load has been noticed, and you are tempted to try it again.", "moral": null},
{"chunk": 57, "story": 57, "summary": "A biting dog made to wear a warning bell struts proudly with it until an old hound tells him it is a mark of disgrace.", "predicament": "You have been singled out with a mark you take for an honour, and an old hand tells you it is a public warning.", "moral": "Notoriety is often mistaken for fame."},
{"chunk": 58, "story": 58, "summary": "A goatherd feeds stray wild goats better than his own to win them, and they leave, reasoning he would do the same to them.", "predicament": "Someone courting you treats you better than the people who have served them for years, and you wonder what that means for you.", "moral": "Old friends cannot with impunity be sacrificed for new ones."},
{"chunk": 59, "story": 59, "summary": "A greying man courts a young and an old woman, who between them pluck out all his hair.", "predicament": "You are courting two parties who want opposite things from you, and each is quietly remaking you to suit themselves.", "moral": "Those who seek to please everybody please nobody."},
{"chunk": 60, "story": 60, "summary": "A sick stag's many visitors each eat some of his food, so he dies of want rather than illness.", "predicament": "While you are laid low, a stream of well-wishers visits, and each helps themselves to a little of what you need.", "moral": "Evil companions bring more hurt than profit."},
{"chunk": 61, "story": 61, "summary": "A boy stung after touching a nettle gently is told by his mother to grasp it boldly next time.", "predicament": "You approached a prickly problem timidly and got hurt, and someone tells you only a bold, firm grip will work.", "moral": "Whatever you do, do with all your might."},
{"chunk": 62, "story": 62, "summary": "An astronomer gazing at the stars falls into a well, and a neighbour asks why he cannot see what is on earth.", "predicament": "You have been so absorbed in lofty plans that you have fallen into trouble right in front of you, and must call for help.", "moral": null},
{"chunk": 63, "story": 63, "summary": "Wolves persuade the sheep to send away their guard dogs for peace, and then devour the unguarded flock.", "predicament": "Your enemies offer peace if only you dismiss the people who protect you, claiming those protectors are the cause of all trouble.", "moral": null},
{"chunk": 64, "story": 64, "summary": "A cat disguised as a doctor offers to treat ailing birds, who say they will stay well if he goes away.", "predicament": "Someone known to prey on people like you arrives dressed as a helper, offering to fix your troubles if you let them in.", "moral": null},
{"chunk": 65, "story": 65, "summary": "A jackdaw decks himself in others' fallen feathers to be chosen king, and the birds pluck them back.", "predicament": "You are presenting yourself for a top post decked out in achievements borrowed from colleagues, who are about to see it.", "moral": null},
{"chunk": 66, "story": 66, "summary": "A kid on a rooftop taunts a passing wolf, who says it is the roof that mocks him.", "predicament": "You are safely out of reach of someone powerful for the moment, and it is tempting to taunt them while you can.", "moral": "Time and place often give the advantage to the weak over the strong."},
{"chunk": 67, "story": 67, "summary": "A doctor robs a blind old woman while treating her, and when he sues for his fee she says she still cannot see her goods.", "predicament": "Someone you hired has been quietly robbing you while doing the job, and now demands full payment under your agreement.", "moral": null},
{"chunk": 68, "story": 68, "summary": "A mother frog puffs herself up to match the ox that killed her son, and is told she would burst first.", "predicament": "Someone far bigger has crushed one of yours, and you are tempted to puff yourself up to look their equal.", "moral": null},
{"chunk": 69, "story": 69, "summary": "A dying farmer tells his sons treasure lies in the vineyard, and their digging brings a great harvest.", "predicament": "You want those who will take over from you to work as hard as you did, and plain advice will not move them.", "moral": null},
{"chunk": 70, "story": 70, "summary": "A heifer mocks a working ox for his labour and is then led off to be sacrificed while the ox is freed.", "predicament": "An idle favourite mocks you for how hard you work, not seeing why they have been kept free of work.", "moral": null},
{"chunk": 71, "story": 71, "summary": "A victorious cock crows on a wall and is carried off by an eagle, leaving the beaten cock to rule.", "predicament": "You have just beaten your rival, and it is tempting to boast about it from the most exposed place you can find.", "moral": "Pride goes before destruction."},
{"chunk": 72, "story": 72, "summary": "An old warhorse sent to work a mill laments his former glory, and the miller tells him fortune rises and falls.", "predicament": "Age has moved you from a proud post to drudgery, and you keep bemoaning what you had to whoever will listen.", "moral": null},
{"chunk": 73, "story": 73, "summary": "A jealous fox leads the newly elected monkey king into a trap, then mocks him as unfit to rule.", "predicament": "You have just been raised to a high post, and a jealous colleague brings you a tempting windfall they say they kept for you.", "moral": null},
{"chunk": 74, "story": 74, "summary": "A soldier pampers his horse in war, drudges it in peace, and finds it cannot carry him when war returns.", "predicament": "Someone valued you highly in a crisis, worked you into the ground when it passed, and now needs you at your best again.", "moral": null},
{"chunk": 75, "story": 75, "summary": "The limbs rebel against the idle-seeming belly and stop feeding it, and the whole body weakens.", "predicament": "You and your fellow workers resent a part of the organisation that seems to do nothing, and are tempted to stop supplying it.", "moral": null},
{"chunk": 76, "story": 76, "summary": "Maids kill the cock that wakes their mistress early, and she wakes them even earlier.", "predicament": "Your boss works you too early and too long, and you could get rid of the thing that sets the pace.", "moral": null},
{"chunk": 77, "story": 77, "summary": "A vine cropped by a goat says she will provide the wine poured over him at his sacrifice.", "predicament": "Someone is stripping you bare without cause, and you know that in time you will have a hand in their downfall.", "moral": null},
{"chunk": 78, "story": 78, "summary": "A monkey presents her ugly baby for the beauty prize and, laughed at, says he is the most beautiful to her.", "predicament": "You have put forward work of your own that everyone laughs at, and you are sure it is the best there is.", "moral": null},
{"chunk": 79, "story": 79, "summary": "Pigeons invite a hawk to protect them from a kite, and he kills more of them in a day than the kite did in a year.", "predicament": "Threatened by one predator, your group is ready to invite a powerful protector inside who may prove far worse.", "moral": "Avoid a remedy that is worse than the disease."},
{"chunk": 80, "story": 80, "summary": "A sprat offers to reconcile warring dolphins and whales, who say they would rather be destroyed than accept him.", "predicament": "Two powerful factions are at war, and you, a nobody, offer to step in and settle their quarrel.", "moral": null},
{"chunk": 81, "story": 81, "summary": "A swallow nests in the wall of a court of justice, and her young are eaten by a serpent there.", "predicament": "You trusted the one place meant to protect everyone's rights, and it is exactly there that you have been wronged.", "moral": null},
{"chunk": 82, "story": 82, "summary": "An earthen pot floating downstream begs a brass pot to keep away, since any touch would break her.", "predicament": "Someone much stronger than you wants to travel alongside you, and even friendly contact could break you.", "moral": "Equals make the best friends."},
{"chunk": 83, "story": 83, "summary": "A shepherd raises a wolf cub to steal lambs from neighbours, and it warns him to watch his own flock.", "predicament": "You have trained someone to take advantage of others for you, and they have just hinted they could do the same to you.", "moral": null},
{"chunk": 84, "story": 84, "summary": "A crab tells her son to walk straight, and he asks her to show him how.", "predicament": "You are correcting a junior for a fault you plainly share, and they ask you to demonstrate the right way.", "moral": "Example is more powerful than precept."},
{"chunk": 85, "story": 85, "summary": "A father's two daughters, married to a gardener and a tile-maker, wish for rain and for sun, and he cannot back both.", "predicament": "Two people you care for equally need opposite outcomes, and whichever you support you will be working against the other.", "moral": null},
{"chunk": 86, "story": 86, "summary": "A mother praises her son's first small thefts, and on his way to execution he bites her ear for not stopping him.", "predicament": "Someone in your charge has brought you a small ill-gotten gain, and you could praise it or stop it now.", "moral": null},
{"chunk": 87, "story": 87, "summary": "A weary old woodcutter calls for Death, and when Death comes asks only for help lifting his load.", "predicament": "Worn out, you have loudly wished to be done with it all, and now the chance to quit is actually offered.", "moral": null},
{"chunk": 88, "story": 88, "summary": "A fir scorns a useless bramble, which reminds it of the axes waiting to fell the useful.", "predicament": "Someone important sneers that you are of no use, and you know their usefulness is exactly what marks them to be cut down.", "moral": "Better poverty without care, than riches with."},
{"chunk": 89, "story": 89, "summary": "A buyer of a black servant, thinking his colour is dirt, scrubs him incessantly and only gives him a cold.", "predicament": "You have taken someone on convinced that their nature is a fault you can scrub away, and your efforts are only hurting them.", "moral": "What’s bred in the bone will stick to the flesh."},
{"chunk": 90, "story": 90, "summary": "A frog ties a mouse's foot to his own and drowns him, and a hawk carries off both.", "predicament": "A new acquaintance proposes binding your fortunes tightly together, and you would be on their ground, not yours.", "moral": "Harm hatch, harm catch."},
{"chunk": 91, "story": 91, "summary": "A fisherman's net holds the large fish, but the small ones slip back through the meshes.", "predicament": "A sweep that catches the big players lets the small ones slip away, and you are either doing the sweeping or being swept.", "moral": null}
]
@@ -0,0 +1,48 @@
[
{"chunk": 92, "story": 92, "summary": "A wounded wolf asks a passing sheep to fetch him water, and the sheep sees he would make her the meat as well.", "predicament": "Someone known to prey on people like you is laid up and asks you for a small favour that would bring you within reach.", "moral": "Hypocritical speeches are easily seen through."},
{"chunk": 93, "story": 93, "summary": "An old woman sniffs an empty wine jar and praises how fine the wine must have been.", "predicament": "Only the faint trace of someone's good work is left behind, and you find yourself still admiring what it must have been.", "moral": "The memory of a good deed lives."},
{"chunk": 94, "story": 94, "summary": "A man bitten by a dog is advised to feed the dog bread dipped in his blood, and says that would invite every dog to bite him.", "predicament": "Someone who hurt you could be soothed with a reward, and you are advised that appeasing them is the cure.", "moral": "Benefits bestowed upon the evil-disposed increase their means of injuring you."},
{"chunk": 95, "story": 95, "summary": "A huntsman and a fisherman swap their catches daily until a neighbour warns that habit will spoil the pleasure.", "predicament": "An exchange with a partner has pleased you both so much that you repeat it daily, and someone warns it will soon go stale.", "moral": "Abstain and enjoy."},
{"chunk": 96, "story": 96, "summary": "A fox flatters a crow's beauty and doubts her voice, so she caws and drops her meat to him.", "predicament": "Someone who wants what you hold praises you lavishly, then hints at one doubt you would have to prove wrong by speaking up.", "moral": null},
{"chunk": 97, "story": 97, "summary": "A poor widow shears her sheep herself to save the fee and cuts his flesh with the wool.", "predicament": "To save an expert's fee you are doing a skilled job yourself, and you are hurting the thing you meant to profit from.", "moral": "The least outlay is not always the greatest gain."},
{"chunk": 98, "story": 98, "summary": "An ass dances on the roof and is beaten, protesting that everyone laughed when the monkey did it.", "predicament": "You copied a favourite's antics that everyone applauded, and are being punished for exactly what they were praised for.", "moral": null},
{"chunk": 99, "story": 99, "summary": "A hunted stag hides in an ox-stall, escapes the servants' notice, and is found by the sharp-eyed master.", "predicament": "You are hiding from trouble in a place you should not be, the careless have passed you by, and the sharp-eyed boss is coming.", "moral": null},
{"chunk": 100, "story": 100, "summary": "A hound complains that the housedog feasts on his catch, and the housedog tells him to blame the master who taught him so.", "predicament": "You do the hard work while a colleague enjoys its rewards, and they say the fault lies with the boss who arranged it.", "moral": "Children are not to be blamed for the faults of their parents."},
{"chunk": 101, "story": 101, "summary": "A lion and a wild ass hunt together, and the lion takes all three shares by rank, partnership and threat.", "predicament": "You went into a venture with a far more powerful partner, and now they are dividing the proceeds entirely their own way.", "moral": "Might makes right."},
{"chunk": 102, "story": 102, "summary": "A lion allies with a dolphin, and when the dolphin cannot come ashore to help him fight, calls him a traitor.", "predicament": "An impressive ally from another field swore friendship with you, and now you need help they have no means to give.", "moral": null},
{"chunk": 103, "story": 103, "summary": "An eagle is mortally shot with an arrow fledged with his own feathers.", "predicament": "You are being brought down by a rival who is using the very tools, ideas or people you supplied them.", "moral": null},
{"chunk": 104, "story": 104, "summary": "A dying kite asks his mother to pray for him, and she asks which god he has not robbed.", "predicament": "In your hour of need you look for someone to speak up for you, and realise you have cheated everyone who could.", "moral": "We must make friends in prosperity if we would have their help in adversity."},
{"chunk": 105, "story": 105, "summary": "A lion and a boar fighting over a well see vultures waiting and make peace.", "predicament": "You and a rival are fighting over something small, and you notice others waiting to pick over whoever loses.", "moral": null},
{"chunk": 106, "story": 106, "summary": "The mice agree to bell the cat, but none will volunteer to do it.", "predicament": "Everyone agrees a clever plan to deal with the danger, and the only question left is who will risk carrying it out.", "moral": null},
{"chunk": 107, "story": 107, "summary": "A one-eyed doe watches the land and is shot from the sea she thought safe.", "predicament": "You have guarded carefully against the threat you expect, and turned your back entirely on the side you assume is safe.", "moral": null},
{"chunk": 108, "story": 108, "summary": "Mice appoint generals who wear conspicuous plumes, and in the rout the generals cannot fit into their holes and are eaten.", "predicament": "You have been promoted and given marks of rank, and when things go wrong those marks may be exactly what trap you.", "moral": "The more honour the more danger."},
{"chunk": 109, "story": 109, "summary": "A shepherd sells his flock to trade dates by sea, loses all in a storm, and later sneers that the calm sea wants more dates.", "predicament": "A calm opening tempts you to sell what you have and stake it all on a trade you do not know.", "moral": null},
{"chunk": 110, "story": 110, "summary": "An ass sees a lion flee at a cock's crow, chases the lion himself, and is torn apart.", "predicament": "You saw someone powerful back down before another person, and are tempted to think they will back down before you too.", "moral": "False confidence often leads into danger."},
{"chunk": 111, "story": 111, "summary": "The rivers complain the sea makes them salty, and the sea tells them to stop flowing into it.", "predicament": "People who keep choosing to join you complain that you change them, and are trying to lay the blame on you.", "moral": null},
{"chunk": 112, "story": 112, "summary": "A boar whets his tusks with no enemy in sight, saying there is no time to sharpen them once attacked.", "predicament": "Things are quiet with no threat in sight, and someone asks why you are spending effort preparing for trouble.", "moral": "To be well prepared for war is the best guarantee of peace."},
{"chunk": 113, "story": 113, "summary": "A milkmaid counts the future profits of her milk, tosses her head at imagined suitors, and spills the pail.", "predicament": "You are carrying your only real asset while already spending, in your head, everything you hope it will turn into.", "moral": null},
{"chunk": 114, "story": 114, "summary": "A bee asks Jupiter for a deadly sting, and gets one that kills her if she uses it.", "predicament": "A powerful patron has promised you any favour, and you are tempted to ask for the power to punish anyone touching what is yours.", "moral": "Evil wishes, like chickens, come home to roost."},
{"chunk": 115, "story": 115, "summary": "A lean wolf admires a well-fed dog until he sees the heavy collar and log, and wants none of it.", "predicament": "A well-fed insider shows you how comfortably their employer keeps them, and you notice the chain they wear for it.", "moral": null},
{"chunk": 116, "story": 116, "summary": "A besieged city asks how to defend itself, and the bricklayer, carpenter and currier each propose their own trade.", "predicament": "In a crisis everyone is asked for the best solution, and each expert recommends exactly what they happen to sell.", "moral": "Every man for himself."},
{"chunk": 117, "story": 117, "summary": "An ass carrying a sacred image thinks the crowd bows to him and balks, until the driver's whip corrects him.", "predicament": "People bow as you pass, and you are tempted to believe it is for you rather than for what you happen to carry.", "moral": "They are not wise who give to themselves the credit due to others."},
{"chunk": 118, "story": 118, "summary": "A storm-bound man kills his sheep, goats and then his oxen, and his dogs flee reasoning they are next.", "predicament": "In hard times your employer has sacrificed even the people who earn for them, and you wonder how long before it is you.", "moral": "He is not to be trusted as a friend who mistreats his own family."},
{"chunk": 119, "story": 119, "summary": "An old hound loses his grip on a boar and, abused by his master, asks to be praised for what he was.", "predicament": "Age has cost you the ability you were known for, and your boss is berating you for failing at it.", "moral": null},
{"chunk": 120, "story": 120, "summary": "A traveller says 'I' found the axe but 'we' are undone when the owner comes, and his companion holds him to 'I'.", "predicament": "A companion kept a find to themselves, and now that it has brought trouble they want you to share the blame.", "moral": "He who shares the danger ought to share the prize."},
{"chunk": 121, "story": 121, "summary": "A dying old lion is struck by the boar and the bull, and then kicked by the ass.", "predicament": "Once powerful, you are now weak, and even the least of those you once ruled are lining up to strike at you.", "moral": null},
{"chunk": 122, "story": 122, "summary": "A wolf sees shepherds eating mutton and remarks on the outcry there would be if he did the same.", "predicament": "The people who condemn you for something are openly doing the very same thing themselves.", "moral": null},
{"chunk": 123, "story": 123, "summary": "Travellers wait for what they think is a ship, and it turns out to be a bundle of sticks.", "predicament": "You have waited a long while for something that looked grand from far away, and it is shrinking as it comes closer.", "moral": "Our mere anticipations of life outrun its realities."},
{"chunk": 124, "story": 124, "summary": "A traveller and the ass's owner fight over who hired the ass's shadow, and the ass runs off.", "predicament": "You and a client are locked in a bitter dispute over a technicality while the thing you both needed slips away.", "moral": "In quarreling about the shadow we often lose the substance."},
{"chunk": 125, "story": 125, "summary": "An overworked ass keeps asking for a new master and each is worse, ending with a tanner.", "predicament": "You are unhappy with your boss and could ask for a transfer, though you have asked before and each move was worse.", "moral": null},
{"chunk": 126, "story": 126, "summary": "Mercury in disguise asks a sculptor the price of his own statue, expecting it to be highest, and is offered it free.", "predicament": "You go incognito to find out how highly people rate you, expecting to hear you are the most valued of all.", "moral": null},
{"chunk": 127, "story": 127, "summary": "A woodcutter hides a fox but points to it while denying it, and the fox leaves without thanks.", "predicament": "Someone claims you owe them for protecting you, when their words protected you and their gestures quietly gave you away.", "moral": null},
{"chunk": 128, "story": 128, "summary": "An uprooted oak asks the reeds how they survive the wind, and they say they bend rather than fight.", "predicament": "A force far stronger than you is sweeping through, and you could stand rigid against it or bend until it passes.", "moral": "Stoop to conquer."},
{"chunk": 129, "story": 129, "summary": "A farmer shuts a lion in his farmyard, loses his flocks, and has to let it go.", "predicament": "You have a chance to trap someone far more dangerous than you, but you would be locked in with them.", "moral": null},
{"chunk": 130, "story": 130, "summary": "A lion takes a stolen lamb from a wolf, who protests the injustice, and the lion jeers at his claim.", "predicament": "Someone stronger has taken from you something you had taken dishonestly yourself, and you want to protest.", "moral": null},
{"chunk": 131, "story": 131, "summary": "A birdcatcher spares his decoy partridge and his cock after each pleads usefulness, but still must feed his guest.", "predicament": "Your boss needs to cut someone and you plead how useful you are, but the need is pressing and must be met somehow.", "moral": "Necessity knows no law."},
{"chunk": 132, "story": 132, "summary": "A dove saves a drowning ant with a leaf, and the ant later stings a birdcatcher to save the dove.", "predicament": "Someone you once helped for nothing sees a threat to you coming that you cannot see, and has a chance to repay you.", "moral": null},
{"chunk": 133, "story": 133, "summary": "Despairing hares rush to drown themselves, see frogs flee from them, and take heart.", "predicament": "You feel so weak and harried that you are ready to give up entirely, and then notice others who fear even you.", "moral": null},
{"chunk": 134, "story": 134, "summary": "A monkey copies the fishermen's netting, gets tangled and drowns.", "predicament": "You have watched experts do a job and are about to try it yourself with their tools, having never learned how.", "moral": null},
{"chunk": 135, "story": 135, "summary": "A swan seized by mistake for the goose sings and is known and spared.", "predicament": "In the dark you have been mistaken for someone marked to be cut, and only showing your one real talent will set it right.", "moral": null},
{"chunk": 136, "story": 136, "summary": "A doe escaping hunters takes refuge in a lion's cave and is killed there.", "predicament": "Fleeing one danger, you are about to take shelter with someone who may be far more dangerous than what chases you.", "moral": "In avoiding one evil, care must be taken not to fall into another."},
{"chunk": 137, "story": 137, "summary": "A fisherman refuses to release a small fish that promises to be worth more when grown.", "predicament": "Someone you have caught asks you to let them go now, promising you a much bigger return later.", "moral": null}
]
@@ -0,0 +1,49 @@
[
{"chunk": 138, "story": 138, "summary": "A timid hunter asks a woodman for the lion's tracks and, offered the lion itself, says he only wanted the tracks.", "predicament": "You have talked boldly about tackling a formidable opponent, and someone offers to take you to face them right now.", "moral": "The hero is brave in deeds as well as words."},
{"chunk": 139, "story": 139, "summary": "A fox gorges on food left in a hollow tree and is too swollen to get out.", "predicament": "You helped yourself so freely to what was lying unguarded that you can no longer get out of the position it put you in.", "moral": null},
{"chunk": 140, "story": 140, "summary": "Two frogs seeking a new home find a deep well, and one asks how they would get out if it dried up.", "predicament": "You and a partner must move, and an attractive opening has appeared that would be very hard to leave if it failed.", "moral": "Do nothing without a regard to the consequences."},
{"chunk": 141, "story": 141, "summary": "A flaring lamp boasts it outshines the sun and is blown out by a gust.", "predicament": "You are shining brightly just now and are tempted to claim you outshine the people who truly lead.", "moral": null},
{"chunk": 142, "story": 142, "summary": "A camel-driver asks his camel whether it would rather go uphill or down, and the camel asks whether the level road is closed.", "predicament": "Your boss offers you a choice between two hard assignments, as if the easy option you both know exists were not there.", "moral": null},
{"chunk": 143, "story": 143, "summary": "A miller and his son change how they travel with their ass at every passer-by's criticism until they lose the ass in the river.", "predicament": "Every passer-by criticises how you are doing the job, and each time you change it to please them, a new critic appears.", "moral": null},
{"chunk": 144, "story": 144, "summary": "A cat pretends to be dead on a peg to lure the mice, and one says it will not come near her even if she turns into a sack.", "predicament": "Someone who has already done you harm now appears harmless, even lifeless, and is plainly waiting for you to come out.", "moral": null},
{"chunk": 145, "story": 145, "summary": "A mouse bites a bull, hides in its hole, and bites him again while he sleeps.", "predicament": "Someone powerful is furious with you but cannot reach you where you are safe, and you could sting them again.", "moral": null},
{"chunk": 146, "story": 146, "summary": "A dog invited by a friend to his master's feast is thrown out by the cook and pretends he was too drunk to remember.", "predicament": "An insider invited you to help yourself at their employer's expense, and you were thrown out and must explain it to your peers.", "moral": null},
{"chunk": 147, "story": 147, "summary": "Thieves steal a cock who pleads he wakes men to work, and they say that is why he must die.", "predicament": "You plead your usefulness to people you have fallen among, not seeing that your usefulness is exactly what they cannot stand.", "moral": "The safeguards of virtue are hateful to those with evil intentions."},
{"chunk": 148, "story": 148, "summary": "Trained monkeys dance like courtiers until someone throws nuts and they brawl for them.", "predicament": "Your team has learned to perform with polish, and a rival is about to toss something in front of them to expose them.", "moral": null},
{"chunk": 149, "story": 149, "summary": "A farmer takes revenge on a fox by setting its tail alight, and it runs through his own wheat.", "predicament": "You finally have the person who has been robbing you at your mercy, and your revenge could easily burn your own harvest.", "moral": null},
{"chunk": 150, "story": 150, "summary": "Fortune wakes a traveller asleep on a well's brink, lest she be blamed for his fall.", "predicament": "You are careless in a dangerous spot, and if you come to grief you will blame bad luck rather than yourself.", "moral": "Everyone is more or less master of his own fate."},
{"chunk": 151, "story": 151, "summary": "A seagull bursts its gullet on too large a fish, and a kite says a bird of the air should not feed from the sea.", "predicament": "You have taken on far more than you can manage in a field that is not yours, and it is tearing you apart.", "moral": "Every man should be content to mind his own business."},
{"chunk": 152, "story": 152, "summary": "A lion and a bear fight over a kid until both are exhausted, and a fox runs off with it.", "predicament": "You and a powerful rival are exhausting each other over one prize, while someone else circles waiting to walk off with it.", "moral": "It sometimes happens that one man has all the toil, and another all the profit."},
{"chunk": 153, "story": 153, "summary": "A philosopher decrying Providence for drowning the innocent with the guilty tramples an anthill for one sting.", "predicament": "You are loudly condemning those above for punishing many for one person's fault, and you have just done the same to those below.", "moral": null},
{"chunk": 154, "story": 154, "summary": "A peasant frees an eagle, which later snatches his bundle to lure him from under a wall that then falls.", "predicament": "Someone you once freed from a trap suddenly snatches something of yours, and you are angry without knowing why they did it.", "moral": null},
{"chunk": 155, "story": 155, "summary": "A leopard and a fox dispute their beauty, and the fox says his is in the mind.", "predicament": "A colleague shows off their visible credentials one by one to prove they are the better, and you have only your wits.", "moral": null},
{"chunk": 156, "story": 156, "summary": "A lion leaves a sleeping hare to chase a hart, loses the hart, and returns to find the hare gone.", "predicament": "You have an easy win within reach, and a bigger, faster prize has just run past that you could chase instead.", "moral": null},
{"chunk": 157, "story": 157, "summary": "A poor carpenter smashes the idol that never helped him, and gold pours out of its head.", "predicament": "You have courted a patron respectfully for years with nothing to show, and anger tempts you to smash the relationship.", "moral": null},
{"chunk": 158, "story": 158, "summary": "A lion eats the ass who divided their spoil equally, and the fox, having learned, leaves himself a morsel.", "predicament": "A powerful partner asks you to divide the spoils, and you have just seen what happened to the last one who divided them fairly.", "moral": "Happy is the man who learns from the misfortunes of others."},
{"chunk": 159, "story": 159, "summary": "A bull hiding from a lion in a cave is butted by a goat, and says he will answer once the lion is gone.", "predicament": "While you are sheltering from a bigger threat, someone lesser takes the chance to attack you, knowing you cannot answer yet.", "moral": "It shows an evil disposition to take advantage of a friend in distress."},
{"chunk": 160, "story": 160, "summary": "A bald knight's wig blows off during a hunt, and he joins the laughter with a joke.", "predicament": "Something you were hiding about yourself has just been exposed in front of your companions, and everyone is laughing.", "moral": null},
{"chunk": 161, "story": 161, "summary": "The oaks complain they are always felled, and Jupiter says it is because they are so useful.", "predicament": "You complain that you are always picked for the hardest jobs, and are told it is because you are so good at them.", "moral": null},
{"chunk": 162, "story": 162, "summary": "A monkey mother smothers her favourite twin with love while the neglected one thrives.", "predicament": "You lavish all your care on one favourite protege and neglect another, and your attention may be what harms the favourite.", "moral": "The best intentions will not always ensure success."},
{"chunk": 163, "story": 163, "summary": "A hound gives up chasing a hare and, mocked, says he ran for a dinner but the hare for his life.", "predicament": "Someone mocks you for losing to a weaker rival, but they were fighting for everything and you only for a little.", "moral": null},
{"chunk": 164, "story": 164, "summary": "A shepherd is about to shut a wolf in the fold, and his dog asks how the sheep can then be safe.", "predicament": "Your boss is about to bring a known predator into the team, and you are the one placed to say so.", "moral": null},
{"chunk": 165, "story": 165, "summary": "An oak split by wedges cut from its own branches grieves more at them than at the axe.", "predicament": "You are being broken apart by people who came from your own side, and it hurts more than any outside attack.", "moral": "Misfortunes springing from ourselves are the hardest to bear."},
{"chunk": 166, "story": 166, "summary": "A snake tormented by a wasp puts its head under a wagon wheel so they die together.", "predicament": "Someone is tormenting you without pause and you cannot shake them, and you could take them down with you.", "moral": null},
{"chunk": 167, "story": 167, "summary": "A peacock mocks a plain crane's plumage, and the crane says he flies to the heavens while the peacock walks the dunghill.", "predicament": "A showy colleague mocks your plain appearance in front of others, and you could answer with what you can actually do.", "moral": "Fine feathers don’t make fine birds."},
{"chunk": 168, "story": 168, "summary": "A couple kill their hen that lays golden eggs to get the gold inside and find nothing.", "predicament": "Something steadily brings you a small, sure return, and you are tempted to break it open to get everything at once.", "moral": null},
{"chunk": 169, "story": 169, "summary": "An ass who falls in a pond groans, and the frogs ask what he would do if he lived there always.", "predicament": "You are making a great fuss about a small setback in front of people who live with far worse every day.", "moral": "Men often bear little grievances with less courage than they do large misfortunes."},
{"chunk": 170, "story": 170, "summary": "A crow jealous of the raven's standing as an omen caws at travellers, who dismiss her cry.", "predicament": "Envying a colleague whose word carries weight, you are tempted to speak up as if yours carried the same.", "moral": "Those who assume a character which does not belong to them, only make themselves ridiculous."},
{"chunk": 171, "story": 171, "summary": "The trees give a man a young ash for his axe handle, and he fells the great trees with it.", "predicament": "Someone asks your group to give up just one small, junior member, and that concession is what they need to cut down the rest.", "moral": null},
{"chunk": 172, "story": 172, "summary": "Wolves urge the sheepdogs to betray the flock and live as brothers, and then tear the dogs apart.", "predicament": "Rivals flatter you as one of their own and urge you to hand over what you guard and share the spoils with them.", "moral": null},
{"chunk": 173, "story": 173, "summary": "A lioness mourns her cub killed by a bull, and a hunter reminds her how many she has made mourn.", "predicament": "You are loudly grieving a loss, and someone reminds you how many people have suffered the same at your hands.", "moral": null},
{"chunk": 174, "story": 174, "summary": "A lion wounded by a bowman's arrow flees, saying he dare not face the man if that is his messenger.", "predicament": "An opponent's first warning shot has already hurt you badly, and an adviser urges you not to give up at the first blow.", "moral": "Be on guard against men who can strike from a distance."},
{"chunk": 175, "story": 175, "summary": "Men first flee the huge camel, then, finding it meek, bridle it and let a child drive it.", "predicament": "People who once feared you have noticed you never push back, and are growing bolder by the day.", "moral": "Use serves to overcome dread."},
{"chunk": 176, "story": 176, "summary": "A crab that moved inland to feed is eaten by a fox and blames himself for leaving the sea.", "predicament": "You left the field you are made for to chase better prospects elsewhere, and now you are exposed and out of your depth.", "moral": "Contentment with our lot is an element of happiness."},
{"chunk": 177, "story": 177, "summary": "An ass refuses to flee the enemy with his master, since any master will load him the same.", "predicament": "Your boss urges you to fight off a takeover, and you suspect any new owner would work you exactly the same.", "moral": "In a change of government the poor change nothing beyond the name of their master."},
{"chunk": 178, "story": 178, "summary": "A wounded fox refuses to have the sated flies driven off, lest hungrier ones replace them.", "predicament": "Someone offers to rid you of the people draining you, but those ones are already well fed and hungrier ones would follow.", "moral": null},
{"chunk": 179, "story": 179, "summary": "A woman doubles her hen's feed to get two eggs a day, and it grows fat and stops laying.", "predicament": "A reliable source gives you a steady return, and you are thinking of pushing extra into it to double what it produces.", "moral": null},
{"chunk": 180, "story": 180, "summary": "Kites that could once sing try to neigh like horses and lose their song.", "predicament": "You are so taken with a colleague's style that you are trying to copy it, and your own gift is starting to fade.", "moral": "The desire for imaginary benefits often involves the loss of present blessings."},
{"chunk": 181, "story": 181, "summary": "A hound alternately bites and fawns on a hare, who asks him to show his true colours.", "predicament": "Someone alternately attacks you and flatters you, and you cannot tell whether to treat them as friend or enemy.", "moral": "No one can be a friend if you know not whether to trust or distrust him."},
{"chunk": 182, "story": 182, "summary": "Hares at war with eagles ask the foxes for help, who decline knowing both sides.", "predicament": "Someone weak who has picked a fight with the powerful asks you to join their side.", "moral": "Count the cost before you commit yourselves."},
{"chunk": 183, "story": 183, "summary": "A calf offers to show a bull the way through a narrow passage, and the bull says he knew it before the calf was born.", "predicament": "A newcomer offers to show you how to do something you have been doing since before they arrived.", "moral": null},
{"chunk": 184, "story": 184, "summary": "A stag asks a sheep for a loan with the wolf as surety, and the sheep declines, doubting she could ever collect.", "predicament": "Someone asks you for a loan and offers as guarantor another person well known for taking what they want and vanishing.", "moral": "Two blacks do not make one white."}
]
@@ -0,0 +1,45 @@
[
{"chunk": 185, "story": 185, "summary": "A cat tells an eagle and a sow each that the other plans to kill her young, and both starve in fear while the cat feeds.", "predicament": "A colleague privately warns you that your neighbour is plotting against you, and you suspect they said the same to your neighbour.", "moral": null},
{"chunk": 186, "story": 186, "summary": "A huge wolf nicknamed 'Lion' leaves the wolves to live among lions, and a fox mocks his conceit.", "predicament": "Your peers jokingly call you the equal of those at the top, and you are tempted to leave them and move among the top.", "moral": null},
{"chunk": 187, "story": 187, "summary": "An idle, overfed mule boasts he is a racer's son, and after a long hard journey decides his father was an ass.", "predicament": "After an easy spell you have been boasting of your pedigree and speed, and tomorrow brings a long, hard assignment.", "moral": null},
{"chunk": 188, "story": 188, "summary": "A fortune-teller runs home on hearing his house is being robbed, and a neighbour asks why he did not foresee it.", "predicament": "You make your living advising others on what is coming, and a disaster has just struck you that you failed to foresee.", "moral": null},
{"chunk": 189, "story": 189, "summary": "A frog refuses a friend's invitation to leave his exposed gully for a safe pond and is crushed by a wagon.", "predicament": "A friend urges you to leave your familiar but exposed position for a safer one, and you cannot bring yourself to move.", "moral": "A willful man will have his way to his own hurt."},
{"chunk": 190, "story": 190, "summary": "A countryman frees an eagle from a serpent, and the eagle later knocks away the drink the serpent poisoned.", "predicament": "You stepped in to rescue someone from a dangerous enemy, and that enemy has quietly set a trap for you in return.", "moral": null},
{"chunk": 191, "story": 191, "summary": "A thirsty crow raises the water in a pitcher by dropping in stones one by one.", "predicament": "What you urgently need is just out of reach, and none of the obvious approaches has worked.", "moral": "Necessity is the mother of invention."},
{"chunk": 192, "story": 192, "summary": "A thief frightens an innkeeper with a tale that he turns into a wolf, and makes off with his coat.", "predicament": "A stranger tells you an alarming story and urges you to act at once, and the action would leave your goods in their hands.", "moral": "Every tale is not to be believed."},
{"chunk": 193, "story": 193, "summary": "A hart hidden under a vine eats its leaves once the hunters pass, and is spotted and shot.", "predicament": "Someone sheltered you when you were in danger, and now that the danger seems past you are tempted to help yourself to their things.", "moral": null},
{"chunk": 194, "story": 194, "summary": "A gnat stings a lion into tearing his own face, then is caught and eaten by a spider.", "predicament": "You have just beaten a powerful opponent and are celebrating loudly, not watching for small, patient dangers.", "moral": null},
{"chunk": 195, "story": 195, "summary": "A fox that cannot reach the grapes walks away saying they are sour.", "predicament": "You tried everything to get something you wanted and failed, and people are watching to see how you take it.", "moral": null},
{"chunk": 196, "story": 196, "summary": "A roadside walnut tree is beaten with sticks by passers-by who want its nuts.", "predicament": "The more you give, the more roughly people treat you to get more, and those you feed are the ones doing the damage.", "moral": null},
{"chunk": 197, "story": 197, "summary": "A kid caught by a wolf asks him to pipe a last dance, and the music brings hounds that chase off the wolf.", "predicament": "Someone who has you cornered is enjoying their power, and you could ask for one small favour that might draw help.", "moral": null},
{"chunk": 198, "story": 198, "summary": "A dolphin carrying a monkey from a wreck drowns him when he lies about his noble birth and 'knowing' the Piraeus.", "predicament": "Someone is helping you because they think you are one of their own, and asks questions you can only answer by lying.", "moral": null},
{"chunk": 199, "story": 199, "summary": "A horse accepts a man's bit and saddle to get revenge on a stag, and is enslaved for good.", "predicament": "To get back at a newcomer who shares your territory, someone powerful offers help if you accept their harness.", "moral": null},
{"chunk": 200, "story": 200, "summary": "A jackdaw painted white lives among doves until he chatters, and is then rejected by both doves and jackdaws.", "predicament": "You have disguised yourself as one of a better-fed group to share their benefits, and must keep silent to pass.", "moral": null},
{"chunk": 201, "story": 201, "summary": "A monkey claims a cemetery's monuments honour his ancestors, and a fox notes no ancestor can contradict him.", "predicament": "You are inflating your background to a companion, and they have noticed that nobody who could contradict you is around.", "moral": "A false tale often betrays itself."},
{"chunk": 202, "story": 202, "summary": "A man sends his disliked wife to her father's house, and her report of the herdsmen's looks confirms her effect on everyone.", "predicament": "Someone you are responsible for is disliked by everyone around them, and you want to learn whether it is them or the place.", "moral": "Straws show how the wind blows."},
{"chunk": 203, "story": 203, "summary": "A horse, ox and dog repay a man's shelter by giving the stages of his life their own tempers.", "predicament": "People you took in during hard times want to repay you by shaping you in their own likeness.", "moral": null},
{"chunk": 204, "story": 204, "summary": "A thief throws meat to a housedog, who says the sudden kindness only makes him more watchful.", "predicament": "A stranger showers you with sudden favours just as you are guarding something for your employer.", "moral": null},
{"chunk": 205, "story": 205, "summary": "An ape king rewards a liar's flattery and has his court maul a truthful traveller.", "predicament": "A vain leader asks your honest opinion of them and their court, and has just richly rewarded someone who flattered them.", "moral": null},
{"chunk": 206, "story": 206, "summary": "A fox terrified at first sight of a lion grows bolder each meeting until he chats with him.", "predicament": "You were terrified the first time you met someone very powerful, and each meeting since, you have been growing bolder.", "moral": "Acquaintance softens prejudices."},
{"chunk": 207, "story": 207, "summary": "An old weasel rolls in flour to look like food, and an old mouse sees through it.", "predicament": "Something tempting lies in a dark corner, and you notice that everyone who went for it has vanished.", "moral": null},
{"chunk": 208, "story": 208, "summary": "A drowning boy asks a traveller who scolds him to help first and scold afterwards.", "predicament": "You are in serious trouble and the person who could help is busy lecturing you on how you got there.", "moral": "Counsel without help is useless."},
{"chunk": 209, "story": 209, "summary": "A peacock complains to Juno that he cannot sing, and she tells him each has his own gift.", "predicament": "You are admired for one gift but resent being laughed at for lacking another that a colleague has.", "moral": null},
{"chunk": 210, "story": 210, "summary": "A wolf follows a flock harmlessly for so long that the shepherd leaves him in charge, and he kills the flock.", "predicament": "Someone you once guarded against has behaved so well for so long that you are about to leave them in charge.", "moral": null},
{"chunk": 211, "story": 211, "summary": "Hares argue that all beasts should be equal, and lions say the words lack claws and teeth.", "predicament": "You are arguing before the powerful that everyone should be treated as equals, and you have nothing to back it with.", "moral": null},
{"chunk": 212, "story": 212, "summary": "A man selling an image of Mercury claims it brings wealth, and says he sells because its gifts come too slowly.", "predicament": "You are selling something by promising it makes its owner rich, and a customer asks why you would part with it.", "moral": null},
{"chunk": 213, "story": 213, "summary": "A hawk refuses a nightingale's plea to let him go for larger birds not yet in sight.", "predicament": "You have someone in your power who argues you should let them go and chase a bigger target instead.", "moral": null},
{"chunk": 214, "story": 214, "summary": "A lark stays put while the farmer relies on friends to reap, and moves when he says he will reap himself.", "predicament": "Your boss keeps announcing a shake-up, and you must judge whether they mean it this time or will leave it to others again.", "moral": "Self-help is the best help."},
{"chunk": 215, "story": 215, "summary": "A fox flatters a cock in a tree, who invites him to wake the 'porter' below, and the dog kills the fox.", "predicament": "A stranger known to prey on people like you is praising you warmly and asking to be let in to meet you properly.", "moral": null},
{"chunk": 216, "story": 216, "summary": "Cranes fly off at a birdcatcher's approach, while the heavier geese are caught.", "predicament": "Danger is coming for everyone in your position, and the nimble are already slipping away while you are weighed down.", "moral": null},
{"chunk": 217, "story": 217, "summary": "An ass feigns a thorn in his hoof, and when the wolf goes to pull it he kicks his teeth in.", "predicament": "Someone stronger has you cornered, and you could ask them for a small service that would put them off their guard.", "moral": null},
{"chunk": 218, "story": 218, "summary": "A goat envious of the ass advises him to feign illness, and the goat's lungs are then prescribed to heal him.", "predicament": "Out of envy you are urging a colleague to fake an illness to escape work, and the fallout could land on you.", "moral": null},
{"chunk": 219, "story": 219, "summary": "A lion invites a bull to dine on a sheep, and the bull sees only spits and cauldrons big enough for a bull.", "predicament": "Someone who would gain by your downfall invites you to share a feast, and the preparations look suspiciously large.", "moral": null},
{"chunk": 220, "story": 220, "summary": "A fox finds a lifelike mask in an actor's house and says it is beautiful but has no brains.", "predicament": "An impressive-looking candidate is presented to you, and you notice there seems to be nothing behind the face.", "moral": null},
{"chunk": 221, "story": 221, "summary": "An owl kept awake by a grasshopper flatters her voice and invites her to drink, then kills her.", "predicament": "Someone you have been annoying suddenly praises you and invites you in for a treat, after asking you nicely to stop.", "moral": null},
{"chunk": 222, "story": 222, "summary": "A fowler staring up at a thrush treads on a viper and is fatally stung.", "predicament": "You are so intent on a target you are stalking that you have stopped watching where you are putting your own feet.", "moral": null},
{"chunk": 223, "story": 223, "summary": "A proud horse threatens a laden ass, then broken-winded is put to a dungcart and mocked by the ass.", "predicament": "Someone high in favour sneers at you and your heavy load, and you could answer back or hold your peace.", "moral": null},
{"chunk": 224, "story": 224, "summary": "A lion afraid of three bulls together separates them with sly talk and eats them one by one.", "predicament": "Someone who fears you and your colleagues together is quietly talking each of you into going your own way.", "moral": "Union is strength."},
{"chunk": 225, "story": 225, "summary": "A wolf urges a goat on a cliff to come down to the tender grass, and she knows he wants to eat her.", "predicament": "You hold a secure position, and someone who would profit from your fall urges you down to where the rewards are richer.", "moral": null},
{"chunk": 226, "story": 226, "summary": "A fly on the axle threatens to sting the mule, who says he heeds only the driver.", "predicament": "Someone with no authority over you is loudly telling you to hurry up and threatening you if you do not.", "moral": null},
{"chunk": 227, "story": 227, "summary": "Fishermen rejoice at heavy nets that turn out full of stones, and an old man says sorrow is twin to joy.", "predicament": "You celebrated early over what looked like a huge haul, and it has turned out to be mostly worthless.", "moral": null}
]
@@ -0,0 +1,47 @@
[
{"chunk": 228, "story": 228, "summary": "A country mouse visits his friend's rich town house, is chased from every meal, and goes back to his safe plain fare.", "predicament": "A well-off friend urges you to leave your plain, safe post for their lavish one, where every meal comes with a fright.", "moral": null},
{"chunk": 229, "story": 229, "summary": "An ape judging a wolf's theft charge against a fox rules that the wolf lost nothing and the fox stole anyway.", "predicament": "You must settle a dispute between two people with bad reputations, and you believe neither of their accounts.", "moral": "The dishonest, if they act honestly, get no credit."},
{"chunk": 230, "story": 230, "summary": "Wasps and partridges promise a farmer service for water, and he says his oxen already do it without promises.", "predicament": "Newcomers promise you great service in return for a favour now, while your steady workers already do it without promising.", "moral": null},
{"chunk": 231, "story": 231, "summary": "A father tells his vain son and plain, spiteful daughter both to look in the mirror daily, to mind their conduct.", "predicament": "Two people in your care are at odds, one vain of their gifts and the other spiteful for lacking them, and both appeal.", "moral": null},
{"chunk": 232, "story": 232, "summary": "Dogs tear at a lion's skin, and a fox says they would learn a lion's claws if it were alive.", "predicament": "Someone who once ruled over you is gone for good, and everyone is now bravely tearing into their reputation.", "moral": "It is easy to kick a man that is down."},
{"chunk": 233, "story": 233, "summary": "A blind man feeling a wolf cub cannot say if it is fox or wolf, but knows it must not go in the sheepfold.", "predicament": "You are asked to vouch for a young newcomer whose record is unclear, but whose instincts are plainly those of a predator.", "moral": "Evil tendencies are shown in early life."},
{"chunk": 234, "story": 234, "summary": "A failed cobbler poses as a doctor with a cure-all, and confesses when the governor tests him with 'poison'.", "predicament": "Your reputation as an expert was built on noise rather than skill, and someone powerful is about to test it on you.", "moral": null},
{"chunk": 235, "story": 235, "summary": "A wolf says he left a field of oats untouched for the horse, who says he would not if wolves ate oats.", "predicament": "Someone with a bad reputation makes a show of having saved something for you that they could never have used themselves.", "moral": "Men of evil reputation, when they perform a good deed, fail to get credit for it."},
{"chunk": 236, "story": 236, "summary": "Two enemies on a sinking ship sit at opposite ends, and one is content if his enemy's end sinks first.", "predicament": "You and a bitter enemy are going down together, and you care more about seeing them fall first than about saving yourself.", "moral": null},
{"chunk": 237, "story": 237, "summary": "A partridge pecked by gamecocks thinks it is because he is a stranger, until he sees them fight each other.", "predicament": "You are new and the old hands keep attacking you, and you assume it is because you are an outsider.", "moral": null},
{"chunk": 238, "story": 238, "summary": "A fox reviles a caged lion, who says it is his mischance, not the fox, that insults him.", "predicament": "Someone powerful is trapped by circumstances for now, and it is tempting to insult them while they cannot answer.", "moral": null},
{"chunk": 239, "story": 239, "summary": "A frog proclaims himself a physician, and a fox asks why he cannot cure his own gait and skin.", "predicament": "Someone offers to fix everyone else's problems, while their own obvious failings are there for all to see.", "moral": null},
{"chunk": 240, "story": 240, "summary": "A wolf accuses the absent fox to the sick lion, and the fox prescribes the wolf's warm skin as the cure.", "predicament": "A rival is denouncing you to the boss just as you walk in, and you could turn the boss's anger back on them.", "moral": null},
{"chunk": 241, "story": 241, "summary": "A dog curled against winter cold plans a house, but stretched out in summer thinks one too big a job.", "predicament": "In hard times you resolved to build yourself some security, and now that times are easy it seems too big a job.", "moral": null},
{"chunk": 242, "story": 242, "summary": "The north wind blows in vain to strip a traveller's cloak, and the sun's warmth makes him take it off.", "predicament": "You need someone to give something up, and the harder you push the tighter they cling to it.", "moral": "Persuasion is better than Force."},
{"chunk": 243, "story": 243, "summary": "A crow breaks his vow to Apollo after being freed, and when caught again Mercury will not believe his new vow.", "predicament": "You broke your promise to the last person who got you out of trouble, and now you need a new patron to trust you.", "moral": null},
{"chunk": 244, "story": 244, "summary": "A fox serves a crane soup in a flat dish, and the crane repays him with a narrow-necked jar.", "predicament": "Someone humiliated you with a show of hospitality you could not use, and now it is your turn to host them.", "moral": null},
{"chunk": 245, "story": 245, "summary": "A wolf seeing his long evening shadow thinks he should be king, and a lion kills him.", "predicament": "Things are going so well that you feel bigger than the people above you and start to think you deserve their place.", "moral": null},
{"chunk": 246, "story": 246, "summary": "A bat fights for whichever side, birds or beasts, is winning, and after peace both condemn him.", "predicament": "Two factions are at war, and you could keep switching to whichever side is winning at the moment.", "moral": null},
{"chunk": 247, "story": 247, "summary": "A spendthrift sells his last cloak on seeing an early swallow, and the frost returns.", "predicament": "Having run through almost everything, you see an early sign of good times and are tempted to sell your last safeguard.", "moral": null},
{"chunk": 248, "story": 248, "summary": "A captured trumpeter pleads he carried no weapon, and his captors say his trumpet roused all the others.", "predicament": "You are caught on the losing side and plead that you never did harm yourself, only urged others on.", "moral": null},
{"chunk": 249, "story": 249, "summary": "The birds scorn the owl's warnings about acorns, flax and archers until they come true.", "predicament": "You warned your group early about dangers others could not yet see, and they called you mad.", "moral": null},
{"chunk": 250, "story": 250, "summary": "Driven out by the ills, the goods ask Jupiter for protection, and he sends them to men one at a time.", "predicament": "Troubles keep arriving together while good things come one at a time, and you must learn to spot the good when it comes.", "moral": null},
{"chunk": 251, "story": 251, "summary": "An ass in a lion's skin frightens the foolish beasts until a fox hears him bray.", "predicament": "You have borrowed the trappings of real authority and are enjoying frightening people, and now you meet someone who listens.", "moral": null},
{"chunk": 252, "story": 252, "summary": "A sparrow mocks a hare seized by an eagle and is himself taken by a hawk.", "predicament": "A colleague has just been brought down, and it is tempting to mock them for failing, as if it could not happen to you.", "moral": null},
{"chunk": 253, "story": 253, "summary": "A flea asks why the ox slaves for men, and the ox says he is loved and patted, while a pat means the flea's death.", "predicament": "A freeloader asks why you work so hard for your employer when they themselves take freely and give nothing.", "moral": null},
{"chunk": 254, "story": 254, "summary": "A buyer returns an ass on trial because it at once joined the laziest ass in the yard.", "predicament": "You are new and on trial, and the first thing you do is choose whom to fall in with.", "moral": "A man is known by the company he keeps."},
{"chunk": 255, "story": 255, "summary": "A caged dove boasts of her many young, and a crow says that only means more of them in prison.", "predicament": "You boast of how many people you have brought into the organisation, when all of them are stuck there with you.", "moral": null},
{"chunk": 256, "story": 256, "summary": "A satyr breaks his friendship with a man who blows on his hands to warm them and on his food to cool it.", "predicament": "Your new ally has watched you argue both sides of the same question within a day, and is doubting you.", "moral": null},
{"chunk": 257, "story": 257, "summary": "Momus, made judge of the gods' works, envies and faults all three, and is expelled.", "predicament": "You have been asked to judge between colleagues' work, and your envy is tempting you to find fault with all of it.", "moral": null},
{"chunk": 258, "story": 258, "summary": "A jackdaw envious of an eagle tries to carry off a ram, gets caught in the fleece, and is clipped and given to children.", "predicament": "You watched a star performer pull off a feat and are about to try an even bigger one yourself, without their strength.", "moral": null},
{"chunk": 259, "story": 259, "summary": "An eagle steals her neighbour fox's cub, and later her own young burn in a nest fired by a stolen cinder.", "predicament": "A powerful neighbour who swore friendship has taken something precious from you, and you cannot reach them to answer it.", "moral": null},
{"chunk": 260, "story": 260, "summary": "Every man carries a bag of his neighbours' faults in front and a bigger bag of his own behind.", "predicament": "You see a colleague's faults very clearly and are ready to point them out, without looking at your own.", "moral": "Hence it is that men are quick to see the faults of others, and yet are often blind to their own failings."},
{"chunk": 261, "story": 261, "summary": "A bitch granted a place to whelp later uses her grown pups to bar the shepherd from it.", "predicament": "Someone you let use your space for a while has built up a following and now claims it as their own.", "moral": null},
{"chunk": 262, "story": 262, "summary": "A stag admires his antlers and despises his thin legs, which save him until the antlers catch in a thicket.", "predicament": "You prize your showy strengths and are ashamed of your plain ones, and trouble is coming that will test which matters.", "moral": "What is most truly valuable is often underrated."},
{"chunk": 263, "story": 263, "summary": "A lark born before the earth, with nowhere to bury her father, buries him in her own head.", "predicament": "You owe a duty of respect to someone who has gone, and there is no proper place to pay it but within yourself.", "moral": "Youth’s first duty is reverence to parents."},
{"chunk": 264, "story": 264, "summary": "A gnat asks a bull if he should leave, and the bull says he never noticed him come.", "predicament": "You are making a show of whether to leave, sure your departure will be felt, and you may not have been noticed at all.", "moral": "Some men are of more consequence in their own eyes than in the eyes of their neighbors."},
{"chunk": 265, "story": 265, "summary": "A camel envious of the monkey's applauded dance tries to dance and is driven out.", "predicament": "A colleague's performance has just been loudly applauded, and you are tempted to get up and try to outdo them.", "moral": "It is absurd to ape our betters."},
{"chunk": 266, "story": 266, "summary": "Hungry dogs try to drink a river dry to reach hides in it and burst.", "predicament": "Your group has agreed on a plan to reach something it wants that would require doing the impossible.", "moral": "Attempt not impossibilities."},
{"chunk": 267, "story": 267, "summary": "A hungry jackdaw waits on a fig tree for out-of-season figs to ripen.", "predicament": "You are waiting, hungry, for a promise that is out of season to come good, and someone tells you it never will.", "moral": null},
{"chunk": 268, "story": 268, "summary": "An honest woodman is given gold and silver axes, and a neighbour who lies to get the same loses his own axe.", "predicament": "A colleague was rewarded for honesty in a lucky accident, and you could stage the same accident and claim the reward.", "moral": null},
{"chunk": 269, "story": 269, "summary": "A peasant ignores the pleas of birds to spare his barren tree, but spares it on finding honey inside.", "predicament": "You are about to cut something that has not paid its way, and those who depend on it beg you to spare it.", "moral": "Self-interest alone moves some men."},
{"chunk": 270, "story": 270, "summary": "A soldier who fled a robber returns boasting after his comrade has killed him, and is rebuked.", "predicament": "You ran when your partner was in danger, and now that it is over you are tempted to boast of your courage.", "moral": null},
{"chunk": 271, "story": 271, "summary": "A shepherd shakes down acorns onto his cloak, and the sheep eating them tear it.", "predicament": "The people you work to provide for have carelessly damaged something of yours while taking what you gave them.", "moral": null},
{"chunk": 272, "story": 272, "summary": "The gods choose fruitless trees so as not to seem covetous, and Minerva prefers the olive for its fruit.", "predicament": "Your peers choose honours that look disinterested, and you would rather be known for work that is plainly useful.", "moral": null}
]
@@ -0,0 +1,42 @@
[
{"chunk": 273, "story": 273, "summary": "A wrestler bitten by a flea calls on Hercules, and wonders what help to expect against greater foes if none comes for a flea.", "predicament": "You keep calling on your powerful backer over every small irritation, and wonder whether they will come when it truly matters.", "moral": null},
{"chunk": 274, "story": 274, "summary": "A fox who finds prey for a lion grows jealous of the lion's share, hunts alone, and is caught.", "predicament": "You do the scouting while a stronger partner takes the biggest share, and you are tempted to go it alone.", "moral": null},
{"chunk": 275, "story": 275, "summary": "A traveller meets Truth alone in the desert, who says she left the city because falsehood is now with everyone.", "predicament": "Everyone around you now lies as a matter of course, and speaking plainly has left you entirely on your own.", "moral": null},
{"chunk": 276, "story": 276, "summary": "A murderer fleeing his victim's kin climbs from a lion into a serpent's tree and jumps into a crocodile's river.", "predicament": "Pursued for a real wrong you did, you find every place you run to is more dangerous than the last.", "moral": null},
{"chunk": 277, "story": 277, "summary": "An eagle proposes an alliance, and the lion asks for a surety since the eagle could fly off whenever he likes.", "predicament": "Someone proposes a partnership who could walk away from it at any moment, while you could not.", "moral": "Try before you trust."},
{"chunk": 278, "story": 278, "summary": "An ass bolts for a precipice, and his owner, unable to hold him by the tail, lets go.", "predicament": "Someone you are responsible for is determined to throw themselves at a ruinous course, and holding them back is hurting you both.", "moral": null},
{"chunk": 279, "story": 279, "summary": "A thrush lingers on a myrtle for its berries and is caught by a fowler.", "predicament": "You have been lingering in one pleasant spot because it is so rewarding, and someone has noticed exactly where to find you.", "moral": null},
{"chunk": 280, "story": 280, "summary": "A wolf waits all day at a cottage door after hearing a mother threaten to throw her child out to him.", "predicament": "Someone made an angry threat in your hearing that seemed to promise you a windfall, and you are waiting for them to follow through.", "moral": null},
{"chunk": 281, "story": 281, "summary": "A hen hatches viper eggs, and a swallow warns they will harm everyone, starting with her.", "predicament": "You are carefully nurturing a group of newcomers who, once grown, are likely to turn on everyone, starting with you.", "moral": null},
{"chunk": 282, "story": 282, "summary": "An amaranth envies the rose, who replies that her beauty is brief while the amaranth never fades.", "predicament": "You envy a colleague's dazzling reputation, and they tell you it will not last while your quieter one will.", "moral": null},
{"chunk": 283, "story": 283, "summary": "Travellers resting in a plane tree's shade call it useless, and the tree rebukes them.", "predicament": "People who depend on you every day are, in your hearing, calling you useless because you do not produce anything showy.", "moral": "Some men underrate their best blessings."},
{"chunk": 284, "story": 284, "summary": "A horse refuses the ass a little feed now but promises a sackful later, and the ass does not believe it.", "predicament": "Someone refuses you a small favour now but promises a much larger one later, and you are asked to be grateful.", "moral": null},
{"chunk": 285, "story": 285, "summary": "A crow rides a sheep's back and says she bullies the weak and flatters the strong.", "predicament": "A colleague bullies you freely, and openly admits they would never try it with someone who could bite back.", "moral": null},
{"chunk": 286, "story": 286, "summary": "A slipping fox grabs a bramble for help, is torn by it, and is told he should have known its nature.", "predicament": "In a crisis you grabbed for help from someone known to take advantage of everyone, and they have hurt you.", "moral": null},
{"chunk": 287, "story": 287, "summary": "An ass envies the pampered warhorse until the horse is killed in battle.", "predicament": "You envy how well a favoured colleague is kept, not asking what they are being kept for.", "moral": null},
{"chunk": 288, "story": 288, "summary": "A lion ashamed of fearing a cock finds an elephant terrified of a gnat, and is consoled.", "predicament": "You are strong in every way but one small fear, and it shames you so much that you are ready to give up.", "moral": null},
{"chunk": 289, "story": 289, "summary": "A dog used to eggs swallows an oyster whole and suffers for thinking everything round is an egg.", "predicament": "Something new looks just like what you are used to handling, and you are about to take it on without a second look.", "moral": "They who act without sufficient thought, will often fall into unsuspected danger."},
{"chunk": 290, "story": 290, "summary": "Robbers wound the proud mule carrying treasure and ignore the one carrying grain.", "predicament": "You are proud to carry the most valuable load and make sure everyone hears it, while a colleague carries theirs quietly.", "moral": null},
{"chunk": 291, "story": 291, "summary": "A lamb fleeing a wolf into a temple says being sacrificed there is better than being eaten by him.", "predicament": "Someone chasing you warns that the refuge you are running to will be no kinder to you than they would be.", "moral": null},
{"chunk": 292, "story": 292, "summary": "A partridge offers to lure other partridges if spared, and the fowler kills him for it.", "predicament": "You have been caught, and you could save yourself by offering to deliver your colleagues to the one who caught you.", "moral": null},
{"chunk": 293, "story": 293, "summary": "A man catches a flea who pleads it does little harm, and kills it because no evil should be tolerated.", "predicament": "You have caught someone in a petty offence, and they plead that what they did was too small to matter.", "moral": null},
{"chunk": 294, "story": 294, "summary": "A rich man presses his tanner neighbour to move, the tanner stalls, and the rich man grows used to the smell.", "predicament": "A powerful neighbour wants you gone and keeps pressing, and you could keep promising to leave soon without actually going.", "moral": null},
{"chunk": 295, "story": 295, "summary": "A viper asks a file for a meal, and the file says he takes from everyone and gives nothing.", "predicament": "You have gone to ask for help from someone well known for taking from everyone and never giving.", "moral": "The covetous are poor givers."},
{"chunk": 296, "story": 296, "summary": "A shepherd pulls a thorn from a lion's paw, and the lion later spares him in the arena.", "predicament": "Someone dangerous and in pain comes to you for help, and helping them means getting close to their claws.", "moral": null},
{"chunk": 297, "story": 297, "summary": "A camel envying the bull's horns asks Jupiter for some and loses part of his ears.", "predicament": "Not content with your strengths, you are asking the boss for a colleague's distinctions too.", "moral": null},
{"chunk": 298, "story": 298, "summary": "A panther in a pit, stoned by some shepherds and fed by others, escapes and takes revenge only on his attackers.", "predicament": "Someone dangerous has fallen, and others are pelting them while a few offer help, and you must choose which you will be.", "moral": null},
{"chunk": 299, "story": 299, "summary": "A kite boasts he can catch ostriches to win an eagle's hand, and brings her a stale mouse.", "predicament": "Someone courting you for a partnership boasts of what they can deliver, and you have no way yet to check.", "moral": null},
{"chunk": 300, "story": 300, "summary": "An eagle freed by a new owner brings him a hare, and a fox advises courting the old owner who clipped him.", "predicament": "A new employer has restored what your old one took from you, and you must decide whom to cultivate.", "moral": null},
{"chunk": 301, "story": 301, "summary": "A prince confined because of his father's dream of a lion strikes at a painted lion, is pricked by a thorn and dies.", "predicament": "You have been confined to protect you from a danger someone only dreamed of, and you are raging against it.", "moral": "We had better bear our troubles bravely than try to escape them."},
{"chunk": 302, "story": 302, "summary": "A cat turned into a woman for love leaps from the bridal couch after a mouse.", "predicament": "You have been given a new, polished role, and an old temptation is about to be dropped in front of you.", "moral": "Nature exceeds nurture."},
{"chunk": 303, "story": 303, "summary": "A beetle whose young an eagle ate pursues her eggs even into Jupiter's lap until they are broken.", "predicament": "Someone far more powerful destroyed what you cared about, and you could pursue them relentlessly even into their protector's presence.", "moral": "The weak often revenge themselves on those who use them ill, even though they be more powerful."},
{"chunk": 304, "story": 304, "summary": "The he-goats complain the she-goats got beards, and Jupiter says an empty badge makes them no equals.", "predicament": "Juniors have been given the same badge of rank as you, and you are tempted to complain to those above.", "moral": "It matters little if those who are inferior to us in merit should be like us in outside appearances."},
{"chunk": 305, "story": 305, "summary": "A bald man slaps his own head at a fly, and says he forgives himself but would kill the fly at any cost.", "predicament": "Someone small keeps needling you, and your efforts to hit back are hurting you more than them.", "moral": null},
{"chunk": 306, "story": 306, "summary": "A shipwrecked man blames the sea, who says the winds are to blame for her fury.", "predicament": "You were ruined in a venture and blame the institution, which says it was only stirred up by others.", "moral": null},
{"chunk": 307, "story": 307, "summary": "A crowd prefers a buffoon's fake pig squeal to a countryman's real pig, until he shows it.", "predicament": "The crowd has already decided their favourite is better than you, however genuine your work, and you must show them.", "moral": null},
{"chunk": 308, "story": 308, "summary": "A hungry crow seizes a sleeping serpent as a windfall and is bitten to death.", "predicament": "You are desperate, and an easy prize seems to have been left lying unguarded right in front of you.", "moral": null},
{"chunk": 309, "story": 309, "summary": "A horseman takes a hunter's hare under pretence of buying it and gallops off, and the hunter calls it a gift.", "predicament": "Someone has made off with what you earned, pretending to buy it, and you cannot catch them.", "moral": null},
{"chunk": 310, "story": 310, "summary": "An evergreen olive mocks the fig for shedding leaves, and snow breaks the olive but passes through the fig.", "predicament": "A colleague mocks you for scaling back in lean seasons while they keep up appearances all year round.", "moral": null},
{"chunk": 311, "story": 311, "summary": "The frogs protest the sun's marriage, fearing that more suns would parch them worse.", "predicament": "Someone who already makes your life hard is about to gain more power, and you could protest before it happens.", "moral": null},
{"chunk": 312, "story": 312, "summary": "A brazier scolds his dog for sleeping while he works and waking only to beg at dinner.", "predicament": "Someone who dozes through all the work always wakes up just in time to ask for a share of the rewards.", "moral": null}
]
@@ -0,0 +1,120 @@
#!/usr/bin/env python3
"""Assemble records.json, groups.json and options_by_entry.json from batches/, groups_src.py and
options_src.py, and check them. Jacobs' build.py plus the checks this corpus needs: one scene per
fable, predicament length and name leaks, verbatim morals and evidence, the 13-fable recurrence rule,
and the catalogue ids the options measurement uses. No inference."""
import collections, glob, json, pathlib, re, sys
sys.dont_write_bytecode = True # the catalogue import below must not leave caches outside probe/aesop/
from groups_src import G, STANDING
from options_src import O, NEW_ENTRIES
here = pathlib.Path(__file__).parent
sys.path.insert(0, str(here.parent.parent / 'catalogue' / 'v2'))
from catalogue_v2_src import CATALOGUE
chunks = json.loads((here.parent / 'chunks.json').read_text())
stories = json.loads((here.parent / 'stories.json').read_text())
recs = [r for f in sorted(glob.glob(str(here / 'batches/s*.json'))) for r in json.loads(open(f).read())]
assert [r['chunk'] for r in recs] == list(range(len(chunks))), 'every fable, once, in order'
assert all(chunks[r['chunk']]['story'] == r['story'] for r in recs)
assert all(set(r) == {'chunk', 'story', 'summary', 'predicament', 'moral'} for r in recs)
# ---- records -------------------------------------------------------------------------------------
NAMES = ('amaranth ant ape apple ass bat bear bee beetle bird boar bramble bull calf camel cat cock crab crane '
'crow dog doe dolphin dove eagle elephant fawn fig filbert fir fish flea fly flies frog gnat goat goose '
'geese grape grasshopper hare hart hawk hedgehog heifer hen horse hound jackdaw kid kite lamb lark '
'leopard lion lioness locust mole monkey mouse mice mule nettle nightingale oak olive ox oxen oyster '
'panther partridge peacock pig pigeon pomegranate porker raven reed rose satyr seagull serpent sheep '
'snake sow sparrow sprat stag stork swallow swan thrush tortoise vine viper walnut wasp weasel whale '
'whelp wolf wolves jupiter juno venus mercury minerva neptune momus hercules apollo pallas hermes '
'axe net sling fleece wool manger pitcher honey acorn').split()
NOPLURAL = {'doe'} # 'does' is a verb
leak = re.compile(r'\b(' + '|'.join(n + ('' if n in NOPLURAL else 's?') for n in NAMES) + r')\b', re.I)
def norm(s): return ' '.join(s.split())
problems = []
for r in recs:
p, n = r['predicament'], len(r['predicament'].split())
if not 15 <= n <= 24: problems.append(f"chunk {r['chunk']}: predicament has {n} words")
if len(re.findall(r'[.!?](?:\s|$)', p)) != 1 or not p.endswith('.'): problems.append(f"chunk {r['chunk']}: not one sentence")
if leak.search(p): problems.append(f"chunk {r['chunk']}: name or story object in predicament: {leak.search(p).group(0)}")
if r['moral'] is not None and norm(r['moral']) not in norm(chunks[r['chunk']]['text']):
problems.append(f"chunk {r['chunk']}: moral is not verbatim")
# ---- groups --------------------------------------------------------------------------------------
MIN_MEMBERS = max(3, round(0.04 * len(stories))) # 13 for 313 fables
SKILLS = {'wit', 'prudence'}
seen = collections.Counter(m for g in G for m in g['members'])
dup = [m for m, k in seen.items() if k > 1]
if dup: problems.append(f'fables in two groups: {dup}')
assert set(STANDING) == set(range(len(recs))), 'STANDING covers every fable'
by = {r['chunk']: r for r in recs}
out = []
for g in G:
small = g.get('small', False)
k = len(g['members'])
if small and not 5 <= k <= 12: problems.append(f"{g['id']}: marked small but has {k} fables")
if not small and k < MIN_MEMBERS: problems.append(f"{g['id']}: {k} fables, below the {MIN_MEMBERS}-fable rule")
if not 3 <= len(g['options']) <= 5: problems.append(f"{g['id']}: {len(g['options'])} options")
used = {p for _, _, mv in g['options'] for p in mv if '.' not in p and p not in ('money', 'standing')}
if not used <= SKILLS: problems.append(f"{g['id']}: skill labels outside {SKILLS}: {used - SKILLS}")
for _, s, mv in g['options']:
if not all(v in ('+', '-', 'risk', 'set') for v in mv.values()): problems.append(f"{g['id']}: bad direction in {mv}")
if s.startswith('scene:') and not 0 <= int(s.split(':')[1]) < len(recs): problems.append(f"{g['id']}: bad source {s}")
st = sorted({by[m]['story'] for m in g['members']})
stand = collections.Counter(STANDING[by[m]['story']] for m in g['members'])
out.append({
'id': g['id'], 'name': g['name'], 'predicament': g['predicament'], 'small': small,
'sentence': f"A {g['actor']} wants {g['wants']} from {g['counterpart']}.",
'actor': g['actor'], 'wants': g['wants'], 'counterpart': g['counterpart'],
'stories': st, 'story_titles': [stories[s]['title'] for s in st],
'standing': dict(stand), 'stage': stand.most_common(1)[0][0],
'members': [{'chunk': m, 'story': by[m]['story'], 'predicament': by[m]['predicament'],
'moral': by[m]['moral']} for m in g['members']],
'options': [{'text': t, 'source': s, 'moves': mv,
'in_group': (int(s.split(':')[1]) in g['members']) if s.startswith('scene:') else None}
for t, s, mv in g['options']],
})
unassigned = [r['chunk'] for r in recs if r['chunk'] not in seen]
# ---- options measurement -------------------------------------------------------------------------
v2 = {e['id'] for e in CATALOGUE}
obe, new_used = collections.defaultdict(list), set()
for entry, c, text, mv, ev, stated in O:
if entry.startswith('new:'):
if entry[4:] not in NEW_ENTRIES: problems.append(f'{entry}: not defined in NEW_ENTRIES')
if entry[4:] in v2: problems.append(f'{entry}: already a v2 id')
new_used.add(entry[4:])
elif entry not in v2: problems.append(f'{entry}: not a v2 catalogue id')
ev = by[c]['moral'] if ev == 'M' else ev
if ev is None: problems.append(f'chunk {c}: evidence M but the fable has no moral')
elif norm(ev) not in norm(chunks[c]['text']): problems.append(f'chunk {c}: evidence not verbatim: {ev[:50]}')
elif len(ev.split()) > 30: problems.append(f'chunk {c}: evidence over 30 words')
bad = [p for p in mv if not (p in ('money', 'standing') or p.startswith('relationships.'))]
if bad: problems.append(f'chunk {c}: measurement moves use {bad}; money, standing, relationships only')
if not all(v in ('+', '-', 'risk') for v in mv.values()): problems.append(f'chunk {c}: bad direction in {mv}')
obe[entry].append({'text': text, 'moves': mv, 'source': f'chunk:{c}', 'evidence': ev, 'stated': stated})
unused = sorted(set(NEW_ENTRIES) - new_used)
if unused: problems.append(f'NEW_ENTRIES never used: {unused}')
if problems:
print('\n'.join(problems)); sys.exit(1)
obe_out = {k: obe[k] for k in sorted(obe, key=lambda k: (k.startswith('new:'), k))}
obe_out['_new_entries'] = {f'new:{k}': {'name': n, 'definition': d, 'differs_from': x}
for k, (n, d, x) in NEW_ENTRIES.items()}
(here / 'records.json').write_text(json.dumps(recs, indent=1, ensure_ascii=False))
(here / 'groups.json').write_text(json.dumps({'groups': out, 'unassigned': unassigned}, indent=1, ensure_ascii=False))
(here / 'options_by_entry.json').write_text(json.dumps(obe_out, indent=1, ensure_ascii=False))
# ---- report --------------------------------------------------------------------------------------
big = [g for g in out if not g['small']]
print(f'{len(recs)} fables, {sum(r["moral"] is not None for r in recs)} with a stated moral; '
f'{len(big)} groups of {MIN_MEMBERS}+ fables, {len(out) - len(big)} small groups (5-12); '
f'{sum(seen.values())} assigned, {len(unassigned)} unassigned')
for g in out:
print(f"{g['id']} {len(g['members']):2} fables stage {g['stage']:6} {'SMALL ' if g['small'] else ''}{g['name']}")
src = collections.Counter(o['source'].split(':')[0] for g in out for o in g['options'])
print('group option sources:', dict(src), '| scene options citing a fable outside their group:',
sum(o['in_group'] is False for g in out for o in g['options']))
opts = [o for k, v in obe.items() for o in v]
cov_v2 = sorted(k for k in obe if not k.startswith('new:'))
print(f'options measurement: {len(opts)} options, {sum(o["stated"] for o in opts)} stated '
f'({sum(o["stated"] for o in opts) / len(opts):.0%}); {len(cov_v2)} of {len(v2)} v2 entries covered, '
f'{len(new_used)} new entries; from {len({o["source"] for o in opts})} distinct fables')
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,228 @@
"""Hand-built reference grouping of the Aesop predicaments (Claude-written, no inference of any kind).
One fable is one story and one scene, so a group's member count is also its story count.
Recurrence rule, scaled to the corpus: with 313 fables a group needs at least 13 members
(max(3, 4% of 313) = 13). Groups of 5-12 are allowed but are marked SMALL below and reported
separately. Each fable is in at most one group; fables that fit no recurring situation stay
unassigned.
Options follow DESIGN.md: 3-5 per group, each marked by where it came from --
'archetype' a fixed, setting-free option
'scene:N' what someone in fable N actually did (or refused to do)
'filled' written to fill a gap the fables leave
`moves` names spine paths and a direction only (+ / - / risk / set). No magnitudes: the model never
chooses a number. Skill labels proposed for this corpus: wit (seeing through a trick, and turning it),
prudence (looking before you leap, knowing your limits, keeping what you have).
"""
G = [
# ---- the powerful and the weak ---------------------------------------------------------------------
dict(id='G01', name='A friendly approach from someone who would gain by your fall',
predicament='Someone whose nature is to prey on people like you comes friendly, praising, inviting or offering peace, and what they propose would put you in reach.',
actor='person with something to lose', wants='to keep it', counterpart='a known predator acting friendly',
members=[30, 36, 63, 64, 73, 92, 96, 144, 172, 192, 204, 207, 215, 219, 221, 225],
options=[
('Keep your distance and decline politely.', 'scene:36', {'prudence':'+', 'relationships.predator':'-'}),
('Accept the invitation and go in.', 'scene:221', {'relationships.predator':'+', 'standing':'risk'}),
('Say out loud what they are really after.', 'scene:225', {'wit':'+', 'relationships.predator':'-'}),
('Send them round to someone who can deal with them.', 'scene:215', {'wit':'+', 'relationships.predator':'-', 'flags.turned_the_tables':'set'}),
('Rise to the praise and show them what you can do.', 'scene:96', {'money':'-', 'standing':'-'})]),
dict(id='G02', name='At the mercy of someone who has already decided',
predicament='Someone who holds your fate has caught you and is looking for a reason, and you have one chance to talk your way out.',
actor='person caught', wants='to be let go', counterpart='the one who has them',
members=[1, 5, 26, 39, 43, 55, 131, 135, 147, 197, 211, 217, 248, 292],
options=[
('Answer every charge with the facts.', 'scene:1', {'standing':'risk', 'relationships.captor':'-'}),
('Show them the one thing you do that nobody else can.', 'scene:135', {'standing':'+', 'relationships.captor':'+'}),
('Tell them you belong to the side they spare.', 'scene:5', {'wit':'+', 'flags.two_faced':'set'}),
('Ask for one small favour that puts them off guard.', 'scene:217', {'wit':'+', 'relationships.captor':'-'}),
('Offer to hand over your own people instead.', 'scene:292', {'relationships.colleagues':'-', 'standing':'-', 'flags.informer':'set'})]),
dict(id='G03', name='Trading one hardship for another',
predicament='Your present lot is hard, and you could change master, protector or post, though the new one may be worse.',
actor='person with a hard lot', wants='something better', counterpart='the master or post on offer',
members=[47, 53, 76, 79, 109, 115, 125, 136, 177, 178, 189, 199, 228, 291],
options=[
('Ask for a new master.', 'scene:125', {'relationships.boss':'-', 'standing':'risk'}),
('Bring in a strong protector.', 'scene:79', {'relationships.protector':'+', 'standing':'risk'}),
('Keep the harm you know.', 'scene:53', {'prudence':'+'}),
('Go back to your plain, safe post.', 'scene:228', {'prudence':'+', 'money':'-'}),
('Sell up and stake it all on the change.', 'scene:109', {'money':'risk', 'flags.staked_all':'set'})]),
dict(id='G04', name='Envying another\'s gift',
predicament='You envy a colleague\'s gift or standing so much that you are tempted to copy them, or ask for what they have.',
actor='person with plainer gifts', wants='what the admired one has', counterpart='the admired colleague',
members=[2, 29, 31, 52, 68, 98, 134, 170, 180, 186, 209, 258, 265, 268, 282, 287, 297],
options=[
('Copy what they do.', 'scene:265', {'standing':'risk', 'relationships.admired':'-'}),
('Ask those above for what they have.', 'scene:297', {'relationships.boss':'-', 'standing':'-'}),
('Stick to what you are good at.', 'scene:209', {'prudence':'+'}),
('Look at what their position costs them.', 'scene:287', {'prudence':'+', 'relationships.admired':'+'}),
('Learn the craft properly before you try it.', 'filled', {'money':'-', 'wit':'+'})]),
dict(id='G05', name='Passing for more than you are',
predicament='You are passing for braver, grander or more skilled than you are, and the moment that would test it has come.',
actor='pretender', wants='to keep the credit', counterpart='whoever might test them',
members=[40, 42, 65, 138, 148, 160, 187, 198, 200, 201, 234, 251, 270, 302],
options=[
('Keep up the pretence and say nothing.', 'scene:200', {'standing':'risk'}),
('Confess before you are tested.', 'scene:234', {'standing':'-', 'relationships.examiner':'+'}),
('Laugh with them when it slips.', 'scene:160', {'standing':'+', 'relationships.companions':'+'}),
('Double the claim.', 'scene:198', {'standing':'risk', 'flags.liar':'set'}),
('Back out quietly.', 'scene:138', {'standing':'-'})]),
dict(id='G06', name='Riding high',
predicament='Things are going your way, and you are tempted to show it, crow about it, or take on someone bigger.',
actor='person on top for now', wants='to be seen on top', counterpart='rivals and onlookers',
members=[27, 57, 71, 108, 110, 117, 126, 141, 194, 245, 255, 264, 290],
options=[
('Crow about it where everyone can see.', 'scene:71', {'standing':'risk', 'relationships.rival':'-'}),
('Press on and take on someone bigger.', 'scene:110', {'standing':'risk', 'flags.overreached':'set'}),
('Keep quiet and go on shining.', 'scene:141', {'prudence':'+', 'standing':'+'}),
('Ask an old hand what your mark really means.', 'scene:57', {'relationships.mentor':'+', 'prudence':'+'})]),
dict(id='G07', name='Sneered at by someone showier',
predicament='A showier or better-placed colleague sneers at your plainness or your load, and you must decide how to answer.',
actor='plain worker', wants='respect', counterpart='a showier colleague',
members=[7, 11, 22, 24, 70, 88, 155, 163, 167, 223, 226, 253, 310],
options=[
('Answer with what you can do that they cannot.', 'scene:167', {'wit':'+', 'standing':'+', 'relationships.rival':'-'}),
('Hold your peace and wait.', 'scene:223', {'prudence':'+', 'relationships.rival':'-'}),
('Challenge them to a test.', 'scene:11', {'standing':'risk', 'relationships.rival':'-'}),
('Ignore them and heed only the one in charge.', 'scene:226', {'relationships.boss':'+'}),
('Try to outshine them on their terms.', 'filled', {'money':'-', 'standing':'risk'})]),
# ---- help, greed, partners -------------------------------------------------------------------------
dict(id='G08', name='Help asked in need',
predicament='Someone in trouble asks for help, or you need it yourself, and nobody can tell how the help will be repaid.',
actor='person asked for help', wants='to do right without being bitten', counterpart='someone in need',
members=[0, 10, 23, 51, 132, 154, 190, 193, 208, 230, 261, 286, 295, 296],
options=[
('Help, though they can give nothing back now.', 'scene:0', {'relationships.helped':'+', 'money':'-'}),
('Refuse: they should have looked ahead.', 'scene:10', {'relationships.asker':'-', 'money':'+'}),
('Take them in and nurse them.', 'scene:23', {'relationships.helped':'+', 'standing':'risk'}),
('Refuse to lift any of their load.', 'scene:51', {'relationships.partner':'-', 'money':'risk'}),
('Stick with those who already serve you without promises.', 'scene:230', {'prudence':'+', 'relationships.staff':'+'})]),
dict(id='G09', name='Wanting more than you hold',
predicament='You already have something good, and a chance to grab more, squeeze more or stay longer is tempting you.',
actor='person with something in hand', wants='more', counterpart='the bigger prize',
members=[15, 21, 46, 95, 113, 137, 139, 151, 156, 168, 179, 213, 279],
options=[
('Keep what you hold.', 'scene:137', {'money':'+', 'prudence':'+'}),
('Drop it and chase the bigger prize.', 'scene:156', {'money':'risk'}),
('Squeeze the steady source for more.', 'scene:168', {'money':'risk', 'flags.killed_the_goose':'set'}),
('Take half and get free.', 'scene:46', {'prudence':'+', 'money':'-'}),
('Stay and enjoy it a while longer.', 'scene:279', {'money':'+', 'standing':'risk'})]),
dict(id='G10', name='Your side divided',
predicament='You and a rival, or the people on your own side, are quarrelling, and someone else stands to profit from it.',
actor='member of a divided side', wants='to win the quarrel, or end it', counterpart='the rival, and whoever is waiting',
members=[4, 25, 48, 75, 80, 105, 124, 152, 165, 166, 171, 185, 224, 236, 246],
options=[
('Make peace with the rival before others profit.', 'scene:105', {'relationships.rival':'+'}),
('Show them together they cannot be broken.', 'scene:4', {'relationships.team':'+', 'standing':'+'}),
('Fight it out to the end.', 'scene:152', {'relationships.rival':'-', 'money':'-'}),
('Stop supplying the part you resent.', 'scene:75', {'relationships.team':'-', 'money':'-'}),
('Keep switching to whichever side is winning.', 'scene:246', {'wit':'+', 'relationships.team':'-', 'flags.turncoat':'set'})]),
dict(id='G11', name='A partner you may not be able to count on',
predicament='You are joined, or about to be joined, to a partner or ally, and you cannot be sure they will stand by you.',
actor='person choosing a partner', wants='someone to rely on', counterpart='a doubtful partner',
members=[12, 20, 37, 58, 60, 82, 90, 102, 120, 127, 181, 182, 184, 254, 256, 277, 284, 299],
options=[
('Ask for a surety before you join.', 'scene:277', {'prudence':'+', 'relationships.partner':'-'}),
('Decline: their ways would undo yours.', 'scene:12', {'prudence':'+', 'relationships.partner':'-'}),
('Save yourself and leave the partner to it.', 'scene:37', {'relationships.partner':'-', 'flags.deserted':'set'}),
('Bind yourself to them.', 'scene:90', {'relationships.partner':'+', 'standing':'risk'}),
('Hold them to their own words.', 'scene:120', {'wit':'+', 'relationships.partner':'-'})]),
dict(id='G12', name='Rushing in without looking',
predicament='Something you want is right in front of you, or you are intent on a target, and you have not looked at the danger.',
actor='eager person', wants='what is in front of them', counterpart='the danger they have not seen',
members=[13, 18, 32, 62, 99, 107, 140, 150, 216, 222, 247, 289, 308],
options=[
('Go for it now before it is gone.', 'scene:32', {'money':'risk', 'standing':'risk'}),
('Ask how you get out before going in.', 'scene:140', {'prudence':'+'}),
('Keep your eyes on your target.', 'scene:222', {'money':'+', 'standing':'risk'}),
('Wait for a surer sign before you act.', 'filled', {'prudence':'+', 'money':'-'})]),
dict(id='G13', name='Pointing at others\' faults',
predicament='Faults are being pointed out, by you or at you, and the one pointing shares the fault or gains by the blame.',
actor='critic or criticised', wants='to be in the right', counterpart='the other party',
members=[9, 28, 38, 84, 111, 116, 122, 153, 173, 188, 239, 257, 260, 306],
options=[
('Ask them to show you how.', 'scene:84', {'wit':'+', 'relationships.critic':'-'}),
('Point out that they do the same.', 'scene:122', {'wit':'+', 'relationships.critic':'-', 'standing':'+'}),
('Ask what they gain by the advice.', 'scene:38', {'wit':'+', 'relationships.adviser':'-'}),
('Find fault with everyone.', 'scene:257', {'standing':'-', 'relationships.colleagues':'-'}),
('Look at your own faults first.', 'filled', {'prudence':'+', 'relationships.colleagues':'+'})]),
dict(id='G14', name='Liberties between the weak and the strong',
predicament='Someone powerful is down, caged or out of reach, or someone small is needling you, and a blow could be struck.',
actor='weak or strong party', wants='to strike, or to be left alone', counterpart='the other party',
members=[49, 66, 77, 121, 145, 159, 175, 206, 232, 238, 252, 285, 298, 303, 305],
options=[
('Taunt them while they cannot reach you.', 'scene:66', {'standing':'+', 'relationships.powerful':'-'}),
('Pursue them however long it takes.', 'scene:303', {'relationships.powerful':'-', 'flags.revenge':'set', 'standing':'risk'}),
('Help them while they are down.', 'scene:298', {'relationships.powerful':'+', 'money':'-'}),
('Kick them now that they are down.', 'scene:232', {'relationships.powerful':'-', 'standing':'-'}),
('Let a small insult pass.', 'filled', {'prudence':'+'})]),
dict(id='G15', name='A hard lot',
predicament='You are stuck, worn down or beaten, and it is tempting to despair, complain, or wait for someone to rescue you.',
actor='person in hard times', wants='a way through', counterpart='their own circumstances',
members=[16, 61, 72, 87, 133, 157, 169, 191, 195, 227, 267, 273, 288, 301],
options=[
('Put your own shoulder to it.', 'scene:16', {'prudence':'+', 'money':'+'}),
('Try something nobody has tried.', 'scene:191', {'wit':'+', 'money':'+'}),
('Say you never wanted it anyway.', 'scene:195', {'standing':'+'}),
('Call on your backer.', 'scene:273', {'relationships.patron':'risk'}),
('Give it up entirely.', 'scene:87', {'standing':'-', 'flags.gave_up':'set'})]),
dict(id='G16', name='Worked hard, badly repaid',
predicament='You carry the load for the one you serve, and they take you for granted, work you into the ground or skim what you need.',
actor='worker', wants='fair treatment', counterpart='the one they serve',
members=[34, 45, 50, 74, 100, 118, 119, 142, 161, 196, 271, 283, 312],
options=[
('Carry on in silence.', 'scene:34', {'relationships.boss':'+', 'standing':'-'}),
('Tell them plainly what they are doing to you.', 'scene:50', {'relationships.boss':'risk', 'standing':'+'}),
('Remind them what you were.', 'scene:119', {'relationships.boss':'risk'}),
('Leave before you are next.', 'scene:118', {'prudence':'+', 'money':'-', 'relationships.boss':'-'}),
('Stop being so useful.', 'filled', {'money':'-', 'relationships.boss':'-'})]),
# ---- SMALL groups (5-12 fables): below the 13-fable recurrence rule, reported separately ----------
dict(id='G17', name='Letting a known predator inside', small=True, # SMALL: 6 fables
predicament='Someone with a predator\'s instincts is about to be let inside, or trained, or left in charge, and you know what they are.',
actor='keeper', wants='to use them safely', counterpart='a known predator',
members=[83, 129, 164, 210, 233, 281],
options=[
('Speak up before they are let in.', 'scene:164', {'relationships.boss':'risk', 'standing':'+'}),
('Trust them after long good behaviour.', 'scene:210', {'relationships.newcomer':'+', 'money':'risk'}),
('Let them go and cut your losses.', 'scene:129', {'money':'-', 'prudence':'+'}),
('Train them to your uses.', 'scene:83', {'money':'+', 'relationships.newcomer':'risk'})]),
dict(id='G18', name='The lion\'s share', small=True, # SMALL: 6 fables
predicament='You did the work alongside someone far stronger, and now the proceeds are being divided on their terms.',
actor='junior partner', wants='a fair share', counterpart='a far stronger partner',
members=[3, 101, 130, 158, 274, 309],
options=[
('Divide it fairly.', 'scene:158', {'relationships.partner':'-', 'standing':'risk'}),
('Leave yourself almost nothing.', 'scene:158', {'money':'-', 'relationships.partner':'+'}),
('Go it alone next time.', 'scene:274', {'money':'risk', 'relationships.partner':'-'}),
('Ask for what you were promised.', 'scene:3', {'relationships.partner':'-', 'standing':'risk'})]),
dict(id='G19', name='A bad record when you need trust', small=True, # SMALL: 5 fables
predicament='You need people to believe you or help you now, and your record gives them every reason not to.',
actor='person with a past', wants='to be believed', counterpart='those who remember',
members=[54, 104, 229, 235, 243],
options=[
('Raise the alarm anyway.', 'scene:54', {'standing':'-'}),
('Make a new promise to a new patron.', 'scene:243', {'relationships.patron':'-'}),
('Do a good turn to mend your name.', 'scene:235', {'relationships.neighbour':'risk'}),
('Earn trust in good times, before you need it.', 'filled', {'relationships.allies':'+'})]),
dict(id='G20', name='A warning before the trouble', small=True, # SMALL: 6 fables
predicament='Trouble is coming but not yet here, and you must decide whether to prepare, warn others, or take the threat seriously.',
actor='person with warning', wants='to be ready', counterpart='the trouble coming',
members=[35, 112, 174, 214, 241, 249],
options=[
('Prepare now while it is quiet.', 'scene:112', {'prudence':'+', 'money':'-'}),
('Warn the others though they laugh.', 'scene:249', {'standing':'-', 'relationships.team':'-'}),
('Wait until they mean it.', 'scene:214', {'prudence':'+'}),
('Put it off until next time.', 'scene:241', {'money':'+', 'prudence':'-'})]),
]
# Protagonist's power in the situation each predicament describes, for stage assignment (DESIGN.md
# "Stages"). One fable is one scene, so this is per fable. 'high' means the "you" of the predicament
# holds power over the others in it, 'middle' that they deal as a peer, 'low' that they are at
# someone's mercy or under their orders.
HIGH = {0, 4, 17, 33, 49, 69, 73, 84, 85, 86, 89, 126, 137, 152, 153, 156, 162, 173, 175, 183, 202,
203, 213, 220, 229, 230, 231, 257, 261, 269, 271, 277, 278, 288, 293, 305, 312}
MIDDLE = {2, 6, 7, 10, 12, 14, 15, 21, 22, 23, 24, 25, 27, 28, 30, 31, 37, 38, 40, 42, 44, 46, 48, 51,
58, 59, 60, 61, 62, 65, 67, 71, 78, 83, 91, 93, 95, 96, 97, 102, 103, 105, 108, 111, 112, 114,
116, 120, 123, 124, 129, 132, 138, 139, 140, 141, 143, 148, 149, 150, 151, 154, 155, 159,
160, 163, 165, 167, 168, 171, 174, 179, 180, 182, 184, 185, 186, 188, 190, 192, 194, 199,
201, 209, 210, 212, 219, 222, 224, 225, 227, 233, 235, 236, 239, 242, 244, 245, 249, 250,
251, 252, 256, 260, 262, 263, 270, 272, 281, 282, 289, 290, 296, 297, 298, 299, 302, 304, 310}
STANDING = {i: 'high' if i in HIGH else 'middle' if i in MIDDLE else 'low' for i in range(313)}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,342 @@
"""The options measurement: which catalogue situations the fables supply options for, and whether the
fable itself shows where each option's moves go. Hand-written by Claude reading every fable; no inference.
Each row: (entry, chunk, text, moves, evidence, stated)
entry a catalogue v2 id, or 'new:<id>' defined in NEW_ENTRIES
chunk the fable the option comes from (written out as source 'chunk:N')
text the move, transplanted to a workplace
moves spine paths with a direction. Only money, standing and relationships.<role>: a skill label
or a flag is a design decision about the option, not an outcome a story can show, so
none is used here (the group options in groups_src.py carry them)
evidence a verbatim excerpt of the fable, at most 30 words, or 'M' for the fable's stated moral
stated True only if the fable's own outcome or moral shows the direction of EVERY path in moves.
How an outcome is read as a direction (the same reading for every row):
money goods, food, pay, property or a prize gained (+) or lost (-); a heavier load or harder
work for the same keep counts as (-)
standing the actor's safety, position or name: made king, spared, pardoned, praised, winning
the contest (+); killed, caught, beaten, driven out, exposed or publicly rebuked (-)
relationships.<role> how that party treats the actor afterwards: repays, rescues, makes peace (+);
turns on them, deserts them, refuses them, stops trusting them (-)
'risk' stated only when the same fable shows the same move ending both ways
A moral that only calls a move wise or foolish does not state a direction; one that names the
effect ("wins the race", "lost both") does. An outcome that befalls the actor but is not caused by
the move (the sparrow taken by a hawk while mocking the hare) is not counted as stated.
"""
NEW_ENTRIES = {
'friendly_predator': ('A friendly approach from someone who would gain by your fall',
'Someone whose nature is to prey on people like you comes friendly, praising, inviting, offering peace or a small favour to ask, and what they propose would put you in their reach.',
'near sure_thing (an easy fortune that is a trap) and not_who_they_seem (a false face among you); here the danger is known, and the bait is friendship, not fortune'),
'better_the_devil': ('Trading one hardship for another',
'Your present master, protector or post is hard on you, and you could change it, though the new one may be worse.',
'no v2 entry; the decision is whether to change your lot, not how to bear it'),
'ape_your_betters': ('Envying another\'s gift',
'You envy a colleague\'s gift, looks or standing so much that you are tempted to copy them, ask for what they have, or leave your own kind to join theirs.',
'near overlooked (wanting, once, to be noticed beside the admired one); here the move is imitation'),
'riding_high': ('Riding high',
'Things are going your way, and you are tempted to show it: crow, parade your honours, or take on someone bigger.',
'no v2 entry; the fables\' most common turn, pride before a fall'),
'sneered_at': ('Sneered at by someone showier',
'A showier or better-placed colleague sneers at your plainness, slowness or load; you are the one sneered at, or the one sneering.',
'near power_over_you and despised, but the sneerer has no power over you'),
'grasping': ('Wanting more than you hold',
'You already have something good, and the chance to grab more, squeeze more out of it, or stay longer is tempting you.',
'no v2 entry'),
'divided': ('Your side divided',
'You and a rival, or the people on your own side, are quarrelling, and someone else stands to profit from it.',
'no v2 entry'),
'doubtful_ally': ('A partner you may not be able to count on',
'You are joined, or about to be joined, to a partner or ally, and cannot be sure they will stand by you.',
'near used; here nothing is hidden yet, the question is whether to rely on them'),
'heedless': ('Rushing in without looking',
'Something you want is right in front of you, or you are intent on a target, and you have not looked at the danger.',
'no v2 entry'),
'pot_and_kettle': ('Pointing at others\' faults',
'Faults are being pointed out, by you or at you, and the one pointing shares the fault or gains by the blame.',
'near own_words_back'),
'needling_the_strong': ('Liberties between the weak and the strong',
'Someone powerful is down, caged or out of reach, or someone small is needling you, and a blow could be struck.',
'near revenge and at_their_mercy'),
'hard_lot': ('A hard lot',
'You are stuck, worn down or beaten, and it is tempting to despair, complain, or wait for someone to rescue you.',
'near dead_end, which is years of thankless work; this is any hardship'),
'used_up': ('Worked hard, badly repaid',
'You carry the load for the one you serve, and they take you for granted, work you into the ground or skim what you need.',
'near overlooked and bow_for_your_living'),
'predator_inside': ('Letting a known predator inside',
'Someone with a predator\'s instincts is about to be let in, trained or left in charge, and you know what they are.',
'near warning'),
'lions_share': ('The lion\'s share',
'You did the work alongside someone far stronger, and the proceeds are being divided on their terms.',
'near used and power_over_you'),
'bad_record': ('A bad record when you need trust',
'You need people to believe or help you now, and your record gives them every reason not to.',
'near unbelievable_truth, but here the listeners are right to doubt you'),
'asking_above': ('Asking the power above for a favour',
'You can ask someone far above you for a favour, a change or a rescue, and what you ask for may not serve you.',
'near patron and benefactor; the fables\' petitions to Jupiter'),
'please_everyone': ('Trying to please everyone',
'Several people want different things of you, and changing to suit each one in turn is tempting.',
'near peace_at_home'),
'make_them_move': ('Getting someone to move',
'You need someone to do or give up something, and must choose between coaxing, tricking and forcing them.',
'no v2 entry'),
}
M = 'M'
O = [
# ---- at the mercy of the powerful ----------------------------------------------------------------
('at_their_mercy', 1, 'Answer every charge with the facts.', {'standing':'-'}, M, True),
('at_their_mercy', 5, 'Tell each captor you belong to the side they spare.', {'standing':'+'}, 'The Bat assured him that he was not a mouse, but a bat, and thus a second time escaped.', True),
('at_their_mercy', 26, 'Plead your good character, though you were caught with the wrongdoers.', {'standing':'-'}, 'I have taken you with these robbers, the Cranes, and you must die in their company.', True),
('at_their_mercy', 39, 'Defend yourself against the excuse they have found.', {'standing':'-'}, 'Although you abound in specious apologies, I shall not remain supperless;', True),
('at_their_mercy', 55, 'Ask them to stop, since their sport is your ruin.', {'relationships.powerful':'+'}, 'Pray stop, my boys: what is sport to you, is death to us.', False),
('at_their_mercy', 131, 'Plead how useful you are when they must cut someone.', {'standing':'risk'}, 'The Birdcatcher spared his life, and determined to pick out a fine young Cock just attaining to his comb.', True),
('at_their_mercy', 135, 'Show the one real talent that sets you apart.', {'standing':'+'}, 'made himself known by his voice, and preserved his life by his melody.', True),
('at_their_mercy', 147, 'Plead your usefulness to people your usefulness threatens.', {'standing':'-'}, 'That is the very reason why we must the more kill you,', True),
('at_their_mercy', 197, 'Ask the one who has you for a small favour that may draw help.', {'standing':'+'}, 'some hounds hearing the sound ran up and began chasing the Wolf.', True),
('at_their_mercy', 211, 'Argue that everyone should be equal, with nothing to back it.', {'standing':'-'}, 'Your words, O Hares! are good; but they lack both claws and teeth such as we have.', False),
('at_their_mercy', 217, 'Ask for a small service that puts them off guard.', {'standing':'+', 'relationships.captor':'-'}, 'the Ass, with his heels, kicked his teeth into his mouth and galloped away.', True),
('at_their_mercy', 248, 'Plead that you never did harm yourself, you only urged others on.', {'standing':'-'}, 'That is the very reason for which you should be put to death,', True),
('at_their_mercy', 292, 'Offer to deliver your colleagues in return for your own escape.', {'standing':'-'}, 'I shall now with less scruple take your life, because you are willing to save it at the cost of betraying your friends and relations.', True),
('at_their_mercy', 293, 'Plead that your offence was too small to matter.', {'standing':'-'}, 'Now you shall certainly die by mine own hands, for no evil, whether it be small or large, ought to be tolerated.', True),
('station', 43, 'Agree to the powerful suitor, on a condition that leaves them harmless.', {'relationships.powerful':'-'}, 'the Woodman, no longer afraid, set upon him with his club, and drove him away into the forest.', True),
('power_over_you', 205, 'Give a vain leader your honest opinion.', {'standing':'-'}, 'The King of the Apes, enraged at hearing these truths, gave him over to the teeth and claws of his companions.', True),
('power_over_you', 205, 'Flatter a vain leader.', {'money':'+'}, 'The Ape and all his court, gratified with the lie, commanded that a handsome present be given to the flatterer.', True),
# ---- a friendly approach from a predator ----------------------------------------------------------
('new:friendly_predator', 36, 'Stay outside and ask after them from a safe distance.', {'relationships.predator':'-'}, 'I notice that there are many prints of feet entering your cave, but I see no trace of any returning.', False),
('new:friendly_predator', 36, 'Go in when they call you close.', {'standing':'-'}, 'The beasts expressed their sorrow, and came one by one to his den, where the Lion devoured them.', True),
('new:friendly_predator', 63, 'Dismiss your protectors to make peace with your enemies.', {'standing':'-'}, 'The Sheep, poor silly creatures, were easily beguiled and dismissed the Dogs, whereupon the Wolves destroyed the unguarded flock at their own pleasure.', True),
('new:friendly_predator', 64, 'Tell the helper you will stay well if they go away.', {'relationships.predator':'-'}, 'We are all very well, and shall continue so, if you will only be good enough to go away, and leave us as we are.', False),
('new:friendly_predator', 92, 'Refuse the small favour that would bring you in reach.', {'relationships.predator':'-'}, M, False),
('new:friendly_predator', 96, 'Speak up to prove the flatterer\'s one doubt wrong.', {'money':'-', 'standing':'-'}, 'My good Crow, your voice is right enough, but your wit is wanting.', True),
('new:friendly_predator', 144, 'Stay put, however harmless they now look.', {'relationships.predator':'-'}, 'even though you should turn into a meal-bag, we will not come near you.', False),
('new:friendly_predator', 192, 'Act at once on a stranger\'s alarming story.', {'money':'-'}, 'The Thief made off with the coat and did not return again to the inn.', True),
('new:friendly_predator', 207, 'Go for the tempting thing lying in the dark corner.', {'standing':'-'}, 'A Mouse, supposing him to be food, leaped upon him, and was instantly caught and squeezed to death.', True),
('new:friendly_predator', 215, 'Send the flatterer round to the one who guards you.', {'relationships.predator':'-'}, 'When the Fox approached the tree, the Dog sprang out and caught him, and tore him to pieces.', True),
('new:friendly_predator', 219, 'Look at the preparations and leave without a word.', {'relationships.host':'-'}, 'The Lion inquired why he went off so abruptly without a word of salutation to his host', True),
('new:friendly_predator', 221, 'Accept the sudden praise and invitation of someone you annoyed.', {'standing':'-'}, 'The Owl came forth from her hollow, seized her, and put her to death.', True),
('new:friendly_predator', 225, 'Stay on your secure ledge and name what they are after.', {'relationships.predator':'-'}, 'it is not for the pasture that you invite me, but for yourself, who are in want of food.', False),
('in_your_keeping', 204, 'Refuse a stranger\'s sudden favours and keep watch.', {'relationships.stranger':'-'}, 'This sudden kindness at your hands will only make me more watchful', False),
('sure_thing', 73, 'Take up the windfall a jealous colleague says they kept for you.', {'standing':'-'}, 'The Monkey approached carelessly and was caught in the trap;', True),
('used', 30, 'Let the one in trouble climb out on your back, on a promise to pull you after.', {'relationships.partner':'-', 'standing':'-'}, 'he safely reached the mouth of the well and made off as fast as he could.', True),
('used', 309, 'Hand your catch to someone who says they will pay for it.', {'money':'-'}, 'However, when the Horseman got the hare, he rode off as fast as he could.', True),
('your_scheme', 185, 'Warn each neighbour privately that the other plots against them.', {'money':'+'}, 'afforded ample provision for the Cat and her kittens.', True),
('your_scheme', 56, 'Repeat the shortcut that lightened your load once.', {'money':'-'}, 'And thus his trick recoiled on him, for he now carried on his back a double burden.', True),
('your_scheme', 218, 'Out of envy, urge a colleague to fake an illness to escape work.', {'standing':'-'}, 'They at once killed the Goat, and so healed the Ass.', True),
('compromise_for_money', 172, 'Hand over what you guard, for a share with the rivals.', {'standing':'-'}, 'entering the den of the Wolves, they were set upon and torn to pieces.', True),
('compromise_for_money', 268, 'Tell the truth about what you lost, though a richer answer is offered.', {'money':'+'}, 'Mercury, pleased with his honesty, gave him the golden and silver axes in addition to his own.', True),
('compromise_for_money', 268, 'Claim the richer thing is yours.', {'money':'-'}, 'not only took away the golden axe, but refused to recover for him the axe he had thrown into the pool.', True),
('pressed_to_wrong', 20, 'Hand your partner over to the powerful in return for your own safety.', {'standing':'-', 'relationships.partner':'-'}, 'The Lion, seeing that the Ass was secured, immediately clutched the Fox, and attacked the Ass at his leisure.', True),
('strings', 199, 'Accept a powerful helper\'s harness to get your revenge.', {'standing':'-'}, 'instead of obtaining revenge on the Stag, he had enslaved himself to the service of man.', True),
('strings', 115, 'Turn down a comfortable post that comes with a chain.', {'money':'-'}, 'May no friend of mine ever be in such a plight; for the weight of this chain is enough to spoil the appetite.', False),
# ---- trading hardships, and asking the power above ------------------------------------------------
('new:better_the_devil', 47, 'Keep demanding a stronger leader from above.', {'standing':'-'}, 'sent a Heron, who preyed upon the Frogs day by day till there were none left to croak upon the lake.', True),
('new:better_the_devil', 53, 'Keep the harm you know rather than risk a worse replacement.', {'standing':'+'}, M, False),
('new:better_the_devil', 76, 'Get rid of what sets the harsh pace.', {'money':'-'}, 'woke them up to their work in the middle of the night.', True),
('new:better_the_devil', 79, 'Invite a powerful protector inside.', {'standing':'-'}, 'he made more havoc and slew a larger number of them in one day than the Kite could pounce upon in a whole year.', True),
('new:better_the_devil', 109, 'Sell what you have and stake it all on a calm-looking trade.', {'money':'-'}, 'he threw all his merchandise overboard, and barely escaped with his life in the empty ship.', True),
('new:better_the_devil', 125, 'Ask for a new master each time you are unhappy.', {'money':'-'}, 'The Ass found that he had fallen into worse hands', True),
('new:better_the_devil', 136, 'Flee into the shelter of someone more dangerous.', {'standing':'-'}, 'when she was safe within the cave, sprang upon her and tore her to pieces.', True),
('new:better_the_devil', 176, 'Leave the field you are made for to chase better prospects.', {'standing':'-'}, 'A Fox came across him, and being very hungry ate him up.', True),
('new:better_the_devil', 177, 'Refuse to fight a takeover, since any master will work you the same.', {'relationships.boss':'-'}, M, False),
('new:better_the_devil', 178, 'Keep the sated drainers rather than invite hungrier ones.', {'money':'+'}, 'others more hungry will come in their place, and will drink up all the blood I have left.', False),
('new:better_the_devil', 189, 'Stay in your familiar, exposed spot.', {'standing':'-'}, 'A few days afterwards a heavy wagon passed through the gully and crushed him to death under its wheels.', True),
('new:better_the_devil', 228, 'Go back to plain fare where you can live without fear.', {'money':'-'}, 'I prefer my bare plowlands and roots from the hedgerow, where I can live in safety, and without fear.', True),
('new:better_the_devil', 291, 'Take refuge with those who may also harm you, rather than with the one chasing you.', {'standing':'+'}, 'It would be better for me to be sacrificed in the Temple than to be eaten by you.', False),
('new:asking_above', 16, 'Wait for someone powerful to rescue you before you try.', {'relationships.patron':'-'}, 'never more pray to me for help, until you have done your best to help yourself', True),
('new:asking_above', 114, 'Ask your patron for the power to punish anyone who touches what is yours.', {'standing':'risk'}, 'if you use your sting, it shall remain in the wound you make, and then you will die from the loss of it.', False),
('new:asking_above', 157, 'Smash your ties with the patron who never helped you.', {'money':'+'}, 'When its head was knocked off, out came a stream of gold, which the Carpenter quickly picked up', True),
('new:asking_above', 297, 'Ask the boss for a colleague\'s distinctions as well as your own.', {'standing':'-'}, 'not only refused to give him horns, but even deprived him of a portion of his ears.', True),
# ---- envy and pretence ----------------------------------------------------------------------------
('new:ape_your_betters', 2, 'Copy the habits of the one you admire.', {'standing':'-'}, 'The Ass resolved that he would live only upon dew, and in a short time died of hunger.', True),
('new:ape_your_betters', 29, 'Pay someone powerful to lift you into a role beyond your nature.', {'standing':'-'}, 'suddenly he let her go, and she fell on a lofty mountain, dashing her shell to pieces.', True),
('new:ape_your_betters', 31, 'Give up the work that feeds you to copy their habits.', {'money':'-'}, 'he could not change their color, while through want of food he perished.', True),
('new:ape_your_betters', 52, 'Try the favourite\'s tricks on the boss.', {'standing':'-'}, 'drove out the Ass to his stable with kicks and clubs and cuffs.', True),
('new:ape_your_betters', 68, 'Puff yourself up to match the one who crushed yours.', {'standing':'-'}, 'you would, I assure you, sooner burst than successfully imitate the hugeness of that monster.', False),
('new:ape_your_betters', 98, 'Copy the antics everyone applauded in a favourite.', {'standing':'-'}, 'The owner went up after him and quickly drove him down, beating him severely with a thick wooden cudgel.', True),
('new:ape_your_betters', 134, 'Try the experts\' job with their tools, untaught.', {'standing':'-'}, 'became tangled in the meshes and drowned.', True),
('new:ape_your_betters', 170, 'Speak up as if your word carried a respected colleague\'s weight.', {'standing':'-'}, M, True),
('new:ape_your_betters', 180, 'Copy an admired style until you lose your own.', {'standing':'-'}, 'in trying to neigh, they forgot how to sing.', False),
('new:ape_your_betters', 186, 'Leave your peers to live among those at the top.', {'standing':'-'}, 'in a herd of lions you are definitely a wolf.', False),
('new:ape_your_betters', 258, 'Try a bigger version of the star performer\'s feat.', {'standing':'-'}, 'He at once clipped the Jackdaw’s wings, and taking him home at night, gave him to his children.', True),
('new:ape_your_betters', 265, 'Get up and try to outdo the colleague everyone applauded.', {'standing':'-'}, 'the Beasts, in a fit of indignation, set upon him with clubs and drove him out of the assembly.', True),
('pretence', 40, 'Disguise yourself as one of the harmless to get what you want.', {'standing':'-'}, 'mistakenly caught up the Wolf instead of a sheep, and killed him instantly.', True),
('pretence', 42, 'Boast of a feat done far away, with witnesses.', {'standing':'-'}, 'Suppose this to be Rhodes, and leap for us.', False),
('pretence', 65, 'Present yourself decked in achievements borrowed from colleagues.', {'standing':'-', 'relationships.colleagues':'-'}, 'each plucked from him his own feathers, leaving the Jackdaw nothing but a Jackdaw.', True),
('pretence', 198, 'Lie about your background to someone helping you as one of their own.', {'standing':'-'}, 'The Dolphin, indignant at these falsehoods, dipped the Monkey under the water and drowned him.', True),
('pretence', 200, 'Disguise yourself to share a better-fed group\'s benefits.', {'standing':'-', 'relationships.own_kind':'-'}, 'They too, not recognizing him on account of his color, expelled him from living with them.', True),
('pretence', 201, 'Inflate your background where nobody can contradict you.', {'standing':'-'}, M, False),
('pretence', 234, 'Confess when your fake expertise is about to be tested.', {'standing':'-'}, 'confessed that he had no knowledge of medicine, and was only made famous by the stupid clamors of the crowd.', True),
('pretence', 251, 'Borrow the trappings of authority and frighten people with them.', {'standing':'-'}, 'I might possibly have been frightened myself, if I had not heard your bray.', True),
('courage_doubted', 138, 'Talk big, then back out when offered the real thing.', {'standing':'-'}, 'it is his track only I am in search of, not the Lion himself.', False),
('courage_doubted', 270, 'Run when your partner is in danger, then boast once it is over.', {'relationships.partner':'-'}, 'no dependence can be placed on your valor.', True),
('habit', 148, 'Let an old appetite break your polished act.', {'standing':'-'}, 'The dancing spectacle thus came to an end amidst the laughter and ridicule of the audience.', True),
('habit', 302, 'Let an old temptation pull you out of your new role.', {'standing':'-'}, 'Venus was much disappointed and again caused her to return to her former shape.', True),
('caught_out', 99, 'Relax once the careless have passed you by.', {'standing':'-'}, 'he ordered that the Stag should be seized and killed.', True),
('caught_out', 160, 'Laugh along when your secret is exposed.', {'relationships.companions':'+'}, 'with great glee joined in the joke', False),
('cover_up_spiral', 41, 'Ask the witness to keep quiet about the damage.', {'relationships.boss':'-'}, 'the horn will speak though I be silent.', False),
# ---- riding high, and the sneer -------------------------------------------------------------------
('new:riding_high', 27, 'Make a great commotion about what you are about to produce.', {'standing':'-'}, 'out came a Mouse.', False),
('new:riding_high', 57, 'Parade the mark you take for an honour.', {'standing':'-'}, 'a public notice to all men to avoid you as an ill mannered dog.', True),
('new:riding_high', 71, 'Crow over your beaten rival from the most exposed place.', {'standing':'-'}, 'An Eagle sailing through the air pounced upon him and carried him off in his talons.', True),
('new:riding_high', 108, 'Wear your marks of rank into the fight.', {'standing':'-'}, 'The generals, not being able to get in on account of the ornaments on their heads, were all captured and eaten by the Weasels.', True),
('new:riding_high', 110, 'Chase someone powerful who has just backed off from another.', {'standing':'-'}, 'the Lion, turning about, seized him and tore him to pieces.', True),
('new:riding_high', 117, 'Take the bows meant for what you carry as your own.', {'standing':'-'}, 'laid his whip lustily about his shoulders', True),
('new:riding_high', 126, 'Ask, incognito, how highly you are rated.', {'standing':'-'}, 'Well, if you will buy these, I’ll fling you that into the bargain.', True),
('new:riding_high', 141, 'Claim to outshine the people who truly lead.', {'standing':'-'}, 'Boast no more, but henceforth be content to give thy light in silence.', True),
('new:riding_high', 194, 'Celebrate loudly after beating a powerful opponent.', {'standing':'-'}, 'he became entangled in the meshes of a cobweb and was eaten by a spider.', False),
('new:riding_high', 245, 'Think yourself bigger than those above you.', {'standing':'-'}, 'this overestimation of myself is the cause of my destruction.', True),
('new:riding_high', 264, 'Make a show of whether to leave, sure you will be missed.', {'standing':'-'}, 'I did not know you had come, and I shall not miss you when you go away.', True),
('new:riding_high', 290, 'Carry your valuable load with your bells ringing.', {'money':'-', 'standing':'-'}, 'wounded with a sword the Mule carrying the treasure, which they greedily seized while taking no notice of the grain.', False),
('new:sneered_at', 7, 'Answer that your plainness lasts when times turn hard.', {'standing':'+'}, 'The Crow put an end to the dispute by saying,', True),
('new:sneered_at', 11, 'Challenge the one who mocks you, and keep a steady pace.', {'standing':'+'}, M, True),
('new:sneered_at', 11, 'Take the contest for granted and rest.', {'standing':'-'}, 'he saw the Tortoise had reached the goal, and was comfortably dozing after her fatigue.', True),
('new:sneered_at', 22, 'Answer that yours are few but of real quality.', {'standing':'+'}, M, False),
('new:sneered_at', 70, 'Mock the hard worker from your idle favour.', {'standing':'-'}, 'For this you were allowed to live in idleness, because you were presently to be sacrificed.', False),
('new:sneered_at', 155, 'Answer the display of credentials with your wits.', {'standing':'+'}, 'And how much more beautiful than you am I, who am decorated, not in body, but in mind.', False),
('new:sneered_at', 167, 'Answer the show-off with what you can actually do.', {'standing':'+'}, M, False),
('new:sneered_at', 223, 'Hold your peace and wait for their fall.', {'relationships.rival':'-'}, 'The Ass held his peace, and made only a silent appeal to the justice of the gods.', False),
('new:sneered_at', 223, 'Sneer at a laden colleague from your height of favour.', {'standing':'-'}, 'the Horse, having become broken-winded, was sent by his owner to the farm.', False),
('new:sneered_at', 226, 'Heed only the one in charge, not the loud one.', {'relationships.boss':'+'}, 'I only care for him who sits above you', False),
('new:sneered_at', 310, 'Keep up appearances in every season, and mock those who scale back.', {'standing':'-'}, 'at once despoiling it of its beauty and killing the tree.', True),
('new:sneered_at', 310, 'Scale back in lean seasons, whatever the mockers say.', {'standing':'+'}, 'the snow fell through to the ground, and did not injure it at all.', False),
# ---- help asked, and who repays -------------------------------------------------------------------
('plea_for_help', 0, 'Spare someone beneath you who begs to be let off.', {'relationships.spared':'+'}, 'now you know that it is possible for even a Mouse to confer benefits on a Lion.', True),
('plea_for_help', 10, 'Refuse someone who idled while you saved.', {'relationships.asker':'-'}, 'If you were foolish enough to sing all the summer, you must dance supperless to bed in the winter.', False),
('plea_for_help', 10, 'Ask those who saved to share with you, having idled yourself.', {'standing':'-'}, 'If you were foolish enough to sing all the summer, you must dance supperless to bed in the winter.', True),
('plea_for_help', 23, 'Take in and nurse someone known for treachery.', {'relationships.helped':'-', 'standing':'-'}, 'bit its benefactor, inflicting on him a mortal wound.', True),
('plea_for_help', 51, 'Refuse to take any of a struggling partner\'s load.', {'relationships.partner':'-', 'money':'-'}, 'I should not now be bearing, together with his burden, himself as well.', True),
('plea_for_help', 132, 'Help someone in trouble who can give nothing now.', {'relationships.helped':'+'}, 'The Ant, perceiving his design, stung him in the foot.', True),
('plea_for_help', 154, 'Free someone caught in a trap.', {'relationships.freed':'+'}, 'he marveled at the service rendered him by the Eagle.', True),
('plea_for_help', 190, 'Rescue someone from a dangerous enemy.', {'relationships.rescued':'+', 'relationships.enemy':'-'}, 'The Serpent, irritated at the escape of his prey, injected his poison into the drinking horn of the countryman.', True),
('plea_for_help', 230, 'Give to those who already serve you, not to those who promise.', {'relationships.staff':'+'}, 'It is surely better for me to give the water to them than to you.', False),
('plea_for_help', 286, 'Grab for help from someone known to take from everyone.', {'standing':'-'}, 'Having pricked and grievously torn the soles of his feet', True),
('plea_for_help', 296, 'Pull the thorn from someone dangerous who is in pain.', {'relationships.helped':'+', 'standing':'+'}, 'the Shepherd to be pardoned and restored to his friends.', True),
('protecting_hunted', 127, 'Protect the hunted in words while your gestures give them away.', {'relationships.hunted':'-'}, 'the Fox departed without taking any notice of the Woodcutter', True),
('protecting_hunted', 193, 'Help yourself to your protector\'s things once the danger seems past.', {'standing':'-'}, 'seeing the Hart, shot an arrow from his bow and struck it.', True),
('despised', 0, 'Offer your help to someone powerful who laughs at the idea.', {'relationships.powerful':'+'}, 'The Lion laughed and let him go.', True),
('unwelcome_in_home', 261, 'Let someone use your space a little longer.', {'money':'-'}, 'asserted her exclusive right to the place and would not permit the shepherd to approach.', True),
('unwelcome_in_home', 294, 'Keep promising the neighbour who wants you gone that you will leave soon.', {'relationships.neighbour':'+'}, 'the rich man became accustomed to the smell, and feeling no manner of inconvenience, made no further complaints.', False),
('after_your_money', 60, 'Let every well-wisher help themselves while you are down.', {'money':'-'}, 'he died, not from his sickness, but from the failure of the means of living.', True),
# ---- wanting more ---------------------------------------------------------------------------------
('new:grasping', 15, 'Let go of what you hold to snatch at a bigger prize.', {'money':'-'}, 'He thus lost both:', True),
('new:grasping', 21, 'Keep indulging in the easy pleasure.', {'standing':'-'}, 'for the sake of a little pleasure we have destroyed ourselves.', True),
('new:grasping', 46, 'Take half and get your hand free.', {'money':'-'}, 'Be satisfied with half the quantity, and you will readily draw out your hand.', False),
('new:grasping', 95, 'Repeat the pleasing exchange every day.', {'relationships.partner':'-'}, 'If you go on in this way, you will soon destroy by frequent use the pleasure of your exchange', False),
('new:grasping', 113, 'Spend, in your head, what your one asset will become.', {'money':'-'}, 'down fell the milk pail to the ground, and all her imaginary schemes perished in a moment.', True),
('new:grasping', 137, 'Keep the small sure catch rather than wait for a bigger one.', {'money':'+'}, 'I were to forego my present certain gain.', True),
('new:grasping', 139, 'Help yourself freely to what is left unguarded.', {'standing':'-'}, 'he was so full that he was not able to get out', False),
('new:grasping', 151, 'Bite off more than you can swallow in someone else\'s field.', {'standing':'-'}, 'burst its deep gullet-bag and lay down on the shore to die.', True),
('new:grasping', 156, 'Leave the sure win to chase the bigger prize.', {'money':'-'}, 'I am rightly served, for having let go of the food that I had in my hand for the chance of obtaining more.', True),
('new:grasping', 168, 'Break open the steady source to get everything at once.', {'money':'-'}, 'deprived themselves of the gain of which they were assured day by day.', True),
('new:grasping', 179, 'Feed the steady source extra to double what it yields.', {'money':'-'}, 'the Hen became fat and sleek, and never once laid another egg.', True),
('new:grasping', 213, 'Keep the one in hand rather than chase bigger ones not yet in sight.', {'money':'+'}, 'I should indeed have lost my senses if I should let go food ready in my hand', True),
('new:grasping', 266, 'Agree on a plan that needs the impossible to reach what you want.', {'standing':'-'}, 'they burst themselves with drinking long before they reached the hides.', True),
('new:grasping', 279, 'Linger where it is most rewarding.', {'standing':'-'}, 'For the sake of a little pleasant food I have deprived myself of my life.', True),
('mistook_them', 44, 'Hoard what you never use.', {'money':'-'}, 'digging down, came to the lump of gold, and stole it.', True),
('mistook_them', 262, 'Prize your showy strengths over your plain ones.', {'standing':'-'}, 'These feet which would have saved me I despised, and I gloried in these antlers which have proved my destruction.', True),
# ---- divided sides and doubtful partners ----------------------------------------------------------
('new:divided', 4, 'Show your quarrelling people that together they cannot be broken.', {'relationships.team':'+'}, 'if you are divided among yourselves, you will be broken as easily as these sticks.', False),
('new:divided', 75, 'Stop supplying the part you resent.', {'standing':'-'}, 'The whole Body quickly became debilitated', True),
('new:divided', 80, 'Offer to settle a quarrel between powerful factions.', {'relationships.factions':'-'}, 'We would far rather be destroyed in our battle with each other than admit any interference from you in our affairs.', True),
('new:divided', 105, 'Make peace with your rival once you see others waiting to profit.', {'relationships.rival':'+'}, 'They at once made up their quarrel', True),
('new:divided', 124, 'Fight a client over a technicality.', {'money':'-'}, 'The quarrel proceeded from words to blows, and while the men fought, the Ass galloped off.', True),
('new:divided', 152, 'Fight a rival to exhaustion over one prize.', {'money':'-'}, 'He ran in between them, and seizing the Kid scampered off as fast as he could.', True),
('new:divided', 171, 'Give up one junior member when you are asked.', {'standing':'-'}, 'The first step has lost us all.', True),
('new:divided', 185, 'Believe a colleague\'s whisper that your neighbour means you harm.', {'relationships.neighbour':'-', 'standing':'-'}, 'the Eagle, full of fear of the Sow, sat still on the branches, and the Sow, terrified by the Eagle, did not dare to go out from her cave.', True),
('new:divided', 224, 'Go your own way when a smooth talker suggests it.', {'standing':'-'}, 'he attacked them without fear as they fed alone, and feasted on them one by one at his own leisure.', True),
('new:divided', 246, 'Keep switching to whichever side is winning.', {'relationships.both_sides':'-', 'standing':'-'}, 'being condemned by each for his treachery, he was driven forth from the light of day', True),
('new:doubtful_ally', 12, 'Decline to share premises with someone whose work undoes yours.', {'money':'-'}, 'whatever I should whiten, you would immediately blacken again with your charcoal.', False),
('new:doubtful_ally', 37, 'Save yourself and leave your companion to face it.', {'relationships.companion':'-'}, 'Never travel with a friend who deserts you at the approach of danger.', True),
('new:doubtful_ally', 58, 'Treat new allies better than old ones to win them.', {'relationships.new_allies':'-'}, 'the Wild Goats scampered away as fast as they could to the mountains.', True),
('new:doubtful_ally', 90, 'Bind your fortunes to a new acquaintance on their ground.', {'standing':'-'}, 'The unhappy Mouse was soon suffocated by the water', True),
('new:doubtful_ally', 102, 'Swear friendship with an impressive ally from another field.', {'relationships.ally':'-'}, 'The Lion abused him as a traitor.', True),
('new:doubtful_ally', 182, 'Decline to join the weak side against the powerful.', {'relationships.weak_side':'-'}, M, False),
('new:doubtful_ally', 184, 'Refuse a loan guaranteed by someone known for taking and running.', {'relationships.borrower':'-'}, 'How then shall I be able to find you, when the day of payment comes?', False),
('new:doubtful_ally', 256, 'Argue both sides of a question in front of a new ally.', {'relationships.ally':'-'}, 'I can no longer consider you as a friend', True),
('new:doubtful_ally', 259, 'Take from a weaker neighbour who trusted you.', {'standing':'-'}, 'the eaglets, as yet unfledged and helpless, were roasted in their nest and dropped down dead at the bottom of the tree.', False),
('new:doubtful_ally', 277, 'Ask for a surety before allying with someone who can walk away.', {'relationships.ally':'-'}, M, False),
('new:doubtful_ally', 284, 'Doubt a large promise from someone who refuses a small favour now.', {'relationships.partner':'-'}, 'I can’t think that you, who refuse me a little matter now, will by and by confer on me a greater benefit.', False),
('new:doubtful_ally', 299, 'Accept a partner on the strength of their boasts.', {'relationships.partner':'-'}, 'brought back the shabbiest possible mouse, stinking from the length of time it had lain about the fields.', True),
('own_words_back', 120, 'Hold your companion to their own words.', {'relationships.companion':'-'}, M, False),
('own_words_back', 67, 'Rob the client while doing the job, then sue for your fee.', {'money':'-'}, 'I on the contrary affirm that I am still blind;', False),
('newcomer', 254, 'Fall in first with the idlest of the group.', {'standing':'-'}, 'the man put a halter on him and led him back to his owner.', True),
# ---- the lion's share, and predators let in -------------------------------------------------------
('new:lions_share', 3, 'Do the risky job first and ask for the fee after.', {'money':'-'}, M, True),
('new:lions_share', 101, 'Go into a venture with a far stronger partner.', {'money':'-'}, 'unless you willingly resign it to me, and set off as fast as you can.', True),
('new:lions_share', 158, 'Divide the spoils fairly with the powerful partner.', {'standing':'-'}, 'The Lion, bursting out into a great rage, devoured the Ass.', True),
('new:lions_share', 158, 'Leave yourself the smallest share.', {'money':'-', 'standing':'+'}, 'Who has taught you, my very excellent fellow, the art of division? You are perfect to a fraction.', True),
('new:lions_share', 274, 'Go it alone because the stronger partner takes most.', {'standing':'-'}, 'he himself fell prey to the huntsmen and hounds.', True),
('new:predator_inside', 83, 'Train someone to take from others for you.', {'relationships.pupil':'-'}, 'Since you have taught me to steal, you must keep a sharp lookout, or you will lose some of your own flock.', False),
('new:predator_inside', 129, 'Shut someone far more dangerous in with you.', {'money':'-'}, 'he flew upon the sheep and killed them, and then attacked the oxen.', True),
('new:predator_inside', 164, 'Warn the boss before the predator is let in.', {'relationships.boss':'+'}, 'Master, how can you expect the sheep to be safe if you admit a wolf into the fold?', False),
('new:predator_inside', 210, 'Leave someone long harmless in charge.', {'money':'-'}, 'The Wolf, now that he had the opportunity, fell upon the sheep, and destroyed the greater part of the flock.', True),
('new:predator_inside', 233, 'Refuse to admit a newcomer with a predator\'s instincts.', {'relationships.newcomer':'-'}, M, False),
('new:predator_inside', 281, 'Nurture newcomers likely to turn on everyone.', {'relationships.newcomers':'-'}, 'will inflict injury on all, beginning with yourself?', False),
('mercy_or_law', 86, 'Praise a small ill-gotten gain from someone in your charge.', {'relationships.charge':'-'}, 'he quickly seized her ear with his teeth and bit it off.', True),
# ---- heedless, warnings, records ------------------------------------------------------------------
('new:heedless', 13, 'Grab the next easy win without looking.', {'money':'-'}, 'If you had but touched me, my friend, you would have lost me, and all your locusts too!', False),
('new:heedless', 30, 'Go in because someone praises it, without checking the way out.', {'standing':'-'}, 'nor have exposed yourself to dangers from which you had no means of escape.', True),
('new:heedless', 32, 'Rush at what you need the moment it appears.', {'standing':'-'}, 'Having broken her wings by the blow, she fell to the ground, and was caught by one of the bystanders.', True),
('new:heedless', 62, 'Keep your eyes on lofty plans and ignore what is at your feet.', {'standing':'-'}, 'he fell accidentally into a deep well.', True),
('new:heedless', 107, 'Guard only against the danger you expect.', {'standing':'-'}, 'Some boatmen sailing by saw her, and taking a successful aim, mortally wounded her.', True),
('new:heedless', 140, 'Ask how you would get out before you go in.', {'standing':'+'}, M, False),
('new:heedless', 150, 'Doze on the edge of danger, and blame luck if you fall.', {'standing':'-'}, M, False),
('new:heedless', 216, 'Stay heavy and slow while danger comes for everyone.', {'standing':'-'}, 'the Geese, being slower of flight and heavier in their bodies, were captured.', True),
('new:heedless', 222, 'Stalk your target without watching your own feet.', {'standing':'-'}, 'he unknowingly trod upon a Viper asleep just before his feet.', True),
('new:heedless', 289, 'Swallow the new thing whole because it looks like the familiar.', {'standing':'-'}, 'Soon afterwards suffering great pain in his stomach', True),
('new:heedless', 308, 'Seize the easy prize lying unguarded.', {'standing':'-'}, 'The Serpent, turning about, bit the Crow with a mortal wound.', True),
('sign', 247, 'Sell your last safeguard on an early sign of good times.', {'money':'-'}, 'winter set in again with renewed frost and cold.', True),
('warning', 35, 'Ignore threats that have never been carried out.', {'standing':'-'}, 'The Farmer, on seeing this, charged his sling with stones, and killed a great number.', True),
('warning', 112, 'Prepare while things are quiet.', {'money':'-'}, M, False),
('warning', 214, 'Stay put while they only ask others, and move when they will act themselves.', {'standing':'+'}, 'It is time now to be off, my little ones, for the man is in earnest this time', False),
('warning', 241, 'Put off building your security once times are easy.', {'money':'+'}, 'it would be neither an easy nor a necessary work to make himself such a house as would accommodate him.', False),
('warning', 249, 'Warn early, though they call you mad.', {'standing':'+'}, 'they wondered at her knowledge and deemed her to be the wisest of birds.', True),
('go_and_look', 106, 'Agree the plan, then wait for someone else to carry it out.', {'standing':'-'}, 'there was no one found to do it.', False),
('new:bad_record', 54, 'Raise a real alarm after false ones.', {'money':'-'}, 'The Wolf, having no cause of fear, at his leisure lacerated or destroyed the whole flock.', True),
('new:bad_record', 104, 'Look for help after cheating everyone who could give it.', {'relationships.allies':'-'}, 'which of the gods do you think will pity you?', True),
('new:bad_record', 235, 'Make a show of a favour you could never have used yourself.', {'relationships.neighbour':'-'}, M, False),
('new:bad_record', 243, 'Make a new vow to a new patron after breaking the last.', {'relationships.patron':'-'}, 'how can I believe thee, who hast disowned and wronged thy former patron?', True),
('waiting', 267, 'Keep waiting for an out-of-season promise to come good.', {'money':'-'}, 'you are indulging a hope strong enough to cheat you, but which will never reward you with enjoyment.', False),
('waiting', 280, 'Wait on an angry threat that seems to promise you a windfall.', {'money':'-'}, 'The Wolf, hearing these words, went home, gasping with cold and hunger.', False),
# ---- criticism, the strong and the weak, revenge -------------------------------------------------
('new:pot_and_kettle', 38, 'Urge everyone to give up what you have lost.', {'standing':'-'}, 'If you had not yourself lost your tail, my friend, you would not thus counsel us.', True),
('new:pot_and_kettle', 84, 'Correct a junior for a fault you share.', {'standing':'-'}, 'The Mother tried in vain, and submitted without remonstrance to the reproof of her child.', True),
('new:pot_and_kettle', 111, 'Tell those who blame you to stop joining you.', {'relationships.critics':'-'}, 'Pray cease to flow into me, and then you will not be made briny.', False),
('new:pot_and_kettle', 116, 'Recommend your own trade as the answer to a crisis.', {'standing':'-'}, M, False),
('new:pot_and_kettle', 153, 'Condemn those above for what you do to those below.', {'standing':'-'}, 'Mercury presented himself, and striking the Philosopher with his wand', True),
('new:pot_and_kettle', 257, 'Find fault with everyone\'s work out of envy.', {'standing':'-'}, 'drove him from his office of judge, and expelled him from the mansions of Olympus.', True),
('wrongly_judged', 9, 'Point out that you have long been ready and are waiting on them.', {'relationships.boss':'-'}, M, False),
('called_to_account', 240, 'Turn the boss\'s anger back on the one accusing you.', {'standing':'+', 'relationships.accuser':'-'}, 'The Wolf was at once taken and flayed;', True),
('new:needling_the_strong', 49, 'Make a great deal of a small liberty.', {'standing':'-'}, 'A fine Lion you are, to be frightened of a Mouse.', False),
('new:needling_the_strong', 66, 'Taunt someone powerful while you are out of their reach.', {'standing':'+'}, M, False),
('new:needling_the_strong', 145, 'Sting the powerful again from your safe place.', {'standing':'+'}, 'The great do not always prevail.', True),
('new:needling_the_strong', 159, 'Attack someone bigger while they shelter from a worse threat.', {'relationships.bigger':'-'}, 'Let that monster go away and I will soon let you know what is the respective strength of a Goat and a Bull.', False),
('new:needling_the_strong', 252, 'Mock a colleague who has just been brought down.', {'standing':'-'}, 'While the Sparrow was thus speaking, a hawk suddenly seized him and killed him.', False),
('new:needling_the_strong', 285, 'Bully the weak and flatter the strong.', {'standing':'+'}, 'I know whom I may bully and whom I must flatter; and I thus prolong my life to a good old age.', False),
('new:needling_the_strong', 298, 'Pelt someone dangerous while they are down.', {'standing':'-'}, 'killing the Shepherds who had attacked him, raged with angry fury.', True),
('new:needling_the_strong', 298, 'Feed someone dangerous while they are down.', {'relationships.powerful':'+'}, 'I return as an enemy only to those who injured me.', True),
('new:needling_the_strong', 305, 'Strike at the small tormentor, whatever it costs you.', {'standing':'-'}, 'gave himself a heavy slap.', True),
('revenge', 149, 'Take a cruel revenge on the one who robbed you.', {'money':'-'}, 'the Farmer reaped nothing that year and returned home grieving sorely.', True),
('revenge', 166, 'Take your tormentor down with you.', {'standing':'-'}, 'At least my enemy and I shall perish together.', True),
('revenge', 244, 'Humiliate a guest with hospitality they cannot use.', {'relationships.guest':'-'}, 'The Fox, unable even to taste it, met with a fitting requital, after the fashion of her own hospitality.', True),
('revenge', 303, 'Pursue the powerful one who wronged you, even into their protector\'s presence.', {'relationships.powerful':'-'}, M, False),
('owning_up', 48, 'Offer peace to someone you hurt, who hurt you worse.', {'relationships.wronged':'-'}, 'There can henceforth be no peace between us;', True),
# ---- hard lots, used up, pleasing everyone, making them move --------------------------------------
('new:hard_lot', 61, 'Grasp the prickly problem boldly.', {'standing':'+'}, 'grasp it boldly, and it will be soft as silk to your hand, and not in the least hurt you.', False),
('new:hard_lot', 72, 'Keep bemoaning the post you have lost.', {'standing':'-'}, 'Forbear', False),
('new:hard_lot', 191, 'Try something new, a little at a time.', {'money':'+'}, 'until he brought the water within his reach and thus saved his life.', True),
('new:hard_lot', 195, 'Walk away saying you never wanted it.', {'standing':'+'}, 'The Grapes are sour, and not ripe as I thought.', False),
('new:hard_lot', 301, 'Rage against the confinement meant to protect you.', {'standing':'-'}, 'A violent fever suddenly set in, from which he died not many days later.', True),
('new:used_up', 74, 'Work a helper into the ground once the crisis has passed.', {'relationships.helper':'-'}, 'You must now go to the war on foot', True),
('new:used_up', 118, 'Leave before the one who sacrificed others turns to you.', {'relationships.boss':'-'}, M, False),
('new:used_up', 119, 'Ask to be praised for what you were, not blamed for what you are.', {'relationships.boss':'+'}, 'I rather deserve to be praised for what I have been, than to be blamed for what I am.', False),
('new:used_up', 161, 'Complain that you are always given the hardest jobs.', {'relationships.boss':'-'}, 'You have only to thank yourselves for the misfortunes to which you are exposed', False),
('new:please_everyone', 59, 'Let each party remake you to their taste.', {'relationships.parties':'-'}, M, True),
('new:please_everyone', 143, 'Change how you work at every critic\'s word.', {'money':'-', 'standing':'-'}, 'by endeavoring to please everybody he had pleased nobody, and lost his Ass in the bargain.', True),
('new:make_them_move', 14, 'Stop coaxing and use the tool you have.', {'money':'+'}, 'casting his net into the sea, made an excellent haul of fish.', True),
('new:make_them_move', 69, 'Tell your successors there is treasure hidden in the work.', {'money':'+'}, 'the vines repaid their labor by an extraordinary and superabundant crop.', True),
('new:make_them_move', 242, 'Use warmth, not force.', {'standing':'+'}, 'The Traveler no sooner felt his genial rays than he took off one garment after another', True),
('new:make_them_move', 242, 'Push harder.', {'standing':'-'}, 'the keener his blasts, the closer the Traveler wrapped his cloak around him', True),
]
@@ -0,0 +1,67 @@
#!/usr/bin/env python3
"""Render groups.json + records.json + options_by_entry.json as one self-contained page: REFERENCE.html."""
import html, json, pathlib
here = pathlib.Path(__file__).parent
d = json.loads((here / 'groups.json').read_text())
recs = {r['chunk']: r for r in json.loads((here / 'records.json').read_text())}
stories = json.loads((here.parent / 'stories.json').read_text())
obe = json.loads((here / 'options_by_entry.json').read_text())
new = obe.pop('_new_entries')
e = html.escape
SRC = {'archetype': 'archetype', 'filled': 'filled gap'}
def src(o):
if o['source'].startswith('scene:'):
n = o['source'].split(':')[1]
return f'from fable {n}' + ('' if o['in_group'] else ' <span class="warn">(outside this group)</span>')
return SRC[o['source']]
def moves(m): return ' '.join(f'<code>{e(k)} {e(v)}</code>' for k, v in m.items())
def scene(c):
r = recs[c]
moral = f'<br><i>Moral:</i> {e(r["moral"])}' if r['moral'] else ''
return (f'<details><summary><b>{c}</b> · <i>{e(stories[r["story"]]["title"])}</i> — {e(r["predicament"])}</summary>'
f'<p class="sum">{e(r["summary"])}{moral}</p></details>')
def section(g):
tag = ' <span class="warn">small group, below the 13-fable rule</span>' if g['small'] else ''
return f'''<section><h2>{g["id"]} · {e(g["name"])}{tag}</h2>
<p class="pred">{e(g["predicament"])}</p>
<p class="meta">{e(g["sentence"])} · {len(g["members"])} fables · stage <b>{g["stage"]}</b></p>
<h3>Options</h3><ol>{"".join(f"<li>{e(o['text'])} <span class='src'>{src(o)}</span><br>{moves(o['moves'])}</li>" for o in g["options"])}</ol>
<h3>Fables</h3>{"".join(scene(m["chunk"]) for m in g["members"])}</section>'''
big = ''.join(section(g) for g in d['groups'] if not g['small'])
small = ''.join(section(g) for g in d['groups'] if g['small'])
un = ''.join(scene(c) for c in d['unassigned'])
def entry(k, v):
name = new[k]['name'] + ' <span class="src">(new)</span>' if k in new else e(k)
rows = ''.join(f'<li>{e(o["text"])} {moves(o["moves"])} <span class="src">fable {o["source"].split(":")[1]} · '
f'{"<b>stated</b>" if o["stated"] else "inferred"}</span><br><span class="sum">“{e(o["evidence"])}”</span></li>'
for o in v)
return f'<details><summary><b>{name}</b> — {len(v)} options, {sum(o["stated"] for o in v)} stated</summary><ul>{rows}</ul></details>'
opts = [o for v in obe.values() for o in v]
meas = ''.join(entry(k, v) for k, v in obe.items())
page = f'''<!doctype html><html lang="en"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><title>Aesop Reference Groups</title>
<style>
:root{{--bg:#fbfaf7;--fg:#1d1d1b;--mute:#6b6760;--line:#e2ded6;--acc:#2f5d8a;--warn:#a4481c}}
@media (prefers-color-scheme:dark){{:root:not([data-theme="light"]){{--bg:#191917;--fg:#e8e6e1;--mute:#a09c94;--line:#34332f;--acc:#8ab4dc;--warn:#e6915f}}}}
:root[data-theme="dark"]{{--bg:#191917;--fg:#e8e6e1;--mute:#a09c94;--line:#34332f;--acc:#8ab4dc;--warn:#e6915f}}
body{{background:var(--bg);color:var(--fg);font:16px/1.5 Georgia,serif;max-width:52rem;margin:0 auto;padding:1rem 16px 4rem}}
h1{{font-size:1.5rem}} h2{{font-size:1.15rem;margin:0 0 .3rem}} h3{{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--mute);margin:.9rem 0 .3rem}}
section{{border-top:1px solid var(--line);padding:1.2rem 0}} .pred{{font-size:1.05rem;margin:.2rem 0}}
.meta,.src,.sum{{color:var(--mute);font-size:.88rem}} .warn{{color:var(--warn);font-size:.85rem}}
code{{font:12px ui-monospace,monospace;border:1px solid var(--line);border-radius:3px;padding:0 .3em;margin-right:.2em;overflow-wrap:anywhere}}
li{{margin:.35rem 0}} details{{margin:.2rem 0}} summary{{cursor:pointer}} .sum{{margin:.2rem 0 .5rem 1.2rem}}
</style></head><body>
<h1>Aesop's Fables: reference groups</h1>
<p class="meta"><i>Three Hundred Aesop's Fables</i>, tr. George Fyler Townsend, 1867 (Project Gutenberg). 313 fables, one scene
per fable. Summaries, predicaments, groups, options and the options measurement written by Claude reading every fable:
no inference of any kind. A comparison baseline, not a pack. Option moves give a direction only, never a number.</p>
{big}
<section><h2>Small groups (5-12 fables)</h2><p class="meta">Situations that recur, but below the 13-fable rule this corpus's size sets.</p></section>
{small}
<section><h2>Unassigned ({len(d["unassigned"])})</h2><p class="meta">Fables that fit no situation recurring in five or more fables.</p>{un}</section>
<section><h2>Fables as an option source</h2>
<p class="meta">{len(opts)} options for {len(obe)} catalogue situations, {sum(o["stated"] for o in opts)} of them
<b>stated</b>: the fable's own outcome or moral shows where every move goes. The rest are inferred.</p>{meas}</section>
</body></html>'''
(here / 'REFERENCE.html').write_text(page, encoding='utf-8')
print('wrote', here / 'REFERENCE.html', len(page), 'bytes')
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,36 @@
"""Split the Project Gutenberg text of *Three Hundred Aesop's Fables*, translated by George Fyler Townsend (1867,
eBook #21), one story per fable and ONE SCENE PER FABLE. This departs from the usual scene rule on purpose:
most fables are under 80 words, so the rule's 80-word tail would discard them, and a fable split in two would
lose its turn. Titles come from the contents (after its AESOP'S FABLES line); each must be found, in order, as
a line of its own in the body. The preface and the life of Aesop are dropped. The printed drop capital was lost
in transcription, so many fables open with the first word's initial letter missing (e.g. "WOLF" for "A WOLF")."""
import json, pathlib, re, sys
sys.path.insert(0, '..')
from gutenberg_chunks import gutenberg_body, paragraphs
VOLUME = "Three Hundred Aesop's Fables (tr. George Fyler Townsend, 1867)"
lines = gutenberg_body('corpus/three-hundred-aesops-fables.txt')
c0 = next(i for i, l in enumerate(lines) if l.strip() == 'CONTENTS')
f0 = next(i for i, l in enumerate(lines) if i > c0 and l.strip().upper().replace('Æ', 'AE') in ("AESOP’S FABLES", "AESOP'S FABLES"))
titles = []
for l in lines[f0 + 1:]:
if l.strip(): titles.append(l.strip())
elif titles and not any(x.strip() for x in lines[lines.index(l) + 1:lines.index(l) + 3]): break
titles = [t for t in titles if t not in ('FOOTNOTES', 'INDEX')] # back matter listed in the contents
body0 = next(i for i, l in enumerate(lines) if i > f0 + len(titles) and l.strip() == titles[0])
heads, at = [], body0
for t in titles:
at = next(i for i in range(at, len(lines)) if lines[i].strip() == t and not lines[i].startswith(' '))
heads.append(at); at += 1
end = next(i for i in range(heads[-1] + 1, len(lines)) if lines[i].strip() in ('FOOTNOTES', 'INDEX'))
stories, chunks = [], []
for n, (t, a) in enumerate(zip(titles, heads)):
text = ' '.join(paragraphs('\n'.join(lines[a + 1:(heads[n + 1] if n + 1 < len(heads) else end)])))
w = len(text.split())
stories.append({'volume': VOLUME, 'title': t, 'words': w, 'text': text})
chunks.append({'story': n, 'title': t, 'volume': VOLUME, 'text': text, 'words': w})
pathlib.Path('stories.json').write_text(json.dumps(stories, indent=1, ensure_ascii=False), encoding='utf-8')
pathlib.Path('chunks.json').write_text(json.dumps(chunks, ensure_ascii=False), encoding='utf-8')
ws = sorted(c['words'] for c in chunks)
print(f'fables {len(stories)} words/fable min {ws[0]} median {ws[len(ws)//2]} max {ws[-1]} total {sum(ws):,}')
print('shortest:', min(stories, key=lambda s: s['words'])['title'], '| longest:', max(stories, key=lambda s: s['words'])['title'])
File diff suppressed because it is too large Load Diff
+106
View File
@@ -0,0 +1,106 @@
# Bierce reference set: *Tales of Soldiers and Civilians* (1891)
A hand-made comparison baseline for the story-to-pack pipeline, a sibling of the Jacobs set in
`../jacobs/` and the Wharton set in `../wharton/`. 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/tales-of-soldiers-and-civilians.txt` | Project Gutenberg #13334 ("Collected Works of Ambrose Bierce, Vol. II", which holds this book and nothing else) |
| `split_gutenberg.py` | → `stories.json` (26 stories: 15 "Soldiers", 11 "Civilians") and `chunks.json` (299 scenes, same 320-word paragraph rule as `../chunk.py`) |
| `dump.py` | `python3 dump.py A B` prints scenes A..B for reading |
| `claude/batches/sNN.json` | per story: `{chunk, story, summary, predicament}`, the same schema as `../jacobs/claude/batches/` |
| `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` (unchanged from Jacobs: it resolves paths relative to itself) |
| `claude/page.py` | → `claude/REFERENCE.html`, the readable page |
Rebuild: `python3 split_gutenberg.py && cd claude && python3 build.py && python3 page.py`.
## What is in it
- **299 predicaments**: one sentence each (median 20 words, min 15, max 24), written to the
`redescribe.py` rules: no names, jobs, ranks, places or story-only objects. The `topic_words`
leak check flags 20 of 299. 18 are role or kin words (partner, newcomer, visitor, lover, father,
guest), kept on purpose because the design's cast is roles. The other 2 are "judge" used as a
verb. War roles are kept as roles, not ranks: *enemy*, *comrades*, *superior*, *subordinate*,
*prisoner*, *captor*.
- **31 groups**, each a situation that recurs in **three or more stories** (18 span 3, 10 span 4,
2 span 5, 1 spans 6). No story supplies more than half of any group's members. Each scene sits in at
most one group: **201 are assigned and 98 fit nothing that recurs**. All 26 stories feed at
least one group.
- **Options**: 3 to 5 per group, 128 in all (25 groups have 4, 5 have 5, 1 has 3). 96 come from what
someone in a scene did or refused to do (`scene:N`), 15 are archetypes and 17 fill gaps. **22
scene options cite a scene outside their own group.** That is looser than DESIGN.md's "drawn from
other scenes in the cluster", and `groups.json` marks each one `in_group: false`. As in Wharton,
most of these are the scene just before or after a member, where the character acts.
- **Moves**: spine paths with a direction only (`+`, `-`, `risk`, `set`). There are no magnitudes,
as the design requires. `standing` is moved 65 times, the two skills 66 times and `money` only 9.
Relationship roles are generic (`authority`, `comrades`, `loved_one`, `family`, `rival`, `captor`,
`doubters` and others), and flags record what the player did (`slept_on_watch`,
`duty_over_love`, `struck_blind`, `took_dare`, `guilty_secret`).
- **Skills** proposed for this corpus: `nerve`, reused from Jacobs, for holding steady under fear, and
`wits`, for reading signs and thinking coolly in a tight spot. `wits` fits Bierce's scouts,
trapped men and sceptics better than Jacobs' `cunning` would.
- **Stage** comes from protagonist standing, judged **per story, not per scene**, in `STANDING` in
`groups_src.py`. Enlisted men, a captive, a child, a pauper and two frontier loners rank low.
Officers and professionals rank middle. A planter, a governor, a camp's leading citizen, a rich
idler and an heiress rank high. The groups come out 19 middle, 9 low and 3 high. The skew is the
book's own: most soldier stories are told from an officer's side.
## Against the existing catalogue
The 36-entry catalogue (O. Henry, Wharton, Jacobs) is mostly courtship, secrets and schemes.
**Nine groups overlap an existing entry closely:** G04 private score (`power_over_you`),
G13 alone with the dead (`dread`), G19 truth nobody would believe (`cant_prove_it`), G21 judged
before heard (`wrongly_judged`), G22 tempting chance (`sure_thing` / `strings`), G26 devoted to
one who wronged you (`sacrifice`), G27 someone thought gone turns up (`past_comes_back`), G31 new
to a hardened company (`newcomer`) and G18 warning easy to laugh off (between `dread` and `sign`).
**Three overlap in part:** G03 told to obey without question (`pressed_to_wrong`, plus
`own_words_back` in scene 138), G05 stranger not what they seem (`sure_thing`) and G20 careless
words cost a life (`owning_up`).
**Nineteen are new situation types**:
- **Duty and orders:** G02 duty demands you harm someone you love; G06 your heart is on the other side.
- **Watch and danger:** G01 on watch, and your guard slips; G07 the only way to know is to go and look; G17 the danger you can only wait for; G16 cornered, looking for a way out; G15 condemned and waiting to die.
- **Courage and fear:** G09 refusing the safe way out lest it look like fear; G10 your courage called into question; G11 finding out you are afraid; G12 a gaze you cannot escape.
- **Harm to others:** G14 the one you struck in the dark (mistaken-identity violence); G08 one bold act sweeps everyone into slaughter.
- **Help and suffering:** G23 turned away when you need help most; G24 watching others suffer from safety; G25 trying to save someone who will not be saved.
- **Loss and isolation:** G28 coming home too late; G29 alone with an old grief; G30 lost in the dark, far from help.
## How this corpus differs from Jacobs and Wharton
It is the largest reference set so far, 26 stories against Jacobs' 12 and Wharton's 10. That is
the first corpus inside DESIGN.md's 20-30 range. So the bar was raised to three stories per group,
and 31 groups still cleared it.
**The register is war and horror, and the situations are mostly inner ones.** Where Jacobs and
Wharton recur on money, marriage and secrets, Bierce recurs on fear, duty, courage and dying. That
shows in the moves. `money` hardly appears, and `nerve` carries much of the weight. A pack built
from this corpus will need its numeric search to make `nerve` and `standing` do the work that
`money` does in the other packs.
**Groups straddle the two halves of the book**, and a tool that groups by setting or mood should
split them. G14 "the one you struck in the dark" holds a soldier who shoots his twin brother on
picket and a lawyer who shoots a woman he takes for a panther. G12 "a gaze you cannot escape"
holds a trapped scout staring into his own rifle, a guest facing a snake, a mother facing a
panther and a girl under a mesmerist. G10 "your courage called into question" holds a
battlefield suicide and a ghost-story dare.
**Twist endings concentrate meaning in the last scene.** Many stories turn on a final line: the
rider was his father, the snake was stuffed, the applicant was the founder, the child was a deaf
mute. Those closing scenes often belong to a different situation from the story's body, or to
none. That is one reason 98 scenes stay unassigned. Most of the rest are scene-setting narration
(the Chickamauga march, Owl Creek's dying dream, the Coulter's Notch gun duel) or one-story
material with no second instance, such as the mercy killing in *The Coup de Grâce*.
## Known defects
- Scene 166 ends with the stray part heading `CIVILIANS`. The in-story subtitles and section headings of
*A Son of the Gods*, *An Affair of Outposts*, *One Kind of Officer*, *George Thurston*, *The
Suitable Surroundings* and *The Eyes of the Panther* (for example "HOW TO SAY WHAT IS WORTH
HEARING") stay inline in scene text. They are
not removed, so that `chunks.json` stays the corpus as split.
- Scene 227 is only the mock-archaic epigraph of *The Man and the Snake*. It was summarised anyway
and is in no group.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,62 @@
[
{
"chunk": 0,
"story": 0,
"summary": "A Union soldier lies asleep at his post in a clump of laurel on a cliff-top above a valley, a crime for which the lawful penalty is death.",
"predicament": "Someone trusted to keep watch has fallen asleep at the post, where being found out would cost them their life."
},
{
"chunk": 1,
"story": 0,
"summary": "Five regiments lie hidden in the valley below, meaning to climb past the sleeping sentinel at nightfall and surprise the enemy camp; if they are seen, they are trapped.",
"predicament": "A whole company's plan depends on staying unseen, and one careless lookout could give every one of them away."
},
{
"chunk": 2,
"story": 0,
"summary": "The sentinel, only son of a wealthy Virginian family, had told his father he was joining the Union; the father called him a traitor, told him to do his duty, and asked him not to disturb his dying mother.",
"predicament": "A son tells his father he is going over to the other side, and is told coldly to do his duty."
},
{
"chunk": 3,
"story": 0,
"summary": "He left home, proved himself brave and was picked for this dangerous outpost, but fatigue beat him; now something wakes him and he grips his rifle.",
"predicament": "Someone who left home to prove their worth wakes suddenly at a dangerous post, having failed the trust placed in them."
},
{
"chunk": 4,
"story": 0,
"summary": "He sees on the cliff edge a Confederate horseman, motionless as a statue, looking down into the valley where the regiments hide.",
"predicament": "Someone on watch sees an enemy standing in plain view, looking straight down at the comrades they are meant to protect."
},
{
"chunk": 5,
"story": 0,
"summary": "He aims at the horseman's breast, but the rider turns and seems to look into his eyes; the young soldier shakes, turns faint and drops his face to the leaves.",
"predicament": "Someone who must kill a stranger to protect their comrades is overcome by horror at the very moment of doing it."
},
{
"chunk": 6,
"story": 0,
"summary": "Recovering, he tells himself the rider may have seen nothing and may ride away, then sees an escort watering horses in plain view in the meadow below; the secret is out.",
"predicament": "Someone hoping they will not have to kill sees proof that the other already knows the secret that endangers everyone."
},
{
"chunk": 7,
"story": 0,
"summary": "Recalling his father's parting words about duty, he aims at the horse instead and fires calmly; below, an officer looks up and sees a horseman riding down through the air.",
"predicament": "Someone forced to choose between duty and the life of a person they love remembers a parent's words, and fires."
},
{
"chunk": 8,
"story": 0,
"summary": "The officer watches horse and rider fall, collapses with terror, then searches for the body in the wrong place and returns to camp.",
"predicament": "Someone who has just seen something impossible is too shaken to make sense of it, and searches in the wrong place."
},
{
"chunk": 9,
"story": 0,
"summary": "The officer, knowing better than to tell an incredible truth, says nothing of it; the sentinel tells a sergeant he shot a horse off the rock, and that the rider was his father.",
"predicament": "Someone who has killed their own parent in the line of duty is ordered to report it, and answers without emotion."
}
]
@@ -0,0 +1,92 @@
[
{
"chunk": 10,
"story": 1,
"summary": "A man with bound hands and a noose round his neck stands on planks laid across a railroad bridge, attended by two soldiers and a sergeant, while a captain watches and sentinels close both ends.",
"predicament": "Someone bound and condemned stands at the edge of their own death while the people carrying it out go calmly about it."
},
{
"chunk": 11,
"story": 1,
"summary": "A fort commands the bridge and a company of infantry stands motionless in line to witness the hanging; nobody moves, as military etiquette requires in the presence of death.",
"predicament": "A condemned person faces a silent crowd drawn up to watch, and not one of them will move to help."
},
{
"chunk": 12,
"story": 1,
"summary": "The condemned man is a well-dressed civilian planter of about thirty-five with a kindly face, plainly no common criminal.",
"predicament": "A respectable person, plainly no common criminal, is about to be put to death for something done in a cause."
},
{
"chunk": 13,
"story": 1,
"summary": "The plank he stands on is now held only by the sergeant's weight; unblindfolded, he stares at the water and watches a piece of driftwood that seems to move very slowly.",
"predicament": "Someone whose life hangs on another's single step waits for the signal, and finds their mind drifting to trifles."
},
{
"chunk": 14,
"story": 1,
"summary": "Trying to think of his wife and children, he is tormented by the loud ticking of his watch; he imagines freeing his hands, diving and escaping home, and the captain nods to the sergeant.",
"predicament": "Someone about to die tries to fix their last thoughts on their family, and instead finds themselves planning a desperate escape."
},
{
"chunk": 15,
"story": 1,
"summary": "In a flashback, the planter, an ardent secessionist kept out of the army, longs for distinction; a grey-clad rider tells him that any civilian caught interfering with the railroad will be hanged.",
"predicament": "Someone who has longed to prove themselves in a cause is told of a dangerous chance to do it, and a harsh penalty."
},
{
"chunk": 16,
"story": 1,
"summary": "The rider tells him the bridge is lightly guarded and that dry driftwood lodged against it would burn; the planter is tempted, and the rider turns out to be an enemy scout.",
"predicament": "A friendly stranger hands someone eager to prove themselves an easy chance at glory, and it is really a trap."
},
{
"chunk": 17,
"story": 1,
"summary": "Falling through the bridge, he feels agony and swinging, then plunges into the water; he believes the rope has broken and rises toward the surface, determined not to be shot.",
"predicament": "Someone who should already be dead believes they have been given an impossible second chance, and grabs at it."
},
{
"chunk": 18,
"story": 1,
"summary": "His hands seem to free themselves and tear off the noose; in agony, he surfaces and draws a great shrieking breath.",
"predicament": "Someone whose body fights to live against their own will struggles to the surface in unbearable pain."
},
{
"chunk": 19,
"story": 1,
"summary": "His senses are unnaturally sharp; he sees every leaf and insect, and turning, sees his executioners on the bridge pointing and shouting at him.",
"predicament": "Someone escaping death sees the world with impossible clarity, and sees the people who meant to kill them pointing at them."
},
{
"chunk": 20,
"story": 1,
"summary": "The sentinels fire and miss; a lieutenant calmly orders a volley, and he dives deep as the bullets sink around him.",
"predicament": "Someone fleeing for their life hears the calm order that will send a volley after them, and has only seconds to hide."
},
{
"chunk": 21,
"story": 1,
"summary": "He swims downstream, reasoning coolly about the next volley, as the fort's cannon sends a shot plunging near him; he resolves to watch the gun's smoke.",
"predicament": "Someone hunted by a far stronger force keeps their head and tries to reason out the enemy's next move."
},
{
"chunk": 22,
"story": 1,
"summary": "A whirlpool flings him ashore out of sight; he weeps with joy, then grapeshot sends him running into a forest that seems endless and uncanny.",
"predicament": "Someone who seems to have escaped certain death is overwhelmed with joy, then finds the familiar world strangely changed."
},
{
"chunk": 23,
"story": 1,
"summary": "Exhausted and starving, he follows a strange straight road under unfamiliar stars, hearing whispers in an unknown tongue, his neck swollen and his feet no longer feeling the ground.",
"predicament": "Someone struggling home to their family finds the road and the stars wrong, and their own body failing them."
},
{
"chunk": 24,
"story": 1,
"summary": "He reaches his home and his wife comes smiling to meet him, but as he reaches for her there is a blow and blinding light; he was hanged, and his body swings beneath the bridge.",
"predicament": "Someone reaches home and the person they love at last, only for it all to prove a dying dream."
}
]
@@ -0,0 +1,62 @@
[
{
"chunk": 25,
"story": 2,
"summary": "A small child slips away from his poor home into a forest, delighted by freedom and the chance of adventure.",
"predicament": "A child who has slipped away from home unseen is thrilled by freedom, with no idea of the danger ahead."
},
{
"chunk": 26,
"story": 2,
"summary": "The six-year-old son of a planter who was once a soldier plays at war with a wooden sword, chasing imaginary enemies across a brook far from home.",
"predicament": "A child playing at the glory an elder taught them pushes further and further from safety, sure of their own victory."
},
{
"chunk": 27,
"story": 2,
"summary": "A rabbit sends him fleeing in terror; lost and torn by brambles, he cries himself to sleep between two rocks while distant thunder sounds and his mother searches frantically at home.",
"predicament": "A child who ran from a small fright is lost far from home, while a parent searches desperately and cannot find them."
},
{
"chunk": 28,
"story": 2,
"summary": "Waking at dusk, he goes the wrong way and sees strange shapes approaching, many of them, all moving toward the brook.",
"predicament": "A lost child alone at dusk sees strange shapes creeping toward them, too many to count, and cannot tell what they are."
},
{
"chunk": 29,
"story": 2,
"summary": "They are wounded men, hundreds of them, crawling toward the creek on hands and knees; some stop and die, others gesture as if praying.",
"predicament": "Someone comes upon a vast crowd of the dying, all crawling silently toward water, and does not understand what they see."
},
{
"chunk": 30,
"story": 2,
"summary": "The child thinks the bloodied men are clowns and rides one like a horse; the man, whose lower jaw is shot away, throws him off and shakes a fist, and the child hides behind a tree.",
"predicament": "An innocent treats other people's agony as a game, until one of the suffering turns on them in fury."
},
{
"chunk": 31,
"story": 2,
"summary": "A red light rises beyond the trees; the child puts himself at the head of the crawling wounded with his wooden sword and solemnly leads them toward it.",
"predicament": "An innocent who understands nothing of the disaster around them puts themselves at the head of its victims and leads them on."
},
{
"chunk": 32,
"story": 2,
"summary": "The ground is littered with the debris of a retreat; a battle had been fought all around the sleeping child hours before, and he heard none of it.",
"predicament": "Someone slept through a catastrophe that happened all around them, and now walks through its wreckage without knowing it."
},
{
"chunk": 33,
"story": 2,
"summary": "The stones in the creek are red with blood; the strongest of the wounded drink and drown, and the child waves his cap to encourage the rest toward the fire.",
"predicament": "Someone cheerfully urges on a group of the doomed, not seeing that those who reached what they wanted have died of it."
},
{
"chunk": 34,
"story": 2,
"summary": "He reaches a burning house and dances before it, then recognises it as his own home and finds his mother dead, killed by a shell; he is a deaf mute and can only make wordless cries.",
"predicament": "Someone returns to the home they wandered from and finds it destroyed and the person they love dead, and cannot even cry out."
}
]
@@ -0,0 +1,68 @@
[
{
"chunk": 35,
"story": 3,
"summary": "An advancing army halts at the edge of a wood before open country and a stone wall on a distant crest; after days of fighting the enemy has vanished, and nobody knows whether they wait behind the wall.",
"predicament": "A large group must cross open ground toward a place where an enemy may be waiting, and nobody knows whether they are."
},
{
"chunk": 36,
"story": 3,
"summary": "The narrator reflects on how strange the enemy's leavings seem, and reads from the tracks that the enemy withdrew in good order up the hill rather than fleeing.",
"predicament": "People who have fought an unseen enemy for days study the signs they left, trying to guess whether they are truly gone."
},
{
"chunk": 37,
"story": 3,
"summary": "The commander orders the skirmish line forward; a young officer in full dress on a white horse with a scarlet blanket gallops up, and the whole line laughs at his vanity.",
"predicament": "A showy young newcomer rides in front of hardened veterans, who laugh at him as a vain fool."
},
{
"chunk": 38,
"story": 3,
"summary": "The young officer asks the commander something the older man is reluctant to grant, then rides alone at a walk straight toward the wall; the skirmishers are halted, and the watching army is stirred to adoration and shame for having laughed.",
"predicament": "Someone the crowd mocked a moment ago volunteers to walk alone toward almost certain death so that the others need not."
},
{
"chunk": 39,
"story": 3,
"summary": "The whole army watches in silence; the horseman swerves toward a break in the wall, meaning to ride through and see what lies beyond.",
"predicament": "Someone takes a mortal risk alone while a whole crowd holds its breath, unable to do anything but watch."
},
{
"chunk": 40,
"story": 3,
"summary": "The narrator explains that skirmishers sent to find out whether the enemy holds the ridge would be slaughtered; the young officer is paying the price alone.",
"predicament": "The only way to learn whether danger waits ahead is to send someone into it, and one person offers to pay the whole price."
},
{
"chunk": 41,
"story": 3,
"summary": "He could surrender and live, but that would answer nothing; for his errand to succeed he must either return unharmed or be shot dead before his comrades' eyes.",
"predicament": "Someone on a lonely errand could save themselves by giving up, but that would make the whole sacrifice worthless."
},
{
"chunk": 42,
"story": 3,
"summary": "Having seen the enemy line, he gallops back and forth along the crest trying to force the hidden troops to reveal themselves by firing on him, while they hold their fire.",
"predicament": "Someone who has found out the truth cannot bring word back, so they try to force the enemy to reveal it themselves."
},
{
"chunk": 43,
"story": 3,
"summary": "He dashes at the wall, then turns and races back; the wall erupts in rifle fire and artillery, he survives the first volley to a great cheer, and shells begin falling among the watching troops.",
"predicament": "Someone who has drawn every enemy weapon onto themselves races for home while their comrades cheer and the danger spreads to them."
},
{
"chunk": 44,
"story": 3,
"summary": "His horse is killed; he stands and salutes with his sabre before he falls, and his comrades, choking with emotion, surge forward against orders into the enemy's fire.",
"predicament": "A crowd moved by one person's sacrifice rushes forward against orders, throwing away the very lives it was meant to save."
},
{
"chunk": 45,
"story": 3,
"summary": "The commander, unmoved, sounds the halt; the lines fall back carrying their wounded and the dead, and the narrator laments the many needless deaths and the hero's vain devotion.",
"predicament": "Someone in command must call back a crowd carried away by grief, knowing the sacrifice that inspired them was wasted."
}
]
@@ -0,0 +1,122 @@
[
{
"chunk": 46,
"story": 4,
"summary": "A fearless private detailed as a scout slips out past the earthworks, sent by his general to creep as close to the enemy lines as possible and learn all he can.",
"predicament": "Someone trusted for their nerve is sent alone into hostile ground to find out what the enemy is doing."
},
{
"chunk": 47,
"story": 4,
"summary": "He passes the picket line, where a man remarks that the enemy will soon have his rifle, and creeps forward through the thicket, steady and alert.",
"predicament": "Someone creeping alone toward an enemy's lines hears their own comrades already writing them off as dead."
},
{
"chunk": 48,
"story": 4,
"summary": "He sees an enemy rifle-pit, watches it, reads the signs correctly and stands up: the enemy has gone.",
"predicament": "Someone creeping toward danger must judge from small signs whether the enemy is still there, and stake their life on the answer."
},
{
"chunk": 49,
"story": 4,
"summary": "To be certain, he pushes on to a derelict plantation and hides in a tumbledown shed on posts, from which he sees the enemy's rear-guard climbing a mountain road.",
"predicament": "Someone who already knows enough to report pushes further on to be certain, into a shaky and exposed hiding place."
},
{
"chunk": 50,
"story": 4,
"summary": "His duty is to hurry back and report, but the retreating column tempts him, and he cocks and sets his rifle to fire into it.",
"predicament": "Someone whose duty is to hurry back with news is tempted to stay and strike a blow that changes nothing."
},
{
"chunk": 51,
"story": 4,
"summary": "The narrator traces how fate brought a deserter from Europe to command an enemy battery two miles away, where, idling, he fires a shot at what he takes for enemy officers, and it flies high.",
"predicament": "A careless act by a stranger far away, done only to pass the time, is about to decide someone's fate."
},
{
"chunk": 52,
"story": 4,
"summary": "The stray shell smashes a post and brings the shed down on him; half-conscious, he imagines himself buried with his widow kneeling on his grave.",
"predicament": "Someone knocked senseless in an instant wakes believing they are already dead and buried, unable to speak to those they love."
},
{
"chunk": 53,
"story": 4,
"summary": "Coming round, he hears a voice saying he is caught like a rat in a trap, and calmly opens his eyes to reconnoitre and plan his defence.",
"predicament": "Someone who realises they are trapped gathers themselves to size up their situation calmly, as if it were an enemy."
},
{
"chunk": 54,
"story": 4,
"summary": "He finds himself pinned by beams across his chest, legs and head, with only his right arm partly free; he is unhurt.",
"predicament": "Someone pinned and helpless, unhurt but unable to move, takes stock of the little freedom left to them."
},
{
"chunk": 55,
"story": 4,
"summary": "He tries every way to get his free hand onto the beam across his chest and cannot, and gives up that attempt.",
"predicament": "Someone trapped tries every way to free themselves, and has to admit the first way out is no way at all."
},
{
"chunk": 56,
"story": 4,
"summary": "He sees the muzzle of his own rifle protruding from the wreckage, aimed at the exact centre of his forehead.",
"predicament": "Someone trapped and helpless finds their own weapon pointed straight at them, and can do nothing to turn it away."
},
{
"chunk": 57,
"story": 4,
"summary": "He remembers he left it cocked with a hair trigger; he feels uneasy but not afraid, recalls facing guns before, and looks away.",
"predicament": "Someone proud of their courage faces a danger they made themselves, and tells themselves it is nothing to fear."
},
{
"chunk": 58,
"story": 4,
"summary": "Struggling to free his feet, he fears disturbing the rifle; he recalls a past blunder with a loaded weapon, then distracts himself with the trees and the thought that he faces north, toward his family.",
"predicament": "Someone trapped under a threat they cannot remove tries to distract themselves, and their thoughts drift to their family."
},
{
"chunk": 59,
"story": 4,
"summary": "He decides to wait to be found, but a pain grows in his forehead whenever he closes his eyes; he drifts into childhood memories, and when he cries out he hears fear in his own voice and denies it.",
"predicament": "Someone who has always been fearless hears terror in their own voice for the first time, and lies to themselves about it."
},
{
"chunk": 60,
"story": 4,
"summary": "He cannot look away from the muzzle, beats his hand bloody in delirium, resolves at least to die game, and curses rats that climb near the trigger.",
"predicament": "Someone certain they are going to die resolves at least to die bravely, but cannot bear not knowing when."
},
{
"chunk": 61,
"story": 4,
"summary": "The pain seems to bore through his head; memory, home and glory are erased, and the strong, brave man trembles and screams with terror.",
"predicament": "Someone renowned for courage is broken by waiting for death, until nothing is left of them but fear."
},
{
"chunk": 62,
"story": 4,
"summary": "He works a loose strip of board free and inches it toward the rifle, hoping to push the muzzle aside or deflect the bullet; the effort steadies him, though he is still terrified.",
"predicament": "Someone paralysed by terror finds one small thing to do against the danger, and doing it steadies them."
},
{
"chunk": 63,
"story": 4,
"summary": "The board jams short; terror returns, then he grows calm and deliberately pushes it against the trigger. The rifle was already empty, but the shock kills him.",
"predicament": "Someone who can no longer bear waiting for death decides to face it head on and end the waiting themselves."
},
{
"chunk": 64,
"story": 4,
"summary": "The scout's brother, commanding the picket line, hears a distant crash and notes the time; he is then ordered to advance, since the enemy is thought to have retreated.",
"predicament": "Someone waiting anxiously for a relative sent into danger hears a distant sound, and is ordered forward before knowing what it means."
},
{
"chunk": 65,
"story": 4,
"summary": "The skirmishers pass the ruin; the brother glances at a dust-grey body in the timbers, takes it for an enemy dead a week, and moves on, checking his watch: twenty-two minutes have passed.",
"predicament": "Someone passes the body of their own relative without recognising it, and dismisses it as a long-dead stranger."
}
]
@@ -0,0 +1,56 @@
[
{
"chunk": 66,
"story": 5,
"summary": "The narrator introduces the best officer on the general's staff, a tall, handsome, courteous and fearless newcomer from another regiment, conspicuous in full uniform in action.",
"predicament": "A gifted newcomer joins a close-knit group whose members know nothing of him, and quickly stands out among them."
},
{
"chunk": 67,
"story": 5,
"summary": "The staff grow fond of him but are dismayed that he is vain of his courage: in every battle he refuses to take cover, standing exposed where braver, older men sensibly hide.",
"predicament": "Someone admired by everyone refuses ever to take cover, and the people who like them watch fearing the worst."
},
{
"chunk": 68,
"story": 5,
"summary": "Sent with orders across fire-swept ground, he walks upright instead of running, holding every eye; a fellow officer offers to bet he will be killed before he reaches the ditch.",
"predicament": "Someone walks upright through danger where everyone else runs, while their own comrades lay bets on how soon they will fall."
},
{
"chunk": 69,
"story": 5,
"summary": "He never boasts and turns remonstrance aside with a joke; when the captain who warned him is killed, he tends the body in the middle of a fire-swept road, and his comrades wish he were not a fool.",
"predicament": "Friends try to talk someone out of needless risks, and are laughed off with a joke they have no answer to."
},
{
"chunk": 70,
"story": 5,
"summary": "Sent with a message the long, safe way round, he instead canters into the open field under the enemy's guns; the general shouts to stop him, and the private who tries is killed at once.",
"predicament": "Someone given a safe way to carry out an order takes the deadly way instead, and another dies trying to stop them."
},
{
"chunk": 71,
"story": 5,
"summary": "He rides calmly along the enemy's front; both lines break into a furious battle around him, and he ends up standing alone in the shot-swept space, his horse dead.",
"predicament": "One person's needless display of courage sets off a fight in which many others die, and now leaves them stranded alone."
},
{
"chunk": 72,
"story": 5,
"summary": "Blocked by a gully he could have sheltered in, he will neither advance nor retreat and stands waiting to be killed; both sides stop firing, the enemy honours his body, and a year later the narrator finds a woman's love letter in his pocketbook.",
"predicament": "Someone who could save themselves by taking cover will not be seen to shelter, and stands still until they are killed."
},
{
"chunk": 73,
"story": 5,
"summary": "The letter reveals that a rival had told the woman her lover was seen cowering behind a tree, and that she could bear his death but not his cowardice; the narrator visits her to return it, and she is charming and careless.",
"predicament": "Someone learns that a person they love would rather see them dead than hear them called a coward."
},
{
"chunk": 74,
"story": 5,
"summary": "Seeing the bloodstain, she throws the letter into the fire, saying she cannot bear blood, and asks how he died; the narrator, seeing her beauty and her heartlessness, answers that he was bitten by a snake.",
"predicament": "Someone faces the person whose careless words drove a friend to his death, and must decide whether to tell them."
}
]
@@ -0,0 +1,80 @@
[
{
"chunk": 75,
"story": 6,
"summary": "A general, half-mocking, asks a colonel whether his much-praised young artillery captain would like to put a gun in a narrow notch facing twelve enemy guns; the colonel defends his man, and the general says it is the only place.",
"predicament": "A superior teases someone about the courage they boasted of in a subordinate, then turns the tease into a deadly order."
},
{
"chunk": 76,
"story": 6,
"summary": "Among dead horses and men in the notch, the colonel points out there is room for one gun against twelve; the general ironically says the captain is a battery in himself, and the angry colonel cannot retort.",
"predicament": "Someone sees a superior sending a subordinate into hopeless danger out of spite, and their position forbids them to object."
},
{
"chunk": 77,
"story": 6,
"summary": "The young captain rides up and is told to bring up a gun and engage the twelve; after a silence, he asks with effort whether the enemy guns are near the house.",
"predicament": "Someone ordered to open fire on a target realises, with a sinking heart, exactly where that target is."
},
{
"chunk": 78,
"story": 6,
"summary": "Pale and hoarse, he asks whether the order is imperative; the general rides off without a sign, the mortified colonel nearly arrests him, and then the captain brings up a gun and opens fire.",
"predicament": "Someone ordered to do something that will destroy what they love asks whether it is truly required, and is met with silence."
},
{
"chunk": 79,
"story": 6,
"summary": "A hopeless duel of one gun against twelve begins; the gunners concentrate on the gun in front of the house, shells break into its roof, and the colonel remarks on the captain's reluctance to obey.",
"predicament": "Someone who hesitated before an order now carries it out with terrible thoroughness while the onlookers remember only their hesitation."
},
{
"chunk": 80,
"story": 6,
"summary": "The colonel asks that the captain's hesitation be kept quiet; he refuses the infantry permission to silence the guns, as the general forbade it, and an adjutant begins to hint that the captain is a Southerner.",
"predicament": "Someone begins to suspect that a subordinate's deadly order was never about the enemy at all, but a private grudge."
},
{
"chunk": 81,
"story": 6,
"summary": "The adjutant reveals that the general once camped near the captain's home, there was trouble over the captain's wife and a complaint, and the general was transferred; the indignant colonel goes to withdraw the gun himself.",
"predicament": "Someone learns an order was a superior's revenge on a subordinate's family, and resolves to stop it on their own authority."
},
{
"chunk": 82,
"story": 6,
"summary": "The colonel races down the hill with his retinue to the notch, where the sight appals them.",
"predicament": "Someone hurries to call off an order they now know was malicious, afraid of what they will find when they arrive."
},
{
"chunk": 83,
"story": 6,
"summary": "Four guns lie wrecked in the notch; the half-naked, bloodied survivors work the fifth like madmen, sponging it with their comrades' blood, each man replaced as he falls.",
"predicament": "People carrying out a hopeless order keep at it with mad devotion, each one stepping in as the one before falls."
},
{
"chunk": 84,
"story": 6,
"summary": "Riding over the dead to the gun, the colonel stops the firing; a blackened, fiendish figure turns to him and obeys his signal to withdraw. It is the captain.",
"predicament": "Someone steps into a scene of carnage to end it, and finds the person they sent there changed almost beyond recognition."
},
{
"chunk": 85,
"story": 6,
"summary": "The enemy stops firing too, having long since retreated; the brigade camps on the enemy's ground and the colonel's staff settle comfortably in the shattered plantation house, until an orderly reports something wrong in the cellar.",
"predicament": "Victors settle comfortably into the home they wrecked, until someone uneasy reports a presence hidden below them."
},
{
"chunk": 86,
"story": 6,
"summary": "In the cellar they find a man clasping a dead woman and a dead baby, killed by a shell that broke through the floor above.",
"predicament": "Someone discovers that the destruction they ordered has killed a mother and child hidden where no one had looked."
},
{
"chunk": 87,
"story": 6,
"summary": "The man raises his blackened face and calmly says the house is his, the dead are his wife and child, and he is the captain who shelled it.",
"predicament": "Someone forced to obey an order has destroyed their own home and family with their own hands, and sits with the dead."
}
]
@@ -0,0 +1,50 @@
[
{
"chunk": 88,
"story": 7,
"summary": "After a hard battle, burial parties collect and count the dead; most of the wounded died of neglect while the ground was in dispute, and the enemy's dead are counted more than once for the official report.",
"predicament": "People cleaning up after a disaster treat the dead as numbers, while the wounded who waited for help have quietly died."
},
{
"chunk": 89,
"story": 7,
"summary": "An officer lingers uneasily among the dead at sunset, then, when the burial parties leave, strides purposefully into the forest past the moaning wounded he cannot help.",
"predicament": "Someone walks past the suffering they have no means to help, intent on finding one particular person among the fallen."
},
{
"chunk": 90,
"story": 7,
"summary": "He finds and touches a body that screams; he is a captain whose childhood friend enlisted as a sergeant to stay near him, and who loathes his friend's cynical brother, the regiment's major.",
"predicament": "Someone searching the fallen finds their oldest friend still alive, and the friend's brother is their bitterest enemy."
},
{
"chunk": 91,
"story": 7,
"summary": "That morning the major ordered the captain's company to a deadly position, insultingly suggesting he hand over command; the captain retorted that the major would be better dead, and in the action the sergeant fell.",
"predicament": "An enemy with authority over someone sends them into mortal danger with an insult, and the person they love pays for it."
},
{
"chunk": 92,
"story": 7,
"summary": "The sergeant's belly has been torn open and his clothes ripped apart; the captain cannot understand the wound until he sees a herd of swine feeding on the fallen nearby.",
"predicament": "Someone discovers that a friend left for dead has suffered something far worse than a wound, and turns away sickened."
},
{
"chunk": 93,
"story": 7,
"summary": "The friend is still alive, speechless and screaming when touched, his eyes begging for death; the captain repeats his name until he chokes with emotion.",
"predicament": "Someone watching a friend in hopeless agony sees in their eyes a plea to be put out of their misery."
},
{
"chunk": 94,
"story": 7,
"summary": "Weeping, he walks away and shoots a wounded horse, watching its long death struggle; then he returns, holds the pistol to his friend's forehead and pulls the trigger, but his last cartridge was spent on the horse.",
"predicament": "Someone steels themselves to end a loved one's suffering with their own hand, and finds they have already spent the means."
},
{
"chunk": 95,
"story": 7,
"summary": "He draws his sword and drives it through his friend's heart; the dying man grips the blade, and at that moment the friend's brother steps out of the trees with two stretcher-bearers.",
"predicament": "Someone ends a friend's suffering by the only means left, and is caught in the act by the one person who hates them most."
}
]
@@ -0,0 +1,56 @@
[
{
"chunk": 96,
"story": 8,
"summary": "A captured spy in enemy uniform is questioned by a general in his tent; he jests about his coming execution at dawn and admits why he came.",
"predicament": "A captured prisoner facing death at dawn meets their captor's questions with jokes, as if nothing were at stake."
},
{
"chunk": 97,
"story": 8,
"summary": "The prisoner surveys the bare tent, noting a sabre, pistol and bowie-knife hanging on the pole; the general sends the guard off with a note.",
"predicament": "A prisoner left almost alone with their captor quietly takes stock of their surroundings, and of the weapon within reach."
},
{
"chunk": 98,
"story": 8,
"summary": "The general says he has written the order for the prisoner's execution and offers a chaplain; the prisoner keeps joking and argues that death is nothing to fear.",
"predicament": "Someone condemned to die argues coolly to their captor that death holds no terror, and seems to believe it."
},
{
"chunk": 99,
"story": 8,
"summary": "The prisoner argues there is no such thing as dying, only a last pain; the general, who has a revolver in his lap, shudders and whispers that death is horrible.",
"predicament": "Someone who holds another's life in their hands is shaken by the prisoner's calm and admits to their own fear of death."
},
{
"chunk": 100,
"story": 8,
"summary": "The prisoner scoffs at fear of death as superstition; the general, uneasy, says he would not like to die tonight, then orders the provost-marshal to take the man out and shoot him at once. The prisoner cries out.",
"predicament": "Someone who scoffed at death is suddenly told it is coming now rather than later, and their composure breaks."
},
{
"chunk": 101,
"story": 8,
"summary": "The prisoner begs frantically, insisting he is entitled to be hanged in the morning under military law; the general coldly repeats the order.",
"predicament": "Someone who faced death with jokes begs for a few more hours, clinging to a rule that promised them time."
},
{
"chunk": 102,
"story": 8,
"summary": "Being led out, the prisoner seizes the bowie-knife and leaps on the general; the tent collapses on the struggling men, a sentinel fires, and the camp turns out.",
"predicament": "A cornered person with nothing left to lose seizes a weapon and attacks the one who condemned them."
},
{
"chunk": 103,
"story": 8,
"summary": "The provost-marshal is dead with the knife in his throat and the general badly wounded; the spy cowers in terror while the returning guard tells his story to anyone who will listen; the general orders the spy shot.",
"predicament": "Someone whose desperate attack has only made matters worse cowers in terror, while a bystander seizes the chance to make himself important."
},
{
"chunk": 104,
"story": 8,
"summary": "Officers think the general delirious, but the adjutant produces his written order and has it carried out; the spy is shot begging for his life, and the general dies peacefully a moment later.",
"predicament": "Someone who mocked death dies begging for their life, while the one who dreaded it dies at peace."
}
]
@@ -0,0 +1,86 @@
[
{
"chunk": 105,
"story": 9,
"summary": "A man of Southern sympathies asks the Governor for a commission in the Union army, saying he acts on what he thinks is right, not on what he feels; the Governor, preferring a man with his heart in it, is inclined to refuse.",
"predicament": "Someone asks to serve a cause their heart is not in, and the one who decides doubts they can be trusted."
},
{
"chunk": 106,
"story": 9,
"summary": "He confesses he wants the commission in order to be killed, because his wife has been unfaithful; he does not know the other man's name. The Governor, after a cold insult, grants him a captain's commission.",
"predicament": "Someone betrayed by the person they married seeks out danger in the hope of dying, without knowing who wronged them."
},
{
"chunk": 107,
"story": 9,
"summary": "Alone, the Governor calls it a bad business, opens a book at a sentence about men foolish enough to believe an unfaithful wife's lies, and throws the book into the fire.",
"predicament": "Someone who has just helped a betrayed husband to his death is privately stung by a reminder of their own part in it."
},
{
"chunk": 108,
"story": 9,
"summary": "Months later, during a sluggish campaign, the Governor tours the army with his showy civilian staff, and the soldiers in the trenches curse them as ornaments.",
"predicament": "A comfortable visitor parades through a place of hardship and danger, and the people who suffer there despise them for it."
},
{
"chunk": 109,
"story": 9,
"summary": "A general warns the Governor that only a line of skirmishers lies ahead; the Governor insists on meeting the captain he commissioned and goes forward alone on foot to a company waiting at the front.",
"predicament": "Someone insists on seeking out the person they secretly wronged, walking toward danger they do not understand."
},
{
"chunk": 110,
"story": 9,
"summary": "The captain, aged and scarred almost beyond recognition, salutes the Governor formally but will not shake his hand; the Governor begins to say whose hand it is.",
"predicament": "Someone offers a hand to a person they owe, and receives only a correct and chilly salute in return."
},
{
"chunk": 111,
"story": 9,
"summary": "Firing breaks out from the front; the captain calmly calls his company into line as bullets fly and wounded men stream back.",
"predicament": "A sudden attack interrupts a tense meeting, and a small group must form up at once under fire."
},
{
"chunk": 112,
"story": 9,
"summary": "The captain's calm sing-song commands steady his raw soldiers into acting like veterans; the Governor, torn between pride and terror, runs when the skirmishers fall back.",
"predicament": "A leader's calm voice holds frightened people steady under fire, while an important visitor loses their nerve and runs."
},
{
"chunk": 113,
"story": 9,
"summary": "Fleeing through the jungle, the Governor sprains his ankle leaping a brook, and sits helpless on the ground.",
"predicament": "Someone important who ran from danger is left stranded and helpless, unable to go on, as the fighting comes their way."
},
{
"chunk": 114,
"story": 9,
"summary": "The wounded stream past, deaf to his pleas for help; retreating men fire and walk on, and he is sickened that war is ugly and brutal, nothing like the parades held in his honour.",
"predicament": "Someone who knew only the glamour of a struggle sees its ugly reality close up, and nobody stops to help them."
},
{
"chunk": 115,
"story": 9,
"summary": "The captain's remnant retreats past him; as the enemy converges on the Governor, the captain sees him and orders his few men forward to save the Governor of their State.",
"predicament": "Someone retreating to save their people sees a helpless person about to be overrun, and orders everyone back to rescue them."
},
{
"chunk": 116,
"story": 9,
"summary": "The captain, arm broken, kills attackers with sword and revolver in a savage hand-to-hand fight over the prostrate Governor, until only a handful of his men remain.",
"predicament": "Someone fights savagely to protect a helpless person, not knowing they are defending the one who wronged them."
},
{
"chunk": 117,
"story": 9,
"summary": "Reinforcements arrive; the enemy tramples the last defenders and flees. The Governor wakes unhurt but for his ankle, while a general praises the beautiful fight over rows of dead and wounded.",
"predicament": "Someone saved at a terrible price by others wakes almost unhurt, while their superiors call the slaughter glorious."
},
{
"chunk": 118,
"story": 9,
"summary": "The Governor finds a letter from the captain's wife confessing her sin and naming him, and quietly pockets it; he jokes with the surgeons, accepts a review in his honour, and does not touch the captain's covered body beside him.",
"predicament": "Someone learns that the person who died saving them knew of their betrayal, and quietly hides the proof."
}
]
@@ -0,0 +1,56 @@
[
{
"chunk": 119,
"story": 10,
"summary": "A shabby but striking civilian, coming from the direction of the camp, is halted by a sentinel for his pass while the captain commanding the post looks on.",
"predicament": "A stranger who seems to belong is stopped at a checkpoint, while the one in charge watches and wonders where they have met."
},
{
"chunk": 120,
"story": 10,
"summary": "The civilian shows his pass with a hint of irony and walks on whistling; suddenly the captain draws his revolver and runs after him.",
"predicament": "Someone who has just let a stranger through suddenly realises who they are, and must decide at once what to do."
},
{
"chunk": 121,
"story": 10,
"summary": "The captain holds an isolated, dangerous command and issues passes to loyal locals, with an order that anyone abusing one will be shot; he has recognised the civilian as someone he knows.",
"predicament": "Someone responsible for the safety of many has made a harsh rule, and now recognises the person who has broken it."
},
{
"chunk": 122,
"story": 10,
"summary": "The civilian calmly turns and faces the captain's cocked pistol, offering his pass; the captain says it is forged and names him.",
"predicament": "Someone caught out by the one person who can see through their disguise faces a pistol without showing any fear."
},
{
"chunk": 123,
"story": 10,
"summary": "The man admits he is an enemy spy carrying plans of the fort, offers to submit without resistance if spared the indignity of being marched in at gunpoint, and is refused a handshake but trusted unguarded.",
"predicament": "A captured enemy offers their word to go quietly to their death, and their captor trusts it while refusing their hand."
},
{
"chunk": 124,
"story": 10,
"summary": "Next morning the captain tells the spy he knew him years before as a deserter awaiting execution, guarded one stormy night by an exhausted soldier ordered to kill him if he rose.",
"predicament": "Someone begins to tell the prisoner in their power about a debt they owe them from years ago, which they never repaid."
},
{
"chunk": 125,
"story": 10,
"summary": "The guard fell asleep at his post; the prisoner could have escaped and left him to be shot, but let him sleep and woke him before the relief came. The spy knew the captain all along; the captain weeps.",
"predicament": "Someone whose life was once spared by the person now in their power learns that the other knew them all along and never begged."
},
{
"chunk": 126,
"story": 10,
"summary": "The bugle sounds; the captain confesses that shame kept him from telling the story that might have won the prisoner a pardon, then orders him shot, unbound and unguarded.",
"predicament": "Someone bound by a rule they made must condemn the person who once saved their life, and cannot bring themselves to break it."
},
{
"chunk": 127,
"story": 10,
"summary": "The spy is shot by the firing squad; at the same moment the captain shoots himself, leaving instructions to be buried like the spy, without honours.",
"predicament": "Someone who has done their duty against a person they owed everything cannot live with it, and pays with their own life."
}
]
@@ -0,0 +1,86 @@
[
{
"chunk": 128,
"story": 11,
"summary": "A general tells a battery captain he is not permitted to know anything and must simply open fire on any movement in his front; the captain has his lieutenant witness the order, and salutes with pointed formality as the general rides off into the fog.",
"predicament": "Someone who asked a question is told curtly by a superior that their only job is to obey, and makes sure of a witness."
},
{
"chunk": 129,
"story": 11,
"summary": "After an indecisive day of fighting in rain and mud, the whole army is sullen and does no more than its duty; the general calls it cowardly, his adjutant says it is only cold.",
"predicament": "A whole group does the bare minimum after a miserable day, and the one in charge takes it for cowardice."
},
{
"chunk": 130,
"story": 11,
"summary": "Even the weapons sound feeble; the futile day ends, and a night of discomfort gives way to a morning of apprehension.",
"predicament": "After a day of pointless effort, a dispirited group waits through a miserable night for something worse."
},
{
"chunk": 131,
"story": 11,
"summary": "In thick fog the army senses its lines are badly placed; men and officers talk anxiously, commanders look for their neighbours, and troops dig in of their own accord.",
"predicament": "A large group senses without being told that something is badly wrong with its position, and nobody knows what."
},
{
"chunk": 132,
"story": 11,
"summary": "The captain's battery holds a strong earthwork on what, by his compass, seems to be the extreme left flank of the army, with no troops visible beyond.",
"predicament": "Someone holding a strong position works out that they are on the exposed edge, with nobody else beyond them."
},
{
"chunk": 133,
"story": 11,
"summary": "Alone in the fog, the captain is told by a sergeant that the infantry has been withdrawn, the front is unguarded, and men have heard the enemy's guns moving toward the works.",
"predicament": "Someone left alone to hold a position hears from their people that support has gone and something is approaching."
},
{
"chunk": 134,
"story": 11,
"summary": "He asks who heard the approach, pales slightly, and orders all guns to open fire with grape; meanwhile the general who gave the order tells the division commander the battery is badly commanded.",
"predicament": "Someone ordered to fire on any movement hears of one they suspect is friendly, and obeys the order to the letter."
},
{
"chunk": 135,
"story": 11,
"summary": "The division commander reveals another friendly brigade was sent overnight beyond the battery; cannon fire breaks out on the left, the enemy attacks everywhere, and the battery fires steadily into the fog.",
"predicament": "A superior learns too late that friends were placed where they told a subordinate to fire, just as the firing starts."
},
{
"chunk": 136,
"story": 11,
"summary": "The gunners work idly, firing blind, until a great cheer bursts out of the fog close in front, and they work feverishly.",
"predicament": "People firing blindly at an unseen target suddenly hear it cheering close in front of them, and redouble their efforts."
},
{
"chunk": 137,
"story": 11,
"summary": "Grey figures swarm up the slope into grape and canister and fall in heaps; in dense smoke a few reach the parapet and are bayoneted back into the ditch.",
"predicament": "Defenders in a smoke-filled position cut down a crowd storming toward them without ever seeing clearly who they are."
},
{
"chunk": 138,
"story": 11,
"summary": "The lieutenant urgently protests that they must stop firing; the captain coldly repeats the general's words to him, then shoots dead a man who mounts the parapet waving a flag, and the rest flee.",
"predicament": "Someone who fears their orders are wrong is told by a subordinate that they must stop, and answers with the words used on them."
},
{
"chunk": 139,
"story": 11,
"summary": "The division commander rides in, looks over the parapet and furiously tells the captain he has been fighting their own men; the captain says he knew it, and that the reason was withheld in his orders.",
"predicament": "Someone who knowingly obeyed an order that killed their own side is called to account, and says only that they obeyed."
},
{
"chunk": 140,
"story": 11,
"summary": "The captain refers him to the general who gave the order, but that general is dead; the division commander, sympathetic, begs him for anything that might excuse him, and the captain calls on his lieutenant.",
"predicament": "Someone accused of a terrible act finds that the only person who could confirm their orders is dead."
},
{
"chunk": 141,
"story": 11,
"summary": "The resentful lieutenant says only that he warned the captain and was insulted, and denies knowing of any orders; the captain hears his doom and hands over his sword.",
"predicament": "Someone's last witness, whom they once snubbed, takes their revenge by saying nothing that would clear them."
}
]
@@ -0,0 +1,56 @@
[
{
"chunk": 142,
"story": 12,
"summary": "A captain stands at the head of his company in a vast line of battle awaiting attack; the narrator contrasts the silent order of the front with the endless confusion of the rear.",
"predicament": "Someone stands in the front rank of a huge crowd waiting for a clash that everyone knows is coming."
},
{
"chunk": 143,
"story": 12,
"summary": "Before him lies a peaceful, empty landscape of fields and woods, yet every man in the line knows he is face to face with death.",
"predicament": "Someone looks out at a calm, empty landscape and knows that death is waiting somewhere in it."
},
{
"chunk": 144,
"story": 12,
"summary": "The captain spent two years of the war in a desk post he hated, refusing promotion out of principle; now at last at the front, he commands veterans who think him a shirker, and is too proud to explain.",
"predicament": "Someone kept from the front through no fault of their own is scorned as a shirker, and is too proud to explain."
},
{
"chunk": 145,
"story": 12,
"summary": "He is exultant, eager to prove himself to his men and to a woman at home; then the first enemy shell shrieks toward the line and he dodges and throws up his hands.",
"predicament": "Someone eager to prove their courage flinches at the very first danger, in front of the people they wanted to impress."
},
{
"chunk": 146,
"story": 12,
"summary": "He sees his lieutenant and his men laughing at him and burns with shame; his idea of war collapses, he trembles and chokes, and fears that what he feels is fear.",
"predicament": "Someone who flinched sees their people laughing at them, and fears that the thing they feel is cowardice."
},
{
"chunk": 147,
"story": 12,
"summary": "Battle begins on the right; rifle fire from the woods kills the man beside him, everyone lies down, and he lies sickened beside the yellowing corpse, unable to turn away without facing from his men.",
"predicament": "Someone who imagined glorious death is forced to lie beside a real one, sickened, with nowhere else to look."
},
{
"chunk": 148,
"story": 12,
"summary": "Staring at the silent wood, imagining the hidden guns, he analyses his feelings instead of fighting and groans aloud in despair at what he finds.",
"predicament": "Someone left with nothing to do but wait turns inward to examine their courage, and is devastated by what they find."
},
{
"chunk": 149,
"story": 12,
"summary": "The line is called to attention and waits for an order to advance that does not come; the delay is unbearable, until he looks at his sword, thinks of it as a Roman blade, and grows suddenly calm.",
"predicament": "Someone at the end of their endurance while waiting for danger suddenly sees a way out that would spare them the shame."
},
{
"chunk": 150,
"story": 12,
"summary": "The sergeant behind him sees a bloody blade spring from his back; he has fallen on his sword and dies. A week later the official report lists the losses as one officer, one man.",
"predicament": "Someone who cannot bear to be thought a coward takes their own life before the danger they dreaded ever arrives."
}
]
@@ -0,0 +1,44 @@
[
{
"chunk": 151,
"story": 13,
"summary": "The narrator, a map-maker on a brigade staff, describes an unsociable new aide nobody liked, and his own dangerous work surveying close to enemy lines.",
"predicament": "An aloof newcomer joins a hard-pressed group that does not take to them, while everyone else is too busy to care."
},
{
"chunk": 152,
"story": 13,
"summary": "The new aide asks to come along on a hazardous survey; the narrator gruffly asks in what capacity, and the aide says as a spectator, handing his sword and pistols to his servant. The narrator regrets his rudeness.",
"predicament": "A rude remark to a newcomer is taken so literally that they disarm themselves to go into danger, and the speaker cannot apologise."
},
{
"chunk": 153,
"story": 13,
"summary": "Under fire, the aide sits in the open road with folded arms; his horse is killed, and he stands unarmed before a charging trooper until a lucky bullet drops his attacker. The narrator later apologises.",
"predicament": "Someone disarmed by another's careless words stands in the open facing death with folded arms, too proud to retreat."
},
{
"chunk": 154,
"story": 13,
"summary": "In a later assault the aide is lost and found badly wounded; a captured enemy soldier says he walked straight into their line and, with rifles at his chest, folded his arms and refused to surrender.",
"predicament": "Someone surrounded by enemies with weapons pointed at them is ordered to surrender, and simply refuses."
},
{
"chunk": 155,
"story": 13,
"summary": "At the mess, a stammering quartermaster suggests the aide's folded arms are his way of mastering an urge to run; the narrator angrily defends him. Later the aide learns a giant camp swing and swings higher than anyone dares.",
"predicament": "Someone's extraordinary courage is whispered to be a way of mastering fear, and they go looking for ever greater danger."
},
{
"chunk": 156,
"story": 13,
"summary": "He drives the swing ever higher until he is nearly horizontal; everyone shouts at him to stop, a woman faints, crowds gather, and suddenly the shouting stops.",
"predicament": "Someone pushes a reckless feat further and further while everyone watching begs them to stop, and they will not."
},
{
"chunk": 157,
"story": 13,
"summary": "He lets go of the rope and flies up past a branch, then pitches down with a sickening impact; the hardened soldiers turn sick, and his body lies broken with its arms folded across the breast.",
"predicament": "Someone who faced every danger with defiance meets a senseless end in front of hardened witnesses who cannot bear to look."
}
]
@@ -0,0 +1,56 @@
[
{
"chunk": 158,
"story": 14,
"summary": "A Union private sits against a pine deep in the forest, far outside the lines, looking as if he were asleep.",
"predicament": "Someone alone and far outside the safety of their own side sits brooding, where being caught could mean death."
},
{
"chunk": 159,
"story": 14,
"summary": "He is troubled by the previous night, when he stood sentry at a lonely post in this forest on an over-extended picket line.",
"predicament": "Someone cannot stop turning over what happened on a night they were left alone to keep watch in the dark."
},
{
"chunk": 160,
"story": 14,
"summary": "In the darkness he walked round his tree and lost his bearings, not knowing where the enemy or his own camp lay; then he heard a figure approaching and challenged it.",
"predicament": "Someone on watch loses all sense of direction in the dark, just as a figure comes toward them and will not answer."
},
{
"chunk": 161,
"story": 14,
"summary": "He fired; the whole jumpy picket line fired and ran, but he, not knowing which way to run, stayed put and was praised for bravery. Sure he hit someone but finding no body, he kept quiet.",
"predicament": "Someone is praised for courage they did not show, and keeps quiet about what really happened."
},
{
"chunk": 162,
"story": 14,
"summary": "Granted a pass as a reward for his supposed bravery, he goes back to search for the person he believes he shot, penetrates deep into enemy country, and finally sits down, disappointed.",
"predicament": "Someone who fears they killed a person in the dark goes back alone into danger to find out for certain."
},
{
"chunk": 163,
"story": 14,
"summary": "He reflects that he is in a false position, praised for acts he did not perform, and that telling the truth would sound like a lie; he wishes he could find his man, and falls asleep.",
"predicament": "Someone praised for something they did not do sees that the truth would sound like a lie, and cannot decide what to say."
},
{
"chunk": 164,
"story": 14,
"summary": "He dreams of a happy childhood by a great river with his beloved twin brother, their widowed mother and a mocking-bird whose song filled everything.",
"predicament": "Someone far from home dreams of a lost childhood and the person closest to them, before they were separated."
},
{
"chunk": 165,
"story": 14,
"summary": "In the dream their mother dies, the brothers are parted to feuding relatives on opposite sides of the river, the bird goes with the brother, and their letters stop; he wakes at sunset.",
"predicament": "Someone remembers how they lost touch with the person closest to them when their family was split between enemies."
},
{
"chunk": 166,
"story": 14,
"summary": "Walking back, he hears a mocking-bird and weeps, then finds in a thicket the body of his twin brother in enemy uniform, shot the night before; he never answers roll-call again.",
"predicament": "Someone searching for the stranger they killed in the dark finds it was the person they loved most."
}
]
@@ -0,0 +1,62 @@
[
{
"chunk": 167,
"story": 15,
"summary": "A shack shaped like a face stands on a poor hillside terrace; every day at exactly two o'clock a well-dressed man steps out of its door and checks his watch.",
"predicament": "Someone living in poverty keeps a strange daily ritual with exact punctuality, and nobody around them knows why."
},
{
"chunk": 168,
"story": 15,
"summary": "He walks round a block, staring over his shoulder at a dusty upper window of a factory where nothing ever appears, and returns home, where his wife, a washerwoman who supports them both, helps him in.",
"predicament": "Someone walks past the same empty window every day in hope, while a devoted spouse quietly supports them."
},
{
"chunk": 169,
"story": 15,
"summary": "The man, prematurely aged, is kept neatly dressed by his wife's scanty earnings; thirty years before, the couple were rich, cultivated and apparently happy, and she was proud of him.",
"predicament": "A devoted spouse spends everything keeping up the appearance of the person they married, long after their fortune is gone."
},
{
"chunk": 170,
"story": 15,
"summary": "The husband fell in love with a visiting friend's wife; caught leaving her house at night, he tried to bribe the policeman and gave a false name, with only her jewelled portrait on him.",
"predicament": "Someone caught leaving a lover's home at night takes the blame for a crime rather than let the truth come out."
},
{
"chunk": 171,
"story": 15,
"summary": "His wife finds him in prison under a false name, and in a private interview he bends her to his will; she leaves broken-hearted, keeps his secret, and then disappears herself.",
"predicament": "Someone discovers the person they married has betrayed them, and is persuaded to help keep the betrayal secret."
},
{
"chunk": 172,
"story": 15,
"summary": "He pleads guilty; the lover, ill, twice refuses to testify, tears up her statement, embraces her children in tears, and finally swears she knows nothing and faints.",
"predicament": "Someone must swear to a lie that will send the person they love to prison, or ruin their own family."
},
{
"chunk": 173,
"story": 15,
"summary": "He is sentenced to three years, his lawyer having made no defence; on release his wife meets him at the gate and they go abroad, selling everything.",
"predicament": "Someone who kept silent to protect a lover serves their sentence, and the spouse they betrayed is waiting at the gate."
},
{
"chunk": 174,
"story": 15,
"summary": "Years later they return, broken in fortune and health, living quietly under another name; the wife is endlessly devoted and cheerful, and he is sunk in dejection.",
"predicament": "Someone ruined by a love affair is cared for devotedly by the spouse they betrayed, and remains sunk in misery."
},
{
"chunk": 175,
"story": 15,
"summary": "Wandering one day, he sees his former lover at a window; she cries out, leans out too far and falls to her death, and he sits on the pavement cradling her broken body.",
"predicament": "Someone meets the person they gave up everything for by chance, and the meeting ends in disaster in front of a crowd."
},
{
"chunk": 176,
"story": 15,
"summary": "The lover's husband, understanding everything, leaves for good; the man spends a year in an asylum with his wife caring for him, and they move near the factory so he can make his daily pilgrimage to the window.",
"predicament": "A devoted spouse gives up everything to care for a partner who still mourns someone else every day."
}
]
@@ -0,0 +1,92 @@
[
{
"chunk": 177,
"story": 16,
"summary": "A country schoolmaster lodging at a boarding-house in a resort town for invalids walks home late at dusk by a little-used wooded trail after finishing his report to the trustees.",
"predicament": "Someone walking home alone at dusk by a lonely short cut is tired, and not expecting anything to happen."
},
{
"chunk": 178,
"story": 16,
"summary": "Resting on a log, he hears unseen voices: a man threatening that she and another will suffer if she does not let things stand, and a woman asking whether he would murder them.",
"predicament": "Someone alone in the dark overhears an unseen stranger threatening a woman's life, and cannot see who is speaking."
},
{
"chunk": 179,
"story": 16,
"summary": "He glimpses a tall man in black and a woman in grey; she sinks to her knees in supplication, and when he springs up to intervene, both vanish.",
"predicament": "Someone who decides to intervene in a threat they overheard steps forward, and the people involved simply vanish."
},
{
"chunk": 180,
"story": 16,
"summary": "He half doubts he saw anything; at breakfast two sisters appear, and he recognises the elder's voice as the woman's in the wood.",
"predicament": "Someone who half doubted what they witnessed recognises one of those involved sitting right across from them."
},
{
"chunk": 181,
"story": 16,
"summary": "Afraid of being recognised as an eavesdropper, he leaves; he hears a fine male voice singing an aria that displeases him, and later sees the man in black with the elder sister, and resolves to find out about them honourably.",
"predicament": "Someone who overheard a secret they had no right to hear resolves to find out more, without stooping to spy."
},
{
"chunk": 182,
"story": 16,
"summary": "The handsome man looks him full in the face and he feels hatred and dread; the landlady says the man is the sisters' guardian, their late father's friend, devoted to them and able to pay.",
"predicament": "Everyone praises a charming stranger as devoted and generous, and only one person feels dread in their presence."
},
{
"chunk": 183,
"story": 16,
"summary": "A month passes without incident; then the elder sister is found dead in bed, and the younger turns on the guardian and accuses him of killing her.",
"predicament": "Someone grieving a sudden death turns on the person everyone trusts and accuses them before a crowd."
},
{
"chunk": 184,
"story": 16,
"summary": "The guardian calls her raving and fixes her with his gaze until she falls silent and clings to him weeping; an inquest finds heart disease, and neither of them goes to the funeral.",
"predicament": "Someone who accused a powerful person is silenced by a single look, and ends up clinging to them."
},
{
"chunk": 185,
"story": 16,
"summary": "Overhearing again, the narrator sees the girl and her guardian standing like lovers, and hears her calmly ask him to take her life as he took her sister's, and without delay.",
"predicament": "Someone in the power of a person they believe will kill them asks only that it be done quickly."
},
{
"chunk": 186,
"story": 16,
"summary": "The guardian leaves singing a strange chant; the narrator urges the girl to tell him everything and let him act, since she says the man killed her sister and will kill her.",
"predicament": "Someone who has overheard a person in mortal danger offers to help, and is told there is nothing to be done."
},
{
"chunk": 187,
"story": 16,
"summary": "She refuses, saying she loves the man above all and will deny everything if he goes to the authorities; then she charms him, and he finds himself in love with her.",
"predicament": "Someone trying to rescue a person in danger is told they love their tormentor, and that any accusation will be denied."
},
{
"chunk": 188,
"story": 16,
"summary": "They walk the veranda as she chatters as though bereavement never happened; he feels part of an intrigue and arranges to walk with her the next day, if the guardian is away.",
"predicament": "Someone who meant to rescue another finds themselves drawn into a secret flirtation behind the back of the one they feared."
},
{
"chunk": 189,
"story": 16,
"summary": "On the walk she is capricious and fascinating, jesting and singing by turns, and he falls deeper in love at every step.",
"predicament": "Someone falls deeper under the spell of a person they know is in danger, and loses sight of the danger."
},
{
"chunk": 190,
"story": 16,
"summary": "She leads him to a high cliff-top; the guardian appears, saying he saw them from the road, and her face transfigures with love as she greets him.",
"predicament": "Someone alone with the person they hoped to protect is joined by the very one they feared, and is welcomed with joy."
},
{
"chunk": 191,
"story": 16,
"summary": "The guardian fixes her with his gaze; smiling but terrified, she leaps from the cliff. He coldly says it was her own act, the narrator calls him her murderer, and he walks away singing.",
"predicament": "Someone watches a person they tried to protect go to their death, and the one to blame cannot be touched."
}
]
@@ -0,0 +1,68 @@
[
{
"chunk": 192,
"story": 17,
"summary": "A mining camp is united in condemning a man charged that morning with horse stealing; the rope and the coffin are being prepared before his trial is held.",
"predicament": "Someone accused before the whole community finds the verdict settled and the punishment prepared before any trial."
},
{
"chunk": 193,
"story": 17,
"summary": "The accused had been run out of a neighbouring camp and came here just before its whole population followed; living by cards, he is suspected of robbing the sluice boxes at night.",
"predicament": "Someone driven out of one place finds everyone who drove them out has followed them to the next."
},
{
"chunk": 194,
"story": 17,
"summary": "The camp's leading citizen loudly insists the man is the thief and threatens anyone who disagrees; the saloon-keeper, to keep the citizen's custom, bars the suspect from his gaming table.",
"predicament": "Someone suspected by a powerful and loud accuser is shut out by everyone who depends on the accuser's goodwill."
},
{
"chunk": 195,
"story": 17,
"summary": "The camp decides he must hang; the thefts stop, but he drifts into highway robbery and horse theft, and is caught by his accuser leading away a neighbour's mare at night.",
"predicament": "Someone the whole community has already condemned keeps up their bad habits, and is finally caught in the act by their accuser."
},
{
"chunk": 196,
"story": 17,
"summary": "He is tried and hanged, leaving his whole estate to his captor on condition of a decent burial; a codicil is found in his pocket after death.",
"predicament": "Someone who helped bring a person to the gallows is left everything by them, with a hidden condition attached."
},
{
"chunk": 197,
"story": 17,
"summary": "The codicil gives the estate to anyone who proves in court within five years that he robbed the sluice boxes, otherwise to the executor; the executor laughs and accepts the trust.",
"predicament": "Someone is left a fortune on condition that they spend years proving the innocence of a person they called a thief."
},
{
"chunk": 198,
"story": 17,
"summary": "The estate proves enormous; claimants flood in with evidence, and the executor raises a grand monument praising the dead man's honesty and victimhood.",
"predicament": "Someone who inherits a fortune must now defend the good name of the person they helped hang, against a flood of claimants."
},
{
"chunk": 199,
"story": 17,
"summary": "For five years he fights the claims with lawyers, bribes and false witnesses, corrupting the whole territory, and wins; that night a flood topples the monument and exposes the coffin.",
"predicament": "Someone wins a long, corrupt fight to keep what was left to them, and the victory leaves everything around them rotten."
},
{
"chunk": 200,
"story": 17,
"summary": "The executor, aged and broken by the struggle, now believes absolutely in the dead man's innocence; he has spent the last of the estate on the last witness, and is drawn to the flooded cemetery.",
"predicament": "Someone who argued a lie for years has come to believe it completely, and it has cost them everything they gained."
},
{
"chunk": 201,
"story": 17,
"summary": "Sitting on the fallen monument, he weeps with remorse, believing he caused an innocent man's death by false accusation, since the mare's owner later swore, for a fee, that the theft was arranged.",
"predicament": "Someone who helped hang a person weeps over what they now believe was a false accusation."
},
{
"chunk": 202,
"story": 17,
"summary": "He sees the dead man's ghost panning the dust of the other flooded coffins into its own; in the morning the executor is found dead in the cemetery.",
"predicament": "Someone full of remorse for a person they wronged sees that person's ghost appear before them, still at their old tricks."
}
]
@@ -0,0 +1,50 @@
[
{
"chunk": 203,
"story": 18,
"summary": "The son of a village's leading citizen, breaking a path through fresh snow for his little sister, strikes his foot against something hidden beneath it.",
"predicament": "A child playing in fresh snow stumbles on something hidden beneath it that the grown-ups would rather not explain."
},
{
"chunk": 204,
"story": 18,
"summary": "A great, ugly home for poor old men stands on the hill, endowed by a merchant who gave away half a million dollars, then left for abroad; he has never returned and is now only a name carved over the door.",
"predicament": "Someone who gave away a fortune for the good of others has long since vanished, remembered only as a name."
},
{
"chunk": 205,
"story": 18,
"summary": "The home's superintendent resents the ungrateful old inmates and dreams of running it for prosperous paying guests; the old men live out their lives and are replaced.",
"predicament": "Someone put in charge of a charity resents the very people it was built to help, and wishes they were someone else."
},
{
"chunk": 206,
"story": 18,
"summary": "A ragged old man trudges up the street toward the home on a winter evening, plainly an applicant, since poverty is the qualification.",
"predicament": "Someone old, poor and ragged makes their way through the cold to ask a charity to take them in."
},
{
"chunk": 207,
"story": 18,
"summary": "Avoiding the lamp at the main door, he rings at a side door; the superintendent, jovial and dressed to go out and buy Christmas presents for his children, does not invite him in.",
"predicament": "Someone in need comes humbly to the side door on a festive night, and the person inside is on their way out."
},
{
"chunk": 208,
"story": 18,
"summary": "The superintendent jokes that the trustees have decided his application disagrees with them; the old man cries out in despair.",
"predicament": "Someone who asked for help in their last extremity is turned away with a joke on a night meant for kindness."
},
{
"chunk": 209,
"story": 18,
"summary": "Walking him out, the superintendent pompously explains that under the peculiar circumstances his presence would embarrass the institution; the old man's tracks are already covered by snow.",
"predicament": "Someone refused help is lectured at length on why helping them would embarrass the very institution meant to help."
},
{
"chunk": 210,
"story": 18,
"summary": "The old man wanders off into a vacant lot with nowhere to go; on Christmas morning the chairman's son stumbles on his frozen body. He was the home's founder.",
"predicament": "Someone who built a refuge for others is turned away from it in their own need, and dies in the cold."
}
]
@@ -0,0 +1,98 @@
[
{
"chunk": 211,
"story": 19,
"summary": "In a dusty upper room of an empty house, a body lies under a sheet on a kitchen table beside a candle, an armchair and a reading-stand, with the windows shut and blinds drawn.",
"predicament": "A body has been laid out behind sealed doors in an empty building, as if for some purpose not yet explained."
},
{
"chunk": 212,
"story": 19,
"summary": "A man enters, the door is locked behind him, he finds the windows barred, and he calmly sits down with a book.",
"predicament": "Someone is locked in overnight with a corpse, finds there is no way out, and settles down as if unconcerned."
},
{
"chunk": 213,
"story": 19,
"summary": "The young man, resolute-looking, reads composedly for half an hour, glancing occasionally at the body, then moves the stand aside and returns to his chair.",
"predicament": "Someone determined to show no fear keeps a calm watch over the dead, glancing at it now and then."
},
{
"chunk": 214,
"story": 19,
"summary": "He inspects the face under the sheet, pockets matches and blows out the short candle to save it. Elsewhere, three young doctors over punch discuss whether fear of the dead is inherited and incurable.",
"predicament": "Someone alone with the dead chooses to sit in darkness to save their last light, while others idly debate human fear."
},
{
"chunk": 215,
"story": 19,
"summary": "The host says anyone locked alone all night in the dark with a corpse would crack; the student says he knows a fearless stranger who would take that on for any stake.",
"predicament": "A careless boast about someone else's courage turns into a dare that another person will have to face alone."
},
{
"chunk": 216,
"story": 19,
"summary": "The host accepts the wager, and the third doctor offers to play the corpse. In the dark room, the watcher cannot sleep and tells himself he stays in his chair out of respect for the dead.",
"predicament": "Someone alone in the dark with a corpse cannot sleep, and invents polite reasons for not daring to move."
},
{
"chunk": 217,
"story": 19,
"summary": "He hears a faint sound from the table and holds his breath until he nearly faints; angry, he gropes round the room in the dark and knocks over the stand.",
"predicament": "Someone who prides themselves on courage catches themselves holding their breath in terror at a sound, and is furious."
},
{
"chunk": 218,
"story": 19,
"summary": "He relights the candle, finds nothing changed, checks and bolts the door, sees that only half an hour has passed, and blows the candle out again.",
"predicament": "Someone enduring a terrible night checks that nothing has changed, and finds that almost no time has passed."
},
{
"chunk": 219,
"story": 19,
"summary": "He berates himself as a sceptic who will not lose his bet and self-respect to savage superstition, and then hears soft footsteps approaching behind him. At dawn the host and the student drive toward the house.",
"predicament": "Someone who does not believe the dead can walk hears footsteps coming toward them in the dark."
},
{
"chunk": 220,
"story": 19,
"summary": "The host admits he regrets the wager, which pride pushed him into; the fake corpse is their friend, and as they reach the house a man runs past looking for a doctor.",
"predicament": "People who set up a cruel dare for their own amusement arrive to find it has gone badly wrong."
},
{
"chunk": 221,
"story": 19,
"summary": "A crowd is gathering at the house; the student wants to flee and lie low, but the doctor says a physician may be needed and goes in.",
"predicament": "Someone whose prank has gone wrong must choose between slipping away unseen and going in to face what they caused."
},
{
"chunk": 222,
"story": 19,
"summary": "A wild, white-haired man bursts down the stairs, beating his way through the crowd, and flees into the street; the student calls out the watcher's name and is dragged back.",
"predicament": "Someone sees the person they put up to a dare burst out transformed by terror, and must not be seen to know them."
},
{
"chunk": 223,
"story": 19,
"summary": "Upstairs, a doctor examines the body on the table, face contorted and frothing, pronounces it six hours dead, and calls for the coroner.",
"predicament": "Someone whose prank went wrong looks on while a stranger declares a friend dead, and cannot say a word."
},
{
"chunk": 224,
"story": 19,
"summary": "The police clear the room; the student says the watcher has killed their friend, and the two agree to leave for Europe that afternoon.",
"predicament": "People whose game ended in a death agree without a word of it to flee before anyone connects them."
},
{
"chunk": 225,
"story": 19,
"summary": "Seven years later a white-haired stranger approaches the two in a park, and reveals he is their friend who played the corpse, not the watcher.",
"predicament": "People who ran from a death they caused years ago are confronted by someone they believed long dead."
},
{
"chunk": 226,
"story": 19,
"summary": "He says he rose from the table to frighten the watcher, who died of fright; he changed clothes with the body and was never let out. He is now mad, and the two are gamblers.",
"predicament": "Someone whose cruel joke killed a person was driven mad by it, and blames the friends who left them to it."
}
]
@@ -0,0 +1,56 @@
[
{
"chunk": 227,
"story": 20,
"summary": "An epigraph from an old book of marvels claims that a serpent's eye has a magnetic power that draws its victim forward against his will to his death.",
"predicament": "An old superstition claims that some dangers draw their victims toward them against their own will, however they resist."
},
{
"chunk": 228,
"story": 20,
"summary": "A guest reading the passage scoffs at it, then notices two points of light under his bed that grow brighter and nearer; they are the eyes of a large coiled snake staring at him.",
"predicament": "Someone who has just scoffed at a superstition finds the very thing it describes staring straight at them."
},
{
"chunk": 229,
"story": 20,
"summary": "The guest, a rich, athletic traveller, is staying with a scientist friend who keeps a wing full of reptiles, from which his wife and daughters are excluded.",
"predicament": "Someone staying as a guest with a friend has taken little notice of the dangerous things kept under the same roof."
},
{
"chunk": 230,
"story": 20,
"summary": "Warned that snakes sometimes escape, the guest thinks of ringing for a servant, but does not, lest he be suspected of fear; he cannot tell whether the snake is dangerous.",
"predicament": "Someone faced with a danger they cannot judge will not call for help, in case it looks like fear."
},
{
"chunk": 231,
"story": 20,
"summary": "He resolves to back quietly out of the room, but as he lifts his foot he feels an aversion to retreating, asking himself whether bravery is only pride and whether he will retreat because no one is watching.",
"predicament": "Someone about to retreat sensibly from danger stops, ashamed to back away even when nobody is there to see."
},
{
"chunk": 232,
"story": 20,
"summary": "Declaring he is not so great a coward as to fear seeming afraid to himself, he tries to step back but steps forward instead, again and again, dragging the chair, as the snake's eyes blaze and he hears strange music.",
"predicament": "Someone who refused to back away from danger finds themselves drawn toward it step by step against their will."
},
{
"chunk": 233,
"story": 20,
"summary": "He sees visions, including a crowned serpent with his dead mother's eyes, then falls on his face; the fall breaks the spell, but the thought of the unseen snake is so horrible that he looks again, and is held once more.",
"predicament": "Someone who breaks free of a terror for a moment cannot bear not to look at it, and is caught again."
},
{
"chunk": 234,
"story": 20,
"summary": "He writhes and froths on the floor, inching ever closer to the snake; downstairs, the scientist tells his wife about a new snake-eating snake and scoffs at the superstition of snakes' fascination.",
"predicament": "Someone is being destroyed by their own terror only a floor away from people who laugh at the very idea."
},
{
"chunk": 235,
"story": 20,
"summary": "Terrible cries ring through the house; they find the guest dead with his face under the bed, and the scientist pulls out the snake. It is stuffed, with shoe buttons for eyes.",
"predicament": "Someone dies of terror at a danger that was never real, killed by nothing but their own fear and pride."
}
]
@@ -0,0 +1,122 @@
[
{
"chunk": 236,
"story": 21,
"summary": "A white-haired stranger arrives unnoticed at a mining camp that was deserted two years ago, after the man whose tall tales of gold drew thousands there was shot on the third day.",
"predicament": "Someone arrives alone at a place everyone else abandoned long ago, with a private reason for coming back."
},
{
"chunk": 237,
"story": 21,
"summary": "The abandoned camp is a wreck of skeleton shanties, rotting flumes, torn ground, old boots and bottles.",
"predicament": "Someone looks over the wreckage of a place where thousands once pinned their hopes on a lie."
},
{
"chunk": 238,
"story": 21,
"summary": "The stranger ignores the ruins, goes to a hill, searches among the ground until he finds what he seeks, and stakes out a mining claim according to the local law.",
"predicament": "Someone who has come a long way on a secret tip quietly stakes their claim before anyone else can."
},
{
"chunk": 239,
"story": 21,
"summary": "The hill is the camp's cemetery, which grew as the camp shrank, complete with a hanging tree and a dangling rope; he has staked his claim among the densest graves.",
"predicament": "Someone stakes their fortune on digging up ground where the dead lie buried, and means to go through with it."
},
{
"chunk": 240,
"story": 21,
"summary": "Six years before, he left his fiancée in the East, who told him he never succeeded at anything and would not come back alive.",
"predicament": "Someone leaves the person they love to seek their fortune, sent off with a prediction that they will fail."
},
{
"chunk": 241,
"story": 21,
"summary": "She took up with a gambler who slashed her face; she wrote renouncing the engagement and sent a photograph of her scarred face, but he held to her more firmly out of honour. Then her letters stopped.",
"predicament": "Someone learns the person they are pledged to has been disfigured and released them, and stays faithful out of honour."
},
{
"chunk": 242,
"story": 21,
"summary": "An old drinking friend, now a gravedigger, wrote to him in miners' slang; he tucked the letter away unread for two years, then found and read it.",
"predicament": "Someone discovers years late that a friend once wrote to offer them a secret fortune, and they never answered."
},
{
"chunk": 243,
"story": 21,
"summary": "The letter said the gravedigger had struck a rich gold ledge while digging a grave and hidden it by burying a notorious woman above it; the gravedigger has since drunk himself to death. The claimant calls her a holy terror.",
"predicament": "Someone inherits the secret of a buried fortune from a dead friend, and must dig through a grave to reach it."
},
{
"chunk": 244,
"story": 21,
"summary": "He knows the dead woman only from campfire gossip and a comic obituary; repeating that she was a holy terror, as if to justify himself, he sinks his pick into her grave, and a raven croaks.",
"predicament": "Someone about to desecrate a grave tells themselves the dead person deserved no better, to quiet their conscience."
},
{
"chunk": 245,
"story": 21,
"summary": "Digging feverishly into the night, he stands the coffin on end in the grave and is terrified by his own shadow falling on it, then tries to master his fear by moving his head.",
"predicament": "Someone driven by greed to work alone among the dead at night is startled by their own shadow, and cannot shake the fear."
},
{
"chunk": 246,
"story": 21,
"summary": "He sees that the coffin was buried upside down, the woman face downward.",
"predicament": "Someone alone at night with the dead notices something wrong about the burial that nobody ever explained."
},
{
"chunk": 247,
"story": 21,
"summary": "The absurd discovery overwhelms him with terror; he cannot breathe or move.",
"predicament": "Someone known for their daring is frozen by a terror that is half absurd, and cannot move or cry out."
},
{
"chunk": 248,
"story": 21,
"summary": "His senses return oddly sharp but blind to the coffin; he notices the tree, the rope and the coyotes, smells something sickening, and a raven drops past his face.",
"predicament": "Someone overwhelmed by dread goes numb to its cause and notices everything else, until something startles them back."
},
{
"chunk": 249,
"story": 21,
"summary": "He imagines the rotted corpse behind the lid and, for the first time that day, thinks of his fiancée's photograph, contrasting her beauty with the dead face.",
"predicament": "Someone imagining the horror behind a closed lid finds their thoughts turning to the person they love most."
},
{
"chunk": 250,
"story": 21,
"summary": "He links the disfigured photograph with the dead woman's nickname, which spoke of a disfigurement, and becomes convinced the woman in the coffin is his fiancée.",
"predicament": "Someone becomes convinced, on the flimsiest of links, that the horror before them is the person they love."
},
{
"chunk": 251,
"story": 21,
"summary": "The coffin seems to advance; he strikes the plate with his knife hilt, the rotten lid falls away, and he is face to face with the dead woman, shrieking.",
"predicament": "Someone who can no longer bear imagining the worst forces it open to look, and the sight destroys them."
},
{
"chunk": 252,
"story": 21,
"summary": "Months later, a rich society party passes through; the leader, once a gambler in the camp who narrowly escaped hanging there, shows his wife and friends the hanging tree.",
"predicament": "Someone who escaped disgrace and rose to wealth returns carelessly to the scene of their shady past, with company."
},
{
"chunk": 253,
"story": 21,
"summary": "They pass the picked skeleton of a donkey still tethered beside a miner's kit, and at the tree the millionaire playfully loops the old rope round his neck, horrifying his wife.",
"predicament": "Someone who once nearly met a shameful end makes light of it in front of people who know nothing of their past."
},
{
"chunk": 254,
"story": 21,
"summary": "They find an open grave with two skulls and a broken coffin; a young man jumps in, and the millionaire reads aloud the coffin plate with its coarse epitaph for a local woman.",
"predicament": "Sightseers treat an old tragedy as entertainment, making a show of the remains while the most delicate among them protests."
},
{
"chunk": 255,
"story": 21,
"summary": "The millionaire dismisses a glittering rock as fool's gold; his wife, alone, pockets a wallet from an old coat and finds her own letters and photographs addressed to her former fiancé, and she is found dead, her scarred face white.",
"predicament": "Someone who abandoned a faithful partner long ago stumbles on proof of how they died, and it kills them."
}
]
@@ -0,0 +1,68 @@
[
{
"chunk": 256,
"story": 22,
"summary": "A farm boy, lost at midnight while searching for missing cows, follows a bridle path through a dark forest and sees a light near a deserted house.",
"predicament": "Someone lost alone at night sees a light where no light should be, in a place with a bad name."
},
{
"chunk": 257,
"story": 22,
"summary": "The house is reputed haunted, and the boy himself once helped smash its windows; shaking with fear and guilt, he refuses to turn back and walks past.",
"predicament": "Someone who once mocked what they feared must pass it alone at night, and refuses to turn back."
},
{
"chunk": 258,
"story": 22,
"summary": "Through the window he sees a man staring motionless at a table and believes him dead; he pushes his face into the window, an owl shrieks, the man leaps up and puts out the candle, and the boy flees. The previous morning, a writer finds a friend reading his ghost story on a streetcar.",
"predicament": "Someone frightened out of their wits forces themselves closer to look, and a sudden noise sends everyone fleeing."
},
{
"chunk": 259,
"story": 22,
"summary": "The writer says his friend is ruining his own pleasure by reading a ghost story on a streetcar, likening it to hearing an opera in an office.",
"predicament": "Someone takes offence that a friend enjoys their work casually, and starts to lecture them about it."
},
{
"chunk": 260,
"story": 22,
"summary": "He insists that an author has a right to the reader's undivided attention, growing so vehement that the friend notices his pallor and burning eyes.",
"predicament": "A friend's small grievance swells into fury out of all proportion, and the other begins to wonder what is wrong."
},
{
"chunk": 261,
"story": 22,
"summary": "He says a ghost story must be read alone, at night, by candlelight, if it is to produce the fear the author intends.",
"predicament": "Someone insists that others meet their exact conditions before their work can be fairly judged at all, and grows heated about it."
},
{
"chunk": 262,
"story": 22,
"summary": "The friend, suspecting the writer takes opium, teases him by asking whether the story could really frighten him; the writer says he would not dare to read it alone in a deserted house, and that he has a manuscript that would kill him.",
"predicament": "Someone is told to their face that they lack the courage to face something alone, and the taunt stings."
},
{
"chunk": 263,
"story": 22,
"summary": "Stung, the friend accepts the dare to read the manuscript alone at night in the deserted house. The next day three men and the boy go there, mocking his story, and find a dead body.",
"predicament": "Someone accepts a dare to prove their courage alone at night, and is found dead the next day."
},
{
"chunk": 264,
"story": 22,
"summary": "The men admit the boy was right; one reads the manuscript found by the body, which begins as a suicide note.",
"predicament": "A child nobody believed is proved right in the worst way, and the doubters have to admit it."
},
{
"chunk": 265,
"story": 22,
"summary": "The manuscript is the writer's declaration that he will kill himself at midnight on the anniversary of the day his friend, the house's former owner, killed himself in fulfilment of a vow between them.",
"predicament": "Someone bound by a terrible old pledge to a dead friend feels obliged to follow them into death."
},
{
"chunk": 266,
"story": 22,
"summary": "A postscript tells the reader the writer will come for him after midnight; a relative of the dead friend burns the paper; a newspaper reports the writer has been committed to an asylum after being found sharpening a razor.",
"predicament": "Someone who set out to prove another's courage has frightened them to death, and ends up mad themselves."
}
]
@@ -0,0 +1,44 @@
[
{
"chunk": 267,
"story": 23,
"summary": "Among restless frontier settlers who kept moving west, one silent man stayed on alone in a log house in the forest, living by selling skins and letting his once-cleared land go back to wilderness.",
"predicament": "Someone stays on alone in a place everyone else has left, never smiling and never saying why they stay."
},
{
"chunk": 268,
"story": 23,
"summary": "His cabin has a single window, boarded up for as long as anyone remembers; he looks seventy but is fifty, aged by something besides years. The narrator heard his story from his grandfather.",
"predicament": "Someone aged by an old grief keeps one part of their home shut up for good, and nobody knows the reason."
},
{
"chunk": 269,
"story": 23,
"summary": "He is found dead and buried beside his long-dead wife. Years earlier he had come west young and hopeful with a devoted wife who shared every hardship gladly.",
"predicament": "Someone who came to a hard, lonely place full of hope with the person they loved is left there alone."
},
{
"chunk": 270,
"story": 23,
"summary": "He came home to find his wife delirious with fever, far from any help; after three days of nursing she seemed to die. Numb, he prepares her for burial, fumbling, surprised he cannot weep, telling himself it must be all right.",
"predicament": "Someone alone and far from help watches the person they love die, and is too numb to believe it."
},
{
"chunk": 271,
"story": 23,
"summary": "Stupefied by grief, he finishes laying her out and sits by the body with his head on the table; a wailing cry like a lost child sounds from the woods, and he falls asleep.",
"predicament": "Someone keeping watch alone over a loved one's body is too exhausted by grief to stay awake."
},
{
"chunk": 272,
"story": 23,
"summary": "He wakes in total darkness and hears soft bare footsteps; paralysed with terror, he cannot speak her name. Something crashes against the table and falls, there is a struggle, and when he reaches across, the body is gone.",
"predicament": "Someone alone in the dark with the dead hears something moving near the body, and is too terrified to act."
},
{
"chunk": 273,
"story": 23,
"summary": "Mad with terror he fires his rifle blindly and by the flash sees a panther dragging his wife toward the window; at dawn he finds her throat torn, her fists clenched and a piece of the animal's ear between her teeth. She had not been dead.",
"predicament": "Someone who gave up the person they loved for dead learns too late that they were alive and fighting for their life."
}
]
@@ -0,0 +1,62 @@
[
{
"chunk": 274,
"story": 24,
"summary": "A young heiress writes to her married friend that she is fascinated by a handsome, brilliant, much-travelled man at her seaside resort.",
"predicament": "Someone new to high society finds themselves falling for a charming stranger they know almost nothing about."
},
{
"chunk": 275,
"story": 24,
"summary": "She defends him against her friend's teasing; a gossiping old acquaintance hints he has mysterious connections and is thought a magician, which thrills her and explains his power over her.",
"predicament": "Someone told that the stranger who fascinates them has a dark mystery finds it only makes them more fascinating."
},
{
"chunk": 276,
"story": 24,
"summary": "He calls late while her aunt is out; she is helpless and in love, conscious that she is only a rough mining heiress, and he leaves after a few moments.",
"predicament": "Someone who feels unworthy of the person they love is sure their feelings showed, and that it drove them away."
},
{
"chunk": 277,
"story": 24,
"summary": "The gossip calls again; she likes him because they were childhood playmates in a mining camp, known by humble nicknames.",
"predicament": "Someone now respectable keeps up an old friendship from their humble past, though it could expose where they came from."
},
{
"chunk": 278,
"story": 24,
"summary": "She recalls a third, ragged playmate who scavenged waste rock to feed his mother and defended her; after her father struck it rich they parted, and she heard the boy was later killed.",
"predicament": "Someone who rose to wealth remembers a poor childhood friend who stood up for them, and lost track of."
},
{
"chunk": 279,
"story": 24,
"summary": "She confesses she is ashamed of her origins before the man she loves, and frightened that a relative of her dead playmate staying at the hotel will recognise and expose her.",
"predicament": "Someone hiding a humble past from the person they love fears that an acquaintance from those days will give them away."
},
{
"chunk": 280,
"story": 24,
"summary": "Having seen him from her window, she goes to the beach alone; he asks to sit or walk with her, and she stammers that she would be pleased to do anything.",
"predicament": "Someone who arranged a chance meeting with the person they love is so flustered that they make a fool of themselves."
},
{
"chunk": 281,
"story": 24,
"summary": "He helps her up and will not let go of her hand; her leg has gone to sleep and she sinks, he holds her coolly, and mortified she pushes free and falls in the sand.",
"predicament": "Someone longing to seem graceful before the person they love suffers a small humiliation, and pushes them away in shame."
},
{
"chunk": 282,
"story": 24,
"summary": "She sobs and calls him a thug; he kneels tenderly, declares he has loved her for years, and reveals that he is the ragged childhood playmate she thought dead.",
"predicament": "Someone ashamed of their humble past learns that the person they love shared it, and has loved them since."
},
{
"chunk": 283,
"story": 24,
"summary": "He survived the bullet and came at the gossip's suggestion; the gossip also invented the dark mystery to rouse her curiosity. She is engaged.",
"predicament": "Someone discovers a friend quietly arranged their romance, including the mystery that drew them in."
}
]
@@ -0,0 +1,92 @@
[
{
"chunk": 284,
"story": 25,
"summary": "A young woman with strange, disquieting eyes tells the man she loves that she will never marry him; he angrily demands a reason, and her fixed, emotionless stare tames his anger and makes him shiver.",
"predicament": "Someone who loves a person refuses to marry them and will not say why, while the other demands to know."
},
{
"chunk": 285,
"story": 25,
"summary": "She tells him she is insane, or possessed, and asks him to hear her story; he is disbelieving but deeply disturbed.",
"predicament": "Someone finally tells the person who loves them a dreadful truth about themselves, and the other cannot believe it."
},
{
"chunk": 286,
"story": 25,
"summary": "In a pitch-dark log cabin deep in the forest a woman crouches against the wall clutching a child, watched by something unseen.",
"predicament": "Someone alone in the dark with a child crouches against the wall, knowing they are being watched."
},
{
"chunk": 287,
"story": 25,
"summary": "A frontier woodsman lives devotedly with his young wife and baby in the wilderness; one morning, as he takes his rifle to hunt, she begs him to stay because of a terrible dream.",
"predicament": "Someone begs the person they love not to leave that day because of a dread they cannot explain."
},
{
"chunk": 288,
"story": 25,
"summary": "He laughs off her dream kindly, kisses her and the baby, and goes, closing the door on his happiness forever.",
"predicament": "Someone laughs off a loved one's warning, kindly, and leaves them alone, never to find them the same again."
},
{
"chunk": 289,
"story": 25,
"summary": "He does not return by nightfall; she bars the door, puts a candle in the open window for him and falls asleep, dreaming of a second child with the face of a wild animal, and wakes trembling.",
"predicament": "Someone left alone at night waiting for a partner who has not come home falls asleep and wakes from a nightmare."
},
{
"chunk": 290,
"story": 25,
"summary": "She checks her baby and holds it close, then sees two glowing eyes at the level of her own: a panther at the window.",
"predicament": "Someone alone with a child in the dark suddenly sees a predator's eyes watching them from close by."
},
{
"chunk": 291,
"story": 25,
"summary": "The panther stands at the window watching; paralysed, she sinks to the floor shielding the baby with her body and waits through endless moments for it to spring.",
"predicament": "Someone shielding a child from a danger they cannot fight waits motionless for it to strike, unable to look away."
},
{
"chunk": 292,
"story": 25,
"summary": "The husband returns late, finds the window open, and his wife cowering; she laughs madly and hands him the baby, which she has crushed to death in her embrace. The woman telling the story falls silent.",
"predicament": "Someone comes home too late to find their partner driven mad by terror, and their child dead in their arms."
},
{
"chunk": 293,
"story": 25,
"summary": "The suitor does not understand; she explains she is the second child, born three months after that night at the cost of her mother's life, and asks whether such a person can be sane. He cannot bring himself to take her hand.",
"predicament": "Someone reveals they were born out of a horror that marked them, and asks whether they can ever be like other people."
},
{
"chunk": 294,
"story": 25,
"summary": "The suitor recalls local tales of a panther looking in at windows at night, and theorises that the rumour fed her morbid imagination.",
"predicament": "Someone told an unbelievable story looks for a rational explanation that lets them keep their disbelief."
},
{
"chunk": 295,
"story": 25,
"summary": "He recalls her solitary life and fear of the night and decides she is mad; when he tries to question her she says they cannot marry and flees into the dark woods, and he glimpses shining eyes and runs after her shouting a warning.",
"predicament": "Someone decides the person they love is mad, then sees something in the dark that makes them doubt their own reason."
},
{
"chunk": 296,
"story": 25,
"summary": "He sees her reach her father's door, and no panther. He lives alone in a cottage by the forest, publicly known to have been rejected by her.",
"predicament": "Someone rejected by the person they love lives on alone near them, the refusal known to everyone."
},
{
"chunk": 297,
"story": 25,
"summary": "One night he wakes to gleaming eyes at his open window; terrified but resolute, he raises his revolver and fires.",
"predicament": "Someone woken at night by a terrifying presence at the window has a weapon in hand and a split second to decide."
},
{
"chunk": 298,
"story": 25,
"summary": "He hears a scream, follows a blood trail into the woods, and finds that he has killed not a panther but the woman he loved; her father mourns at her grave for years.",
"predicament": "Someone who fired at a terror in the dark finds they have killed the person they loved."
}
]
@@ -0,0 +1,42 @@
#!/usr/bin/env python3
"""Assemble records.json and groups.json from batches/ and groups_src.py, and check them."""
import collections, glob, json, pathlib
from groups_src import G, STANDING
here = pathlib.Path(__file__).parent
chunks = json.loads((here.parent / 'chunks.json').read_text())
stories = json.loads((here.parent / 'stories.json').read_text())
recs = [r for f in sorted(glob.glob(str(here / 'batches/s*.json'))) for r in json.loads(open(f).read())]
assert [r['chunk'] for r in recs] == list(range(len(chunks))), 'every scene, once, in order'
assert all(chunks[r['chunk']]['story'] == r['story'] for r in recs)
seen = collections.Counter(m for g in G for m in g['members'])
dup = [m for m, n in seen.items() if n > 1]
assert not dup, f'scenes in two groups: {dup}'
by = {r['chunk']: r for r in recs}
out = []
for g in G:
assert 3 <= len(g['options']) <= 5, g['id']
st = sorted({by[m]['story'] for m in g['members']})
stand = collections.Counter(STANDING[by[m]['story']] for m in g['members'])
out.append({
'id': g['id'], 'name': g['name'], 'predicament': g['predicament'],
'sentence': f"A {g['actor']} wants {g['wants']} from {g['counterpart']}.",
'actor': g['actor'], 'wants': g['wants'], 'counterpart': g['counterpart'],
'stories': st, 'story_titles': [stories[s]['title'] for s in st],
'standing': dict(stand), 'stage': stand.most_common(1)[0][0],
'members': [{'chunk': m, 'story': by[m]['story'], 'predicament': by[m]['predicament']} for m in g['members']],
'options': [{'text': t, 'source': s, 'moves': mv,
'in_group': (int(s.split(':')[1]) in g['members']) if s.startswith('scene:') else None}
for t, s, mv in g['options']],
})
unassigned = [r['chunk'] for r in recs if r['chunk'] not in seen]
(here / 'records.json').write_text(json.dumps(recs, indent=1, ensure_ascii=False))
(here / 'groups.json').write_text(json.dumps({'groups': out, 'unassigned': unassigned}, indent=1, ensure_ascii=False))
multi = sum(len(g['stories']) >= 2 for g in out)
print(f'{len(recs)} scenes, {len(out)} groups ({multi} span 2+ stories), '
f'{sum(seen.values())} assigned, {len(unassigned)} unassigned: {unassigned}')
for g in out:
print(f"{g['id']} {len(g['members']):2} scenes {len(g['stories'])} stories stage {g['stage']:6} {g['name']}")
src = collections.Counter(o['source'].split(':')[0] for g in out for o in g['options'])
print('option sources:', dict(src), '| scene options citing a scene outside their group:',
sum(o['in_group'] is False for g in out for o in g['options']))
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,308 @@
"""Hand-built reference grouping of the Bierce predicaments (Claude-written, no local inference).
Each scene is in at most one group; scenes that fit no recurring situation stay unassigned.
Every group spans at least three of the 26 stories, and no story supplies more than half a
group's members.
Options follow DESIGN.md: 3-5 per group, each marked by where it came from --
'archetype' a fixed, setting-free option
'scene:N' what someone in scene N actually did (or refused to do)
'filled' written to fill a gap the scenes leave
`moves` names spine paths and a direction only (+ / - / risk / set). No magnitudes: the model never
chooses a number. Skill labels proposed for this corpus: nerve (kept from Jacobs: holding steady
under fear), wits (reading the signs and thinking coolly in a tight spot).
"""
G = [
dict(id='G01', name='On watch, and your guard slips',
predicament='You were trusted to keep watch through the night, your guard has slipped, and something may already be coming.',
actor='person on watch', wants='to keep everyone safe and the lapse unseen', counterpart='whatever is out in the dark',
members=[0, 1, 3, 160, 271, 289],
options=[
('Own up at once and raise the alarm.', 'filled', {'standing':'-', 'relationships.comrades':'+'}),
('Say nothing and hope nobody noticed.', 'archetype', {'flags.slept_on_watch':'set', 'standing':'risk'}),
('Challenge whatever is out there, loudly.', 'scene:160', {'nerve':'+', 'relationships.comrades':'risk'}),
('Force yourself awake and keep your eyes on the dark.', 'scene:3', {'nerve':'+'})]),
dict(id='G02', name='Duty demands you harm someone you love',
predicament='Your duty requires you to do something that will destroy someone you love, and nobody else can do it for you.',
actor='person under a duty', wants='to do right by both', counterpart='someone they love on the wrong side of it',
members=[5, 6, 7, 9, 77, 78, 121, 126, 127],
options=[
('Do your duty, and tell nobody what it cost you.', 'scene:9', {'standing':'+', 'relationships.loved_one':'-', 'flags.duty_over_love':'set'}),
('Ask whether it is truly required.', 'scene:78', {'relationships.authority':'-', 'standing':'-'}),
('Give them a chance to get clear before you act.', 'scene:6', {'relationships.loved_one':'+', 'standing':'risk'}),
('Refuse, and take the punishment yourself.', 'filled', {'standing':'-', 'relationships.loved_one':'+', 'relationships.authority':'-'})]),
dict(id='G03', name='Told to obey without question',
predicament='You have been told flatly to obey and not to ask why, and you believe the order will get the wrong people hurt.',
actor='subordinate', wants='to do right without defying orders', counterpart='the one giving orders',
members=[76, 79, 128, 134, 138, 139, 152, 153],
options=[
('Obey to the letter, and make sure someone witnessed the order.', 'scene:128', {'relationships.authority':'-', 'flags.order_witnessed':'set', 'standing':'risk'}),
('Obey, and answer anyone who objects with the words used on you.', 'scene:138', {'relationships.subordinates':'-', 'standing':'risk'}),
('Ask plainly whether it is really meant.', 'scene:78', {'relationships.authority':'-', 'nerve':'+'}),
('Refuse, and accept what follows.', 'filled', {'standing':'-', 'relationships.authority':'-', 'nerve':'+'}),
('Hold your tongue and do as you are told.', 'archetype', {'relationships.authority':'+'})]),
dict(id='G04', name='A private score settled through official power',
predicament='Someone with power over you is using it to settle a private score, and it may cost lives besides yours.',
actor='person caught in a grudge', wants='to survive it and stop the harm', counterpart='someone in authority with a grudge',
members=[75, 80, 81, 91, 95, 141],
options=[
('Answer the insult to their face, and go anyway.', 'scene:91', {'nerve':'+', 'relationships.rival':'-', 'standing':'risk'}),
('Say nothing now, and wait for your chance.', 'scene:141', {'wits':'+', 'relationships.rival':'-', 'flags.revenge':'set'}),
('Stop it on your own authority.', 'scene:81', {'nerve':'+', 'relationships.authority':'-', 'standing':'risk'}),
('Keep the gossip quiet and let the matter lie.', 'scene:80', {'relationships.authority':'+', 'standing':'+'})]),
dict(id='G05', name='A stranger who is not what they seem',
predicament='A stranger everyone else accepts seems not quite right to you, and you cannot yet say why.',
actor='watchful person', wants='to know who they really are', counterpart='a charming stranger',
members=[16, 119, 122, 274, 275],
options=[
('Go after them and demand the truth.', 'scene:120', {'nerve':'+', 'relationships.stranger':'-'}),
('Ask around quietly.', 'scene:275', {'wits':'+'}),
('Keep them at arm\'s length.', 'archetype', {'relationships.stranger':'-'}),
('Let yourself be charmed.', 'scene:276', {'relationships.stranger':'+', 'flags.charmed':'set'})]),
dict(id='G06', name='Your heart is on the other side',
predicament='You serve one side while your family, your feelings or your oldest ties belong to the other.',
actor='person of divided loyalty', wants='to be trusted without disowning their own', counterpart='those who doubt them',
members=[2, 105, 164, 165],
options=[
('Tell your family plainly where you stand.', 'scene:2', {'relationships.family':'-', 'standing':'+'}),
('Serve by your head, not your heart, and say so.', 'scene:105', {'standing':'risk', 'relationships.authority':'+'}),
('Keep quiet about where your ties lie.', 'archetype', {'flags.hidden_ties':'set'}),
('Keep in touch with the other side in secret.', 'filled', {'relationships.family':'+', 'standing':'risk', 'flags.divided_loyalty':'set'})]),
dict(id='G07', name='The only way to know is to go and look',
predicament='Nobody knows what waits ahead, and the only way to find out is for someone to walk into it alone.',
actor='volunteer', wants='to learn the truth and bring it back', counterpart='whatever lies ahead',
members=[35, 38, 40, 41, 42, 46, 47, 48, 49, 50, 162],
options=[
('Go yourself, alone.', 'scene:38', {'nerve':'+', 'standing':'+', 'flags.volunteered':'set'}),
('Creep in slowly and read the signs.', 'scene:48', {'wits':'+'}),
('Push on further to be certain.', 'scene:49', {'wits':'+', 'standing':'risk'}),
('Send someone else in.', 'filled', {'relationships.comrades':'-', 'standing':'-'}),
('Hurry back with what you know.', 'archetype', {'relationships.comrades':'+'})]),
dict(id='G08', name='One bold act sweeps everyone into slaughter',
predicament='One person\'s bold act has set everyone around them in motion, and the cost is falling on the rest.',
actor='person caught up in it', wants='to honour the act without dying for it', counterpart='the one who acted, and whoever commands',
members=[44, 45, 70, 71, 115, 116, 117],
options=[
('Rush forward with the rest.', 'scene:44', {'nerve':'+', 'relationships.comrades':'+', 'standing':'risk'}),
('Call everyone back, and bear their anger.', 'scene:45', {'relationships.comrades':'-', 'standing':'+'}),
('Try to stop the one who started it.', 'scene:70', {'nerve':'+', 'standing':'risk'}),
('Hold your place as ordered.', 'archetype', {'relationships.authority':'+', 'relationships.comrades':'-'})]),
dict(id='G09', name='Refusing the safe way out, lest it look like fear',
predicament='There is a safe way out of the danger, and you will not take it because someone might call it fear.',
actor='person proud of their courage', wants='never to be seen afraid', counterpart='the watching crowd, or their own pride',
members=[67, 68, 72, 154, 230, 231],
options=[
('Stand in the open and let them see.', 'scene:67', {'standing':'+', 'nerve':'+', 'flags.reckless':'set'}),
('Refuse to yield, arms folded.', 'scene:154', {'nerve':'+', 'standing':'risk'}),
('Take cover like everyone else.', 'archetype', {'standing':'-'}),
('Call for help, whatever it looks like.', 'scene:230', {'relationships.household':'+', 'standing':'-'})]),
dict(id='G10', name='Your courage is called into question',
predicament='People doubt your courage, and you are ready to risk a great deal to prove them wrong.',
actor='person whose courage is doubted', wants='to be believed brave', counterpart='those who doubt them',
members=[145, 150, 155, 215, 216, 262, 263],
options=[
('Accept the dare.', 'scene:263', {'nerve':'+', 'standing':'risk', 'flags.took_dare':'set'}),
('Explain yourself plainly.', 'filled', {'standing':'+', 'relationships.doubters':'+'}),
('Endure it in silence and wait for a chance to show them.', 'scene:144', {'relationships.doubters':'-', 'standing':'-'}),
('Laugh it off.', 'archetype', {'relationships.doubters':'+'}),
('Stand up for someone else who is being called a coward.', 'scene:155', {'relationships.friend':'+', 'nerve':'+'})]),
dict(id='G11', name='Finding out you are afraid',
predicament='You have always thought yourself brave, and now, where nobody can see, you find that you are afraid.',
actor='person who thought themselves fearless', wants='to master their fear', counterpart='their own nerves',
members=[57, 59, 61, 146, 148, 217, 247],
options=[
('Tell yourself it is nothing, and look away.', 'scene:57', {'nerve':'-'}),
('Name the fear and keep your place.', 'filled', {'nerve':'+', 'standing':'+'}),
('Find one small thing to do about it.', 'scene:62', {'nerve':'+', 'wits':'+'}),
('Cry out for help.', 'scene:59', {'nerve':'-', 'relationships.comrades':'+'})]),
dict(id='G12', name='A gaze you cannot escape',
predicament='Something has fixed its eyes on you, and while you look back you cannot move, think or get away.',
actor='person held by a stare', wants='to break free', counterpart='whatever holds them',
members=[56, 60, 184, 191, 232, 233, 290, 291],
options=[
('Look away and back off slowly.', 'scene:231', {'wits':'+', 'standing':'-'}),
('Hold still and shield whoever is with you.', 'scene:291', {'nerve':'+', 'relationships.family':'+'}),
('Strike out at it.', 'scene:297', {'nerve':'+', 'flags.struck_blind':'set'}),
('Give in to it.', 'scene:184', {'nerve':'-', 'relationships.controller':'+'})]),
dict(id='G13', name='Alone at night with the dead',
predicament='You are alone at night with the dead, and every small sound in the dark begins to seem like movement.',
actor='person keeping vigil', wants='to last until morning', counterpart='the dead, or what seems to be',
members=[212, 213, 218, 219, 245, 249, 250, 251, 272],
options=[
('Sit tight and read until daylight.', 'scene:213', {'nerve':'+'}),
('Light your last candle and look.', 'scene:218', {'nerve':'+', 'wits':'+'}),
('Force it open and face it.', 'scene:251', {'nerve':'+', 'flags.faced_the_dead':'set', 'standing':'risk'}),
('Fire into the dark.', 'scene:273', {'nerve':'+', 'flags.struck_blind':'set'}),
('Call out for someone.', 'archetype', {'nerve':'-', 'relationships.neighbours':'+'})]),
dict(id='G14', name='The one you struck in the dark',
predicament='You struck at someone you could not see clearly, and the one you hurt may be someone you love.',
actor='person who struck in the dark', wants='to know, and to undo it', counterpart='the unseen victim',
members=[65, 136, 137, 161, 166, 297, 298],
options=[
('Go back and search until you find them.', 'scene:162', {'nerve':'+', 'flags.searched':'set'}),
('Keep quiet and let it be forgotten.', 'scene:161', {'standing':'+', 'flags.guilty_secret':'set'}),
('Keep firing until it is over.', 'scene:137', {'standing':'risk', 'flags.struck_blind':'set'}),
('Tell someone what you did.', 'filled', {'standing':'-', 'relationships.comrades':'+'})]),
dict(id='G15', name='Condemned and waiting to die',
predicament='You have been condemned, the end is fixed, and all that is left to decide is how you meet it.',
actor='condemned person', wants='dignity, or a way out', counterpart='those who condemned them',
members=[10, 12, 13, 96, 98, 100, 101, 123],
options=[
('Meet it with jokes.', 'scene:96', {'nerve':'+', 'relationships.captor':'+'}),
('Give your word to go quietly.', 'scene:123', {'standing':'+', 'relationships.captor':'+'}),
('Plead for more time.', 'scene:101', {'standing':'-', 'nerve':'-'}),
('Fix your thoughts on your family.', 'scene:14', {'relationships.family':'+'})]),
dict(id='G16', name='Cornered, looking for a way out',
predicament='You are trapped with almost no room to move, and must find whatever way out is left to you.',
actor='trapped person', wants='to get free', counterpart='whatever holds them',
members=[14, 53, 54, 55, 97, 102],
options=[
('Take stock calmly, as if it were an enemy.', 'scene:53', {'wits':'+'}),
('Seize the nearest weapon and fight.', 'scene:102', {'nerve':'+', 'flags.violent':'set', 'standing':'risk'}),
('Plan a desperate escape and wait for the moment.', 'scene:14', {'wits':'+', 'nerve':'+'}),
('Wait to be found.', 'scene:59', {'relationships.comrades':'+'})]),
dict(id='G17', name='The danger you can only wait for',
predicament='Danger is coming and there is nothing to do but wait for it, and the waiting is worse than the blow.',
actor='person waiting', wants='to hold on', counterpart='the danger that has not yet come',
members=[62, 63, 130, 131, 142, 143, 149],
options=[
('Hold your place and keep your head.', 'archetype', {'nerve':'+'}),
('Keep busy with something small.', 'scene:62', {'nerve':'+', 'wits':'+'}),
('Go and meet it rather than wait.', 'scene:63', {'nerve':'+', 'standing':'risk'}),
('Dig in without being told.', 'scene:131', {'relationships.comrades':'+', 'wits':'+'})]),
dict(id='G18', name='A warning easy to laugh off',
predicament='Someone has warned of a danger that sounds like superstition, and it would be easy to laugh it off.',
actor='sceptic', wants='to carry on as usual', counterpart='the one who warned them',
members=[182, 228, 234, 287, 288, 294],
options=[
('Laugh it off kindly and carry on.', 'scene:288', {'relationships.warner':'-', 'flags.ignored_warning':'set'}),
('Stay home, just this once.', 'scene:287', {'relationships.warner':'+', 'money':'-'}),
('Find a sensible explanation for it.', 'scene:294', {'wits':'+', 'flags.ignored_warning':'set'}),
('Trust your own dread, whatever others say.', 'scene:182', {'relationships.others':'-', 'wits':'+'})]),
dict(id='G19', name='A truth nobody would believe',
predicament='You know something true that sounds impossible, and telling it would make you look a liar or a fool.',
actor='witness', wants='to be believed, or at least not mocked', counterpart='those who would hear it',
members=[8, 163, 180, 264, 285],
options=[
('Say nothing of it.', 'scene:9', {'standing':'+', 'flags.kept_silent':'set'}),
('Tell it anyway and let them laugh.', 'scene:264', {'standing':'-', 'nerve':'+'}),
('Find proof before you speak.', 'scene:162', {'wits':'+', 'nerve':'+'}),
('Tell a smaller story they will believe.', 'filled', {'wits':'+', 'standing':'+'})]),
dict(id='G20', name='Your careless words cost a life',
predicament='Something you said or set going lightly has cost someone their life, and now you must face what you did.',
actor='person at fault', wants='to escape the blame', counterpart='the dead person\'s memory, and everyone else',
members=[74, 107, 220, 221, 224, 266],
options=[
('Go in and face what you caused.', 'scene:221', {'standing':'+', 'nerve':'+', 'flags.faced_it':'set'}),
('Slip away and leave town.', 'scene:224', {'standing':'risk', 'flags.fled':'set'}),
('Quietly hide the proof.', 'scene:118', {'standing':'+', 'flags.guilty_secret':'set'}),
('Confess to the authorities.', 'filled', {'standing':'-', 'relationships.authority':'+'})]),
dict(id='G21', name='Judged before you are heard',
predicament='Everyone around you has already made up their mind about you, and nobody is waiting to hear your side.',
actor='accused person', wants='a fair hearing', counterpart='the people who have judged them',
members=[73, 140, 144, 192, 194, 195],
options=[
('Explain yourself, whatever it costs.', 'filled', {'standing':'risk', 'relationships.accusers':'+'}),
('Refer them to the one who can clear you.', 'scene:140', {'standing':'risk', 'relationships.witness':'risk'}),
('Too proud to explain, endure it.', 'scene:144', {'standing':'-', 'nerve':'+'}),
('Lie low and mend your ways.', 'scene:195', {'standing':'+', 'money':'-'}),
('Get out before they act.', 'scene:193', {'standing':'-', 'flags.run_off':'set'})]),
dict(id='G22', name='A tempting chance with a hidden price',
predicament='You have been handed an easy chance at what you want most, and there may be a price hidden in it.',
actor='person tempted', wants='the prize', counterpart='whoever offered it',
members=[15, 196, 197, 198, 242, 243, 244],
options=[
('Take it and go at once.', 'scene:238', {'money':'+', 'flags.took_the_chance':'set', 'standing':'risk'}),
('Accept, laughing, and deal with the catch later.', 'scene:197', {'money':'+', 'relationships.giver':'+', 'flags.bound_by_terms':'set'}),
('Ask who is offering, and why.', 'filled', {'wits':'+'}),
('Leave it alone.', 'archetype', {'money':'-'})]),
dict(id='G23', name='Turned away when you need help most',
predicament='You need help badly, and the very people who should give it look on, turn away, or explain why they cannot.',
actor='person in need', wants='help', counterpart='those who could give it',
members=[11, 88, 114, 208, 209, 210],
options=[
('Ask plainly, and keep asking.', 'scene:114', {'relationships.helpers':'risk', 'standing':'-'}),
('Tell them who you really are.', 'filled', {'standing':'+', 'relationships.helpers':'risk'}),
('Walk away into the cold.', 'scene:210', {'standing':'-', 'flags.turned_away':'set'}),
('Help yourself, however you can.', 'archetype', {'nerve':'+'})]),
dict(id='G24', name='Watching others suffer from safety',
predicament='Others are suffering in front of you, you are safe yourself, and it is easy to treat it as a show.',
actor='onlooker', wants='to feel as they should, or not at all', counterpart='the people suffering',
members=[30, 31, 33, 89, 108, 253, 254],
options=[
('Get down and help.', 'filled', {'relationships.sufferers':'+', 'money':'-'}),
('Walk on past; there is nothing you can do.', 'scene:89', {'relationships.sufferers':'-'}),
('Make a show of it for your companions.', 'scene:253', {'standing':'+', 'relationships.companions':'+'}),
('Stop the others treating it as a spectacle.', 'scene:254', {'relationships.companions':'-', 'standing':'+'})]),
dict(id='G25', name='Trying to save someone who will not be saved',
predicament='Someone you care about is heading for harm, and refuses every help or reason you offer them.',
actor='friend', wants='to save them', counterpart='someone set on their course',
members=[69, 106, 156, 186, 284],
options=[
('Remonstrate with them, and be laughed off.', 'scene:69', {'relationships.friend':'-'}),
('Threaten to go to the authorities.', 'scene:187', {'relationships.friend':'-', 'nerve':'+'}),
('Give them what they ask, and let them go.', 'scene:106', {'relationships.friend':'+', 'flags.let_them_go':'set'}),
('Shout a warning and run after them.', 'scene:295', {'nerve':'+', 'relationships.friend':'risk'})]),
dict(id='G26', name='Devoted to someone who wronged you',
predicament='The person you love has wronged you badly, and you stand by them anyway, whatever it costs you.',
actor='devoted partner', wants='to keep them', counterpart='the partner who wronged them',
members=[171, 174, 176, 185, 187, 241],
options=[
('Keep their secret, and bear the cost.', 'scene:171', {'relationships.partner':'+', 'money':'-', 'flags.kept_secret':'set'}),
('Hold to your promise out of honour.', 'scene:241', {'standing':'+', 'relationships.partner':'+'}),
('Deny everything to protect them.', 'scene:187', {'relationships.partner':'+', 'relationships.outsider':'-'}),
('Walk away.', 'archetype', {'relationships.partner':'-', 'standing':'+'})]),
dict(id='G27', name='Someone you thought gone for good turns up',
predicament='Someone you thought gone from your life for good is suddenly in front of you, and the past comes with them.',
actor='person with a past', wants='to keep the present intact', counterpart='someone from before',
members=[120, 175, 202, 225, 252, 279, 282],
options=[
('Face them and name them.', 'scene:122', {'nerve':'+', 'relationships.former':'risk'}),
('Pretend you do not know them.', 'filled', {'wits':'+', 'relationships.former':'-'}),
('Make light of the past in front of others.', 'scene:253', {'standing':'risk'}),
('Go to them, whatever the world sees.', 'scene:175', {'relationships.former':'+', 'standing':'-'})]),
dict(id='G28', name='Coming home too late',
predicament='You come back to the people you left behind and find you have arrived too late to help them.',
actor='person returning home', wants='to find them safe', counterpart='the family they left',
members=[34, 86, 87, 270, 292],
options=[
('Stay with them and grieve.', 'scene:87', {'relationships.family':'+', 'standing':'-'}),
('Nurse them yourself, far from help.', 'scene:270', {'relationships.family':'+', 'money':'-'}),
('Go for help at once.', 'filled', {'relationships.neighbours':'+'})]),
dict(id='G29', name='Alone with an old grief',
predicament='You live alone with an old grief, keeping a habit nobody understands, and people have stopped asking why.',
actor='recluse', wants='to keep faith with what they lost', counterpart='neighbours who do not understand',
members=[167, 168, 267, 268, 296],
options=[
('Keep to your ritual.', 'scene:168', {'relationships.neighbours':'-', 'flags.ritual':'set'}),
('Shut away whatever reminds you.', 'scene:268', {'standing':'-'}),
('Tell someone the story at last.', 'filled', {'relationships.neighbours':'+'}),
('Move on, as everyone else has.', 'archetype', {'money':'+', 'relationships.neighbours':'+'})]),
dict(id='G30', name='Lost in the dark, far from help',
predicament='You are lost at night far from anyone who knows you, and the way home looks strange and wrong.',
actor='lost person', wants='to get home', counterpart='the dark country around them',
members=[22, 23, 27, 28, 256, 257],
options=[
('Push on by the stars.', 'scene:256', {'nerve':'+', 'wits':'+'}),
('Lie down and wait for daylight.', 'scene:27', {'nerve':'-'}),
('Go toward the light, whatever it is.', 'scene:31', {'nerve':'+', 'standing':'risk'}),
('Turn back the way you came.', 'archetype', {'wits':'+'})]),
dict(id='G31', name='New to a hardened company',
predicament='You have joined a hardened group that does not know you, and they have already made up their minds about you.',
actor='newcomer', wants='to be accepted', counterpart='the old hands',
members=[37, 66, 151],
options=[
('Prove yourself in the first danger.', 'scene:67', {'nerve':'+', 'relationships.comrades':'+', 'standing':'risk'}),
('Keep to yourself and do your work.', 'scene:151', {'relationships.comrades':'-'}),
('Dress and carry yourself as you please, and let them laugh.', 'scene:37', {'standing':'-', 'nerve':'+'}),
('Win them over with good manners.', 'scene:66', {'relationships.comrades':'+'})]),
]
# Protagonist standing by story, for stage assignment (DESIGN.md "Stages"). Per story, not per
# scene: a coarse first cut, and the one place this grouping uses a judgement not in the text.
STANDING = {0:'low', 1:'high', 2:'low', 3:'middle', 4:'low', 5:'middle', 6:'middle', 7:'middle',
8:'low', 9:'high', 10:'middle', 11:'middle', 12:'middle', 13:'middle', 14:'low',
15:'middle', 16:'middle', 17:'high', 18:'low', 19:'middle', 20:'high', 21:'low',
22:'middle', 23:'low', 24:'high', 25:'middle'}
# Enlisted men, a captive, a child, a pauper and two frontier loners rank low; officers and
# professionals middle; a planter, a governor, a camp's leading citizen, a rich idler and an
# heiress high. Story 15's couple were rich once and are poor now: judged middle.
@@ -0,0 +1,49 @@
#!/usr/bin/env python3
"""Render groups.json + records.json as one self-contained page: REFERENCE.html."""
import html, json, pathlib
here = pathlib.Path(__file__).parent
d = json.loads((here / 'groups.json').read_text())
recs = {r['chunk']: r for r in json.loads((here / 'records.json').read_text())}
stories = json.loads((here.parent / 'stories.json').read_text())
e = html.escape
SRC = {'archetype': 'archetype', 'filled': 'filled gap'}
def src(o):
if o['source'].startswith('scene:'):
n = o['source'].split(':')[1]
return f'from scene {n}' + ('' if o['in_group'] else ' <span class="warn">(outside this group)</span>')
return SRC[o['source']]
def moves(m): return ' '.join(f'<code>{e(k)} {e(v)}</code>' for k, v in m.items())
def scene(c):
r = recs[c]
return (f'<details><summary><b>{c}</b> · <i>{e(stories[r["story"]]["title"])}</i> — {e(r["predicament"])}</summary>'
f'<p class="sum">{e(r["summary"])}</p></details>')
out = []
for g in d['groups']:
out.append(f'''<section><h2>{g["id"]} · {e(g["name"])}</h2>
<p class="pred">{e(g["predicament"])}</p>
<p class="meta">{e(g["sentence"])} · {len(g["members"])} scenes from {len(g["stories"])} stories
({e(", ".join(g["story_titles"]))}) · stage <b>{g["stage"]}</b></p>
<h3>Options</h3><ol>{"".join(f"<li>{e(o['text'])} <span class='src'>{src(o)}</span><br>{moves(o['moves'])}</li>" for o in g["options"])}</ol>
<h3>Scenes</h3>{"".join(scene(m["chunk"]) for m in g["members"])}</section>''')
un = ''.join(scene(c) for c in d['unassigned'])
page = f'''<!doctype html><html lang="en"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><title>Bierce Reference Groups</title>
<style>
:root{{--bg:#fbfaf7;--fg:#1d1d1b;--mute:#6b6760;--line:#e2ded6;--acc:#2f5d8a;--warn:#a4481c}}
@media (prefers-color-scheme:dark){{:root{{--bg:#191917;--fg:#e8e6e1;--mute:#a09c94;--line:#34332f;--acc:#8ab4dc;--warn:#e6915f}}}}
body{{background:var(--bg);color:var(--fg);font:16px/1.5 Georgia,serif;max-width:52rem;margin:0 auto;padding:1rem 16px 4rem}}
h1{{font-size:1.5rem}} h2{{font-size:1.15rem;margin:0 0 .3rem}} h3{{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--mute);margin:.9rem 0 .3rem}}
section{{border-top:1px solid var(--line);padding:1.2rem 0}} .pred{{font-size:1.05rem;margin:.2rem 0}}
.meta,.src,.sum{{color:var(--mute);font-size:.88rem}} .warn{{color:var(--warn)}}
code{{font:12px ui-monospace,monospace;border:1px solid var(--line);border-radius:3px;padding:0 .3em;margin-right:.2em}}
li{{margin:.35rem 0}} details{{margin:.2rem 0}} summary{{cursor:pointer}} .sum{{margin:.2rem 0 .5rem 1.2rem}}
</style></head><body>
<h1>Tales of Soldiers and Civilians: reference groups</h1>
<p class="meta">Ambrose Bierce, 1891 (Project Gutenberg #13334). 26 stories, 299 scenes cut by the same rule as <code>chunk.py</code>.
Summaries, predicaments, groups and options written by Claude by reading every scene: no local inference.
A comparison baseline, not a pack. Option moves give a direction only, never a number.</p>
{"".join(out)}
<section><h2>Unassigned ({len(d["unassigned"])})</h2><p class="meta">Scenes that fit no situation recurring in three or more stories.</p>{un}</section>
</body></html>'''
(here / 'REFERENCE.html').write_text(page, encoding='utf-8')
print('wrote', here / 'REFERENCE.html', len(page), 'bytes')
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+13
View File
@@ -0,0 +1,13 @@
#!/usr/bin/env python3
"""Print a range of scenes for reading. Usage: dump.py <first_chunk> <last_chunk>"""
import json, sys
chunks = json.load(open(__file__.rsplit('/',1)[0] + '/chunks.json'))
a, b = int(sys.argv[1]), int(sys.argv[2])
cur = None
for i in range(a, min(b + 1, len(chunks))):
c = chunks[i]
if c['story'] != cur:
cur = c['story']
print(f"\n########## STORY {cur}: {c['title']} ##########")
print(f"\n----- scene {i} (story {cur}) -----")
print(c['text'].strip())
@@ -0,0 +1,73 @@
"""Split the Project Gutenberg plain text of Ambrose Bierce, *Tales of Soldiers and Civilians*
(1891/1898; here from "The Collected Works of Ambrose Bierce, Volume II", eBook #13334, which
contains this book and nothing else), into stories, then cut scenes with the same rule as
../chunk.py, ../jacobs/split_se.py and ../wharton/split_gutenberg.py (paragraph boundaries,
~320 words, tail >= 80).
Deterministic: titles are the 26 contents entries, matched as whole upper-case lines after the
contents block; roman-numeral section headings within a story are dropped; the Gutenberg preface,
contents and licence are dropped."""
import json, pathlib, re
TITLES = [
'A Horseman in the Sky', 'An Occurrence at Owl Creek Bridge', 'Chickamauga', 'A Son of the Gods',
'One of the Missing', 'Killed at Resaca', "The Affair at Coulter's Notch", 'The Coup de Grâce',
'Parker Adderson, Philosopher', 'An Affair of Outposts', 'The Story of a Conscience',
'One Kind of Officer', 'One Officer, One Man', 'George Thurston', 'The Mocking-Bird',
'The Man Out of the Nose', 'An Adventure at Brownville', 'The Famous Gilson Bequest',
'The Applicant', 'A Watcher by the Dead', 'The Man and the Snake', 'A Holy Terror',
'The Suitable Surroundings', 'The Boarded Window', 'A Lady from Redhorse', 'The Eyes of the Panther',
]
TARGET = 320
VOLUME = 'Tales of Soldiers and Civilians (Ambrose Bierce, 1891)'
raw = pathlib.Path('corpus/tales-of-soldiers-and-civilians.txt').read_text(encoding='utf-8').replace('\r', '')
raw = raw[:raw.index('*** END OF THE PROJECT GUTENBERG')]
lines = raw.split('\n')
start = next(i for i, l in enumerate(lines) if l.strip() == 'CONTENTS')
heads = []
for t in TITLES:
want = t.upper()
hits = [i for i, l in enumerate(lines)
if i > start + 40 and re.sub(r'\[\d+\]$', '', l.strip()) == want]
assert len(hits) == 1, (t, hits)
heads.append(hits[0])
assert heads == sorted(heads)
stories = []
for n, (t, a) in enumerate(zip(TITLES, heads)):
b = heads[n + 1] if n + 1 < len(heads) else len(lines)
body = '\n'.join(lines[a + 1:b])
paras = []
for p in re.split(r'\n\s*\n', body):
p = re.sub(r'\s+', ' ', p).strip()
if not p or re.fullmatch(r'[IVX]+\.?', p): continue
if re.match(r'^\[\d+\]', p): continue # footnote (e.g. Brownville's collaboration credit)
paras.append(p)
stories.append({'volume': VOLUME, 'title': t, 'words': sum(len(p.split()) for p in paras),
'text': '\n\n'.join(paras)})
chunks = []
for si, s in enumerate(stories):
buf, n = [], 0
for p in s['text'].split('\n\n'):
w = len(p.split())
if n + w > TARGET and buf:
chunks.append({'story': si, 'title': s['title'], 'volume': s['volume'], 'text': ' '.join(buf), 'words': n})
buf, n = [], 0
buf.append(p); n += w
if buf and n >= 80:
chunks.append({'story': si, 'title': s['title'], 'volume': s['volume'], 'text': ' '.join(buf), 'words': n})
elif buf:
# A short remainder (e.g. a story's final one- or two-line gut-punch, as in
# Chickamauga's "The child was a deaf mute.") would otherwise be silently
# dropped by the tail rule. Fold it into the previous chunk instead of losing it.
last = next(c for c in reversed(chunks) if c['story'] == si)
last['text'] += ' ' + ' '.join(buf)
last['words'] += n
pathlib.Path('stories.json').write_text(json.dumps(stories, indent=1, ensure_ascii=False), encoding='utf-8')
pathlib.Path('chunks.json').write_text(json.dumps(chunks, ensure_ascii=False), encoding='utf-8')
for si, s in enumerate(stories):
print(f"{si:2} {s['title']:34} {s['words']:6} words {sum(c['story']==si for c in chunks):3} scenes")
ws = sorted(c['words'] for c in chunks)
print(f'stories {len(stories)} scenes {len(chunks)} words/scene min {ws[0]} median {ws[len(ws)//2]} max {ws[-1]} total {sum(ws):,}')
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,281 @@
"""Situation catalogue v2: the 36 v1 entries plus the situations found in five more hand references
(Holmes, Bierce, Chekhov, Maupassant, Poe; built 2026-09-23 on Opus, no local inference).
v1 (`../catalogue_src.py`, `../catalogue.json`, `../labels-*.json`) is left exactly as it was: it is the
answer key for the classifier test pre-registered in `../README.md`, and changing it would move that key.
v2 imports v1's entries and mapping, adds to them, and writes only into this directory.
Mapping rule: a hand group joins an existing entry when it is the same predicament seen from the same
side; it becomes a new entry when the decision facing the player differs. Two corpora finding the same
thing make one entry, not two. Every hand group in all eight references maps to exactly one entry.
Running this file checks that, then writes catalogue.json, labels-<corpus>.json and recurrence.log here.
No inference.
"""
import collections, json, pathlib, sys
HERE = pathlib.Path(__file__).resolve().parent
sys.path.insert(0, str(HERE.parent))
import catalogue_src as v1
from catalogue_src import E
WIDENED = { # v1 entries whose includes the new corpora widen; definitions unchanged
'overlooked': '; good work that goes unrecognised while showier people are noticed',
'newcomer': '; a remote post where nothing is explained and you are watched; a hardened group that has already judged you',
'pretence': '; borrowing or faking the look of a station for one evening; passing among others in disguise',
'caught_out': '; a disgrace about to come to light; the searchers on their way to what you hid',
'dread': '; alone at night with the dead; a place that seems to work on you; a sound you cannot reason away',
'past_comes_back': '; someone thought gone for good suddenly in front of you',
}
NEW = [
# ---- danger, warning, protection -------------------------------------------------------------------
E('warning', 'A warning',
'A warning of real danger has come, and it would be easy to dismiss: either you have heeded it and others will not, or someone is urging it on you.',
'a warning the people who should protect you call imagination; an omen easy to laugh off; a companion who senses a danger nobody else can',
'a coincidence taken as guidance (sign); the danger is already here (dread)'),
E('on_watch', 'On watch',
'You must keep watch, or keep still and wait, for a danger that is coming, and the waiting wears at you.',
'a night watch where your guard slips; lying in wait in the dark; a blow you can only wait for',
'danger you can act against now (trapped)'),
E('at_their_mercy', 'At their mercy',
'Someone without pity holds your safety or your life in their hands, and may be enjoying it.',
'a violent head of the household; official power used to settle a private score; a captor watching how you take it',
'contempt or humouring without danger (power_over_you)'),
E('protecting_hunted', 'Someone hunted is in your care',
'Someone who came to you is being hunted by a dangerous person, and their safety depends on what you do.',
'hiding or advising a hunted client; helping someone escape a dangerous household at risk to yourself',
'deciding whether to take them on at all (plea_for_help)'),
E('plea_for_help', 'A plea for help',
'Someone in trouble with nowhere else to turn asks for help that will cost whoever gives it; you are the one asking, or the one asked.',
'a frightened stranger at the door who may not be able to pay; being turned away by the very people who should help',
'help offered on the giver\'s terms (benefactor); protecting someone already in your care (protecting_hunted)'),
E('trapped', 'Trapped',
'You are shut in or cornered with danger closing, perhaps with others depending on you, and only a cool head might find the way out.',
'shut in where nobody knows to look; death coming step by step; a companion who breaks at the worst moment',
'waiting for danger with nothing to do (on_watch)'),
E('isolation', 'Alone too long',
'You have been alone, or lost, too long and too far from anyone, and fear or strangeness has begun to make your decisions.',
'a solitary post in an empty place; lost at night where the way looks wrong',
'a specific thing in the dark (dread)'),
E('safe_while_others_suffer', 'Safe while others suffer',
'You are safe from a danger others must face, and it is easy to watch it as a show, or to trust walls that may not hold.',
'shutting yourself away from a danger everyone else faces; watching others suffer from safety',
'someone asks you for help directly (plea_for_help)'),
E('gone_missing', 'Gone missing',
'Someone has vanished or been given up for lost, and you may be the only one still looking.',
'a spouse or relative gone without a word; someone everyone buried who may still be alive',
'someone slipping away in front of you (losing_them)'),
E('losing_them', 'Losing them',
'Someone you love is slipping away, to illness, ruin or their own choices, and nothing you do seems to hold them.',
'spending everything to reach anyone who might save them; watching a loved one waste into a stranger; one who refuses every help',
'they have already vanished (gone_missing); it is already too late (too_late)'),
E('too_late', 'Too late',
'You arrive, act or understand at last, and it may already be too late to set it right.',
'arriving after the person has fled or struck; coming home to find you could not help; seeing what you owed someone only when they are gone',
'you did the harm yourself (unintended_harm)'),
# ---- orders, duty, courage ---------------------------------------------------------------------------
E('orders_without_reasons', 'Orders without reasons',
'Someone above you, or someone you trust, tells you to act and not to ask why, and you suspect what the reason is.',
'an order you believe will hurt the wrong people; a risky errand, perhaps unlawful, with the plan kept from you',
'you know the act is wrong and are pressed to do it (pressed_to_wrong)'),
E('duty_against_love', 'Duty against love',
'What your post demands and what you owe someone you love, or the side your heart is on, pull in opposite directions.',
'duty that requires harming someone you love; serving one side while your family belongs to the other',
'a straightforward bribe or pressure (pressed_to_wrong)'),
E('courage_doubted', 'Your nerve in question',
'Your courage is in question, in others\' eyes or your own, and proving it means taking a risk you could avoid.',
'refusing the safe way out lest it look like fear; setting out to show the doubters; finding, where nobody can see, that you are afraid',
'a genuine need to scout ahead (go_and_look)'),
E('go_and_look', 'Someone has to go and look',
'Nobody knows what waits ahead, and the only way to find out is for someone to walk into it alone.',
'volunteering to scout; being sent ahead into the unknown', 'proving your courage for its own sake (courage_doubted)'),
E('swept_along', 'Swept along by someone else\'s boldness',
'One person\'s bold act has set everyone around them moving, and the cost is falling on the rest of you.',
'a leader\'s gesture that commits everyone; being carried along into a charge you did not choose', ''),
E('condemned', 'The end is fixed',
'The outcome is settled against you, and all that is left to decide is how you meet it.',
'waiting for a sentence to be carried out; the last hours before an end you cannot change', '', recurs=False),
E('mercy_or_law', 'Mercy or the rules',
'You have caught someone who did wrong, and handing them over would be correct but not what you think is just.',
'letting a culprit go; keeping back a confession', 'you are the one who did it (owning_up)'),
# ---- truth, judgement, suspicion --------------------------------------------------------------------
E('against_the_verdict', 'Everyone has decided',
'Everyone around you has settled on an answer, about a person or an event, and you are almost alone in thinking they are wrong.',
'keeping faith in someone everyone says to give up on; doubting the official account',
'you are the one accused (wrongly_judged); you were wronged and cannot prove it (cant_prove_it)'),
E('unbelievable_truth', 'A truth nobody would believe',
'You know something true that sounds impossible, and telling it would make you look a liar, a fool or mad.',
'reporting what you lived through; an account the one listener who matters will not accept',
'you are sure who wronged you (cant_prove_it)'),
E('not_who_they_seem', 'Not who they seem',
'Someone accepted among you, perhaps close to you, is not who they claim, and the signs are there if you let yourself see them.',
'a stranger everyone else accepts; a companion who hides their name; someone you welcomed who has a false face',
'discovering a hidden fact about someone known (what_they_hid)'),
E('seen_too_much', 'You have seen too much',
'You have stumbled on something the people around you meant to keep hidden, and they may know that you saw it.',
'a locked room; overheard plans; a glimpse you were not meant to have', 'you are asked to keep it quiet (their_secret)'),
E('outmatched', 'Someone sharper',
'Someone sharper than you sees what you missed or meant to hide, keeps a step ahead, or shows you up in front of others.',
'being read at a glance; a public test you fail; a hiding place you cannot find because it is in plain sight',
'someone who mirrors you as a rival (mirror_rival)'),
E('mirror_rival', 'A rival who mirrors you',
'A rival matches you move for move, as if they knew your mind, and undoes whatever you attempt.',
'a double; a colleague who copies and forestalls you', 'a rival for a person (rival)'),
E('draw_it_out', 'Getting them to give it away',
'Someone is hiding what you need to know, and you must get them to reveal it without their realising they have.',
'a trick that makes them look at where it is hidden; a question that makes them boast', ''),
E('used', 'Used',
'Someone\'s trust is being used for another\'s hidden ends: you realise you were only a pawn, or you could use someone who trusts you.',
'hired for a scheme you were not told of; using a dying or dependent person\'s trust for your own purpose',
'an obvious con aimed at you (sure_thing)'),
E('in_your_keeping', 'In your keeping',
'Something too valuable to replace has been left in your keeping, and someone may come for it.',
'a treasure lent as security; papers you must guard', ''),
# ---- guilt, compulsion, revenge ----------------------------------------------------------------------
E('self_betrayal', 'The pull to ruin yourself',
'Something in you keeps pulling towards the one act that will undo you: giving yourself away, or becoming someone worse.',
'the urge to confess when you are safe; a compulsion that grows the more you resist; feeling yourself going to the bad',
'a single old habit resurfacing (habit)'),
E('guilt_that_returns', 'It keeps coming back',
'You wronged or failed someone, and reminders keep turning up that you can neither face nor get rid of.',
'a thing that will not stay buried; feeling punished by what you did', 'a person from the past with a claim (past_comes_back)'),
E('unintended_harm', 'The harm you did not mean',
'Something you did in haste, blindness or carelessness has hurt someone who did not deserve it, maybe someone you love, and now you must face it.',
'a blow struck in the dark; careless words that cost a life', 'you intended it (revenge)'),
E('revenge', 'Revenge',
'Someone has wronged you once too often, and anger is carrying you towards a revenge that cannot be undone.',
'a revenge they cannot escape and will know came from you; passion past the point of caution', ''),
E('cover_up_spiral', 'A cover-up that costs more than the truth',
'Something shameful is coming out, and hiding it, or keeping it hidden, may cost far more than owning it would.',
'replacing what was lost in secret and paying for years; a disgrace you could still bury',
'someone close keeps coming near it (hiding_from_close); being caught (caught_out)'),
# ---- work, money, standing ---------------------------------------------------------------------------
E('dead_end', 'A dead end',
'You have done the same thankless work for years, no longer believe it matters, and cannot see a way out, and you are tempted to stop wanting anything more.',
'a post that has stopped meaning anything; urged after hardship to want nothing so nothing can hurt you',
'your work is good and ignored (overlooked)'),
E('grease', 'Nothing moves without a little something',
'Something you are owed will happen only if you slip someone something, and everyone around you already does.',
'petty bribes for an ordinary service; tips to the gatekeeper', 'paid to go along with wrong (compromise_for_money)'),
E('bow_for_your_living', 'Bowing to the one who holds your living',
'Someone who holds your living will give you what you need only if you bow to them on something personal.',
'an employer who wants your private life arranged to suit them; a landlord with conditions',
'a gift with strings from an equal (strings)'),
E('kept_dependent', 'Kept dependent',
'Someone who controls your money or your prospects would lose by your independence, and works to keep you where you are.',
'a guardian who lives on your income and blocks your marriage', 'someone generous on their own terms (benefactor)'),
E('called_to_account', 'Called to account',
'Someone whose judgement you need is examining your conduct, and you want to show yourself in a better light than the facts allow.',
'an inquiry into what you did; explaining yourself to someone who decides your fate',
'already caught with proof (caught_out)'),
E('mistook_them', 'Mistaken about who matters',
'You have misread who stands high and who stands low, or what is precious and what is cheap, and are about to act on it.',
'snubbing someone who turns out to matter; treating the valuable as cheap', 'they misjudge you (wrongly_judged)'),
E('your_own_way', 'A world of your own',
'You have the means at last to shut out other people\'s say and build something entirely to your own design.',
'building your own place, your own house, your own enterprise', ''),
# ---- family, home, loss ------------------------------------------------------------------------------
E('family_against_your_path', 'A parent against the life you chose',
'You and a parent cannot accept how the other lives, and neither will give way.',
'a parent who despises your trade or match; a child who rejects your way', 'household blame and giving in (peace_at_home)'),
E('far_from_home', 'Far from home',
'You are cut off from home and the people you love, in a place that does not want you, for longer than you can bear.',
'exile; a long separation from someone you love', 'arriving and finding your footing (newcomer)'),
E('outside_looking_in', 'On the outside',
'Something shows you a fuller or warmer life than yours, others celebrating or what might have been, and you are on the outside of it.',
'passing a lit window; a glimpse of another life in a dull day', 'being overlooked beside someone admired (overlooked)'),
E('grief', 'A grief nobody hears',
'You carry a loss the people around you will not hear, or tell you you are mourning wrongly, or have stopped asking about.',
'nobody to tell; a private habit kept for the dead', 'the loss is still happening (losing_them)'),
E('death_as_burden', 'A death as a burden',
'Someone has died or is dying, and what weighs on those left is the trouble, cost or fright it brings them.',
'a dying relative whose timing is inconvenient; a stranger\'s death that becomes your chore', ''),
E('changed', 'Changed past recognition',
'You meet again someone you once knew well, and time has changed them, or you, almost past recognition.',
'an old friend who sends for you in a bad way; a former love grown old', 'a claim from the past (past_comes_back)'),
E('promised_elsewhere', 'Not free to love',
'You love someone you are not free to have: they are bound elsewhere, or a promise ties you to someone lost.',
'a vow to the dead; a love bound to another', 'a rival for them (rival)'),
]
NEW_SOURCES = {
'holmes': {'G01': 'wrongly_judged', 'G02': 'their_secret', 'G03': 'past_comes_back', 'G04': 'warning', 'G05': 'sure_thing',
'G06': 'newcomer', 'G07': 'seen_too_much', 'G08': 'on_watch', 'G09': 'protecting_hunted', 'G10': 'orders_without_reasons',
'G11': 'not_who_they_seem', 'G12': 'not_who_they_seem', 'G13': 'patron', 'G14': 'in_your_keeping', 'G15': 'caught_out',
'G16': 'mercy_or_law', 'G17': 'gone_missing', 'G18': 'against_the_verdict', 'G19': 'kept_dependent',
'G20': 'against_the_verdict', 'G21': 'plea_for_help', 'G22': 'outmatched', 'G23': 'outmatched', 'G24': 'pretence',
'G25': 'hiding_from_close', 'G26': 'let_another_take_blame', 'G27': 'at_their_mercy', 'G28': 'cant_prove_it',
'G29': 'too_late', 'G30': 'draw_it_out', 'G31': 'used', 'G32': 'protecting_hunted'},
'bierce': {'G01': 'on_watch', 'G02': 'duty_against_love', 'G03': 'orders_without_reasons', 'G04': 'at_their_mercy',
'G05': 'not_who_they_seem', 'G06': 'duty_against_love', 'G07': 'go_and_look', 'G08': 'swept_along',
'G09': 'courage_doubted', 'G10': 'courage_doubted', 'G11': 'courage_doubted', 'G12': 'dread', 'G13': 'dread',
'G14': 'unintended_harm', 'G15': 'condemned', 'G16': 'trapped', 'G17': 'on_watch', 'G18': 'warning',
'G19': 'unbelievable_truth', 'G20': 'unintended_harm', 'G21': 'wrongly_judged', 'G22': 'strings',
'G23': 'plea_for_help', 'G24': 'safe_while_others_suffer', 'G25': 'losing_them', 'G26': 'sacrifice',
'G27': 'past_comes_back', 'G28': 'too_late', 'G29': 'grief', 'G30': 'isolation', 'G31': 'newcomer'},
'chekhov': {'G01': 'dead_end', 'G02': 'grief', 'G03': 'outside_looking_in', 'G04': 'outside_looking_in', 'G05': 'power_over_you',
'G06': 'grease', 'G07': 'overlooked', 'G08': 'home_unseen', 'G09': 'too_late', 'G10': 'station', 'G11': 'dead_end',
'G12': 'losing_them', 'G13': 'family_against_your_path', 'G14': 'dread', 'G15': 'far_from_home',
'G16': 'death_as_burden', 'G17': 'cover_up_spiral'},
'maupassant': {'G01': 'pretence', 'G02': 'cover_up_spiral', 'G03': 'death_as_burden', 'G04': 'bow_for_your_living',
'G05': 'called_to_account', 'G06': 'mistook_them', 'G07': 'changed', 'G08': 'far_from_home', 'G09': 'unspoken',
'G10': 'revenge', 'G11': 'trapped', 'G12': 'isolation', 'G13': 'guilt_that_returns'},
'poe': {'G01': 'self_betrayal', 'G02': 'self_betrayal', 'G03': 'caught_out', 'G04': 'trapped', 'G05': 'gone_missing',
'G06': 'trapped', 'G07': 'unbelievable_truth', 'G08': 'guilt_that_returns', 'G09': 'mirror_rival', 'G10': 'revenge',
'G11': 'safe_while_others_suffer', 'G12': 'warning', 'G13': 'changed', 'G14': 'used', 'G15': 'at_their_mercy',
'G16': 'dread', 'G17': 'dread', 'G18': 'trapped', 'G19': 'self_betrayal', 'G20': 'promised_elsewhere',
'G21': 'losing_them', 'G22': 'after_your_money', 'G23': 'outmatched', 'G24': 'your_own_way'},
}
CATALOGUE = [dict(e, includes=e['includes'] + WIDENED.get(e['id'], '')) for e in v1.CATALOGUE] + NEW
SOURCES = {**v1.SOURCES, **NEW_SOURCES}
CORPORA = v1.CORPORA + list(NEW_SOURCES)
if __name__ == '__main__':
ids = [e['id'] for e in CATALOGUE]
assert len(ids) == len(set(ids)), 'duplicate id'
problems = [f'{c}:{g} -> unknown {t}' for c, m in SOURCES.items() for g, t in m.items() if t not in ids]
used = {t for m in SOURCES.values() for t in m.values()}
problems += [f'entry {i} has no source group' for i in ids if i not in used]
problems += [f'WIDENED names unknown entry {i}' for i in WIDENED if i not in ids]
examples, log, found = collections.defaultdict(list), [], collections.defaultdict(set)
for corpus in CORPORA:
chunks, pred, hand = v1.load_corpus(corpus)
unmapped = sorted({g for g in hand.values() if g not in SOURCES[corpus]})
if unmapped: problems.append(f'{corpus}: hand groups not in SOURCES: {unmapped}')
labels = {i: SOURCES[corpus].get(hand[i], 'none') if i in hand else 'none' for i in range(len(chunks))}
(HERE / f'labels-{corpus}.json').write_text(json.dumps(
{'corpus': corpus, 'from': 'hand groups mapped through catalogue_v2_src.SOURCES',
'labels': [{'chunk': i, 'story': chunks[i]['story'], 'label': labels[i], 'predicament': pred[i]} for i in range(len(chunks))]},
indent=0, ensure_ascii=False))
per = collections.defaultdict(list)
for i in sorted(labels):
if labels[i] != 'none': per[labels[i]].append(i)
for lab, mem in per.items():
seen = set()
for i in mem:
if chunks[i]['story'] in seen: continue
seen.add(chunks[i]['story']); examples[lab].append({'corpus': corpus, 'chunk': i, 'predicament': pred[i]})
if len(seen) == 3: break
story = [c['story'] for c in chunks]; ns = len(set(story))
log.append(f'\n== {corpus}: {ns} stories, {len(chunks)} scenes; rule: >= {v1.MIN_SCENES} scenes, '
f'>= {v1.min_stories(ns)} stories, no story over {v1.MAX_DOMINANT:.0%}')
log.append(f' scenes labelled: {sum(l != "none" for l in labels.values())} ({sum(l != "none" for l in labels.values())/len(chunks):.0%})')
passing = []
for lab in sorted(per, key=lambda k: -len(per[k])):
ok, nst, dom = v1.recurs(per[lab], story)
found[lab].add(corpus)
if ok: passing.append(lab)
log.append(f' {"PASS" if ok else " "} {lab:26s} {len(per[lab]):3d} scenes {nst:3d} stories top story {dom:4.0%}')
log.append(f' -> {len(passing)} recurring situations of {len(per)} present')
log.append(f'\n== {len(ids)} entries ({len(v1.CATALOGUE)} from v1, {len(NEW)} new): found in how many of the {len(CORPORA)} corpora')
for k in range(len(CORPORA), 0, -1):
row = [i for i in ids if len(found[i]) == k]
if row: log.append(f' {k}: ' + ', '.join(row))
if problems:
print('\n'.join(problems)); sys.exit(1)
out = {'about': 'Situation catalogue v2 for story-to-pack: v1 (O. Henry, Wharton, Jacobs; 2026-09-17) plus Holmes, Bierce, '
'Chekhov, Maupassant and Poe (2026-09-23). Every entry and mapping written by hand; no inference.',
'entries': [dict(e, corpora=sorted(found[e['id']]), examples=examples[e['id']]) for e in CATALOGUE]}
(HERE / 'catalogue.json').write_text(json.dumps(out, indent=1, ensure_ascii=False))
(HERE / 'recurrence.log').write_text('\n'.join(log).lstrip() + '\n')
print(f'catalogue.json: {len(CATALOGUE)} entries'); print('\n'.join(log[-12:]))
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,948 @@
{
"corpus": "jacobs",
"from": "hand groups mapped through catalogue_v2_src.SOURCES",
"labels": [
{
"chunk": 0,
"story": 0,
"label": "peace_at_home",
"predicament": "Someone waiting up for a relative who comes in late wants to reproach him, and gets cheek back."
},
{
"chunk": 1,
"story": 0,
"label": "peace_at_home",
"predicament": "A man learns a relative has promised a stranger his hospitality without asking, and fears what his spouse will say."
},
{
"chunk": 2,
"story": 0,
"label": "unwelcome_in_home",
"predicament": "A man who wants to turn an unwelcome guest away cannot find the nerve to say it."
},
{
"chunk": 3,
"story": 0,
"label": "peace_at_home",
"predicament": "A man who has let something happen under his roof fears his spouse will hold him responsible for it."
},
{
"chunk": 4,
"story": 0,
"label": "rival",
"predicament": "A young man who brought the person he is courting along is pushed aside by an older man who takes charge of her."
},
{
"chunk": 5,
"story": 0,
"label": "rival",
"predicament": "A jealous suitor tries to put his rival in his place, and only makes himself look childish."
},
{
"chunk": 6,
"story": 0,
"label": "none",
"predicament": "A spurned man realises he holds something over the rival who humiliated him, and decides to use it."
},
{
"chunk": 7,
"story": 0,
"label": "hiding_from_close",
"predicament": "A man hiding an innocent but compromising secret is met by his spouse, while the one person who could clear him refuses to."
},
{
"chunk": 8,
"story": 0,
"label": "hiding_from_close",
"predicament": "A man tries to hurry his spouse away from a secret while someone signals behind his back that something is up."
},
{
"chunk": 9,
"story": 0,
"label": "caught_out",
"predicament": "A man caught with an innocent secret is disowned by the one person who could explain it."
},
{
"chunk": 10,
"story": 0,
"label": "let_another_take_blame",
"predicament": "A man whose spite has got an innocent person abused must decide whether to own up and defend her."
},
{
"chunk": 11,
"story": 0,
"label": "owning_up",
"predicament": "A man tries to win back someone he wronged with a dangerous public show of devotion."
},
{
"chunk": 12,
"story": 0,
"label": "your_scheme",
"predicament": "A man pretends to be in danger to win sympathy, and the one who saved him sees through it."
},
{
"chunk": 13,
"story": 0,
"label": "owning_up",
"predicament": "Two men who quarrelled over a woman are both left out in the cold by the women they wronged."
},
{
"chunk": 14,
"story": 1,
"label": "caught_out",
"predicament": "A man losing a friendly contest tries to distract from his mistake, and is caught at it by his family."
},
{
"chunk": 15,
"story": 1,
"label": "none",
"predicament": "A guest who wants to leave a dangerous subject alone is coaxed by his hosts' curiosity into bringing it out."
},
{
"chunk": 16,
"story": 1,
"label": "strings",
"predicament": "Someone offered a thing that grants wishes is warned by the man who used it that it brings sorrow."
},
{
"chunk": 17,
"story": 1,
"label": "strings",
"predicament": "A man is offered a dangerous gift by someone who begs him to destroy it, and wants to keep it anyway."
},
{
"chunk": 18,
"story": 1,
"label": "strings",
"predicament": "A man half-believing in a promise of easy money must decide whether to test it and what to ask for."
},
{
"chunk": 19,
"story": 1,
"label": "dread",
"predicament": "A family that tempted fate laughs off their fears in daylight while one of them cannot shake them."
},
{
"chunk": 20,
"story": 1,
"label": "strings",
"predicament": "A family waiting on a hoped-for windfall sees a stranger approach who might bring it, or bad news."
},
{
"chunk": 21,
"story": 1,
"label": "none",
"predicament": "Parents receive news that their only child has been killed, from someone who cannot bring himself to say it."
},
{
"chunk": 22,
"story": 1,
"label": "strings",
"predicament": "A man learns the money he wished for has come as compensation for his child's death."
},
{
"chunk": 23,
"story": 1,
"label": "pressed_to_wrong",
"predicament": "A grieving woman seizes on a desperate chance to undo a death, and her spouse is afraid of what it would bring back."
},
{
"chunk": 24,
"story": 1,
"label": "pressed_to_wrong",
"predicament": "A man pressed by his grieving spouse must decide whether to do something he believes is wicked and dangerous."
},
{
"chunk": 25,
"story": 1,
"label": "dread",
"predicament": "A man who dreads what his wish may bring home must stop his spouse from opening the door to it."
},
{
"chunk": 26,
"story": 1,
"label": "dread",
"predicament": "A man must use his last chance to undo what his spouse most longs for, before she lets it in."
},
{
"chunk": 27,
"story": 2,
"label": "after_your_money",
"predicament": "A man who has hoarded his savings all his life falls ill far from anywhere he could spend them."
},
{
"chunk": 28,
"story": 2,
"label": "after_your_money",
"predicament": "A dying miser, surrounded by people hoping to inherit, is determined that nobody will get his money."
},
{
"chunk": 29,
"story": 2,
"label": "pressed_to_wrong",
"predicament": "Someone who spots a colleague quietly scheming to take unclaimed money must decide whether to expose him or join in."
},
{
"chunk": 30,
"story": 2,
"label": "your_scheme",
"predicament": "Two partners convinced a weaker person is secretly holding a fortune want to find it before anyone else learns of it."
},
{
"chunk": 31,
"story": 2,
"label": "cant_prove_it",
"predicament": "A schemer whose secret searches keep failing decides to confront the person he suspects directly."
},
{
"chunk": 32,
"story": 2,
"label": "after_your_money",
"predicament": "Someone suspected of hiding a windfall is pressed with bribes and threats by people who have no right to it."
},
{
"chunk": 33,
"story": 2,
"label": "your_scheme",
"predicament": "Someone forced to share a hidden windfall admits it is now stuck where neither partner can get at it."
},
{
"chunk": 34,
"story": 2,
"label": "your_scheme",
"predicament": "Distrustful partners stare at a fortune they cannot reach without getting caught, and blame each other for it."
},
{
"chunk": 35,
"story": 2,
"label": "your_scheme",
"predicament": "A man wants something a superior owns without revealing why, and tries flattery to get it."
},
{
"chunk": 36,
"story": 2,
"label": "your_scheme",
"predicament": "A buyer who cannot reveal why he wants something is made to pay more by a seller who senses his eagerness."
},
{
"chunk": 37,
"story": 2,
"label": "your_scheme",
"predicament": "A man who wants to cheat his partner out of a shared prize is watched too closely to slip away."
},
{
"chunk": 38,
"story": 2,
"label": "your_scheme",
"predicament": "A man trying to slip away with a shared prize is held up until the partner he meant to cheat catches him."
},
{
"chunk": 39,
"story": 2,
"label": "your_scheme",
"predicament": "A man who schemed to cheat a partner finds the prize gone and realises he may have been cheated himself."
},
{
"chunk": 40,
"story": 2,
"label": "your_scheme",
"predicament": "A schemer who was outwitted must stand and smile at the people who got the better of him."
},
{
"chunk": 41,
"story": 3,
"label": "none",
"predicament": "A man about to marry is needled by a dependent relative who hints at something to his discredit."
},
{
"chunk": 42,
"story": 3,
"label": "none",
"predicament": "A man in desperate debt makes veiled hints to the relative he hopes will pay it."
},
{
"chunk": 43,
"story": 3,
"label": "past_comes_back",
"predicament": "A man is blackmailed by a relative with old letters that could cost him the person he loves."
},
{
"chunk": 44,
"story": 3,
"label": "let_another_take_blame",
"predicament": "A man who has done something terrible in anger must cover for a relative's sudden disappearance."
},
{
"chunk": 45,
"story": 3,
"label": "hiding_from_close",
"predicament": "A man with a guilty secret must keep calm while someone he loves insists on lingering right at the spot."
},
{
"chunk": 46,
"story": 3,
"label": "hiding_from_close",
"predicament": "A man hiding a crime hears it discussed innocently and betrays his feelings with an outburst."
},
{
"chunk": 47,
"story": 3,
"label": "hiding_from_close",
"predicament": "A guilty man tries to hurry someone away from the scene of his crime, and she insists on staying."
},
{
"chunk": 48,
"story": 3,
"label": "hiding_from_close",
"predicament": "A man hiding something learns it may be discovered by an innocent accident, and must not show his fear."
},
{
"chunk": 49,
"story": 3,
"label": "hiding_from_close",
"predicament": "A man must retrieve something from where his secret lies before anyone else goes looking."
},
{
"chunk": 50,
"story": 3,
"label": "hiding_from_close",
"predicament": "A man secretly searching where his crime lies keeps pulling up reminders of it."
},
{
"chunk": 51,
"story": 3,
"label": "hiding_from_close",
"predicament": "A man who has failed to fix things quietly must now involve others while still keeping his secret."
},
{
"chunk": 52,
"story": 3,
"label": "hiding_from_close",
"predicament": "A man hiding something is offered help he cannot accept without being found out."
},
{
"chunk": 53,
"story": 3,
"label": "none",
"predicament": "A man who must face the thing he did alone gathers his nerve while others watch and wonder."
},
{
"chunk": 54,
"story": 3,
"label": "your_scheme",
"predicament": "A man who hid a crime is dragged down by it at the moment he tries to undo its consequences."
},
{
"chunk": 55,
"story": 4,
"label": "peace_at_home",
"predicament": "A woman who has lost something valuable suspects the people around her, and resents her spouse for not caring as much."
},
{
"chunk": 56,
"story": 4,
"label": "cant_prove_it",
"predicament": "Someone who has lost something accuses the most defenceless person nearby, and punishes her before any proof."
},
{
"chunk": 57,
"story": 4,
"label": "peace_at_home",
"predicament": "A man who thinks a household fuss is foolish keeps defending the accused and is scolded for taking her side."
},
{
"chunk": 58,
"story": 4,
"label": "caught_out",
"predicament": "A man who finds a family inquiry ridiculous cannot keep a straight face in front of its self-important leader."
},
{
"chunk": 59,
"story": 4,
"label": "let_another_take_blame",
"predicament": "A man who sees an innocent neighbour blamed for evidence he himself left must decide whether to own up."
},
{
"chunk": 60,
"story": 4,
"label": "caught_out",
"predicament": "A man who knows more than he says can barely hide his amusement from the self-important person running the inquiry."
},
{
"chunk": 61,
"story": 4,
"label": "cant_prove_it",
"predicament": "A self-important man, teased that a neighbour fancies him, resolves to prove his point by trapping her."
},
{
"chunk": 62,
"story": 4,
"label": "pressed_to_wrong",
"predicament": "A man refuses to let his home be used to entrap a friend, so the schemer plans to go behind his back."
},
{
"chunk": 63,
"story": 4,
"label": "unwelcome_in_home",
"predicament": "A man stuck with an unwelcome relative in his home sees a chance to have him disgraced and driven off."
},
{
"chunk": 64,
"story": 4,
"label": "power_over_you",
"predicament": "A man who has trapped his rival in an embarrassing hiding place decides to make the most of it."
},
{
"chunk": 65,
"story": 4,
"label": "caught_out",
"predicament": "A trapped man must listen in silence while someone tells a neighbour a story about him that he cannot deny."
},
{
"chunk": 66,
"story": 4,
"label": "caught_out",
"predicament": "A man caught somewhere he should not be is handed an embarrassing explanation, and has no better one to offer."
},
{
"chunk": 67,
"story": 5,
"label": "past_comes_back",
"predicament": "A man found out in wrongdoing is ordered by his partner to give up everything and leave by morning."
},
{
"chunk": 68,
"story": 5,
"label": "past_comes_back",
"predicament": "A man offered a harsh but fair way out of his disgrace wants a quieter bargain the other will not give."
},
{
"chunk": 69,
"story": 5,
"label": "pressed_to_wrong",
"predicament": "A man facing ruin threatens the only person who can expose him, and must choose whether to go through with it."
},
{
"chunk": 70,
"story": 5,
"label": "none",
"predicament": "A man who has just done something terrible in rage panics and must steady himself when a figure of the law appears."
},
{
"chunk": 71,
"story": 5,
"label": "none",
"predicament": "A man with a crime behind him and a few hours' start must decide what to take and where to run."
},
{
"chunk": 72,
"story": 5,
"label": "none",
"predicament": "A fugitive planning his escape finds that every choice might be the one that gets him caught."
},
{
"chunk": 73,
"story": 5,
"label": "dread",
"predicament": "A man alone with what he has done hears noises in the dark and fears it has come back for him."
},
{
"chunk": 74,
"story": 5,
"label": "let_another_take_blame",
"predicament": "A guilty man realises a stranger's blunder gives him someone else to blame."
},
{
"chunk": 75,
"story": 5,
"label": "let_another_take_blame",
"predicament": "A man framing an innocent person must act the outraged victim in front of the law."
},
{
"chunk": 76,
"story": 5,
"label": "let_another_take_blame",
"predicament": "A man must play the shocked innocent while the person he framed pleads the truth."
},
{
"chunk": 77,
"story": 5,
"label": "let_another_take_blame",
"predicament": "Someone falsely accused points to the real culprit, who must hold his nerve and keep up his story."
},
{
"chunk": 78,
"story": 5,
"label": "your_scheme",
"predicament": "A man who thought he had got away with it learns the one witness who could hang him is still alive."
},
{
"chunk": 79,
"story": 5,
"label": "your_scheme",
"predicament": "A man whose deceit has collapsed can only watch as the truth comes out and he is taken away."
},
{
"chunk": 80,
"story": 6,
"label": "none",
"predicament": "A penniless newcomer forces his way into a place he does not belong, counting on a secret to back him."
},
{
"chunk": 81,
"story": 6,
"label": "past_comes_back",
"predicament": "A man who has built a respectable new life is found by an old associate who threatens to expose his past."
},
{
"chunk": 82,
"story": 6,
"label": "past_comes_back",
"predicament": "A man pays off a blackmailer and learns the price will be half of everything, for good."
},
{
"chunk": 83,
"story": 6,
"label": "past_comes_back",
"predicament": "A reformed man warns a blackmailer not to push him too far, while the blackmailer sets his sights on the man's family."
},
{
"chunk": 84,
"story": 6,
"label": "none",
"predicament": "A man who has seized power over another knows the danger he is in, and guards himself even as he gloats."
},
{
"chunk": 85,
"story": 6,
"label": "unwelcome_in_home",
"predicament": "A household must make polite space for someone who holds them hostage."
},
{
"chunk": 86,
"story": 6,
"label": "unwelcome_in_home",
"predicament": "Someone watches a person she trusts give way at every turn to an intruder, and demands that he stand up for himself."
},
{
"chunk": 87,
"story": 6,
"label": "past_comes_back",
"predicament": "A man who is being blackmailed hears his tormentor threaten someone he loves, and must choose between swallowing it and hitting back."
},
{
"chunk": 88,
"story": 6,
"label": "your_scheme",
"predicament": "A blackmailer's hold depends on his victim's life, and that victim suddenly collapses."
},
{
"chunk": 89,
"story": 6,
"label": "none",
"predicament": "A blackmailer whose victim is dying must grab what he can before his hold disappears."
},
{
"chunk": 90,
"story": 6,
"label": "past_comes_back",
"predicament": "A dying man pressed by his tormentor bargains for time and for provision for someone he loves."
},
{
"chunk": 91,
"story": 6,
"label": "your_scheme",
"predicament": "A man who thinks his helpless victim is at his mercy leans in close to hear the secret."
},
{
"chunk": 92,
"story": 6,
"label": "power_over_you",
"predicament": "A man who pretended to be helpless strikes at the tormentor who threatened his family."
},
{
"chunk": 93,
"story": 6,
"label": "let_another_take_blame",
"predicament": "A man who has done a desperate thing arranges things so that suspicion falls elsewhere."
},
{
"chunk": 94,
"story": 7,
"label": "none",
"predicament": "A craftsman told his work looks like something else quietly fixes it before anyone else notices."
},
{
"chunk": 95,
"story": 7,
"label": "pretence",
"predicament": "An old man looking for a free drink offers a story in exchange."
},
{
"chunk": 96,
"story": 7,
"label": "dread",
"predicament": "People who laughed at a distant danger panic when it seems to have arrived on their doorstep."
},
{
"chunk": 97,
"story": 7,
"label": "dread",
"predicament": "Someone must choose between keeping himself safe behind a barred door and letting in a stranger in danger."
},
{
"chunk": 98,
"story": 7,
"label": "pretence",
"predicament": "A stranger with a thrilling tale of danger is rewarded by a frightened crowd without anyone checking it."
},
{
"chunk": 99,
"story": 7,
"label": "dread",
"predicament": "A community living in fear of an unseen threat ignores the one doubter, because he has a bad name."
},
{
"chunk": 100,
"story": 7,
"label": "cant_prove_it",
"predicament": "A man who has suffered a loss goes to the authorities for help and is brushed off as a nuisance."
},
{
"chunk": 101,
"story": 7,
"label": "none",
"predicament": "A community suffering repeated losses cannot get help, and cannot agree how to protect itself."
},
{
"chunk": 102,
"story": 7,
"label": "pretence",
"predicament": "A man tells a dramatic story of narrow escape to an audience eager to believe it."
},
{
"chunk": 103,
"story": 7,
"label": "pretence",
"predicament": "A man caught in a boastful lie is 'backed up' by a rival, who now has him trapped by it."
},
{
"chunk": 104,
"story": 7,
"label": "none",
"predicament": "People told their fears are nonsense by outsiders decide to take matters into their own hands."
},
{
"chunk": 105,
"story": 7,
"label": "none",
"predicament": "A band that set out to face a danger returns relieved to have found nothing, and is then called to face it for real."
},
{
"chunk": 106,
"story": 7,
"label": "caught_out",
"predicament": "A man with something to hide has an armed crowd force its way into his home."
},
{
"chunk": 107,
"story": 7,
"label": "caught_out",
"predicament": "A man caught with the evidence of his thefts brazens it out and dares his accusers to prove anything."
},
{
"chunk": 108,
"story": 7,
"label": "caught_out",
"predicament": "A man accused of wrongdoing turns his accusers' own exaggerations into his defence."
},
{
"chunk": 109,
"story": 7,
"label": "cant_prove_it",
"predicament": "People who know they were swindled cannot prove it, and must watch the swindler profit."
},
{
"chunk": 110,
"story": 8,
"label": "none",
"predicament": "A man nervously setting out to do something that matters to him is stopped by a friend with questions."
},
{
"chunk": 111,
"story": 8,
"label": "rival",
"predicament": "A man discovers a friend is after the same person he is, on the same day, and each races to get there first."
},
{
"chunk": 112,
"story": 8,
"label": "rival",
"predicament": "Two rivals agree someone must go first, and neither will be the one to wait."
},
{
"chunk": 113,
"story": 8,
"label": "rival",
"predicament": "Two rivals for the same prize trade claims of priority, and each suspects the other of a trick."
},
{
"chunk": 114,
"story": 8,
"label": "your_scheme",
"predicament": "Two rivals agree to settle who goes first by a game, and one slips in a condition the other does not examine."
},
{
"chunk": 115,
"story": 8,
"label": "your_scheme",
"predicament": "A man who tried to tip a contest in his favour loses it through his own oversight."
},
{
"chunk": 116,
"story": 8,
"label": "rival",
"predicament": "A man who lost the right to try first must wait while his rival takes his chance."
},
{
"chunk": 117,
"story": 8,
"label": "rival",
"predicament": "A man finds the rival he lost to has been refused, but can still use the terms of their bargain to keep him out."
},
{
"chunk": 118,
"story": 8,
"label": "rival",
"predicament": "A man bound by a promise he made watches a rival use it to keep him from what he wants."
},
{
"chunk": 119,
"story": 8,
"label": "caught_out",
"predicament": "A man who has been avoiding someone he cares for must explain why, and the only honest answer is embarrassing."
},
{
"chunk": 120,
"story": 8,
"label": "none",
"predicament": "A man bound by a rash promise finds the person he hoped to win is willing to help him get round it."
},
{
"chunk": 121,
"story": 8,
"label": "none",
"predicament": "Someone arranges to accept the suitor she prefers in a way his rival cannot object to."
},
{
"chunk": 122,
"story": 9,
"label": "newcomer",
"predicament": "A man wakes up somewhere strange with no idea how he got there."
},
{
"chunk": 123,
"story": 9,
"label": "newcomer",
"predicament": "A man in an unknown place looks for his one companion and a first clue to how they came to be there."
},
{
"chunk": 124,
"story": 9,
"label": "power_over_you",
"predicament": "A man who has always been obeyed tries to give orders somewhere nobody knows or believes who he is."
},
{
"chunk": 125,
"story": 9,
"label": "your_scheme",
"predicament": "Two people in trouble together try to put on a united front and end up blaming each other."
},
{
"chunk": 126,
"story": 9,
"label": "power_over_you",
"predicament": "Two people who claim to be respected professionals are treated as impostors and forced to do menial work."
},
{
"chunk": 127,
"story": 9,
"label": "power_over_you",
"predicament": "People brought low insist on their old status, and are mocked for it by those around them."
},
{
"chunk": 128,
"story": 9,
"label": "power_over_you",
"predicament": "A humiliated man pretends to submit while he quietly prepares his revenge."
},
{
"chunk": 129,
"story": 9,
"label": "power_over_you",
"predicament": "A man mocked for claiming skill is suddenly needed for it, and names his price."
},
{
"chunk": 130,
"story": 9,
"label": "power_over_you",
"predicament": "A man who has gained the upper hand over those who humiliated him enjoys every moment of it."
},
{
"chunk": 131,
"story": 9,
"label": "power_over_you",
"predicament": "A man who has secretly caused the trouble only he can cure makes the most of it."
},
{
"chunk": 132,
"story": 9,
"label": "none",
"predicament": "A man who swore he would never pay the person he scorned is forced by suffering to haggle with him."
},
{
"chunk": 133,
"story": 9,
"label": "power_over_you",
"predicament": "People who scorned two outsiders now depend on them completely, and pay for the privilege."
},
{
"chunk": 134,
"story": 9,
"label": "power_over_you",
"predicament": "A man who got even with his tormentors leaves them knowing they were had."
},
{
"chunk": 135,
"story": 10,
"label": "strings",
"predicament": "Someone given news that might change their life cannot take it in, while the people around them itch to know."
},
{
"chunk": 136,
"story": 10,
"label": "strings",
"predicament": "Someone who has never had luck is told of a windfall and is afraid to believe it."
},
{
"chunk": 137,
"story": 10,
"label": "strings",
"predicament": "A man sees a relative come into money and resents that luck never comes his way."
},
{
"chunk": 138,
"story": 10,
"label": "after_your_money",
"predicament": "A man flattered by new friends is told they are really after a relative's money."
},
{
"chunk": 139,
"story": 10,
"label": "after_your_money",
"predicament": "A man trying to expose flattering suitors trips over his own family's sensibilities."
},
{
"chunk": 140,
"story": 10,
"label": "rival",
"predicament": "Two rivals courting the same person keep topping each other's compliments while the family grows fed up."
},
{
"chunk": 141,
"story": 10,
"label": "rival",
"predicament": "A slow-talking man losing a contest to a glib rival looks for a trick instead of better words."
},
{
"chunk": 142,
"story": 10,
"label": "rival",
"predicament": "A man hires someone to spread a false rumour that will drive off his rival, and the hireling drives a hard bargain."
},
{
"chunk": 143,
"story": 10,
"label": "your_scheme",
"predicament": "A man courting for money pretends not to care about it and flatters the one he courts by letting her win."
},
{
"chunk": 144,
"story": 10,
"label": "your_scheme",
"predicament": "A schemer who thinks his deal is done walks away gloating too soon."
},
{
"chunk": 145,
"story": 10,
"label": "your_scheme",
"predicament": "A man makes a public show of selfless devotion, sure that it will cost him nothing."
},
{
"chunk": 146,
"story": 10,
"label": "your_scheme",
"predicament": "A schemer whose plan has worked is thanked for his goodness while the ground starts to shift under him."
},
{
"chunk": 147,
"story": 10,
"label": "your_scheme",
"predicament": "A man who faked a disaster to win a prize learns the disaster is real, and he is bound to his promise."
},
{
"chunk": 148,
"story": 11,
"label": "pretence",
"predicament": "A sceptic among believers is pressed to admit whether he has ever seen anything he could not explain."
},
{
"chunk": 149,
"story": 11,
"label": "newcomer",
"predicament": "A young man who arrived to find no one expecting him has to fill empty days in a strange place."
},
{
"chunk": 150,
"story": 11,
"label": "newcomer",
"predicament": "A traveller lost in the dark and the cold must find shelter before night closes in."
},
{
"chunk": 151,
"story": 11,
"label": "dread",
"predicament": "A worn-out traveller must choose between a long walk on and a nearby shelter he has been warned against."
},
{
"chunk": 152,
"story": 11,
"label": "dread",
"predicament": "A stranger taken in by odd hosts who seem keen to keep him wonders whether he has walked into a trap."
},
{
"chunk": 153,
"story": 11,
"label": "dread",
"predicament": "A guest must sit down in the dark with someone he cannot see, on hosts' terms he does not understand."
},
{
"chunk": 154,
"story": 11,
"label": "dread",
"predicament": "A guest left alone with a stranger he cannot see grows afraid, and must decide whether to trust his hosts."
},
{
"chunk": 155,
"story": 11,
"label": "dread",
"predicament": "A frightened man sees what he feared, and learns it is someone who was hurt and ashamed to be seen."
},
{
"chunk": 156,
"story": 11,
"label": "owning_up",
"predicament": "A man who shrank from someone must make amends, and finds they deserve his respect."
}
]
}
@@ -0,0 +1,828 @@
{
"corpus": "maupassant",
"from": "hand groups mapped through catalogue_v2_src.SOURCES",
"labels": [
{
"chunk": 0,
"story": 0,
"label": "none",
"predicament": "A worn-out couple learn the old relative they keep will not last the night, just as the busy season presses."
},
{
"chunk": 1,
"story": 0,
"label": "death_as_burden",
"predicament": "A couple at a dying relative's bedside think mainly of the working days his death and burial will cost them."
},
{
"chunk": 2,
"story": 0,
"label": "death_as_burden",
"predicament": "To save a day's work, a couple decide to announce a relative's death before it has actually happened."
},
{
"chunk": 3,
"story": 0,
"label": "cover_up_spiral",
"predicament": "Having told the neighbours a relative is dead, a woman keeps checking and finds him stubbornly still alive."
},
{
"chunk": 4,
"story": 0,
"label": "cover_up_spiral",
"predicament": "A couple who announced a death too early reassure each other that the authorities will bend the rules for them."
},
{
"chunk": 5,
"story": 0,
"label": "cover_up_spiral",
"predicament": "A couple who talked obliging officials into bending the rules face arriving mourners with the dying relative still breathing."
},
{
"chunk": 6,
"story": 0,
"label": "pretence",
"predicament": "A couple who summoned mourners too early must explain the embarrassing mistake and keep the guests from leaving offended."
},
{
"chunk": 7,
"story": 0,
"label": "death_as_burden",
"predicament": "A couple whose relative finally dies at the worst moment regret only the extra food and expense it costs them."
},
{
"chunk": 8,
"story": 1,
"label": "none",
"predicament": "A landowner recalls the strict old servant he trusted to guard his property, and the servant's unpromising young nephew."
},
{
"chunk": 9,
"story": 1,
"label": "none",
"predicament": "A landowner arrives for his yearly stay at a remote property, where an old servant and a disliked boy wait."
},
{
"chunk": 10,
"story": 1,
"label": "none",
"predicament": "A loyal old servant is plainly troubled by something and cannot bring himself to tell his employer about it."
},
{
"chunk": 11,
"story": 1,
"label": "none",
"predicament": "A loyal servant must confess to his employer that his own young relative has been stealing from him."
},
{
"chunk": 12,
"story": 1,
"label": "called_to_account",
"predicament": "A servant torn between his employer and his only young relative punishes the boy in front of the employer to prove his loyalty."
},
{
"chunk": 13,
"story": 1,
"label": "revenge",
"predicament": "A boy shamed in front of the household takes his revenge, and a guest wakes to find the house deliberately set alight."
},
{
"chunk": 14,
"story": 1,
"label": "revenge",
"predicament": "A man realises the young relative he punished has burned the house in revenge, killing an innocent old woman."
},
{
"chunk": 15,
"story": 1,
"label": "guilt_that_returns",
"predicament": "A man who killed his own young relative in a moment's rage must live with it after the law lets him go."
},
{
"chunk": 16,
"story": 2,
"label": "none",
"predicament": "A servant left alone with the chores feels a restlessness she cannot name and slips outside for a moment's air."
},
{
"chunk": 17,
"story": 2,
"label": "none",
"predicament": "A young servant stirred by spring feels the pull to abandon her work and simply lie in the sun."
},
{
"chunk": 18,
"story": 2,
"label": "none",
"predicament": "A young servant dozing alone is grabbed by a fellow worker who has been pressing his attentions on her for months."
},
{
"chunk": 19,
"story": 2,
"label": "none",
"predicament": "A young servant who fended off a coworker's advance sits talking with him, homesick for the family she left behind."
},
{
"chunk": 20,
"story": 2,
"label": "none",
"predicament": "A young woman asks a persistent suitor whether he truly means marriage, and he says yes to get what he wants."
},
{
"chunk": 21,
"story": 2,
"label": "revenge",
"predicament": "A young woman left pregnant confronts the lover who promised marriage and now laughs his promise off."
},
{
"chunk": 22,
"story": 2,
"label": "none",
"predicament": "A young woman who forced a promise from her lover learns he has quietly left, leaving her alone with the secret."
},
{
"chunk": 23,
"story": 2,
"label": "cover_up_spiral",
"predicament": "A young woman hiding a pregnancy lives in dread that every watching face in the household has already guessed."
},
{
"chunk": 24,
"story": 2,
"label": "none",
"predicament": "An anxious young woman hoping for word from her lover gets a letter instead saying her mother is dying."
},
{
"chunk": 25,
"story": 2,
"label": "far_from_home",
"predicament": "A young unmarried mother leaves her baby with others so she can keep working, and aches for it constantly."
},
{
"chunk": 26,
"story": 2,
"label": "none",
"predicament": "A servant with a hidden child to support makes herself indispensable to her employer, hoping he will pay her more."
},
{
"chunk": 27,
"story": 2,
"label": "none",
"predicament": "A servant whose hard work has enriched her employer tries to ask for a raise and loses her nerve at the last moment."
},
{
"chunk": 28,
"story": 2,
"label": "far_from_home",
"predicament": "A mother who sees her child only rarely finds it does not know her, then must go back to her employer."
},
{
"chunk": 29,
"story": 2,
"label": "bow_for_your_living",
"predicament": "A servant hiding a child is suddenly offered marriage by her employer, who plainly sees her as a good bargain."
},
{
"chunk": 30,
"story": 2,
"label": "bow_for_your_living",
"predicament": "A servant refuses her employer's proposal without being able to say why, and he assumes she will come round."
},
{
"chunk": 31,
"story": 2,
"label": "isolation",
"predicament": "A woman trapped between an unwelcome proposal and a secret she cannot tell runs away into the night."
},
{
"chunk": 32,
"story": 2,
"label": "none",
"predicament": "A woman in despair tries to end her life, is turned back by chance, and is returned to the place she fled."
},
{
"chunk": 33,
"story": 2,
"label": "bow_for_your_living",
"predicament": "An employer refused in marriage interrogates his servant about a secret lover, naming suspects until he nearly guesses right."
},
{
"chunk": 34,
"story": 2,
"label": "cover_up_spiral",
"predicament": "A woman pressed about her secret swears to a half-truth and keeps refusing, while her questioner grows more suspicious."
},
{
"chunk": 35,
"story": 2,
"label": "bow_for_your_living",
"predicament": "A servant who refused her employer is forced by him at night and finds herself being married with no way to resist."
},
{
"chunk": 36,
"story": 2,
"label": "cover_up_spiral",
"predicament": "A wife who married while hiding a child feels she has cheated her husband, and dreads the day he finds out."
},
{
"chunk": 37,
"story": 2,
"label": "cover_up_spiral",
"predicament": "A wife with a hidden past hears a pointed remark from her husband and fears he has found out at last."
},
{
"chunk": 38,
"story": 2,
"label": "cover_up_spiral",
"predicament": "A wife braced to be exposed learns her husband's real grievance is something else entirely: she has given him no children."
},
{
"chunk": 39,
"story": 2,
"label": "guilt_that_returns",
"predicament": "A childless couple try every remedy anyone suggests, and the wife comes to believe she is being punished for an old sin."
},
{
"chunk": 40,
"story": 2,
"label": "cover_up_spiral",
"predicament": "A wife beaten for being childless finally flings her long-kept secret in her husband's face: she already has a child."
},
{
"chunk": 41,
"story": 2,
"label": "none",
"predicament": "A husband learns his wife hid a child from him and, against all her fears, welcomes it because it answers his own need."
},
{
"chunk": 42,
"story": 3,
"label": "none",
"predicament": "A man receives his yearly letter from someone far away and is reminded of the chance meeting that began it."
},
{
"chunk": 43,
"story": 3,
"label": "none",
"predicament": "A man sent alone on an errand over the holiday passes a gloomy day travelling among strangers."
},
{
"chunk": 44,
"story": 3,
"label": "none",
"predicament": "A man sent to judge a loss on behalf of those who must pay for it seeks the facts from someone who was there."
},
{
"chunk": 45,
"story": 3,
"label": "none",
"predicament": "A newcomer is told by a local exactly how long he can safely stay out before the danger returns."
},
{
"chunk": 46,
"story": 3,
"label": "none",
"predicament": "A man walks alone into a strange, empty place that is safe to cross for only a few hours."
},
{
"chunk": 47,
"story": 3,
"label": "isolation",
"predicament": "A man working alone in an abandoned place grows uneasy at every small sound around him."
},
{
"chunk": 48,
"story": 3,
"label": "mistook_them",
"predicament": "Surprised by strangers, a man passes himself off as the owner of the place and is charmed by a young visitor."
},
{
"chunk": 49,
"story": 3,
"label": "unspoken",
"predicament": "A man showing strangers around embroiders a story he never witnessed, to hold the attention of a young woman."
},
{
"chunk": 50,
"story": 3,
"label": "trapped",
"predicament": "A man who lingered too long to impress a stranger realises he has trapped them all, with no way back."
},
{
"chunk": 51,
"story": 3,
"label": "unspoken",
"predicament": "In real danger beside a young stranger, a man finds he feels only a strange happiness at being close to her."
},
{
"chunk": 52,
"story": 3,
"label": "unspoken",
"predicament": "As the danger grows, a man presses his care on a young woman he barely knows and longs to hold her."
},
{
"chunk": 53,
"story": 3,
"label": "trapped",
"predicament": "Facing likely death together, a group of strangers keep up their courage with ceremony and song."
},
{
"chunk": 54,
"story": 3,
"label": "unspoken",
"predicament": "A man who snatched a kiss in what he thought were his last moments is rescued and finds he regrets the rescue."
},
{
"chunk": 55,
"story": 3,
"label": "far_from_home",
"predicament": "A man who let a brief chance at love slip past keeps it alive for years in yearly letters, regretting his hesitation."
},
{
"chunk": 56,
"story": 4,
"label": "none",
"predicament": "A man whose standing rests on openly mocking the local authority is locked in a long, quiet rivalry with it."
},
{
"chunk": 57,
"story": 4,
"label": "bow_for_your_living",
"predicament": "A man learns a well-paid job he could do is going to an outsider, because of the opinions he has flaunted."
},
{
"chunk": 58,
"story": 4,
"label": "bow_for_your_living",
"predicament": "Greed drives a man to go cap in hand to his old rival, who pretends not to know what he has come for."
},
{
"chunk": 59,
"story": 4,
"label": "bow_for_your_living",
"predicament": "A rival offers a man the work he wants on one condition: a public act that renounces everything he has boasted of."
},
{
"chunk": 60,
"story": 4,
"label": "bow_for_your_living",
"predicament": "A man who has agreed to humble himself for gain haggles over every detail of how publicly he must do it."
},
{
"chunk": 61,
"story": 4,
"label": "bow_for_your_living",
"predicament": "A man who traded his principles for a job must now kneel before his old rival and go through with it."
},
{
"chunk": 62,
"story": 4,
"label": "called_to_account",
"predicament": "A man forced to account for himself insists he is blameless while admitting, clause by clause, to every small failing."
},
{
"chunk": 63,
"story": 4,
"label": "called_to_account",
"predicament": "A man who calls himself honest admits, without seeing the contradiction, that he pads bills and bends the truth for gain."
},
{
"chunk": 64,
"story": 4,
"label": "none",
"predicament": "A man who swallowed his pride for profit gets what he wanted and keeps up the show of conversion ever after."
},
{
"chunk": 65,
"story": 5,
"label": "bow_for_your_living",
"predicament": "A spendthrift in need of money visits the one set of relatives he has never borrowed from, and despises them on sight."
},
{
"chunk": 66,
"story": 5,
"label": "called_to_account",
"predicament": "A spendthrift who came to borrow is met instead with a lecture on the debts and drinking his relatives have heard about."
},
{
"chunk": 67,
"story": 5,
"label": "bow_for_your_living",
"predicament": "A pleasure-loving guest endures the dull, pious household of the relatives he needs money from, and counts the hours."
},
{
"chunk": 68,
"story": 5,
"label": "none",
"predicament": "A guest who cannot stand another evening of his relatives' sermons invents an excuse and slips out to find some fun."
},
{
"chunk": 69,
"story": 5,
"label": "none",
"predicament": "A half-drunk visitor looking for low amusement in a strange town gets directions and is not sure he has them right."
},
{
"chunk": 70,
"story": 5,
"label": "mistook_them",
"predicament": "A visitor who has walked into the wrong house mistakes a respectable gathering for a disreputable one and makes himself at home."
},
{
"chunk": 71,
"story": 5,
"label": "mistook_them",
"predicament": "A man who thinks he has caught a respectable relative in a scandal learns he is the one who has disgraced himself."
},
{
"chunk": 72,
"story": 6,
"label": "none",
"predicament": "A pretty woman of modest means feels she was born for luxury and is tormented by the plainness of her life."
},
{
"chunk": 73,
"story": 6,
"label": "pretence",
"predicament": "A woman who avoids a richer friend out of envy is handed a coveted invitation and flings it aside in resentment."
},
{
"chunk": 74,
"story": 6,
"label": "pretence",
"predicament": "A woman afraid of looking poor at a grand occasion asks her spouse for money he had saved for his own small pleasure."
},
{
"chunk": 75,
"story": 6,
"label": "pretence",
"predicament": "Unwilling to look poor among the rich, a woman borrows a costly ornament from a wealthier friend to wear."
},
{
"chunk": 76,
"story": 6,
"label": "pretence",
"predicament": "A woman who shone at a grand occasion in borrowed finery hurries away so no one sees her shabby everyday coat."
},
{
"chunk": 77,
"story": 6,
"label": "cover_up_spiral",
"predicament": "A woman who borrowed a friend's valuable finds it gone after a night out, and must decide what to tell the owner."
},
{
"chunk": 78,
"story": 6,
"label": "cover_up_spiral",
"predicament": "A couple who lost a borrowed valuable stall the owner with a lie and resolve to replace it at any cost."
},
{
"chunk": 79,
"story": 6,
"label": "cover_up_spiral",
"predicament": "Rather than confess a loss to a friend, a couple ruin themselves secretly replacing it and sink into hard poverty."
},
{
"chunk": 80,
"story": 6,
"label": "changed",
"predicament": "A woman worn out by years of paying for a hidden loss meets the friend who never knew, and decides to tell her."
},
{
"chunk": 81,
"story": 6,
"label": "mistook_them",
"predicament": "A woman proudly confesses the ruinous sacrifice she made to hide a loss, and learns the thing was never worth it."
},
{
"chunk": 82,
"story": 7,
"label": "death_as_burden",
"predicament": "A proud family learns that a disgraced relative they never mention is dying, and must decide what that means for their name."
},
{
"chunk": 83,
"story": 7,
"label": "death_as_burden",
"predicament": "A respectable family worry less about a dying relative than about the scandal his unrepentant death would bring on them."
},
{
"chunk": 84,
"story": 7,
"label": "none",
"predicament": "Sent ahead on an awkward family errand, a young man must talk his way past suspicious strangers guarding a door."
},
{
"chunk": 85,
"story": 7,
"label": "death_as_burden",
"predicament": "A respectable woman come to reclaim a dying relative learns he is attended by the very company she disowns."
},
{
"chunk": 86,
"story": 7,
"label": "mistook_them",
"predicament": "A young man meets for the first time the disgraced relative his family shunned, and finds him surprisingly dignified."
},
{
"chunk": 87,
"story": 7,
"label": "none",
"predicament": "A go-between gently tries to reconcile a dying outcast with his family until their meddling ally barges in too soon."
},
{
"chunk": 88,
"story": 7,
"label": "death_as_burden",
"predicament": "A dying man refuses the rites his family wants forced on him, and they regroup to find another way in."
},
{
"chunk": 89,
"story": 7,
"label": "death_as_burden",
"predicament": "Rival parties compete to claim a dying man for their side, and his fury at all of them hastens his end."
},
{
"chunk": 90,
"story": 7,
"label": "pretence",
"predicament": "Once a defiant relative is dead and cannot object, his family claim him publicly as one of their own."
},
{
"chunk": 91,
"story": 8,
"label": "none",
"predicament": "A guest arrives to join a daring venture that is being launched before a large, curious crowd."
},
{
"chunk": 92,
"story": 8,
"label": "none",
"predicament": "A builder launching an untried invention hears confident onlookers predict it will fail before it clears the town."
},
{
"chunk": 93,
"story": 8,
"label": "none",
"predicament": "A group setting out on a venture find there is not room for everyone, and one of them must stay behind."
},
{
"chunk": 94,
"story": 8,
"label": "none",
"predicament": "A group lifted suddenly far above everyday life watch their friends and the world below shrink away."
},
{
"chunk": 95,
"story": 8,
"label": "none",
"predicament": "Travellers far above the world can still hear its ordinary noises clearly, and call back down to it."
},
{
"chunk": 96,
"story": 8,
"label": "none",
"predicament": "Travellers drifting with no fixed course debate where they are, and one feels a peace he has never known."
},
{
"chunk": 97,
"story": 8,
"label": "none",
"predicament": "A crew handling something that answers every small touch but cannot be steered keep it aloft by constant small corrections."
},
{
"chunk": 98,
"story": 8,
"label": "none",
"predicament": "Cut off from the world below, a small group drift into a blissful state where nothing seems to matter."
},
{
"chunk": 99,
"story": 8,
"label": "trapped",
"predicament": "A group lost in blissful forgetfulness is jolted when their craft suddenly drops and they must act fast."
},
{
"chunk": 100,
"story": 8,
"label": "trapped",
"predicament": "An experienced traveller hears a sign of danger that the others, and even their leader, will not admit."
},
{
"chunk": 101,
"story": 8,
"label": "trapped",
"predicament": "A leader who knows danger is coming keeps it quiet so as not to frighten the people in his care."
},
{
"chunk": 102,
"story": 8,
"label": "none",
"predicament": "Travellers racing ahead of a storm are urged to come down, but hold their course as long as they can."
},
{
"chunk": 103,
"story": 8,
"label": "trapped",
"predicament": "With open water ahead and a storm behind, a leader must bring his party down fast wherever he can."
},
{
"chunk": 104,
"story": 8,
"label": "none",
"predicament": "A party makes a rough, frightening landing among wary strangers and escapes the storm with seconds to spare."
},
{
"chunk": 105,
"story": 9,
"label": "none",
"predicament": "A middle-aged man who never felt himself growing old recalls the moment the truth was forced on him."
},
{
"chunk": 106,
"story": 9,
"label": "unspoken",
"predicament": "A man recalls the first sight of a young woman who struck him at once as the one he was meant to love."
},
{
"chunk": 107,
"story": 9,
"label": "unspoken",
"predicament": "A man falls helplessly in love with a married woman and gives no thought at all to her husband."
},
{
"chunk": 108,
"story": 9,
"label": "changed",
"predicament": "A man who has kept a cherished memory unchanged for years is greeted by a stranger who seems to know him."
},
{
"chunk": 109,
"story": 9,
"label": "changed",
"predicament": "A man meets the woman he idealised for years and is shattered to find time has made her someone else."
},
{
"chunk": 110,
"story": 9,
"label": "changed",
"predicament": "A man shaken by how a former love has aged goes home and sees, at last, how much he has aged himself."
},
{
"chunk": 111,
"story": 10,
"label": "none",
"predicament": "A man who refuses to share his company's favourite pastime explains, with a family story, why his line gave it up."
},
{
"chunk": 112,
"story": 10,
"label": "none",
"predicament": "Two brothers are so consumed by one passion that they will not interrupt it even for the birth of a child."
},
{
"chunk": 113,
"story": 10,
"label": "revenge",
"predicament": "Proud men whose repeated efforts to catch a menace keep failing take it as a personal insult, and begin to fear it."
},
{
"chunk": 114,
"story": 10,
"label": "revenge",
"predicament": "In the heat of a reckless chase, a man sees his brother killed in an instant by their own haste."
},
{
"chunk": 115,
"story": 10,
"label": "revenge",
"predicament": "A man alone in the dark with his brother's body feels terror, then turns it into rage when the enemy reappears."
},
{
"chunk": 116,
"story": 10,
"label": "revenge",
"predicament": "A grieving man takes his revenge with his bare hands and makes his dead brother's body witness the triumph."
},
{
"chunk": 117,
"story": 10,
"label": "none",
"predicament": "A family's grief over a reckless passion hardens into a lasting refusal, handed down to every later generation."
},
{
"chunk": 118,
"story": 11,
"label": "none",
"predicament": "A young man takes on his first long, isolated stint minding a place, cut off from everyone until spring."
},
{
"chunk": 119,
"story": 11,
"label": "far_from_home",
"predicament": "A young man about to be parted for months from the girl he loves hears nothing of the duties he is given."
},
{
"chunk": 120,
"story": 11,
"label": "far_from_home",
"predicament": "A young man parting for a long season from the girl he loves asks her, in a whisper, not to forget him."
},
{
"chunk": 121,
"story": 11,
"label": "far_from_home",
"predicament": "A young man shut away for a long season keeps going to look toward the place where the girl he loves is."
},
{
"chunk": 122,
"story": 11,
"label": "far_from_home",
"predicament": "A young man longing to leave while he still can watches the last chance close as heavy snow shuts him in."
},
{
"chunk": 123,
"story": 11,
"label": "isolation",
"predicament": "Left alone for a day in an isolated place, a young man finds the solitude suddenly frightening and goes looking for company."
},
{
"chunk": 124,
"story": 11,
"label": "none",
"predicament": "A young man goes out to meet his companion at the expected hour and finds no sign of him anywhere."
},
{
"chunk": 125,
"story": 11,
"label": "isolation",
"predicament": "A young man, frightened by the emptiness, hurries home sure his missing companion will be there, and finds the house cold."
},
{
"chunk": 126,
"story": 11,
"label": "trapped",
"predicament": "A young man whose companion is missing pictures every disaster, knowing he alone cannot search so vast a wilderness."
},
{
"chunk": 127,
"story": 11,
"label": "trapped",
"predicament": "A young man sets out alone in the night to search for a missing companion, taking on a dangerous climb."
},
{
"chunk": 128,
"story": 11,
"label": "trapped",
"predicament": "A searcher who has given everything to finding a lost companion is exhausted, freezing, and has still found nothing."
},
{
"chunk": 129,
"story": 11,
"label": "guilt_that_returns",
"predicament": "A young man who gave up a search to save himself wakes to hear his lost companion's voice calling his name."
},
{
"chunk": 130,
"story": 11,
"label": "guilt_that_returns",
"predicament": "A young man is convinced his dead companion is reproaching him for not searching harder, and is haunted by the guilt."
},
{
"chunk": 131,
"story": 11,
"label": "guilt_that_returns",
"predicament": "A young man alone with his guilt dreads each night, certain the one he failed will come calling again."
},
{
"chunk": 132,
"story": 11,
"label": "isolation",
"predicament": "A terrified young man shut in alone turns to drink to quiet his fear of what he believes waits outside."
},
{
"chunk": 133,
"story": 11,
"label": "guilt_that_returns",
"predicament": "A man drowning guilt and fear in drink runs out of it, and finds the terror waiting for him, worse than before."
},
{
"chunk": 134,
"story": 11,
"label": "isolation",
"predicament": "A man half mad with fear shuts out his only companion by mistake and barricades himself against its cries."
},
{
"chunk": 135,
"story": 11,
"label": "none",
"predicament": "A family returning after a long absence find signs that something has gone terribly wrong with those they left behind."
},
{
"chunk": 136,
"story": 11,
"label": "changed",
"predicament": "A family break into their shut-up house and find the young man they left in charge changed past recognition by solitude."
}
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,190 @@
== ohenry: 97 stories, 839 scenes; rule: >= 5 scenes, >= 4 stories, no story over 50%
scenes labelled: 475 (57%)
PASS pretence 52 scenes 12 stories top story 15%
PASS benefactor 48 scenes 14 stories top story 17%
PASS home_unseen 47 scenes 11 stories top story 15%
PASS station 47 scenes 10 stories top story 17%
PASS compromise_for_money 38 scenes 13 stories top story 18%
PASS newcomer 32 scenes 8 stories top story 22%
PASS sure_thing 30 scenes 7 stories top story 23%
PASS sacrifice 25 scenes 8 stories top story 28%
PASS rival 24 scenes 6 stories top story 29%
PASS despised 20 scenes 7 stories top story 30%
PASS pressed_to_wrong 19 scenes 5 stories top story 32%
PASS wrongly_judged 19 scenes 7 stories top story 26%
PASS sign 17 scenes 5 stories top story 35%
strings 15 scenes 4 stories top story 53%
PASS unspoken 13 scenes 4 stories top story 38%
overlooked 9 scenes 3 stories top story 67%
PASS homecoming 8 scenes 4 stories top story 50%
PASS patron 8 scenes 4 stories top story 50%
habit 4 scenes 3 stories top story 50%
-> 16 recurring situations of 19 present
== wharton: 10 stories, 262 scenes; rule: >= 5 scenes, >= 3 stories, no story over 50%
scenes labelled: 129 (49%)
PASS caught_out 12 scenes 4 stories top story 50%
PASS compromise_for_money 12 scenes 4 stories top story 50%
PASS past_comes_back 12 scenes 3 stories top story 50%
PASS what_they_hid 10 scenes 6 stories top story 20%
PASS peace_at_home 8 scenes 5 stories top story 38%
PASS newcomer 8 scenes 3 stories top story 50%
PASS rival 8 scenes 4 stories top story 50%
PASS power_over_you 8 scenes 4 stories top story 50%
PASS sacrifice 8 scenes 5 stories top story 38%
PASS owning_up 8 scenes 4 stories top story 38%
PASS home_unseen 7 scenes 4 stories top story 43%
PASS go_between 6 scenes 3 stories top story 50%
PASS waiting 6 scenes 3 stories top story 50%
PASS own_words_back 6 scenes 3 stories top story 50%
PASS strings 5 scenes 4 stories top story 40%
PASS their_secret 5 scenes 3 stories top story 40%
-> 16 recurring situations of 16 present
== jacobs: 12 stories, 157 scenes; rule: >= 5 scenes, >= 3 stories, no story over 50%
scenes labelled: 137 (87%)
PASS your_scheme 23 scenes 8 stories top story 39%
PASS dread 12 scenes 4 stories top story 42%
rival 11 scenes 3 stories top story 55%
power_over_you 11 scenes 3 stories top story 82%
hiding_from_close 10 scenes 2 stories top story 80%
PASS caught_out 10 scenes 5 stories top story 40%
PASS let_another_take_blame 8 scenes 5 stories top story 50%
strings 8 scenes 2 stories top story 62%
past_comes_back 8 scenes 3 stories top story 62%
peace_at_home 5 scenes 2 stories top story 60%
PASS pressed_to_wrong 5 scenes 4 stories top story 40%
after_your_money 5 scenes 2 stories top story 60%
PASS cant_prove_it 5 scenes 3 stories top story 40%
pretence 5 scenes 2 stories top story 80%
unwelcome_in_home 4 scenes 3 stories top story 50%
newcomer 4 scenes 2 stories top story 50%
owning_up 3 scenes 2 stories top story 67%
-> 6 recurring situations of 17 present
== holmes: 12 stories, 391 scenes; rule: >= 5 scenes, >= 3 stories, no story over 50%
scenes labelled: 232 (59%)
PASS against_the_verdict 18 scenes 5 stories top story 44%
PASS sure_thing 17 scenes 3 stories top story 35%
PASS protecting_hunted 14 scenes 4 stories top story 29%
PASS not_who_they_seem 12 scenes 5 stories top story 25%
newcomer 12 scenes 2 stories top story 50%
PASS outmatched 11 scenes 5 stories top story 27%
PASS plea_for_help 10 scenes 7 stories top story 20%
PASS gone_missing 10 scenes 4 stories top story 40%
warning 10 scenes 3 stories top story 60%
PASS caught_out 9 scenes 4 stories top story 44%
PASS mercy_or_law 9 scenes 5 stories top story 22%
wrongly_judged 9 scenes 5 stories top story 56%
PASS pretence 7 scenes 3 stories top story 43%
PASS used 7 scenes 3 stories top story 43%
PASS in_your_keeping 7 scenes 3 stories top story 43%
kept_dependent 7 scenes 3 stories top story 57%
seen_too_much 7 scenes 3 stories top story 57%
PASS past_comes_back 6 scenes 3 stories top story 33%
PASS orders_without_reasons 6 scenes 4 stories top story 50%
PASS draw_it_out 6 scenes 3 stories top story 50%
PASS too_late 6 scenes 4 stories top story 33%
PASS patron 5 scenes 3 stories top story 40%
on_watch 5 scenes 2 stories top story 60%
their_secret 5 scenes 3 stories top story 60%
PASS hiding_from_close 5 scenes 3 stories top story 40%
let_another_take_blame 5 scenes 3 stories top story 60%
at_their_mercy 4 scenes 2 stories top story 75%
cant_prove_it 3 scenes 2 stories top story 67%
-> 18 recurring situations of 28 present
== bierce: 26 stories, 299 scenes; rule: >= 5 scenes, >= 3 stories, no story over 50%
scenes labelled: 201 (67%)
PASS courage_doubted 20 scenes 8 stories top story 20%
PASS dread 17 scenes 7 stories top story 24%
PASS on_watch 13 scenes 7 stories top story 23%
PASS duty_against_love 13 scenes 5 stories top story 38%
PASS unintended_harm 13 scenes 8 stories top story 23%
PASS go_and_look 11 scenes 3 stories top story 45%
PASS condemned 8 scenes 3 stories top story 50%
PASS orders_without_reasons 8 scenes 3 stories top story 50%
PASS strings 7 scenes 3 stories top story 43%
PASS safe_while_others_suffer 7 scenes 4 stories top story 43%
PASS swept_along 7 scenes 3 stories top story 43%
PASS past_comes_back 7 scenes 6 stories top story 29%
PASS plea_for_help 6 scenes 4 stories top story 50%
PASS trapped 6 scenes 3 stories top story 50%
PASS isolation 6 scenes 3 stories top story 33%
PASS wrongly_judged 6 scenes 4 stories top story 50%
PASS at_their_mercy 6 scenes 3 stories top story 50%
PASS sacrifice 6 scenes 3 stories top story 50%
PASS warning 6 scenes 3 stories top story 50%
PASS unbelievable_truth 5 scenes 5 stories top story 20%
PASS not_who_they_seem 5 scenes 3 stories top story 40%
PASS too_late 5 scenes 4 stories top story 40%
PASS losing_them 5 scenes 5 stories top story 20%
PASS grief 5 scenes 3 stories top story 40%
newcomer 3 scenes 3 stories top story 33%
-> 24 recurring situations of 25 present
== chekhov: 21 stories, 228 scenes; rule: >= 5 scenes, >= 3 stories, no story over 50%
scenes labelled: 129 (57%)
PASS dead_end 15 scenes 7 stories top story 20%
PASS outside_looking_in 14 scenes 6 stories top story 36%
dread 11 scenes 4 stories top story 64%
PASS power_over_you 10 scenes 7 stories top story 20%
grease 9 scenes 4 stories top story 67%
overlooked 9 scenes 3 stories top story 78%
grief 9 scenes 4 stories top story 56%
cover_up_spiral 9 scenes 3 stories top story 67%
PASS station 8 scenes 3 stories top story 50%
too_late 7 scenes 3 stories top story 57%
PASS family_against_your_path 7 scenes 3 stories top story 43%
far_from_home 6 scenes 3 stories top story 67%
losing_them 6 scenes 2 stories top story 50%
death_as_burden 5 scenes 2 stories top story 60%
home_unseen 4 scenes 2 stories top story 75%
-> 5 recurring situations of 15 present
== maupassant: 12 stories, 137 scenes; rule: >= 5 scenes, >= 3 stories, no story over 50%
scenes labelled: 92 (67%)
PASS cover_up_spiral 12 scenes 3 stories top story 50%
PASS bow_for_your_living 11 scenes 3 stories top story 45%
PASS trapped 9 scenes 3 stories top story 44%
death_as_burden 8 scenes 2 stories top story 62%
revenge 7 scenes 3 stories top story 57%
far_from_home 7 scenes 3 stories top story 57%
pretence 6 scenes 3 stories top story 67%
guilt_that_returns 6 scenes 3 stories top story 67%
isolation 6 scenes 3 stories top story 67%
unspoken 6 scenes 2 stories top story 67%
PASS mistook_them 5 scenes 4 stories top story 40%
changed 5 scenes 3 stories top story 60%
called_to_account 4 scenes 3 stories top story 50%
-> 4 recurring situations of 13 present
== poe: 22 stories, 369 scenes; rule: >= 5 scenes, >= 3 stories, no story over 50%
scenes labelled: 253 (69%)
PASS self_betrayal 35 scenes 6 stories top story 26%
PASS trapped 32 scenes 5 stories top story 38%
PASS at_their_mercy 15 scenes 3 stories top story 47%
unbelievable_truth 15 scenes 6 stories top story 60%
outmatched 14 scenes 2 stories top story 86%
used 14 scenes 2 stories top story 71%
mirror_rival 13 scenes 2 stories top story 77%
revenge 13 scenes 3 stories top story 62%
warning 13 scenes 4 stories top story 69%
dread 13 scenes 6 stories top story 62%
safe_while_others_suffer 12 scenes 3 stories top story 75%
PASS guilt_that_returns 11 scenes 4 stories top story 45%
PASS gone_missing 10 scenes 4 stories top story 50%
PASS your_own_way 10 scenes 3 stories top story 50%
promised_elsewhere 9 scenes 2 stories top story 78%
PASS changed 7 scenes 4 stories top story 43%
losing_them 7 scenes 3 stories top story 57%
after_your_money 5 scenes 2 stories top story 60%
PASS caught_out 5 scenes 4 stories top story 40%
-> 8 recurring situations of 19 present
== 82 entries (36 from v1, 46 new): found in how many of the 8 corpora
5: newcomer
4: strings, past_comes_back, pretence, caught_out, dread
3: rival, wrongly_judged, home_unseen, power_over_you, sacrifice, warning, at_their_mercy, trapped, losing_them, too_late
2: compromise_for_money, sure_thing, after_your_money, hiding_from_close, their_secret, let_another_take_blame, cant_prove_it, station, peace_at_home, patron, pressed_to_wrong, owning_up, unspoken, overlooked, on_watch, plea_for_help, isolation, safe_while_others_suffer, gone_missing, orders_without_reasons, unbelievable_truth, not_who_they_seem, outmatched, used, guilt_that_returns, revenge, cover_up_spiral, far_from_home, grief, death_as_burden, changed
1: your_scheme, what_they_hid, unwelcome_in_home, benefactor, go_between, own_words_back, homecoming, waiting, sign, despised, habit, protecting_hunted, duty_against_love, courage_doubted, go_and_look, swept_along, condemned, mercy_or_law, against_the_verdict, seen_too_much, mirror_rival, draw_it_out, in_your_keeping, self_betrayal, unintended_harm, dead_end, grease, bow_for_your_living, kept_dependent, called_to_account, mistook_them, your_own_way, family_against_your_path, outside_looking_in, promised_elsewhere
@@ -0,0 +1,36 @@
# Situation catalogue v3
166 entries: v2's 82 plus 84 found in nine more hand references read on Opus on 2026-09-23. The new references are
Lawson, *Winesburg, Ohio*, the Jack Keefe stories, *Plain Tales from the Hills*, *Get-Rich-Quick Wallingford*, three
volumes of Torchy, *The Diary of a Nobody*, Lorimer's *Letters from a Self-Made Merchant* and Aesop.
Every entry and mapping is written by hand. No inference.
`../` (v1) and `../v2/` are untouched: v1 is the answer key for the pre-registered classifier test in `../README.md`.
| File | What |
| --- | --- |
| `catalogue_v3_src.py` | The 84 new entries (`NEW`), the widened includes of 14 existing ones (`WIDENED`), and `NEW_SOURCES`, which maps every one of the 244 new hand groups to exactly one entry. Running it checks the mapping and writes the rest |
| `catalogue.json` | All 166 entries, each with the corpora it was found in and up to three examples per corpus |
| `labels-<corpus>.json` | Each scene's catalogue label, for all seventeen corpora |
| `recurrence.log` | v1's recurrence rule, per corpus |
## Results
- **Books set in one world recur. Collections of unrelated tales do not.** Per corpus, recurring situations out of situations present:
| Shape | Corpora |
| --- | --- |
| One world or one series | Lawson 28/28, Keefe 42/42, Plain Tales 28/28, Torchy 29/29, Wallingford 20/20 (by scheme), Winesburg 17/17, Nobody 14/14, Bierce 24/25 |
| Unrelated tales | Chekhov 5/15, Maupassant 4/13, Poe 8/19, Jacobs 6/17 |
- **The work-and-money gap is filled.** Most of the new entries come from the workplace and money corpora (Keefe, Torchy, Wallingford, Lorimer, Lawson, Nobody): pay, rank, the boss, the door to the powerful, debt, speculation.
- **Confirmation across books.** The new corpora found 52 of v2's 82 entries again. Of the 84 new entries, 36 already appear in two or more corpora (24 in two, 11 in three, 1 in four); 48 are still single-corpus, and need more books to confirm or merge them.
- **Situations transfer between settings.** Keefe's baseball and army halves share 27 groups with at least two stories on each side. What does not transfer is the labour market: pay talks and threatening to leave need a job you are free to quit.
- **Stages are lopsided.** Every career corpus is thin at the top. Torchy's groups stage 32 low, 6 middle, 1 high; Lawson and Keefe have no high stage at all.
## Known limits
- **Two sides in one entry.** Several entries hold both sides of a situation, as v1's `benefactor` does: `gatekeeper` (keeping a door, or getting through it), `plea_for_help`, `freeloading` and `used`. A classifier or a pack must know which side the player is on.
- **Groups merged to pass.** In *The Diary of a Nobody*, two groups were formed by merging pairs that failed the recurrence rule separately. Treat those two as weaker evidence.
- **Recurrence units.** The log counts Wallingford by scheme and Torchy's stories 30 and 31 as one. It does not re-apply Nobody's non-consecutive-chapter rule, so it is more lenient there than that pack's README.
- **Scenes lost to splitting.** The 80-word tail rule drops short story endings: six in Torchy, five in Poe. Publisher's advertising sits in Torchy chunks 245, 736 and 737 and Lorimer chunks 179-185. It is in no group.
- **The option pilots.** Lorimer (41% `stated`) and Aesop (68%) have `options_by_entry.json` files that are not part of this catalogue. Their `stated` calls have not had a second reader. Spot checks found them lenient, Aesop's more so. The next round should allow two quotes per option (the move and its consequence) and have a second reader re-judge `stated`.
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,410 @@
"""Situation catalogue v3: v2's 82 entries plus the situations found in nine more hand references, read on Opus
on 2026-09-23 with no local inference: Lawson, Winesburg, Keefe, Plain Tales, Wallingford, Torchy, The Diary of
a Nobody, Lorimer (an advice book) and Aesop.
v1 and v2 are left exactly as they were: v1 is the answer key for the pre-registered classifier test, and v2 is
what the first wave was reported against. v3 imports v2 and writes only into this directory.
Mapping rule, as in v2: a hand group joins an existing entry when the decision facing the player is the same;
it becomes a new entry when it differs. Where books found the same new situation it is one entry. Opposite
sides of one situation share an entry when the other v1/v2 entries already do that (benefactor, used): the
two sides are asking for help and being asked, keeping a door and getting through it, and so on.
Every hand group in all seventeen references maps to exactly one entry.
Recurrence is judged per corpus by v1's rule, with three corpus-specific story units:
wallingford: the scheme (ARCS + ARC_OVERRIDE in its groups_src.py), not the chapter;
torchy: stories 30 and 31 are one story in two parts;
nobody: the rule its reader used (three NON-consecutive chapters) is not re-applied here. Its
chapters are counted as stories, which is more lenient; see the pack's README.
No inference.
"""
import collections, importlib.util, json, pathlib, sys
HERE = pathlib.Path(__file__).resolve().parent
PROBE = HERE.parent.parent
sys.path.insert(0, str(HERE.parent)); sys.path.insert(0, str(HERE.parent / 'v2'))
import catalogue_src as v1
import catalogue_v2_src as v2
from catalogue_src import E
WIDENED = { # existing entries whose includes the new corpora widen; definitions unchanged
'power_over_you': '; a boss who manages by mockery; a boss in a temper you must go in to anyway; being ordered about like a dog',
'newcomer': '; new among old hands and sure you are already the best; sent out young with nobody watching; rules nobody tells you',
'courage_doubted': '; a nobler-sounding reason to avoid what frightens you; talking brave and being taken at your word',
'caught_out': '; a mistake of yours come to light; cornered by the people you cheated; caught with an admirer',
'sure_thing': '; a flattering offer that may be a joke; a share in something that does not exist yet; a relative\'s easy money',
'against_the_verdict': '; the expert everyone above you believes; standing by someone everyone has written off; the lone sceptic',
'unwelcome_in_home': '; old friends who make free of your home; relatives under one roof, each sure the other is sponging',
'family_against_your_path': '; a grown child who sneers at your life; a family pressing a well-placed match on you',
'dead_end': '; a marriage or a life settled into because it was at hand, which now feels like a harness',
'go_between': '; taking a hand in someone above you\'s romance; helping a couple against the family',
'sacrifice': '; devotion to someone who takes it as their due',
'condemned': '; convinced, rightly or not, that you will not come back',
'benefactor': '; a rich relative who takes you in and sets the rules',
'overlooked': '; doing the job better than those above you and being resented for it',
}
def N(id, name, definition, includes, excludes='', recurs=True): return E(id, name, definition, includes, excludes, recurs=recurs)
NEW = [
# ---- pay, rank and the job itself ---------------------------------------------------------------
N('ask_for_more', 'Asking for more money',
'You are sure you are worth more than you are paid, and it is time to name a figure to the person who pays you.',
'a pay talk with no leverage; asking big and settling small', 'threatening to go elsewhere (threaten_to_leave)'),
N('threaten_to_leave', 'Threatening to leave for a rival',
'You tell the people you work for that a rival would take you, though you are not sure you are free to go or that anyone wants you.',
'a threat to quit as leverage; courting a rival employer who never bites', 'genuinely deciding to go (stay_or_go)'),
N('stay_or_go', 'Stay or go',
'Where you are has stopped being good for you, or never suited you, and the choice is whether to push on, switch or leave, when the next place may be worse.',
'the wrong line of work; a post or arrangement gone sour; changing master for one who may be harder',
'the pull of somewhere bigger (leave_for_bigger); the bottom rung (bottom_rung)'),
N('bottom_rung', 'The bottom rung',
'You are at the bottom on low pay and dull work, perhaps for longer than anyone expected, and must decide whether it is a first step or a resting place.',
'starting at the bottom; years in and still not raised', 'being moved down (sent_down)'),
N('sent_down', 'Sent down',
'You have been moved to a lesser post or kept out of the real work, and are sure it is a mistake or a slight.',
'demoted; benched; left off the important job', 'never raised at all (bottom_rung)'),
N('newly_raised', 'Newly raised',
'You have just been raised above people you worked beside: how you carry it, at work and at home, and how they take it, will decide what it is worth.',
'a step up that goes to your head; the old hierarchy that resents the new man; an honour at work carried home',
'being noticed by the powerful (patron)'),
N('decision_from_above', 'A call from above you think is wrong',
'Someone above you has made a decision you are sure is wrong, and you are the one who has to live with it or carry it out.',
'a change imposed by someone who does not know the ground; the boss\'s bad call',
'an order you think dishonest (pressed_to_wrong); no reason given at all (orders_without_reasons)'),
N('petty_supervisor', 'A petty supervisor',
'The official between you and the top wanted someone meeker, resents you, and is waiting for you to slip.',
'a jealous middle manager; a gatekeeping clerk who reports on you', 'the top boss himself (power_over_you)'),
N('boss_in_private_life', 'The boss in your private life',
'The person who holds your job has taken an interest in your private life, your love, your marriage or your habits, for your good or theirs.',
'the boss noticing you are in love; superiors who expect you to choose the career over the marriage; the boss taking your marriage in hand',
'a benefactor who supports you (benefactor)'),
N('boss_family', 'The boss\'s family lands on you',
'Someone in the boss\'s family has an errand, a scrape or an embarrassing guest, and it has landed on you, with nothing to do with your job.',
'private errands for the family; a relative\'s quarrel you must smooth; getting an unwanted guest out without a scene',
'someone about to be ruined (saving_them_from_themselves)'),
N('stand_in', 'Standing in for the boss',
'You have been sent in the boss\'s place, or left to cover while he is away, among people far above your rank.',
'negotiating or hosting for him; covering an absence at the worst moment', ''),
N('gatekeeper', 'The door to the powerful',
'Access to someone important runs through a door: you keep it, you are trying to get through it, or someone wants to trade on your place beside it.',
'deciding which callers get past; one chance to be heard at the top; a bluff to get past a desk; an acquaintance who wants you to pass on a word',
'judging a caller wrongly by looks (mistook_them)'),
N('power_behind', 'The power behind the title',
'The person with the title is not the one who decides, and the one who really does answers to nobody.',
'a superior\'s spouse or favourite who runs things; unofficial power', ''),
N('knowledge_below', 'Knowing what goes on below',
'You know what really goes on among people nobody above you bothers to ask, and that knowledge could settle a matter.',
'the junior who knows the ground; the insider nobody consults', 'you have stumbled on a secret (seen_too_much)'),
N('carrying_the_load', 'Carrying the load',
'You carry far more of the work than anyone credits, and the only ones who notice are the ones who profit from it.',
'worked into the ground; skimmed and taken for granted by the one you serve', 'work that goes unrecognised beside a showier colleague (overlooked)'),
N('breaking_point', 'The strain gives way',
'The strain you have hidden for months has finally broken through, and now everyone can see what it has done to you.',
'overwork that collapses; a breakdown in public', ''),
N('shirking', 'Shirking',
'You could get out of part of the work, by doing just enough or finding a reason to be excused, and others will carry what you leave.',
'half effort that keeps your place; hunting for an exemption from a duty everyone faces', 'fear dressed as principle (courage_doubted)'),
N('in_charge', 'Someone under you falls short',
'Someone you are responsible for is slack, wrong for the post or in a bad habit, and it falls to you to act.',
'correcting, moving or letting go a subordinate', 'someone above you (power_over_you)'),
N('difficult_customer', 'A customer who tries you',
'A customer complains, needles you or sets a trap, and how you answer decides whether you keep their trade.',
'the awkward client; a buyer who tests you', ''),
N('hard_sell', 'Goods nobody wants',
'You have something to sell, an idea, a product or yourself, to people who feel no need of it.',
'selling to the indifferent', ''),
N('losing_ground', 'Rivals taking the trade',
'Rivals are getting the better of you in the work, and you must decide whether to explain it, shrug it off or go after them.',
'losing customers or standing to a competitor', 'a far bigger opponent (small_against_big)'),
N('replaceable', 'Replaceable',
'Your living depends on someone who will not wait, will not raise your pay, and can put another in your place tomorrow.',
'precarious work; the boss who reminds you there are others', 'a condition on something personal (bow_for_your_living)'),
N('no_work', 'No work to be had',
'There is no work to be had, and you must keep yourself going until there is, however you can.', 'out of work; tramping for a job', ''),
N('too_young', 'Too young for it',
'Someone young in your care is eager to take on hard or dangerous work before their time, to help or to prove themselves.',
'a youngster doing a grown-up\'s job', ''),
N('backing_someone', 'Backing someone weaker',
'Someone decent is stuck, snubbed or about to back down, and a word to the boss or a push from you could change it.',
'championing an overlooked colleague; stiffening a timid person\'s spine', 'shielding someone hunted (protecting_hunted)'),
N('looking_the_part', 'Looking the part',
'You want to be ready for the rung above you, and looking and sounding the part will cost money, evenings or pride.',
'dressing and speaking for the next job', 'passing for more than you are (pretence)'),
N('your_record', 'Your record goes before you',
'What you did before, good or bad, is what people are going on now, and it is not what you are counting on.',
'expecting old triumphs to open doors; a bad record when you need to be believed', ''),
N('big_moment', 'The big occasion, and you are not ready',
'The moment you have been waiting for has arrived, and your mind, your body or your preparation is somewhere else.',
'the important day gone wrong from the start', ''),
N('whose_fault', 'Whose fault was it?',
'Something has gone wrong in front of everyone, and there is blame to be placed: on others, on luck, or on you.',
'blaming colleagues or the weather; pointing at others\' faults while sharing them', 'owning up to a past wrong (owning_up)'),
N('rushing_in', 'Rushing in',
'You are sure you can handle it, or have it, and you have not looked at what it takes or what it risks.',
'a new skill that looks easy; going for a target without seeing the danger', 'a trap someone set (sure_thing)'),
# ---- money ---------------------------------------------------------------------------------------
N('beyond_your_means', 'Beyond your means',
'Keeping up with the people around you costs more than you earn, and the gap is being covered by credit, pretence or going without.',
'spending ahead of your pay; playing the host beyond your purse; keeping up appearances while broke',
'a deliberate front for a swindle (pretence)'),
N('debt_due', 'The debt comes due',
'You owe more than you can pay, the one you owe has you cornered, and you could pay, bluff or slip away.',
'a bill due now; creditors closing in; leaving quietly before they can stop you', ''),
N('sunk_cost', 'Sunk in, and asked for more',
'Everything you have put into a venture is draining away, or already gone, and you could put in more, hold on or get out.',
'a failing selection or business; savings in a shaky company; learning you have been wiped out', ''),
N('fever', 'The fever',
'Everyone around you is suddenly getting rich on paper, and holding back feels like the only way to lose.',
'a boom; a town caught up in speculation', 'a single con aimed at you (sure_thing)'),
N('sell_before_crash', 'Selling out before the crash',
'You know the venture is about to collapse, and you can still sell your share to people who believe in it.', '', ''),
N('selling_a_promise', 'Selling a promise',
'You are raising money, or buying in, on a promise you know you cannot keep, and the people paying trust you.',
'floating a company on nothing; paying for a share with a promise', 'your scheme coming apart (your_scheme)'),
N('let_inside', 'Let in on the inside',
'The person selling to you offers to make you a partner instead, and suddenly you are on the inside of the deal.', '', ''),
N('going_straight', 'A partner who wants to go straight',
'Your partner is tired of the crooked side of the business and begs you to take what you have and live decently.', '', ''),
N('sham_turns_real', 'The sham turns out real',
'Something you set up only as a front turns out to be worth something real, and you could make an honest living from it.', '', ''),
N('small_against_big', 'Small against the giant',
'Someone with far more money or power can outlast you, has the rules on their side, or is dividing the proceeds on their terms.',
'a rival who can undersell or sue you; a powerful neighbour who wants what is yours; the lion\'s share',
'someone without pity holding your life (at_their_mercy)'),
N('grab_more', 'Wanting more than you hold',
'You already have something good, and a chance to take more, from the world or from those who will not miss it, is tempting you.',
'greed that loses what you had; helping yourself from an outfit that gives you little', ''),
N('tight_fisted', 'Expected to pay',
'Everyone around you tips, treats and gives as a matter of course, and you begrudge every coin.', '', ''),
N('household_money', 'Whose money is it at home?',
'Someone at home is spending money you earned on things you think you cannot afford, and wants more.', '', ''),
N('spouse_earns_more', 'A spouse who earns more',
'Your spouse has gone into work of their own and is doing better at it than you are at yours.', '', ''),
# ---- colleagues, friends, standing among people -------------------------------------------------
N('needled', 'Needled by those who should defer',
'People who should give you respect, juniors, colleagues or tradespeople, needle you, cheek you or treat you as no better than they are.',
'a colleague\'s digs; cheek from younger staff; a showier colleague\'s sneer', 'a superior\'s contempt (power_over_you)'),
N('the_butt', 'The butt of the joke',
'One person, maybe you, has become the one everybody laughs at, and how you take it, or whether you join in, decides where you stand.',
'made a public laughing-stock; a crew\'s favourite target; a prank turning cruel', ''),
N('saving_face', 'Saving face',
'You have been fooled, beaten or made ridiculous, everyone knows it, and you must decide what story to tell about it.',
'a mishap at the very moment of dignity; the tale told afterwards', ''),
N('talking_yourself_up', 'Talking yourself up',
'You are tempted to make sure everyone knows how well you are doing, or did, and the listeners may know better.',
'boasting to people who were there; crowing when things go your way', 'sustained pretence to a station (pretence)'),
N('misreading_the_room', 'Misreading the room',
'You are sure people admire you, laughing with you, applauding you or falling for you, and you have misread them.',
'in the spotlight and sure you are the hit; a joke nobody laughs at; sure someone is smitten', ''),
N('suspicion', 'Suspicion',
'You have decided someone close is plotting or deceiving you, with nothing to go on but their manner.',
'a colleague you are sure is a traitor; suspecting your spouse', 'real signs you have ignored (not_who_they_seem)'),
N('looked_down_on', 'Looked down on',
'Someone who thinks themselves above you, or above someone humble, treats you as beneath notice, and the truth of who is worth more may come out.',
'scorned for being poor; told your steady life is mediocre; a snob shown up', 'a superior with power over you (power_over_you)'),
N('out_of_place', 'Out of place among your betters',
'You are among people far above your station, plainly not one of them, and every remark you make seems wrong.', '', 'courting across the gap (station)'),
N('caught_between', 'Caught between sides',
'Two sides each want your loyalty, workers and masters, your spouse and your old friends, two worlds, and showing it to one costs you with the other.',
'whose side are you on; belonging to neither world', 'carrying one side\'s message (go_between)'),
N('shaky_alliance', 'An ally you cannot count on',
'You depend on partners or allies who may not stand by you, or your own side is quarrelling while someone else waits to profit.', '', ''),
N('false_friend', 'A friendly approach from a predator',
'Someone who would gain by your fall comes friendly, praising, inviting or offering peace, and what they propose would put you in their reach.',
'a charming stranger melting your doubts; letting a known predator inside', 'a con for money (sure_thing)'),
N('vouching', 'Vouching for someone',
'You are about to trust, hire or vouch for someone on the strength of their story, their looks or who speaks for them.',
'taking a stranger in; hiring on appearances', 'they are already among you and false (not_who_they_seem)'),
N('old_friend', 'An old friend',
'An old friend from before, far away, always there when needed, or needed again, and what you owe each other.',
'leaning on the friend back home; a friend from the bottom rung who can get what channels cannot; keeping a mateship alive', ''),
N('freeloading', 'Living off someone\'s good nature',
'Someone is living off another\'s good nature, a friend, a host, an old accomplice, and it is you, or you are the one being leaned on.',
'an old mate broke and expecting to be carried; talking a kind host out of a free meal', 'a stranger\'s plea (plea_for_help)'),
N('standoff', 'A quarrel neither will end',
'You and a friend have fallen out over a slight, and each waits for the other to make the first move.', '', 'a quarrel at home (peace_at_home)'),
N('reputation', 'What they say about you',
'People have settled on a story about you, admiring, damning or that you are the odd one, or are about to, and it has little to do with who you are.',
'the town\'s odd one; an embarrassing story that will follow you', 'being judged for one act (wrongly_judged)'),
N('saving_them_from_themselves', 'Saving them from themselves',
'Someone is heading for ruin without seeing it, or will not be minded, and you could step in behind their back.',
'a relative being flattered for their money; minding someone who means to go their own way', 'someone slipping away beyond help (losing_them)'),
N('answering_for_them', 'Answering for them',
'Someone in your charge keeps getting into trouble, and it falls to you to answer for them or place them again at the cost of your own name.',
'a grown son who loses his places; apologising for a relative', ''),
N('seeing_and_silent', 'Seeing it, and saying nothing',
'You can see plainly that something is wrong, and saying so would cost you or someone else more than silence.', '', 'you are paid to go along (compromise_for_money)'),
N('kind_lie', 'A lie to spare them',
'The truth would hurt someone badly, and a careful lie would spare them, if you can keep it up.', '', ''),
N('fell_into_your_hands', 'It fell into your hands',
'By accident you have come into something not meant for you, a secret or an advantage, and you could turn it to your own ends.', '', 'you are in danger for having seen it (seen_too_much)'),
N('unwanted_lesson', 'An elder\'s hard lesson',
'Someone older, marked by their own failures, keeps pressing on you the lesson they learned and wants you to live by it.', '', ''),
# ---- home, love, self ----------------------------------------------------------------------------
N('work_against_family', 'Work against family',
'Work takes someone away from the family, you or the one you depend on, and whoever goes or stays pays for it.',
'a promise to your family broken by the job; going away for work; holding the place together alone', ''),
N('new_parent', 'A new parent sure they know best',
'You have a new child, you are sure you understand it better than anyone, and you are about to act on it.', '', ''),
N('through_the_child', 'Living through the child',
'Your own chances are gone, and you have fixed every hope on a child who does not know what you want of them.', '', ''),
N('not_good_enough', 'Not good enough for her',
'The family or guardian of the one you love has decided you are beneath them, and has the means to keep you apart, unless a ruse puts you in the same room.',
'a guardian\'s veto; disguise or a borrowed invitation to be near her', 'your own shame about the gap (station)'),
N('stringing_along', 'Stringing someone along',
'Someone has taken your attentions more seriously than you meant, or than you are free to, and every day makes the truth harder to tell.',
'a light promise taken to heart; an admirer who does not know you are married', ''),
N('second_chance', 'A love let slip, and one more chance',
'You let someone you loved drift away, through pride, work or neglect, and a last chance to see them has come.', '', ''),
N('sizing_up_match', 'Sizing up a match',
'You are drifting toward marrying someone and have not yet taken a clear look at them, their family, or what it will cost.', '', ''),
N('leave_for_bigger', 'Somewhere bigger',
'You feel you do not belong where you grew up, somewhere bigger is calling, and the people here are tied to you.', '', 'a job gone sour (stay_or_go)'),
N('confession', 'Telling it all to the one who will listen',
'You have carried something unsaid for years, and at last there is one person willing to sit and hear it.', '', 'owning a wrong to the one you wronged (owning_up)'),
N('closeness', 'When someone comes close',
'Someone has reached you, or understood you without a word, and at the moment of closeness something in you recoils or does not know what to do with it.', '', 'you cannot say it at all (unspoken)'),
N('obsession', 'One idea has taken over',
'One idea or hope has grown until it runs your whole life, and the people around you are paying for it.', '', 'a compulsion that ruins you (self_betrayal)'),
N('break_out', 'The urge to break out',
'An urge you cannot explain seizes you to run out and do something wild, and it will not wait.', '', 'a small indulgence (temptation_tonight)'),
N('temptation_tonight', 'Tonight better, tomorrow worse',
'A small indulgence is on offer, a drink, a spree, the fast set\'s amusements, and it will make tonight better and tomorrow worse.',
'drinking against the rules; pay-day and mates about; going along with free-spending company', 'a habit taking everything (self_betrayal)'),
N('hard_lot', 'A hard lot',
'You are stuck, worn down or reduced to a hardship you feel you do not deserve, and it is tempting to despair, complain or wait to be rescued.', '', ''),
N('envy', 'Envy',
'You envy someone\'s gift or standing so much that you are tempted to copy them, or ask for what they have.', '', 'a rival for one person (rival)'),
N('kicking_while_down', 'Kicking them while they are down',
'Someone powerful is down or out of reach, or someone small is needling you, and a blow could safely be struck.', '', ''),
N('runaround', 'The runaround',
'You are owed something or need something done, and everyone who could do it says it is not their business.',
'passed from door to door', 'a bribe would move it (grease)'),
]
NEW_SOURCES = {
'lawson': {'G01': 'freeloading', 'G02': 'against_the_verdict', 'G03': 'outmatched', 'G04': 'old_friend', 'G05': 'plea_for_help',
'G06': 'the_butt', 'G07': 'caught_between', 'G08': 'replaceable', 'G09': 'no_work', 'G10': 'grab_more', 'G11': 'sunk_cost',
'G12': 'work_against_family', 'G13': 'stay_or_go', 'G14': 'debt_due', 'G15': 'debt_due', 'G16': 'small_against_big',
'G17': 'beyond_your_means', 'G18': 'looked_down_on', 'G19': 'temptation_tonight', 'G20': 'freeloading', 'G21': 'vouching',
'G22': 'work_against_family', 'G23': 'too_young', 'G24': 'caught_out', 'G25': 'stringing_along', 'G26': 'standoff',
'G27': 'changed', 'G28': 'homecoming', 'G29': 'death_as_burden', 'G30': 'too_late', 'G31': 'runaround'},
'winesburg': {'G01': 'leave_for_bigger', 'G02': 'confession', 'G03': 'unwanted_lesson', 'G04': 'obsession', 'G05': 'through_the_child',
'G06': 'reputation', 'G07': 'reputation', 'G08': 'closeness', 'G09': 'unspoken', 'G10': 'closeness',
'G11': 'outside_looking_in', 'G12': 'waiting', 'G13': 'isolation', 'G14': 'dead_end', 'G15': 'break_out',
'G16': 'self_betrayal', 'G17': 'rival', 'G18': 'pretence', 'G19': 'home_unseen'},
'keefe': {'G01': 'ask_for_more', 'G02': 'threaten_to_leave', 'G03': 'sent_down', 'G04': 'power_over_you', 'G05': 'whose_fault',
'G06': 'newly_raised', 'G07': 'called_to_account', 'G08': 'decision_from_above', 'G09': 'boss_in_private_life',
'G10': 'your_record', 'G11': 'big_moment', 'G12': 'revenge', 'G13': 'temptation_tonight', 'G14': 'shirking',
'G15': 'courage_doubted', 'G16': 'courage_doubted', 'G17': 'condemned', 'G18': 'on_watch', 'G19': 'hard_lot',
'G20': 'newcomer', 'G21': 'warning', 'G22': 'sure_thing', 'G23': 'saving_face', 'G24': 'the_butt', 'G25': 'the_butt',
'G26': 'needled', 'G27': 'suspicion', 'G28': 'talking_yourself_up', 'G29': 'rushing_in', 'G30': 'own_words_back',
'G31': 'misreading_the_room', 'G32': 'sure_thing', 'G33': 'tight_fisted', 'G34': 'old_friend', 'G35': 'household_money',
'G36': 'spouse_earns_more', 'G37': 'peace_at_home', 'G38': 'gone_missing', 'G39': 'suspicion', 'G40': 'far_from_home',
'G41': 'work_against_family', 'G42': 'unwelcome_in_home', 'G43': 'caught_between', 'G44': 'new_parent',
'G45': 'misreading_the_room', 'G46': 'stringing_along', 'G47': 'caught_out'},
'plaintales': {'G01': 'patron', 'G02': 'power_behind', 'G03': 'gatekeeper', 'G04': 'decision_from_above', 'G05': 'knowledge_below',
'G06': 'overlooked', 'G07': 'carrying_the_load', 'G08': 'breaking_point', 'G09': 'newcomer', 'G10': 'newcomer',
'G11': 'boss_in_private_life', 'G12': 'family_against_your_path', 'G13': 'rival', 'G14': 'reputation',
'G15': 'wrongly_judged', 'G16': 'kind_lie', 'G17': 'revenge', 'G18': 'fell_into_your_hands',
'G19': 'saving_them_from_themselves', 'G20': 'power_over_you', 'G21': 'seeing_and_silent', 'G22': 'caught_between',
'G23': 'promised_elsewhere', 'G24': 'sacrifice', 'G25': 'too_late', 'G26': 'sign', 'G27': 'dread', 'G28': 'home_unseen',
'G29': 'self_betrayal'},
'wallingford': {'G01': 'pretence', 'G02': 'debt_due', 'G03': 'sure_thing', 'G04': 'selling_a_promise', 'G05': 'fever',
'G06': 'sunk_cost', 'G07': 'compromise_for_money', 'G08': 'your_scheme', 'G09': 'outmatched', 'G10': 'let_inside',
'G11': 'false_friend', 'G12': 'against_the_verdict', 'G13': 'caught_out', 'G14': 'sunk_cost',
'G15': 'small_against_big', 'G16': 'after_your_money', 'G17': 'going_straight', 'G18': 'what_they_hid',
'G19': 'selling_a_promise', 'G20': 'freeloading', 'G21': 'sham_turns_real', 'G22': 'sell_before_crash'},
'torchy': {'G01': 'gatekeeper', 'G02': 'mistook_them', 'G03': 'called_to_account', 'G04': 'petty_supervisor', 'G05': 'boss_family',
'G06': 'stand_in', 'G07': 'boss_family', 'G08': 'saving_them_from_themselves', 'G09': 'boss_family', 'G10': 'backing_someone',
'G11': 'the_butt', 'G12': 'saving_them_from_themselves', 'G13': 'old_friend', 'G14': 'gatekeeper', 'G15': 'pretence',
'G16': 'out_of_place', 'G17': 'looking_the_part', 'G18': 'bottom_rung', 'G19': 'station', 'G20': 'not_good_enough',
'G21': 'not_good_enough', 'G22': 'rival', 'G23': 'boss_in_private_life', 'G24': 'go_between', 'G25': 'backing_someone',
'G26': 'newly_raised', 'G27': 'against_the_verdict', 'G28': 'mercy_or_law', 'G29': 'protecting_hunted',
'G30': 'pressed_to_wrong', 'G31': 'their_secret', 'G32': 'stand_in', 'G33': 'gatekeeper', 'G34': 'power_over_you',
'G35': 'benefactor', 'G36': 'benefactor', 'G37': 'go_between', 'G38': 'second_chance', 'G39': 'looked_down_on'},
'nobody': {'G01': 'needled', 'G02': 'newly_raised', 'G03': 'needled', 'G04': 'standoff', 'G05': 'unwelcome_in_home',
'G06': 'misreading_the_room', 'G07': 'saving_face', 'G08': 'beyond_your_means', 'G09': 'beyond_your_means',
'G10': 'out_of_place', 'G11': 'looked_down_on', 'G12': 'peace_at_home', 'G13': 'home_unseen',
'G14': 'family_against_your_path', 'G15': 'family_against_your_path', 'G16': 'answering_for_them',
'G17': 'answering_for_them', 'G18': 'sure_thing', 'G19': 'unwelcome_in_home'},
'lorimer': {'G01': 'beyond_your_means', 'G02': 'bottom_rung', 'G03': 'shirking', 'G04': 'power_over_you', 'G05': 'talking_yourself_up',
'G06': 'loose_tongue', 'G07': 'difficult_customer', 'G08': 'hard_sell', 'G09': 'sure_thing', 'G10': 'vouching',
'G11': 'looking_the_part', 'G12': 'in_charge', 'G13': 'caught_between', 'G14': 'sizing_up_match', 'G15': 'stay_or_go',
'G16': 'temptation_tonight', 'G17': 'losing_ground', 'G18': 'caught_out'},
'aesop': {'G01': 'false_friend', 'G02': 'at_their_mercy', 'G03': 'stay_or_go', 'G04': 'envy', 'G05': 'pretence',
'G06': 'talking_yourself_up', 'G07': 'needled', 'G08': 'plea_for_help', 'G09': 'grab_more', 'G10': 'shaky_alliance',
'G11': 'shaky_alliance', 'G12': 'rushing_in', 'G13': 'whose_fault', 'G14': 'kicking_while_down', 'G15': 'hard_lot',
'G16': 'carrying_the_load', 'G17': 'false_friend', 'G18': 'small_against_big', 'G19': 'your_record', 'G20': 'warning'},
}
NEW.append(N('loose_tongue', 'Saying too much',
'You are tempted to say more than you need to: a joke, a retort, an opinion, or a complaint about someone.', '', ''))
CATALOGUE = [dict(e, includes=e['includes'] + WIDENED.get(e['id'], '')) for e in v2.CATALOGUE] + NEW
SOURCES = {**v2.SOURCES, **NEW_SOURCES}
CORPORA = v2.CORPORA + list(NEW_SOURCES)
def story_units(corpus, chunks):
"""Per-chunk story unit for the recurrence rule (see the module docstring)."""
story = [c['story'] for c in chunks]
if corpus == 'wallingford':
spec = importlib.util.spec_from_file_location('wallingford_groups', PROBE / 'wallingford/claude/groups_src.py')
m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m)
over = getattr(m, 'ARC_OVERRIDE', {})
return [over.get(i, m.ARCS[s]) for i, s in enumerate(story)]
if corpus == 'torchy':
return [30 if s == 31 else s for s in story]
return story
if __name__ == '__main__':
ids = [e['id'] for e in CATALOGUE]
dup = [i for i, n in collections.Counter(ids).items() if n > 1]
assert not dup, f'duplicate ids {dup}'
problems = [f'{c}:{g} -> unknown {t}' for c, m in SOURCES.items() for g, t in m.items() if t not in ids]
used = {t for m in SOURCES.values() for t in m.values()}
problems += [f'entry {i} has no source group' for i in ids if i not in used]
problems += [f'WIDENED names unknown entry {i}' for i in WIDENED if i not in ids]
examples, log, found = collections.defaultdict(list), [], collections.defaultdict(set)
for corpus in CORPORA:
chunks, pred, hand = v1.load_corpus(corpus)
unmapped = sorted({g for g in hand.values() if g not in SOURCES[corpus]})
if unmapped: problems.append(f'{corpus}: hand groups not in SOURCES: {unmapped}')
labels = {i: SOURCES[corpus].get(hand[i], 'none') if i in hand else 'none' for i in range(len(chunks))}
(HERE / f'labels-{corpus}.json').write_text(json.dumps(
{'corpus': corpus, 'from': 'hand groups mapped through catalogue_v3_src.SOURCES',
'labels': [{'chunk': i, 'story': chunks[i]['story'], 'label': labels[i], 'predicament': pred[i]} for i in range(len(chunks))]},
indent=0, ensure_ascii=False))
per = collections.defaultdict(list)
for i in sorted(labels):
if labels[i] != 'none': per[labels[i]].append(i)
for lab, mem in per.items():
seen = set()
for i in mem:
if chunks[i]['story'] in seen: continue
seen.add(chunks[i]['story']); examples[lab].append({'corpus': corpus, 'chunk': i, 'predicament': pred[i]})
if len(seen) == 3: break
story = story_units(corpus, chunks); ns = len(set(story))
log.append(f'\n== {corpus}: {ns} story units, {len(chunks)} scenes; rule: >= {v1.MIN_SCENES} scenes, '
f'>= {v1.min_stories(ns)} units, no unit over {v1.MAX_DOMINANT:.0%}')
log.append(f' scenes labelled: {sum(l != "none" for l in labels.values())} ({sum(l != "none" for l in labels.values())/len(chunks):.0%})')
passing = []
for lab in sorted(per, key=lambda k: -len(per[k])):
ok, nst, dom = v1.recurs(per[lab], story)
found[lab].add(corpus)
if ok: passing.append(lab)
log.append(f' {"PASS" if ok else " "} {lab:28s} {len(per[lab]):3d} scenes {nst:3d} units top unit {dom:4.0%}')
log.append(f' -> {len(passing)} recurring situations of {len(per)} present')
log.append(f'\n== {len(ids)} entries ({len(v2.CATALOGUE)} from v2, {len(NEW)} new): found in how many of the {len(CORPORA)} corpora')
for k in range(len(CORPORA), 0, -1):
row = [i for i in ids if len(found[i]) == k]
if row: log.append(f' {k}: ' + ', '.join(row))
if problems:
print('\n'.join(problems)); sys.exit(1)
out = {'about': 'Situation catalogue v3 for story-to-pack: v2 (eight corpora, 2026-09-17/23) plus Lawson, Winesburg, Keefe, '
'Plain Tales, Wallingford, Torchy, The Diary of a Nobody, Lorimer and Aesop (2026-09-23). Every entry and '
'mapping written by hand; no inference.',
'entries': [dict(e, corpora=sorted(found[e['id']]), examples=examples[e['id']]) for e in CATALOGUE]}
(HERE / 'catalogue.json').write_text(json.dumps(out, indent=1, ensure_ascii=False))
(HERE / 'recurrence.log').write_text('\n'.join(log).lstrip() + '\n')
print(f'catalogue.json: {len(CATALOGUE)} entries'); print('\n'.join(log[-22:]))
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,948 @@
{
"corpus": "jacobs",
"from": "hand groups mapped through catalogue_v3_src.SOURCES",
"labels": [
{
"chunk": 0,
"story": 0,
"label": "peace_at_home",
"predicament": "Someone waiting up for a relative who comes in late wants to reproach him, and gets cheek back."
},
{
"chunk": 1,
"story": 0,
"label": "peace_at_home",
"predicament": "A man learns a relative has promised a stranger his hospitality without asking, and fears what his spouse will say."
},
{
"chunk": 2,
"story": 0,
"label": "unwelcome_in_home",
"predicament": "A man who wants to turn an unwelcome guest away cannot find the nerve to say it."
},
{
"chunk": 3,
"story": 0,
"label": "peace_at_home",
"predicament": "A man who has let something happen under his roof fears his spouse will hold him responsible for it."
},
{
"chunk": 4,
"story": 0,
"label": "rival",
"predicament": "A young man who brought the person he is courting along is pushed aside by an older man who takes charge of her."
},
{
"chunk": 5,
"story": 0,
"label": "rival",
"predicament": "A jealous suitor tries to put his rival in his place, and only makes himself look childish."
},
{
"chunk": 6,
"story": 0,
"label": "none",
"predicament": "A spurned man realises he holds something over the rival who humiliated him, and decides to use it."
},
{
"chunk": 7,
"story": 0,
"label": "hiding_from_close",
"predicament": "A man hiding an innocent but compromising secret is met by his spouse, while the one person who could clear him refuses to."
},
{
"chunk": 8,
"story": 0,
"label": "hiding_from_close",
"predicament": "A man tries to hurry his spouse away from a secret while someone signals behind his back that something is up."
},
{
"chunk": 9,
"story": 0,
"label": "caught_out",
"predicament": "A man caught with an innocent secret is disowned by the one person who could explain it."
},
{
"chunk": 10,
"story": 0,
"label": "let_another_take_blame",
"predicament": "A man whose spite has got an innocent person abused must decide whether to own up and defend her."
},
{
"chunk": 11,
"story": 0,
"label": "owning_up",
"predicament": "A man tries to win back someone he wronged with a dangerous public show of devotion."
},
{
"chunk": 12,
"story": 0,
"label": "your_scheme",
"predicament": "A man pretends to be in danger to win sympathy, and the one who saved him sees through it."
},
{
"chunk": 13,
"story": 0,
"label": "owning_up",
"predicament": "Two men who quarrelled over a woman are both left out in the cold by the women they wronged."
},
{
"chunk": 14,
"story": 1,
"label": "caught_out",
"predicament": "A man losing a friendly contest tries to distract from his mistake, and is caught at it by his family."
},
{
"chunk": 15,
"story": 1,
"label": "none",
"predicament": "A guest who wants to leave a dangerous subject alone is coaxed by his hosts' curiosity into bringing it out."
},
{
"chunk": 16,
"story": 1,
"label": "strings",
"predicament": "Someone offered a thing that grants wishes is warned by the man who used it that it brings sorrow."
},
{
"chunk": 17,
"story": 1,
"label": "strings",
"predicament": "A man is offered a dangerous gift by someone who begs him to destroy it, and wants to keep it anyway."
},
{
"chunk": 18,
"story": 1,
"label": "strings",
"predicament": "A man half-believing in a promise of easy money must decide whether to test it and what to ask for."
},
{
"chunk": 19,
"story": 1,
"label": "dread",
"predicament": "A family that tempted fate laughs off their fears in daylight while one of them cannot shake them."
},
{
"chunk": 20,
"story": 1,
"label": "strings",
"predicament": "A family waiting on a hoped-for windfall sees a stranger approach who might bring it, or bad news."
},
{
"chunk": 21,
"story": 1,
"label": "none",
"predicament": "Parents receive news that their only child has been killed, from someone who cannot bring himself to say it."
},
{
"chunk": 22,
"story": 1,
"label": "strings",
"predicament": "A man learns the money he wished for has come as compensation for his child's death."
},
{
"chunk": 23,
"story": 1,
"label": "pressed_to_wrong",
"predicament": "A grieving woman seizes on a desperate chance to undo a death, and her spouse is afraid of what it would bring back."
},
{
"chunk": 24,
"story": 1,
"label": "pressed_to_wrong",
"predicament": "A man pressed by his grieving spouse must decide whether to do something he believes is wicked and dangerous."
},
{
"chunk": 25,
"story": 1,
"label": "dread",
"predicament": "A man who dreads what his wish may bring home must stop his spouse from opening the door to it."
},
{
"chunk": 26,
"story": 1,
"label": "dread",
"predicament": "A man must use his last chance to undo what his spouse most longs for, before she lets it in."
},
{
"chunk": 27,
"story": 2,
"label": "after_your_money",
"predicament": "A man who has hoarded his savings all his life falls ill far from anywhere he could spend them."
},
{
"chunk": 28,
"story": 2,
"label": "after_your_money",
"predicament": "A dying miser, surrounded by people hoping to inherit, is determined that nobody will get his money."
},
{
"chunk": 29,
"story": 2,
"label": "pressed_to_wrong",
"predicament": "Someone who spots a colleague quietly scheming to take unclaimed money must decide whether to expose him or join in."
},
{
"chunk": 30,
"story": 2,
"label": "your_scheme",
"predicament": "Two partners convinced a weaker person is secretly holding a fortune want to find it before anyone else learns of it."
},
{
"chunk": 31,
"story": 2,
"label": "cant_prove_it",
"predicament": "A schemer whose secret searches keep failing decides to confront the person he suspects directly."
},
{
"chunk": 32,
"story": 2,
"label": "after_your_money",
"predicament": "Someone suspected of hiding a windfall is pressed with bribes and threats by people who have no right to it."
},
{
"chunk": 33,
"story": 2,
"label": "your_scheme",
"predicament": "Someone forced to share a hidden windfall admits it is now stuck where neither partner can get at it."
},
{
"chunk": 34,
"story": 2,
"label": "your_scheme",
"predicament": "Distrustful partners stare at a fortune they cannot reach without getting caught, and blame each other for it."
},
{
"chunk": 35,
"story": 2,
"label": "your_scheme",
"predicament": "A man wants something a superior owns without revealing why, and tries flattery to get it."
},
{
"chunk": 36,
"story": 2,
"label": "your_scheme",
"predicament": "A buyer who cannot reveal why he wants something is made to pay more by a seller who senses his eagerness."
},
{
"chunk": 37,
"story": 2,
"label": "your_scheme",
"predicament": "A man who wants to cheat his partner out of a shared prize is watched too closely to slip away."
},
{
"chunk": 38,
"story": 2,
"label": "your_scheme",
"predicament": "A man trying to slip away with a shared prize is held up until the partner he meant to cheat catches him."
},
{
"chunk": 39,
"story": 2,
"label": "your_scheme",
"predicament": "A man who schemed to cheat a partner finds the prize gone and realises he may have been cheated himself."
},
{
"chunk": 40,
"story": 2,
"label": "your_scheme",
"predicament": "A schemer who was outwitted must stand and smile at the people who got the better of him."
},
{
"chunk": 41,
"story": 3,
"label": "none",
"predicament": "A man about to marry is needled by a dependent relative who hints at something to his discredit."
},
{
"chunk": 42,
"story": 3,
"label": "none",
"predicament": "A man in desperate debt makes veiled hints to the relative he hopes will pay it."
},
{
"chunk": 43,
"story": 3,
"label": "past_comes_back",
"predicament": "A man is blackmailed by a relative with old letters that could cost him the person he loves."
},
{
"chunk": 44,
"story": 3,
"label": "let_another_take_blame",
"predicament": "A man who has done something terrible in anger must cover for a relative's sudden disappearance."
},
{
"chunk": 45,
"story": 3,
"label": "hiding_from_close",
"predicament": "A man with a guilty secret must keep calm while someone he loves insists on lingering right at the spot."
},
{
"chunk": 46,
"story": 3,
"label": "hiding_from_close",
"predicament": "A man hiding a crime hears it discussed innocently and betrays his feelings with an outburst."
},
{
"chunk": 47,
"story": 3,
"label": "hiding_from_close",
"predicament": "A guilty man tries to hurry someone away from the scene of his crime, and she insists on staying."
},
{
"chunk": 48,
"story": 3,
"label": "hiding_from_close",
"predicament": "A man hiding something learns it may be discovered by an innocent accident, and must not show his fear."
},
{
"chunk": 49,
"story": 3,
"label": "hiding_from_close",
"predicament": "A man must retrieve something from where his secret lies before anyone else goes looking."
},
{
"chunk": 50,
"story": 3,
"label": "hiding_from_close",
"predicament": "A man secretly searching where his crime lies keeps pulling up reminders of it."
},
{
"chunk": 51,
"story": 3,
"label": "hiding_from_close",
"predicament": "A man who has failed to fix things quietly must now involve others while still keeping his secret."
},
{
"chunk": 52,
"story": 3,
"label": "hiding_from_close",
"predicament": "A man hiding something is offered help he cannot accept without being found out."
},
{
"chunk": 53,
"story": 3,
"label": "none",
"predicament": "A man who must face the thing he did alone gathers his nerve while others watch and wonder."
},
{
"chunk": 54,
"story": 3,
"label": "your_scheme",
"predicament": "A man who hid a crime is dragged down by it at the moment he tries to undo its consequences."
},
{
"chunk": 55,
"story": 4,
"label": "peace_at_home",
"predicament": "A woman who has lost something valuable suspects the people around her, and resents her spouse for not caring as much."
},
{
"chunk": 56,
"story": 4,
"label": "cant_prove_it",
"predicament": "Someone who has lost something accuses the most defenceless person nearby, and punishes her before any proof."
},
{
"chunk": 57,
"story": 4,
"label": "peace_at_home",
"predicament": "A man who thinks a household fuss is foolish keeps defending the accused and is scolded for taking her side."
},
{
"chunk": 58,
"story": 4,
"label": "caught_out",
"predicament": "A man who finds a family inquiry ridiculous cannot keep a straight face in front of its self-important leader."
},
{
"chunk": 59,
"story": 4,
"label": "let_another_take_blame",
"predicament": "A man who sees an innocent neighbour blamed for evidence he himself left must decide whether to own up."
},
{
"chunk": 60,
"story": 4,
"label": "caught_out",
"predicament": "A man who knows more than he says can barely hide his amusement from the self-important person running the inquiry."
},
{
"chunk": 61,
"story": 4,
"label": "cant_prove_it",
"predicament": "A self-important man, teased that a neighbour fancies him, resolves to prove his point by trapping her."
},
{
"chunk": 62,
"story": 4,
"label": "pressed_to_wrong",
"predicament": "A man refuses to let his home be used to entrap a friend, so the schemer plans to go behind his back."
},
{
"chunk": 63,
"story": 4,
"label": "unwelcome_in_home",
"predicament": "A man stuck with an unwelcome relative in his home sees a chance to have him disgraced and driven off."
},
{
"chunk": 64,
"story": 4,
"label": "power_over_you",
"predicament": "A man who has trapped his rival in an embarrassing hiding place decides to make the most of it."
},
{
"chunk": 65,
"story": 4,
"label": "caught_out",
"predicament": "A trapped man must listen in silence while someone tells a neighbour a story about him that he cannot deny."
},
{
"chunk": 66,
"story": 4,
"label": "caught_out",
"predicament": "A man caught somewhere he should not be is handed an embarrassing explanation, and has no better one to offer."
},
{
"chunk": 67,
"story": 5,
"label": "past_comes_back",
"predicament": "A man found out in wrongdoing is ordered by his partner to give up everything and leave by morning."
},
{
"chunk": 68,
"story": 5,
"label": "past_comes_back",
"predicament": "A man offered a harsh but fair way out of his disgrace wants a quieter bargain the other will not give."
},
{
"chunk": 69,
"story": 5,
"label": "pressed_to_wrong",
"predicament": "A man facing ruin threatens the only person who can expose him, and must choose whether to go through with it."
},
{
"chunk": 70,
"story": 5,
"label": "none",
"predicament": "A man who has just done something terrible in rage panics and must steady himself when a figure of the law appears."
},
{
"chunk": 71,
"story": 5,
"label": "none",
"predicament": "A man with a crime behind him and a few hours' start must decide what to take and where to run."
},
{
"chunk": 72,
"story": 5,
"label": "none",
"predicament": "A fugitive planning his escape finds that every choice might be the one that gets him caught."
},
{
"chunk": 73,
"story": 5,
"label": "dread",
"predicament": "A man alone with what he has done hears noises in the dark and fears it has come back for him."
},
{
"chunk": 74,
"story": 5,
"label": "let_another_take_blame",
"predicament": "A guilty man realises a stranger's blunder gives him someone else to blame."
},
{
"chunk": 75,
"story": 5,
"label": "let_another_take_blame",
"predicament": "A man framing an innocent person must act the outraged victim in front of the law."
},
{
"chunk": 76,
"story": 5,
"label": "let_another_take_blame",
"predicament": "A man must play the shocked innocent while the person he framed pleads the truth."
},
{
"chunk": 77,
"story": 5,
"label": "let_another_take_blame",
"predicament": "Someone falsely accused points to the real culprit, who must hold his nerve and keep up his story."
},
{
"chunk": 78,
"story": 5,
"label": "your_scheme",
"predicament": "A man who thought he had got away with it learns the one witness who could hang him is still alive."
},
{
"chunk": 79,
"story": 5,
"label": "your_scheme",
"predicament": "A man whose deceit has collapsed can only watch as the truth comes out and he is taken away."
},
{
"chunk": 80,
"story": 6,
"label": "none",
"predicament": "A penniless newcomer forces his way into a place he does not belong, counting on a secret to back him."
},
{
"chunk": 81,
"story": 6,
"label": "past_comes_back",
"predicament": "A man who has built a respectable new life is found by an old associate who threatens to expose his past."
},
{
"chunk": 82,
"story": 6,
"label": "past_comes_back",
"predicament": "A man pays off a blackmailer and learns the price will be half of everything, for good."
},
{
"chunk": 83,
"story": 6,
"label": "past_comes_back",
"predicament": "A reformed man warns a blackmailer not to push him too far, while the blackmailer sets his sights on the man's family."
},
{
"chunk": 84,
"story": 6,
"label": "none",
"predicament": "A man who has seized power over another knows the danger he is in, and guards himself even as he gloats."
},
{
"chunk": 85,
"story": 6,
"label": "unwelcome_in_home",
"predicament": "A household must make polite space for someone who holds them hostage."
},
{
"chunk": 86,
"story": 6,
"label": "unwelcome_in_home",
"predicament": "Someone watches a person she trusts give way at every turn to an intruder, and demands that he stand up for himself."
},
{
"chunk": 87,
"story": 6,
"label": "past_comes_back",
"predicament": "A man who is being blackmailed hears his tormentor threaten someone he loves, and must choose between swallowing it and hitting back."
},
{
"chunk": 88,
"story": 6,
"label": "your_scheme",
"predicament": "A blackmailer's hold depends on his victim's life, and that victim suddenly collapses."
},
{
"chunk": 89,
"story": 6,
"label": "none",
"predicament": "A blackmailer whose victim is dying must grab what he can before his hold disappears."
},
{
"chunk": 90,
"story": 6,
"label": "past_comes_back",
"predicament": "A dying man pressed by his tormentor bargains for time and for provision for someone he loves."
},
{
"chunk": 91,
"story": 6,
"label": "your_scheme",
"predicament": "A man who thinks his helpless victim is at his mercy leans in close to hear the secret."
},
{
"chunk": 92,
"story": 6,
"label": "power_over_you",
"predicament": "A man who pretended to be helpless strikes at the tormentor who threatened his family."
},
{
"chunk": 93,
"story": 6,
"label": "let_another_take_blame",
"predicament": "A man who has done a desperate thing arranges things so that suspicion falls elsewhere."
},
{
"chunk": 94,
"story": 7,
"label": "none",
"predicament": "A craftsman told his work looks like something else quietly fixes it before anyone else notices."
},
{
"chunk": 95,
"story": 7,
"label": "pretence",
"predicament": "An old man looking for a free drink offers a story in exchange."
},
{
"chunk": 96,
"story": 7,
"label": "dread",
"predicament": "People who laughed at a distant danger panic when it seems to have arrived on their doorstep."
},
{
"chunk": 97,
"story": 7,
"label": "dread",
"predicament": "Someone must choose between keeping himself safe behind a barred door and letting in a stranger in danger."
},
{
"chunk": 98,
"story": 7,
"label": "pretence",
"predicament": "A stranger with a thrilling tale of danger is rewarded by a frightened crowd without anyone checking it."
},
{
"chunk": 99,
"story": 7,
"label": "dread",
"predicament": "A community living in fear of an unseen threat ignores the one doubter, because he has a bad name."
},
{
"chunk": 100,
"story": 7,
"label": "cant_prove_it",
"predicament": "A man who has suffered a loss goes to the authorities for help and is brushed off as a nuisance."
},
{
"chunk": 101,
"story": 7,
"label": "none",
"predicament": "A community suffering repeated losses cannot get help, and cannot agree how to protect itself."
},
{
"chunk": 102,
"story": 7,
"label": "pretence",
"predicament": "A man tells a dramatic story of narrow escape to an audience eager to believe it."
},
{
"chunk": 103,
"story": 7,
"label": "pretence",
"predicament": "A man caught in a boastful lie is 'backed up' by a rival, who now has him trapped by it."
},
{
"chunk": 104,
"story": 7,
"label": "none",
"predicament": "People told their fears are nonsense by outsiders decide to take matters into their own hands."
},
{
"chunk": 105,
"story": 7,
"label": "none",
"predicament": "A band that set out to face a danger returns relieved to have found nothing, and is then called to face it for real."
},
{
"chunk": 106,
"story": 7,
"label": "caught_out",
"predicament": "A man with something to hide has an armed crowd force its way into his home."
},
{
"chunk": 107,
"story": 7,
"label": "caught_out",
"predicament": "A man caught with the evidence of his thefts brazens it out and dares his accusers to prove anything."
},
{
"chunk": 108,
"story": 7,
"label": "caught_out",
"predicament": "A man accused of wrongdoing turns his accusers' own exaggerations into his defence."
},
{
"chunk": 109,
"story": 7,
"label": "cant_prove_it",
"predicament": "People who know they were swindled cannot prove it, and must watch the swindler profit."
},
{
"chunk": 110,
"story": 8,
"label": "none",
"predicament": "A man nervously setting out to do something that matters to him is stopped by a friend with questions."
},
{
"chunk": 111,
"story": 8,
"label": "rival",
"predicament": "A man discovers a friend is after the same person he is, on the same day, and each races to get there first."
},
{
"chunk": 112,
"story": 8,
"label": "rival",
"predicament": "Two rivals agree someone must go first, and neither will be the one to wait."
},
{
"chunk": 113,
"story": 8,
"label": "rival",
"predicament": "Two rivals for the same prize trade claims of priority, and each suspects the other of a trick."
},
{
"chunk": 114,
"story": 8,
"label": "your_scheme",
"predicament": "Two rivals agree to settle who goes first by a game, and one slips in a condition the other does not examine."
},
{
"chunk": 115,
"story": 8,
"label": "your_scheme",
"predicament": "A man who tried to tip a contest in his favour loses it through his own oversight."
},
{
"chunk": 116,
"story": 8,
"label": "rival",
"predicament": "A man who lost the right to try first must wait while his rival takes his chance."
},
{
"chunk": 117,
"story": 8,
"label": "rival",
"predicament": "A man finds the rival he lost to has been refused, but can still use the terms of their bargain to keep him out."
},
{
"chunk": 118,
"story": 8,
"label": "rival",
"predicament": "A man bound by a promise he made watches a rival use it to keep him from what he wants."
},
{
"chunk": 119,
"story": 8,
"label": "caught_out",
"predicament": "A man who has been avoiding someone he cares for must explain why, and the only honest answer is embarrassing."
},
{
"chunk": 120,
"story": 8,
"label": "none",
"predicament": "A man bound by a rash promise finds the person he hoped to win is willing to help him get round it."
},
{
"chunk": 121,
"story": 8,
"label": "none",
"predicament": "Someone arranges to accept the suitor she prefers in a way his rival cannot object to."
},
{
"chunk": 122,
"story": 9,
"label": "newcomer",
"predicament": "A man wakes up somewhere strange with no idea how he got there."
},
{
"chunk": 123,
"story": 9,
"label": "newcomer",
"predicament": "A man in an unknown place looks for his one companion and a first clue to how they came to be there."
},
{
"chunk": 124,
"story": 9,
"label": "power_over_you",
"predicament": "A man who has always been obeyed tries to give orders somewhere nobody knows or believes who he is."
},
{
"chunk": 125,
"story": 9,
"label": "your_scheme",
"predicament": "Two people in trouble together try to put on a united front and end up blaming each other."
},
{
"chunk": 126,
"story": 9,
"label": "power_over_you",
"predicament": "Two people who claim to be respected professionals are treated as impostors and forced to do menial work."
},
{
"chunk": 127,
"story": 9,
"label": "power_over_you",
"predicament": "People brought low insist on their old status, and are mocked for it by those around them."
},
{
"chunk": 128,
"story": 9,
"label": "power_over_you",
"predicament": "A humiliated man pretends to submit while he quietly prepares his revenge."
},
{
"chunk": 129,
"story": 9,
"label": "power_over_you",
"predicament": "A man mocked for claiming skill is suddenly needed for it, and names his price."
},
{
"chunk": 130,
"story": 9,
"label": "power_over_you",
"predicament": "A man who has gained the upper hand over those who humiliated him enjoys every moment of it."
},
{
"chunk": 131,
"story": 9,
"label": "power_over_you",
"predicament": "A man who has secretly caused the trouble only he can cure makes the most of it."
},
{
"chunk": 132,
"story": 9,
"label": "none",
"predicament": "A man who swore he would never pay the person he scorned is forced by suffering to haggle with him."
},
{
"chunk": 133,
"story": 9,
"label": "power_over_you",
"predicament": "People who scorned two outsiders now depend on them completely, and pay for the privilege."
},
{
"chunk": 134,
"story": 9,
"label": "power_over_you",
"predicament": "A man who got even with his tormentors leaves them knowing they were had."
},
{
"chunk": 135,
"story": 10,
"label": "strings",
"predicament": "Someone given news that might change their life cannot take it in, while the people around them itch to know."
},
{
"chunk": 136,
"story": 10,
"label": "strings",
"predicament": "Someone who has never had luck is told of a windfall and is afraid to believe it."
},
{
"chunk": 137,
"story": 10,
"label": "strings",
"predicament": "A man sees a relative come into money and resents that luck never comes his way."
},
{
"chunk": 138,
"story": 10,
"label": "after_your_money",
"predicament": "A man flattered by new friends is told they are really after a relative's money."
},
{
"chunk": 139,
"story": 10,
"label": "after_your_money",
"predicament": "A man trying to expose flattering suitors trips over his own family's sensibilities."
},
{
"chunk": 140,
"story": 10,
"label": "rival",
"predicament": "Two rivals courting the same person keep topping each other's compliments while the family grows fed up."
},
{
"chunk": 141,
"story": 10,
"label": "rival",
"predicament": "A slow-talking man losing a contest to a glib rival looks for a trick instead of better words."
},
{
"chunk": 142,
"story": 10,
"label": "rival",
"predicament": "A man hires someone to spread a false rumour that will drive off his rival, and the hireling drives a hard bargain."
},
{
"chunk": 143,
"story": 10,
"label": "your_scheme",
"predicament": "A man courting for money pretends not to care about it and flatters the one he courts by letting her win."
},
{
"chunk": 144,
"story": 10,
"label": "your_scheme",
"predicament": "A schemer who thinks his deal is done walks away gloating too soon."
},
{
"chunk": 145,
"story": 10,
"label": "your_scheme",
"predicament": "A man makes a public show of selfless devotion, sure that it will cost him nothing."
},
{
"chunk": 146,
"story": 10,
"label": "your_scheme",
"predicament": "A schemer whose plan has worked is thanked for his goodness while the ground starts to shift under him."
},
{
"chunk": 147,
"story": 10,
"label": "your_scheme",
"predicament": "A man who faked a disaster to win a prize learns the disaster is real, and he is bound to his promise."
},
{
"chunk": 148,
"story": 11,
"label": "pretence",
"predicament": "A sceptic among believers is pressed to admit whether he has ever seen anything he could not explain."
},
{
"chunk": 149,
"story": 11,
"label": "newcomer",
"predicament": "A young man who arrived to find no one expecting him has to fill empty days in a strange place."
},
{
"chunk": 150,
"story": 11,
"label": "newcomer",
"predicament": "A traveller lost in the dark and the cold must find shelter before night closes in."
},
{
"chunk": 151,
"story": 11,
"label": "dread",
"predicament": "A worn-out traveller must choose between a long walk on and a nearby shelter he has been warned against."
},
{
"chunk": 152,
"story": 11,
"label": "dread",
"predicament": "A stranger taken in by odd hosts who seem keen to keep him wonders whether he has walked into a trap."
},
{
"chunk": 153,
"story": 11,
"label": "dread",
"predicament": "A guest must sit down in the dark with someone he cannot see, on hosts' terms he does not understand."
},
{
"chunk": 154,
"story": 11,
"label": "dread",
"predicament": "A guest left alone with a stranger he cannot see grows afraid, and must decide whether to trust his hosts."
},
{
"chunk": 155,
"story": 11,
"label": "dread",
"predicament": "A frightened man sees what he feared, and learns it is someone who was hurt and ashamed to be seen."
},
{
"chunk": 156,
"story": 11,
"label": "owning_up",
"predicament": "A man who shrank from someone must make amends, and finds they deserve his respect."
}
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,828 @@
{
"corpus": "maupassant",
"from": "hand groups mapped through catalogue_v3_src.SOURCES",
"labels": [
{
"chunk": 0,
"story": 0,
"label": "none",
"predicament": "A worn-out couple learn the old relative they keep will not last the night, just as the busy season presses."
},
{
"chunk": 1,
"story": 0,
"label": "death_as_burden",
"predicament": "A couple at a dying relative's bedside think mainly of the working days his death and burial will cost them."
},
{
"chunk": 2,
"story": 0,
"label": "death_as_burden",
"predicament": "To save a day's work, a couple decide to announce a relative's death before it has actually happened."
},
{
"chunk": 3,
"story": 0,
"label": "cover_up_spiral",
"predicament": "Having told the neighbours a relative is dead, a woman keeps checking and finds him stubbornly still alive."
},
{
"chunk": 4,
"story": 0,
"label": "cover_up_spiral",
"predicament": "A couple who announced a death too early reassure each other that the authorities will bend the rules for them."
},
{
"chunk": 5,
"story": 0,
"label": "cover_up_spiral",
"predicament": "A couple who talked obliging officials into bending the rules face arriving mourners with the dying relative still breathing."
},
{
"chunk": 6,
"story": 0,
"label": "pretence",
"predicament": "A couple who summoned mourners too early must explain the embarrassing mistake and keep the guests from leaving offended."
},
{
"chunk": 7,
"story": 0,
"label": "death_as_burden",
"predicament": "A couple whose relative finally dies at the worst moment regret only the extra food and expense it costs them."
},
{
"chunk": 8,
"story": 1,
"label": "none",
"predicament": "A landowner recalls the strict old servant he trusted to guard his property, and the servant's unpromising young nephew."
},
{
"chunk": 9,
"story": 1,
"label": "none",
"predicament": "A landowner arrives for his yearly stay at a remote property, where an old servant and a disliked boy wait."
},
{
"chunk": 10,
"story": 1,
"label": "none",
"predicament": "A loyal old servant is plainly troubled by something and cannot bring himself to tell his employer about it."
},
{
"chunk": 11,
"story": 1,
"label": "none",
"predicament": "A loyal servant must confess to his employer that his own young relative has been stealing from him."
},
{
"chunk": 12,
"story": 1,
"label": "called_to_account",
"predicament": "A servant torn between his employer and his only young relative punishes the boy in front of the employer to prove his loyalty."
},
{
"chunk": 13,
"story": 1,
"label": "revenge",
"predicament": "A boy shamed in front of the household takes his revenge, and a guest wakes to find the house deliberately set alight."
},
{
"chunk": 14,
"story": 1,
"label": "revenge",
"predicament": "A man realises the young relative he punished has burned the house in revenge, killing an innocent old woman."
},
{
"chunk": 15,
"story": 1,
"label": "guilt_that_returns",
"predicament": "A man who killed his own young relative in a moment's rage must live with it after the law lets him go."
},
{
"chunk": 16,
"story": 2,
"label": "none",
"predicament": "A servant left alone with the chores feels a restlessness she cannot name and slips outside for a moment's air."
},
{
"chunk": 17,
"story": 2,
"label": "none",
"predicament": "A young servant stirred by spring feels the pull to abandon her work and simply lie in the sun."
},
{
"chunk": 18,
"story": 2,
"label": "none",
"predicament": "A young servant dozing alone is grabbed by a fellow worker who has been pressing his attentions on her for months."
},
{
"chunk": 19,
"story": 2,
"label": "none",
"predicament": "A young servant who fended off a coworker's advance sits talking with him, homesick for the family she left behind."
},
{
"chunk": 20,
"story": 2,
"label": "none",
"predicament": "A young woman asks a persistent suitor whether he truly means marriage, and he says yes to get what he wants."
},
{
"chunk": 21,
"story": 2,
"label": "revenge",
"predicament": "A young woman left pregnant confronts the lover who promised marriage and now laughs his promise off."
},
{
"chunk": 22,
"story": 2,
"label": "none",
"predicament": "A young woman who forced a promise from her lover learns he has quietly left, leaving her alone with the secret."
},
{
"chunk": 23,
"story": 2,
"label": "cover_up_spiral",
"predicament": "A young woman hiding a pregnancy lives in dread that every watching face in the household has already guessed."
},
{
"chunk": 24,
"story": 2,
"label": "none",
"predicament": "An anxious young woman hoping for word from her lover gets a letter instead saying her mother is dying."
},
{
"chunk": 25,
"story": 2,
"label": "far_from_home",
"predicament": "A young unmarried mother leaves her baby with others so she can keep working, and aches for it constantly."
},
{
"chunk": 26,
"story": 2,
"label": "none",
"predicament": "A servant with a hidden child to support makes herself indispensable to her employer, hoping he will pay her more."
},
{
"chunk": 27,
"story": 2,
"label": "none",
"predicament": "A servant whose hard work has enriched her employer tries to ask for a raise and loses her nerve at the last moment."
},
{
"chunk": 28,
"story": 2,
"label": "far_from_home",
"predicament": "A mother who sees her child only rarely finds it does not know her, then must go back to her employer."
},
{
"chunk": 29,
"story": 2,
"label": "bow_for_your_living",
"predicament": "A servant hiding a child is suddenly offered marriage by her employer, who plainly sees her as a good bargain."
},
{
"chunk": 30,
"story": 2,
"label": "bow_for_your_living",
"predicament": "A servant refuses her employer's proposal without being able to say why, and he assumes she will come round."
},
{
"chunk": 31,
"story": 2,
"label": "isolation",
"predicament": "A woman trapped between an unwelcome proposal and a secret she cannot tell runs away into the night."
},
{
"chunk": 32,
"story": 2,
"label": "none",
"predicament": "A woman in despair tries to end her life, is turned back by chance, and is returned to the place she fled."
},
{
"chunk": 33,
"story": 2,
"label": "bow_for_your_living",
"predicament": "An employer refused in marriage interrogates his servant about a secret lover, naming suspects until he nearly guesses right."
},
{
"chunk": 34,
"story": 2,
"label": "cover_up_spiral",
"predicament": "A woman pressed about her secret swears to a half-truth and keeps refusing, while her questioner grows more suspicious."
},
{
"chunk": 35,
"story": 2,
"label": "bow_for_your_living",
"predicament": "A servant who refused her employer is forced by him at night and finds herself being married with no way to resist."
},
{
"chunk": 36,
"story": 2,
"label": "cover_up_spiral",
"predicament": "A wife who married while hiding a child feels she has cheated her husband, and dreads the day he finds out."
},
{
"chunk": 37,
"story": 2,
"label": "cover_up_spiral",
"predicament": "A wife with a hidden past hears a pointed remark from her husband and fears he has found out at last."
},
{
"chunk": 38,
"story": 2,
"label": "cover_up_spiral",
"predicament": "A wife braced to be exposed learns her husband's real grievance is something else entirely: she has given him no children."
},
{
"chunk": 39,
"story": 2,
"label": "guilt_that_returns",
"predicament": "A childless couple try every remedy anyone suggests, and the wife comes to believe she is being punished for an old sin."
},
{
"chunk": 40,
"story": 2,
"label": "cover_up_spiral",
"predicament": "A wife beaten for being childless finally flings her long-kept secret in her husband's face: she already has a child."
},
{
"chunk": 41,
"story": 2,
"label": "none",
"predicament": "A husband learns his wife hid a child from him and, against all her fears, welcomes it because it answers his own need."
},
{
"chunk": 42,
"story": 3,
"label": "none",
"predicament": "A man receives his yearly letter from someone far away and is reminded of the chance meeting that began it."
},
{
"chunk": 43,
"story": 3,
"label": "none",
"predicament": "A man sent alone on an errand over the holiday passes a gloomy day travelling among strangers."
},
{
"chunk": 44,
"story": 3,
"label": "none",
"predicament": "A man sent to judge a loss on behalf of those who must pay for it seeks the facts from someone who was there."
},
{
"chunk": 45,
"story": 3,
"label": "none",
"predicament": "A newcomer is told by a local exactly how long he can safely stay out before the danger returns."
},
{
"chunk": 46,
"story": 3,
"label": "none",
"predicament": "A man walks alone into a strange, empty place that is safe to cross for only a few hours."
},
{
"chunk": 47,
"story": 3,
"label": "isolation",
"predicament": "A man working alone in an abandoned place grows uneasy at every small sound around him."
},
{
"chunk": 48,
"story": 3,
"label": "mistook_them",
"predicament": "Surprised by strangers, a man passes himself off as the owner of the place and is charmed by a young visitor."
},
{
"chunk": 49,
"story": 3,
"label": "unspoken",
"predicament": "A man showing strangers around embroiders a story he never witnessed, to hold the attention of a young woman."
},
{
"chunk": 50,
"story": 3,
"label": "trapped",
"predicament": "A man who lingered too long to impress a stranger realises he has trapped them all, with no way back."
},
{
"chunk": 51,
"story": 3,
"label": "unspoken",
"predicament": "In real danger beside a young stranger, a man finds he feels only a strange happiness at being close to her."
},
{
"chunk": 52,
"story": 3,
"label": "unspoken",
"predicament": "As the danger grows, a man presses his care on a young woman he barely knows and longs to hold her."
},
{
"chunk": 53,
"story": 3,
"label": "trapped",
"predicament": "Facing likely death together, a group of strangers keep up their courage with ceremony and song."
},
{
"chunk": 54,
"story": 3,
"label": "unspoken",
"predicament": "A man who snatched a kiss in what he thought were his last moments is rescued and finds he regrets the rescue."
},
{
"chunk": 55,
"story": 3,
"label": "far_from_home",
"predicament": "A man who let a brief chance at love slip past keeps it alive for years in yearly letters, regretting his hesitation."
},
{
"chunk": 56,
"story": 4,
"label": "none",
"predicament": "A man whose standing rests on openly mocking the local authority is locked in a long, quiet rivalry with it."
},
{
"chunk": 57,
"story": 4,
"label": "bow_for_your_living",
"predicament": "A man learns a well-paid job he could do is going to an outsider, because of the opinions he has flaunted."
},
{
"chunk": 58,
"story": 4,
"label": "bow_for_your_living",
"predicament": "Greed drives a man to go cap in hand to his old rival, who pretends not to know what he has come for."
},
{
"chunk": 59,
"story": 4,
"label": "bow_for_your_living",
"predicament": "A rival offers a man the work he wants on one condition: a public act that renounces everything he has boasted of."
},
{
"chunk": 60,
"story": 4,
"label": "bow_for_your_living",
"predicament": "A man who has agreed to humble himself for gain haggles over every detail of how publicly he must do it."
},
{
"chunk": 61,
"story": 4,
"label": "bow_for_your_living",
"predicament": "A man who traded his principles for a job must now kneel before his old rival and go through with it."
},
{
"chunk": 62,
"story": 4,
"label": "called_to_account",
"predicament": "A man forced to account for himself insists he is blameless while admitting, clause by clause, to every small failing."
},
{
"chunk": 63,
"story": 4,
"label": "called_to_account",
"predicament": "A man who calls himself honest admits, without seeing the contradiction, that he pads bills and bends the truth for gain."
},
{
"chunk": 64,
"story": 4,
"label": "none",
"predicament": "A man who swallowed his pride for profit gets what he wanted and keeps up the show of conversion ever after."
},
{
"chunk": 65,
"story": 5,
"label": "bow_for_your_living",
"predicament": "A spendthrift in need of money visits the one set of relatives he has never borrowed from, and despises them on sight."
},
{
"chunk": 66,
"story": 5,
"label": "called_to_account",
"predicament": "A spendthrift who came to borrow is met instead with a lecture on the debts and drinking his relatives have heard about."
},
{
"chunk": 67,
"story": 5,
"label": "bow_for_your_living",
"predicament": "A pleasure-loving guest endures the dull, pious household of the relatives he needs money from, and counts the hours."
},
{
"chunk": 68,
"story": 5,
"label": "none",
"predicament": "A guest who cannot stand another evening of his relatives' sermons invents an excuse and slips out to find some fun."
},
{
"chunk": 69,
"story": 5,
"label": "none",
"predicament": "A half-drunk visitor looking for low amusement in a strange town gets directions and is not sure he has them right."
},
{
"chunk": 70,
"story": 5,
"label": "mistook_them",
"predicament": "A visitor who has walked into the wrong house mistakes a respectable gathering for a disreputable one and makes himself at home."
},
{
"chunk": 71,
"story": 5,
"label": "mistook_them",
"predicament": "A man who thinks he has caught a respectable relative in a scandal learns he is the one who has disgraced himself."
},
{
"chunk": 72,
"story": 6,
"label": "none",
"predicament": "A pretty woman of modest means feels she was born for luxury and is tormented by the plainness of her life."
},
{
"chunk": 73,
"story": 6,
"label": "pretence",
"predicament": "A woman who avoids a richer friend out of envy is handed a coveted invitation and flings it aside in resentment."
},
{
"chunk": 74,
"story": 6,
"label": "pretence",
"predicament": "A woman afraid of looking poor at a grand occasion asks her spouse for money he had saved for his own small pleasure."
},
{
"chunk": 75,
"story": 6,
"label": "pretence",
"predicament": "Unwilling to look poor among the rich, a woman borrows a costly ornament from a wealthier friend to wear."
},
{
"chunk": 76,
"story": 6,
"label": "pretence",
"predicament": "A woman who shone at a grand occasion in borrowed finery hurries away so no one sees her shabby everyday coat."
},
{
"chunk": 77,
"story": 6,
"label": "cover_up_spiral",
"predicament": "A woman who borrowed a friend's valuable finds it gone after a night out, and must decide what to tell the owner."
},
{
"chunk": 78,
"story": 6,
"label": "cover_up_spiral",
"predicament": "A couple who lost a borrowed valuable stall the owner with a lie and resolve to replace it at any cost."
},
{
"chunk": 79,
"story": 6,
"label": "cover_up_spiral",
"predicament": "Rather than confess a loss to a friend, a couple ruin themselves secretly replacing it and sink into hard poverty."
},
{
"chunk": 80,
"story": 6,
"label": "changed",
"predicament": "A woman worn out by years of paying for a hidden loss meets the friend who never knew, and decides to tell her."
},
{
"chunk": 81,
"story": 6,
"label": "mistook_them",
"predicament": "A woman proudly confesses the ruinous sacrifice she made to hide a loss, and learns the thing was never worth it."
},
{
"chunk": 82,
"story": 7,
"label": "death_as_burden",
"predicament": "A proud family learns that a disgraced relative they never mention is dying, and must decide what that means for their name."
},
{
"chunk": 83,
"story": 7,
"label": "death_as_burden",
"predicament": "A respectable family worry less about a dying relative than about the scandal his unrepentant death would bring on them."
},
{
"chunk": 84,
"story": 7,
"label": "none",
"predicament": "Sent ahead on an awkward family errand, a young man must talk his way past suspicious strangers guarding a door."
},
{
"chunk": 85,
"story": 7,
"label": "death_as_burden",
"predicament": "A respectable woman come to reclaim a dying relative learns he is attended by the very company she disowns."
},
{
"chunk": 86,
"story": 7,
"label": "mistook_them",
"predicament": "A young man meets for the first time the disgraced relative his family shunned, and finds him surprisingly dignified."
},
{
"chunk": 87,
"story": 7,
"label": "none",
"predicament": "A go-between gently tries to reconcile a dying outcast with his family until their meddling ally barges in too soon."
},
{
"chunk": 88,
"story": 7,
"label": "death_as_burden",
"predicament": "A dying man refuses the rites his family wants forced on him, and they regroup to find another way in."
},
{
"chunk": 89,
"story": 7,
"label": "death_as_burden",
"predicament": "Rival parties compete to claim a dying man for their side, and his fury at all of them hastens his end."
},
{
"chunk": 90,
"story": 7,
"label": "pretence",
"predicament": "Once a defiant relative is dead and cannot object, his family claim him publicly as one of their own."
},
{
"chunk": 91,
"story": 8,
"label": "none",
"predicament": "A guest arrives to join a daring venture that is being launched before a large, curious crowd."
},
{
"chunk": 92,
"story": 8,
"label": "none",
"predicament": "A builder launching an untried invention hears confident onlookers predict it will fail before it clears the town."
},
{
"chunk": 93,
"story": 8,
"label": "none",
"predicament": "A group setting out on a venture find there is not room for everyone, and one of them must stay behind."
},
{
"chunk": 94,
"story": 8,
"label": "none",
"predicament": "A group lifted suddenly far above everyday life watch their friends and the world below shrink away."
},
{
"chunk": 95,
"story": 8,
"label": "none",
"predicament": "Travellers far above the world can still hear its ordinary noises clearly, and call back down to it."
},
{
"chunk": 96,
"story": 8,
"label": "none",
"predicament": "Travellers drifting with no fixed course debate where they are, and one feels a peace he has never known."
},
{
"chunk": 97,
"story": 8,
"label": "none",
"predicament": "A crew handling something that answers every small touch but cannot be steered keep it aloft by constant small corrections."
},
{
"chunk": 98,
"story": 8,
"label": "none",
"predicament": "Cut off from the world below, a small group drift into a blissful state where nothing seems to matter."
},
{
"chunk": 99,
"story": 8,
"label": "trapped",
"predicament": "A group lost in blissful forgetfulness is jolted when their craft suddenly drops and they must act fast."
},
{
"chunk": 100,
"story": 8,
"label": "trapped",
"predicament": "An experienced traveller hears a sign of danger that the others, and even their leader, will not admit."
},
{
"chunk": 101,
"story": 8,
"label": "trapped",
"predicament": "A leader who knows danger is coming keeps it quiet so as not to frighten the people in his care."
},
{
"chunk": 102,
"story": 8,
"label": "none",
"predicament": "Travellers racing ahead of a storm are urged to come down, but hold their course as long as they can."
},
{
"chunk": 103,
"story": 8,
"label": "trapped",
"predicament": "With open water ahead and a storm behind, a leader must bring his party down fast wherever he can."
},
{
"chunk": 104,
"story": 8,
"label": "none",
"predicament": "A party makes a rough, frightening landing among wary strangers and escapes the storm with seconds to spare."
},
{
"chunk": 105,
"story": 9,
"label": "none",
"predicament": "A middle-aged man who never felt himself growing old recalls the moment the truth was forced on him."
},
{
"chunk": 106,
"story": 9,
"label": "unspoken",
"predicament": "A man recalls the first sight of a young woman who struck him at once as the one he was meant to love."
},
{
"chunk": 107,
"story": 9,
"label": "unspoken",
"predicament": "A man falls helplessly in love with a married woman and gives no thought at all to her husband."
},
{
"chunk": 108,
"story": 9,
"label": "changed",
"predicament": "A man who has kept a cherished memory unchanged for years is greeted by a stranger who seems to know him."
},
{
"chunk": 109,
"story": 9,
"label": "changed",
"predicament": "A man meets the woman he idealised for years and is shattered to find time has made her someone else."
},
{
"chunk": 110,
"story": 9,
"label": "changed",
"predicament": "A man shaken by how a former love has aged goes home and sees, at last, how much he has aged himself."
},
{
"chunk": 111,
"story": 10,
"label": "none",
"predicament": "A man who refuses to share his company's favourite pastime explains, with a family story, why his line gave it up."
},
{
"chunk": 112,
"story": 10,
"label": "none",
"predicament": "Two brothers are so consumed by one passion that they will not interrupt it even for the birth of a child."
},
{
"chunk": 113,
"story": 10,
"label": "revenge",
"predicament": "Proud men whose repeated efforts to catch a menace keep failing take it as a personal insult, and begin to fear it."
},
{
"chunk": 114,
"story": 10,
"label": "revenge",
"predicament": "In the heat of a reckless chase, a man sees his brother killed in an instant by their own haste."
},
{
"chunk": 115,
"story": 10,
"label": "revenge",
"predicament": "A man alone in the dark with his brother's body feels terror, then turns it into rage when the enemy reappears."
},
{
"chunk": 116,
"story": 10,
"label": "revenge",
"predicament": "A grieving man takes his revenge with his bare hands and makes his dead brother's body witness the triumph."
},
{
"chunk": 117,
"story": 10,
"label": "none",
"predicament": "A family's grief over a reckless passion hardens into a lasting refusal, handed down to every later generation."
},
{
"chunk": 118,
"story": 11,
"label": "none",
"predicament": "A young man takes on his first long, isolated stint minding a place, cut off from everyone until spring."
},
{
"chunk": 119,
"story": 11,
"label": "far_from_home",
"predicament": "A young man about to be parted for months from the girl he loves hears nothing of the duties he is given."
},
{
"chunk": 120,
"story": 11,
"label": "far_from_home",
"predicament": "A young man parting for a long season from the girl he loves asks her, in a whisper, not to forget him."
},
{
"chunk": 121,
"story": 11,
"label": "far_from_home",
"predicament": "A young man shut away for a long season keeps going to look toward the place where the girl he loves is."
},
{
"chunk": 122,
"story": 11,
"label": "far_from_home",
"predicament": "A young man longing to leave while he still can watches the last chance close as heavy snow shuts him in."
},
{
"chunk": 123,
"story": 11,
"label": "isolation",
"predicament": "Left alone for a day in an isolated place, a young man finds the solitude suddenly frightening and goes looking for company."
},
{
"chunk": 124,
"story": 11,
"label": "none",
"predicament": "A young man goes out to meet his companion at the expected hour and finds no sign of him anywhere."
},
{
"chunk": 125,
"story": 11,
"label": "isolation",
"predicament": "A young man, frightened by the emptiness, hurries home sure his missing companion will be there, and finds the house cold."
},
{
"chunk": 126,
"story": 11,
"label": "trapped",
"predicament": "A young man whose companion is missing pictures every disaster, knowing he alone cannot search so vast a wilderness."
},
{
"chunk": 127,
"story": 11,
"label": "trapped",
"predicament": "A young man sets out alone in the night to search for a missing companion, taking on a dangerous climb."
},
{
"chunk": 128,
"story": 11,
"label": "trapped",
"predicament": "A searcher who has given everything to finding a lost companion is exhausted, freezing, and has still found nothing."
},
{
"chunk": 129,
"story": 11,
"label": "guilt_that_returns",
"predicament": "A young man who gave up a search to save himself wakes to hear his lost companion's voice calling his name."
},
{
"chunk": 130,
"story": 11,
"label": "guilt_that_returns",
"predicament": "A young man is convinced his dead companion is reproaching him for not searching harder, and is haunted by the guilt."
},
{
"chunk": 131,
"story": 11,
"label": "guilt_that_returns",
"predicament": "A young man alone with his guilt dreads each night, certain the one he failed will come calling again."
},
{
"chunk": 132,
"story": 11,
"label": "isolation",
"predicament": "A terrified young man shut in alone turns to drink to quiet his fear of what he believes waits outside."
},
{
"chunk": 133,
"story": 11,
"label": "guilt_that_returns",
"predicament": "A man drowning guilt and fear in drink runs out of it, and finds the terror waiting for him, worse than before."
},
{
"chunk": 134,
"story": 11,
"label": "isolation",
"predicament": "A man half mad with fear shuts out his only companion by mistake and barricades himself against its cries."
},
{
"chunk": 135,
"story": 11,
"label": "none",
"predicament": "A family returning after a long absence find signs that something has gone terribly wrong with those they left behind."
},
{
"chunk": 136,
"story": 11,
"label": "changed",
"predicament": "A family break into their shut-up house and find the young man they left in charge changed past recognition by solitude."
}
]
}
@@ -0,0 +1,948 @@
{
"corpus": "nobody",
"from": "hand groups mapped through catalogue_v3_src.SOURCES",
"labels": [
{
"chunk": 0,
"story": 0,
"label": "none",
"predicament": "A couple settling into a modest new home take pride in its small comforts and talk themselves past its obvious shortcomings."
},
{
"chunk": 1,
"story": 0,
"label": "unwelcome_in_home",
"predicament": "A contented householder tells his old friends to drop in whenever they like, and one of them only comes to complain."
},
{
"chunk": 2,
"story": 0,
"label": "peace_at_home",
"predicament": "A husband and wife each arrange the household's buying without consulting the other, and both orders turn up at the door."
},
{
"chunk": 3,
"story": 0,
"label": "needled",
"predicament": "A respectable man who returns a tradesman's bad goods is insulted at his own door as someone not worth serving."
},
{
"chunk": 4,
"story": 0,
"label": "saving_face",
"predicament": "A man who means to impress an important visitor with his front entrance cannot get it open and must take him round the side."
},
{
"chunk": 5,
"story": 1,
"label": "needled",
"predicament": "A tradesman whose custom was refused abuses a householder in front of the neighbours, and another talks him into a costlier job."
},
{
"chunk": 6,
"story": 1,
"label": "needled",
"predicament": "A long-serving senior rebukes younger colleagues for lateness and is answered with open cheek by the newest of them."
},
{
"chunk": 7,
"story": 1,
"label": "needled",
"predicament": "A punctual senior is caught late on the one morning the employer checks, and the younger colleagues he scolded mock him openly."
},
{
"chunk": 8,
"story": 1,
"label": "misreading_the_room",
"predicament": "A man makes a small joke at an old friend's expense and is so delighted with it that he laughs half the night."
},
{
"chunk": 9,
"story": 1,
"label": "misreading_the_room",
"predicament": "A husband calls his busy wife away to hear a pun and she tells him plainly it was not worth her time."
},
{
"chunk": 10,
"story": 1,
"label": "standoff",
"predicament": "A man's friends lie their way in where he has been turned away, and leave him waiting outside for an hour."
},
{
"chunk": 11,
"story": 1,
"label": "standoff",
"predicament": "A man slighted by his old friends ends up apologising to them himself, while telling himself he has generously forgiven them."
},
{
"chunk": 12,
"story": 1,
"label": "needled",
"predicament": "A man who claims a well-stocked cellar to refuse an old friend's offer is exposed when a servant brings in cheap drink."
},
{
"chunk": 13,
"story": 2,
"label": "beyond_your_means",
"predicament": "A modest householder who claims to scorn fashionable society is flattered by a new acquaintance into buying drink on promised favours."
},
{
"chunk": 14,
"story": 2,
"label": "beyond_your_means",
"predicament": "A man sets out to treat his wife's old friends to an evening out, relying on free tickets promised by a new acquaintance."
},
{
"chunk": 15,
"story": 2,
"label": "beyond_your_means",
"predicament": "A host finds his free tickets refused at the door in front of his guests, and one guest quietly pays for better seats."
},
{
"chunk": 16,
"story": 2,
"label": "saving_face",
"predicament": "A host humiliated in front of his guests writes a cutting complaint to the acquaintance responsible, and misspells the very word that mattered."
},
{
"chunk": 17,
"story": 2,
"label": "peace_at_home",
"predicament": "A husband seized by a home-improvement craze redecorates without asking his wife, and dismisses everyone else's opinion as bad taste."
},
{
"chunk": 18,
"story": 2,
"label": "misreading_the_room",
"predicament": "A host makes a pun on his two old friends' names and laughs at it until the chair gives way beneath him."
},
{
"chunk": 19,
"story": 2,
"label": "needled",
"predicament": "A senior's threat to report a cheeky junior brings a humble apology, and an hour later a missile from the juniors' desks."
},
{
"chunk": 20,
"story": 2,
"label": "none",
"predicament": "A man whose home improvement has gone ridiculously wrong decides to hide it from his wife and have it quietly put right."
},
{
"chunk": 21,
"story": 3,
"label": "newly_raised",
"predicament": "A modest couple receive an invitation far above their usual station and are overjoyed, unsure even how to answer it."
},
{
"chunk": 22,
"story": 3,
"label": "newly_raised",
"predicament": "A man proud of a grand invitation learns his employer arranged it, and that a colleague he looks down on was asked too."
},
{
"chunk": 23,
"story": 3,
"label": "needled",
"predicament": "A man dressed for the grandest evening of his life loses his temper with a delivery boy and ends up bruised and torn."
},
{
"chunk": 24,
"story": 3,
"label": "out_of_place",
"predicament": "A couple at a grand reception above their station find that nobody there knows them, or the man who got them invited."
},
{
"chunk": 25,
"story": 3,
"label": "needled",
"predicament": "At a grand reception a man is greeted with loud familiarity by a tradesman he employs, who turns out better connected than him."
},
{
"chunk": 26,
"story": 3,
"label": "peace_at_home",
"predicament": "A man flattered to be introduced to a dignitary leaves his wife standing alone in the crowd, and she lets him know it."
},
{
"chunk": 27,
"story": 3,
"label": "needled",
"predicament": "A man showing off his dancing at a grand event falls flat with his wife, and a tradesman he employs makes fun of him."
},
{
"chunk": 28,
"story": 4,
"label": "peace_at_home",
"predicament": "A husband suffering after a grand evening finds his wife coldly silent with him, and cannot see what he has done wrong."
},
{
"chunk": 29,
"story": 4,
"label": "peace_at_home",
"predicament": "A husband who expects an apology from his wife is instead called to account for his drinking and fawning at a grand event."
},
{
"chunk": 30,
"story": 4,
"label": "needled",
"predicament": "A husband is told by his wife how he let a vulgar tradesman snub him in public and then fawned on him all evening."
},
{
"chunk": 31,
"story": 4,
"label": "standoff",
"predicament": "A man who improved an old friend's belonging without asking is told it was a treasured keepsake and called a fool."
},
{
"chunk": 32,
"story": 4,
"label": "standoff",
"predicament": "A man buys an offended old friend a costly peace offering, then learns the friend never cared and the loss was trifling."
},
{
"chunk": 33,
"story": 4,
"label": "needled",
"predicament": "A tradesman charges more to mend something than it cost new, and meets the customer's complaint with open insolence."
},
{
"chunk": 34,
"story": 4,
"label": "beyond_your_means",
"predicament": "A man impulsively invites a grander acquaintance home, and finds the door locked, no help in the house and nothing to eat."
},
{
"chunk": 35,
"story": 4,
"label": "peace_at_home",
"predicament": "A husband and wife keep flaring into quarrels over nothing, and he avoids home for an evening and brings back a peace offering."
},
{
"chunk": 36,
"story": 4,
"label": "needled",
"predicament": "After a younger colleague jeers at his clothes, a man buys the fashionable things the smarter young men at work are wearing."
},
{
"chunk": 37,
"story": 4,
"label": "beyond_your_means",
"predicament": "A couple spend on holiday finery to keep up with a fashionable friend, and then the lodgings they booked are given to others."
},
{
"chunk": 38,
"story": 5,
"label": "family_against_your_path",
"predicament": "A grown son arrives home unannounced, drops the name he was christened with, and sneers at the respectable relative it honoured."
},
{
"chunk": 39,
"story": 5,
"label": "family_against_your_path",
"predicament": "A grown son lies in bed past dinner, calls his employer a cad, and announces he has thrown up his post."
},
{
"chunk": 40,
"story": 5,
"label": "answering_for_them",
"predicament": "A father who orders his son to withdraw a resignation learns the son was in fact dismissed for idleness."
},
{
"chunk": 41,
"story": 5,
"label": "answering_for_them",
"predicament": "A father dodges an old friend's awkward question about his son's dismissal, and the son is ashamed to be seen with him."
},
{
"chunk": 42,
"story": 5,
"label": "home_unseen",
"predicament": "A father's disapproval of his grown son's habits is overruled by his wife, and his peace offering is laughed at."
},
{
"chunk": 43,
"story": 5,
"label": "unwelcome_in_home",
"predicament": "An old friend's boisterous prank at a party sends everyone tumbling, hurts the wife, and costs the husband an expensive ride home."
},
{
"chunk": 44,
"story": 6,
"label": "answering_for_them",
"predicament": "A father writes to firm after firm seeking a place for his dismissed grown son, and every one of them has nothing."
},
{
"chunk": 45,
"story": 6,
"label": "none",
"predicament": "A respectable householder is mocked by the rowdy visitors next door, who sing at him and throw a cracker at his hat."
},
{
"chunk": 46,
"story": 6,
"label": "none",
"predicament": "A man laughs along with a roomful of guests all evening, not knowing that the joke is something hanging from his own coat."
},
{
"chunk": 47,
"story": 6,
"label": "saving_face",
"predicament": "A man demands to know who destroyed his cherished private record, and his cutting retort is spoiled when he smashes a treasured gift."
},
{
"chunk": 48,
"story": 6,
"label": "needled",
"predicament": "A householder's inquiry into a small household loss sets the servants and a tradesman blaming each other in a row on his doorstep."
},
{
"chunk": 49,
"story": 6,
"label": "answering_for_them",
"predicament": "A father whose employer has found his idle son a post breaks the news over good wine, and the son barely acknowledges it."
},
{
"chunk": 50,
"story": 7,
"label": "family_against_your_path",
"predicament": "A grown son announces an engagement without consulting his parents, and sneers at the post his father's employer found him."
},
{
"chunk": 51,
"story": 7,
"label": "saving_face",
"predicament": "A guest who tries to help his host's prized display along knocks it over, and the whole party turns on him."
},
{
"chunk": 52,
"story": 7,
"label": "unwelcome_in_home",
"predicament": "A son's new friend, brought home to amuse his parents, outstays his welcome by hours and then leads the son out at midnight."
},
{
"chunk": 53,
"story": 7,
"label": "needled",
"predicament": "A father comes home to a shouting match between the servants and his son swearing before his mother, and insists he is master here."
},
{
"chunk": 54,
"story": 7,
"label": "family_against_your_path",
"predicament": "A father meets the woman his young son means to marry and is dismayed to find her much older than the boy."
},
{
"chunk": 55,
"story": 7,
"label": "family_against_your_path",
"predicament": "A son anxious to impress his intended finds fault with his parents' party and sneers at their old friends as common."
},
{
"chunk": 56,
"story": 7,
"label": "family_against_your_path",
"predicament": "A father who loses his temper over his son's engagement is told the son will leave forever, and he is back by supper."
},
{
"chunk": 57,
"story": 8,
"label": "sure_thing",
"predicament": "A couple preparing their first important party hope the husband's employer might come, while their son pushes them into extravagance."
},
{
"chunk": 58,
"story": 8,
"label": "unwelcome_in_home",
"predicament": "A host greeted at his own door by an old friend's jeer about his clothes watches his party taken over by his son's crowd."
},
{
"chunk": 59,
"story": 8,
"label": "unwelcome_in_home",
"predicament": "The employer arrives unannounced at a man's party in the middle of noisy horseplay, and is plainly not amused by it."
},
{
"chunk": 60,
"story": 8,
"label": "beyond_your_means",
"predicament": "A man has nothing left to offer his employer at his own party, and the employer kindly leaves after a few minutes."
},
{
"chunk": 61,
"story": 9,
"label": "peace_at_home",
"predicament": "A man who drank too much at his own party insists to his wife he barely touched it, then cheers himself with a pun."
},
{
"chunk": 62,
"story": 9,
"label": "beyond_your_means",
"predicament": "A couple decline a slight acquaintance's invitation, telling themselves they dislike society when they mainly dislike buying a present."
},
{
"chunk": 63,
"story": 9,
"label": "family_against_your_path",
"predicament": "A father is ridiculed for his ignorance by his son and his son's friend, using a private ritual of their own set."
},
{
"chunk": 64,
"story": 9,
"label": "family_against_your_path",
"predicament": "Parents who had reconciled themselves to their son's imprudent engagement learn from his melodramatic outburst that it has been broken off."
},
{
"chunk": 65,
"story": 10,
"label": "unwelcome_in_home",
"predicament": "A son brings home a self-important friend who monopolises the evening and corrects his host on how to address him."
},
{
"chunk": 66,
"story": 10,
"label": "unwelcome_in_home",
"predicament": "Guests invite themselves back to a man's home, and an old friend brings along a stranger without asking or apologising."
},
{
"chunk": 67,
"story": 10,
"label": "unwelcome_in_home",
"predicament": "A host finds his home taken over by a young guest's performances and a stranger who sits in the best chair laughing."
},
{
"chunk": 68,
"story": 10,
"label": "unwelcome_in_home",
"predicament": "A stranger an old friend brought uninvited returns alone, takes the best chair again, and the host cannot bring himself to object."
},
{
"chunk": 69,
"story": 10,
"label": "unwelcome_in_home",
"predicament": "A young guest tells his older host, in his own home, to confine himself to talking about what he understands."
},
{
"chunk": 70,
"story": 10,
"label": "unwelcome_in_home",
"predicament": "An old friend coolly admits using a man's home to repay a stranger's hospitality, after making the man's wife laugh at him."
},
{
"chunk": 71,
"story": 10,
"label": "saving_face",
"predicament": "A man flattered that a lady of high standing stops to speak to him loses the moment chasing his hat through the mud."
},
{
"chunk": 72,
"story": 10,
"label": "looked_down_on",
"predicament": "A young man who scorns a respectable older man's steady working life writes to tell him their lives are worlds apart."
},
{
"chunk": 73,
"story": 10,
"label": "unwelcome_in_home",
"predicament": "A father shows his son an insolent letter from the son's friend, and the son replies that the father should apologise."
},
{
"chunk": 74,
"story": 11,
"label": "home_unseen",
"predicament": "A husband reads his wife his cherished writing and finds she was not listening, because everything in the house now turns on the son."
},
{
"chunk": 75,
"story": 11,
"label": "home_unseen",
"predicament": "A man who hopes his private writings might one day be published is laughed at by his wife and his son."
},
{
"chunk": 76,
"story": 11,
"label": "saving_face",
"predicament": "A customer who has just remarked on others' carelessness knocks over a costly display, and feels obliged to buy the damaged goods."
},
{
"chunk": 77,
"story": 11,
"label": "beyond_your_means",
"predicament": "A son advises his father to alter the prices on cheap gifts so that the recipients think he paid five times as much."
},
{
"chunk": 78,
"story": 11,
"label": "family_against_your_path",
"predicament": "A father who runs down his son's former sweetheart hears the son call his revered employer an inflated fool."
},
{
"chunk": 79,
"story": 12,
"label": "none",
"predicament": "A man receives an anonymous insult and finds himself suspecting every friend, colleague and servant he has."
},
{
"chunk": 80,
"story": 12,
"label": "none",
"predicament": "At a family gathering a forward young stranger kisses a man's wife under cover of a joke, and she makes light of it."
},
{
"chunk": 81,
"story": 12,
"label": "family_against_your_path",
"predicament": "A son asks his father to put off old friends so his intended can visit, and the mother asks who is not good enough."
},
{
"chunk": 82,
"story": 12,
"label": "unwelcome_in_home",
"predicament": "A host's supper descends into horseplay led by his son's set, and his own old friends join in pelting him."
},
{
"chunk": 83,
"story": 12,
"label": "none",
"predicament": "A man struck in the dark at his supper suspects a young guest, then finds the insult he resented was never meant for him."
},
{
"chunk": 84,
"story": 12,
"label": "unwelcome_in_home",
"predicament": "A man confides a grievance to an old friend, who laughs that he did it himself and took the man's head for a wall."
},
{
"chunk": 85,
"story": 12,
"label": "answering_for_them",
"predicament": "A father receives a letter from his son's prospective father-in-law banning the son from his house, and keeps it to himself."
},
{
"chunk": 86,
"story": 12,
"label": "peace_at_home",
"predicament": "A husband and wife waiting up for their absent son quarrel over nothing and miss the moment they always kept together."
},
{
"chunk": 87,
"story": 13,
"label": "newly_raised",
"predicament": "A long-serving man summoned by his employer fears the worst, and is told instead that his loyal years will be rewarded."
},
{
"chunk": 88,
"story": 13,
"label": "newly_raised",
"predicament": "A man promised a reward at work waits in suspense, and when he finally goes to ask, the employer has half forgotten."
},
{
"chunk": 89,
"story": 13,
"label": "misreading_the_room",
"predicament": "A father repeats his little joke so that his grown son will laugh, and the son answers him with a sneer."
},
{
"chunk": 90,
"story": 13,
"label": "newly_raised",
"predicament": "A man given a large rise after long, loyal service celebrates at home and tells his son how steady industry is rewarded."
},
{
"chunk": 91,
"story": 13,
"label": "sure_thing",
"predicament": "A father's reward for long years of steady work is outshone the same evening by his son's windfall from speculation."
},
{
"chunk": 92,
"story": 13,
"label": "needled",
"predicament": "A master rebukes a servant for small carelessness, and she answers that he is always complaining and bursts into tears."
},
{
"chunk": 93,
"story": 13,
"label": "standoff",
"predicament": "A man is reproached by an old friend who was seriously ill and says none of his friends came near him or asked."
},
{
"chunk": 94,
"story": 13,
"label": "standoff",
"predicament": "Guests arrive at an old friend's home as invited, find nobody expecting them, and are left on the doorstep by a stranger."
},
{
"chunk": 95,
"story": 13,
"label": "standoff",
"predicament": "An old friend who invited people round has gone off to a better invitation without a word, leaving them abused on his doorstep."
},
{
"chunk": 96,
"story": 14,
"label": "standoff",
"predicament": "Two men left standing on an old friend's doorstep agree he has behaved like a cad, and wait to see if he will explain."
},
{
"chunk": 97,
"story": 14,
"label": "standoff",
"predicament": "An old friend who stood people up breezes in with a flimsy excuse and a pun, and is forgiven by the evening's end."
},
{
"chunk": 98,
"story": 14,
"label": "answering_for_them",
"predicament": "A worried father confides his son's wild conduct to his employer, who kindly reassures him that the boy will steady down."
},
{
"chunk": 99,
"story": 14,
"label": "sure_thing",
"predicament": "A father braced for bad news is so relieved his son has given up an extravagance that he opens the good wine."
},
{
"chunk": 100,
"story": 14,
"label": "family_against_your_path",
"predicament": "A son scorns any thought that a wealthy, dull rival could take his intended, sure she would wait twenty years for him."
},
{
"chunk": 101,
"story": 15,
"label": "sure_thing",
"predicament": "A father who invested on his son's confident tip learns the shares have collapsed, and at first mistakes his loss for a profit."
},
{
"chunk": 102,
"story": 15,
"label": "sure_thing",
"predicament": "A father learns his son risked none of his own money on the tip he urged on everyone, and a friend offloaded his share."
},
{
"chunk": 103,
"story": 15,
"label": "answering_for_them",
"predicament": "A son and an old friend escape through a window from a man ruined by their tip, leaving the father to face him."
},
{
"chunk": 104,
"story": 15,
"label": "none",
"predicament": "A son who has lost his post and his intended on the same morning consoles himself that his rival lost money on his advice."
},
{
"chunk": 105,
"story": 16,
"label": "answering_for_them",
"predicament": "A father's long-held dream comes within reach when his employer asks him to bring his wayward son in to be seen."
},
{
"chunk": 106,
"story": 16,
"label": "answering_for_them",
"predicament": "A father whose employer takes his son into the firm can only stammer his thanks, and is told he is the example to follow."
},
{
"chunk": 107,
"story": 16,
"label": "answering_for_them",
"predicament": "A father whose son has joined him at work lies awake imagining them sharing everything, from the daily journey to the garden."
},
{
"chunk": 108,
"story": 17,
"label": "needled",
"predicament": "A senior blamed by the employer for a noise is loudly named by a younger colleague, while his own son laughs nearby."
},
{
"chunk": 109,
"story": 17,
"label": "unwelcome_in_home",
"predicament": "An old friend mocks the gift wine his host serves him, and somehow comes out ahead at cards though nobody else won."
},
{
"chunk": 110,
"story": 17,
"label": "beyond_your_means",
"predicament": "A couple dress in their best for a function they think fashionable, hoping to meet the employer, while their son says it is common."
},
{
"chunk": 111,
"story": 17,
"label": "out_of_place",
"predicament": "A couple arrive late to seem fashionable at a function far from home, find they know nobody, and welcome an acquaintance they dislike."
},
{
"chunk": 112,
"story": 17,
"label": "beyond_your_means",
"predicament": "A guest at a grand function generously helps everyone around him to food and wine, believing it is all provided free."
},
{
"chunk": 113,
"story": 17,
"label": "beyond_your_means",
"predicament": "A man who played the generous host at a function is handed the bill for everyone's supper and cannot quite pay it."
},
{
"chunk": 114,
"story": 17,
"label": "beyond_your_means",
"predicament": "A man humiliated by an unexpected bill hides it from his wife so as not to spoil her evening."
},
{
"chunk": 115,
"story": 17,
"label": "needled",
"predicament": "A man with no money for his fare is abused and manhandled, and the law standing by says he has only himself to blame."
},
{
"chunk": 116,
"story": 17,
"label": "standoff",
"predicament": "An old friend laid up again reproaches a man for never asking after him, while the man's son runs out laughing at his fall."
},
{
"chunk": 117,
"story": 17,
"label": "none",
"predicament": "A man discovers that a chance acquaintance's warm invitation to come and stay was really an offer to let him cheap rooms."
},
{
"chunk": 118,
"story": 18,
"label": "out_of_place",
"predicament": "A man is hailed by an old schoolfellow who boasts of his own importance and presses him to dine with grander relations."
},
{
"chunk": 119,
"story": 18,
"label": "out_of_place",
"predicament": "A guest in a grander house criticises a portrait to his host and learns that it shows the host's dead relative."
},
{
"chunk": 120,
"story": 18,
"label": "misreading_the_room",
"predicament": "A guest makes a pun on a stranger's name, repeats it twice with a little laugh, and nobody at all sees the joke."
},
{
"chunk": 121,
"story": 18,
"label": "out_of_place",
"predicament": "A guest in a grander house is harassed by the family's pets, and the hostess says they always do that to visitors."
},
{
"chunk": 122,
"story": 18,
"label": "home_unseen",
"predicament": "A man who tells his family and old friends about a vivid dream is snubbed by every one of them at once."
},
{
"chunk": 123,
"story": 19,
"label": "out_of_place",
"predicament": "A couple invited at the last moment to fill empty places at a wealthier man's dinner accept, since they cannot afford to offend him."
},
{
"chunk": 124,
"story": 19,
"label": "out_of_place",
"predicament": "A modest guest at a distinguished dinner knows nobody, makes a tactless remark to his host, and sits silent while a celebrity talks."
},
{
"chunk": 125,
"story": 19,
"label": "looked_down_on",
"predicament": "A brilliant guest at a grand dinner mocks respectable middle ways, then turns and asks the modest man beside him to agree."
},
{
"chunk": 126,
"story": 19,
"label": "looked_down_on",
"predicament": "A modest guest hears a celebrated talker sneer at exactly his kind of man and his clothes, and has no answer."
},
{
"chunk": 127,
"story": 19,
"label": "none",
"predicament": "A celebrated guest's praise of the host's plain living exposes the host's pretences, while his scorn for homebodies lands on another guest."
},
{
"chunk": 128,
"story": 19,
"label": "looked_down_on",
"predicament": "A contented man tells himself he is happy because he is not ambitious, and hopes his son will follow in his steps."
},
{
"chunk": 129,
"story": 20,
"label": "answering_for_them",
"predicament": "A long-serving man learns his son has driven the firm's most valued client to a rival, and must face his employer about it."
},
{
"chunk": 130,
"story": 20,
"label": "answering_for_them",
"predicament": "A loyal man whose son has damaged the firm is assured of his employer's complete trust and asked to help repair it."
},
{
"chunk": 131,
"story": 20,
"label": "answering_for_them",
"predicament": "The employer asks a loyal man to write privately to a lost client, disowning his own son's conduct as if unprompted."
},
{
"chunk": 132,
"story": 20,
"label": "family_against_your_path",
"predicament": "A son who cost his father's employer its best client calls the employer a fool and insists he has done no harm."
},
{
"chunk": 133,
"story": 20,
"label": "none",
"predicament": "A father spends all day on a letter to undo his son's damage, while the son goes off to dine with his former rival."
},
{
"chunk": 134,
"story": 20,
"label": "answering_for_them",
"predicament": "A father's careful appeal on his employer's behalf is answered in a few curt lines saying his son showed more sense than the firm."
},
{
"chunk": 135,
"story": 20,
"label": "family_against_your_path",
"predicament": "A loyal man's son, hired by a rival firm at a handsome salary, urges his father to leave his stagnant employer too."
},
{
"chunk": 136,
"story": 20,
"label": "looked_down_on",
"predicament": "A father whose son has prospered by defying everything he believes in is congratulated on the boy by his old friends."
},
{
"chunk": 137,
"story": 21,
"label": "answering_for_them",
"predicament": "A guest kicked by his hosts' spoilt child objects, and the mother retorts that his own son is no model either."
},
{
"chunk": 138,
"story": 21,
"label": "none",
"predicament": "A man who dislikes his wife's fashionable friend is told that she has put up with his vulgar, dull old friends for years."
},
{
"chunk": 139,
"story": 21,
"label": "home_unseen",
"predicament": "A husband tries to forbid a fashionable craze his wife's friend has brought into the house, and is outargued in his own parlour."
},
{
"chunk": 140,
"story": 21,
"label": "home_unseen",
"predicament": "A husband who refuses to join his wife's new craze is simply left out, and spends the evening sitting apart."
},
{
"chunk": 141,
"story": 21,
"label": "none",
"predicament": "A husband who scorns his wife's new pastime thoughtlessly plays a trick on it, then agrees to join in to oblige her."
},
{
"chunk": 142,
"story": 21,
"label": "needled",
"predicament": "A man demands compensation from a tradesman for spoiled goods, then learns they cost less than he was given and must refund the difference."
},
{
"chunk": 143,
"story": 21,
"label": "unwelcome_in_home",
"predicament": "An old friend clowns through a solemn evening his host's household cares about, and the host suspects him of cheating."
},
{
"chunk": 144,
"story": 21,
"label": "misreading_the_room",
"predicament": "An old friend's pun at a solemn gathering is met with silence, and he is sent to sit out in disgrace."
},
{
"chunk": 145,
"story": 21,
"label": "none",
"predicament": "A sceptical husband is drawn into his wife's new pastime and finds himself looking forward to it all day at work."
},
{
"chunk": 146,
"story": 21,
"label": "none",
"predicament": "An old friend sets a sealed test for a household's new enthusiasm and promises to believe in it if it passes."
},
{
"chunk": 147,
"story": 21,
"label": "home_unseen",
"predicament": "A man made the butt of a friend's joke through his household's new pastime bans it, and declares he is master here."
},
{
"chunk": 148,
"story": 22,
"label": "looked_down_on",
"predicament": "A son moves out to rooms he can barely afford in a better district, telling his parents their neighbourhood is beneath him."
},
{
"chunk": 149,
"story": 22,
"label": "standoff",
"predicament": "An old friend reproaches the household once more that nobody came near him when he was ill, and produces the proof in print."
},
{
"chunk": 150,
"story": 22,
"label": "family_against_your_path",
"predicament": "A father hiding from a grand caller finds it is only his son, who mocks him and sends him out to hold the horse."
},
{
"chunk": 151,
"story": 22,
"label": "out_of_place",
"predicament": "Parents dine at their son's new rooms and find the evening far grander than he warned them, wrongly dressed and fed late."
},
{
"chunk": 152,
"story": 22,
"label": "family_against_your_path",
"predicament": "Parents watch their son flirt openly with his host's wife, while the wealthy host treats them kindly and praises the boy."
},
{
"chunk": 153,
"story": 22,
"label": "looked_down_on",
"predicament": "A modest man hears that his son's rich friend could buy his employer's whole firm, and wonders for once if money is fairly shared."
},
{
"chunk": 154,
"story": 22,
"label": "newly_raised",
"predicament": "A loyal man is offered, through a grand acquaintance, a chance to bring his employer more business than his son lost."
},
{
"chunk": 155,
"story": 22,
"label": "newly_raised",
"predicament": "A loyal man who has brought his employer valuable business is thanked with a gift that secures his home for life."
},
{
"chunk": 156,
"story": 22,
"label": "family_against_your_path",
"predicament": "A father who sent his son a stern warning about his conduct gets a breezy reply announcing a surprise engagement."
}
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,443 @@
== ohenry: 97 story units, 839 scenes; rule: >= 5 scenes, >= 4 units, no unit over 50%
scenes labelled: 475 (57%)
PASS pretence 52 scenes 12 units top unit 15%
PASS benefactor 48 scenes 14 units top unit 17%
PASS home_unseen 47 scenes 11 units top unit 15%
PASS station 47 scenes 10 units top unit 17%
PASS compromise_for_money 38 scenes 13 units top unit 18%
PASS newcomer 32 scenes 8 units top unit 22%
PASS sure_thing 30 scenes 7 units top unit 23%
PASS sacrifice 25 scenes 8 units top unit 28%
PASS rival 24 scenes 6 units top unit 29%
PASS despised 20 scenes 7 units top unit 30%
PASS pressed_to_wrong 19 scenes 5 units top unit 32%
PASS wrongly_judged 19 scenes 7 units top unit 26%
PASS sign 17 scenes 5 units top unit 35%
strings 15 scenes 4 units top unit 53%
PASS unspoken 13 scenes 4 units top unit 38%
overlooked 9 scenes 3 units top unit 67%
PASS homecoming 8 scenes 4 units top unit 50%
PASS patron 8 scenes 4 units top unit 50%
habit 4 scenes 3 units top unit 50%
-> 16 recurring situations of 19 present
== wharton: 10 story units, 262 scenes; rule: >= 5 scenes, >= 3 units, no unit over 50%
scenes labelled: 129 (49%)
PASS caught_out 12 scenes 4 units top unit 50%
PASS compromise_for_money 12 scenes 4 units top unit 50%
PASS past_comes_back 12 scenes 3 units top unit 50%
PASS what_they_hid 10 scenes 6 units top unit 20%
PASS peace_at_home 8 scenes 5 units top unit 38%
PASS newcomer 8 scenes 3 units top unit 50%
PASS rival 8 scenes 4 units top unit 50%
PASS power_over_you 8 scenes 4 units top unit 50%
PASS sacrifice 8 scenes 5 units top unit 38%
PASS owning_up 8 scenes 4 units top unit 38%
PASS home_unseen 7 scenes 4 units top unit 43%
PASS go_between 6 scenes 3 units top unit 50%
PASS waiting 6 scenes 3 units top unit 50%
PASS own_words_back 6 scenes 3 units top unit 50%
PASS strings 5 scenes 4 units top unit 40%
PASS their_secret 5 scenes 3 units top unit 40%
-> 16 recurring situations of 16 present
== jacobs: 12 story units, 157 scenes; rule: >= 5 scenes, >= 3 units, no unit over 50%
scenes labelled: 137 (87%)
PASS your_scheme 23 scenes 8 units top unit 39%
PASS dread 12 scenes 4 units top unit 42%
rival 11 scenes 3 units top unit 55%
power_over_you 11 scenes 3 units top unit 82%
hiding_from_close 10 scenes 2 units top unit 80%
PASS caught_out 10 scenes 5 units top unit 40%
PASS let_another_take_blame 8 scenes 5 units top unit 50%
strings 8 scenes 2 units top unit 62%
past_comes_back 8 scenes 3 units top unit 62%
peace_at_home 5 scenes 2 units top unit 60%
PASS pressed_to_wrong 5 scenes 4 units top unit 40%
after_your_money 5 scenes 2 units top unit 60%
PASS cant_prove_it 5 scenes 3 units top unit 40%
pretence 5 scenes 2 units top unit 80%
unwelcome_in_home 4 scenes 3 units top unit 50%
newcomer 4 scenes 2 units top unit 50%
owning_up 3 scenes 2 units top unit 67%
-> 6 recurring situations of 17 present
== holmes: 12 story units, 391 scenes; rule: >= 5 scenes, >= 3 units, no unit over 50%
scenes labelled: 232 (59%)
PASS against_the_verdict 18 scenes 5 units top unit 44%
PASS sure_thing 17 scenes 3 units top unit 35%
PASS protecting_hunted 14 scenes 4 units top unit 29%
PASS not_who_they_seem 12 scenes 5 units top unit 25%
newcomer 12 scenes 2 units top unit 50%
PASS outmatched 11 scenes 5 units top unit 27%
PASS plea_for_help 10 scenes 7 units top unit 20%
PASS gone_missing 10 scenes 4 units top unit 40%
warning 10 scenes 3 units top unit 60%
PASS caught_out 9 scenes 4 units top unit 44%
PASS mercy_or_law 9 scenes 5 units top unit 22%
wrongly_judged 9 scenes 5 units top unit 56%
PASS pretence 7 scenes 3 units top unit 43%
PASS used 7 scenes 3 units top unit 43%
PASS in_your_keeping 7 scenes 3 units top unit 43%
kept_dependent 7 scenes 3 units top unit 57%
seen_too_much 7 scenes 3 units top unit 57%
PASS past_comes_back 6 scenes 3 units top unit 33%
PASS orders_without_reasons 6 scenes 4 units top unit 50%
PASS draw_it_out 6 scenes 3 units top unit 50%
PASS too_late 6 scenes 4 units top unit 33%
PASS patron 5 scenes 3 units top unit 40%
on_watch 5 scenes 2 units top unit 60%
their_secret 5 scenes 3 units top unit 60%
PASS hiding_from_close 5 scenes 3 units top unit 40%
let_another_take_blame 5 scenes 3 units top unit 60%
at_their_mercy 4 scenes 2 units top unit 75%
cant_prove_it 3 scenes 2 units top unit 67%
-> 18 recurring situations of 28 present
== bierce: 26 story units, 299 scenes; rule: >= 5 scenes, >= 3 units, no unit over 50%
scenes labelled: 201 (67%)
PASS courage_doubted 20 scenes 8 units top unit 20%
PASS dread 17 scenes 7 units top unit 24%
PASS on_watch 13 scenes 7 units top unit 23%
PASS duty_against_love 13 scenes 5 units top unit 38%
PASS unintended_harm 13 scenes 8 units top unit 23%
PASS go_and_look 11 scenes 3 units top unit 45%
PASS condemned 8 scenes 3 units top unit 50%
PASS orders_without_reasons 8 scenes 3 units top unit 50%
PASS strings 7 scenes 3 units top unit 43%
PASS safe_while_others_suffer 7 scenes 4 units top unit 43%
PASS swept_along 7 scenes 3 units top unit 43%
PASS past_comes_back 7 scenes 6 units top unit 29%
PASS plea_for_help 6 scenes 4 units top unit 50%
PASS trapped 6 scenes 3 units top unit 50%
PASS isolation 6 scenes 3 units top unit 33%
PASS wrongly_judged 6 scenes 4 units top unit 50%
PASS at_their_mercy 6 scenes 3 units top unit 50%
PASS sacrifice 6 scenes 3 units top unit 50%
PASS warning 6 scenes 3 units top unit 50%
PASS unbelievable_truth 5 scenes 5 units top unit 20%
PASS not_who_they_seem 5 scenes 3 units top unit 40%
PASS too_late 5 scenes 4 units top unit 40%
PASS losing_them 5 scenes 5 units top unit 20%
PASS grief 5 scenes 3 units top unit 40%
newcomer 3 scenes 3 units top unit 33%
-> 24 recurring situations of 25 present
== chekhov: 21 story units, 228 scenes; rule: >= 5 scenes, >= 3 units, no unit over 50%
scenes labelled: 129 (57%)
PASS dead_end 15 scenes 7 units top unit 20%
PASS outside_looking_in 14 scenes 6 units top unit 36%
dread 11 scenes 4 units top unit 64%
PASS power_over_you 10 scenes 7 units top unit 20%
grease 9 scenes 4 units top unit 67%
overlooked 9 scenes 3 units top unit 78%
grief 9 scenes 4 units top unit 56%
cover_up_spiral 9 scenes 3 units top unit 67%
PASS station 8 scenes 3 units top unit 50%
too_late 7 scenes 3 units top unit 57%
PASS family_against_your_path 7 scenes 3 units top unit 43%
far_from_home 6 scenes 3 units top unit 67%
losing_them 6 scenes 2 units top unit 50%
death_as_burden 5 scenes 2 units top unit 60%
home_unseen 4 scenes 2 units top unit 75%
-> 5 recurring situations of 15 present
== maupassant: 12 story units, 137 scenes; rule: >= 5 scenes, >= 3 units, no unit over 50%
scenes labelled: 92 (67%)
PASS cover_up_spiral 12 scenes 3 units top unit 50%
PASS bow_for_your_living 11 scenes 3 units top unit 45%
PASS trapped 9 scenes 3 units top unit 44%
death_as_burden 8 scenes 2 units top unit 62%
revenge 7 scenes 3 units top unit 57%
far_from_home 7 scenes 3 units top unit 57%
pretence 6 scenes 3 units top unit 67%
guilt_that_returns 6 scenes 3 units top unit 67%
isolation 6 scenes 3 units top unit 67%
unspoken 6 scenes 2 units top unit 67%
PASS mistook_them 5 scenes 4 units top unit 40%
changed 5 scenes 3 units top unit 60%
called_to_account 4 scenes 3 units top unit 50%
-> 4 recurring situations of 13 present
== poe: 22 story units, 369 scenes; rule: >= 5 scenes, >= 3 units, no unit over 50%
scenes labelled: 253 (69%)
PASS self_betrayal 35 scenes 6 units top unit 26%
PASS trapped 32 scenes 5 units top unit 38%
PASS at_their_mercy 15 scenes 3 units top unit 47%
unbelievable_truth 15 scenes 6 units top unit 60%
outmatched 14 scenes 2 units top unit 86%
used 14 scenes 2 units top unit 71%
mirror_rival 13 scenes 2 units top unit 77%
revenge 13 scenes 3 units top unit 62%
warning 13 scenes 4 units top unit 69%
dread 13 scenes 6 units top unit 62%
safe_while_others_suffer 12 scenes 3 units top unit 75%
PASS guilt_that_returns 11 scenes 4 units top unit 45%
PASS gone_missing 10 scenes 4 units top unit 50%
PASS your_own_way 10 scenes 3 units top unit 50%
promised_elsewhere 9 scenes 2 units top unit 78%
PASS changed 7 scenes 4 units top unit 43%
losing_them 7 scenes 3 units top unit 57%
after_your_money 5 scenes 2 units top unit 60%
PASS caught_out 5 scenes 4 units top unit 40%
-> 8 recurring situations of 19 present
== lawson: 52 story units, 308 scenes; rule: >= 5 scenes, >= 3 units, no unit over 50%
scenes labelled: 210 (68%)
PASS debt_due 15 scenes 5 units top unit 33%
PASS work_against_family 15 scenes 8 units top unit 27%
PASS freeloading 15 scenes 8 units top unit 20%
PASS looked_down_on 9 scenes 4 units top unit 44%
PASS against_the_verdict 9 scenes 3 units top unit 44%
PASS death_as_burden 9 scenes 4 units top unit 44%
PASS the_butt 9 scenes 4 units top unit 44%
PASS outmatched 8 scenes 3 units top unit 50%
PASS vouching 8 scenes 3 units top unit 50%
PASS changed 8 scenes 6 units top unit 25%
PASS sunk_cost 7 scenes 5 units top unit 29%
PASS replaceable 7 scenes 5 units top unit 43%
PASS stringing_along 7 scenes 3 units top unit 43%
PASS old_friend 6 scenes 3 units top unit 50%
PASS too_late 6 scenes 6 units top unit 17%
PASS small_against_big 6 scenes 4 units top unit 50%
PASS plea_for_help 6 scenes 5 units top unit 33%
PASS standoff 6 scenes 4 units top unit 50%
PASS too_young 6 scenes 4 units top unit 33%
PASS no_work 6 scenes 6 units top unit 17%
PASS temptation_tonight 6 scenes 6 units top unit 17%
PASS beyond_your_means 6 scenes 4 units top unit 50%
PASS caught_out 5 scenes 3 units top unit 40%
PASS stay_or_go 5 scenes 5 units top unit 20%
PASS caught_between 5 scenes 3 units top unit 40%
PASS homecoming 5 scenes 4 units top unit 40%
PASS runaround 5 scenes 4 units top unit 40%
PASS grab_more 5 scenes 4 units top unit 40%
-> 28 recurring situations of 28 present
== winesburg: 24 story units, 284 scenes; rule: >= 5 scenes, >= 3 units, no unit over 50%
scenes labelled: 163 (57%)
PASS reputation 21 scenes 14 units top unit 14%
PASS closeness 17 scenes 11 units top unit 18%
PASS unspoken 12 scenes 9 units top unit 17%
PASS leave_for_bigger 11 scenes 8 units top unit 18%
PASS confession 11 scenes 6 units top unit 18%
PASS obsession 9 scenes 7 units top unit 33%
PASS unwanted_lesson 9 scenes 8 units top unit 22%
PASS through_the_child 9 scenes 5 units top unit 33%
PASS outside_looking_in 8 scenes 7 units top unit 25%
PASS dead_end 8 scenes 5 units top unit 25%
PASS waiting 7 scenes 5 units top unit 43%
PASS isolation 7 scenes 4 units top unit 43%
PASS home_unseen 7 scenes 6 units top unit 29%
PASS break_out 7 scenes 7 units top unit 14%
PASS rival 7 scenes 4 units top unit 43%
PASS self_betrayal 7 scenes 4 units top unit 43%
PASS pretence 6 scenes 5 units top unit 33%
-> 17 recurring situations of 17 present
== keefe: 23 story units, 912 scenes; rule: >= 5 scenes, >= 3 units, no unit over 50%
scenes labelled: 650 (71%)
PASS threaten_to_leave 36 scenes 8 units top unit 33%
PASS sure_thing 32 scenes 7 units top unit 25%
PASS misreading_the_room 31 scenes 10 units top unit 23%
PASS whose_fault 26 scenes 14 units top unit 15%
PASS stringing_along 26 scenes 6 units top unit 35%
PASS ask_for_more 25 scenes 7 units top unit 40%
PASS courage_doubted 25 scenes 13 units top unit 16%
PASS saving_face 23 scenes 13 units top unit 17%
PASS warning 23 scenes 7 units top unit 35%
PASS power_over_you 20 scenes 9 units top unit 25%
PASS the_butt 20 scenes 8 units top unit 20%
PASS sent_down 20 scenes 9 units top unit 25%
PASS suspicion 17 scenes 6 units top unit 29%
PASS boss_in_private_life 16 scenes 7 units top unit 25%
PASS household_money 16 scenes 6 units top unit 44%
PASS big_moment 15 scenes 6 units top unit 27%
PASS newly_raised 14 scenes 6 units top unit 43%
PASS decision_from_above 14 scenes 9 units top unit 29%
PASS called_to_account 14 scenes 7 units top unit 29%
PASS rushing_in 14 scenes 5 units top unit 36%
PASS spouse_earns_more 14 scenes 4 units top unit 43%
PASS newcomer 13 scenes 6 units top unit 38%
PASS temptation_tonight 12 scenes 6 units top unit 25%
PASS far_from_home 12 scenes 5 units top unit 42%
PASS on_watch 12 scenes 7 units top unit 33%
PASS talking_yourself_up 12 scenes 6 units top unit 33%
PASS peace_at_home 11 scenes 6 units top unit 36%
PASS unwelcome_in_home 11 scenes 4 units top unit 36%
PASS new_parent 11 scenes 6 units top unit 45%
PASS tight_fisted 10 scenes 5 units top unit 50%
PASS work_against_family 10 scenes 6 units top unit 50%
PASS revenge 10 scenes 5 units top unit 50%
PASS own_words_back 10 scenes 4 units top unit 30%
PASS old_friend 10 scenes 7 units top unit 30%
PASS gone_missing 10 scenes 4 units top unit 40%
PASS hard_lot 10 scenes 6 units top unit 30%
PASS caught_out 9 scenes 5 units top unit 33%
PASS shirking 8 scenes 5 units top unit 50%
PASS condemned 8 scenes 6 units top unit 25%
PASS your_record 8 scenes 4 units top unit 50%
PASS needled 7 scenes 6 units top unit 29%
PASS caught_between 5 scenes 3 units top unit 40%
-> 42 recurring situations of 42 present
== plaintales: 35 story units, 287 scenes; rule: >= 5 scenes, >= 3 units, no unit over 50%
scenes labelled: 184 (64%)
PASS newcomer 13 scenes 7 units top unit 31%
PASS rival 12 scenes 4 units top unit 33%
PASS kind_lie 10 scenes 4 units top unit 30%
PASS revenge 9 scenes 4 units top unit 33%
PASS wrongly_judged 8 scenes 4 units top unit 38%
PASS carrying_the_load 8 scenes 6 units top unit 25%
PASS patron 7 scenes 5 units top unit 29%
PASS boss_in_private_life 7 scenes 4 units top unit 29%
PASS gatekeeper 7 scenes 3 units top unit 43%
PASS caught_between 6 scenes 5 units top unit 33%
PASS promised_elsewhere 6 scenes 3 units top unit 50%
PASS saving_them_from_themselves 6 scenes 5 units top unit 33%
PASS knowledge_below 6 scenes 4 units top unit 33%
PASS dread 6 scenes 3 units top unit 50%
PASS reputation 6 scenes 6 units top unit 17%
PASS decision_from_above 6 scenes 4 units top unit 33%
PASS breaking_point 6 scenes 5 units top unit 33%
PASS home_unseen 5 scenes 3 units top unit 40%
PASS overlooked 5 scenes 4 units top unit 40%
PASS too_late 5 scenes 5 units top unit 20%
PASS family_against_your_path 5 scenes 4 units top unit 40%
PASS power_over_you 5 scenes 3 units top unit 40%
PASS seeing_and_silent 5 scenes 4 units top unit 40%
PASS power_behind 5 scenes 4 units top unit 40%
PASS fell_into_your_hands 5 scenes 3 units top unit 40%
PASS sign 5 scenes 3 units top unit 40%
PASS sacrifice 5 scenes 4 units top unit 40%
PASS self_betrayal 5 scenes 3 units top unit 40%
-> 28 recurring situations of 28 present
== wallingford: 6 story units, 334 scenes; rule: >= 5 scenes, >= 3 units, no unit over 50%
scenes labelled: 191 (57%)
PASS selling_a_promise 19 scenes 6 units top unit 26%
PASS fever 17 scenes 4 units top unit 41%
PASS sunk_cost 14 scenes 5 units top unit 50%
PASS your_scheme 13 scenes 4 units top unit 38%
PASS sure_thing 11 scenes 5 units top unit 27%
PASS pretence 10 scenes 5 units top unit 50%
PASS going_straight 10 scenes 6 units top unit 40%
PASS after_your_money 9 scenes 4 units top unit 44%
PASS caught_out 9 scenes 4 units top unit 44%
PASS freeloading 9 scenes 4 units top unit 33%
PASS let_inside 8 scenes 4 units top unit 38%
PASS debt_due 8 scenes 3 units top unit 50%
PASS false_friend 8 scenes 6 units top unit 25%
PASS compromise_for_money 8 scenes 4 units top unit 50%
PASS outmatched 7 scenes 3 units top unit 43%
PASS against_the_verdict 7 scenes 5 units top unit 29%
PASS small_against_big 7 scenes 4 units top unit 43%
PASS sell_before_crash 6 scenes 5 units top unit 33%
PASS sham_turns_real 6 scenes 3 units top unit 50%
PASS what_they_hid 5 scenes 4 units top unit 40%
-> 20 recurring situations of 20 present
== torchy: 54 story units, 738 scenes; rule: >= 5 scenes, >= 3 units, no unit over 50%
scenes labelled: 559 (76%)
PASS not_good_enough 62 scenes 12 units top unit 23%
PASS boss_family 59 scenes 16 units top unit 15%
PASS gatekeeper 38 scenes 18 units top unit 16%
PASS saving_them_from_themselves 35 scenes 7 units top unit 23%
PASS go_between 32 scenes 8 units top unit 31%
PASS stand_in 32 scenes 8 units top unit 19%
PASS backing_someone 27 scenes 12 units top unit 15%
PASS the_butt 21 scenes 5 units top unit 43%
PASS rival 21 scenes 5 units top unit 29%
PASS benefactor 19 scenes 7 units top unit 21%
PASS looked_down_on 18 scenes 6 units top unit 33%
PASS newly_raised 16 scenes 5 units top unit 31%
PASS called_to_account 15 scenes 8 units top unit 20%
PASS petty_supervisor 15 scenes 9 units top unit 20%
PASS against_the_verdict 15 scenes 4 units top unit 47%
PASS second_chance 15 scenes 4 units top unit 40%
PASS mercy_or_law 13 scenes 3 units top unit 46%
PASS old_friend 12 scenes 8 units top unit 17%
PASS pretence 12 scenes 4 units top unit 33%
PASS mistook_them 11 scenes 5 units top unit 27%
PASS station 11 scenes 5 units top unit 45%
PASS protecting_hunted 10 scenes 3 units top unit 50%
PASS out_of_place 9 scenes 7 units top unit 33%
PASS power_over_you 9 scenes 5 units top unit 33%
PASS pressed_to_wrong 8 scenes 3 units top unit 50%
PASS their_secret 7 scenes 4 units top unit 43%
PASS bottom_rung 6 scenes 5 units top unit 33%
PASS looking_the_part 6 scenes 4 units top unit 33%
PASS boss_in_private_life 5 scenes 4 units top unit 40%
-> 29 recurring situations of 29 present
== nobody: 23 story units, 157 scenes; rule: >= 5 scenes, >= 3 units, no unit over 50%
scenes labelled: 142 (90%)
PASS needled 18 scenes 10 units top unit 22%
PASS unwelcome_in_home 16 scenes 8 units top unit 44%
PASS family_against_your_path 16 scenes 8 units top unit 25%
PASS answering_for_them 15 scenes 8 units top unit 27%
PASS beyond_your_means 12 scenes 6 units top unit 33%
PASS standoff 11 scenes 6 units top unit 27%
PASS peace_at_home 8 scenes 6 units top unit 38%
PASS out_of_place 8 scenes 5 units top unit 38%
PASS newly_raised 7 scenes 3 units top unit 43%
PASS home_unseen 7 scenes 4 units top unit 43%
PASS looked_down_on 7 scenes 4 units top unit 43%
PASS saving_face 6 scenes 6 units top unit 17%
PASS misreading_the_room 6 scenes 5 units top unit 33%
PASS sure_thing 5 scenes 4 units top unit 40%
-> 14 recurring situations of 14 present
== lorimer: 20 story units, 186 scenes; rule: >= 5 scenes, >= 3 units, no unit over 50%
scenes labelled: 106 (57%)
PASS stay_or_go 8 scenes 4 units top unit 38%
PASS looking_the_part 8 scenes 4 units top unit 50%
PASS bottom_rung 7 scenes 4 units top unit 43%
PASS shirking 7 scenes 3 units top unit 43%
PASS vouching 7 scenes 3 units top unit 43%
PASS temptation_tonight 6 scenes 3 units top unit 50%
PASS beyond_your_means 6 scenes 3 units top unit 50%
PASS sure_thing 6 scenes 3 units top unit 50%
PASS talking_yourself_up 6 scenes 3 units top unit 50%
PASS hard_sell 6 scenes 3 units top unit 50%
PASS sizing_up_match 6 scenes 3 units top unit 33%
PASS in_charge 5 scenes 4 units top unit 40%
PASS caught_out 5 scenes 4 units top unit 40%
PASS loose_tongue 5 scenes 3 units top unit 40%
PASS power_over_you 5 scenes 3 units top unit 40%
PASS caught_between 5 scenes 3 units top unit 40%
difficult_customer 4 scenes 3 units top unit 50%
losing_ground 4 scenes 3 units top unit 50%
-> 16 recurring situations of 18 present
== aesop: 313 story units, 313 scenes; rule: >= 5 scenes, >= 13 units, no unit over 50%
scenes labelled: 253 (81%)
PASS shaky_alliance 33 scenes 33 units top unit 3%
PASS false_friend 22 scenes 22 units top unit 5%
PASS envy 17 scenes 17 units top unit 6%
PASS kicking_while_down 15 scenes 15 units top unit 7%
PASS plea_for_help 14 scenes 14 units top unit 7%
PASS at_their_mercy 14 scenes 14 units top unit 7%
PASS whose_fault 14 scenes 14 units top unit 7%
PASS hard_lot 14 scenes 14 units top unit 7%
PASS pretence 14 scenes 14 units top unit 7%
PASS stay_or_go 14 scenes 14 units top unit 7%
PASS needled 13 scenes 13 units top unit 8%
PASS rushing_in 13 scenes 13 units top unit 8%
PASS grab_more 13 scenes 13 units top unit 8%
PASS talking_yourself_up 13 scenes 13 units top unit 8%
PASS carrying_the_load 13 scenes 13 units top unit 8%
small_against_big 6 scenes 6 units top unit 17%
warning 6 scenes 6 units top unit 17%
your_record 5 scenes 5 units top unit 20%
-> 15 recurring situations of 18 present
== 166 entries (82 from v2, 84 new): found in how many of the 17 corpora
8: pretence, caught_out
7: power_over_you, newcomer
6: rival, sure_thing, home_unseen
5: dread, warning, too_late
4: strings, past_comes_back, wrongly_judged, peace_at_home, sacrifice, at_their_mercy, plea_for_help, against_the_verdict, outmatched, revenge, caught_between
3: compromise_for_money, after_your_money, their_secret, station, unwelcome_in_home, patron, pressed_to_wrong, unspoken, overlooked, on_watch, trapped, isolation, gone_missing, losing_them, self_betrayal, called_to_account, family_against_your_path, far_from_home, death_as_burden, changed, stay_or_go, newly_raised, boss_in_private_life, beyond_your_means, small_against_big, needled, the_butt, talking_yourself_up, looked_down_on, old_friend, temptation_tonight
2: your_scheme, hiding_from_close, what_they_hid, let_another_take_blame, cant_prove_it, benefactor, go_between, owning_up, own_words_back, homecoming, waiting, sign, protecting_hunted, safe_while_others_suffer, orders_without_reasons, courage_doubted, condemned, mercy_or_law, unbelievable_truth, not_who_they_seem, used, guilt_that_returns, cover_up_spiral, dead_end, mistook_them, outside_looking_in, grief, promised_elsewhere, bottom_rung, decision_from_above, gatekeeper, carrying_the_load, shirking, looking_the_part, your_record, whose_fault, rushing_in, debt_due, sunk_cost, grab_more, saving_face, misreading_the_room, out_of_place, false_friend, vouching, freeloading, standoff, reputation, saving_them_from_themselves, work_against_family, stringing_along, hard_lot
1: despised, habit, duty_against_love, go_and_look, swept_along, seen_too_much, mirror_rival, draw_it_out, in_your_keeping, unintended_harm, grease, bow_for_your_living, kept_dependent, your_own_way, ask_for_more, threaten_to_leave, sent_down, petty_supervisor, boss_family, stand_in, power_behind, knowledge_below, breaking_point, in_charge, difficult_customer, hard_sell, losing_ground, replaceable, no_work, too_young, backing_someone, big_moment, fever, sell_before_crash, selling_a_promise, let_inside, going_straight, sham_turns_real, tight_fisted, household_money, spouse_earns_more, suspicion, shaky_alliance, answering_for_them, seeing_and_silent, kind_lie, fell_into_your_hands, unwanted_lesson, new_parent, through_the_child, not_good_enough, second_chance, sizing_up_match, leave_for_bigger, confession, closeness, obsession, break_out, envy, kicking_while_down, runaround, loose_tongue
+107
View File
@@ -0,0 +1,107 @@
# Chekhov reference set: *The Schoolmistress, and Other Stories* (tr. Garnett, 1918)
A hand-made comparison baseline for the story-to-pack pipeline, the fourth beside O. Henry
(`../v2/claude/`), Wharton (`../wharton/`) and Jacobs (`../jacobs/`). Claude wrote every summary,
predicament, group and option after reading the scenes. **No local or hosted inference was used.**
Compare the local-model runs against it, but do not treat it as ground truth. It is one careful
reading.
| File | What it is |
| --- | --- |
| `corpus/schoolmistress-and-other-stories.txt` | Project Gutenberg #1732, plain text (public domain) |
| `split_gutenberg.py` | → `stories.json` (21 stories, split on the contents titles) and `chunks.json` (228 scenes, same 320-word paragraph rule as `../chunk.py`) |
| `dump.py` | `python3 dump.py A B` prints scenes A..B for reading |
| `claude/batches/sNN.json` | per story: `{chunk, story, summary, predicament}`, the same schema as `../jacobs/claude/batches/` |
| `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 Jacobs' `build.py` unchanged, because its paths are already relative. |
| `claude/page.py` | → `claude/REFERENCE.html`, the readable page |
Rebuild: `python3 split_gutenberg.py && cd claude && python3 build.py && python3 page.py`.
## What is in it
- **228 predicaments**, one sentence each (median 20 words, min 15, max 23). They follow the
`redescribe.py` rules: no names, jobs, places or story-only objects. The `topic_words` leak check
flags 24 of 228. Twenty of those are role or relationship words (father, guest, servant, customer,
newcomer, rival, neighbour …), kept on purpose because the design's cast is made of roles. The
other four are list words used in another sense: "flat" (as in dull), "station" (as in rank),
"room" and "dinner".
- **17 groups**, each a situation that recurs in **two or more stories**. Each scene sits in at most
one group. **129 are assigned and 99 (43%) fit nothing that recurs.** That unassigned share is
three times Jacobs' 13%, and it is the corpus, not an oversight (see below).
- Under the catalogue's single recurrence rule (`../catalogue/recurrence.log`: at least 5 scenes,
at least 3 stories, no story over 50%), **6 of the 17 pass**: G01, G04, G05, G10, G11 and G13.
Three groups span only two stories (G08, G12, G16). The other eight are held back by one story
holding more than half their members.
## Options
3 to 5 per group, 73 in all. 61 come from what someone in a scene did (`scene:N`), 6 are
archetypes and 6 fill gaps. **8 scene options cite a scene outside their own group**, and
`groups.json` marks each one `in_group: false`. As in Wharton, most of these come from the scene
next to a member, where the character acts (105 and 96 for G06, 146 and 150 for G07, 130 for
G16).
## Moves
Moves are spine paths with a direction only (`+`, `-`, `risk`, `set`). There are no magnitudes,
as the design requires. **Skill labels proposed for this corpus: `patience` and `tact`.**
Jacobs' `nerve` and `cunning` do not fit. Almost nobody in these stories dares or schemes. What
people do is endure (the old ferryman, the old messenger, the schoolmistress) or handle their
betters (the cattle dealer's tips, the clerk's holiday letter, the craftsman rehearsing his
grovelling). Two directions are unusual here: `patience +` often goes with `standing -` or
`relationships.* -`, because enduring costs something, and several options set a flag
(`resigned`, `hardened`, `grief_unspoken`) rather than move a number.
## Stage
Stage comes from protagonist standing, judged **per story, not per scene**, as in Jacobs
(`STANDING` in `groups_src.py`). The corpus leans low and middle: 8 low, 9 middle, 4 high. Three
calls are judgement: *Champagne*'s narrator is a poor noble in a low post (middle); *On Official
Duty* is read from the young official's side, not the old messenger's (middle); *The
Head-Gardener's Story* is read from the gardener, not the buyers (low).
## How this corpus differs
**Much of it is plotless, and that shows in the unassigned count.** Chekhov gives whole stories to
a mood or a line of thought. *A Nervous Breakdown* is 33 scenes of one young man's night out and
collapse, and 30 of them fit no recurring group. The other large blocks are *After the Theatre*
(4 of 4, a girl's causeless joy), *The Bet* (8 of 10, a single contrived wager), *The
Head-Gardener's Story* (6 of 7, a told legend) and *The Cattle-Dealers* (15 of 25, a journey with
long passages of nothing happening). Forcing these into groups would have produced mood groups
("a young man broods at night"), which is exactly what the pipeline is supposed to reject.
**Where it does recur, the situations are mostly new to the catalogue.** The existing 36 entries
come from courtship, secrets and schemes. Chekhov's recurring material is endurance, grief and
being small:
| Group | Catalogue entry |
| --- | --- |
| G01 Stuck in a life that has stopped meaning anything | **new** |
| G02 A grief nobody will hear | **new** (not `unspoken`, which is about lovers) |
| G03 A glimpse of the life you are missing | **new** |
| G04 On the outside of other people's warmth | **new** |
| G05 Talked down to by those above you | overlaps `power_over_you` |
| G06 Nothing moves without a little something | **new** (not `compromise_for_money`: the payment is expected, not a betrayal of standards) |
| G07 Your work goes unrecognised | overlaps `overlooked` |
| G08 A marriage gone numb | overlaps `home_unseen` |
| G09 Too late to make it right | **new** (next to `owning_up`, but there is nobody left to own up to) |
| G10 Drawn to someone of another rank | overlaps `station` |
| G11 Want nothing and nothing can hurt you | **new** |
| G12 Racing to save someone who is slipping away | **new** |
| G13 At odds with a parent over the life you chose | **new** (partly `peace_at_home`) |
| G14 Frightened by something you cannot explain | overlaps `dread` |
| G15 Far from home and your own people | **new** (the reverse of `homecoming`; partly `newcomer`) |
| G16 A stranger's death lands on you | **new** |
| G17 Covering up a disgrace | overlaps `hiding_from_close` and `past_comes_back` |
That is 11 new situation types and 6 overlaps. The predicaments are written to move to other
settings. G06 needs only someone who controls an ordinary service, and G04 only a crowd that is
celebrating without you.
**The groups are thinner and broader than Jacobs'.** Several (G02, G07, G14) are one story plus
two or three scenes from others, so a story holds more than half their members. G05 is the
broadest group in the set, with members from 7 stories, and is closer to a register than the
others are: in this corpus almost everyone is talked down to by somebody. A tool should expect a
Chekhov-like corpus to give fewer, looser situations per story, and it will need more stories than
the design's 20-30 to fill a pack.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
[
{"chunk": 0, "story": 0, "summary": "A village schoolmistress of thirteen years rides back from town with her monthly pay; the spring morning means nothing to her, and she can imagine no future but the same school and the same road.", "predicament": "A woman who has done the same dull duty for years can no longer imagine any other life for herself."},
{"chunk": 1, "story": 0, "summary": "She has nearly forgotten her childhood family, and her brother has stopped writing; on the road a wealthy neighbour who once examined her pupils overtakes her cart and greets her.", "predicament": "A woman cut off from the family she came from has almost forgotten she ever had another life."},
{"chunk": 2, "story": 0, "summary": "The neighbour is a handsome, idle, hard-drinking bachelor who gave her pupils only top marks; she found him attractive and was embarrassed sitting beside him.", "predicament": "A woman of small means is drawn to a charming man above her, and is flustered in his company."},
{"chunk": 3, "story": 0, "summary": "Jolting along a ruined road, she broods on the officials who ignore her complaints about a violent, rude caretaker, and on how nobody will hear her.", "predicament": "A woman who has complained for years about an abuse at her work finds nobody above her will listen."},
{"chunk": 4, "story": 0, "summary": "She cannot understand why a rich man would choose to live in this mud; he laughs at the road, says he is bored at home, and thinks his small gifts make him useful.", "predicament": "A struggling woman watches a comfortable man shrug off the hardships she lives with, and wonders why he stays."},
{"chunk": 5, "story": 0, "summary": "Smelling drink on him, she pities his slow ruin and imagines saving him as his wife, then feels how absurd it is that they could ever be equals; he drives off.", "predicament": "A lonely woman imagines devoting herself to a man above her, then sees how impossible it is that they could ever be equals."},
{"chunk": 6, "story": 0, "summary": "She reviews her comfortless life: no firewood without begging a coarse overseer, headaches, fear of every official, no affection and no friends.", "predicament": "A woman worn down by a thankless routine feels herself growing old and coarse, with no affection anywhere in her life."},
{"chunk": 7, "story": 0, "summary": "She took the post from necessity, never felt a vocation, and endures it like a patient cart-horse while livelier people give up; the cart keeps being turned back by fences and ditches.", "predicament": "A woman who took up a hard duty only to live keeps enduring it long after more spirited people have quit."},
{"chunk": 8, "story": 0, "summary": "At a noisy tavern a drunk swears in front of her, is rebuked, apologises, and the others call her a good young lady; she drinks her tea content.", "predicament": "A woman who feels unvalued among rough company is briefly treated with a little respect, and is glad of it."},
{"chunk": 9, "story": 0, "summary": "Her driver repeats gossip that officials pocketed money for a school; she denies it, but sees that he, the villagers and the overseer all believe she steals the firewood money too.", "predicament": "A woman who handles other people's small sums finds they all quietly believe she is cheating them."},
{"chunk": 10, "story": 0, "summary": "Her driver insists on fording the swollen river rather than taking the bridge the rich neighbour uses, and the horse wades in up to its belly.", "predicament": "A woman at the mercy of a stubborn companion is dragged through a needless hardship to save a little time."},
{"chunk": 11, "story": 0, "summary": "Soaked and with her supplies ruined, she waits at the railway crossing; a lady on the passing train looks like her mother, and for a moment her whole lost childhood returns.", "predicament": "A worn-out woman glimpses a stranger who recalls the life she lost, and is flooded with longing for it."},
{"chunk": 12, "story": 0, "summary": "Weeping, she imagines happiness and greets the passing neighbour as an equal, as if the years had been a dream, until her driver calls her and it all vanishes.", "predicament": "A woman caught up in a sudden dream of happiness is called back to her ordinary life, and the feeling vanishes."}
]
@@ -0,0 +1,35 @@
[
{"chunk": 13, "story": 1, "summary": "Two friends persuade a scrupulous law student to come with them to a street of brothels; he knows fallen women only from books and pious stories, and goes reluctantly.", "predicament": "A scrupulous young man lets his friends talk him into an outing he knows only from books and privately disapproves of."},
{"chunk": 14, "story": 1, "summary": "Walking out in the first snow, the three stop for vodka; he peers at a bit of cork in his glass and his friend tells him to stop philosophising and live like a human being for one evening.", "predicament": "A cautious young man is teased by livelier companions for brooding when he is meant to be enjoying himself."},
{"chunk": 15, "story": 1, "summary": "Warmed by drink, he envies his friends' easy, balanced cheerfulness and resolves to let himself go for one evening, whatever it costs him.", "predicament": "A man who weighs every step envies his carefree friends and decides, just once, to stop holding himself back."},
{"chunk": 16, "story": 1, "summary": "Humming a song with his friends, he enjoys the snowy night and imagines a dark, secret, dreadful encounter with a guilty, frightened woman.", "predicament": "A young man about to try something forbidden pictures it as dark and thrilling, and cannot wait to see it."},
{"chunk": 17, "story": 1, "summary": "The street turns out brightly lit and noisy, with everyone indifferent to it; his friends clown their way into the first house.", "predicament": "A newcomer finds that a place he imagined as shameful and secret is treated as utterly ordinary by everyone around him."},
{"chunk": 18, "story": 1, "summary": "His friends bow and joke their way into the parlour; he hangs back smiling awkwardly as young women arrive one by one.", "predicament": "A self-conscious man trails his confident friends into a strange place, wishing he could play the fool as easily."},
{"chunk": 19, "story": 1, "summary": "He finds everything tawdry and ordinary, politely buys a girl a drink he will not share, and is scolded by a friend for being fleeced.", "predicament": "A man too polite to refuse is taken advantage of, then scolded by his friend for being so easily fleeced."},
{"chunk": 20, "story": 1, "summary": "In house after house he fixates on the doormen, wondering what lives brought them there; one friend gets drunk and demands they go on to 'the best one'.", "predicament": "A man dragged along by a drunken friend distracts himself by wondering what brought the people around him so low."},
{"chunk": 21, "story": 1, "summary": "His friends dance; he decides the ugliness is a deliberate style, sneers inwardly at how clumsily the women sell themselves, and tells one he is dull because it is dull.", "predicament": "A bored and disgusted guest sits apart from the fun, silently judging everyone in the room while his friends enjoy themselves."},
{"chunk": 22, "story": 1, "summary": "He wants to ask a woman about her life and family but cannot find words; she jokes, says something coarse aloud, and keeps asking him to buy wine.", "predicament": "A well-meaning man longs to ask a stranger about her real life, but cannot find a way that is not insulting."},
{"chunk": 23, "story": 1, "summary": "Repelled, he moves away and stares at the musicians, unable to understand how respectable-looking men can sit there unashamed; the place seems another world.", "predicament": "A man who expected to feel pity feels only disgust, and cannot understand how decent-looking people can stand to be there."},
{"chunk": 24, "story": 1, "summary": "Disgusted, he leaves and announces he is going home, but his tearful, affectionate friend hugs him and drags him into one more house.", "predicament": "A man who wants to go home is guilted by an affectionate friend into staying for one more round."},
{"chunk": 25, "story": 1, "summary": "Ignored in a grander house, he is ashamed to be there and tormented that he feels only hatred for the women, and resolves to try to understand them.", "predicament": "A man who thought himself kind is ashamed to find he feels nothing but contempt for people he meant to pity."},
{"chunk": 26, "story": 1, "summary": "Finding only boredom on every face, he sits beside a tired, thoughtful-looking woman and tries to draw her out; she says she is bored but has nowhere else to go.", "predicament": "A man who wants to rescue someone draws her out, and learns she sees no better place to go."},
{"chunk": 27, "story": 1, "summary": "He tells her begging would be freer; she only asks for porter. Then a man slaps a girl, he rushes to the weeping girl in pity, and recoils when he sees she is drunk.", "predicament": "A man who rushes to comfort someone being mistreated recoils when she turns out not to be the victim he pictured."},
{"chunk": 28, "story": 1, "summary": "Frightened, he flees the house and waits in the falling snow, exhausted and wanting to go home but wanting still more to vent his feelings on his friends.", "predicament": "A shaken man flees an ugly scene and waits outside, torn between going home and having it out with his companions."},
{"chunk": 29, "story": 1, "summary": "He concludes the women are not falling but already ruined and that everyone shares the blame; a drunk passer-by claps him on the shoulder as one of the crowd, and he hears his friend fighting inside.", "predicament": "A man who has seen something he cannot unsee realises his own friends are part of the wrong he is horrified by."},
{"chunk": 30, "story": 1, "summary": "One friend is thrown downstairs after defending a woman from being hit; they calm him and walk home singing, while the student walks behind, judging them.", "predicament": "A man walks home behind friends who have already shrugged off the evening, unable to shake it off himself."},
{"chunk": 31, "story": 1, "summary": "He decides his friends are as bad as slave-owners and murderers who keep a religious fast, their art and science a hypocrite's pretence.", "predicament": "A man decides the friends he admired are hypocrites whose fine talk covers the harm they cheerfully do."},
{"chunk": 32, "story": 1, "summary": "He accuses his friends of murdering the women; one calls him a fool whose look of hatred is worse than the whole street, and both leave him.", "predicament": "A man who denounces his friends for their conduct is called a self-righteous fool and left standing alone."},
{"chunk": 33, "story": 1, "summary": "Walking home alone he is seized by terror, knows a breakdown is coming, and lies imagining himself the brother or father of such a woman.", "predicament": "A sensitive man alone at night feels a familiar collapse coming on, and cannot stop imagining others' misery as his own."},
{"chunk": 34, "story": 1, "summary": "Treating it as his own problem, he sits up methodically recalling every method his acquaintances have tried to save such women.", "predicament": "A man who cannot bear an injustice tries to solve it single-handed overnight by sheer effort of thought."},
{"chunk": 35, "story": 1, "summary": "He sorts past rescue attempts into three kinds, finds the first two always failed, and concludes only marriage has ever worked.", "predicament": "A man looking for a way to help someone concludes that the only remedy that works would cost him his whole life."},
{"chunk": 36, "story": 1, "summary": "He admits he could never marry one, sees the problem is endless, decides the buyers must be saved, and dreams of preaching on the street corner.", "predicament": "A man who realises he cannot make the sacrifice his principles demand looks for a grander, less personal cause instead."},
{"chunk": 37, "story": 1, "summary": "He imagines rebuking passers-by, and in an ecstasy of feeling for others' pain writes letters and makes vows through the night.", "predicament": "A man who feels others' suffering as his own is swept up in a burst of fervour to set the world right."},
{"chunk": 38, "story": 1, "summary": "The inspiration fades; the scale of the problem crushes him, and he remembers he is timid, unpersuasive and insignificant.", "predicament": "A man's burst of zeal collapses as he remembers how small, timid and unheeded he really is."},
{"chunk": 39, "story": 1, "summary": "By daylight he lies motionless in a nameless anguish that makes everything, good or evil, equally loathsome; only the thought that he could kill himself, or that it will pass in three days, soothes him.", "predicament": "A man sunk in a despair that makes everything he cared about seem loathsome clings to the knowledge it will pass."},
{"chunk": 40, "story": 1, "summary": "He paces, sees his haggard face, hides when a friend knocks, weeps, and at dusk runs out into the street dreading the night.", "predicament": "A man in private anguish hides from a friend at his door, then flees into the night rather than face it alone."},
{"chunk": 41, "story": 1, "summary": "He wanders the city, drinks vodka, bares his chest to the wet snow and nearly throws himself off a bridge to trade one pain for another, then goes home and paces till morning.", "predicament": "A man in unbearable distress looks for any other pain to drown it out, and finds nothing works."},
{"chunk": 42, "story": 1, "summary": "His friends find him in torment, begging to be saved; they take him to a polite, cold specialist who begins questioning him.", "predicament": "A man who has reached the end of his strength begs his friends to take him anywhere that can help."},
{"chunk": 43, "story": 1, "summary": "The doctor asks endless questions about heredity and vices while stroking his knees; the patient grows annoyed at being treated as a case.", "predicament": "A man in real anguish is questioned like a specimen by an expert who does not care what upset him."},
{"chunk": 44, "story": 1, "summary": "Hearing them discuss the street coolly, he protests that he is praised for trivial work but called mad for caring about the women, then weeps in pity for everyone.", "predicament": "A man is treated as ill for feeling what everyone around him calmly agrees is a real wrong."},
{"chunk": 45, "story": 1, "summary": "The doctor sedates and examines him; calmer and ashamed, he leaves with prescriptions he has had before and drags himself back to his studies.", "predicament": "A man whose outburst has been soothed away feels ashamed and goes back to his ordinary routine as if nothing happened."}
]
@@ -0,0 +1,9 @@
[
{"chunk": 46, "story": 2, "summary": "An old sledge-driver sits motionless in the falling snow, bent double, having had no fare all day, until an officer hails him.", "predicament": "An old man carrying a fresh grief sits out in the cold at his work, waiting for anyone at all to need him."},
{"chunk": 47, "story": 2, "summary": "Flustered by the traffic and cursed at from all sides, the driver tries to tell his passenger that his son died this week; the man asks what of, then everyone shouts at him to watch the road.", "predicament": "A grieving man tries to tell a customer that his child has just died, and is cut short before he can go on."},
{"chunk": 48, "story": 2, "summary": "The officer shuts his eyes and won't listen; later three rowdy young men haggle him down, squabble over the seats and mock his cap.", "predicament": "A bereaved man takes whatever work comes, however insulting, just to have people near him."},
{"chunk": 49, "story": 2, "summary": "The young men curse and hit him and he laughs along, their abuse easing his loneliness; when he says his son has died, one replies that we shall all die and tells him to hurry.", "predicament": "A man in mourning puts up with abuse from strangers because it is company, and they brush off his loss in a phrase."},
{"chunk": 50, "story": 2, "summary": "He begins to tell them how his son died but they arrive and leave; alone again, his misery returns worse, and a doorman he speaks to only tells him to move on.", "predicament": "A man who needs to speak of his grief searches the passing crowd for one person who will stop and listen."},
{"chunk": 51, "story": 2, "summary": "Giving up, he goes back to the crowded lodging early without enough earned for oats; he tells a young man drinking water that his son is dead.", "predicament": "A man who has given up on strangers goes home and tries one last time to tell someone he knows."},
{"chunk": 52, "story": 2, "summary": "The young man is already asleep; aching to tell the whole story properly, the old man goes out to the stable and tells it all to his horse.", "predicament": "A man with no one who will hear his grief pours it out to the only creature that will stay and listen."}
]
@@ -0,0 +1,10 @@
[
{"chunk": 53, "story": 3, "summary": "The narrator recalls his youth as the official at a remote steppe station, with no woman or company for miles, drinking bad vodka and staring at women's faces in passing train windows.", "predicament": "A restless young man stuck in a remote post with nothing to do stares after passing strangers and drinks away the days."},
{"chunk": 54, "story": 3, "summary": "He and his adoring wife, whom he torments when drunk, wait to see the New Year in with two bottles of real champagne he won in a bet.", "predicament": "A bored man who treats a devoted spouse cruelly waits for one small treat to break the monotony of his life."},
{"chunk": 55, "story": 3, "summary": "He drops the first bottle at midnight; his wife, pale, says it is a bad omen, and after scoffing at her he walks out into the moonlit frost.", "predicament": "A man scoffs at his spouse's fear that a small accident foretells misfortune, then walks off irritated by her."},
{"chunk": 56, "story": 3, "summary": "Walking along the line he tells himself nothing worse can happen: orphaned, expelled, friendless and fit for nothing, his youth has been thrown away.", "predicament": "A man who feels his youth wasted in a dead-end place decides nothing worse can possibly happen to him."},
{"chunk": 57, "story": 3, "summary": "He admits he does not love his wife, whom he married as a boy, and wallows in his misery with a vain, defiant pleasure.", "predicament": "A man tells himself he no longer loves the spouse who adores him, and takes a vain pleasure in his own misery."},
{"chunk": 58, "story": 3, "summary": "Back at the door, his wife joyfully tells him an aunt by marriage has arrived by train, fleeing a tyrannical husband, and begs him to be kind to her.", "predicament": "A man is asked by his spouse to welcome a runaway relative he has never met, and not to be hard on her."},
{"chunk": 59, "story": 3, "summary": "The 'aunt' is young, beautiful, perfumed and plainly dissolute; the dreary room brightens, and he flirts with her at once.", "predicament": "A bored married man is dazzled by a lively, reckless visitor under his own roof and begins flirting with her at once."},
{"chunk": 60, "story": 3, "summary": "They drink the second bottle; he falls headlong into a passion that sweeps away his wife, the visitor and himself, and has left him ruined on a dark street.", "predicament": "A man who thought nothing worse could happen throws away his marriage and everything else for a sudden passion."}
]
@@ -0,0 +1,6 @@
[
{"chunk": 61, "story": 4, "summary": "Back from the opera, a sixteen-year-old girl who loves no one yet writes a romantic letter to one of her two admirers, pretending not to believe his love and pitying herself to tears.", "predicament": "A young girl with two admirers plays at being unloved and unhappy because it seems more romantic than being loved."},
{"chunk": 62, "story": 4, "summary": "She imagines renouncing the world, then dwells fondly on her shy suitor's hidden passion for music and on how he declared his love in a draughty hallway.", "predicament": "A girl dramatising her own feelings drifts from imagined sorrow into fond memories of a shy admirer's devotion."},
{"chunk": 63, "story": 4, "summary": "She mentions her other admirer in the letter, wonders whether he deserves it more, and is overcome by causeless laughter at a funny story he told about a poodle.", "predicament": "A girl choosing between two admirers is swept by a joy she cannot explain and laughs at nothing."},
{"chunk": 64, "story": 4, "summary": "She tears up the letter, decides to love the other admirer, and imagines a summer of both men courting her, full of joy she does not know what to do with.", "predicament": "A girl on the edge of grown-up life is so full of happy expectation that she hardly knows what to do with herself."}
]
@@ -0,0 +1,8 @@
[
{"chunk": 65, "story": 5, "summary": "A woman recalls riding home with a young official years ago as a thunderstorm broke; his high spirits infected her and they raced the storm laughing.", "predicament": "A young woman of good family is swept up in a poorer companion's high spirits during an exhilarating afternoon together."},
{"chunk": 66, "story": 5, "summary": "Sheltering in the stable doorway, he tells her he loves her though he knows she can never be his wife, and asks only that she let him look at her; she is spellbound and happy.", "predicament": "A man declares his love to a woman far above him, asking nothing because he knows she can never be his."},
{"chunk": 67, "story": 5, "summary": "They run in laughing; he is boisterous all evening, and that night she feels free, beloved and glad above all of her rank and wealth, unsure whether she loves him.", "predicament": "A young woman who has just been declared to is happier about her own advantages than sure of her feelings for him."},
{"chunk": 68, "story": 5, "summary": "Nothing came of it: in town, the gulf of rank between them felt like a thick wall, and he only criticised society with a forced smile instead of trying to break through.", "predicament": "Two people who care for each other let a difference in rank stand between them, and neither tries to cross it."},
{"chunk": 69, "story": 5, "summary": "Years slipped by unvalued; her father is dead, she has aged, and he, now a tired, ailing, disillusioned man, sits silently by her fire with nothing to tell her.", "predicament": "A woman who let her chance at happiness drift past sits with the man she might have had, both grown old and flat."},
{"chunk": 70, "story": 5, "summary": "She breaks down weeping that her life is wasted; he understands, says nothing, kisses her hand at the door, and leaves without the words he longs to say.", "predicament": "Two people who let their chance pass mourn it together in silence, neither able to say what they both feel."}
]
@@ -0,0 +1,16 @@
[
{"chunk": 71, "story": 6, "summary": "By a campfire on a bleak river-bank, a drunk old exile hides his bottle from his mates while a sick young newcomer mourns the home and wife he was sent away from.", "predicament": "A young man sent far from home against his will sits in a bleak place longing for the family he left behind."},
{"chunk": 72, "story": 6, "summary": "The old exile tells him he will get used to it: he has worked the same crossing for twenty-two years and wants nothing, and urges the youth to stop wanting his wife and freedom.", "predicament": "A homesick newcomer is told by an old hand that the only way to endure is to stop wanting anything at all."},
{"chunk": 73, "story": 6, "summary": "The old man boasts that he was once a gentleman's son who wore a frock-coat, and has made himself free by wanting nothing; whoever listens to longing even once is lost.", "predicament": "A man who has lost everything insists he is free because he has trained himself to want nothing."},
{"chunk": 74, "story": 6, "summary": "He tells of a gentleman exiled for forgery who meant to live by his own labour but kept riding for money from home, while the old man warned him that wanting leads to ruin.", "predicament": "A man starting over in hard exile cannot stop hoping for help from the life he lost."},
{"chunk": 75, "story": 6, "summary": "The gentleman's wife joined him with their baby, he spent lavishly to keep her happy among the local officials, and she, spoilt and bored, pined in the hardship.", "predicament": "A man who drags a loved one into his hard lot spends everything trying to make it bearable for her."},
{"chunk": 76, "story": 6, "summary": "Three years later the wife fled across the river with a young official; the husband chased them for five days and then beat his head on the ferry boards, while the old man laughed at him.", "predicament": "A man whose spouse has run off with another chases them in vain, and returns to be laughed at."},
{"chunk": 77, "story": 6, "summary": "The gentleman spent eight years petitioning to go home, then found new joy in his grown daughter; but the girl, young and with no life there, pined and is now dying of consumption.", "predicament": "A father who pins all his remaining happiness on his child watches her waste away in a place with nothing for her."},
{"chunk": 78, "story": 6, "summary": "The old man predicts the father will ruin himself chasing doctors and end in prison; the young exile answers that even three years with a wife were a gift, better than nothing.", "predicament": "A young man insists one brief happiness is worth any grief that follows, against an old man who wants nothing."},
{"chunk": 79, "story": 6, "summary": "The young exile weeps that he is innocent, punished in place of a rich uncle by an unfair verdict; the old man only repeats that he will get used to it and goes to sleep.", "predicament": "A young man punished for what his relatives did protests his innocence, and is told only that he will get used to it."},
{"chunk": 80, "story": 6, "summary": "Alone by the fire, he longs for his wife to come even for a day, then realises he could not feed her; his mates cheat him of his share of tips, and soon he will be begging.", "predicament": "A poor man longing for a loved one to join him realises he could not even feed her if she came."},
{"chunk": 81, "story": 6, "summary": "Towards dawn he dreams he is home and the exile was a nightmare, then wakes to shouts and gunshots from the far bank calling the ferrymen out into the cold.", "predicament": "A homesick man dreams for a moment that his hardship was only a nightmare, then wakes to it again."},
{"chunk": 82, "story": 6, "summary": "They row the clumsy barge unhurriedly across; on the far bank the exiled gentleman waits, grim and distracted, hurrying to a new doctor for his sick daughter.", "predicament": "A desperate father makes yet another hopeless journey in bad weather for anyone who might save his child."},
{"chunk": 83, "story": 6, "summary": "The old man taunts the silent gentleman with his own words that people can live even here and tells him his search is useless; he pays and drives off without a word.", "predicament": "A man in distress is mocked by someone who takes satisfaction in having predicted his misfortune."},
{"chunk": 84, "story": 6, "summary": "The young exile tells the old man he is a dead stone and the gentleman is truly alive; everyone laughs, the others lie down in the cold hut, and the youth weeps outside.", "predicament": "A young man who still feels his grief tells a hardened elder he is dead inside, and is laughed at."}
]

Some files were not shown because too many files have changed in this diff Show More