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,49 @@
[
{"chunk":470,"story":50,"summary":"A wife waits with cooling supper, and greets her husband with a complaint that he apologises to strangers but never to her.","predicament":"Someone waiting at home resents the courtesy another spends on everyone else."},
{"chunk":471,"story":50,"summary":"He answers with an insult, and she hurls the supper at him; the two throw the dishes course by course.","predicament":"Two people settle a grievance by throwing what they have at each other."},
{"chunk":472,"story":50,"summary":"The duel escalates to the wash basin, and a scream downstairs halts them; the policeman outside decides not to interfere.","predicament":"Two people's regular quarrel is left alone by everyone who hears it."},
{"chunk":473,"story":50,"summary":"The landlady's small boy is lost; the boarders exclaim, pair off, and one sets out to scour the city for him.","predicament":"A child's disappearance gives everyone around a reason to act on their own account."},
{"chunk":474,"story":50,"summary":"She cannot say when she last saw him; the news of a straying child moves everyone who hears it.","predicament":"Someone raises an alarm without being able to say when the trouble began."},
{"chunk":475,"story":50,"summary":"At the window the couple speak of the son they never had, quarrel gently over his name, and she apologises.","predicament":"Two people at war soften when another's loss makes them imagine their own."},
{"chunk":476,"story":50,"summary":"They sit arm in arm watching the search, until word comes that the boy was asleep under a bed all along.","predicament":"Two people are brought together by an emergency that turns out to be nothing."},
{"chunk":477,"story":50,"summary":"He mocks the name she chose, the crockery flies again, and the policeman times the quarrel by his watch.","predicament":"Two people's peace lasts only until one of them makes a joke of it."},
{"chunk":478,"story":51,"summary":"A landlady shows each room in descending order of price, scorning anyone who confesses they need something cheaper.","predicament":"Someone looking for lodging is judged by how little they can pay."},
{"chunk":479,"story":51,"summary":"The cheapest room is a coffin-sized space with a skylight; a very small young woman comes hunting a room.","predicament":"Someone can afford only a space barely big enough to lie down in."},
{"chunk":480,"story":51,"summary":"She takes it at two dollars, copies papers at night, and is gay-hearted enough to hear out a lodger's play.","predicament":"Someone living in the poorest room keeps everyone around them cheerful."},
{"chunk":481,"story":51,"summary":"The men gather round her on the stoop while two other women sniff; three of them privately court her.","predicament":"Someone popular with everyone is resented by those who are not."},
{"chunk":482,"story":51,"summary":"She points out the steady blue star she can see through her skylight and says she has named it herself.","predicament":"Someone shut in a dark place gives a private name to the one thing they can see."},
{"chunk":483,"story":51,"summary":"Work fails; she goes hungry from office to office, refuses a proposal in the hall, and crawls up to her room.","predicament":"Someone out of work refuses the offer that would feed them and climbs the stairs alone."},
{"chunk":484,"story":51,"summary":"She blows a kiss to the star and says goodbye; next morning the door is forced and an ambulance is called.","predicament":"Someone at the end of their strength says farewell to the only thing that kept them company."},
{"chunk":485,"story":51,"summary":"The doctor carries her out like his own dead; the paper names him William Jackson, and says she will recover.","predicament":"Someone is carried out by a stranger who bears the name they invented in the dark."},
{"chunk":486,"story":52,"summary":"Two art students from small towns meet, marry, and set up in a small flat with their studies and each other.","predicament":"Two people with talent and little money marry and live on their studies."},
{"chunk":487,"story":52,"summary":"They are happy while the money lasts, each studying under an expensive master toward a clear ambition.","predicament":"Two people spend what they have on training toward futures they cannot yet reach."},
{"chunk":488,"story":52,"summary":"When the money fails she says she has found a pupil in a splendid house at five dollars a lesson.","predicament":"Someone announces they have found work so that the other need not stop studying."},
{"chunk":489,"story":52,"summary":"He protests at her working while he studies; she insists, and from then on both leave the house early.","predicament":"Someone lets another carry the household so that their own work can continue."},
{"chunk":490,"story":52,"summary":"She brings home fifteen dollars with stories of the household; he lays down eighteen from a sketch sold to a stranger.","predicament":"Two people each produce money and an account of where it came from."},
{"chunk":491,"story":52,"summary":"She comes home with a bandaged hand and a story about spilled rarebit; he asks quietly what time it happened.","predicament":"Someone hides an injury behind a story and is asked one question too many."},
{"chunk":492,"story":52,"summary":"She confesses she has been ironing in a laundry; he confesses he has been firing its engine for two weeks.","predicament":"Two people each hid the same humble work from the other to protect them."},
{"chunk":493,"story":53,"summary":"At a weekly club dance, a plain young woman always goes escorted by her friend and her friend's fellow.","predicament":"Someone without a partner attends only on the charity of a friend."},
{"chunk":494,"story":53,"summary":"She tells her friend not to call for her: she has a gentleman friend of her own coming to escort her.","predicament":"Someone who has always been pitied announces they no longer need the favour."},
{"chunk":495,"story":53,"summary":"The escort proves tall, dark-curled and graceful, quite unlike the club's muscular young men, and she leads him round proudly.","predicament":"Someone arrives with a companion who plainly outshines everyone in the room."},
{"chunk":496,"story":53,"summary":"Her evening is a triumph, but he takes the honours, and waltzes twice with the leader's own partner.","predicament":"Someone's guest wins the room and then offends the one person who matters."},
{"chunk":497,"story":53,"summary":"The club's leader, told the visitor is unknown to the district's chief, stops him on the floor and asks where he lives.","predicament":"Someone in charge questions a stranger nobody can vouch for."},
{"chunk":498,"story":53,"summary":"Neither will yield; the leader demands proof of the visitor's name and then insults him outright.","predicament":"Two people who cannot share a room force the question of who belongs."},
{"chunk":499,"story":53,"summary":"The board conducts the visitor to the back room where quarrels are settled, and word reaches her of it.","predicament":"Someone's companion is quietly taken away to be dealt with by the others."},
{"chunk":500,"story":53,"summary":"She bursts in and snatches the long knife from her escort's raised arm before it can be used.","predicament":"Someone stops the person they brought from doing what cannot be forgiven."},
{"chunk":501,"story":53,"summary":"She confesses she dressed him in a false name to have an escort at last; the leader offers to take her next week.","predicament":"Someone confesses the pretence that got them noticed, and is taken seriously at last."},
{"chunk":502,"story":54,"summary":"A man in search of answers sets out to learn what exactly is meant by the type called a man about town.","predicament":"Someone will not let a vague description rest until they can picture it."},
{"chunk":503,"story":54,"summary":"A reporter gives a loose account of the type, and the seeker walks the bright street ignoring everyone else.","predicament":"Someone looking for one particular kind of person passes all the others by."},
{"chunk":504,"story":54,"summary":"He asks a barman, who answers in slang, then stops a collector on the sidewalk with the same question.","predicament":"Someone asks everyone they meet the same question and gets a different answer."},
{"chunk":505,"story":54,"summary":"A critic defines the type as a man sick with wanting to see and know, who pokes into every new place.","predicament":"Someone hears their quarry described as pure curiosity and impudence."},
{"chunk":506,"story":54,"summary":"The critic warms to his portrait; the seeker begs to be shown a real specimen rather than a description.","predicament":"Someone given a perfect description insists on meeting the thing itself."},
{"chunk":507,"story":54,"summary":"He refuses dinner to keep hunting, is knocked down crossing the street, and the paper calls him a typical specimen.","predicament":"Someone searching everywhere for a type is finally identified as one themselves."},
{"chunk":508,"story":55,"summary":"Winter is coming and the park sleeper decides his plan: three months of board and lodging on the island prison.","predicament":"Someone with nowhere to go for the winter decides prison is the best available."},
{"chunk":509,"story":55,"summary":"He prefers the law to charity, which exacts humiliation, and resolves to dine well and then declare he cannot pay.","predicament":"Someone refuses charity because of what it costs them, and plans a crime instead."},
{"chunk":510,"story":55,"summary":"At the glittering restaurant door the head waiter sees his shoes and trousers and he is turned out at once.","predicament":"Someone is refused entry before they can commit the offence they came to commit."},
{"chunk":511,"story":55,"summary":"He breaks a window and waits, but the officer will not believe him; he then eats where the food is cheap.","predicament":"Someone confesses to an act and is not believed because nobody behaves that way."},
{"chunk":512,"story":55,"summary":"The waiters pitch him onto the pavement; he next tries insulting a young woman in front of a policeman.","predicament":"Someone tries a worse offence after the first attempt fails to get attention."},
{"chunk":513,"story":55,"summary":"The young woman takes his arm gladly; he shakes her off, then howls and dances and is excused as a student.","predicament":"Someone behaves as badly as they can and every attempt is taken kindly."},
{"chunk":514,"story":55,"summary":"He takes another man's umbrella openly, and the owner apologises and gives it up rather than call the officer.","predicament":"Someone steals in plain sight and the person robbed gives way to them."},
{"chunk":515,"story":55,"summary":"At an old church the organ anthem holds him, and he sees with horror what his days have become.","predicament":"Someone hears music from an earlier life and sees clearly what they have become."},
{"chunk":516,"story":55,"summary":"He resolves to find work and be somebody; a hand falls on his arm, and the magistrate gives him three months.","predicament":"Someone decides to change their life and is punished the instant they do."}
]