← runs · all docs · view source on github

Corpus deep-research takeaways

Source: data/reports/corpus_research_20260430T064850.md — 40 KB report from Gemini Deep Research Max (deep-research-max-preview-04-2026) listening to all 12 corpus MP3s + the taste profile.

This file is the distilled durable record of operationalizable findings from that report. Items marked ✅ have shipped; items marked ⏳ are still on the list.

Operationalized

# Takeaway Where it shipped
✅ The Snowball Lie — polite minor falsehood that compounds because the other character believes it. Most under-exploited Finnemore device, the one LLMs miss most. Programmable: line 3 lie → line 4 belief → escalation. concept prompt section + per-scene prompt block + rule_has_snowball_lie_pair lint + RULE_SUGGESTIONS (commit 4dcfffa)
✅ Pacing 135 wpm (corpus is 130-140, theatrical Radio 4 — not 155 television-fast we'd been prompting) build_full_prompt + produce_audio._PACING_PREAMBLE (4dcfffa)
✅ All planted details must pay off — every setup/runner beat has a matching payoff/callback later, no decorative plants concept prompt section + rule_all_plants_pay_off lint
✅ Mandatory third-act status flip — apparently low-status character revealed to be driving concept prompt section + rule_third_act_status_flip lint
✅ Pause taxonomy as schema field — DeliveryNote.pause_kind ∈ {realisation, absurdity, tonal_weight, none} mapping to [short pause]/[medium pause]/[long pause] audio tags schemas.DeliveryNote + produce_audio._PAUSE_KIND_TO_AUDIO_TAG
✅ SFX is sparse — scene-setter only, drops away for dialogue. ≤4 SFX for short episodes, ≤8 for full-length concept prompt section + rule_sfx_count_within_band lint
✅ Anti-pattern table (Finnemore vs generic sketch) — pacing, escalation vector, character power, callbacks, emotional core concept prompt verbatim table

Still gold — operationalize next

1. The "finite isolation trap" framing

Section 1: more concrete than form_as_finite_generator. Two characters in a space they cannot easily exit. Train carriage, hostage scenario, 4-minute desk swap window. "The dialogue itself becomes the action — there is no external action to cut away to."

→ Operationalize: add a hard prompt constraint requiring the concept's premise.machine to literally name the trap (a confined location AND/OR a strict deadline preventing exit). Could become rule_premise_names_finite_trap checking that premise.machine contains location/duration/cannot-leave language.

2. Cross-corpus world continuity (Willard & Son)

Section 5: the corpus shares a fictional bathtub manufacturer "Willard & Son" across 4 episodes (Tigers 1934, Wysinnwyg, Hot Desk, Red-Handed). It's lived-in world-building that rewards long-term listeners.

→ Operationalize: seed our generations with a recurring fictional anchor (e.g. a fake employer, a fake regional newspaper, a fake society) we plant in every concept. Track in a small registry file. After N generations the registry becomes its own continuity.

3. The 3 deep-research seed concepts

Section 8 invented these from first principles. Use them as live seeds:

→ Operationalize: add to a data/seeds/deep_research_seeds.txt and run them through the meta-iterate to compare against the new prompt.

4. The "Listener's complicit imagination" doctrine

Section 3: "Once the scene is set, the sound effects drop away so the dialogue can perform the heavy lifting of characterization." Plus the Announcer (Finnemore narrating "Two days later...") as time-compression device.

→ Operationalize:

5. State-Variable Document framing for state tracking

Section 11: explicit JSON {"Plant_1": "Letter sent to father", "Status": "Unresolved"} pattern fed into chunk prompts to survive context window degradation.

→ Operationalize: we already have _RunningState with unpaid_plants. Could:

6. The 10 Load-Bearing Imperatives

Section 7: the report wrote them explicitly. We've shipped some (status flip, all plants pay off) but a few aren't yet first-class:

7. Specific pause-event examples to teach via few-shot

Section 3 gave concrete examples we could drop verbatim into the per-scene prompt as exemplars:

8. The status flip is asymmetric, not balanced

Section 4: "Adele seems to hold power... should hold the moral high ground over the criminal Henry." Then the genius is the flip. We have asymmetric_status as a concept axis but the report frames it as: ALWAYS start with the EXPECTED hierarchy (host > burglar, expert > novice, boss > new hire), then flip in act 3. This is structural, not optional.

→ Operationalize: the cast.function fields could be required to name BOTH the surface status AND the actual status (e.g., function: "appears to be subordinate / actually drives the scene").

9. Period-accuracy strictness for period episodes

Section 6: "Episodes like *The Goliath Window (1820) or A Flock of Tigers (1934) require strict adherence to historical vernacular."* We have rule_no_modern_slang_in_period_episode already, but the report's framing is sharper — period episodes should source vocabulary from the actual era, not just avoid modern slang.

→ Operationalize: when a generated concept has a style.vocabulary_register containing a year/era keyword, the per-scene generation prompt should embed period vocabulary samples or a one-line "you are writing in [year], use [era] register" anchor.

10. Tonal-duality location is fixed (final third)

Section 5: tonal duality lands in act 3 — "the comedic premise falls away to reveal a genuine, grounded human vulnerability or tragedy." Currently rule_tonal_shift_present checks that one exists; could tighten to require it lives in the final third, like the status flip.

→ Operationalize: modify rule_tonal_shift_present to require the standout-moment timestamp be in the final third of episode duration.

Reference seeds from section 8 (verbatim)

The Royal Fitting
- Logline: A highly anxious Savile Row tailor attempts to measure a Queen's Guard for a new uniform while the guard is actively on duty outside the palace.
- Machine: The Guard is forbidden by military protocol from speaking or breaking physical composure, forcing the tailor into a panicked, one-way interrogation interpreting blinks and micro-expressions.
- Hook: The Guard is not remaining silent out of duty, but because he is an imposter who doesn't speak English, and the tailor slowly realizes he is outfitting a spy.

The Lighthouse Log
- Logline: Two lighthouse keepers, assigned to paint the exterior glass, are suspended on opposite sides of the massive lantern room.
- Machine: They can see each other perfectly but the crashing waves prevent them from hearing each other, forcing them to argue via exaggerated lip-reading and wiping messages in the condensation.
- Hook: One keeper realizes through lip-reading that the other keeper has been forging the official logbook to cover up a maritime disaster they caused weeks ago.

Turing's Waiting Room
- Logline: An elderly, technologically illiterate woman calls a banking helpline and becomes trapped in an endless loop with an infuriatingly polite automated AI voice system.
- Machine: The caller is constrained by her lack of technical vocabulary, while the AI is constrained by a rigid, unyielding decision-tree script.
- Hook: The "AI" is actually a deeply hungover, human customer service representative pretending to be a robot to avoid having to process complex transactions.

Notes for future deep-research calls

The Interactions API (client.interactions.create(agent=..., input=..., background=True)) currently does NOT accept multimodal inputs (audio attachments). The agent runs against external sources (web grounding) plus the text input, then returns. Future deep-research calls should: