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