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
216 lines
18 KiB
Python
216 lines
18 KiB
Python
"""Hand-built reference grouping of the Winesburg, Ohio predicaments (Claude-written, no local inference).
|
|
|
|
Each scene is in at most one group; scenes that fit no recurring situation stay unassigned.
|
|
Every group spans at least three of the 24 stories, and no story supplies more than half a
|
|
group's members. Stories 6, 7 and 8 (Godliness, Surrender, Terror) are the four parts of one
|
|
tale; every group still spans three or more stories when those three are counted as one.
|
|
Options follow DESIGN.md: 3-5 per group, each marked by where it came from --
|
|
'archetype' a fixed, setting-free option
|
|
'scene:N' what someone in scene N actually did (or refused to do)
|
|
'filled' written to fill a gap the scenes leave
|
|
`moves` names spine paths and a direction only (+ / - / risk / set). No magnitudes: the model never
|
|
chooses a number. Skill labels proposed for this corpus: voice (daring to say what you mean),
|
|
insight (reading what people feel beneath what they say).
|
|
"""
|
|
G = [
|
|
dict(id='G01', name='Whether to leave for somewhere bigger',
|
|
predicament='You feel you do not belong where you grew up, somewhere bigger is calling, and the people here are tied to you.',
|
|
actor='young person', wants='a life of their own', counterpart='the people who would be left behind',
|
|
members=[28, 30, 99, 112, 143, 145, 182, 223, 237, 280, 281],
|
|
options=[
|
|
('Tell them plainly you are going, even if you cannot say why.', 'scene:30', {'voice':'+', 'relationships.family':'risk', 'flags.leaving':'set'}),
|
|
('Slip away at night without a word.', 'scene:223', {'relationships.family':'-', 'money':'risk', 'flags.left_home':'set'}),
|
|
('Offer to give everything up and go with the one who is leaving.', 'scene:112', {'relationships.beloved':'+', 'standing':'-'}),
|
|
('Stay, and keep your head down at your work.', 'archetype', {'money':'+', 'relationships.family':'+', 'standing':'-'}),
|
|
('Take a last walk through the old places before you go.', 'scene:281', {'insight':'+', 'relationships.community':'+'})]),
|
|
dict(id='G02', name='Telling it all to the one who will listen',
|
|
predicament='You have carried something unsaid for years, and at last there is one person willing to sit and hear it.',
|
|
actor='lonely person', wants='to be heard and believed', counterpart='the one willing listener',
|
|
members=[33, 127, 130, 152, 153, 193, 194, 218, 220, 250, 256],
|
|
options=[
|
|
('Tell it all, the worst part too.', 'scene:256', {'voice':'+', 'relationships.confidant':'+', 'flags.confessed':'set'}),
|
|
('Tell it as a warning, not a plea.', 'scene:128', {'standing':'+', 'relationships.confidant':'risk'}),
|
|
('Stop halfway and send them away.', 'scene:195', {'relationships.confidant':'-', 'flags.kept_silent':'set'}),
|
|
('Pour it out to someone who cannot judge you.', 'scene:218', {'voice':'+', 'insight':'-'}),
|
|
('Ask only that they believe you.', 'scene:192', {'relationships.confidant':'+', 'standing':'-'})]),
|
|
dict(id='G03', name='An elder presses their hard lesson on you',
|
|
predicament='Someone older, marked by their own failures, keeps urging on you the lesson they learned, and wants you to live by it.',
|
|
actor='young person', wants='to find their own way', counterpart='an elder with a lesson',
|
|
members=[7, 38, 39, 104, 128, 154, 177, 235, 255],
|
|
options=[
|
|
('Take it to heart and let it change your plans.', 'scene:154', {'insight':'+', 'relationships.elder':'+'}),
|
|
('Listen politely and forget it by morning.', 'archetype', {'relationships.elder':'-'}),
|
|
('Ask them the question you really want answered.', 'scene:126', {'voice':'+', 'relationships.elder':'risk'}),
|
|
('Refuse the lesson and do what you had planned.', 'scene:256', {'standing':'+', 'relationships.elder':'-', 'flags.ignored_advice':'set'})]),
|
|
dict(id='G04', name='One idea has taken over your life',
|
|
predicament='One idea or hope has grown until it runs your whole life, and the people around you are paying for it.',
|
|
actor='person with a ruling idea', wants='to see it fulfilled', counterpart='the people it uses up',
|
|
members=[3, 13, 19, 53, 55, 56, 95, 100, 156],
|
|
options=[
|
|
('Double down: this time it will come true.', 'scene:95', {'standing':'risk', 'relationships.family':'-', 'flags.obsessed':'set'}),
|
|
('Tear it down and start building it again.', 'scene:13', {'insight':'+', 'money':'-'}),
|
|
('Press it on the next person who will listen.', 'scene:100', {'voice':'+', 'relationships.community':'-'}),
|
|
('Settle for doing well enough.', 'scene:156', {'standing':'+', 'insight':'+'}),
|
|
('Notice who it is costing, and stop.', 'filled', {'relationships.family':'+', 'standing':'-'})]),
|
|
dict(id='G05', name='Your child\'s chances are the life you never had',
|
|
predicament='Your own chances are gone, and you have fixed every hope on a child who does not know what you want of them.',
|
|
actor='parent', wants='the child to live the life they missed', counterpart='their child',
|
|
members=[20, 24, 27, 60, 68, 81, 134, 136, 265],
|
|
options=[
|
|
('Press them hard to wake up and get ahead.', 'scene:25', {'standing':'+', 'relationships.child':'-'}),
|
|
('Hold up the one they ought to become.', 'scene:134', {'standing':'+', 'relationships.child':'risk'}),
|
|
('Put money aside for them in secret.', 'scene:265', {'money':'-', 'flags.secret_savings':'set'}),
|
|
('Rehearse a scolding, then say nothing when they come.', 'scene:137', {'relationships.child':'+', 'voice':'-'}),
|
|
('Tell them your own story, and let them choose.', 'filled', {'voice':'+', 'relationships.child':'+'})]),
|
|
dict(id='G06', name='The one everyone watches',
|
|
predicament='Everyone around you has decided you are the odd one, and they watch you, half amused and half afraid.',
|
|
actor='the odd one', wants='to be taken as ordinary', counterpart='the watching community',
|
|
members=[4, 14, 51, 101, 105, 123, 192, 211, 216, 219],
|
|
options=[
|
|
('Win them over with the one thing you do well.', 'scene:105', {'standing':'+', 'relationships.community':'+'}),
|
|
('Keep to yourself and let them talk.', 'archetype', {'relationships.community':'-'}),
|
|
('Lash out at the next one who stares.', 'scene:214', {'voice':'+', 'standing':'-', 'flags.lashed_out':'set'}),
|
|
('Go where nobody knows you.', 'scene:223', {'relationships.community':'-', 'flags.left_home':'set'}),
|
|
('Carry on as you are and let them laugh.', 'scene:102', {'relationships.community':'+', 'standing':'-'})]),
|
|
dict(id='G07', name='What they say about you is not who you are',
|
|
predicament='People have settled on a story about you, admiring or damning, and it has almost nothing to do with who you are inside.',
|
|
actor='person with a reputation', wants='to be known truly', counterpart='the people who talk',
|
|
members=[6, 40, 46, 61, 62, 111, 139, 160, 165, 176, 228],
|
|
options=[
|
|
('Live up to the story they tell.', 'filled', {'standing':'+', 'flags.false_front':'set'}),
|
|
('Confess in general terms, and see who understands.', 'scene:160', {'voice':'+', 'standing':'risk'}),
|
|
('Give up your place rather than go on pretending.', 'scene:165', {'standing':'-', 'flags.dropped_front':'set'}),
|
|
('Hide the part they would not understand.', 'scene:6', {'standing':'+', 'flags.secret_kept':'set'}),
|
|
('Prove them wrong by what you choose next.', 'scene:235', {'standing':'+', 'relationships.community':'+'})]),
|
|
dict(id='G08', name='Reaching out, then pulling back',
|
|
predicament='You have finally reached out to someone who matters, and at the moment of closeness something in you recoils.',
|
|
actor='lonely person', wants='closeness without losing themselves', counterpart='the one they reached for',
|
|
members=[8, 122, 149, 175, 178, 180, 195, 196, 225, 260],
|
|
options=[
|
|
('Run, and say nothing.', 'scene:8', {'relationships.beloved':'-', 'flags.fled_closeness':'set'}),
|
|
('Turn harsh to hide what you felt.', 'scene:178', {'voice':'-', 'relationships.beloved':'risk'}),
|
|
('Drive them off before they know you too well.', 'scene:196', {'relationships.beloved':'-', 'insight':'-'}),
|
|
('Let the moment pass and part kindly.', 'scene:149', {'relationships.beloved':'+', 'standing':'+'}),
|
|
('Stay, and let them see you.', 'filled', {'voice':'+', 'relationships.beloved':'+'})]),
|
|
dict(id='G09', name='The thing you cannot get out',
|
|
predicament='There is something you badly need to say to someone in front of you, and when the moment comes the words will not come.',
|
|
actor='tongue-tied person', wants='to say what they mean', counterpart='the one who needs to hear it',
|
|
members=[21, 31, 82, 146, 148, 185, 200, 222, 224, 231, 262, 271],
|
|
options=[
|
|
('Fall back on the usual polite words.', 'scene:31', {'relationships.close':'-'}),
|
|
('Say something else instead.', 'scene:146', {'relationships.close':'risk', 'insight':'+'}),
|
|
('Send them away and walk it off alone.', 'scene:222', {'relationships.close':'-', 'flags.kept_silent':'set'}),
|
|
('Write it down and leave it for them to find.', 'scene:86', {'voice':'+', 'relationships.close':'risk'}),
|
|
('Boast instead, to fill the silence.', 'scene:271', {'standing':'risk', 'relationships.close':'-'})]),
|
|
dict(id='G10', name='Understood without a word',
|
|
predicament='For once someone understands you without your having to explain, and you do not know what to do with it.',
|
|
actor='person understood at last', wants='to keep the moment', counterpart='the one who understands',
|
|
members=[16, 17, 65, 247, 251, 277, 279],
|
|
options=[
|
|
('Hold still and say nothing.', 'scene:277', {'relationships.confidant':'+', 'insight':'+'}),
|
|
('Stay close to them for good, whatever anyone thinks.', 'scene:17', {'relationships.confidant':'+', 'standing':'-'}),
|
|
('Reach for more than the moment offers.', 'scene:259', {'relationships.confidant':'risk', 'flags.crossed_line':'set'}),
|
|
('Break the spell with play.', 'scene:278', {'relationships.confidant':'+'}),
|
|
('Hide it from everyone, so nobody can break it.', 'scene:65', {'relationships.family':'+', 'relationships.community':'-'})]),
|
|
dict(id='G11', name='On the edge of everyone else\'s life',
|
|
predicament='Everyone around you seems to belong, laughing and pairing off and talking easily, and you stand at the edge unable to join.',
|
|
actor='onlooker', wants='to belong', counterpart='the crowd',
|
|
members=[83, 117, 133, 138, 184, 205, 232, 267],
|
|
options=[
|
|
('Join in, however awkwardly.', 'filled', {'relationships.community':'+', 'standing':'risk'}),
|
|
('Slip away to be alone and think.', 'scene:272', {'insight':'+', 'relationships.community':'-'}),
|
|
('Go and find the one person you want.', 'scene:273', {'voice':'+', 'relationships.beloved':'risk'}),
|
|
('Tell yourself you are simply older than they are.', 'scene:144', {'standing':'+', 'relationships.community':'-'}),
|
|
('Stay where you are and watch.', 'archetype', {'insight':'+'})]),
|
|
dict(id='G12', name='Waiting for someone who may never come',
|
|
predicament='You have waited a long time for someone to come back or come to you, and cannot tell whether to keep on.',
|
|
actor='one who waits', wants='the absent one to come', counterpart='the absent one',
|
|
members=[5, 87, 114, 116, 118, 252, 266],
|
|
options=[
|
|
('Keep faith, and keep waiting.', 'scene:115', {'standing':'-', 'relationships.absent':'+', 'flags.keeping_faith':'set'}),
|
|
('Save up and go after them.', 'scene:114', {'money':'+', 'relationships.absent':'risk'}),
|
|
('Say aloud that it is not coming.', 'scene:118', {'insight':'+', 'flags.gave_up_waiting':'set'}),
|
|
('Let someone else walk with you, just once.', 'scene:119', {'relationships.community':'+', 'relationships.absent':'-'}),
|
|
('Put it out of your mind and get on with things.', 'archetype', {'money':'+', 'relationships.absent':'-'})]),
|
|
dict(id='G13', name='Alone so long your habits have become your company',
|
|
predicament='You have lived shut away so long that private habits and imaginings have begun to replace the people you once needed.',
|
|
actor='recluse', wants='company without risk', counterpart='the people outside',
|
|
members=[12, 115, 119, 120, 124, 186, 190],
|
|
options=[
|
|
('Invent the company you cannot find.', 'scene:186', {'insight':'-', 'relationships.community':'-', 'flags.withdrawn':'set'}),
|
|
('Make one cautious effort to be among people.', 'scene:119', {'relationships.community':'+', 'standing':'+'}),
|
|
('Nurse your scorn and keep them all away.', 'scene:124', {'relationships.community':'-', 'standing':'risk'}),
|
|
('Keep to your small habits; they are enough.', 'scene:12', {'money':'+', 'relationships.community':'-'})]),
|
|
dict(id='G14', name='The life you settled into',
|
|
predicament='You settled into a marriage or a life because it was at hand, and years later it feels like a harness you cannot slip.',
|
|
actor='person who settled', wants='to be free, or at peace', counterpart='their partner and household',
|
|
members=[89, 90, 166, 189, 229, 234, 254, 257],
|
|
options=[
|
|
('Walk out, and leave them provided for.', 'scene:189', {'money':'-', 'relationships.spouse':'-', 'flags.walked_out':'set'}),
|
|
('Blame your partner for everything you missed.', 'scene:166', {'relationships.spouse':'-'}),
|
|
('Keep a secret way out and tell no one.', 'scene:257', {'money':'+', 'relationships.spouse':'-', 'flags.secret_savings':'set'}),
|
|
('Remember the good evenings, and stay.', 'scene:235', {'relationships.spouse':'+', 'relationships.family':'+'}),
|
|
('Try again to explain what you really wanted.', 'scene:89', {'voice':'+', 'relationships.spouse':'risk'})]),
|
|
dict(id='G15', name='The urge to break out, now',
|
|
predicament='An urge you cannot explain seizes you to run out into the night and do something wild, and it will not wait.',
|
|
actor='restless person', wants='release', counterpart='everything that holds them',
|
|
members=[42, 64, 121, 173, 233, 242, 258],
|
|
options=[
|
|
('Go, and see where it takes you.', 'scene:42', {'standing':'risk', 'flags.broke_out':'set'}),
|
|
('Run until you drop, then go home.', 'scene:258', {'insight':'+', 'relationships.spouse':'-'}),
|
|
('Call out to the first person you meet.', 'scene:122', {'standing':'-', 'relationships.community':'risk'}),
|
|
('Get drunk once, on purpose, to learn what it is like.', 'scene:242', {'money':'-', 'insight':'+', 'flags.drunk_once':'set'}),
|
|
('Go to the one person who might understand.', 'scene:179', {'voice':'+', 'relationships.confidant':'+'})]),
|
|
dict(id='G16', name='A desire at war with who you mean to be',
|
|
predicament='A desire you are ashamed of keeps pulling at you, and each time you give in you tell yourself you are testing your strength.',
|
|
actor='person of good standing', wants='to stay who they mean to be', counterpart='the one they desire',
|
|
members=[159, 162, 164, 179, 243, 244, 263],
|
|
options=[
|
|
('Close the gap tomorrow, and mean it.', 'scene:162', {'standing':'+', 'flags.resisted':'set'}),
|
|
('Go back, telling yourself it is only a test.', 'scene:164', {'standing':'risk', 'flags.temptation':'set'}),
|
|
('Keep the thought, but keep it pure.', 'scene:244', {'insight':'+'}),
|
|
('Turn to your partner instead.', 'scene:161', {'relationships.spouse':'+'}),
|
|
('Give in, and stop pretending.', 'scene:165', {'standing':'-', 'relationships.spouse':'-'})]),
|
|
dict(id='G17', name='Someone else wants the one you want',
|
|
predicament='Someone else wants the person you care for, and nobody has said plainly which of you they want.',
|
|
actor='suitor', wants='the person they care for', counterpart='a rival',
|
|
members=[141, 150, 198, 207, 209, 246, 270],
|
|
options=[
|
|
('Refuse to carry the rival\'s message, and go yourself.', 'scene:142', {'voice':'+', 'relationships.rival':'-'}),
|
|
('Walk out with the other one to make them jealous.', 'scene:207', {'relationships.beloved':'risk', 'relationships.rival':'-'}),
|
|
('Threaten the rival.', 'scene:206', {'standing':'-', 'relationships.rival':'-'}),
|
|
('Forbid the other to speak of them that way.', 'scene:246', {'relationships.rival':'-', 'relationships.beloved':'+'}),
|
|
('Decide it will always be someone else, and step aside.', 'scene:150', {'standing':'-', 'relationships.beloved':'-'})]),
|
|
dict(id='G18', name='Acting bigger than you feel',
|
|
predicament='You want someone to see you as bigger and surer than you feel, so you talk and act a part you do not believe.',
|
|
actor='person out to impress', wants='to be taken seriously', counterpart='the ones they want to impress',
|
|
members=[25, 45, 140, 188, 201, 208],
|
|
options=[
|
|
('Boast of the great things you will do.', 'scene:140', {'standing':'risk', 'relationships.friend':'-'}),
|
|
('Talk worldly, like the others.', 'scene:201', {'relationships.peers':'+', 'insight':'-'}),
|
|
('Play the solid citizen.', 'scene:188', {'standing':'+', 'money':'+'}),
|
|
('Drop the act and say you are not sure.', 'filled', {'voice':'+', 'standing':'-'}),
|
|
('Say little, and let them draw their own conclusions.', 'archetype', {'standing':'risk'})]),
|
|
dict(id='G19', name='Unseen at home',
|
|
predicament='The person at home who should notice you is wrapped up in their own concerns, and you have stopped expecting to be seen.',
|
|
actor='overlooked family member', wants='to be noticed and loved', counterpart='the one at home who does not see them',
|
|
members=[18, 37, 52, 63, 78, 151, 253],
|
|
options=[
|
|
('Hide and wait for it to pass.', 'scene:63', {'relationships.family':'-'}),
|
|
('Work harder, until someone notices.', 'scene:52', {'standing':'+', 'relationships.family':'risk'}),
|
|
('Take a little of what is withheld from you, in secret.', 'scene:37', {'money':'+', 'flags.stole':'set'}),
|
|
('Leave, hoping for warmth elsewhere.', 'scene:78', {'relationships.family':'-', 'flags.left_home':'set'}),
|
|
('Take up the new name a stranger offers you.', 'scene:154', {'insight':'+', 'relationships.family':'risk'})]),
|
|
]
|
|
|
|
# Protagonist standing by story, for stage assignment (DESIGN.md "Stages"). Per story, not per
|
|
# scene: a coarse first cut, and the one place this grouping uses a judgement not in the text.
|
|
STANDING = {0:'middle', 1:'low', 2:'middle', 3:'middle', 4:'middle', 5:'middle', 6:'high', 7:'high',
|
|
8:'high', 9:'middle', 10:'low', 11:'low', 12:'middle', 13:'low', 14:'high', 15:'middle',
|
|
16:'low', 17:'middle', 18:'low', 19:'low', 20:'low', 21:'middle', 22:'middle', 23:'middle'}
|
|
# A day labourer, a shop clerk, a demoted operator, a neglected child, an obscure illustrator turned
|
|
# recluse, a failing shopkeeper's son, a farm hand and a stable boy rank low. The reporter, his
|
|
# mother, the town's odd professionals and a teacher rank middle. The valley's great landowner, his
|
|
# daughter and grandson, and the best-paid pastor rank high. Story 4's man calls himself a doctor
|
|
# but has few patients and lives in squalor: judged middle, as he chooses it.
|