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
+111
View File
@@ -0,0 +1,111 @@
# Holmes reference set: *The Adventures of Sherlock Holmes* (1892)
A hand-made comparison baseline for the story-to-pack pipeline, the fourth beside O. Henry
(`../v2/claude/`), Wharton (`../wharton/`) and Jacobs (`../jacobs/`). Every summary, predicament,
group and option here was written by Claude reading the scenes. **No local or hosted inference
was used.** It is one careful reading, not ground truth: another reader would draw some group
boundaries differently.
| File | What it is |
| --- | --- |
| `corpus/adventures-of-sherlock-holmes.txt` | Project Gutenberg #1661, plain text (public domain) |
| `split_gutenberg.py` | → `stories.json` (12 stories, split on the roman-numeral story headers in the body) and `chunks.json` (391 scenes, same 320-word paragraph rule as `../chunk.py`, median 286 words) |
| `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` (Jacobs' script, unchanged) |
| `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
- **391 predicaments**: one sentence each (median 19 words, min 13, max 24), written to the
`redescribe.py` rules: no names, jobs, places or story-only objects. The `topic_words` leak
check flags 96 of 391. Almost all are role or relationship words kept on purpose (bride,
groom, thief, partner, employer, newcomer, suitor, sister) or generic settings (house, room,
street). Three real leaks were found and rewritten ("shopkeeper" twice, "cell" once). "Officer",
"servant", "church" and "dog" were also replaced before the check was run.
- **32 groups**, each a situation that recurs in **two or more stories** (26 in three or more).
Each scene sits in at most one group: 232 are assigned and 159 fit nothing that recurs.
Under the catalogue's single recurrence rule (at least 5 scenes, at least 3 stories, no story
over 50%), 20 of the 32 pass.
- **Why so many unassigned.** About two-fifths of this corpus is the investigator explaining his
reasoning, the narrator setting a scene, or a client reciting background. Those scenes were
summarised like any other, but they are narration, not predicaments, and none is forced into
a group.
- **Options**: 3 to 5 per group, 138 in all. 119 come from what someone in a scene did
(`scene:N`), 9 are archetypes and 10 fill gaps. **21 scene options cite a scene outside their
own group**, often a neighbouring scene in the same story, as Wharton found. `groups.json` marks
each one `in_group: false`.
- **Moves**: spine paths with a direction only (`+`, `-`, `risk`, `set`). There are no magnitudes,
as the design requires. Directions used: 131 `+`, 74 `-`, 25 `set`, 18 `risk`.
- **Skills**: `nerve` (27 moves) and `cunning` (15) are reused from Jacobs. One new label is
proposed for this corpus: **`observation`** (19), for noticing what others miss and reading a
person or a scene. The spine holds two skills, so a pack from this corpus would keep two of the
three. `nerve` and `observation` fit its register best. `cunning` covers the deceptions:
disguise, bluff, deflecting blame. Dropping it would push those moves onto `nerve` or leave them
without a skill. That choice is left open.
- **Stage** comes from protagonist standing, judged **per story, not per scene**, and recorded in
`STANDING` in `groups_src.py`. The investigator is the same in all twelve stories, so standing
is judged from the client whose trouble drives each one: 5 low, 4 middle, 3 high. Groups come
out 13 low, 11 middle, 8 high.
## Situation types new to the catalogue
The existing 36-entry catalogue (O. Henry, Wharton, Jacobs) is mostly courtship, secrets and
schemes. Holmes adds investigation and danger. Groups that match no catalogue entry, or only
partly:
- **G02 The truth would clear you, and cost someone else**: accused, and silent to protect a
secret. It is close to `their_secret`, but here the silence is what keeps suspicion on you.
- **G04 A warning nobody else takes seriously**: a death-token or night sign that the
authorities or family dismiss. It is only partly `dread`.
- **G07 You have seen too much**: you found what your host meant to hide, and they may know it.
- **G08 Waiting in the dark for them to come**: an ambush vigil.
- **G09 Someone dangerous is after the person you are helping**: protecting a client from a
pursuer.
- **G10 Asked to act without being told why**: loyal help on a plan you are not told. It differs
from `pressed_to_wrong`: nobody is pressing you, you are trusting a friend.
- **G11 Someone close is not who they seem**: a helper, suitor or friend who is an impostor.
- **G12 A stranger who will not give a true name.**
- **G14 Holding something too valuable to lose**: a custodian's worry.
- **G16 Mercy or the law**: letting a culprit go, keeping a confession back, or trading silence
for restitution.
- **G17 Someone close has vanished.**
- **G18 Keeping faith when everyone says give up.**
- **G19 A guardian who lives on your money**: a guardian loses the income if the ward marries.
It recurs in three stories and is the most distinctive of Holmes's situations.
- **G20 Everyone has decided, and you think they are wrong**: standing against an official
consensus.
- **G21 A frightened stranger at your door**: the opening of seven of the twelve stories.
- **G29 Arriving too late**, **G30 Getting them to give it away**, **G31 You were only a pawn**,
**G32 Someone on the inside helps you get away.**
- **G22 Read at a glance** and **G23 Tested by someone sharper** recur strongly but are low-stakes
social moments. They could be flavour events rather than full situations.
Groups that **overlap existing entries**: G01 → `wrongly_judged` (a formal-accusation variant,
with evidence and arrest); G03 → `past_comes_back`; G05 → `sure_thing` and `strings`; G06 →
`newcomer`; G13 → `patron`; G15 → `caught_out` and `your_scheme`; G24 → `pretence` (pretending to
be humbler, to get information); G25 → `hiding_from_close`; G26 → `let_another_take_blame`;
G27 → `power_over_you`; G28 → `cant_prove_it`.
## How this corpus differs
- **One protagonist, many clients.** Every story has the same investigator and narrator, so each
scene has two candidate protagonists: the client in trouble and the investigator deciding what
to do. Predicaments follow whoever has the most at stake in that scene. Some groups hold both
views of one situation: G20 holds both the doubter and the officials he doubts. A tool that
keys groups to a single actor would split them.
- **Recurrence is by plot structure, not by relationships.** Wharton's groups turn on a spouse or
a mother. Holmes's turn on stages of an inquiry: the stranger arrives (G21), the offer that pays
too well (G05), the sinister house (G06), what you have seen (G07), the unmasking (G15), and
what to do with the culprit (G16). Three stories, *The Red-Headed League*, *The Engineer's
Thumb* and *The Copper Beeches*, share one arc: the offer that pays too well (G05), then the
discovery that you were only a pawn (G31). The last two also share the sinister house (G06)
between those steps. That gives a small
corpus unusually clean recurrence, but the groups are also more tied to one genre's plot beats.
- **The predicaments transplant well.** Almost nothing depends on the period. The dangers are
generic (a threat nobody believes, a job that pays too well, a guardian who needs you single),
and the frontier or corporate reading is usually obvious.
- **Twelve stories is still below the design's 20-30.** Six groups rest on only two stories
(G06, G08, G12, G27, G28, G32).
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,188 @@
[
{
"chunk": 0,
"story": 0,
"summary": "The narrator introduces the one woman the cold reasoner ever respected, a woman of doubtful memory who once got the better of him.",
"predicament": "A proud, cool-headed person has met one opponent who outwitted them, and cannot stop measuring everyone else against her."
},
{
"chunk": 1,
"story": 0,
"summary": "Marriage has drawn the narrator away from his old friend, who has been living alone between drugs and bursts of work on cases the police gave up.",
"predicament": "Someone whose own life has moved on has drifted away from an old companion and only hears of him secondhand."
},
{
"chunk": 2,
"story": 0,
"summary": "Passing his friend's old rooms, the narrator calls in on impulse; the investigator greets him quietly and reads from his looks that he has married and gone back to work.",
"predicament": "Someone drops in on an old friend after a long gap and finds himself read at a glance, unsure of his welcome."
},
{
"chunk": 3,
"story": 0,
"summary": "The investigator explains how he knew the narrator had been out in bad weather and has a careless servant, and that he is back in practice.",
"predicament": "A person is unsettled to find that a companion can read the private details of his life from small signs."
},
{
"chunk": 4,
"story": 0,
"summary": "The narrator admits he sees but does not observe; the investigator hands him an anonymous note that arrived by the last post.",
"predicament": "A person is shown up as seeing without noticing, just as an unsigned message raises a question worth answering."
},
{
"chunk": 5,
"story": 0,
"summary": "The unsigned note announces a masked visitor with a matter of the deepest importance; the investigator refuses to theorise and reads the paper's watermark instead.",
"predicament": "An unsigned message promises a visitor with a grave secret, and an investigator must decide what to trust before meeting him."
},
{
"chunk": 6,
"story": 0,
"summary": "The investigator works out that the writer is a wealthy foreigner; a rich carriage arrives, and he makes the narrator stay to help.",
"predicament": "An investigator has worked out who is coming before the door opens, and wants a trusted witness in the room."
},
{
"chunk": 7,
"story": 0,
"summary": "A huge, richly dressed man in a mask enters and asks to be heard, unsure which of the two men to address.",
"predicament": "A powerful stranger arrives disguised, needing help but unwilling to show who he is to people he cannot yet trust."
},
{
"chunk": 8,
"story": 0,
"summary": "The visitor gives a false title, binds both men to secrecy and admits he acts for someone great; the investigator coolly says he already knew.",
"predicament": "A client hides behind a false name while asking for secrecy, and the investigator lets him know the pretence is already seen through."
},
{
"chunk": 9,
"story": 0,
"summary": "The visitor tears off his mask and admits he is himself the royal client; years ago he became entangled with a famous adventuress.",
"predicament": "A powerful man drops a disguise that fooled no one and must admit a past entanglement to a stranger he needs."
},
{
"chunk": 10,
"story": 0,
"summary": "The client wrote compromising letters and had himself photographed with the woman; five attempts to steal the picture back have failed.",
"predicament": "A powerful man's old indiscretion is preserved in proof he cannot buy or steal back, however hard he tries."
},
{
"chunk": 11,
"story": 0,
"summary": "The woman threatens to send the photograph to his bride's family when the betrothal is announced; he gives the investigator a free hand and money.",
"predicament": "A powerful man's planned marriage will collapse if a former lover makes good her threat to reveal their past."
},
{
"chunk": 12,
"story": 0,
"summary": "The client pays heavily in advance and leaves; next day the narrator waits for the investigator, confident he will not fail.",
"predicament": "An investigator is paid lavishly in advance by a client desperate for quick results, and the watcher assumes success is certain."
},
{
"chunk": 13,
"story": 0,
"summary": "The investigator returns disguised as a drunken stable-hand and collapses laughing at how his morning ended.",
"predicament": "An investigator comes back from watching a house in disguise, with a surprise he can hardly tell for laughing."
},
{
"chunk": 14,
"story": 0,
"summary": "Disguised as an out-of-work groom, he studied the woman's house and gathered gossip from the stablemen.",
"predicament": "An investigator poses as a humble out-of-work stranger to learn a target's habits from the people who serve her."
},
{
"chunk": 15,
"story": 0,
"summary": "He learns she lives quietly with one frequent male visitor, a lawyer, and must decide whether that man holds the proof.",
"predicament": "An investigator watching someone must decide whether a frequent visitor is an ally holding what he wants, or a lover."
},
{
"chunk": 16,
"story": 0,
"summary": "The lawyer rushes out of the house and orders his cab to a church; the woman follows moments later in a hurry.",
"predicament": "Someone watching a house sees the two people he is following suddenly race off, and must decide whether to follow."
},
{
"chunk": 17,
"story": 0,
"summary": "The investigator follows them to the church and is suddenly dragged forward by the bridegroom, who needs a witness at once.",
"predicament": "A person secretly following two others is suddenly pulled into their business and cannot refuse without giving himself away."
},
{
"chunk": 18,
"story": 0,
"summary": "He finds himself the witness at the woman's hasty wedding, then plans to act before the pair can leave, and asks the narrator's help.",
"predicament": "An investigator has unwittingly helped his quarry's plans along and must now act fast before she slips out of reach."
},
{
"chunk": 19,
"story": 0,
"summary": "The investigator asks whether the narrator will break the law and risk arrest; he agrees, and is told to stand at a window and throw something in at a signal.",
"predicament": "A friend is asked to break the law for a cause he is told is good, without being told the whole plan."
},
{
"chunk": 20,
"story": 0,
"summary": "He is given a smoke device and instructions, and the investigator disguises himself as a mild, simple-minded clergyman.",
"predicament": "A helper agrees to a staged false alarm while his friend prepares a disguise meant to win a stranger's sympathy."
},
{
"chunk": 21,
"story": 0,
"summary": "Waiting outside the house, the investigator reasons that the woman's marriage makes the proof a danger to her as well, and wonders where she keeps it.",
"predicament": "Watchers outside a house reason that their quarry's new marriage makes her secret dangerous to her too."
},
{
"chunk": 22,
"story": 0,
"summary": "He reasons the proof must be in her own house and says he will not search but make her show him.",
"predicament": "An investigator decides to trick his quarry into revealing where she has hidden what he has come to take."
},
{
"chunk": 23,
"story": 0,
"summary": "A staged street brawl breaks out as she arrives; the disguised investigator falls, apparently bleeding, while defending her.",
"predicament": "A stranger fakes an injury defending a woman, trading on her decency to be carried into her home."
},
{
"chunk": 24,
"story": 0,
"summary": "The kind woman has the injured man brought in; the narrator feels ashamed as she tends him, but hardens his heart to play his part.",
"predicament": "A helper is ashamed to watch a kind woman tend a man who is deceiving her, and must choose loyalty or conscience."
},
{
"chunk": 25,
"story": 0,
"summary": "At the signal the narrator throws in the smoke device and cries fire; the investigator later explains the whole street crowd was hired.",
"predicament": "A helper carries out his part in a deception and learns afterwards how much of the scene was staged."
},
{
"chunk": 26,
"story": 0,
"summary": "The false alarm made the woman rush to the hiding place; the investigator saw it but did not take the proof, since her servant was watching him.",
"predicament": "An investigator has tricked his quarry into showing her hiding place but holds back because someone is watching him closely."
},
{
"chunk": 27,
"story": 0,
"summary": "A passing youth wishes him good night by name; next morning the client arrives eager, and the investigator tells him the woman has married.",
"predicament": "An investigator is greeted by name by a stranger in the street, a sign that his quarry may know more than he thought."
},
{
"chunk": 28,
"story": 0,
"summary": "At the house they learn she has fled abroad with her husband; the hiding place holds only a portrait of her and a letter.",
"predicament": "An investigator arrives to collect his prize and finds his quarry has seen through him and fled first."
},
{
"chunk": 29,
"story": 0,
"summary": "Her letter says she saw through the disguise, followed him home, and will keep the photograph only to protect herself from the client.",
"predicament": "Someone pursued by a powerful former lover outwits the investigator he hired, keeping her proof only as protection."
},
{
"chunk": 30,
"story": 0,
"summary": "The client is relieved and offers a ring; the investigator asks only for her portrait and pointedly ignores the client's hand.",
"predicament": "An investigator bested by his quarry thinks less of his client than of her, and lets the client see it."
}
]
@@ -0,0 +1,200 @@
[
{
"chunk": 31,
"story": 1,
"summary": "The narrator finds the investigator with a stout red-haired client and is pulled in to hear the case, with a reminder that real life outdoes invention.",
"predicament": "An investigator welcomes a trusted companion into a client's case just as a strange story is about to be told."
},
{
"chunk": 32,
"story": 1,
"summary": "The investigator asks the client to repeat his unusual story, saying odd small affairs are often more telling than great crimes.",
"predicament": "An investigator cannot yet tell whether a client's odd story is a crime at all, and wants every detail again."
},
{
"chunk": 33,
"story": 1,
"summary": "The narrator can read nothing from the commonplace client; the investigator lists his past labour, his lodge, his travels and his recent writing.",
"predicament": "A plain, slow client is startled when a stranger reads his whole history off his clothes and hands."
},
{
"chunk": 34,
"story": 1,
"summary": "The investigator explains his reasoning, and the client decides it was nothing clever after all; he produces the newspaper notice that began it all.",
"predicament": "Someone who explains how he knows things finds his cleverness dismissed as obvious once the trick is shown."
},
{
"chunk": 35,
"story": 1,
"summary": "The notice offers a well-paid post for nominal work to red-haired men; the client explains his small, struggling business and cheap assistant.",
"predicament": "A person whose small business barely keeps him is drawn by a public offer of easy money for almost no work."
},
{
"chunk": 36,
"story": 1,
"summary": "The client praises his assistant, who works for half wages and spends hours in the cellar, and recalls how the assistant first showed him the notice.",
"predicament": "A small employer is grateful for a clever helper who works cheap, and never asks why the helper accepts so little."
},
{
"chunk": 37,
"story": 1,
"summary": "The assistant tells the stay-at-home client about a fund paying easy money to men with his colouring, and says he is eligible.",
"predicament": "A stay-at-home person short of money is told by a trusted helper that easy money is his for the asking."
},
{
"chunk": 38,
"story": 1,
"summary": "The assistant explains the eccentric benefactor's fund and hints it is hardly worth the effort, drawing the client further in.",
"predicament": "A trusted helper talks up an easy windfall while pretending indifference, so that his employer will push to claim it."
},
{
"chunk": 39,
"story": 1,
"summary": "The client and assistant go to the office through a vast crowd of applicants; the assistant forces a way through for him.",
"predicament": "A hopeful applicant facing a crowd of rivals would give up, but a helper insists on pushing him through to the front."
},
{
"chunk": 40,
"story": 1,
"summary": "The man at the office rejects everyone else but greets the client warmly and declares him perfectly suited.",
"predicament": "A hopeful applicant is singled out and flattered by the person in charge, above all the other candidates."
},
{
"chunk": 41,
"story": 1,
"summary": "The manager tests the hair by pulling it, fills the post, then feigns doubt because the client is unmarried before letting it pass.",
"predicament": "A person offered a windfall is made to feel it nearly slipped away, so he grasps it more eagerly."
},
{
"chunk": 42,
"story": 1,
"summary": "The client agrees to strict hours copying an encyclopedia, forbidden to leave the room, while the assistant offers to mind the shop.",
"predicament": "A person accepts easy pay on the strange condition that he stay away from his own business for hours every day."
},
{
"chunk": 43,
"story": 1,
"summary": "That night he suspects a hoax, but next day finds everything as promised, and is set to copying and locked out at two.",
"predicament": "Someone who suspects an offer is too good to be true is reassured when it is paid exactly as promised."
},
{
"chunk": 44,
"story": 1,
"summary": "Weeks pass with pay every Saturday until one morning the door is locked with a notice saying the fund is dissolved.",
"predicament": "A person who has grown comfortable on easy money finds it cut off without warning or explanation."
},
{
"chunk": 45,
"story": 1,
"summary": "The client is stung by their laughter; he describes chasing the vanished manager through false names and addresses.",
"predicament": "A person left stranded by a vanished employer finds every name and address he was given was false."
},
{
"chunk": 46,
"story": 1,
"summary": "The client wants to know who played this trick on him; the investigator questions him closely about how his assistant came to him.",
"predicament": "A person who has lost easy money wants to know who fooled him, and does not yet suspect the helper he trusts."
},
{
"chunk": 47,
"story": 1,
"summary": "The assistant's description excites the investigator; after the client leaves he says the case needs prompt action.",
"predicament": "An investigator realises a client's trusted helper is not who he seems, while the client suspects nothing."
},
{
"chunk": 48,
"story": 1,
"summary": "The investigator smokes on the problem in silence, then abruptly proposes an afternoon concert.",
"predicament": "An investigator has a puzzle half solved and needs quiet thought before he can decide what to do."
},
{
"chunk": 49,
"story": 1,
"summary": "He inspects the shop, raps the pavement and asks the assistant for directions, only to look at the knees of his trousers.",
"predicament": "An investigator calls at a suspect's door on a pretext, to look for one telltale sign without alerting him."
},
{
"chunk": 50,
"story": 1,
"summary": "He surveys the busy street behind the shop, noting the buildings that back onto it, then turns to play.",
"predicament": "An investigator quietly maps the ground around a suspect's hideout before revealing his suspicions to anyone."
},
{
"chunk": 51,
"story": 1,
"summary": "After the concert he tells the narrator a serious crime is planned for that night and asks for his help.",
"predicament": "An investigator knows a serious crime will happen tonight and has only hours to stop it."
},
{
"chunk": 52,
"story": 1,
"summary": "He asks the narrator to come armed; the narrator goes home puzzled, sensing the assistant is a dangerous man.",
"predicament": "A companion is asked to come armed on a night venture he does not understand, trusting a friend who will not explain."
},
{
"chunk": 53,
"story": 1,
"summary": "The narrator meets a police officer and a gloomy banker who doubts the expedition, while the officer patronises the investigator.",
"predicament": "An outsider asked to trust an investigator's plan doubts it, while the official backing it patronises him."
},
{
"chunk": 54,
"story": 1,
"summary": "The investigator promises the banker a large stake and the officer a notorious, well-born criminal he has never managed to catch.",
"predicament": "An official who has chased a clever, well-born criminal for years is offered a chance to finally take him."
},
{
"chunk": 55,
"story": 1,
"summary": "They reach the bank's vault; the banker thumps the hollow floor and is sharply told to sit down and not interfere.",
"predicament": "A person whose property is at stake nearly spoils a trap by carelessness and is ordered to keep still."
},
{
"chunk": 56,
"story": 1,
"summary": "The investigator checks the floor and explains they are in a bank vault holding a large reserve of borrowed gold.",
"predicament": "A guardian of valuables learns that thieves are about to strike and that his own careless talk drew them."
},
{
"chunk": 57,
"story": 1,
"summary": "They put out the light and hide behind crates, armed, waiting for thieves who may shoot.",
"predicament": "Watchers hide in the dark to ambush dangerous thieves, knowing the thieves may fight their way out."
},
{
"chunk": 58,
"story": 1,
"summary": "After a long, tense wait a light appears and a hand gropes up through a crack in the floor.",
"predicament": "Someone lying in ambush must keep still through a long dark wait until the first sign of an intruder appears."
},
{
"chunk": 59,
"story": 1,
"summary": "The thieves climb up; the investigator seizes the leader and knocks his pistol away, while the accomplice flees into waiting arms.",
"predicament": "A clever thief walks straight into an ambush and must decide whether to fight, flee or give in gracefully."
},
{
"chunk": 60,
"story": 1,
"summary": "The captured criminal insists on being addressed with respect; the banker thanks the investigator, who asks only for his expenses.",
"predicament": "A captured criminal clings to his dignity and birth even as he is led away in handcuffs."
},
{
"chunk": 61,
"story": 1,
"summary": "The investigator explains that the fund was a lure to get the shopkeeper out of the way every day.",
"predicament": "An investigator explains how a helper who worked for too little was the tell that exposed a whole scheme."
},
{
"chunk": 62,
"story": 1,
"summary": "He explains how the assistant's cellar habits, worn knees and the bank next door revealed the tunnel.",
"predicament": "An investigator traces a scheme back through a helper's odd habits and the neighbour who had something worth taking."
},
{
"chunk": 63,
"story": 1,
"summary": "He explains how he knew the attempt would come that night, then complains that ordinary life bores him.",
"predicament": "An investigator who has just solved a case feels ordinary life closing in again and dreads the idleness."
}
]
@@ -0,0 +1,158 @@
[
{
"chunk": 64,
"story": 2,
"summary": "By the fire the investigator argues that real life is stranger than fiction; the narrator doubts it, finding reported crimes dull.",
"predicament": "Two companions argue whether ordinary life hides anything stranger than invention, each sure the other is wrong."
},
{
"chunk": 65,
"story": 2,
"summary": "The narrator picks a newspaper case to prove his point; the investigator, who worked on it, shows its details were stranger than any invention.",
"predicament": "A person picks an example to prove a friend wrong, and the friend turns it against him with facts he lacked."
},
{
"chunk": 66,
"story": 2,
"summary": "The investigator shows gifts from grateful royal clients and says his current cases are important but dull, then spots a client in the street.",
"predicament": "An investigator has many weighty cases and none worth his interest, and hopes the stranger outside will bring one."
},
{
"chunk": 67,
"story": 2,
"summary": "A large, nervous woman hesitates on the pavement before hurrying to the door; the investigator reads it as a perplexed love affair.",
"predicament": "A hesitant stranger works up her nerve to bring a private trouble to people she does not know."
},
{
"chunk": 68,
"story": 2,
"summary": "The investigator startles the woman by reading her work from her hands; she says she would give her income to know what became of her missing fiancé, and that her stepfather would do nothing.",
"predicament": "A young woman whose fiancé has vanished defies a relative who wants her to drop it, and seeks help alone."
},
{
"chunk": 69,
"story": 2,
"summary": "She explains her young stepfather, her mother's remarriage and the sale of her father's business; she has a separate income of her own.",
"predicament": "A young woman with a small fortune of her own explains a household where a new relative controls the money."
},
{
"chunk": 70,
"story": 2,
"summary": "She lets her family draw her income while she lives at home, and supports herself by her own work.",
"predicament": "A young woman hands her own income to the family she lives with, never asking who really benefits."
},
{
"chunk": 71,
"story": 2,
"summary": "Against her stepfather's wishes she went to a ball while he was abroad and met a shy suitor, who then could not call once her stepfather returned.",
"predicament": "A young woman defies a controlling relative to go out, meets a suitor, and must see him in secret."
},
{
"chunk": 72,
"story": 2,
"summary": "She was engaged at once and wrote daily, but never learned where he worked or lived; he insisted her letters be handwritten and his were typed.",
"predicament": "A person is engaged to someone whose address and work she never learned, and sees nothing strange in it."
},
{
"chunk": 73,
"story": 2,
"summary": "The suitor was shy, whispered, wore tinted glasses and preferred to walk after dark.",
"predicament": "A trusting woman describes a suitor who avoided daylight and hid his face and voice, and sees only shyness."
},
{
"chunk": 74,
"story": 2,
"summary": "The suitor pressed a quick wedding while her stepfather was away, made her swear fidelity, and her mother backed him; her letter to her stepfather missed him.",
"predicament": "A young woman is rushed into a secret wedding, sworn to faithfulness, and urged by her own mother to tell no one."
},
{
"chunk": 75,
"story": 2,
"summary": "On the wedding morning the groom vanished from a closed cab; she believes some danger took him and that he will claim her.",
"predicament": "A bride is left waiting at the altar when her groom vanishes, and chooses to believe he was taken rather than fled."
},
{
"chunk": 76,
"story": 2,
"summary": "Her mother forbade her to speak of it; her stepfather agreed something happened; she sobs, and the investigator advises her to forget the man.",
"predicament": "A jilted woman is told by everyone, even her helper, to forget a man she has sworn to wait for."
},
{
"chunk": 77,
"story": 2,
"summary": "She refuses to forget and swears to stay true; the investigator says the case is trite but the woman herself was interesting.",
"predicament": "A deceived woman refuses advice to forget and vows to keep faith with someone who will never return."
},
{
"chunk": 78,
"story": 2,
"summary": "The investigator asks the narrator what he noticed about her dress; the narrator lists colours and details.",
"predicament": "A companion is tested on what he noticed and must describe a stranger without knowing what matters."
},
{
"chunk": 79,
"story": 2,
"summary": "The investigator praises the method but notes what was missed: her work marks, short sight, and odd, half-buttoned boots that show haste.",
"predicament": "A person learns he looked at everything and noticed nothing, and is shown how to read haste in a stranger."
},
{
"chunk": 80,
"story": 2,
"summary": "He notes her inky glove, then reads the missing man's description and points out that even the signatures on his letters were typed.",
"predicament": "An investigator notices that a missing man never once let his own handwriting be seen."
},
{
"chunk": 81,
"story": 2,
"summary": "He writes to the stepfather's employer and to the stepfather himself, asking the latter to call.",
"predicament": "An investigator quietly sends for a relative he suspects, without saying why, and waits for the reply."
},
{
"chunk": 82,
"story": 2,
"summary": "The investigator says the matter is solved but no law can touch the culprit; the stepfather arrives.",
"predicament": "An investigator has found the culprit and knows the law cannot punish him for what he did."
},
{
"chunk": 83,
"story": 2,
"summary": "The smooth stepfather says the girl should not have come and doubts the missing man can be found; he starts when told he will be.",
"predicament": "A smooth relative who hoped a matter would be dropped is startled to hear the missing man will be found."
},
{
"chunk": 84,
"story": 2,
"summary": "The investigator shows the stepfather's typed letters match the suitor's machine; the man tries to leave and the door is locked on him.",
"predicament": "A deceiver shown proof that his own letters match the ones he forged tries to leave and finds the door locked."
},
{
"chunk": 85,
"story": 2,
"summary": "The stepfather collapses, stammers that it is not a crime, and the investigator agrees but calls it heartless.",
"predicament": "A deceiver caught out pleads that nothing he did was against the law, and is told it was cruel all the same."
},
{
"chunk": 86,
"story": 2,
"summary": "The investigator explains the stepfather courted the girl in disguise to keep her unmarried and keep her income; he pleads it began as a joke.",
"predicament": "A person who posed as a suitor to keep a relative's money in the family is exposed and pleads it was a joke."
},
{
"chunk": 87,
"story": 2,
"summary": "He staged a vanishing to bind her to a phantom for years; recovering, the stepfather sneers.",
"predicament": "A deceiver hears his whole scheme laid out, then gathers his nerve and sneers because nothing can be proved against him."
},
{
"chunk": 88,
"story": 2,
"summary": "He warns the investigator he is the one breaking the law by locking the door; the investigator reaches for a whip and the man flees.",
"predicament": "An investigator faces a cruel deceiver the law cannot touch and is tempted to punish him with his own hands."
},
{
"chunk": 89,
"story": 2,
"summary": "The investigator explains how the suitor and stepfather never appeared together, and how he checked the description and the typewriter.",
"predicament": "An investigator explains how he proved two men were one, by noticing they were never seen together."
}
]
@@ -0,0 +1,218 @@
[
{
"chunk": 90,
"story": 3,
"summary": "The narrator's wife urges him to accept the investigator's telegram asking him to come on a country murder case; he joins him at the train.",
"predicament": "A married man is invited on a dangerous errand by an old friend, and his spouse urges him to go."
},
{
"chunk": 91,
"story": 3,
"summary": "On the train the investigator explains that a son is accused of his father's murder, a simple case that is hard for that reason.",
"predicament": "An investigator takes up a case where the evidence already points firmly at one person, and resolves to assume nothing."
},
{
"chunk": 92,
"story": 3,
"summary": "He describes two former colonists who settled near each other, one rich, one his tenant, and the tenant's walk to an appointment he never returned from.",
"predicament": "Two old associates from far away live side by side, one oddly dependent on the other, until one is found dead."
},
{
"chunk": 93,
"story": 3,
"summary": "Witnesses saw the father walk alone to the pool, followed shortly by his son carrying a gun.",
"predicament": "A young man is seen following his father with a weapon shortly before the father is found dead."
},
{
"chunk": 94,
"story": 3,
"summary": "A girl saw father and son quarrelling violently; the son then ran for help with blood on his hands, and the dead father's wounds fit his gun; he was arrested.",
"predicament": "A son who quarrelled with his father just before the father's death is found with blood on his hands and arrested."
},
{
"chunk": 95,
"story": 3,
"summary": "The narrator thinks the case damning; the investigator warns circumstantial evidence can point two ways, and that a young woman believes the son innocent.",
"predicament": "An accused man's case looks hopeless to everyone except one loyal friend who has brought in outside help."
},
{
"chunk": 96,
"story": 3,
"summary": "The investigator notes the son said at his arrest that it was no more than he deserved, which the jury took as guilt.",
"predicament": "An accused man's unguarded remark at his arrest is taken by everyone as proof he did it."
},
{
"chunk": 97,
"story": 3,
"summary": "The investigator reads the remark as the natural self-reproach of an innocent son who had quarrelled with his father.",
"predicament": "An investigator must decide whether a suspect's calm acceptance of arrest shows guilt or a clear conscience."
},
{
"chunk": 98,
"story": 3,
"summary": "The investigator hands over the local paper carrying the son's own statement at the inquest.",
"predicament": "Someone studying a case turns to the accused's own words for the first time, hoping for a crack in the story."
},
{
"chunk": 99,
"story": 3,
"summary": "The son's statement: he heard his father's call, found him by the pool, quarrelled, walked off, heard a cry and found him dying.",
"predicament": "An accused man tells a true story of a quarrel and a death that sounds exactly like the story of a guilty man."
},
{
"chunk": 100,
"story": 3,
"summary": "At the inquest the son refused to say what the quarrel was about, reported odd dying words, and thought he saw a grey garment that later vanished.",
"predicament": "A suspect refuses to explain the one thing that could clear him, to protect a secret of his own."
},
{
"chunk": 101,
"story": 3,
"summary": "The garment vanished while his back was turned; the coroner calls every point in his account suspicious.",
"predicament": "An accused man's strangest details, which could clear him, are exactly what make the official doubt his story."
},
{
"chunk": 102,
"story": 3,
"summary": "The investigator says the odd details favour the son and resolves to assume his story is true; at the country town a sly police officer meets them.",
"predicament": "An investigator chooses to believe an accused man's unlikely story and test where it leads, against official opinion."
},
{
"chunk": 103,
"story": 3,
"summary": "The officer thinks the case plain; the accused's childhood friend bursts in insisting he is innocent.",
"predicament": "A loyal friend of an accused man insists on his innocence to investigators who think the case already closed."
},
{
"chunk": 104,
"story": 3,
"summary": "The young woman reveals the quarrel was about the father's wish that the two marry, which neither the son nor her own father wanted.",
"predicament": "Someone defending an accused friend reveals a private family quarrel she was part of, hoping it will help him."
},
{
"chunk": 105,
"story": 3,
"summary": "Her father, who knew the dead man in the colonies, has collapsed with illness; the officer rebukes the investigator for raising false hopes.",
"predicament": "An investigator gives a frightened friend hope that the accused is innocent, and is accused of cruelty for it."
},
{
"chunk": 106,
"story": 3,
"summary": "Alone, the narrator studies the inquest report and notes the fatal blow came from behind, and ponders the dying word and grey cloth.",
"predicament": "A companion left alone turns over the evidence himself, trying to see what the officials missed."
},
{
"chunk": 107,
"story": 3,
"summary": "The investigator returns: the son knows nothing more, and is honest but slow.",
"predicament": "An investigator visits an accused man and finds him honest, bewildered, and no help at all in clearing himself."
},
{
"chunk": 108,
"story": 3,
"summary": "The son had secretly married unwisely, so could not propose to the woman he loved; that secret wife has now abandoned him.",
"predicament": "A young man hid a disastrous secret marriage from a harsh father who pressed him to marry someone else."
},
{
"chunk": 109,
"story": 3,
"summary": "The investigator stresses the father had an appointment and called out before he knew his son was near; the rich neighbour is said to be dying.",
"predicament": "An investigator notices a dead man was meeting someone else entirely, someone the whole district has overlooked."
},
{
"chunk": 110,
"story": 3,
"summary": "The investigator finds it odd the poor tenant expected to marry his son to his rich patron's heiress; the officer mocks theories.",
"predicament": "An investigator suspects a poor man had some hold over the rich neighbour who helped him, while an official mocks theories."
},
{
"chunk": 111,
"story": 3,
"summary": "At the farm the investigator measures the boots of the dead man and his son, then follows the path to the pool.",
"predicament": "An investigator gathers small physical evidence at a grieving household before walking the ground where the death happened."
},
{
"chunk": 112,
"story": 3,
"summary": "The investigator follows the trail like a hound, ignoring questions, while the officer watches with contempt.",
"predicament": "An investigator absorbed in the hunt ignores his companions while a sceptical official looks on with contempt."
},
{
"chunk": 113,
"story": 3,
"summary": "At the pool he reads the trampled ground and knows the officer has been raking in the water.",
"predicament": "An investigator finds the scene of a crime already trampled by careless officials who got there first."
},
{
"chunk": 114,
"story": 3,
"summary": "He finds the son's tracks, the father's, and a third person's odd tiptoe tracks behind a tree, and gathers ash and a stone.",
"predicament": "An investigator finds signs that a third person watched a quarrel from hiding and slipped back for something left behind."
},
{
"chunk": 115,
"story": 3,
"summary": "He tells the officer the stone was the weapon and describes the killer in detail; the officer scoffs at theories.",
"predicament": "An investigator describes a culprit in detail, and the official in charge refuses to go looking for him."
},
{
"chunk": 116,
"story": 3,
"summary": "The officer refuses to hunt for such a man; the investigator is troubled and asks the narrator's advice.",
"predicament": "An investigator knows who is guilty and is troubled about what to do with the knowledge."
},
{
"chunk": 117,
"story": 3,
"summary": "The investigator explains that the call was one used by colonists and that the dying word named a place in the colony.",
"predicament": "An investigator realises a dying man's half-heard words were naming his killer, not raving."
},
{
"chunk": 118,
"story": 3,
"summary": "He explains how he read the killer's height, lameness, left hand and habits from tracks and ash; the narrator sees who it must be.",
"predicament": "An investigator has built a case against someone from small signs, and the only question left is what to do."
},
{
"chunk": 119,
"story": 3,
"summary": "The dying rich neighbour arrives and admits he knows why; he would have spoken if the son were convicted, but fears for his daughter.",
"predicament": "A dying man guilty of a killing would confess to save the innocent accused, but dreads what it will do to his child."
},
{
"chunk": 120,
"story": 3,
"summary": "The investigator, not bound to the police, takes a signed confession to use only if needed; the old man begins his story of being in the dead man's power.",
"predicament": "An investigator bound only to his client offers a dying culprit a signed confession to use only if an innocent is condemned."
},
{
"chunk": 121,
"story": 3,
"summary": "The old man confesses that as a young man in the colony he became a highway robber.",
"predicament": "A respected man confesses that his fortune began in a violent crime committed long ago under another name."
},
{
"chunk": 122,
"story": 3,
"summary": "He robbed a gold convoy but spared a driver who memorised his face, then went home rich, reformed and raised a daughter.",
"predicament": "A reformed man who built a respectable life on stolen money meets the one witness who can expose him."
},
{
"chunk": 123,
"story": 3,
"summary": "The witness blackmailed him for twenty years, living off him, and at last demanded the man's daughter marry his son.",
"predicament": "A man long blackmailed over his past pays everything he is asked until the blackmailer demands his child."
},
{
"chunk": 124,
"story": 3,
"summary": "He overheard the blackmailer urging his son to marry the daughter, and struck him down in desperation; the investigator refuses to judge him.",
"predicament": "A desperate man bled for years by a blackmailer kills him to protect his child, and would do it again."
},
{
"chunk": 125,
"story": 3,
"summary": "The investigator decides to keep the confession secret unless the son is condemned; the son is acquitted and the old man dies months later.",
"predicament": "An investigator chooses mercy over the law, keeping a dying culprit's secret as long as the innocent goes free."
}
]
@@ -0,0 +1,170 @@
[
{
"chunk": 126,
"story": 4,
"summary": "The narrator explains he is choosing, from many cases, one that was startling but never fully cleared up.",
"predicament": "A chronicler must decide whether to tell a story whose ending was never fully explained or proven."
},
{
"chunk": 127,
"story": 4,
"summary": "He lists other cases from that year before turning to the strangest of them.",
"predicament": "A chronicler passes over many lesser matters to reach the one case that still troubles him."
},
{
"chunk": 128,
"story": 4,
"summary": "On a stormy night a bell rings; the investigator, who has no friends but the narrator, guesses only a serious case would bring anyone out.",
"predicament": "Two companions sheltering from a storm hear an unexpected visitor, and know only real trouble would bring someone out tonight."
},
{
"chunk": 129,
"story": 4,
"summary": "A pale, anxious young man arrives from the country, asking for help and noting the investigator's reputation; he is told the investigator has been beaten four times.",
"predicament": "A frightened young man seeks help from a stranger he has been told never fails, and hears that he sometimes does."
},
{
"chunk": 130,
"story": 4,
"summary": "The visitor explains the trouble is inherited, beginning with his father's successful business and his uncle.",
"predicament": "A young man explains that the danger hanging over him was handed down to him with his family's fortune."
},
{
"chunk": 131,
"story": 4,
"summary": "His uncle made a fortune abroad, fought in a war, then came home and lived as a fierce, drinking recluse.",
"predicament": "A relative who came home rich from abroad lived shut away from everyone, as if hiding from something."
},
{
"chunk": 132,
"story": 4,
"summary": "The uncle took to the boy and made him master of the house, except for one attic room he always kept locked.",
"predicament": "A young person is trusted with everything in a household except one locked room no one may enter."
},
{
"chunk": 133,
"story": 4,
"summary": "A letter arrived holding five dried seeds and three initials; the uncle turned grey with terror, said his sins had caught him up, and fetched a box from the attic.",
"predicament": "A man receives a silent token he recognises as a death threat from people he wronged long ago."
},
{
"chunk": 134,
"story": 4,
"summary": "The uncle burned the box's papers and made the nephew witness a will leaving the estate to his father, warning it was a double-edged gift.",
"predicament": "A frightened man destroys what his pursuers want and leaves his estate to a relative with an ominous warning."
},
{
"chunk": 135,
"story": 4,
"summary": "After that the uncle drank more, locked himself in, and sometimes rushed out armed, screaming he feared no one.",
"predicament": "A man living under a death threat swings between locking himself in and raging defiantly at an enemy he cannot see."
},
{
"chunk": 136,
"story": 4,
"summary": "The uncle was found drowned in a shallow garden pool; the verdict was suicide, though the nephew doubted it; his father inherited.",
"predicament": "A threatened man is found dead in what is called suicide, and only his relative doubts the verdict."
},
{
"chunk": 137,
"story": 4,
"summary": "The father found the box's label; two years later he received the same token with an order to leave the papers on the sundial.",
"predicament": "A person who laughed off a relative's fear receives the same threat himself and is suddenly afraid."
},
{
"chunk": 138,
"story": 4,
"summary": "The father dismissed it as a joke and forbade the son to go to the police for fear of ridicule.",
"predicament": "A threatened man refuses to take a warning seriously or let anyone go to the authorities, for fear of looking foolish."
},
{
"chunk": 139,
"story": 4,
"summary": "The father died days later in a fall into an unfenced pit, ruled an accident; the son inherited, convinced it was murder but unable to prove it.",
"predicament": "A young heir is sure his relative was murdered, but every sign says it was an accident."
},
{
"chunk": 140,
"story": 4,
"summary": "After nearly three quiet years the son received the same token; the police laughed at him and he felt helplessly doomed.",
"predicament": "A person who has received a death threat his relatives did not survive is dismissed by the authorities as a crank."
},
{
"chunk": 141,
"story": 4,
"summary": "The investigator is angry he waited; the son produces a surviving diary page recording warnings sent and victims cleared.",
"predicament": "A threatened young man brings his helper a single torn scrap of proof, too late to do more than guess."
},
{
"chunk": 142,
"story": 4,
"summary": "The investigator tells him to leave the surviving page in the box on the sundial with a note saying the rest were burned, and to take great care.",
"predicament": "A threatened person is told to give his pursuers what they want at once and to put revenge aside until he is safe."
},
{
"chunk": 143,
"story": 4,
"summary": "The young man leaves armed into the storm; the investigator says the danger is greater than any they have faced.",
"predicament": "An investigator sends a frightened client back out into danger alone, and begins to realise how grave it is."
},
{
"chunk": 144,
"story": 4,
"summary": "The investigator speaks of reasoning from one fact to a whole chain of events, and of needing all useful knowledge.",
"predicament": "An investigator who believes a single fact can reveal a whole chain of events sets out to prove it."
},
{
"chunk": 145,
"story": 4,
"summary": "He reasons the uncle fled abroad in fear, and asks the narrator to note the letters' postmarks.",
"predicament": "An investigator reasons that a man who fled abroad and hid for years was running from someone."
},
{
"chunk": 146,
"story": 4,
"summary": "He deduces the senders are on a sailing ship, that the blow falls when they arrive, and that this time there will be no delay.",
"predicament": "An investigator realises too late that his client has no time left, because the enemy is already close."
},
{
"chunk": 147,
"story": 4,
"summary": "He concludes the killers are a group determined to recover the papers, and names a secret society.",
"predicament": "An investigator realises his client is hunted not by one enemy but by an organised group that wants its papers back."
},
{
"chunk": 148,
"story": 4,
"summary": "The encyclopedia describes a secret society that sent warning tokens before killing those who defied it.",
"predicament": "Someone learns that the threat against a family comes from a society that warns once and then kills."
},
{
"chunk": 149,
"story": 4,
"summary": "He reasons the uncle's papers could implicate powerful men, so the society will stop at nothing; next morning he starts inquiries.",
"predicament": "An investigator concludes that stolen records could ruin powerful people, who will kill anyone holding them."
},
{
"chunk": 150,
"story": 4,
"summary": "The newspaper reports the young man drowned near the river that night, ruled an accident.",
"predicament": "An investigator learns that the client he sent home with advice was killed that same night."
},
{
"chunk": 151,
"story": 4,
"summary": "The investigator's pride is hurt; he vows to catch the gang himself without the police, and returns late, starved but successful.",
"predicament": "An investigator who sent a client to his death takes it personally and vows to catch the killers himself."
},
{
"chunk": 152,
"story": 4,
"summary": "He sends the killers' own token to the ship's master, and explains how he traced the ship through shipping registers.",
"predicament": "An investigator turns his enemies' own threat back on them, having traced them through dull public records."
},
{
"chunk": 153,
"story": 4,
"summary": "The ship had sailed; he has cabled for the men's arrest at their home port, but the ship is lost at sea with all hands.",
"predicament": "An investigator has the killers in his grasp, and justice is taken out of his hands by chance."
}
]
@@ -0,0 +1,212 @@
[
{
"chunk": 154,
"story": 5,
"summary": "The narrator recalls an addicted friend; late one night the addict's wife bursts in, veiled and sobbing, to the narrator's wife.",
"predicament": "A frightened spouse turns up late at a friend's door in tears, needing help she cannot get anywhere else."
},
{
"chunk": 155,
"story": 5,
"summary": "The wife explains her husband has been missing in a drug den for two days, and she cannot go in after him herself.",
"predicament": "A spouse knows where her addicted partner is hiding but cannot bring herself to go into that place to fetch him."
},
{
"chunk": 156,
"story": 5,
"summary": "The narrator offers to go alone and bring the man home; he descends into the den by the docks.",
"predicament": "Someone agrees to walk into a dangerous den alone to bring home a friend's lost spouse."
},
{
"chunk": 157,
"story": 5,
"summary": "Among the stupefied smokers he finds his friend, who has lost track of the days and weeps.",
"predicament": "A person sent to rescue an addict finds him confused, ashamed, and unaware how long he has been gone."
},
{
"chunk": 158,
"story": 5,
"summary": "The addict agrees to go home and asks the narrator to settle his debt.",
"predicament": "An ashamed addict agrees to go home but cannot even settle his own debts without help."
},
{
"chunk": 159,
"story": 5,
"summary": "An old man by the brazier whispers to him; it is the investigator in disguise, who asks him to get rid of his friend.",
"predicament": "Someone on a rescue errand is secretly signalled by a disguised friend who must not be recognised."
},
{
"chunk": 160,
"story": 5,
"summary": "The narrator sends the addict home and joins the investigator, who was there hunting an enemy.",
"predicament": "A person finishes one errand of mercy and is drawn at once into a friend's far more dangerous hunt."
},
{
"chunk": 161,
"story": 5,
"summary": "The investigator explains the den's owner has sworn revenge on him, and that a missing man may have been murdered there.",
"predicament": "An investigator risks his life in disguise among enemies who would kill him if they knew him."
},
{
"chunk": 162,
"story": 5,
"summary": "They drive into the country; the investigator dreads facing the missing man's wife without news.",
"predicament": "An investigator dreads facing a waiting spouse when he still has no news of the person she has lost."
},
{
"chunk": 163,
"story": 5,
"summary": "He explains the missing man was a respectable, prosperous husband and father with no debts.",
"predicament": "An investigator is baffled by the disappearance of a respectable family man with no apparent troubles or enemies."
},
{
"chunk": 164,
"story": 5,
"summary": "The man went to town promising his son a toy; by chance his wife was called to an office near the den the same day.",
"predicament": "A spouse happens to be in a rough part of town on an errand at the very hour her partner is there."
},
{
"chunk": 165,
"story": 5,
"summary": "The wife saw her husband at the den's upper window, agitated and half-dressed, before he was pulled or leapt back.",
"predicament": "A spouse glimpses her partner in a place he should never be, in distress, before he vanishes from sight."
},
{
"chunk": 166,
"story": 5,
"summary": "She was thrown out of the den, fetched the police, and found only a crippled beggar there, until she found the toy her husband had promised.",
"predicament": "A spouse is told she imagined seeing her partner, until she finds the proof he was really there."
},
{
"chunk": 167,
"story": 5,
"summary": "Blood on the window, the man's clothes hidden, and the high tide suggest he was killed and thrown into the river.",
"predicament": "Searchers find every sign that a missing man was killed and his body disposed of, but no body."
},
{
"chunk": 168,
"story": 5,
"summary": "The den keeper, a known villain, claims to know nothing of his lodger's doings or the missing man's clothes.",
"predicament": "A known villain denies all knowledge of a crime in his own house, and the evidence cannot yet contradict him."
},
{
"chunk": 169,
"story": 5,
"summary": "The investigator describes the lodger, a well-known scarred beggar with a quick wit, the last man to see the missing man.",
"predicament": "A notorious, pitiable figure everyone knows by sight becomes the chief suspect in a disappearance."
},
{
"chunk": 170,
"story": 5,
"summary": "The narrator doubts a cripple could overpower a strong man; the investigator says he is powerful apart from his limp.",
"predicament": "Someone doubts a suspect could have done it, and is told the suspect is stronger than he looks."
},
{
"chunk": 171,
"story": 5,
"summary": "The beggar was arrested with blood on his sleeve which he blamed on a cut, denied all, and called the wife mad; the missing man's coat turned up in the mud.",
"predicament": "A suspect with blood on his sleeve denies everything, insists the only witness is mad, and waits."
},
{
"chunk": 172,
"story": 5,
"summary": "The coat's pockets were stuffed with coins; the police theorise the beggar weighted it to sink with the body.",
"predicament": "Investigators build a plausible theory of a murder that fits every fact and is entirely wrong."
},
{
"chunk": 173,
"story": 5,
"summary": "No questions are answered; they arrive at the missing man's country home, where his wife is waiting.",
"predicament": "An investigator who has found nothing arrives to face a waiting spouse who hopes for news."
},
{
"chunk": 174,
"story": 5,
"summary": "The wife runs out hoping for news and is told there is none, good or bad; she greets them warmly.",
"predicament": "A person waiting for word of a missing partner meets her helpers at the door and learns there is no news."
},
{
"chunk": 175,
"story": 5,
"summary": "She asks for his honest opinion, and he says her husband is dead; she then produces a letter from him received that day.",
"predicament": "An investigator gives a waiting spouse his honest belief that her partner is dead, and she shows him proof he is wrong."
},
{
"chunk": 176,
"story": 5,
"summary": "The investigator examines the envelope and the note, written in her husband's hurried hand and enclosing his ring.",
"predicament": "An investigator must decide whether a letter from a supposedly dead man is genuine or a clever forgery."
},
{
"chunk": 177,
"story": 5,
"summary": "The note asks her to wait in patience; he warns it may be forged or old; she insists she would sense if he were dead.",
"predicament": "A spouse trusts her own certainty that her partner is alive, while her helper warns the proof may be forged."
},
{
"chunk": 178,
"story": 5,
"summary": "He questions her closely about what she saw at the window and whether her husband ever took drugs.",
"predicament": "An investigator presses a witness on exactly what she saw, trying to separate what happened from what she feared."
},
{
"chunk": 179,
"story": 5,
"summary": "The investigator sits up all night smoking and thinking on a heap of cushions.",
"predicament": "An investigator stays up all night turning a puzzle over until he either solves it or knows he cannot."
},
{
"chunk": 180,
"story": 5,
"summary": "At dawn he calls himself a fool, says he has the key in his bag, and drives to town.",
"predicament": "An investigator realises at dawn that the answer was in front of him all along, and hurries to test it."
},
{
"chunk": 181,
"story": 5,
"summary": "At the police station he asks after the beggar, whom the officer calls filthy and refusing to wash.",
"predicament": "An investigator calls on the authorities to see a suspect who has refused to let anyone see his face clean."
},
{
"chunk": 182,
"story": 5,
"summary": "They look into the cell at the sleeping, scarred beggar; the investigator produces a sponge.",
"predicament": "An investigator comes to unmask a sleeping prisoner, bringing the humble tool that will do it."
},
{
"chunk": 183,
"story": 5,
"summary": "He washes the prisoner's face and reveals the missing man; the man claims that since no crime occurred he is illegally held.",
"predicament": "A respectable man living a secret double life is unmasked in custody and tries to bluster his way out."
},
{
"chunk": 184,
"story": 5,
"summary": "The man groans that he hid for his children's sake; the investigator offers to keep it out of court and the papers.",
"predicament": "A man exposed in a shameful secret life is offered discretion if he makes a full confession to the authorities."
},
{
"chunk": 185,
"story": 5,
"summary": "He confesses that as a journalist he posed as a beggar for a story, then used it to pay a debt.",
"predicament": "A person confesses that a disguise first used for honest reasons became the easy answer to money trouble."
},
{
"chunk": 186,
"story": 5,
"summary": "Begging paid far better than honest work, so he gave up his trade, married and lived well, his wife never knowing.",
"predicament": "A person earning well by a shameful secret trade builds a respectable life on it, keeping the truth even from his spouse."
},
{
"chunk": 187,
"story": 5,
"summary": "Seen at the window by his wife, he disguised himself, threw out his weighted coat, and was arrested for his own murder.",
"predicament": "A person seen in his secret life by his spouse would rather be accused of his own murder than be recognised."
},
{
"chunk": 188,
"story": 5,
"summary": "He sent a note to his wife that was delayed; the police agree to hush it up if he gives up begging for good.",
"predicament": "A person caught in a shameful double life is allowed to keep his secret only by swearing to give it up forever."
}
]
@@ -0,0 +1,176 @@
[
{
"chunk": 189,
"story": 6,
"summary": "After the holiday the narrator finds the investigator studying a battered old hat, which he says is trivial but instructive.",
"predicament": "A person finds a friend absorbed in some trifle and suspects it hides a serious story."
},
{
"chunk": 190,
"story": 6,
"summary": "The investigator says no crime is involved, only one of the odd incidents a crowded city throws up; the hat belongs to a finder.",
"predicament": "An investigator is content to study a puzzle that involves no crime at all, purely for its own interest."
},
{
"chunk": 191,
"story": 6,
"summary": "A man carrying a goose was set upon by roughs, broke a window with his stick, and fled when a uniformed passer-by ran up, leaving hat and bird.",
"predicament": "A man attacked in the street panics at the sight of someone in uniform and runs, leaving his belongings behind."
},
{
"chunk": 192,
"story": 6,
"summary": "The goose's tag and hat bear a common name, so the owner cannot be traced; the investigator challenges the narrator to read the hat.",
"predicament": "Someone holding a stranger's lost property has only a common name to go on, and wants to return it."
},
{
"chunk": 193,
"story": 6,
"summary": "The narrator sees nothing; the investigator infers the owner is clever, fallen on hard times, perhaps drinking, and no longer loved by his wife.",
"predicament": "A person is shown how much a stranger's decline can be read from one shabby thing he left behind."
},
{
"chunk": 194,
"story": 6,
"summary": "He adds the owner is sedentary, middle-aged, recently barbered, and explains the hat's size and age.",
"predicament": "Someone is told a stranger's whole history from a single object, and doubts it until each step is explained."
},
{
"chunk": 195,
"story": 6,
"summary": "He explains the foresight, the neglect and the attempt to hide stains as signs of a weakening but proud man.",
"predicament": "An investigator reads a proud man's slide into neglect from the small repairs he has stopped bothering to make."
},
{
"chunk": 196,
"story": 6,
"summary": "He explains the wife and candle inferences; the narrator calls it wasted effort, when the finder bursts in about the goose.",
"predicament": "A person scoffs that a puzzle without a crime is wasted effort, just as it turns into something serious."
},
{
"chunk": 197,
"story": 6,
"summary": "The finder's wife found a famous stolen gem in the goose's crop, worth a huge reward; a workman has been charged with stealing it.",
"predicament": "A person of modest means suddenly finds a stolen treasure in his hands, with a large reward on offer."
},
{
"chunk": 198,
"story": 6,
"summary": "The report: a hotel attendant testified he left a workman with a previous conviction alone in the room; the workman protested his innocence and fainted.",
"predicament": "A workman with a past conviction is accused of a theft on one witness's word, and faints protesting his innocence."
},
{
"chunk": 199,
"story": 6,
"summary": "The investigator resolves to trace the path from the jewel case to the goose, and advertises for the hat's owner.",
"predicament": "An investigator must trace how a stolen treasure travelled from the crime to an innocent stranger's hands."
},
{
"chunk": 200,
"story": 6,
"summary": "He keeps the stone, calling it a lure for crime, and doubts both the accused man's guilt and the goose owner's involvement.",
"predicament": "An investigator holding a stolen treasure must decide whether the man already accused of taking it is guilty."
},
{
"chunk": 201,
"story": 6,
"summary": "He thinks the goose's owner innocent; that evening the man arrives and claims his hat.",
"predicament": "An investigator sets a small test to learn whether a stranger knows more than he seems to about a stolen treasure."
},
{
"chunk": 202,
"story": 6,
"summary": "The shabby, learned man explains he could not afford to advertise, and happily accepts a substitute goose.",
"predicament": "A proud, impoverished man admits he could not afford to seek his loss, and gladly takes a substitute."
},
{
"chunk": 203,
"story": 6,
"summary": "He shows no interest in the original bird's remains, proving his innocence, and names the inn where he got it.",
"predicament": "A stranger passes an unspoken test of innocence without knowing he was being tested."
},
{
"chunk": 204,
"story": 6,
"summary": "They go to the inn; the landlord says he bought the geese from a market dealer.",
"predicament": "An investigator follows a trail link by link, each person pointing to the one before."
},
{
"chunk": 205,
"story": 6,
"summary": "The investigator reminds the narrator an innocent man faces prison; the dealer angrily refuses to say where he bought the geese.",
"predicament": "An investigator knows an innocent man will be convicted unless he can trace one small thing, and meets a stubborn refusal."
},
{
"chunk": 206,
"story": 6,
"summary": "The dealer is sick of questions about the geese; the investigator draws him with a bet that the birds were country bred.",
"predicament": "Someone who refuses to answer questions is drawn into giving everything away by the chance to win a bet."
},
{
"chunk": 207,
"story": 6,
"summary": "The dealer's books show the geese came from a woman in town; the investigator pays up and laughs.",
"predicament": "An investigator loses a small wager on purpose and gets exactly the information he needed."
},
{
"chunk": 208,
"story": 6,
"summary": "He notes others are asking about the geese; a frightened little man is driven off by the dealer, demanding a goose that was his.",
"predicament": "An investigator sees someone else anxiously chasing the same trail and guesses who has most to lose."
},
{
"chunk": 209,
"story": 6,
"summary": "The investigator overtakes the little man, who is terrified, then eager for help; he gives a false name.",
"predicament": "A frightened person desperate to recover something is offered help by a stranger, and hides his name."
},
{
"chunk": 210,
"story": 6,
"summary": "The investigator names the man as the hotel attendant; in his rooms he says the goose laid a blue egg.",
"predicament": "A thief hoping to recover his loot is led to believe help is at hand and walks into a trap."
},
{
"chunk": 211,
"story": 6,
"summary": "Shown the gem, the attendant nearly collapses; the investigator says the game is up.",
"predicament": "A thief is shown the stolen treasure and told his guilt is known, with no way left to deny it."
},
{
"chunk": 212,
"story": 6,
"summary": "The investigator reveals the attendant framed the workman; the thief begs for mercy for his parents' sake and offers to flee.",
"predicament": "A thief who framed an innocent man for his crime begs for mercy and offers to run away."
},
{
"chunk": 213,
"story": 6,
"summary": "He confesses he took the stone to his sister's house, terrified of being searched on the way.",
"predicament": "A thief who has framed someone else is too frightened to keep the loot on him, and must hide it quickly."
},
{
"chunk": 214,
"story": 6,
"summary": "He planned to take it to a criminal friend, and hit on the idea of hiding it in a goose.",
"predicament": "A thief with stolen goods and no way to sell them turns to a disreputable old friend for help."
},
{
"chunk": 215,
"story": 6,
"summary": "He fed the stone to a goose, which escaped among the flock; he insisted on taking the bird he thought it was.",
"predicament": "A thief hides his loot in a clever way, and a small accident means he loses track of it."
},
{
"chunk": 216,
"story": 6,
"summary": "The goose held no stone; the flock was sold on and he could not trace it; he sobs that he is a thief with nothing; the investigator tells him to get out.",
"predicament": "A thief who sacrificed his honour for loot he never held breaks down, and is let go."
},
{
"chunk": 217,
"story": 6,
"summary": "The investigator reasons the case against the workman will collapse, and that jail would make the thief a criminal for life.",
"predicament": "An investigator lets a frightened first offender go free, choosing mercy over the law he is not paid to enforce."
}
]
@@ -0,0 +1,212 @@
[
{
"chunk": 218,
"story": 7,
"summary": "The narrator explains he was sworn to secrecy until the client's death; early one morning the investigator wakes him.",
"predicament": "A chronicler has kept a promise of silence for years and now must decide whether to tell the story."
},
{
"chunk": 219,
"story": 7,
"summary": "A terrified young woman in black has arrived early; she says she shivers not from cold but fear.",
"predicament": "A frightened visitor arrives before dawn, too afraid to wait, to beg strangers for help."
},
{
"chunk": 220,
"story": 7,
"summary": "Her face is haggard and grey; the investigator reads her early journey from her ticket and mud splashes.",
"predicament": "A frightened young woman is startled when a stranger reads her whole journey from small signs."
},
{
"chunk": 221,
"story": 7,
"summary": "She has no one to help her but a fiancé who can do little; she offers to pay once she marries and controls her own money.",
"predicament": "A frightened young woman with no money of her own asks for help she can only repay once she is free."
},
{
"chunk": 222,
"story": 7,
"summary": "Her fears are so vague that even her fiancé thinks them nerves; she lives with her stepfather in an old ruined family house.",
"predicament": "A person whose fears rest on small signs is gently dismissed as nervous by the very person she should trust."
},
{
"chunk": 223,
"story": 7,
"summary": "The family fortune is gone; the stepfather made a career abroad but killed a servant in rage and was imprisoned.",
"predicament": "A young woman lives under the roof of a relative with a violent past and a ruined fortune."
},
{
"chunk": 224,
"story": 7,
"summary": "The mother's money passes to the stepfather unless the daughters marry; he has become a violent recluse, feared by the village.",
"predicament": "A young woman depends on a violent relative who controls her money and loses it if she marries."
},
{
"chunk": 225,
"story": 7,
"summary": "He threw a smith into a stream; the daughter paid to hush it up; he keeps wild animals and wanderers on his land, and the sisters lived in fear.",
"predicament": "A young woman pays to cover up a violent relative's attacks, and lives in fear under his roof."
},
{
"chunk": 226,
"story": 7,
"summary": "Her twin sister died two years ago, a fortnight before her wedding; she describes the three bedrooms along one corridor.",
"predicament": "A young woman whose sister died just before her wedding tells a stranger exactly how the house is laid out."
},
{
"chunk": 227,
"story": 7,
"summary": "The night of her death her sister asked if she had heard a whistle at night; they locked their doors for fear of the animals.",
"predicament": "Two sisters, too afraid to sleep unlocked, share a small uneasy sign of danger and dismiss it."
},
{
"chunk": 228,
"story": 7,
"summary": "She heard her sister scream, a whistle and a clang; the sister staggered out, cried about a speckled band, pointed toward the stepfather's room, and died.",
"predicament": "A young woman watches her sister die in terror, pointing toward the relative neither dared to accuse."
},
{
"chunk": 229,
"story": 7,
"summary": "The inquiry found the room sealed and no cause of death; she believes her sister died of fright.",
"predicament": "A death no one can explain is put down to fright, and the only witness cannot swear to what she heard."
},
{
"chunk": 230,
"story": 7,
"summary": "She is now engaged; forced by repairs to sleep in her dead sister's bed, she heard the same whistle and fled at dawn.",
"predicament": "A young woman, newly engaged, finds herself in the very place and danger that killed her sister before her wedding."
},
{
"chunk": 231,
"story": 7,
"summary": "The investigator reveals bruises on her wrist; she excuses her stepfather; they plan to inspect the rooms while he is away.",
"predicament": "A frightened young woman shields the violent relative who hurt her, even while asking for help against him."
},
{
"chunk": 232,
"story": 7,
"summary": "After she leaves, the investigator lays out a tentative theory involving the wanderers and a falling bar; both see objections.",
"predicament": "An investigator has a theory that fits most of the facts and knows it does not fit them all."
},
{
"chunk": 233,
"story": 7,
"summary": "The stepfather bursts in, demanding what his stepdaughter said; the investigator answers with small talk.",
"predicament": "A violent man traces his stepdaughter to her helpers and demands to know what she told them."
},
{
"chunk": 234,
"story": 7,
"summary": "He bends a poker and threatens the investigator, who straightens it after he leaves and worries for the young woman.",
"predicament": "A violent man threatens the people helping his victim, and they fear he will take it out on her."
},
{
"chunk": 235,
"story": 7,
"summary": "The will shows each daughter's marriage would cut the stepfather's income badly, giving him a strong motive.",
"predicament": "An investigator finds that a guardian stands to lose most of his income if his ward marries."
},
{
"chunk": 236,
"story": 7,
"summary": "They travel into the country and see the old house; a driver points them to the young woman on the path.",
"predicament": "Helpers arrive quietly near a dangerous house, trying not to be noticed by anyone who might talk."
},
{
"chunk": 237,
"story": 7,
"summary": "The young woman is terrified to learn her stepfather followed her; the investigator promises to protect her.",
"predicament": "A young woman learns her violent guardian followed her in secret, and fears what he will do tonight."
},
{
"chunk": 238,
"story": 7,
"summary": "He examines the outside; she believes the repairs were an excuse to move her into her sister's room.",
"predicament": "A young woman suspects her guardian invented an excuse to move her into the room where her sister died."
},
{
"chunk": 239,
"story": 7,
"summary": "The shutters cannot be forced from outside; inside, he studies the room and a new bell-rope by the bed.",
"predicament": "An investigator finds his theory will not work and must look again at the room with fresh eyes."
},
{
"chunk": 240,
"story": 7,
"summary": "The bell-rope is a dummy fixed near a ventilator that opens into the stepfather's room; both were added recently.",
"predicament": "An investigator finds small recent changes in a victim's room that make no sense unless someone intended harm."
},
{
"chunk": 241,
"story": 7,
"summary": "In the stepfather's room he finds a safe, a saucer of milk, a chair stood on, and a lash tied in a loop.",
"predicament": "An investigator searches a suspect's private room and finds innocent-looking things that together point to murder."
},
{
"chunk": 242,
"story": 7,
"summary": "The investigator, grim, tells her to signal them from her window, then hide in her old room.",
"predicament": "An investigator tells a threatened person her life depends on following his instructions exactly tonight."
},
{
"chunk": 243,
"story": 7,
"summary": "He will not name the cause yet; from the inn they watch the stepfather return in a rage.",
"predicament": "A frightened person begs for the truth about her sister's death, and her helper will not speak without proof."
},
{
"chunk": 244,
"story": 7,
"summary": "The investigator explains he deduced the ventilator and notes the bed is clamped to the floor.",
"predicament": "An investigator explains that a victim's bed was fixed in place so that she could never move out of harm's way."
},
{
"chunk": 245,
"story": 7,
"summary": "The narrator begins to see a horrible plan; at the signal they set out in the dark.",
"predicament": "Helpers realise a cold, clever relative has been trying to kill his ward by a method no one could trace."
},
{
"chunk": 246,
"story": 7,
"summary": "They enter the grounds; a wild animal startles them; inside they sit in the dark, armed, in silence.",
"predicament": "Two people keep a silent armed watch in a victim's room, knowing any sound could warn a killer."
},
{
"chunk": 247,
"story": 7,
"summary": "After hours of waiting a lantern gleams through the ventilator and a hiss is heard; the investigator strikes at the rope.",
"predicament": "Watchers waiting in the dark for a hidden killer finally hear it coming and must strike without seeing."
},
{
"chunk": 248,
"story": 7,
"summary": "A terrible scream rings out from the next room; the investigator says it is all over.",
"predicament": "A person who struck at a hidden danger hears it find its master instead."
},
{
"chunk": 249,
"story": 7,
"summary": "The stepfather sits dead, bitten by the snake he trained; the investigator returns it to the safe.",
"predicament": "A schemer who planned a hidden death for another is killed by his own weapon."
},
{
"chunk": 250,
"story": 7,
"summary": "They take the young woman to her aunt; the inquiry blames a dangerous pet.",
"predicament": "The truth about a guardian's death is quietly left out of the official finding, sparing everyone."
},
{
"chunk": 251,
"story": 7,
"summary": "The investigator admits he first reasoned wrongly, then explains how the snake was trained to crawl down the rope.",
"predicament": "An investigator admits his first theory was wrong and explains how he corrected it in time."
},
{
"chunk": 252,
"story": 7,
"summary": "He explains the rest, and admits he is indirectly responsible for the stepfather's death, without regret.",
"predicament": "An investigator admits he caused a killer's death, and says it will not trouble his conscience."
}
]
@@ -0,0 +1,194 @@
[
{
"chunk": 253,
"story": 8,
"summary": "The narrator introduces one of only two cases he brought to the investigator, a dramatic one already told badly in the papers.",
"predicament": "A chronicler wants to tell properly a story the newspapers already told carelessly and without its real effect."
},
{
"chunk": 254,
"story": 8,
"summary": "Early one morning a grateful railway guard brings a new patient to the narrator's door so that he cannot slip away.",
"predicament": "A grateful acquaintance delivers a stranger in trouble straight to a helper's door, making sure he stays."
},
{
"chunk": 255,
"story": 8,
"summary": "A pale young engineer with a bloodied hand explains he had an accident, then breaks into hysterical laughter.",
"predicament": "A young man who has just survived something terrible holds himself together until relief makes him break down."
},
{
"chunk": 256,
"story": 8,
"summary": "He shows that his thumb was hacked off, calls it a murderous attack, and the narrator dresses the wound.",
"predicament": "A person arrives with a terrible wound and calmly says it was no accident but an attempt on his life."
},
{
"chunk": 257,
"story": 8,
"summary": "He fears the police will not believe his strange story or be able to act; the narrator takes him to the investigator.",
"predicament": "A victim fears no one will believe his story or be able to act on the vague clues he can give."
},
{
"chunk": 258,
"story": 8,
"summary": "The investigator feeds him breakfast and settles him on the sofa to hear his story.",
"predicament": "A shaken stranger is taken in kindly and made comfortable before he is asked to tell his story."
},
{
"chunk": 259,
"story": 8,
"summary": "The engineer explains he is an orphan who set up alone and had almost no work in two years.",
"predicament": "A young person starting out alone has waited two years for work, and has begun to lose hope."
},
{
"chunk": 260,
"story": 8,
"summary": "A strange, gaunt foreign client calls, having heard he is discreet, an orphan, a bachelor, and lives alone.",
"predicament": "A struggling beginner is flattered by a stranger who has oddly checked that no one would miss him."
},
{
"chunk": 261,
"story": 8,
"summary": "The client demands absolute secrecy, checks the passage for listeners, and offers a large fee for a night's work.",
"predicament": "A desperate beginner is offered far too much money by a stranger who insists no one must ever know."
},
{
"chunk": 262,
"story": 8,
"summary": "The job is to inspect a machine at a remote country house late at night; the engineer hesitates but accepts for the money.",
"predicament": "A person short of work swallows his doubts about a strange late-night job because the pay is too good to refuse."
},
{
"chunk": 263,
"story": 8,
"summary": "The client begins to explain why the secrecy is necessary, checking again they cannot be overheard.",
"predicament": "A stranger prepares to explain why an ordinary job must be kept secret, and checks again for listeners."
},
{
"chunk": 264,
"story": 8,
"summary": "He claims he is secretly digging a valuable mineral to buy his neighbours' land cheaply before they know its worth.",
"predicament": "A newcomer is given a plausible reason for secrecy that makes him a partner in a small deception."
},
{
"chunk": 265,
"story": 8,
"summary": "The engineer finds the story odd and the client repellent, but decides the fee is worth it and goes, telling no one.",
"predicament": "A person uneasy about a job and the stranger offering it decides the money outweighs his doubts, and tells no one."
},
{
"chunk": 266,
"story": 8,
"summary": "At a lonely country station the client hurries him into a closed carriage; the investigator asks about the horse.",
"predicament": "A person who agreed to a secret job is met at night and hurried into a closed carriage to an unknown place."
},
{
"chunk": 267,
"story": 8,
"summary": "A long drive with frosted windows and a silent, staring companion ends at a house he cannot see.",
"predicament": "A person is driven for an hour through the dark with no view out, watched closely by the man who hired him."
},
{
"chunk": 268,
"story": 8,
"summary": "A frightened woman appears with a lamp, is pushed back, and he is left alone in a small room.",
"predicament": "A stranger alone in an unknown house glimpses a frightened woman who is quickly hustled out of sight."
},
{
"chunk": 269,
"story": 8,
"summary": "He waits uneasily in the silent barred room; the woman returns, sick with fear, and signals silence.",
"predicament": "A person waiting alone in a strange house is secretly approached by someone who is plainly terrified."
},
{
"chunk": 270,
"story": 8,
"summary": "She begs him to leave before it is too late; he refuses because of the fee; footsteps come and she vanishes.",
"predicament": "A stranger urgently warns a newcomer to flee, and he refuses because leaving would cost him the money."
},
{
"chunk": 271,
"story": 8,
"summary": "The client, suspicious, brings a morose associate and leads him through a decaying house to the machine.",
"predicament": "A person ignores a warning and follows his employers deeper into a strange, decaying house."
},
{
"chunk": 272,
"story": 8,
"summary": "The client shows him into the machine itself, remarking how unpleasant it would be if someone turned it on.",
"predicament": "A person is led into a confined place by a man who jokes about how dangerous it would be."
},
{
"chunk": 273,
"story": 8,
"summary": "He finds the fault, but sees the story was false and scrapes at a metal crust on the floor; the client catches him.",
"predicament": "A person hired for a job discovers his employers lied to him, and is caught looking where he should not."
},
{
"chunk": 274,
"story": 8,
"summary": "He rashly lets on he knows the story is false; the client locks him in the machine.",
"predicament": "A person angry at being deceived says so rashly and is at once trapped by the people he exposed."
},
{
"chunk": 275,
"story": 8,
"summary": "The machine starts and the ceiling descends; he begs, then sees a gleam of hope.",
"predicament": "A person trapped by killers faces a slow death and must keep his head long enough to see a way out."
},
{
"chunk": 276,
"story": 8,
"summary": "The woman opens a panel and pulls him out; they run as the pursuers shout.",
"predicament": "A trapped person is rescued at the last moment by the stranger whose warning he ignored."
},
{
"chunk": 277,
"story": 8,
"summary": "At a window she holds back the client, begging him to spare the engineer; the client cuts at him as he drops, severing his thumb.",
"predicament": "A person helping a stranger escape pleads with her dangerous companion to spare him, and is thrust aside."
},
{
"chunk": 278,
"story": 8,
"summary": "He runs, faints, and wakes at dawn by the road near the station, the house gone from sight.",
"predicament": "A person who escaped killers wakes injured in a strange place, unsure whether he is safe yet."
},
{
"chunk": 279,
"story": 8,
"summary": "The porter knows nothing of the client; the investigator reads out a notice for an engineer who vanished a year earlier.",
"predicament": "A survivor learns that someone in his position before him was never seen again."
},
{
"chunk": 280,
"story": 8,
"summary": "The investigator calls the client a ruthless man; they travel with the police, puzzled why the victim was spared.",
"predicament": "Investigators set out after a ruthless gang, wondering why their one survivor was spared."
},
{
"chunk": 281,
"story": 8,
"summary": "Each guesses a direction; the investigator says the house is in the middle, and names them counterfeiters the police have hunted.",
"predicament": "Everyone guesses where a hidden gang is based, and the investigator sees they were misled by a trick."
},
{
"chunk": 282,
"story": 8,
"summary": "On arrival they find the house ablaze; the engineer recognises it.",
"predicament": "Pursuers arrive to find the criminals' hideout burning and their quarry likely gone."
},
{
"chunk": 283,
"story": 8,
"summary": "The lamp crushed in the machine started the fire; the gang has fled without a trace.",
"predicament": "Criminals escape with their goods while the hideout burns, and the one witness is left with nothing."
},
{
"chunk": 284,
"story": 8,
"summary": "Footprints suggest the woman and the quieter associate carried the engineer to safety; he laments his losses.",
"predicament": "A victim who lost much and gained nothing learns that the gang's gentler members quietly saved his life."
}
]
@@ -0,0 +1,188 @@
[
{
"chunk": 285,
"story": 9,
"summary": "The narrator recalls an old society scandal whose full facts were never told; a letter with a grand crest awaits the investigator.",
"predicament": "A chronicler decides to reveal what really lay behind an old scandal the gossips have since forgotten."
},
{
"chunk": 286,
"story": 9,
"summary": "The investigator says the letter is professional, from a very highly placed client, and asks the narrator to summarise the newspapers.",
"predicament": "An investigator cares more for a case's interest than for how grand his new client is."
},
{
"chunk": 287,
"story": 9,
"summary": "The noble client writes asking for an urgent meeting about a painful event at his wedding; the police are already involved.",
"predicament": "A proud, highly placed man must ask a stranger for help with a humiliating private matter."
},
{
"chunk": 288,
"story": 9,
"summary": "The investigator looks the client up and finds him middle-aged, from a great but impoverished family.",
"predicament": "An investigator checks the standing of a grand client and finds an old name with little money behind it."
},
{
"chunk": 289,
"story": 9,
"summary": "A notice announced the client's engagement to the only daughter of a rich foreign mine owner.",
"predicament": "A grand but poor family announces a match with the daughter of a newly rich outsider."
},
{
"chunk": 290,
"story": 9,
"summary": "A society paper sneers that the heiress's huge dowry will rescue the impoverished noble family.",
"predicament": "A marriage between old rank and new money is openly mocked as a bargain that suits both sides."
},
{
"chunk": 291,
"story": 9,
"summary": "The quiet wedding took place, but the bride vanished during the wedding breakfast.",
"predicament": "A bride vanishes from her own wedding breakfast, leaving her groom and family in public humiliation."
},
{
"chunk": 292,
"story": 9,
"summary": "A newspaper confirms the family's consternation as rumours spread despite attempts to hush them up.",
"predicament": "A grand family's efforts to hush up a humiliation fail as the story spreads everywhere."
},
{
"chunk": 293,
"story": 9,
"summary": "A woman claiming a hold on the groom tried to force her way in; the bride left in a hurry; the intruding woman has been arrested.",
"predicament": "A former companion of a groom tries to force her way into his wedding, and is suspected when the bride vanishes."
},
{
"chunk": 294,
"story": 9,
"summary": "The arrested woman is an old acquaintance of the groom; the proud, foppish client arrives.",
"predicament": "A woman with a past claim on a groom is arrested because she made a scene at his wedding."
},
{
"chunk": 295,
"story": 9,
"summary": "The client feels cut to the quick; the investigator refuses to discuss other clients and begins questioning him.",
"predicament": "A proud man who has been humiliated wants to be sure his helper will keep his secrets."
},
{
"chunk": 296,
"story": 9,
"summary": "The client describes his wife as a wild, fearless woman raised in a mining camp before her father's sudden fortune.",
"predicament": "A proud man describes a wife from a rougher world, fearless and impulsive, whom he never really understood."
},
{
"chunk": 297,
"story": 9,
"summary": "The bride was cheerful until after the ceremony, when she dropped her bouquet into a pew and grew agitated.",
"predicament": "A groom dismisses as trivial the one small moment when his bride's manner suddenly changed."
},
{
"chunk": 298,
"story": 9,
"summary": "She talked privately to her maid about a prior claim, left the breakfast, and was seen walking in the park with the arrested woman.",
"predicament": "A bride slips away from her own wedding breakfast after a whispered talk with a confidant from her old life."
},
{
"chunk": 299,
"story": 9,
"summary": "The client admits a long, close attachment to the arrested woman, who wrote threatening letters; he doubts she would hurt anyone.",
"predicament": "A man admits a former companion threatened to make a scene at his wedding, and that he took steps to stop her."
},
{
"chunk": 300,
"story": 9,
"summary": "He suggests the social strain unbalanced his wife; the investigator says he has solved the case, and the client is sceptical.",
"predicament": "A proud man can only explain his bride's flight by supposing she lost her mind rather than rejected him."
},
{
"chunk": 301,
"story": 9,
"summary": "A police officer arrives having dragged a lake for the bride's body; the investigator laughs at him.",
"predicament": "An official sure of a tragedy searches for a body, while the investigator is sure there is none to find."
},
{
"chunk": 302,
"story": 9,
"summary": "The officer produces the wedding dress and ring found in the water, and says they implicate the arrested woman.",
"predicament": "An official holds evidence he is sure proves a suspect guilty, and scorns a rival's theory as impractical."
},
{
"chunk": 303,
"story": 9,
"summary": "A note in the dress, signed with initials, seems to prove a lure; the investigator is interested in the hotel bill on the back.",
"predicament": "An official triumphantly shows proof against his suspect, and misses the clue written on its back."
},
{
"chunk": 304,
"story": 9,
"summary": "The officer storms off; the investigator tells him the bride never existed as the client's wife, and goes out; a lavish supper for five is delivered.",
"predicament": "An investigator tells a sceptical rival the truth in a riddle, and is taken for a madman."
},
{
"chunk": 305,
"story": 9,
"summary": "The client arrives, humiliated and angry; the investigator asks him to make allowance for a motherless girl.",
"predicament": "A proud man publicly deserted refuses to make any allowance for the person who deserted him."
},
{
"chunk": 306,
"story": 9,
"summary": "The investigator brings in the bride and her companion; she apologises for her treatment of the client.",
"predicament": "A deserted groom is brought face to face with the bride who left him, and she asks his pardon."
},
{
"chunk": 307,
"story": 9,
"summary": "She explains she was secretly married years ago to a poor prospector her rich father rejected, and pledged to wait for him.",
"predicament": "A person who secretly married someone her family forbade must explain it to the one she has since wed."
},
{
"chunk": 308,
"story": 9,
"summary": "She heard her first husband had been killed, grieved for a year, then accepted the arranged match.",
"predicament": "A person who believed her first love dead has moved on, and never imagined he might return."
},
{
"chunk": 309,
"story": 9,
"summary": "At the altar she saw her first husband alive in a pew; he slipped her a note, and she knew her duty was to him.",
"predicament": "A bride sees her first spouse, long thought dead, alive in the crowd at her second wedding."
},
{
"chunk": 310,
"story": 9,
"summary": "She slipped away to join him, too ashamed to face the grand guests; he had escaped captivity and followed her.",
"predicament": "A person whose first spouse returns from the dead runs off with him rather than face the one she has just married."
},
{
"chunk": 311,
"story": 9,
"summary": "Ashamed, she wanted to vanish; the investigator persuaded them to be open; the client coldly shakes her hand.",
"predicament": "A deserted spouse is given a full apology, and accepts it only with cold, wounded formality."
},
{
"chunk": 312,
"story": 9,
"summary": "The client refuses to stay for supper; the investigator says the case shows how simple the strangest-seeming affairs can be.",
"predicament": "A proud man publicly humiliated refuses to join in any celebration of the outcome, and leaves."
},
{
"chunk": 313,
"story": 9,
"summary": "The investigator explains he reasoned the bride saw someone from her past who had a prior claim.",
"predicament": "An investigator reasons that a bride who changed her mind in minutes must have seen someone from her past."
},
{
"chunk": 314,
"story": 9,
"summary": "He traced the man through the expensive hotel bill and persuaded the couple to face the client.",
"predicament": "An investigator finds a runaway couple and persuades them to face the person they wronged."
},
{
"chunk": 315,
"story": 9,
"summary": "The investigator asks the narrator to judge the deserted client mercifully, having lost wife and fortune at once.",
"predicament": "An investigator asks a friend to judge a humiliated man kindly, since he lost everything in an instant."
}
]
@@ -0,0 +1,224 @@
[
{
"chunk": 316,
"story": 10,
"summary": "From the window the narrator sees a dignified man running and grimacing in the snow, checking house numbers; the investigator guesses he is coming to them.",
"predicament": "A respectable person is driven so far by a crisis that he runs through the street like a madman."
},
{
"chunk": 317,
"story": 10,
"summary": "The man bursts in, beats his head against the wall in despair, and is calmed by the investigator.",
"predicament": "A person overwhelmed by sudden disaster can barely speak, and fears he will be taken for mad."
},
{
"chunk": 318,
"story": 10,
"summary": "He is a leading banker; public disgrace and private grief have struck together, and people of the highest rank may suffer.",
"predicament": "A respected person facing public disgrace and private grief at once must explain himself to a stranger."
},
{
"chunk": 319,
"story": 10,
"summary": "A client of the very highest rank asked for a large, urgent loan, preferring business to asking favours of friends.",
"predicament": "A person of great standing asks a lender for a large secret loan rather than owe favours to friends."
},
{
"chunk": 320,
"story": 10,
"summary": "As security he left a priceless national treasure, promising to reclaim it in four days.",
"predicament": "A lender is asked to hold a priceless, irreplaceable treasure as security, and cannot politely refuse."
},
{
"chunk": 321,
"story": 10,
"summary": "The client stressed discretion and that any damage would cause a great public scandal; the banker regretted taking it.",
"predicament": "A person entrusted with something irreplaceable realises too late how much he will lose if anything happens to it."
},
{
"chunk": 322,
"story": 10,
"summary": "Fearing burglary, he carried it home and locked it in his bureau; he describes his trusted servants and a newer maid with admirers.",
"predicament": "A worried custodian takes a treasure home for safety, into a household he trusts completely."
},
{
"chunk": 323,
"story": 10,
"summary": "His only son, spoiled after his mother's death, has fallen into gambling debts through a charming older friend.",
"predicament": "A parent who indulged a child now watches him sink into debt under the influence of a worldly friend."
},
{
"chunk": 324,
"story": 10,
"summary": "The friend is fascinating but untrustworthy; his adopted niece is his loving right hand, though she twice refused the son.",
"predicament": "A parent is charmed by a son's dangerous friend, and trusts completely a young woman he raised as his own."
},
{
"chunk": 325,
"story": 10,
"summary": "He told his son and niece about the treasure; the son warned the lock was weak, then begged for money to pay a gambling debt and was refused.",
"predicament": "A young man desperate to pay a debt of honour is refused by his parent on the night a treasure is in the house."
},
{
"chunk": 326,
"story": 10,
"summary": "He checked the treasure; his niece, closing a window, reported that a maid had slipped out to meet someone.",
"predicament": "A trusted young woman, caught at an open window at night, points out someone else's secret meeting instead."
},
{
"chunk": 327,
"story": 10,
"summary": "At night he found his son holding the damaged treasure, and accused him of theft; the son denied anything was missing.",
"predicament": "A parent catches his son with a damaged treasure in his hands and calls him a thief before hearing a word."
},
{
"chunk": 328,
"story": 10,
"summary": "The son refuses to say more; the niece faints; the police come and the son asks to leave the house for five minutes.",
"predicament": "A young man wrongly accused by his own parent refuses to explain himself, out of pride and to protect someone."
},
{
"chunk": 329,
"story": 10,
"summary": "The banker begs his son to reveal where the missing stones are, promising forgiveness.",
"predicament": "A parent begs a son he thinks guilty to confess and make amends, promising all will be forgiven."
},
{
"chunk": 330,
"story": 10,
"summary": "The son sneers at forgiveness and is arrested; nothing is found; the banker has lost honour, gems and son in one night.",
"predicament": "A young man spurns forgiveness for a crime he did not commit and is taken away, saying nothing."
},
{
"chunk": 331,
"story": 10,
"summary": "The investigator doubts the son's guilt, noting his silence cuts both ways and the police theory makes no sense.",
"predicament": "An investigator notices an accused man's silence could mean innocence as easily as guilt."
},
{
"chunk": 332,
"story": 10,
"summary": "He lays out how implausible the father's theory is and proposes going to the house.",
"predicament": "An investigator points out that the theory everyone believes asks the accused to have done something absurd."
},
{
"chunk": 333,
"story": 10,
"summary": "They travel to the banker's house; the narrator still thinks the son guilty but trusts the investigator.",
"predicament": "A companion is sure the accused is guilty but trusts his friend's doubts enough to keep an open mind."
},
{
"chunk": 334,
"story": 10,
"summary": "The investigator walks round the house; the pale, grieving niece asks the banker to free the son.",
"predicament": "A young woman grief-stricken over an accused cousin begs her guardian to release him."
},
{
"chunk": 335,
"story": 10,
"summary": "She insists the son is innocent and asks that the matter be dropped; the investigator agrees he is innocent.",
"predicament": "A person pleads for a matter to be dropped entirely, which would also bury her own part in it."
},
{
"chunk": 336,
"story": 10,
"summary": "She confirms the maid's meeting with a man; the investigator surprises her by knowing he has a wooden leg.",
"predicament": "A person offering a convenient alternative suspect is startled when the investigator knows more than she said."
},
{
"chunk": 337,
"story": 10,
"summary": "The investigator examines a window sill and the bureau, and asks the banker to break off a corner of the treasure.",
"predicament": "An investigator tests the official theory by showing how the crime could not have happened quietly."
},
{
"chunk": 338,
"story": 10,
"summary": "He shows breaking it would make a loud noise; he searches outside alone and says only that his opinion is unchanged.",
"predicament": "An investigator has seen enough to be sure of a young man's innocence but will not yet say who is guilty."
},
{
"chunk": 339,
"story": 10,
"summary": "He gets a free hand to recover the gems at any cost, and goes out disguised as a loafer.",
"predicament": "An investigator is given a free hand and unlimited money to recover a treasure quietly."
},
{
"chunk": 340,
"story": 10,
"summary": "He returns in good spirits with an old boot, then goes out again.",
"predicament": "An investigator in disguise has found the thread he was looking for and hurries to follow it."
},
{
"chunk": 341,
"story": 10,
"summary": "Next morning the banker, aged by grief, reports his niece has deserted him.",
"predicament": "A person who has lost his reputation and his son now learns he has lost the one he trusted most as well."
},
{
"chunk": 342,
"story": 10,
"summary": "Her note says she brought trouble on him and has gone; the investigator produces the missing stones for a fee.",
"predicament": "A guardian is left a note by a ward who has fled, and fears the worst."
},
{
"chunk": 343,
"story": 10,
"summary": "The banker is saved, but is told he owes his son an apology; the niece has fled with the son's dangerous friend.",
"predicament": "A parent who wrongly accused his own child learns the real culprit was the person he trusted most."
},
{
"chunk": 344,
"story": 10,
"summary": "The investigator reveals the friend was a ruined, heartless gambler who seduced the niece into handing out the treasure.",
"predicament": "A trusting guardian learns his beloved ward was seduced into betraying him by a charming, heartless man."
},
{
"chunk": 345,
"story": 10,
"summary": "The son saw his cousin carry the treasure out and hand it through a window to someone.",
"predicament": "A young man secretly watches the person he loves commit a theft against his own family."
},
{
"chunk": 346,
"story": 10,
"summary": "He chased the thief, struggled and recovered most of it; he kept silent to protect the woman he loved, even under arrest.",
"predicament": "A young man accused of a theft he tried to stop keeps silent rather than expose the person he loves."
},
{
"chunk": 347,
"story": 10,
"summary": "The investigator explains he read the maid's meeting and the lane's story in the snow.",
"predicament": "An investigator reads a whole night's secret comings and goings from the tracks left behind."
},
{
"chunk": 348,
"story": 10,
"summary": "The tracks showed a booted man waiting and a barefoot man chasing him, a struggle, and blood.",
"predicament": "An investigator reconstructs from footprints how an accused man chased the real thief and fought him."
},
{
"chunk": 349,
"story": 10,
"summary": "He reasoned only the niece could have brought the treasure, since the son would only shield her.",
"predicament": "An investigator reasons that an accused man would only keep silent to protect someone he loves."
},
{
"chunk": 350,
"story": 10,
"summary": "He identified her lover as the dangerous friend, confirmed it through the friend's servant and cast-off shoes.",
"predicament": "An investigator confirms a suspect's guilt through the suspect's own household and a pair of old shoes, without alerting him."
},
{
"chunk": 351,
"story": 10,
"summary": "He confronted the thief at gunpoint, promised no prosecution, and bought the stones back from a receiver.",
"predicament": "An investigator bargains with a thief, trading the promise of no prosecution for the return of what was stolen."
},
{
"chunk": 352,
"story": 10,
"summary": "The banker thanks him and goes to apologise to his son; the investigator predicts the niece will be punished enough by her lover.",
"predicament": "A deceived guardian rushes to apologise to the child he wronged, while the betrayer is left to her fate."
}
]
@@ -0,0 +1,230 @@
[
{
"chunk": 353,
"story": 11,
"summary": "The investigator complains that the narrator's accounts dwell on colour rather than reasoning; the narrator bristles at his egotism.",
"predicament": "A person is told by a proud companion that his account of their shared work misses the only thing that matters."
},
{
"chunk": 354,
"story": 11,
"summary": "The investigator insists his art is impersonal and that the narrator has turned lectures into tales; he is in a bad temper after a fruitless search.",
"predicament": "A proud, bored companion lectures a friend on his failings because nothing worthwhile has come his way."
},
{
"chunk": 355,
"story": 11,
"summary": "He laments that great cases are over and his work has sunk to trifles, and shows a letter from a young woman as proof.",
"predicament": "A person who has lost interest in his work complains it has sunk to trifles, just as a new request arrives."
},
{
"chunk": 356,
"story": 11,
"summary": "The young woman asks whether she should accept a post; she has no family to advise her.",
"predicament": "A young person alone in the world, with no one to advise her, asks strangers whether to accept a strange offer."
},
{
"chunk": 357,
"story": 11,
"summary": "Out of work and running out of money, she was spotted at an agency by a stout, genial man who declared her perfect.",
"predicament": "A young person running out of money is singled out with delight by a stranger with a job to offer."
},
{
"chunk": 358,
"story": 11,
"summary": "He offered far more than her usual pay, and an advance, insisting a lady of her bearing deserved it.",
"predicament": "A person in need is offered far more than her work is worth, and an advance, by a flattering stranger."
},
{
"chunk": 359,
"story": 11,
"summary": "He said the duties were light, caring for a cruel little child, and she must humour his wife by wearing chosen dresses and sitting where told.",
"predicament": "An employee is told that generous pay comes with odd conditions she must accept without asking why."
},
{
"chunk": 360,
"story": 11,
"summary": "He demanded she cut her hair short; she refused and lost the post, to the agent's annoyance.",
"predicament": "A person refuses one strange demand attached to a generous offer, and loses it along with her agent's goodwill."
},
{
"chunk": 361,
"story": 11,
"summary": "Short of money and in debt, she regretted refusing; then a letter came from the man renewing the offer.",
"predicament": "A person who turned down easy money on principle begins to regret it as the bills mount."
},
{
"chunk": 362,
"story": 11,
"summary": "He raised the pay further, explaining the dress and the hair as his wife's fancies; she has decided to accept but asks for advice.",
"predicament": "A person is offered even more money to accept conditions that make no sense, and decides to take it."
},
{
"chunk": 363,
"story": 11,
"summary": "The investigator says no sister of his should take it; the pay is suspiciously high; he promises to come if she is in danger.",
"predicament": "An adviser warns that pay too good to be true hides something, but promises help if the job turns dangerous."
},
{
"chunk": 364,
"story": 11,
"summary": "She leaves cheerfully; the narrator and investigator wonder for a fortnight whether the man is a crank or a villain.",
"predicament": "Helpers wait uneasily for news of someone who has gone into a situation they could not explain."
},
{
"chunk": 365,
"story": 11,
"summary": "An urgent telegram asks them to come; they travel by train through spring countryside.",
"predicament": "Someone who went into danger alone sends an urgent call for help, and her helpers set off at once."
},
{
"chunk": 366,
"story": 11,
"summary": "The narrator admires the scenery; the investigator says isolated houses fill him with horror.",
"predicament": "Someone admires a peaceful, isolated place, and is told isolation lets cruelty go unseen and unpunished."
},
{
"chunk": 367,
"story": 11,
"summary": "He explains that in lonely places cruelty goes unnoticed; they meet the young woman at an inn.",
"predicament": "An adviser fears for someone living far from neighbours, where no one would hear if something went wrong."
},
{
"chunk": 368,
"story": 11,
"summary": "She says she has not been mistreated but cannot understand her employers; she describes the damp, isolated house.",
"predicament": "An employee in a lonely house has suffered no harm but cannot understand what her employers really want."
},
{
"chunk": 369,
"story": 11,
"summary": "The wife is not mad but silent and young; the man's grown daughter supposedly left because she disliked her stepmother.",
"predicament": "An employee learns that the grown child of the household left under circumstances that do not quite add up."
},
{
"chunk": 370,
"story": 11,
"summary": "The wife is devoted but secretly sad; the child is spoiled and delights in cruelty to small creatures.",
"predicament": "A newcomer in a household notices a sad, silent spouse and a cruel child, and senses a hidden sorrow."
},
{
"chunk": 371,
"story": 11,
"summary": "The two servants are unpleasant, the man often drunk; she is asked to put on a blue dress.",
"predicament": "A newcomer in an isolated house is surrounded by sullen, watchful helpers and asked to do something strange."
},
{
"chunk": 372,
"story": 11,
"summary": "Wearing a dress that has been worn before, she is seated with her back to the window while the man tells funny stories.",
"predicament": "An employee is made to perform a strange routine for her employers, and does not know who is watching."
},
{
"chunk": 373,
"story": 11,
"summary": "The performance is repeated; she reads aloud, carefully positioned, then is told to stop and change.",
"predicament": "An employee repeats a strange performance for her employers and grows curious what it is for."
},
{
"chunk": 374,
"story": 11,
"summary": "With a hidden mirror she sees a man on the road watching; the wife sees her and has her wave him away.",
"predicament": "A person who secretly finds out she is being used to deceive someone is made to send the watcher away."
},
{
"chunk": 375,
"story": 11,
"summary": "She was shown a starved guard dog set loose each night and warned never to go out after dark.",
"predicament": "A newcomer is warned that a savage beast is loosed every night and that going outside after dark would be fatal."
},
{
"chunk": 376,
"story": 11,
"summary": "At night she saw the huge dog pacing the lawn.",
"predicament": "A person in a lonely house sees for herself the guard that keeps everyone in and everyone out."
},
{
"chunk": 377,
"story": 11,
"summary": "In a locked drawer she found a coil of hair exactly like her own cut hair.",
"predicament": "A newcomer finds a trace of someone who was here before her, someone who looked exactly like her."
},
{
"chunk": 378,
"story": 11,
"summary": "She saw the man emerge angrily from a locked wing and asked about its shuttered window.",
"predicament": "A person asks an innocent question about a locked part of the house, and sees her employer's mask slip."
},
{
"chunk": 379,
"story": 11,
"summary": "He claimed it was his darkroom with no jest in his eyes; later, finding the key left by the drunk servant, she slipped in.",
"predicament": "A person who senses she is not meant to know something takes her chance to find out when a door is left open."
},
{
"chunk": 380,
"story": 11,
"summary": "She found a barred, padlocked door and a shadow moving behind it; she ran in terror straight into her employer.",
"predicament": "A person exploring a forbidden place sees signs that someone is imprisoned there, and runs straight into her employer."
},
{
"chunk": 381,
"story": 11,
"summary": "He soothed her too sweetly, then threatened to throw her to the dog if she ever went in again.",
"predicament": "A person caught snooping is soothed by her employer, then threatened with a terrible death if she ever does it again."
},
{
"chunk": 382,
"story": 11,
"summary": "Terrified, she telegraphed the investigator, and came to town while her employers go out that evening.",
"predicament": "A person frightened of everyone in the house she lives in secretly sends for help and returns to wait."
},
{
"chunk": 383,
"story": 11,
"summary": "The investigator asks if she can lock the female servant in the cellar that evening; she agrees.",
"predicament": "A frightened young woman is asked to take one more bold risk so that her helpers can get inside."
},
{
"chunk": 384,
"story": 11,
"summary": "He reasons she was hired to impersonate the daughter, who is imprisoned, so her faithful suitor will think she no longer wants him.",
"predicament": "A person realises she was hired to impersonate a captive, so that the captive's friends would give up on her."
},
{
"chunk": 385,
"story": 11,
"summary": "They arrive; she has locked the servant in the cellar; they break the barred door.",
"predicament": "Rescuers force their way to a prisoner's door, fearing they have come too late."
},
{
"chunk": 386,
"story": 11,
"summary": "The room is empty, the prisoner taken through the skylight; the employer returns, calls them thieves and runs for the dog.",
"predicament": "Rescuers find the prisoner gone and are caught by her jailer, who goes to set a savage beast on them."
},
{
"chunk": 387,
"story": 11,
"summary": "The starving dog attacks its master; the narrator shoots it; the female servant arrives, ready to tell what she knows.",
"predicament": "A cruel master is attacked by the very beast he kept to terrorise others."
},
{
"chunk": 388,
"story": 11,
"summary": "The servant explains the daughter's father wanted control of her money and imprisoned her when a suitor appeared.",
"predicament": "A household insider reveals that a parent imprisoned his own child to keep control of her money when she wished to marry."
},
{
"chunk": 389,
"story": 11,
"summary": "The suitor bribed the servants to help the daughter escape; the investigator leaves, their standing there doubtful.",
"predicament": "A faithful suitor quietly buys the household's help to free the person he loves from her own father."
},
{
"chunk": 390,
"story": 11,
"summary": "The master survives broken; the daughter married her suitor; the young woman went on to success.",
"predicament": "A cruel parent is left broken, the imprisoned child goes free and marries, and the hired stand-in moves on."
}
]
@@ -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,319 @@
"""Hand-built reference grouping of the Holmes predicaments (Claude-written, no local inference).
Each scene is in at most one group; scenes 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 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: nerve and cunning, reused from the Jacobs reference, and one new
label proposed for this corpus, observation (noticing what others miss; reading a person or a scene).
"""
G = [
dict(id='G01', name='The evidence all points at you',
predicament='Something terrible has happened, every sign points at you, and the people deciding will not look past the obvious.',
actor='accused person', wants='to be cleared', counterpart='those who have already judged them',
members=[93, 94, 96, 99, 101, 171, 198, 294, 327],
options=[
('Tell your story plainly and trust it to hold.', 'scene:99', {'standing':'risk', 'relationships.authority':'+'}),
('Deny everything and call the witness mistaken.', 'scene:171', {'nerve':'+', 'relationships.accuser':'-', 'standing':'risk'}),
('Accept arrest calmly, as no more than you deserve.', 'scene:96', {'standing':'-', 'relationships.authority':'+'}),
('Find someone outside the official inquiry to look again.', 'scene:95', {'money':'-', 'relationships.investigator':'+'}),
('Struggle and protest as they take you.', 'scene:198', {'standing':'-', 'relationships.authority':'-', 'flags.resisted':'set'})]),
dict(id='G02', name='The truth would clear you, and cost someone else',
predicament='You are suspected of something you did not do, and the one explanation that would clear you would expose someone else.',
actor='suspect with a secret', wants='to be cleared without betraying anyone', counterpart='their accusers',
members=[100, 187, 328, 330, 346],
options=[
('Refuse to say, whatever it costs you.', 'scene:100', {'standing':'-', 'flags.secret_kept':'set', 'relationships.protected':'+'}),
('Tell the whole truth and let it fall where it will.', 'filled', {'standing':'+', 'relationships.protected':'-'}),
('Ask for a few minutes alone to put things right yourself.', 'scene:328', {'nerve':'+', 'relationships.authority':'risk'}),
('Keep up a disguise rather than be recognised.', 'scene:187', {'cunning':'+', 'standing':'risk'})]),
dict(id='G03', name='Someone holds proof of your past',
predicament='Someone from your past holds proof that could wreck the life or marriage you are building now.',
actor='person with a past', wants='the proof, or silence', counterpart='someone who knows',
members=[10, 11, 123, 124, 293, 299],
options=[
('Pay whatever they ask.', 'scene:123', {'money':'-', 'relationships.blackmailer':'+'}),
('Try to buy or steal the proof back.', 'scene:10', {'money':'-', 'flags.broke_law':'set'}),
('Hire someone discreet to deal with it.', 'scene:11', {'money':'-', 'relationships.investigator':'+'}),
('Keep the occasion quiet and have help at the door.', 'scene:299', {'cunning':'+', 'relationships.former':'-'}),
('Silence them for good.', 'scene:124', {'flags.violent':'set', 'standing':'risk'})]),
dict(id='G04', name='A warning nobody else takes seriously',
predicament='You have had a warning you believe means real danger, and the people who should protect you think you imagine it.',
actor='threatened person', wants='to be believed and kept safe', counterpart='those who dismiss the warning',
members=[133, 135, 137, 138, 140, 141, 222, 227, 230, 257],
options=[
('Laugh it off as someone\'s joke.', 'scene:138', {'nerve':'+', 'flags.marked':'set'}),
('Go to the authorities anyway.', 'scene:140', {'relationships.authority':'-', 'standing':'-'}),
('Seek help from someone outside the official channels.', 'scene:230', {'money':'-', 'relationships.investigator':'+'}),
('Lock yourself in and wait.', 'scene:135', {'nerve':'-'}),
('Give the threatener what they are asking for.', 'scene:142', {'relationships.pursuer':'+', 'flags.gave_in':'set'})]),
dict(id='G05', name='The offer that pays too well',
predicament='You badly need money, and a stranger offers far too much for easy work on conditions you are told not to question.',
actor='person short of money', wants='the pay', counterpart='a generous stranger',
members=[37, 38, 40, 41, 42, 43, 260, 261, 262, 264, 265, 357, 358, 359, 360, 361, 362],
options=[
('Take it and ask no questions.', 'scene:265', {'money':'+', 'flags.took_the_fee':'set'}),
('Refuse the one condition you cannot stomach.', 'scene:360', {'standing':'+', 'money':'-'}),
('Take it, but tell someone where you are going.', 'scene:362', {'money':'+', 'relationships.adviser':'+'}),
('Ask what the work is really for.', 'scene:262', {'observation':'+', 'relationships.employer':'risk'}),
('Turn it down.', 'archetype', {'money':'-'})]),
dict(id='G06', name='Alone in a house you cannot read',
predicament='You have come alone to a remote house where nothing is explained, and the people in it watch you closely.',
actor='newcomer', wants='to do the job and get out', counterpart='the household',
members=[266, 267, 268, 269, 271, 272, 368, 371, 372, 373, 375, 376],
options=[
('Do as you are told and keep your eyes open.', 'scene:373', {'observation':'+', 'relationships.employer':'+'}),
('Find a way to see what is going on behind your back.', 'scene:374', {'observation':'+', 'cunning':'+', 'relationships.employer':'risk'}),
('Keep your spirits up and see it through.', 'scene:269', {'nerve':'+'}),
('Leave at the first chance, pay or no pay.', 'filled', {'money':'-', 'nerve':'-'})]),
dict(id='G07', name='You have seen too much',
predicament='You have stumbled on something the people around you meant to keep hidden, and they may know you have seen it.',
actor='person who knows too much', wants='to get away safely', counterpart='those with the secret',
members=[132, 274, 279, 378, 379, 380, 381],
options=[
('Say plainly that you know.', 'scene:274', {'nerve':'+', 'flags.in_danger':'set'}),
('Play innocent and say only that it frightened you.', 'scene:381', {'cunning':'+'}),
('Slip back in when the door is left open.', 'scene:379', {'observation':'+', 'relationships.host':'-', 'flags.trespassed':'set'}),
('Quietly send word to someone outside.', 'scene:382', {'relationships.adviser':'+'})]),
dict(id='G08', name='Waiting in the dark for them to come',
predicament='You are lying in wait in the dark for someone dangerous, and must keep still until the moment comes.',
actor='watcher', wants='to catch them in the act', counterpart='a dangerous intruder',
members=[57, 58, 246, 247, 248],
options=[
('Keep still and wait for the signal.', 'scene:58', {'nerve':'+'}),
('Strike the moment you hear them.', 'scene:247', {'nerve':'+', 'flags.violent':'set'}),
('Keep your weapon ready and use it if they fight.', 'scene:57', {'nerve':'+', 'flags.armed':'set'}),
('Show a light and scare them off.', 'filled', {'nerve':'-', 'standing':'-'})]),
dict(id='G09', name='Someone dangerous is after the person you are helping',
predicament='Someone who came to you for help is being hunted by a dangerous person, and their safety depends on what you advise.',
actor='protector', wants='to keep them safe', counterpart='a dangerous pursuer',
members=[142, 143, 146, 233, 234, 237, 242, 363, 364],
options=[
('Tell them to give the pursuer what he wants.', 'scene:142', {'relationships.client':'+', 'flags.gave_in':'set'}),
('Stay the night beside them.', 'scene:242', {'nerve':'+', 'relationships.client':'+'}),
('Send them home and promise to come if called.', 'scene:143', {'relationships.client':'risk'}),
('Get them away to family.', 'scene:237', {'relationships.family':'+', 'money':'-'}),
('Face the pursuer down when he comes to your door.', 'scene:234', {'nerve':'+', 'relationships.pursuer':'-'})]),
dict(id='G10', name='Asked to act without being told why',
predicament='Someone you trust asks you to take a risk, perhaps break the law, without telling you what the plan is.',
actor='loyal friend', wants='to help without being made a fool', counterpart='the friend asking',
members=[19, 20, 24, 52, 244, 383],
options=[
('Agree at once; you trust them.', 'scene:19', {'relationships.friend':'+', 'flags.broke_law':'set'}),
('Go, and bring a weapon.', 'scene:52', {'nerve':'+'}),
('Do your part, though your conscience pricks.', 'scene:24', {'relationships.friend':'+', 'standing':'-'}),
('Ask to be told the whole plan first.', 'filled', {'relationships.friend':'-'})]),
dict(id='G11', name='Someone close is not who they seem',
predicament='Someone you have welcomed close is not who they claim, and you have not yet let yourself notice the signs.',
actor='trusting person', wants='to keep someone they value', counterpart='a person hiding who they are',
members=[36, 47, 72, 73, 74, 324, 343, 344],
options=[
('Count yourself lucky and ask nothing.', 'scene:36', {'money':'+', 'relationships.intimate':'+'}),
('Keep them secret from the rest of your family.', 'scene:72', {'relationships.intimate':'+', 'relationships.family':'-'}),
('Trust your own doubts about them.', 'scene:324', {'observation':'+', 'relationships.intimate':'-'}),
('Ask someone outside to look into them.', 'filled', {'observation':'+', 'money':'-'})]),
dict(id='G12', name='A stranger who will not give a true name',
predicament='A stranger wants your help but hides who they are, and you must decide whether to deal with them.',
actor='person approached', wants='to know who they are dealing with', counterpart='a stranger under a false name',
members=[7, 8, 209, 210],
options=[
('Let them know you have already seen through it.', 'scene:8', {'observation':'+', 'relationships.stranger':'-'}),
('Insist on the real name before going on.', 'scene:210', {'relationships.stranger':'risk'}),
('Play along and help anyway.', 'filled', {'money':'+'}),
('Refuse to deal with anyone who hides their face.', 'archetype', {'money':'-', 'standing':'+'})]),
dict(id='G13', name='A powerful client needs your discretion',
predicament='Someone far above you needs a delicate favour kept quiet, and it is not the kind of request you can easily refuse.',
actor='person of modest standing', wants='the reward without being used', counterpart='a powerful client',
members=[9, 12, 287, 295, 319],
options=[
('Take their money and their secret.', 'scene:12', {'money':'+', 'relationships.patron':'+'}),
('Keep their confidences even from other grand names.', 'scene:295', {'standing':'+', 'relationships.patron':'+'}),
('Name conditions of your own.', 'scene:320', {'standing':'+', 'relationships.patron':'risk'}),
('Let them see you are not impressed.', 'scene:30', {'standing':'risk', 'relationships.patron':'-'})]),
dict(id='G14', name='Holding something too valuable to lose',
predicament='Something far too valuable to replace has been left in your keeping, and you know someone may come for it.',
actor='custodian', wants='to keep it safe', counterpart='whoever wants it',
members=[55, 56, 197, 200, 320, 321, 322],
options=[
('Keep it on you at all times.', 'scene:322', {'nerve':'+', 'flags.carrying_valuables':'set'}),
('Lock it away and tell no one.', 'archetype', {'cunning':'+'}),
('Tell your household about it.', 'scene:325', {'relationships.family':'+', 'flags.talked':'set'}),
('Return it at once and claim the reward.', 'scene:197', {'money':'+'}),
('Set a trap for whoever comes for it.', 'scene:57', {'cunning':'+', 'nerve':'+'})]),
dict(id='G15', name='The game is up',
predicament='You have been caught out in a deception, faced with proof, and must decide how to carry yourself now.',
actor='deceiver', wants='to get off lightly', counterpart='the person who caught them',
members=[59, 60, 83, 84, 85, 87, 183, 211, 212],
options=[
('Keep your dignity and go quietly.', 'scene:60', {'standing':'+', 'relationships.captor':'+'}),
('Insist nothing you did was against the law.', 'scene:85', {'cunning':'+', 'standing':'-'}),
('Throw yourself on their mercy.', 'scene:212', {'standing':'-', 'relationships.captor':'+'}),
('Make a run for it.', 'scene:88', {'nerve':'+', 'flags.fugitive':'set'})]),
dict(id='G16', name='Mercy or the law',
predicament='You have caught someone who did wrong, and handing them over would be lawful but not what you think is just.',
actor='person holding the truth', wants='justice as they see it', counterpart='the culprit',
members=[82, 88, 120, 125, 184, 188, 216, 217, 351],
options=[
('Let them go if they swear never to do it again.', 'scene:216', {'relationships.culprit':'+', 'flags.spared_culprit':'set'}),
('Keep their confession back unless an innocent needs it.', 'scene:120', {'relationships.culprit':'+', 'flags.secret_kept':'set'}),
('Hand them to the authorities.', 'archetype', {'standing':'+', 'relationships.authority':'+', 'relationships.culprit':'-'}),
('Punish them yourself.', 'scene:88', {'nerve':'+', 'flags.violent':'set'}),
('Trade your silence for what they took.', 'scene:351', {'money':'+', 'relationships.authority':'risk'})]),
dict(id='G17', name='Someone close has vanished',
predicament='Someone close to you has vanished without a word, and everyone around you has a different idea of why.',
actor='person left behind', wants='to know what happened', counterpart='the missing person',
members=[68, 75, 165, 166, 174, 175, 291, 300, 341, 342],
options=[
('Go to the authorities at once.', 'scene:166', {'relationships.authority':'+'}),
('Pay someone to find them.', 'scene:68', {'money':'-', 'relationships.investigator':'+'}),
('Hush it up.', 'scene:292', {'standing':'risk'}),
('Decide they must have lost their mind.', 'scene:300', {'standing':'+', 'relationships.missing':'-'}),
('Wait for word.', 'archetype', {'relationships.missing':'+'})]),
dict(id='G18', name='Keeping faith when everyone says give up',
predicament='Everyone tells you to give up on someone you love, and you are sure they are wrong about them.',
actor='loyal person', wants='to be proved right', counterpart='everyone who has given up',
members=[76, 77, 103, 104, 177],
options=[
('Refuse to give up on them.', 'scene:77', {'relationships.faithful':'+', 'standing':'-'}),
('Tell what you know, even if it embarrasses you.', 'scene:104', {'standing':'-', 'relationships.faithful':'+'}),
('Bring in outside help.', 'scene:95', {'money':'-', 'relationships.investigator':'+'}),
('Accept what everyone says and move on.', 'archetype', {'relationships.faithful':'-'})]),
dict(id='G19', name='A guardian who lives on your money',
predicament='The relative who controls your money would lose it if you married, and is doing everything to keep you single.',
actor='dependent', wants='their own life and money', counterpart='a guardian',
members=[69, 70, 71, 86, 224, 235, 388],
options=[
('Leave your money in their hands to keep the peace.', 'scene:70', {'relationships.guardian':'+', 'money':'-'}),
('Go out anyway, against their wishes.', 'scene:71', {'nerve':'+', 'relationships.guardian':'-'}),
('Refuse to sign it over.', 'scene:388', {'money':'+', 'relationships.guardian':'-', 'flags.in_danger':'set'}),
('Marry, and claim what is yours.', 'scene:230', {'money':'+', 'relationships.guardian':'-'}),
('Have someone outside the family read the terms.', 'scene:235', {'observation':'+', 'money':'-'})]),
dict(id='G20', name='Everyone has decided, and you think they are wrong',
predicament='The people in charge have settled on an answer, and you are almost alone in thinking it cannot be true.',
actor='doubter', wants='the real answer', counterpart='the officials in charge',
members=[95, 97, 102, 110, 115, 116, 172, 301, 302, 303, 304, 331, 332],
options=[
('Assume the accused is telling the truth and see where it leads.', 'scene:102', {'observation':'+', 'relationships.authority':'-'}),
('Give the officials your answer and let them ignore it.', 'scene:115', {'standing':'risk', 'relationships.authority':'-'}),
('Mock their theory to their face.', 'scene:301', {'standing':'+', 'relationships.authority':'-'}),
('Point out that their theory asks the impossible.', 'scene:332', {'observation':'+', 'relationships.client':'+'}),
('Go along with the official view.', 'archetype', {'relationships.authority':'+'})]),
dict(id='G21', name='A frightened stranger at your door',
predicament='A frightened stranger with nobody else to turn to arrives asking for help, and may not be able to pay.',
actor='helper', wants='to do right without being dragged under', counterpart='a stranger in trouble',
members=[67, 129, 154, 155, 219, 221, 255, 317, 318, 356],
options=[
('Take it on, pay or no pay.', 'scene:221', {'relationships.client':'+', 'money':'-'}),
('Calm them before you ask anything.', 'scene:317', {'relationships.client':'+'}),
('Go yourself, rather than let them go.', 'scene:156', {'nerve':'+', 'relationships.client':'+'}),
('Name your fee first.', 'filled', {'money':'+', 'relationships.client':'-'}),
('Tell them it is none of your business.', 'filled', {'relationships.client':'-', 'standing':'-'})]),
dict(id='G22', name='Read at a glance',
predicament='Someone you barely know tells you private things about your life, read from signs you never knew you gave.',
actor='person read', wants='to keep some privacy', counterpart='a sharp-eyed stranger',
members=[2, 3, 33, 34, 220],
options=[
('Ask how it was done.', 'scene:3', {'relationships.observer':'+'}),
('Decide it was nothing clever after all.', 'scene:34', {'relationships.observer':'-', 'standing':'+'}),
('Grow wary of what else they can see.', 'scene:220', {'observation':'+'}),
('Laugh and take it in good part.', 'archetype', {'relationships.observer':'+'})]),
dict(id='G23', name='Tested by someone sharper',
predicament='Someone sharper than you asks what you noticed, in front of others, and you know you have missed the point.',
actor='companion', wants='not to look a fool', counterpart='a sharper mentor',
members=[4, 78, 79, 193, 194, 196],
options=[
('Describe everything you saw and hope it is enough.', 'scene:78', {'observation':'+'}),
('Admit you can see nothing.', 'scene:193', {'relationships.mentor':'+', 'standing':'-'}),
('Call the whole thing a waste of effort.', 'scene:196', {'relationships.mentor':'-'}),
('Work it out yourself while they are away.', 'scene:106', {'observation':'+'})]),
dict(id='G24', name='Going among them in disguise',
predicament='To learn what you need, you must pass among strangers as someone humbler than you are, and not be recognised.',
actor='person in disguise', wants='information', counterpart='the people being watched',
members=[13, 14, 23, 159, 161, 339, 350],
options=[
('Pass yourself off as someone out of work.', 'scene:14', {'observation':'+', 'cunning':'+'}),
('Fake an injury to be let in.', 'scene:23', {'cunning':'+', 'relationships.target':'-'}),
('Sit among them in plain sight.', 'scene:159', {'nerve':'+', 'standing':'risk'}),
('Buy what you need from someone in their household.', 'scene:350', {'money':'-', 'observation':'+'})]),
dict(id='G25', name='A secret life behind the respectable one',
predicament='Behind the life everyone sees, you keep another one secret from the people closest to you.',
actor='person with a double life', wants='to keep both lives', counterpart='the family who do not know',
members=[108, 122, 185, 186, 307],
options=[
('Keep the two lives apart and say nothing.', 'scene:186', {'money':'+', 'flags.double_life':'set'}),
('Confess it to the one person it would hurt most.', 'filled', {'relationships.spouse':'risk', 'standing':'-'}),
('Give it up and swear never to go back.', 'scene:188', {'money':'-', 'standing':'+'}),
('Wait for the secret to solve itself.', 'scene:108', {'relationships.spouse':'-'})]),
dict(id='G26', name='Letting someone else take the blame',
predicament='Someone else is suspected of what you did, and you could keep suspicion where it is.',
actor='person at fault', wants='to escape blame', counterpart='the one suspected',
members=[119, 213, 326, 335, 336],
options=[
('Speak up to save them.', 'scene:119', {'standing':'-', 'relationships.accused':'+'}),
('Point at someone else.', 'scene:326', {'cunning':'+', 'relationships.accused':'-', 'flags.guilty_secret':'set'}),
('Plead for the whole matter to be dropped.', 'scene:335', {'cunning':'+', 'relationships.family':'risk'}),
('Run, and let the case against them collapse.', 'scene:212', {'flags.fugitive':'set', 'relationships.accused':'+'})]),
dict(id='G27', name='Living with someone dangerous',
predicament='You live under the roof of someone violent who controls your life, and must decide how far to shield or defy them.',
actor='dependent', wants='to be safe', counterpart='a violent head of household',
members=[223, 225, 231, 382],
options=[
('Pay to cover up their violence.', 'scene:225', {'money':'-', 'relationships.household':'+'}),
('Make excuses for them.', 'scene:231', {'relationships.household':'+', 'standing':'-'}),
('Slip out and send for help.', 'scene:382', {'nerve':'+', 'relationships.household':'risk'}),
('Lock your door at night.', 'scene:227', {'nerve':'-'})]),
dict(id='G28', name='They called it an accident',
predicament='Someone close to you died, it was ruled an accident, and you cannot shake the belief that it was nothing of the kind.',
actor='survivor', wants='the truth', counterpart='the official verdict',
members=[136, 139, 229],
options=[
('Accept the verdict.', 'archetype', {'relationships.authority':'+'}),
('Keep looking for proof yourself.', 'scene:139', {'observation':'+'}),
('Take it to someone outside the official inquiry.', 'scene:230', {'money':'-', 'relationships.investigator':'+'})]),
dict(id='G29', name='Arriving too late',
predicament='You arrive to act at last, and find the person you were after has already slipped away or struck.',
actor='pursuer', wants='to catch them', counterpart='the quarry',
members=[28, 150, 151, 282, 283, 386],
options=[
('Make it personal and go after them yourself.', 'scene:151', {'nerve':'+', 'relationships.quarry':'-'}),
('Search what they left behind.', 'scene:28', {'observation':'+'}),
('Admit you were beaten.', 'scene:30', {'standing':'-'}),
('Send word ahead to have them stopped.', 'scene:153', {'cunning':'+'})]),
dict(id='G30', name='Getting them to give it away',
predicament='Someone is hiding what you need to know, and you must get them to reveal it without realising they have.',
actor='questioner', wants='the hidden fact', counterpart='someone keeping it back',
members=[22, 26, 49, 201, 206, 207],
options=[
('Stage an alarm and watch where they run.', 'scene:26', {'cunning':'+', 'relationships.target':'-'}),
('Call on a pretext and look for one sign.', 'scene:49', {'observation':'+'}),
('Draw them into a bet.', 'scene:206', {'cunning':'+', 'money':'-'}),
('Set a small test and watch how they react.', 'scene:201', {'observation':'+'})]),
dict(id='G31', name='You were only a pawn',
predicament='You begin to see that you were hired or befriended only to serve someone else\'s hidden scheme.',
actor='person used', wants='to understand, and get even or get clear', counterpart='whoever used them',
members=[44, 45, 46, 273, 374, 377, 384],
options=[
('Go after the people who used you.', 'scene:46', {'nerve':'+', 'money':'-'}),
('Count what you were paid and let it go.', 'filled', {'money':'+'}),
('Keep quiet about what you know until you are safe.', 'scene:377', {'cunning':'+'}),
('Confront them with it.', 'scene:274', {'nerve':'+', 'flags.in_danger':'set'})]),
dict(id='G32', name='Someone on the inside helps you get away',
predicament='Someone inside a dangerous household warns you or helps you escape, at a risk to themselves.',
actor='person in danger', wants='to get out alive', counterpart='an insider who helps',
members=[270, 276, 277, 284, 389],
options=[
('Heed the warning and go.', 'scene:276', {'relationships.insider':'+', 'money':'-'}),
('Ignore it and stay for the fee.', 'scene:270', {'money':'+', 'flags.in_danger':'set'}),
('Wait to see they are not hurt for helping you.', 'scene:277', {'relationships.insider':'+', 'nerve':'+'}),
('Pay the household to look the other way.', 'scene:389', {'money':'-', 'relationships.household':'+'})]),
]
# 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.
# Judged by the client whose trouble drives the story, since the investigator is the same in all twelve.
STANDING = {0:'high', 1:'low', 2:'low', 3:'middle', 4:'middle', 5:'middle', 6:'low',
7:'middle', 8:'low', 9:'high', 10:'high', 11:'low'}
# Story 6's trouble is carried by a poor scholar, a hotel attendant and a workman, all low.
# Story 5's protagonist is a respectable suburban gentleman whose income is secretly from begging.
@@ -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>Holmes 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>The Adventures of Sherlock Holmes: reference groups</h1>
<p class="meta">Arthur Conan Doyle, 1892 (Project Gutenberg #1661 text). 12 stories, 391 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 two 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
@@ -0,0 +1,59 @@
"""Split the Project Gutenberg plain text of Arthur Conan Doyle, *The Adventures of Sherlock
Holmes* (eBook #1661), into stories, then cut scenes with the same rule as
../jacobs/split_se.py and ../wharton/split_gutenberg.py (paragraph boundaries, ~320 words,
tail >= 80). Deterministic: titles are matched as the roman-numeral story headers in the body
(not the contents list), and the Gutenberg licence after END is dropped."""
import json, pathlib, re
TITLES = ['A Scandal in Bohemia', 'The Red-Headed League', 'A Case of Identity',
'The Boscombe Valley Mystery', 'The Five Orange Pips', 'The Man with the Twisted Lip',
'The Adventure of the Blue Carbuncle', 'The Adventure of the Speckled Band',
"The Adventure of the Engineer's Thumb", 'The Adventure of the Noble Bachelor',
'The Adventure of the Beryl Coronet', 'The Adventure of the Copper Beeches']
TARGET = 320
VOLUME = 'The Adventures of Sherlock Holmes (Arthur Conan Doyle, 1892)'
raw = pathlib.Path('corpus/adventures-of-sherlock-holmes.txt').read_text(encoding='utf-8').replace('\r', '')
raw = raw[:raw.index('*** END OF THE PROJECT GUTENBERG')]
lines = raw.split('\n')
ROMAN = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII']
heads = []
for n, t in enumerate(TITLES):
norm_t = t.upper().replace("'", "’")
pat = re.compile(r'^' + re.escape(ROMAN[n]) + r'\. ' + re.escape(norm_t) + r'$')
hits = [i for i, l in enumerate(lines) if pat.match(l.strip())]
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: continue
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})
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']:40} {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