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,332 @@
"""Hand-built reference grouping of the Lawson 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 52 stories, and no story supplies more than half a
group's members.
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: grit (enduring hardship, holding on when it
would be easier to give up), nous (practical wit: knowing how to get by, get round and get fed).
"""
G = [
# ---- mateship --------------------------------------------------------------------------------------
dict(id='G01', name='An old mate down on his luck leans on you',
predicament='An old mate from harder days has turned up broke and expects you to carry him, and he will not take a hint.',
actor='settled person', wants='to help without being bled dry', counterpart='an old mate down on his luck',
members=[105, 106, 107, 122, 148, 158, 176],
options=[
('Take him in, for old times\' sake.', 'scene:105', {'relationships.mate':'+', 'money':'-', 'relationships.family':'-'}),
('Invent an excuse to ease him out.', 'scene:106', {'nous':'+', 'relationships.mate':'risk'}),
('Give him something, if only to be rid of him.', 'scene:177', {'money':'-', 'relationships.mate':'-'}),
('Tell him straight that he has to go.', 'filled', {'grit':'+', 'relationships.mate':'-'}),
('Leave food out for him and say nothing.', 'scene:148', {'money':'-', 'relationships.mate':'+', 'standing':'+'})]),
dict(id='G02', name='Standing by a mate nobody else will',
predicament='A mate of yours has let himself and others down, everyone else has written him off, and standing by him will cost you.',
actor='loyal mate', wants='to keep faith with him', counterpart='the crowd that has written him off',
members=[62, 63, 64, 214, 215, 293, 294, 295, 297],
options=[
('Speak up for him, and fight if it comes to that.', 'scene:297', {'relationships.mate':'+', 'relationships.crowd':'-', 'flags.fought_for_mate':'set'}),
('Remind them he never ran anyone down behind their back.', 'scene:294', {'standing':'+', 'relationships.crowd':'risk'}),
('Refuse any help that means leaving him behind.', 'scene:63', {'relationships.mate':'+', 'grit':'+', 'money':'-'}),
('Carry him yourself, whatever it costs you.', 'scene:215', {'relationships.mate':'+', 'money':'-'}),
('Keep your head down and let them talk.', 'archetype', {'relationships.mate':'-', 'relationships.crowd':'+'})]),
dict(id='G03', name='A mate always one move ahead of you',
predicament='Your mate is sharper than you, keeps you in the dark, and leaves you carrying the risk while he comes out ahead.',
actor='the slower mate', wants='a fair share and fair treatment', counterpart='a sharp mate',
members=[19, 20, 25, 26, 108, 172, 173, 177],
options=[
('Tell him off to his face.', 'scene:25', {'relationships.mate':'-', 'standing':'+'}),
('Do as he says and learn his game.', 'scene:174', {'nous':'+', 'relationships.mate':'+', 'flags.learned_the_game':'set'}),
('Part company when the chance comes.', 'scene:27', {'relationships.mate':'-', 'flags.moved_on':'set'}),
('Stand up to him with your fists.', 'scene:108', {'grit':'+', 'relationships.mate':'risk'}),
('Keep your own money where he cannot get at it.', 'filled', {'money':'+', 'nous':'+'})]),
dict(id='G04', name='Keeping an old mateship alive',
predicament='An old mate from the hard years is far away or only passing through, and keeping the tie alive takes effort.',
actor='old mate', wants='to keep the old tie alive', counterpart='a mate from the old days',
members=[0, 3, 113, 114, 115, 304],
options=[
('Go to trouble over a small token for him.', 'scene:114', {'relationships.mate':'+', 'money':'-'}),
('Make him welcome and let the old days talk.', 'scene:0', {'relationships.mate':'+', 'relationships.family':'-'}),
('Keep what the two of you shared from your family.', 'scene:3', {'relationships.mate':'+', 'relationships.family':'-', 'flags.shared_secret':'set'}),
('Let it lapse; you both have lives now.', 'archetype', {'relationships.mate':'-'})]),
dict(id='G05', name='Someone worse off than you',
predicament='Someone even worse off than you is right in front of you, and you have only a little to spare.',
actor='person barely getting by', wants='to do right without going short', counterpart='someone worse off',
members=[9, 41, 83, 207, 208, 265],
options=[
('Share what you have.', 'scene:83', {'money':'-', 'relationships.mates':'+', 'standing':'+'}),
('Give enough to see them on their way.', 'scene:41', {'money':'-', 'relationships.stranger':'+'}),
('Humour them kindly and leave a little behind.', 'scene:208', {'money':'-', 'relationships.stranger':'+'}),
('Lend your hands and your time instead of money.', 'scene:265', {'grit':'+', 'relationships.stranger':'+'}),
('Walk on; you can barely keep yourself.', 'archetype', {'money':'+', 'standing':'-'})]),
dict(id='G06', name='The one the crew picks on',
predicament='The crew has picked one of its own as the butt of every joke, and the next one is being planned with you in it.',
actor='crew member', wants='to fit in without being cruel', counterpart='the butt, and the rest of the crew',
members=[139, 141, 143, 144, 243, 244, 245, 247, 275],
options=[
('Join in the joke.', 'scene:141', {'relationships.crew':'+', 'relationships.butt':'-'}),
('Call it off before it goes too far.', 'scene:275', {'relationships.butt':'+', 'relationships.crew':'risk', 'standing':'+'}),
('Keep a straight face and deny everything.', 'scene:142', {'nous':'+', 'relationships.butt':'-'}),
('Treat him with extra respect once you see it hurt.', 'scene:144', {'relationships.butt':'+', 'relationships.crew':'+'})]),
dict(id='G07', name='Whose side are you on',
predicament='The people around you are sorting out who stands with the workers and who with the masters, and you must show which.',
actor='working man', wants='to stand with the right people', counterpart='mates on one side, masters on the other',
members=[50, 51, 84, 233, 234],
options=[
('Declare yourself with your mates.', 'scene:84', {'relationships.mates':'+', 'relationships.boss':'-'}),
('Boast of how you stood up to a boss.', 'scene:234', {'standing':'+', 'relationships.mates':'risk'}),
('Say your loyalty goes only to whoever treats you fairly.', 'scene:50', {'relationships.mates':'-', 'standing':'risk'}),
('Keep your views to yourself.', 'archetype', {'relationships.boss':'+'})]),
# ---- work and the lack of it -----------------------------------------------------------------------
dict(id='G08', name='The one who holds your living',
predicament='Your living depends on someone who will not wait, will not raise your pay, and can put another in your place.',
actor='worker', wants='to keep their place', counterpart='the boss',
members=[42, 55, 75, 119, 120, 121, 196],
options=[
('Go to work sick rather than lose your place.', 'scene:75', {'relationships.boss':'+', 'grit':'+', 'flags.worked_sick':'set'}),
('Refuse to take the sack.', 'scene:120', {'nous':'+', 'relationships.boss':'risk'}),
('Do only what anyone will check.', 'scene:55', {'relationships.boss':'-', 'nous':'+'}),
('Turn down terms that put every cost on you.', 'filled', {'money':'-', 'standing':'+'}),
('Keep your head down and never ask for a rise.', 'scene:199', {'relationships.boss':'+', 'money':'-'})]),
dict(id='G09', name='No work to be had',
predicament='There is no work to be had, and you must keep yourself fed until there is, however you can.',
actor='worker out of work', wants='work, or at least a meal', counterpart='whoever might hire or feed them',
members=[80, 97, 145, 209, 261, 298],
options=[
('Keep walking from one handout to the next.', 'scene:80', {'grit':'+', 'standing':'-'}),
('Ask for any work at all, then settle for a handout.', 'scene:209', {'money':'+', 'relationships.boss':'+', 'standing':'-'}),
('Take whatever work is going, however poor.', 'scene:261', {'money':'+', 'grit':'+'}),
('Go wherever you are sent, however far.', 'scene:97', {'relationships.authority':'+', 'money':'risk'}),
('Stay put and wait for the season to turn.', 'archetype', {'money':'-'})]),
dict(id='G10', name='Taking from those who will not miss it',
predicament='The outfit that employs or carries you has plenty and gives you little, and it would be easy to help yourself.',
actor='poorly treated worker', wants='a fairer share', counterpart='the company or the boss',
members=[82, 150, 211, 240, 241],
options=[
('Help yourself, and share it round.', 'scene:240', {'money':'+', 'relationships.mates':'+', 'flags.pilfered':'set'}),
('Time it for when the boss is away.', 'scene:82', {'nous':'+', 'money':'+'}),
('Knock off early; nobody will know.', 'scene:211', {'relationships.boss':'-', 'flags.skived':'set'}),
('Leave it alone; some poor man may bear the loss.', 'scene:241', {'standing':'+', 'relationships.mates':'-'}),
('Tell on whoever did it.', 'filled', {'relationships.boss':'+', 'relationships.mates':'-', 'flags.informer':'set'})]),
dict(id='G11', name='A venture that keeps failing',
predicament='Everything you have put into a venture keeps being lost, and you could give it up or put in still more.',
actor='struggling small holder', wants='to make it pay at last', counterpart='bad luck and bad advice',
members=[1, 2, 7, 10, 54, 126, 166],
options=[
('Try again the same way, only harder.', 'scene:10', {'grit':'+', 'money':'-'}),
('Take the advice of whoever is nearest.', 'scene:54', {'money':'-', 'relationships.neighbours':'+'}),
('Keep talking of the fresh start you will make one day.', 'scene:1', {'relationships.mate':'+', 'money':'-'}),
('Cut your losses and take wage work.', 'scene:13', {'money':'+', 'standing':'-'}),
('Scratch a living from what others left behind.', 'scene:126', {'grit':'+', 'money':'+', 'standing':'-'})]),
dict(id='G12', name='Going away for work, leaving people behind',
predicament='There is no living to be had where your people are, and the only work is far away, where they cannot follow yet.',
actor='worker', wants='a living', counterpart='the family and mates they would leave',
members=[99, 192, 236, 242, 302, 303, 307],
options=[
('Go, and send for them when you can.', 'scene:302', {'money':'+', 'relationships.family':'-', 'flags.went_away':'set'}),
('Go, and let the ties lapse.', 'scene:99', {'money':'+', 'relationships.family':'-', 'standing':'-'}),
('Follow your mates out.', 'scene:307', {'relationships.mates':'+', 'money':'risk'}),
('Stay and make do.', 'archetype', {'relationships.family':'+', 'money':'-'})]),
dict(id='G13', name='Time to walk away',
predicament='A place or an arrangement has stopped being good for you, and the question is whether to leave, and how.',
actor='restless person', wants='to be free of it', counterpart='the people they would leave',
members=[27, 94, 111, 189, 292],
options=[
('Leave quietly, without a word.', 'scene:111', {'relationships.locals':'-', 'flags.moved_on':'set'}),
('Invent a polite excuse and go.', 'scene:189', {'nous':'+', 'relationships.locals':'+'}),
('Say plainly why you are going.', 'filled', {'standing':'+', 'relationships.locals':'risk'}),
('Stay, because you promised.', 'scene:94', {'relationships.family':'+', 'money':'-'}),
('Move on before you are found out.', 'scene:292', {'nous':'+', 'standing':'+'})]),
# ---- money, debt and the powerful -----------------------------------------------------------------
dict(id='G14', name='Owing more than you can pay',
predicament='You owe money you cannot find, and the one you owe has you cornered and knows it.',
actor='debtor', wants='time, or a way out', counterpart='a creditor who holds their roof or their goods',
members=[18, 154, 185, 186, 187, 256],
options=[
('Stand and listen, and hope it buys you time.', 'scene:187', {'relationships.creditor':'+', 'grit':'+'}),
('Keep out of their way as much as you can.', 'scene:186', {'relationships.creditor':'-', 'standing':'-'}),
('Go from door to door arguing that it is not your debt.', 'scene:256', {'nous':'+', 'relationships.creditor':'-', 'standing':'risk'}),
('Pay what you can now, and promise the rest.', 'filled', {'money':'-', 'relationships.creditor':'+'}),
('Run up more, looking as if you can pay.', 'scene:18', {'money':'+', 'flags.living_on_tick':'set', 'standing':'risk'})]),
dict(id='G15', name='Slipping away from what you owe',
predicament='You owe more than you can pay, and you could slip away quietly before the one you owe can stop you.',
actor='debtor', wants='to get clear with their things', counterpart='the one they owe',
members=[21, 23, 24, 123, 124, 263, 264, 266, 267],
options=[
('Clear out by night with whatever you can carry.', 'scene:264', {'money':'+', 'flags.did_a_flit':'set', 'standing':'-'}),
('Hobble the pursuit first, then run.', 'scene:22', {'nous':'+', 'relationships.creditor':'-', 'flags.did_a_flit':'set'}),
('Go to them and admit you are broke.', 'scene:124', {'standing':'+', 'relationships.creditor':'+', 'money':'-'}),
('Take a little more on your way out.', 'scene:21', {'money':'+', 'relationships.creditor':'-', 'standing':'risk'}),
('Stay and face what comes.', 'archetype', {'grit':'+', 'money':'-'})]),
dict(id='G16', name='Up against a powerful man with the rules on his side',
predicament='Someone powerful wants you gone or wants what is yours, and the rules and the people who apply them are on his side.',
actor='small holder', wants='to keep what is theirs', counterpart='a powerful man and the law that backs him',
members=[8, 12, 13, 146, 227, 258],
options=[
('Hit back the same way he hits you.', 'scene:12', {'relationships.authority':'-', 'flags.hit_back':'set', 'standing':'risk'}),
('Fight it out in front of the ones who judge.', 'scene:258', {'money':'-', 'relationships.authority':'risk'}),
('Hold on and outlast him.', 'scene:8', {'grit':'+', 'money':'-'}),
('Say out loud that the rules are rigged.', 'scene:227', {'standing':'-', 'relationships.mates':'+'}),
('Give up the ground and move on.', 'archetype', {'money':'-', 'relationships.authority':'+'})]),
dict(id='G17', name='Keeping up appearances while broke',
predicament='You are broke, and the people whose good opinion you care about must not find out.',
actor='proud person down on their luck', wants='to keep face', counterpart='relatives, neighbours or a sweetheart',
members=[149, 184, 229, 230, 232, 254],
options=[
('Spend your last on a show for them.', 'scene:230', {'money':'-', 'standing':'+', 'flags.keeping_up':'set'}),
('Say you have eaten, and go hungry.', 'scene:184', {'grit':'+', 'standing':'+'}),
('Let them think you are better off, and slip away.', 'scene:229', {'relationships.sweetheart':'risk', 'standing':'+'}),
('Own up that times are hard.', 'filled', {'standing':'-', 'relationships.family':'+'})]),
dict(id='G18', name='Looked down on for being poor',
predicament='Someone who thinks themselves above you treats you as beneath notice, and you have only your pride to answer with.',
actor='poor worker', wants='to be treated as an equal', counterpart='someone who looks down on them',
members=[15, 16, 17, 147, 237, 277, 278, 279, 280],
options=[
('Tell them flatly you are not ashamed.', 'scene:16', {'standing':'+', 'relationships.betters':'-'}),
('Make a game of forcing them to notice you.', 'scene:278', {'nous':'+', 'money':'-', 'standing':'risk'}),
('Show them the door without a word.', 'scene:237', {'standing':'+', 'relationships.betters':'-'}),
('Take what they offer anyway, once your point is made.', 'scene:17', {'money':'-', 'relationships.betters':'+'}),
('Swallow it and keep your eyes down.', 'archetype', {'standing':'-'})]),
dict(id='G19', name='Money in your pocket and the drink on offer',
predicament='You have a little money and mates about you, and the drink would make tonight better and tomorrow worse.',
actor='worker with money in hand', wants='a good time', counterpart='mates, and the bar',
members=[130, 157, 203, 231, 273, 305],
options=[
('Shout your mates and hang the cost.', 'scene:305', {'money':'-', 'relationships.mates':'+', 'flags.on_the_spree':'set'}),
('Drink the last of it and decide not to care.', 'scene:157', {'money':'-', 'grit':'-'}),
('Head straight for the bar when work is done.', 'scene:203', {'money':'-', 'relationships.mates':'+'}),
('Keep it in your pocket.', 'archetype', {'money':'+', 'relationships.mates':'-'})]),
# ---- tricks and trust -----------------------------------------------------------------------------
dict(id='G20', name='Talking a kind host out of a free feed',
predicament='Someone decent has something you need, and a good story or a little flattery would get it for you free.',
actor='traveller on their uppers', wants='food, shelter or money for nothing', counterpart='a kindly host',
members=[174, 175, 210, 283, 284, 286, 299, 301],
options=[
('Spin a sad story to fit their soft spot.', 'scene:175', {'money':'+', 'nous':'+', 'flags.worked_a_mark':'set'}),
('Pose as someone important.', 'scene:283', {'standing':'+', 'nous':'+', 'flags.worked_a_mark':'set'}),
('Agree with everything they say.', 'scene:299', {'money':'+', 'relationships.host':'+'}),
('Keep them talking while they give.', 'scene:210', {'nous':'+', 'money':'+'}),
('Ask straight, and take what you are given.', 'filled', {'standing':'+', 'relationships.host':'+'})]),
dict(id='G21', name='Vouching for a stranger',
predicament='A stranger with a pitiful or impressive story has been taken in among you, and you are the one who vouched for him.',
actor='soft-hearted worker', wants='to do right by the stranger', counterpart='a stranger who may be taking them in',
members=[31, 32, 35, 36, 188, 287, 289, 291],
options=[
('Vouch for him and warn off the mockers.', 'scene:32', {'relationships.stranger':'+', 'relationships.crew':'-', 'standing':'risk'}),
('Give him shelter and see how he turns out.', 'scene:287', {'relationships.stranger':'+', 'money':'-'}),
('Check your things before you trust him further.', 'scene:35', {'nous':'+', 'relationships.stranger':'-'}),
('Go after him and take back what he took.', 'scene:37', {'grit':'+', 'money':'+', 'flags.settled_it':'set'}),
('Test his story quietly.', 'scene:291', {'nous':'+'})]),
# ---- home, family and the place you left ----------------------------------------------------------
dict(id='G22', name='Holding the place together alone',
predicament='Your partner is away earning or has gone, and everything at home rests on you, with nobody to call on.',
actor='partner left at home', wants='to keep the family safe and fed', counterpart='hardship, and a partner who is not there',
members=[57, 61, 160, 162, 165, 167, 198, 253],
options=[
('Sit up and keep watch yourself.', 'scene:160', {'grit':'+', 'relationships.family':'+'}),
('Tell strangers the men are close by.', 'scene:166', {'nous':'+'}),
('Face down a threat with whatever is to hand.', 'scene:167', {'grit':'+', 'standing':'+', 'flags.faced_down':'set'}),
('Fight the disaster until help comes.', 'scene:165', {'grit':'+', 'money':'-'}),
('Give up the place and go where there are people.', 'filled', {'relationships.partner':'-', 'money':'-'})]),
dict(id='G23', name='A young one eager to do grown-up work',
predicament='A youngster in your care is eager to take on hard or dangerous work before their time, to help or to prove themselves.',
actor='parent or guardian', wants='to keep the young one safe', counterpart='an eager youngster',
members=[67, 76, 128, 135, 161, 171],
options=[
('Let them help; the family needs it.', 'scene:128', {'money':'+', 'relationships.child':'+', 'flags.child_at_risk':'set'}),
('Hold them back yourself.', 'scene:170', {'relationships.child':'-', 'grit':'+'}),
('Send them home, out of harm and bad company.', 'scene:67', {'relationships.child':'risk', 'money':'-'}),
('Let them rest, though it costs the pay.', 'scene:77', {'money':'-', 'relationships.child':'+'})]),
dict(id='G24', name='Caught out at home',
predicament='Someone at home has caught you at something, or blames you for it, and you must answer for it.',
actor='family member', wants='to get off lightly', counterpart='whoever at home caught them',
members=[4, 56, 58, 224, 225],
options=[
('Deny everything.', 'scene:58', {'relationships.family':'-'}),
('Put it on someone else.', 'scene:224', {'relationships.family':'risk', 'relationships.friend':'-'}),
('Let a mate help you brush it aside.', 'scene:4', {'relationships.mate':'+', 'relationships.family':'-'}),
('Keep at it, only better hidden.', 'scene:225', {'nous':'+', 'relationships.family':'-'}),
('Own up.', 'filled', {'relationships.family':'+', 'standing':'-'})]),
dict(id='G25', name='Trifling with someone who takes it seriously',
predicament='You made a light promise or flirted for amusement, and the other person has taken it completely to heart.',
actor='careless charmer', wants='the fun without the obligation', counterpart='someone who believes them',
members=[45, 46, 103, 104, 180, 181, 183],
options=[
('Send word that it was only a joke.', 'scene:46', {'relationships.sweetheart':'-', 'standing':'-'}),
('Clear out and keep moving.', 'scene:46', {'flags.ran_off':'set', 'relationships.sweetheart':'-'}),
('Keep it up until you leave.', 'scene:182', {'relationships.sweetheart':'+', 'flags.trifled':'set'}),
('Honour it, and settle down.', 'scene:104', {'relationships.sweetheart':'+', 'money':'+', 'standing':'+'})]),
dict(id='G26', name='A quarrel neither side will end',
predicament='You and someone you could be friends with have fallen into a quarrel, and each of you waits for the other to give way.',
actor='quarreller', wants='to be in the right', counterpart='the other party',
members=[14, 28, 116, 250, 251, 252],
options=[
('Refuse their hand until they fully admit it.', 'scene:28', {'relationships.rival':'-', 'standing':'+'}),
('Keep it going, since they started it.', 'scene:251', {'relationships.rival':'-'}),
('Keep it friendly, a standing joke between you.', 'scene:116', {'relationships.rival':'+'}),
('Make it up before the day is out.', 'filled', {'relationships.rival':'+', 'standing':'-'})]),
dict(id='G27', name='Coming back to find it changed',
predicament='You come back after years away and find the people you left have changed, gone, or managed without you.',
actor='returning wanderer', wants='to find their place again', counterpart='the people they left behind',
members=[93, 101, 109, 110, 178, 190, 191, 269],
options=[
('Knock on the door and face them.', 'scene:101', {'relationships.family':'risk', 'standing':'-'}),
('Walk off before anyone knows you.', 'scene:110', {'relationships.family':'-', 'flags.moved_on':'set'}),
('Try to talk as you used to.', 'scene:190', {'relationships.old_friends':'risk'}),
('Stay and start over among them.', 'filled', {'relationships.family':'+', 'money':'-'})]),
dict(id='G28', name='The pull of the place you left',
predicament='The place and people you left keep pulling at you, but going back empty-handed would mean admitting you failed.',
actor='exile or wanderer', wants='to go home with something to show', counterpart='home, and their own pride',
members=[52, 53, 68, 100, 194],
options=[
('Go back now, just as you are.', 'scene:53', {'relationships.family':'+', 'standing':'-'}),
('Work and save until you can go back decently.', 'scene:100', {'money':'+', 'grit':'+'}),
('Swear you will never go back.', 'scene:49', {'relationships.family':'-', 'standing':'+'}),
('Stop hoping, and keep walking.', 'scene:194', {'grit':'-', 'flags.gave_up_hope':'set'})]),
# ---- death and what is owed -----------------------------------------------------------------------
dict(id='G29', name='Doing right by the dead',
predicament='Someone has died with nobody of his own nearby, and whatever decency he gets must come from you.',
actor='workmate or neighbour', wants='to do what is proper without the means', counterpart='the dead, and whoever mourns them',
members=[86, 89, 91, 92, 136, 197, 200, 219, 221],
options=[
('Turn out for the burial, whoever he was.', 'scene:86', {'standing':'+', 'relationships.mates':'+'}),
('Give up something you prize to do it properly.', 'scene:136', {'money':'-', 'relationships.family':'+', 'standing':'+'}),
('Bury him yourself and say what words you can.', 'scene:221', {'grit':'+', 'relationships.mates':'+'}),
('Offer practical help to those left, since you cannot come.', 'scene:200', {'relationships.family':'+'}),
('Leave it to whoever is paid to do it.', 'archetype', {'standing':'-', 'money':'+'})]),
dict(id='G30', name='Too late',
predicament='You understand at last what you owed someone, and it may already be too late to make it right.',
actor='person who held back', wants='to set it right', counterpart='someone they failed',
members=[5, 29, 77, 88, 199, 249],
options=[
('Throw everything into putting it right now.', 'scene:30', {'grit':'+', 'relationships.wronged':'+', 'standing':'risk'}),
('Go to them at once, before your pride stops you.', 'scene:29', {'relationships.wronged':'+', 'standing':'-'}),
('Pay what you can to those they left behind.', 'scene:249', {'money':'-', 'relationships.family':'+'}),
('Tell yourself it could not have been helped.', 'archetype', {'relationships.wronged':'-'})]),
# ---- the long run-around --------------------------------------------------------------------------
dict(id='G31', name='Passed from door to door',
predicament='You are owed something or need something done, and everyone who could do it says it is not their business.',
actor='person with a just claim', wants='what they are owed', counterpart='the people who keep passing them on',
members=[72, 204, 255, 257, 272],
options=[
('Keep at them until one gives way.', 'scene:255', {'grit':'+', 'relationships.authority':'-'}),
('Swallow your pride and beg a favour of someone with influence.', 'scene:204', {'standing':'-', 'relationships.authority':'+'}),
('Give it up and start again somewhere else.', 'scene:272', {'money':'-', 'flags.moved_on':'set'}),
('Settle for sympathy instead of help.', 'scene:257', {'relationships.neighbours':'+', 'money':'-'})]),
]
# 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:'low', 4:'low', 5:'low', 6:'low', 7:'low', 8:'middle', 9:'low',
10:'low', 11:'low', 12:'low', 13:'low', 14:'low', 15:'low', 16:'middle', 17:'low', 18:'low',
19:'middle', 20:'low', 21:'low', 22:'low', 23:'low', 24:'low', 25:'low', 26:'low', 27:'low',
28:'low', 29:'low', 30:'low', 31:'middle', 32:'low', 33:'middle', 34:'low', 35:'low', 36:'low',
37:'low', 38:'low', 39:'low', 40:'low', 41:'low', 42:'low', 43:'low', 44:'low', 45:'low',
46:'low', 47:'low', 48:'low', 49:'low', 50:'high', 51:'low'}
# Swagmen, shearers, selectors, fossickers, the unemployed and the city poor rank low: that is
# nearly the whole book. A man back from prospering abroad (8), the narrator travelling on his own
# account (16), a settled married householder (19), a man fifteen years in the city (31) and the
# returned city man (33) rank middle. Only the squatter of story 50 ranks high.