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,42 @@
[
{"chunk":648,"story":73,"summary":"A wealthy man receives his wife's photograph and a letter hinting ill of her, tears it up, and asks about the homeless men outside.","predicament":"Someone far from their partner is sent poison about them and cannot check it."},
{"chunk":649,"story":73,"summary":"He orders his servant to fetch one of the homeless men at random to dine with him, to lift his mood.","predicament":"Someone troubled seeks distraction by inviting a stranger from the street."},
{"chunk":650,"story":73,"summary":"The guest arrives washed but wrecked, defiant and unembarrassed, and announces his own name before his host's.","predicament":"Someone brought in from the street keeps their pride at a rich person's table."},
{"chunk":651,"story":73,"summary":"The guest mocks the city's would-be benefactors, who all pay for a meal by extracting the recipient's life story.","predicament":"Someone who lives on charity knows the price is always their story."},
{"chunk":652,"story":73,"summary":"The host asks for no story; the guest offers the truth instead: he was once a fashionable portrait painter.","predicament":"Someone offered kindness without conditions responds by telling the truth."},
{"chunk":653,"story":73,"summary":"His portraits revealed each sitter's hidden character, and one after another his patrons were exposed and turned on him.","predicament":"Someone's gift for showing the truth about people costs them every client."},
{"chunk":654,"story":73,"summary":"Unable to work anywhere, he took to drink; the host has him draw a sketch from the photograph of his wife.","predicament":"Someone tormented by doubt asks for a test that could confirm their worst fear."},
{"chunk":655,"story":73,"summary":"The painter leaves with money; the host cannot bring himself to look, and sends for a young artist to judge the sketch.","predicament":"Someone holds the answer to their doubt and is afraid to look at it."},
{"chunk":656,"story":73,"summary":"The young artist calls the drawing a master's and the face an angel's; the host cries that she is his wife.","predicament":"Someone's fear about the person they love is answered in that person's favour."},
{"chunk":657,"story":74,"summary":"A man stopping at his usual bar after work overhears a friend saying he was very drunk there last night.","predicament":"Someone overhears how others really see a habit they thought harmless."},
{"chunk":658,"story":74,"summary":"Shaken, he orders seltzer and leaves; the story recalls his summer courtship of his wife and their shared love of a poem.","predicament":"Someone confronted with the truth about themselves resolves to change at once."},
{"chunk":659,"story":74,"summary":"They married, came to the city, and as his salary rose they took up the showy, drinking life of the cafes.","predicament":"Two people drift gradually into habits neither of them chose deliberately."},
{"chunk":660,"story":74,"summary":"Their home life becomes cocktails and late parties, and he comes home merry each evening to wild greetings.","predicament":"Two people mistake shared excess for shared happiness."},
{"chunk":661,"story":74,"summary":"He comes home sober, kisses her quietly, and when she asks what is wrong, he answers that nothing is.","predicament":"Someone changes suddenly and will not explain why to the person who notices."},
{"chunk":662,"story":74,"summary":"He declines the whisky at dinner and says he has stopped; she answers coldly, and the evening dies in silence.","predicament":"Someone's reform is felt by their partner as a rebuke they were not consulted about."},
{"chunk":663,"story":74,"summary":"She sets out the bottle defiantly; he recites their old verse to her, then goes and pours himself a drink.","predicament":"Someone about to relapse reminds the other, unintentionally, of who they both used to be."},
{"chunk":664,"story":74,"summary":"She sweeps the bottle and glasses to the floor, embraces him, and asks for the verse about remoulding things nearer the heart's desire.","predicament":"Two people see what their life has become and choose together to break it."},
{"chunk":665,"story":75,"summary":"A man two years married walks home from the train knowing exactly how the whole evening will go.","predicament":"Someone's home life has become so routine that nothing in it can surprise them."},
{"chunk":666,"story":75,"summary":"He knows the dinner, the noises of the flats, and that at a quarter past eight he will leave to play pool.","predicament":"Someone escapes a dull household every evening and has stopped noticing it."},
{"chunk":667,"story":75,"summary":"Tonight she is gone, her things scattered in haste, with a note that her mother is ill and she has taken the train.","predicament":"Someone comes home to find the person they took for granted suddenly absent."},
{"chunk":668,"story":75,"summary":"Alone for the first time in two years of marriage, he tidies her things with a feeling close to terror.","predicament":"Someone realises how much they depended on a person only when that person is gone."},
{"chunk":669,"story":75,"summary":"He eats cold mutton alone; the whole night is free for pleasure, and he discovers he does not want it.","predicament":"Someone given the freedom they wanted finds it worthless without the person they escaped."},
{"chunk":670,"story":75,"summary":"He calls himself a brute for neglecting her, resolves to take her out and give up his cronies, and she walks in.","predicament":"Someone resolves to change just as the need for change disappears."},
{"chunk":671,"story":75,"summary":"Her mother was hardly ill and she came straight back; at a quarter past eight he reaches for his hat as always.","predicament":"Someone's resolution vanishes the moment the thing they missed is restored."},
{"chunk":672,"story":76,"summary":"On the national holiday a vagrant takes the same bench he has taken at the same hour for nine years.","predicament":"Someone keeps an annual appointment that has become an institution."},
{"chunk":673,"story":76,"summary":"This year he arrives already gorged, having just eaten an enormous unexpected dinner, and can barely breathe.","predicament":"Someone arrives for a ritual meal having already eaten beyond their limit."},
{"chunk":674,"story":76,"summary":"Two old ladies' custom of feeding the first hungry passer-by caught him; now he sees his yearly benefactor approaching.","predicament":"Someone sees their benefactor coming and cannot possibly accept what is offered."},
{"chunk":675,"story":76,"summary":"For nine years an old gentleman has fed this same man a holiday dinner, hoping to found an American tradition.","predicament":"Someone lonely has built their only ritual around a stranger's hunger."},
{"chunk":676,"story":76,"summary":"He makes his usual speech of invitation, a little sadly, wishing he had a son to carry on the custom after him.","predicament":"Someone with no heirs wants a small kindness to outlive them."},
{"chunk":677,"story":76,"summary":"The old man lives alone in rented rooms; seeing his joy, the gorged vagrant accepts in the usual words out of duty.","predicament":"Someone accepts a kindness they cannot use so as not to disappoint the giver."},
{"chunk":678,"story":76,"summary":"At the restaurant he eats a second vast dinner rather than dim the old man's happiness, then collapses around the corner.","predicament":"Someone suffers greatly to preserve another person's pleasure in giving."},
{"chunk":679,"story":76,"summary":"Both men land in the hospital, where a doctor mentions the old gentleman is starving: he had not eaten for three days.","predicament":"Someone gives their last to keep a tradition and has kept nothing for themselves."},
{"chunk":680,"story":77,"summary":"A well-dressed man without a cent walks through a park pitying the idle poor, sure he will be rich again by morning.","predicament":"Someone penniless looks down on others, confident their wits will provide."},
{"chunk":681,"story":77,"summary":"He gets five dollars from a clergyman with a forged letter, then placates a creditor in the street with drinks.","predicament":"Someone lives by lies and turns every creditor into a friend for the evening."},
{"chunk":682,"story":77,"summary":"He loses most of it at roulette, then cheats a small child of the change from his mother's medicine money.","predicament":"Someone with nothing left preys even on a child running an errand."},
{"chunk":683,"story":77,"summary":"He saves the child from two street cars, sends him off swindled and happy, and dines laughing at how easily everyone is taken in.","predicament":"Someone who cheats everyone also acts on reflex to save a life."},
{"chunk":684,"story":77,"summary":"Old friends try to sweep him off to a dinner party; he declines with a grand lie, delighted at how front works.","predicament":"Someone lies even when the truth would serve, for the pleasure of being believed."},
{"chunk":685,"story":77,"summary":"An old countryman asks for his son's address; the swindler first refuses, then claims to live next door to the son.","predicament":"Someone lost in a strange city asks help of exactly the wrong person."},
{"chunk":686,"story":77,"summary":"An hour later, with a hundred and forty dollars, he tosses a beggar a dollar and tells him work is for fools.","predicament":"Someone who takes from everyone gives a little and preaches contempt for honest work."},
{"chunk":687,"story":77,"summary":"Crossing to his hotel he sees a pure-faced girl he sat beside at school, and hides his burning face against a lamp-post.","predicament":"Someone who despises everyone is undone by the sight of their own innocent past."}
]