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:
co-authored by
Claude Opus 5.5
parent
e5617b86ba
commit
3a4758172d
@@ -0,0 +1,215 @@
|
||||
"""Hand-built reference grouping of the Lorimer predicaments (Claude-written, no inference of any kind).
|
||||
|
||||
Lorimer's *Letters from a Self-Made Merchant to His Son* is an advice book, not a story collection: each of
|
||||
its twenty letters is a "story", and the scenes are stretches of a father's advice and the anecdotes he
|
||||
tells to carry it. Each scene is in at most one group; scenes that fit no recurring situation stay
|
||||
unassigned. Every group spans at least three of the 20 letters, and no letter 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)
|
||||
'advice:N' a move the book itself advises for or against in scene N (see batches/, `advice`)
|
||||
'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: judgment (sizing up goods, prices, people and
|
||||
claims: the father's "one-part talk and nine-parts judgment") and hustle (drive, application, doing the
|
||||
second half of the work).
|
||||
"""
|
||||
G = [
|
||||
# ---- money habits ---------------------------------------------------------------------------------
|
||||
dict(id='G01', name='Spending ahead of what you earn',
|
||||
predicament='You are spending more than you earn, often to keep up with free-spending company, and the bills are coming due.',
|
||||
actor='young earner', wants='to live well now', counterpart='their own pay packet, and the company they keep',
|
||||
members=[8, 10, 11, 25, 63, 64],
|
||||
options=[
|
||||
('Bring your spending down to what you actually earn.', 'advice:8', {'money':'+', 'relationships.peers':'-'}),
|
||||
('Keep saving, and keep expenses down.', 'advice:10', {'money':'+', 'flags.buying_in':'set'}),
|
||||
('Spend freely, so nobody thinks you mean.', 'advice:11', {'relationships.peers':'+', 'money':'-', 'standing':'-'}),
|
||||
('Ask for an advance on your pay.', 'scene:13', {'money':'+', 'relationships.boss':'-'}),
|
||||
('Spend it as fast as it comes.', 'advice:10', {'money':'-', 'relationships.peers':'+'})]),
|
||||
dict(id='G02', name='Starting at the bottom',
|
||||
predicament='You are starting at the bottom on low pay and dull work, and must decide whether it is a first step or a resting place.',
|
||||
actor='new hand', wants='to rise', counterpart='the boss who put them there',
|
||||
members=[9, 19, 20, 26, 33, 34, 35],
|
||||
options=[
|
||||
('Take the first job offered and use it as bait for a better one.', 'advice:26', {'money':'+', 'standing':'+'}),
|
||||
('Find a way to do the work cheaper, even if it abolishes your job.', 'advice:20', {'judgment':'+', 'money':'+', 'relationships.boss':'+'}),
|
||||
('Learn how little you can do and still keep the job.', 'scene:33', {'relationships.boss':'-', 'standing':'-'}),
|
||||
('Hold your own job firmly and reach for the next one.', 'advice:33', {'hustle':'+', 'relationships.boss':'+'}),
|
||||
('Come early, stay late and keep at it.', 'advice:35', {'hustle':'+', 'standing':'+'})]),
|
||||
dict(id='G03', name='Doing just enough',
|
||||
predicament='You could keep your place with half your effort, and must decide whether the other half is worth giving.',
|
||||
actor='settled employee', wants='to keep the job without killing themselves', counterpart='the boss deciding who rises',
|
||||
members=[40, 41, 44, 80, 81, 87, 119],
|
||||
options=[
|
||||
('Do just enough to keep from being dismissed.', 'advice:80', {'relationships.boss':'-', 'standing':'-'}),
|
||||
('Put in the second half of the effort.', 'advice:80', {'hustle':'+', 'relationships.boss':'+'}),
|
||||
('Learn more of the business than your job needs.', 'advice:81', {'judgment':'+', 'flags.promoted':'set'}),
|
||||
('Come in late, leave early, and do your own business in between.', 'advice:44', {'money':'+', 'flags.passed_over':'set'}),
|
||||
('Take on every extra job going, and cheerfully.', 'advice:87', {'hustle':'+', 'flags.promoted':'set'})]),
|
||||
# ---- those above you ------------------------------------------------------------------------------
|
||||
dict(id='G04', name='A hard boss',
|
||||
predicament='Your superior is gruff, demanding and unimpressed with you, and you are tempted to complain, sulk or go over their head.',
|
||||
actor='subordinate', wants='fair treatment and a chance', counterpart='a gruff superior',
|
||||
members=[38, 45, 46, 88, 89],
|
||||
options=[
|
||||
('Say you cannot work under them.', 'advice:45', {'relationships.boss':'-', 'standing':'-'}),
|
||||
('Give way to them, and approach them with respect.', 'advice:46', {'relationships.boss':'+'}),
|
||||
('Go over their head and report what is wrong with them.', 'advice:46', {'relationships.boss':'-', 'relationships.owner':'risk'}),
|
||||
('Take the criticism in wounded silence.', 'advice:88', {'relationships.boss':'-'}),
|
||||
('Complain that you are being held down.', 'advice:89', {'relationships.boss':'-', 'standing':'-'})]),
|
||||
dict(id='G05', name='Talking yourself up',
|
||||
predicament='You are doing well, or want to seem to, and are tempted to make sure everyone knows it.',
|
||||
actor='rising employee', wants='to be noticed', counterpart='superiors and colleagues',
|
||||
members=[50, 90, 91, 138, 139, 140],
|
||||
options=[
|
||||
('Tell your superiors how well you are doing.', 'advice:138', {'relationships.boss':'-'}),
|
||||
('Say nothing, and let the results speak.', 'advice:140', {'standing':'+', 'hustle':'+'}),
|
||||
('Put on airs around the office.', 'advice:50', {'standing':'-', 'relationships.peers':'-'}),
|
||||
('Rise on talk and show while it works.', 'advice:139', {'standing':'risk'}),
|
||||
('Give more than you are paid for.', 'advice:138', {'hustle':'+', 'standing':'+'})]),
|
||||
dict(id='G06', name='Saying too much',
|
||||
predicament='You are tempted to say more than you need to: a joke, a retort, an opinion, or a complaint about someone.',
|
||||
actor='talker', wants='to be heard', counterpart='whoever is listening',
|
||||
members=[32, 47, 49, 71, 72],
|
||||
options=[
|
||||
('Say what you came to say, and stop.', 'advice:32', {'judgment':'+', 'money':'+'}),
|
||||
('Listen more than you talk.', 'advice:33', {'judgment':'+', 'relationships.counterpart':'+'}),
|
||||
('Crack the joke.', 'advice:72', {'standing':'-', 'relationships.counterpart':'+'}),
|
||||
('Run down the people you used to work for.', 'advice:49', {'relationships.boss':'-', 'flags.not_hired':'set'}),
|
||||
('Answer back with a smart retort.', 'advice:71', {'relationships.counterpart':'-', 'money':'-'})]),
|
||||
# ---- customers and the trade ----------------------------------------------------------------------
|
||||
dict(id='G07', name='A customer tries you',
|
||||
predicament='A customer complains, needles you or sets a trap, and how you answer decides whether you keep their trade.',
|
||||
actor='seller', wants='to keep the trade', counterpart='a difficult customer',
|
||||
members=[74, 75, 82, 93],
|
||||
options=[
|
||||
('Settle a fair complaint on the spot, bargaining down from the first figure.', 'advice:75', {'money':'-', 'relationships.customer':'+'}),
|
||||
('Know your goods well enough to turn their trap round.', 'advice:82', {'judgment':'+', 'money':'+', 'standing':'+'}),
|
||||
('Say something about them that they will take as praise.', 'advice:93', {'judgment':'+', 'relationships.customer':'+', 'money':'+'}),
|
||||
('Flatter them.', 'advice:74', {'relationships.customer':'+', 'standing':'-'}),
|
||||
('Tell them to their face that they are a liar.', 'advice:93', {'relationships.customer':'-', 'flags.fought':'set'})]),
|
||||
dict(id='G08', name='Goods nobody wants',
|
||||
predicament='You have goods to sell and buyers who feel no need of them.',
|
||||
actor='seller', wants='to move the goods', counterpart='buyers who are not hungry',
|
||||
members=[51, 52, 77, 95, 98, 99],
|
||||
options=[
|
||||
('Give them a grander label and a higher price.', 'advice:52', {'money':'+', 'judgment':'+'}),
|
||||
('Tell the buyers plainly that they need it.', 'scene:77', {'relationships.customer':'-'}),
|
||||
('Stage a show that makes the need feel real.', 'advice:98', {'money':'+', 'flags.sharp_practice':'set'}),
|
||||
('Dress the same goods up as something new.', 'advice:51', {'money':'-'}),
|
||||
('Take them where the money already is.', 'advice:78', {'money':'+', 'hustle':'+'})]),
|
||||
dict(id='G09', name='Easy money',
|
||||
predicament='Someone offers, or the market seems to offer, money for nothing, and you have a little you could stake.',
|
||||
actor='person of small means', wants='to get rich quicker', counterpart='a schemer, a tipster, or the market',
|
||||
members=[30, 36, 37, 109, 111, 117],
|
||||
options=[
|
||||
('Stay clear: take the elevator to the roof garden.', 'advice:36', {'judgment':'+', 'relationships.schemer':'-'}),
|
||||
('Take a little flyer on it.', 'scene:108', {'money':'risk', 'relationships.boss':'-', 'flags.speculated':'set'}),
|
||||
('Lend them a little rather than join in.', 'advice:37', {'money':'-', 'relationships.schemer':'+'}),
|
||||
('Ask why the return is so high before you trust it.', 'advice:111', {'judgment':'+'}),
|
||||
('Talk yourself into it, principles and all.', 'scene:117', {'money':'risk', 'standing':'-'})]),
|
||||
dict(id='G17', name='Rivals are taking the trade',
|
||||
predicament='Rivals are getting the better of you in the trade, and you must decide whether to explain it, shrug it off or go after them.',
|
||||
actor='seller or manager', wants='the business', counterpart='rival firms',
|
||||
members=[76, 78, 127, 148],
|
||||
options=[
|
||||
('Send in a full account of what the competition is doing.', 'advice:78', {'relationships.boss':'-', 'flags.resigned':'set'}),
|
||||
('Go for all of the trade, not a share of it.', 'advice:128', {'hustle':'+', 'money':'+', 'relationships.rival':'-'}),
|
||||
('Take up the line you left to them.', 'advice:127', {'money':'+', 'hustle':'+'}),
|
||||
('Stand and fight: you never sold what you could not deliver.', 'advice:148', {'standing':'+', 'relationships.rival':'-'}),
|
||||
('Go where the money already is.', 'advice:78', {'money':'+', 'judgment':'+'})]),
|
||||
# ---- judging people -------------------------------------------------------------------------------
|
||||
dict(id='G10', name='Taking someone on',
|
||||
predicament='You are about to hire or trust someone on the strength of how they look, how they talk, or who vouches for them.',
|
||||
actor='employer', wants='a good hand', counterpart='the candidate and whoever vouches for them',
|
||||
members=[48, 53, 56, 59, 105, 106, 107],
|
||||
options=[
|
||||
('Take them on the word of whoever vouches for them.', 'scene:53', {'relationships.friend':'+', 'money':'risk'}),
|
||||
('Try them out in the work before committing.', 'advice:105', {'judgment':'+'}),
|
||||
("Get an outsider's valuation, in figures.", 'advice:56', {'judgment':'+', 'relationships.friend':'-'}),
|
||||
('Trust the one with the polished manners.', 'advice:107', {'relationships.hire':'+', 'money':'risk'}),
|
||||
('Be on your guard against anyone too smooth.', 'advice:48', {'judgment':'+', 'relationships.hire':'-'})]),
|
||||
dict(id='G11', name='Looking the part',
|
||||
predicament='You want to be taken for more than you yet are, and must decide how much to spend on looking the part.',
|
||||
actor='person on the way up', wants='to be taken seriously', counterpart='the people who judge by appearances',
|
||||
members=[31, 100, 101, 102, 104, 134, 135, 144],
|
||||
options=[
|
||||
('Get a sober, well-made suit and look the part.', 'scene:100', {'money':'-', 'standing':'+'}),
|
||||
('Look like someone of consequence before you are one.', 'advice:104', {'standing':'+', 'money':'-'}),
|
||||
('Build your name on your work, not on borrowed rank.', 'advice:31', {'standing':'+', 'hustle':'+'}),
|
||||
('Throw a lavish show to win acceptance.', 'advice:135', {'money':'-', 'standing':'-', 'flags.public_scandal':'set'}),
|
||||
('Keep up appearances beyond your means.', 'advice:144', {'money':'-', 'standing':'risk'})]),
|
||||
# ---- in charge ------------------------------------------------------------------------------------
|
||||
dict(id='G12', name='Someone under you falls short',
|
||||
predicament='Someone under you is slack, wrong for the post, or in a bad habit, and it falls to you to act.',
|
||||
actor='manager', wants='the work done well', counterpart='a subordinate falling short',
|
||||
members=[28, 43, 103, 121, 122],
|
||||
options=[
|
||||
("Let a wrong hire go at once, with a month's pay.", 'advice:122', {'money':'-', 'relationships.staff':'+'}),
|
||||
('Put it off a little longer.', 'advice:28', {'money':'-', 'flags.lost_good_hand':'set'}),
|
||||
('Set the example yourself, starting with your own habits.', 'advice:103', {'hustle':'+', 'relationships.staff':'+'}),
|
||||
('Tell them bluntly what is wrong with them.', 'advice:121', {'relationships.staff':'-'}),
|
||||
('Threaten them.', 'advice:122', {'relationships.staff':'-', 'standing':'risk'})]),
|
||||
dict(id='G13', name='Caught between two sides',
|
||||
predicament='You stand between two sides who each want your loyalty, and favouring either openly will cost you with the other.',
|
||||
actor='go-between', wants='to keep both sides', counterpart='those above and those below, or the firm and the customer',
|
||||
members=[92, 94, 128, 129, 149],
|
||||
options=[
|
||||
('Try openly to please both sides.', 'advice:92', {'relationships.boss':'-', 'relationships.other_side':'-'}),
|
||||
('Keep them apart, and let each think they have slightly the better of it.', 'advice:92', {'judgment':'+', 'relationships.boss':'+', 'relationships.other_side':'+'}),
|
||||
('Please your own side and let the other grumble.', 'advice:149', {'relationships.boss':'+', 'relationships.other_side':'-'}),
|
||||
('Cut a corner on one side to keep the other sweet.', 'advice:94', {'relationships.boss':'+', 'relationships.other_side':'-', 'flags.skinned_someone':'set'}),
|
||||
('Explain yourself to both.', 'advice:128', {'relationships.other_side':'+', 'standing':'-'})]),
|
||||
# ---- private life ---------------------------------------------------------------------------------
|
||||
dict(id='G14', name='Sizing up a match',
|
||||
predicament='You are drifting toward marrying someone and have not yet taken a clear look at them, their family, or what it will cost.',
|
||||
actor='suitor', wants='to marry well', counterpart='the person they are courting, and that person\'s family',
|
||||
members=[65, 70, 158, 159, 172, 173],
|
||||
options=[
|
||||
('Size them up before you are engaged, at breakfast as well as at the theatre.', 'advice:172', {'judgment':'+', 'relationships.partner':'risk'}),
|
||||
('Marry someone raised above the means you can give them.', 'advice:65', {'relationships.partner':'+', 'money':'-'}),
|
||||
('Tell them exactly what you earn.', 'advice:63', {'relationships.partner':'risk', 'judgment':'+'}),
|
||||
('Marry a sensible partner, even on modest pay.', 'advice:158', {'relationships.partner':'+', 'money':'-'}),
|
||||
('Propose first and find out later.', 'advice:172', {'relationships.partner':'+', 'flags.married_in_haste':'set'})]),
|
||||
dict(id='G15', name='The wrong line of work',
|
||||
predicament='You are in, or headed for, work that does not suit you, and must decide whether to push on, switch, or wait for something better.',
|
||||
actor='misfit', wants='work that suits them', counterpart='a parent or an employer with other plans',
|
||||
members=[5, 6, 7, 18, 57, 58, 62, 141],
|
||||
options=[
|
||||
('Try the work you are set on, whatever your family says.', 'advice:57', {'relationships.family':'-', 'money':'risk'}),
|
||||
('Leave the family trade for one that suits your gifts.', 'advice:62', {'money':'+', 'relationships.family':'-'}),
|
||||
('Hold out for work worthy of your old position.', 'advice:141', {'money':'-', 'standing':'-'}),
|
||||
('Take whatever work is going, however heavy.', 'scene:19', {'money':'+', 'hustle':'+', 'standing':'-'}),
|
||||
('Tell your new superior how it ought to be done.', 'advice:6', {'relationships.boss':'-', 'flags.dismissed':'set'})]),
|
||||
dict(id='G16', name='The fast set',
|
||||
predicament='The people around you are spending their time and money on amusement, and you must decide how far to go along.',
|
||||
actor='young person', wants='to belong', counterpart='free-spending companions',
|
||||
members=[3, 14, 15, 130, 131, 137],
|
||||
options=[
|
||||
('Do as everyone else does.', 'advice:14', {'relationships.peers':'+', 'money':'-', 'standing':'-'}),
|
||||
('Keep away, even if it leaves you on your own.', 'advice:15', {'relationships.peers':'-', 'judgment':'+'}),
|
||||
('Go slow, and pick your amusements.', 'advice:3', {'judgment':'+'}),
|
||||
('Take working afternoons off to play.', 'advice:130', {'relationships.peers':'+', 'relationships.boss':'-'}),
|
||||
('Cultivate the fashionable set.', 'advice:131', {'relationships.peers':'+', 'money':'-', 'standing':'risk'})]),
|
||||
dict(id='G18', name='Your mistake has come to light',
|
||||
predicament='A mistake of yours has come to light, and you can own up, joke it off, cover it, or let it pass.',
|
||||
actor='person at fault', wants='to come out of it well', counterpart='the one who found out',
|
||||
members=[29, 39, 108, 146, 147],
|
||||
options=[
|
||||
('Own up at once.', 'advice:93', {'standing':'-', 'relationships.boss':'+'}),
|
||||
('Make a joke of it.', 'scene:39', {'relationships.boss':'-'}),
|
||||
('Keep quiet and hope it passes.', 'advice:93', {'relationships.boss':'risk', 'flags.covered_up':'set'}),
|
||||
('Take the public humbling.', 'advice:147', {'standing':'-', 'judgment':'+'}),
|
||||
('Make sure it never happens twice.', 'advice:29', {'judgment':'+'})]),
|
||||
]
|
||||
|
||||
# The son's standing by letter, for stage assignment (DESIGN.md "Stages"). Per letter, not per scene. The
|
||||
# son is the protagonist even where a scene is an anecdote about someone else, so this stages the letter,
|
||||
# not the anecdote. Letters 1-5 (0-4): a student, then a graduate about to start. Letters 6-9 (5-8): the
|
||||
# mailing desk, then the billing desk. Letters 10-14 (9-13): a travelling salesman, raised to thirty a week
|
||||
# in letter 13. Letters 15-20 (14-19): assistant manager of a department at fifty a week. "high" is only the
|
||||
# top of this book's ladder, a junior manager, not the owner's chair.
|
||||
STANDING = {0:'low', 1:'low', 2:'low', 3:'low', 4:'low', 5:'low', 6:'low', 7:'low', 8:'low',
|
||||
9:'middle', 10:'middle', 11:'middle', 12:'middle', 13:'middle',
|
||||
14:'high', 15:'high', 16:'high', 17:'high', 18:'high', 19:'high'}
|
||||
Reference in New Issue
Block a user