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,27 @@
[
{"chunk":174,"story":6,"summary":"A young assistant hired to catalogue an elderly former adventurer's papers is told to get him to talk about his past, which he never discusses.","predicament":"Someone hired for one task is quietly asked to draw out secrets their employer keeps to himself."},
{"chunk":175,"story":6,"summary":"Going blind, the old man begins to talk of the underground struggle for independence, where prisoners died rather than betray their friends.","predicament":"Someone at the end of their working life looks back on a time when loyalty was tested under threat of death."},
{"chunk":176,"story":6,"summary":"Asked for the bravest thing a woman ever did, he says it was provoked by an act of his own he is not proud of.","predicament":"Someone finally admits a past act they are ashamed of, now that those it touched are dead."},
{"chunk":177,"story":6,"summary":"As a young officer he was sent to an occupied city to help its secret resistance, which carried on its social life in defiance.","predicament":"Someone sent to aid a secret cause enjoys the danger and the society it brings."},
{"chunk":178,"story":6,"summary":"He fell in love with a widowed noblewoman prominent in the cause, whose family had been ruined by a ruler's betrayal of his own conspirators.","predicament":"Someone falls for a person devoted to a cause, whose family history is steeped in betrayal."},
{"chunk":179,"story":6,"summary":"Her teenage brother was hanged on flimsy evidence after the failed conspiracy, and her mother never recovered.","predicament":"Someone's family is broken by an innocent relative's execution on the flimsiest pretext."},
{"chunk":180,"story":6,"summary":"The daughter, rejecting her mother's brooding, threw herself into the cause after an unhappy marriage and worked for it with great discretion.","predicament":"Someone channels grief and an unhappy marriage into secret work for a cause."},
{"chunk":181,"story":6,"summary":"Mother and daughter both work for the cause, the mother for vengeance and the daughter for the country, and the daughter reveres her mother's suffering.","predicament":"Someone supports a grieving parent whose motives for the shared cause are narrower than their own."},
{"chunk":182,"story":6,"summary":"The daughter says her mother is tormented that her son alone left no farewell letter; all her bribes to find one failed.","predicament":"Someone longs to bring a grieving parent the one comfort they cannot obtain."},
{"chunk":183,"story":6,"summary":"The narrator understands that last letters from the executed were treasured and shared, and that the mother's lack of one isolates her.","predicament":"Someone grieving is shut out of the comfort every other bereaved family shares."},
{"chunk":184,"story":6,"summary":"She loved another, a leading patriot devoted only to the cause, whose father had been physician to the prisons where her brother died.","predicament":"Someone loves a person who loves only their cause, and a rival stands between them and their own hopes."},
{"chunk":185,"story":6,"summary":"The patriot conspired safely under cover of his loyal father's position; she shared his caution and hid fugitives for him.","predicament":"Someone plays a double life for years, their loyalty hidden behind a respectable front."},
{"chunk":186,"story":6,"summary":"The narrator, jealous, accused her of leading him on and sneered at her hero; they parted in anger.","predicament":"Someone rejected for a rival lashes out at the person they want, and loses them."},
{"chunk":187,"story":6,"summary":"After the city rises and is freed, the wounded narrator, sulking, goes to help the new government sort the fallen ruler's archives.","predicament":"Someone who has quarrelled with the person they love takes on a new task rather than make the first move."},
{"chunk":188,"story":6,"summary":"In the archives he finds the hanged boy's farewell letter, marked as handed to the warder by his rival.","predicament":"Someone stumbles on proof that could destroy a rival and feels the power it gives them."},
{"chunk":189,"story":6,"summary":"He reasons that the rival must have surrendered the letter to curry favour, and so must be a traitor.","predicament":"Someone tempted by jealousy convinces themselves that a rival's old act proves him a traitor."},
{"chunk":190,"story":6,"summary":"Ignoring the rival's long record of courage, the narrator rushes back in anger to the woman he loves.","predicament":"Someone lets jealousy override their judgement and hurries to use damaging evidence."},
{"chunk":191,"story":6,"summary":"He calculates that the letter, bound to be published at a coming commemoration, would ruin the rival, and cannot honourably withhold it.","predicament":"Someone holds evidence they cannot honourably keep back, and knows handing it over will destroy a rival."},
{"chunk":192,"story":6,"summary":"He gives her the letter; overjoyed, she kisses his hands, thinking of the comfort it will bring her mother.","predicament":"Someone delivers joyful news knowing that a bitter revelation comes attached to it."},
{"chunk":193,"story":6,"summary":"He tells her who gave up the letter; she coolly asks for proof and does not cry out against the man she loves.","predicament":"Someone confronts another with damning evidence about the person they love, and meets calm disbelief."},
{"chunk":194,"story":6,"summary":"She asks him on his honour whether the note could be a later forgery; he says no, and she accepts the evidence without condemning her hero.","predicament":"Someone asks a rival for an honest answer that may condemn the person they trust, and gets it."},
{"chunk":195,"story":6,"summary":"He presses the point that her hero betrayed a friend; she replies that she understands, and that he could not have done otherwise.","predicament":"Someone pushes another to condemn a person they love, and is told the act was justified."},
{"chunk":196,"story":6,"summary":"She argues that bringing the letter would have endangered the cause, so the boy's friend rightly put the country first.","predicament":"Someone defends a painful betrayal as a necessary sacrifice for a greater cause."},
{"chunk":197,"story":6,"summary":"Convinced despite himself, he asks why the hero never told her; she asks him to keep the letter secret from everyone, even her mother.","predicament":"Someone is asked to keep a secret that will deny a grieving person the comfort they long for."},
{"chunk":198,"story":6,"summary":"She burns the letter rather than risk her mother's anger ruining the hero, and says she can never tell him what she has done for him.","predicament":"Someone gives up the thing their own family most needs to protect a person who will never know."}
]