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
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