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