Files
TheLadder/tools/story-to-pack/probe/pilot-3b-clean.json
T
JesseMarkowitzandClaude Opus 5 e5617b86ba 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
2026-09-20 17:19:42 -04:00

410 lines
16 KiB
JSON

{
"model": "qwen2.5:3b-instruct",
"prompt": "You describe the predicament of the main person in a passage of fiction, in ONE sentence.\n\nA predicament is what that person is up against and what they want out of it: the kind of trouble or opportunity that could happen to anyone, in any line of work, in any town.\n\nRules:\n- Exactly one sentence, at most 20 words.\n- Leave out everything that ties it to this story: no names, no jobs or professions, no places, no businesses, and no objects that only belong to this story.\n- Say what the person is up against, and what they want.\n- Do not describe the writing, the mood, or who is telling the story.\n- Output only the sentence.",
"summaries": [
{
"chunk": 0,
"story": 0,
"summary": "Finding the voice of a big city, I sought in vain among school chants.",
"model_output": "Finding the voice of a big city, I sought in vain among school chants.",
"raw": "Finding the voice of a big city, I sought in vain among school chants.",
"names_removed": []
},
{
"chunk": 1,
"story": 0,
"summary": "I want to know the city's voice, but it echoes like someone.",
"model_output": "I want to know the city's voice, but it echoes like Philadelphia.",
"raw": "I want to know the city's voice, but it echoes like Philadelphia.",
"names_removed": [
"Philadelphia"
]
},
{
"chunk": 2,
"story": 0,
"summary": "I must find the unique voice of New someone, proving it doesn't treat me like a cigar.",
"model_output": "I must find the unique voice of New York, proving it doesn't treat me like a cigar.",
"raw": "I must find the unique voice of New York, proving it doesn't treat me like a cigar.",
"names_removed": [
"York"
]
},
{
"chunk": 3,
"story": 0,
"summary": "I want to know the city's cry, but the cop only follows orders.",
"model_output": "I want to know the city's cry, but the cop only follows orders.",
"raw": "I want to know the city's cry, but the cop only follows orders.",
"names_removed": []
},
{
"chunk": 4,
"story": 0,
"summary": "Bill, find the essence of New someone\u2019s chaos and harmony.",
"model_output": "Bill, find the essence of New York's chaos and harmony.",
"raw": "Bill, find the essence of New York's chaos and harmony.",
"names_removed": [
"York's"
]
},
{
"chunk": 5,
"story": 0,
"summary": "The poet seeks a hit with his poem, fearing rejection.",
"model_output": "The poet seeks a hit with his poem, fearing rejection.",
"raw": "The poet seeks a hit with his poem, fearing rejection.",
"names_removed": []
},
{
"chunk": 6,
"story": 0,
"summary": "Someone waits alone, wanting her companion to speak.",
"model_output": "Aurelia waits alone, wanting her companion to speak.",
"raw": "Aurelia waits alone, wanting her companion to speak.",
"names_removed": [
"Aurelia"
]
},
{
"chunk": 7,
"story": 1,
"summary": "Someone finds deepest life joys in a hidden quarter, not wealth.",
"model_output": "John Hopkins finds deepest life joys in a hidden quarter, not wealth.",
"raw": "John Hopkins finds deepest life joys in a hidden quarter, not wealth.",
"names_removed": [
"John",
"Hopkins"
]
},
{
"chunk": 8,
"story": 1,
"summary": "Someone struggles to balance her desires and fears in the fast-paced city.",
"model_output": "Mrs. Hopkins struggles to balance her desires and fears in the fast-paced city.",
"raw": "Mrs. Hopkins struggles to balance her desires and fears in the fast-paced city.",
"names_removed": [
"Mrs.",
"Hopkins"
]
},
{
"chunk": 9,
"story": 1,
"summary": "Someone sought to inject conversation into his tasteless existence by buying a cigar.",
"model_output": "John Hopkins sought to inject conversation into his tasteless existence by buying a cigar.",
"raw": "John Hopkins sought to inject conversation into his tasteless existence by buying a cigar.",
"names_removed": [
"John",
"Hopkins"
]
},
{
"chunk": 10,
"story": 1,
"summary": "Someone buys spinach, finds no cash, challenges tobacconist someone.",
"model_output": "Hopkins buys spinach, finds no cash, challenges tobacconist Freshmayer.",
"raw": "Hopkins buys spinach, finds no cash, challenges tobacconist Freshmayer.",
"names_removed": [
"Hopkins",
"Freshmayer"
]
},
{
"chunk": 11,
"story": 1,
"summary": "Someone sought revenge, but found himself pursued by law enforcers and a mysterious chauffeur in a racing car.",
"model_output": "John Hopkins sought revenge, but found himself pursued by law enforcers and a mysterious chauffeur in a racing car.",
"raw": "John Hopkins sought revenge, but found himself pursued by law enforcers and a mysterious chauffeur in a racing car.",
"names_removed": [
"John",
"Hopkins"
]
},
{
"chunk": 12,
"story": 1,
"summary": "Someone wants Milady's assistance against unseen attackers, while Milady seeks a brave companion.",
"model_output": "Hopkins wants Milady's assistance against unseen attackers, while Milady seeks a brave companion.",
"raw": "Hopkins wants Milady's assistance against unseen attackers, while Milady seeks a brave companion.",
"names_removed": [
"Hopkins"
]
},
{
"chunk": 13,
"story": 1,
"summary": "Someone seeks a romantic encounter, only to be kidnapped by a mysterious lady.",
"model_output": "John Hopkins seeks a romantic encounter, only to be kidnapped by a mysterious lady.",
"raw": "John Hopkins seeks a romantic encounter, only to be kidnapped by a mysterious lady.",
"names_removed": [
"John",
"Hopkins"
]
},
{
"chunk": 14,
"story": 1,
"summary": "Bess wants her St. Bernard, but someone wants her to stop reading dangerous novels.",
"model_output": "Bess wants her St. Bernard, but John wants her to stop reading dangerous novels.",
"raw": "Bess wants her St. Bernard, but John wants her to stop reading dangerous novels.",
"names_removed": [
"John"
]
},
{
"chunk": 15,
"story": 2,
"summary": "Someone, a young saleslady, seeks to navigate the complexities of human nature while hiding her true identity.",
"model_output": "Masie, a young saleslady, seeks to navigate the complexities of human nature while hiding her true identity.",
"raw": "Masie, a young saleslady, seeks to navigate the complexities of human nature while hiding her true identity.",
"names_removed": [
"Masie"
]
},
{
"chunk": 16,
"story": 2,
"summary": "The shopgirl someone confronts the floorwalker someone with her flirtatious gaze, testing his resolve.",
"model_output": "The shopgirl Masie confronts the floorwalker Irving Carter with her flirtatious gaze, testing his resolve.",
"raw": "The shopgirl Masie confronts the floorwalker Irving Carter with her flirtatious gaze, testing his resolve.",
"names_removed": [
"Masie",
"Irving",
"Carter"
]
},
{
"chunk": 17,
"story": 2,
"summary": "Someone desires to charm a shopgirl despite feeling out of place.",
"model_output": "Irving Carter desires to charm a shopgirl despite feeling out of place.",
"raw": "Irving Carter desires to charm a shopgirl despite feeling out of place.",
"names_removed": [
"Irving",
"Carter"
]
},
{
"chunk": 18,
"story": 2,
"summary": "Willie nervously asked for her company, hoping she'd agree to a date.",
"model_output": "Willie nervously asked for her company, hoping she'd agree to a date.",
"raw": "Willie nervously asked for her company, hoping she'd agree to a date.",
"names_removed": []
},
{
"chunk": 19,
"story": 2,
"summary": "Someone seeks love but fears rejection, while someone uses him to prove her worth.",
"model_output": "Carter seeks love but fears rejection, while Masie uses him to prove her worth.",
"raw": "Carter seeks love but fears rejection, while Masie uses him to prove her worth.",
"names_removed": [
"Carter",
"Masie"
]
},
{
"chunk": 20,
"story": 2,
"summary": "Someone faces someone\u2019s marriage proposal, wanting to see through his sincerity.",
"model_output": "Masie faces Carter's marriage proposal, wanting to see through his sincerity.",
"raw": "Masie faces Carter's marriage proposal, wanting to see through his sincerity.",
"names_removed": [
"Masie",
"Carter's"
]
},
{
"chunk": 21,
"story": 2,
"summary": "Someone looked up at someone, her eyes alight with a flicker of possibility.",
"model_output": "Masie looked up at Carter, her eyes alight with a flicker of possibility.",
"raw": "Masie looked up at Carter, her eyes alight with a flicker of possibility.",
"names_removed": [
"Masie",
"Carter"
]
},
{
"chunk": 22,
"story": 2,
"summary": "She wants to end their secret affair, but he feels a hidden joy.",
"model_output": "She wants to end their secret affair, but he feels a hidden joy.",
"raw": "She wants to end their secret affair, but he feels a hidden joy.",
"names_removed": []
},
{
"chunk": 23,
"story": 3,
"summary": "Big someone sought acceptance in someone\u2019s titled nobility of sportdom.",
"model_output": "Big Jim Dougherty sought acceptance in Manhattan's titled nobility of sportdom.",
"raw": "Big Jim Dougherty sought acceptance in Manhattan's titled nobility of sportdom.",
"names_removed": [
"Jim",
"Dougherty",
"Manhattan's"
]
},
{
"chunk": 24,
"story": 3,
"summary": "He seeks a private life away from his public Oriental sport, yet feels trapped in public life.",
"model_output": "He seeks a private life away from his public Oriental sport, yet feels trapped in public life.",
"raw": "He seeks a private life away from his public Oriental sport, yet feels trapped in public life.",
"names_removed": []
},
{
"chunk": 25,
"story": 3,
"summary": "Big someone\" expected her to ask for a dinner date, not insist on one.",
"model_output": "\"Big Jim\" expected her to ask for a dinner date, not insist on one.",
"raw": "Big Jim\" expected her to ask for a dinner date, not insist on one.",
"names_removed": [
"Jim"
]
},
{
"chunk": 26,
"story": 3,
"summary": "Big someone wanted to hide his wife's presence, but a mysterious bird-like being at her side made him change plans.",
"model_output": "Big Jim Dougherty wanted to hide his wife's presence, but a mysterious bird-like being at her side made him change plans.",
"raw": "Big Jim Dougherty wanted to hide his wife's presence, but a mysterious bird-like being at her side made him change plans.",
"names_removed": [
"Jim",
"Dougherty"
]
},
{
"chunk": 27,
"story": 3,
"summary": "Big someone seeks to impress his wife at a fancy restaurant, hoping her beauty and charm will win him praise.",
"model_output": "Big Jim seeks to impress his wife at a fancy restaurant, hoping her beauty and charm will win him praise.",
"raw": "Big Jim seeks to impress his wife at a fancy restaurant, hoping her beauty and charm will win him praise.",
"names_removed": [
"Jim"
]
},
{
"chunk": 28,
"story": 3,
"summary": "The honorable someone seeks to expose a secret and win someone\u2019s heart, while \"Big someone\" struggles to keep up.",
"model_output": "The honorable Patrick Corrigan seeks to expose a secret and win Mrs. Dougherty's heart, while \"Big Jim\" struggles to keep up.",
"raw": "The honorable Patrick Corrigan seeks to expose a secret and win Mrs. Dougherty's heart, while \"Big Jim\" struggles to keep up.",
"names_removed": [
"Patrick",
"Corrigan",
"Mrs.",
"Dougherty's",
"Jim"
]
},
{
"chunk": 29,
"story": 3,
"summary": "Someone seeks to impress someone with a bold gesture, but is thwarted by her quicker action.",
"model_output": "Patrick seeks to impress Mrs. Dougherty with a bold gesture, but is thwarted by her quicker action.",
"raw": "Patrick seeks to impress Mrs. Dougherty with a bold gesture, but is thwarted by her quicker action.",
"names_removed": [
"Patrick",
"Mrs.",
"Dougherty"
]
},
{
"chunk": 30,
"story": 3,
"summary": "The bride desires her husband's affection, yet fears losing him to distant admirers.",
"model_output": "The bride desires her husband's affection, yet fears losing him to distant admirers.",
"raw": "The bride desires her husband's affection, yet fears losing him to distant admirers.",
"names_removed": []
},
{
"chunk": 31,
"story": 3,
"summary": "The Kid seeks a peach but finds oranges instead, rushing to a fruiterer just as the lights go out.",
"model_output": "The Kid seeks a peach but finds oranges instead, rushing to a fruiterer just as the lights go out.",
"raw": "The Kid seeks a peach but finds oranges instead, rushing to a fruiterer just as the lights go out.",
"names_removed": []
},
{
"chunk": 32,
"story": 3,
"summary": "Kid seeks to infiltrate someone\u2019s gambling den but finds it closed, needing help from the captain.",
"model_output": "Kid seeks to infiltrate Denver Dick's gambling den but finds it closed, needing help from the captain.",
"raw": "Kid seeks to infiltrate Denver Dick's gambling den but finds it closed, needing help from the captain.",
"names_removed": [
"Denver",
"Dick's"
]
},
{
"chunk": 33,
"story": 3,
"summary": "The captain seeks to lead a raid, but doubts success as the Kid's plan unfolds.",
"model_output": "The captain seeks to lead a raid, but doubts success as the Kid's plan unfolds.",
"raw": "The captain seeks to lead a raid, but doubts success as the Kid's plan unfolds.",
"names_removed": []
},
{
"chunk": 34,
"story": 3,
"summary": "The Kid seeks a last peach at a lavish dinner, fearing theft, while authorities arrive.",
"model_output": "The Kid seeks a last peach at a lavish dinner, fearing theft, while authorities arrive.",
"raw": "The Kid seeks a last peach at a lavish dinner, fearing theft, while authorities arrive.",
"names_removed": []
},
{
"chunk": 35,
"story": 3,
"summary": "The Kid seeks to please his bride by delivering a requested peach, despite its trivial nature.",
"model_output": "The Kid seeks to please his bride by delivering a requested peach, despite its trivial nature.",
"raw": "The Kid seeks to please his bride by delivering a requested peach, despite its trivial nature.",
"names_removed": []
},
{
"chunk": 36,
"story": 4,
"summary": "Stuck in stone walls, city man craves nature's first signs to confirm spring's arrival.",
"model_output": "Stuck in stone walls, city man craves nature's first signs to confirm spring's arrival.",
"raw": "Stuck in stone walls, city man craves nature's first signs to confirm spring's arrival.",
"names_removed": []
},
{
"chunk": 37,
"story": 4,
"summary": "Someone wants the dollar his wife has, but fears losing face among friends.",
"model_output": "Mr. Peters wants the dollar his wife has, but fears losing face among friends.",
"raw": "Mr. Peters wants the dollar his wife has, but fears losing face among friends.",
"names_removed": [
"Mr.",
"Peters"
]
},
{
"chunk": 38,
"story": 4,
"summary": "Someone wants the dollar, but someone plans to get the case note instead.",
"model_output": "Maguire wants the dollar, but Mr. Peters plans to get the case note instead.",
"raw": "Maguire wants the dollar, but Mr. Peters plans to get the case note instead.",
"names_removed": [
"Maguire",
"Mr.",
"Peters"
]
},
{
"chunk": 39,
"story": 4,
"summary": "Someone schemes to charm someone away from a tea job, while she resists with a tough stance.",
"model_output": "Mr. Peters schemes to charm Mrs. Peters away from a tea job, while she resists with a tough stance.",
"raw": "Mr. Peters schemes to charm Mrs. Peters away from a tea job, while she resists with a tough stance.",
"names_removed": [
"Mr.",
"Peters",
"Mrs.",
"Peters"
]
}
]
}