"""Hand-built reference grouping of the Maupassant 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 proposed for this corpus: pride, shrewdness. pride self-regard and the wish to be seen well; '-' is swallowing it shrewdness the peasant's and the petty official's calculation: angles, half-truths, bargains """ G = [ dict(id='G01', name='Keeping up appearances before people who matter', predicament='People whose good opinion you want are about to see you, and what they will see falls short of what you want them to think.', actor='person of modest standing', wants='to be thought well of', counterpart='people whose opinion matters', members=[6, 73, 74, 75, 76, 90], options=[ ('Borrow what you need to look the part.', 'scene:75', {'standing':'+', 'relationships.lender':'+', 'flags.borrowed_finery':'set', 'money':'risk'}), ('Spend what was put by for something else.', 'scene:74', {'money':'-', 'standing':'+', 'relationships.spouse':'-'}), ('Stay away rather than be seen as you are.', 'scene:73', {'pride':'+', 'standing':'-'}), ('Put on a show of feeling and talk over everyone.', 'scene:6', {'shrewdness':'+', 'standing':'risk'}), ('Go as you are.', 'archetype', {'pride':'-', 'standing':'risk'})]), dict(id='G02', name='A cover-up that costs more than the truth', predicament='You covered something up instead of owning it, and keeping it covered is now costing far more than the truth would.', actor='person with something to hide', wants='to keep it hidden', counterpart='the person it is hidden from', members=[3, 4, 5, 23, 34, 36, 37, 38, 40, 77, 78, 79], options=[ ('Keep it covered, whatever it costs.', 'scene:79', {'money':'-', 'relationships.deceived':'+', 'flags.cover_up':'set'}), ('Buy time with one more small lie.', 'scene:78', {'shrewdness':'+', 'relationships.deceived':'risk'}), ('Get someone in authority to bend the rules for you.', 'scene:5', {'relationships.official':'+', 'standing':'risk'}), ('Swear to a half-truth.', 'scene:34', {'shrewdness':'+', 'relationships.deceived':'risk'}), ('Tell it all, at last.', 'scene:40', {'relationships.deceived':'risk', 'standing':'-', 'pride':'-'})]), dict(id='G03', name="A relative's death, counted as a cost", predicament='A relative is dying, and what weighs most with the family is what the death will cost them in time, money or good name.', actor='family member', wants='the death handled without loss', counterpart='the dying relative', members=[1, 2, 7, 82, 83, 85, 88, 89], options=[ ('Get on with the work and plan around the death.', 'scene:2', {'money':'+', 'relationships.family':'-'}), ('Keep your own name out of it and send someone else.', 'scene:83', {'standing':'+', 'relationships.dying':'-'}), ('Try to win them round before the end.', 'scene:87', {'relationships.dying':'risk', 'standing':'+'}), ('Sit with them, whatever it costs.', 'filled', {'money':'-', 'relationships.dying':'+'})]), dict(id='G04', name='Bowing to the one who holds your living', predicament='Someone who holds your living in their hands will give you what you need only if you bow to them on something personal.', actor='person in need', wants='what the other can give', counterpart='the one who holds it', members=[29, 30, 33, 35, 57, 58, 59, 60, 61, 65, 67], options=[ ('Bow, and take what you came for.', 'scene:61', {'money':'+', 'pride':'-', 'relationships.holder':'+', 'flags.recanted':'set'}), ('Agree, then haggle over how publicly you must do it.', 'scene:60', {'shrewdness':'+', 'relationships.holder':'risk'}), ('Refuse, without saying why.', 'scene:30', {'pride':'+', 'money':'-', 'relationships.holder':'-'}), ('Sit through their sermon and wait for the moment to ask.', 'scene:67', {'pride':'-', 'relationships.holder':'+'}), ('Invent an excuse and slip away.', 'scene:68', {'relationships.holder':'-', 'money':'-'})]), dict(id='G05', name='Called to account', predicament='Someone whose judgement you need is examining your conduct, and you must show yourself in a better light than the facts allow.', actor='person under examination', wants='to be judged well', counterpart='the one judging', members=[12, 62, 63, 66], options=[ ('Admit each small failing while insisting you are honest at heart.', 'scene:63', {'pride':'+', 'relationships.judge':'+'}), ('Deny it flatly.', 'scene:66', {'pride':'+', 'relationships.judge':'-'}), ('Prove yourself with a hard act in front of them.', 'scene:12', {'standing':'+', 'relationships.family':'-'}), ('Make a clean breast of it.', 'archetype', {'standing':'-', 'relationships.judge':'+'})]), dict(id='G06', name='Taking the common for the fine, or the fine for the common', predicament='You have misread who stands high and who stands low, or what is precious and what is cheap, and are about to act on it.', actor='person who has misjudged', wants='to come out of it well', counterpart='the one they misjudged', members=[48, 70, 71, 81, 86], options=[ ('Let the flattering mistake stand.', 'scene:48', {'standing':'+', 'flags.pretence':'set'}), ('Make yourself at home on your own reading of it.', 'scene:70', {'pride':'+', 'standing':'risk'}), ('Press your advantage before you are sure of it.', 'scene:71', {'shrewdness':'+', 'standing':'risk', 'relationships.relative':'-'}), ('Ask plainly who, or what, this is.', 'filled', {'pride':'-', 'standing':'+'})]), dict(id='G07', name='Meeting someone time has changed', predicament='You meet again someone you once knew well, and time has changed them, or you, almost past recognition.', actor='person meeting an old acquaintance', wants='to find what they remember', counterpart='the changed acquaintance', members=[80, 108, 109, 110, 136], options=[ ('Go up to them and say who you are.', 'scene:80', {'pride':'-', 'relationships.old_friend':'+'}), ('Let your shock and grief show.', 'scene:109', {'relationships.old_friend':'risk'}), ('Hide it behind small talk and get away.', 'scene:110', {'pride':'+', 'relationships.old_friend':'-'}), ('Take them home and look after them.', 'scene:136', {'money':'-', 'relationships.old_friend':'+'})]), dict(id='G08', name='Parted for a long season from someone you love', predicament='Circumstances are parting you for a long time from someone you love, and you must decide how to hold on until you meet again.', actor='person being parted', wants='to keep the bond', counterpart='the one they love', members=[25, 28, 55, 119, 120, 121, 122], options=[ ('Ask them, quietly, not to forget you.', 'scene:120', {'relationships.beloved':'+'}), ('Keep going to look toward where they are.', 'scene:121', {'relationships.beloved':'+', 'relationships.companion':'-'}), ('Work twice as hard and save for them.', 'scene:26', {'money':'+', 'relationships.employer':'+'}), ('Write once a year, and never say what matters.', 'scene:55', {'pride':'+', 'relationships.beloved':'risk'}), ('Go to them now, whatever it costs.', 'scene:28', {'money':'-', 'relationships.employer':'-', 'relationships.beloved':'+'})]), dict(id='G09', name='Suddenly smitten', predicament='You have fallen suddenly for someone you barely know, and every sensible consideration has stopped mattering.', actor='smitten person', wants='the one they have fallen for', counterpart='a near stranger', members=[49, 51, 52, 54, 106, 107], options=[ ('Embroider your story to hold their attention.', 'scene:49', {'relationships.beloved':'+', 'flags.pretence':'set'}), ('Press your care on them, wanted or not.', 'scene:52', {'relationships.beloved':'risk'}), ('Seize the moment and kiss them.', 'scene:54', {'relationships.beloved':'risk', 'standing':'risk'}), ('Pay no mind to the one they already belong to.', 'scene:107', {'relationships.spouse':'-', 'flags.affair':'set'}), ('Say nothing and let it pass.', 'archetype', {'relationships.beloved':'-'})]), dict(id='G10', name='Passion past the point of caution', predicament='Anger or a consuming passion has carried you past caution, and what you do next cannot be undone.', actor='person in the grip of passion', wants='satisfaction', counterpart='whoever or whatever provoked it', members=[13, 14, 21, 113, 114, 115, 116], options=[ ('Strike now.', 'scene:15', {'flags.violent':'set', 'standing':'-', 'relationships.family':'-'}), ('Take revenge where they will feel it most.', 'scene:13', {'flags.revenge':'set', 'standing':'risk'}), ('Hold them down until they promise.', 'scene:21', {'relationships.lover':'-', 'flags.promise_forced':'set'}), ('Chase it down, whatever the risk.', 'scene:114', {'standing':'+', 'flags.reckless':'set'}), ('Let it go and carry the grief home.', 'filled', {'standing':'-', 'relationships.family':'+'})]), dict(id='G11', name='Danger closing in, and others depend on you', predicament='A danger is closing in on you and the people with you, there is no easy way out, and they look to you.', actor='person others rely on', wants='everyone out safe', counterpart='the danger', members=[50, 53, 99, 100, 101, 103, 126, 127, 128], options=[ ('Keep it quiet so the others do not panic.', 'scene:101', {'shrewdness':'+', 'relationships.companions':'risk'}), ('Hold everyone back from a rash escape, and wait.', 'scene:50', {'relationships.companions':'+'}), ('Keep spirits up with ceremony and song.', 'scene:53', {'pride':'+', 'relationships.companions':'+'}), ('Go out alone to search.', 'scene:127', {'standing':'risk', 'relationships.companions':'+', 'flags.faced_danger':'set'}), ('Save yourself and turn back.', 'scene:129', {'relationships.companions':'-', 'flags.guilty_secret':'set'})]), dict(id='G12', name='Alone too long', predicament='You have been alone too long in an empty place, and fear is beginning to make your decisions for you.', actor='isolated person', wants='to feel safe', counterpart='the emptiness around them', members=[31, 47, 123, 125, 132, 134], options=[ ('Go looking for company.', 'scene:123', {'relationships.companion':'+'}), ('Bar the door against whatever is out there.', 'scene:134', {'relationships.companion':'-', 'flags.barricaded':'set'}), ('Run, anywhere.', 'scene:31', {'standing':'-', 'flags.fled':'set'}), ('Drink until it goes quiet.', 'scene:132', {'money':'-', 'standing':'-', 'flags.drinking':'set'}), ('Get on with the work in hand.', 'archetype', {'pride':'+'})]), dict(id='G13', name='Haunted by someone you failed', predicament='You believe you failed someone or did them wrong, and it has begun to feel like a punishment you cannot escape.', actor='guilty person', wants='to be free of it', counterpart='the one they failed', members=[15, 39, 129, 130, 131, 133], options=[ ('Leave and start again where nobody knows.', 'scene:15', {'standing':'-', 'relationships.community':'-'}), ('Try every remedy anyone suggests.', 'scene:39', {'money':'-', 'relationships.adviser':'+'}), ('Drown it in drink.', 'scene:133', {'money':'-', 'standing':'-', 'flags.drinking':'set'}), ('Go back out and finish what you abandoned.', 'filled', {'relationships.lost':'+', 'flags.faced_fear':'set'}), ('Confess it to someone.', 'archetype', {'standing':'-', 'relationships.confessor':'+'})]), ] # 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:'low', 1:'low', 2:'low', 3:'middle', 4:'middle', 5:'middle', 6:'middle', 7:'high', 8:'middle', 9:'middle', 10:'high', 11:'low'} # Story 1 is told by the landowner, but its predicaments are the old servant's, so it ranks low. # Story 4's carpenter is a village councillor with his own trade: middle, at the low edge. # Story 6's couple are a minor clerk's household; ranked middle because the story turns on their # wanting to pass among those above them, not on want.