Replace clustering with a catalogue, and hand-write the references to judge it against

The pipeline's embed-and-cluster step is dead, and this commit holds both the
evidence for that and the step proposed to replace it.

Predicaments. Scenes are re-described as "what the person is up against", with
no names, jobs or places, then embedded and clustered (redescribe.py,
topic_words.py, topic_share.py). The pilot chose qwen3:14b over 3b by reading
both side by side. Two defects the pilot exposed are fixed: split.py missed
titles in quotes and a contents subtitle after a dash, so three stories had been
merged into their neighbours, and strip_names.py read New York place names as
people. The corrected corpus is probe/v2 (97 stories, 839 scenes);
carry_summaries.py reuses the 829 unchanged v1 summaries. Topic share fell from
20% to 13% at k=60, short of the pre-registered 10%.

Hand references. Three corpora were read scene by scene and written up by hand,
under the same prompt rules the local models get, as a baseline to judge them
against: O. Henry (probe/v2/claude, 839 scenes, 20 situations), Wharton's
Descent of Man (probe/wharton, 262 scenes, 16 groups) and Jacobs's The Lady of
the Barge (probe/jacobs, 157 scenes, 19 groups). Each has its own README and a
readable page. No inference was used for any of them.

Catalogue. probe/catalogue maps every hand group in the three references onto 36
situation entries, with an answer key per corpus and one recurrence rule applied
to all three. classify.py assigns a scene one entry or none, leave-one-corpus-
out; score.py checks it against the key, with a self-test on random labels.

Why clustering is out: hand-written predicaments, embedded and clustered exactly
as the model's were, agree with the hand grouping at ARI 0.05 — no better than
the 14B text's 0.07. Better rewriting cannot rescue it. Embeddings cannot even
shortlist: the hand label is the nearest entry 13% of the time and in the top 8
half the time.

The classification runs are not here. The dev and test runs are pre-registered
in probe/catalogue/README.md with the bar set beforehand, and are blocked on the
inference host, whose GPU has fallen off the PCIe bus three times. The 30-scene
partial output in out/ is not a result.

Review page. The situation review is now a browser page rather than JSON edited
by hand (review_page.py, review_page_logic.cjs with Node tests, format schema
v2). It has never been rendered in a real browser.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014BygvsUXV9eU6oHkTCkKZ1
This commit is contained in:
JesseMarkowitz
2026-09-20 17:19:42 -04:00
co-authored by Claude Opus 5
parent fa3769d0fe
commit e5617b86ba
135 changed files with 82027 additions and 1778 deletions
@@ -0,0 +1,48 @@
[
{"chunk":517,"story":56,"summary":"Three penniless friends eat on credit at a cheap restaurant whose owner lets them pay or not as they can.","predicament":"People with no money eat where the owner tolerates their unpaid scores."},
{"chunk":518,"story":56,"summary":"The restaurant's waitress is a magnificent figure who seems to belong entirely to the place she serves in.","predicament":"Someone fits their place so perfectly that others cannot imagine them elsewhere."},
{"chunk":519,"story":56,"summary":"She mothers and overfeeds them for nothing; one of them says a fate hangs over her that would take her away.","predicament":"People fear that the person who feeds them will be taken away by better fortune."},
{"chunk":520,"story":56,"summary":"The prediction is a rich timberman who will marry her and remove her from the place where she belongs.","predicament":"People dread the good fortune that would take a friend out of their reach."},
{"chunk":521,"story":56,"summary":"A bearded miner arrives boasting of two millions, and is struck dumb the moment the waitress looms up with his order.","predicament":"A newly rich stranger is instantly taken with the person others depend on."},
{"chunk":522,"story":56,"summary":"The three rush him out to drink, goad him into paying for everything, and have him carted to a distant hotel.","predicament":"People remove a rival by spending his own money until he is helpless."},
{"chunk":523,"story":56,"summary":"Three years later the painter's picture of her sells for five thousand, and he admits his motive was not only theory.","predicament":"Someone's high-minded reason for driving off a rival turns out to be self-interest."},
{"chunk":524,"story":57,"summary":"A mongrel pup is sold as a rare breed to a large woman and becomes her petted darling in a cheap flat.","predicament":"Someone is bought under a false description and doted on by the buyer."},
{"chunk":525,"story":57,"summary":"The flat holds the usual furniture and a small henpecked husband who wipes dishes and walks the dog each evening.","predicament":"Someone in a household does every chore and is respected by nobody in it."},
{"chunk":526,"story":57,"summary":"The wife idles all day and tidies up ten minutes before he returns; dog and husband keep to shabby streets.","predicament":"Two members of a household share the same daily humiliation without speaking of it."},
{"chunk":527,"story":57,"summary":"The dog urges him to cheer up, and learns from a neighbouring terrier why its owner comes home whistling.","predicament":"Someone wonders how a neighbour endures the same life so cheerfully."},
{"chunk":528,"story":57,"summary":"The remedy is drink; on the next walk the dog drags his man toward the doors of a saloon.","predicament":"Someone quietly steers another toward the escape that will free them both."},
{"chunk":529,"story":57,"summary":"After an hour of drinks the man throws away the collar and tells the dog to go; the dog refuses to leave.","predicament":"Someone sets another free and finds they will not go without them."},
{"chunk":530,"story":57,"summary":"The two set out together for the West, and the man gives the dog a plain new name of his own choosing.","predicament":"Two who were owned by the same household leave it together and start again."},
{"chunk":531,"story":58,"summary":"The night clerk of an old-fashioned drug store is counsellor and confessor to the whole neighbourhood.","predicament":"Someone's counter makes them the confidant of everyone around them."},
{"chunk":532,"story":58,"summary":"He loves his landlady's daughter but is too timid; his rival, bolder and friendly, drops in to ask for drugs.","predicament":"Someone too timid to speak watches a bolder rival court the same person."},
{"chunk":533,"story":58,"summary":"The rival says they are to run away and marry that night, if the young woman does not change her mind again.","predicament":"Someone hears from a rival the plan that will settle the matter tonight."},
{"chunk":534,"story":58,"summary":"The rival asks whether there is a powder that will make a girl like you better if it is given to her.","predicament":"Someone asks another for a means of making a person want them."},
{"chunk":535,"story":58,"summary":"The clerk makes up a sleeping powder, hands it over, and then sends word of the elopement to the girl's father.","predicament":"Someone hands a rival a trap and then warns the one person who can stop them."},
{"chunk":536,"story":58,"summary":"Next morning the rival appears married and happy: he would not drug her, so he put the powder in her father's coffee.","predicament":"Someone's double trap fails because the rival refused to use it as intended."},
{"chunk":537,"story":59,"summary":"A retired soap manufacturer, despised by his aristocratic neighbours, calls his son in and asks what he pays for soap.","predicament":"Someone who made their money in trade is looked down on by their neighbours."},
{"chunk":538,"story":59,"summary":"The father insists money buys anything; the son answers that it will not buy entry into exclusive society.","predicament":"Two people disagree about whether money can obtain what one of them wants."},
{"chunk":539,"story":59,"summary":"Pressed, the son admits a woman is the trouble, and the father tells him to make his chance and ask her.","predicament":"Someone in love is told to act by a person who cannot see the obstacle."},
{"chunk":540,"story":59,"summary":"She sails in two days, and all he will have is eight minutes in a cab between a train and a theatre.","predicament":"Someone has one small window of time in which to say the thing that matters."},
{"chunk":541,"story":59,"summary":"His aunt gives him his mother's ring for luck; he meets the young woman at the station and they drive off.","predicament":"Someone sets out for their one chance carrying a keepsake meant to bring luck."},
{"chunk":542,"story":59,"summary":"He stops the cab to recover the dropped ring, and in that minute the traffic locks solid all around them.","predicament":"Someone's brief delay traps them for hours exactly where they wanted to be."},
{"chunk":543,"story":59,"summary":"Two hours in the blockade wins him her promise, and his aunt declares that love, not money, did it.","predicament":"Someone credits the outcome to sentiment rather than to anything that was arranged."},
{"chunk":544,"story":59,"summary":"Next day a man calls for payment: he hired the wagons, cabs and police who made the blockade to order.","predicament":"Someone's miracle was bought and paid for by a person who denies nothing."},
{"chunk":545,"story":60,"summary":"A freelance typist weeps over a menu card; she has no shorthand and lives by odd jobs of copying.","predicament":"Someone scraping a living by odd work is reduced to tears by something small."},
{"chunk":546,"story":60,"summary":"She bargains with a restaurant to typewrite its daily bills of fare in exchange for three meals a day.","predicament":"Someone trades the one skill they have for food through a cold winter."},
{"chunk":547,"story":60,"summary":"In a cold false spring she sits at her window looking past a brick wall to the lane where she was courted.","predicament":"Someone shut in a cold room sees only the place where they were happy."},
{"chunk":548,"story":60,"summary":"The farmer crowned her with flowers and they were to marry at the first sign of spring; then she returned to work.","predicament":"Someone returns to work with a promise of marriage to be kept when the season turns."},
{"chunk":549,"story":60,"summary":"Typing the spring menu she reaches the flower's name, has had no letter for two weeks, and breaks down.","predicament":"Someone at ordinary work meets the one word that undoes them."},
{"chunk":550,"story":60,"summary":"She forces back the tears, finishes the cards, and at dinner sets that one dish aside untouched.","predicament":"Someone finishes their work and cannot bring themselves to eat what it named."},
{"chunk":551,"story":60,"summary":"That evening the bell rings and her farmer comes up the stairs three at a time to find her.","predicament":"Someone given up for lost arrives without warning at the door."},
{"chunk":552,"story":60,"summary":"He found her by the bill of fare, where her fingers had typed his name in place of the plant.","predicament":"Someone is found through a mistake their grief made in their ordinary work."},
{"chunk":553,"story":61,"summary":"A true adventurer goes out aimless to meet whatever fate offers, unlike those with a prize in view.","predicament":"Someone follows chance for its own sake rather than toward any goal."},
{"chunk":554,"story":61,"summary":"The city offers clues of adventure at every corner, and almost everyone passes them by out of convention.","predicament":"People are handed chances daily and let each one go by."},
{"chunk":555,"story":61,"summary":"A piano salesman who takes up every chance passes a dentist's card-giver outside a building one evening.","predicament":"Someone who accepts every invitation from chance is handed another."},
{"chunk":556,"story":61,"summary":"His card reads The Green Door in ink; the ones others drop are plain advertisements, and a second card says the same.","predicament":"Someone receives a message that nobody else appears to be given."},
{"chunk":557,"story":61,"summary":"On a third pass he is given no card and reads contempt in the man's face for his hesitation.","predicament":"Someone hesitating over a summons is made to feel they have been found wanting."},
{"chunk":558,"story":61,"summary":"He climbs the stairs, knocks at the green door, and a white-faced girl opens it and collapses into his arms.","predicament":"Someone answering a mysterious summons finds a person at the end of their strength."},
{"chunk":559,"story":61,"summary":"She has not eaten in three days; he runs out and comes back loaded with food from the shops.","predicament":"Someone finds a stranger starving and goes at once for food."},
{"chunk":560,"story":61,"summary":"Over supper she tells the common story of small wages, fines, illness, lost work and lost hope.","predicament":"Someone tells a stranger the ordinary story of how they came to be starving."},
{"chunk":561,"story":61,"summary":"He promises to come back tomorrow, and tells her he knocked by mistake rather than reveal the cards.","predicament":"Someone hides what they know so the other need never feel exposed."},
{"chunk":562,"story":61,"summary":"Every door in the house is green and the cards advertised a play; he decides Fate arranged it regardless.","predicament":"Someone learns their sign meant nothing and keeps believing it was meant for them."}
]