# Experiment 001 — Sam Reed interviews Maria Stern

**Status:** Not yet run. Awaiting fresh session.

---

## Purpose

The first pilot of the method-actor architecture in this project. Tests whether structural isolation between two character contexts — with the coordinator routing rather than generating — produces dialogue that reads more like a real interview transcript than what a single LLM writing both halves would produce.

This experiment is also the first run of every supporting piece: the actor system prompt, the orchestration protocol, the event-log schema. Discovering bugs in any of these is part of the experiment.

---

## Characters

- **`characters/maria-stern/`** — profile + empty journal. Costa Rican-American marketing director in Mountain View, mid-30s, blended household, early in a long-wanted pregnancy.
- **`characters/sam-reed/`** — profile + empty journal. Brooklyn-based freelance journalist working on a long-form piece about late-life parenthood in the Bay Area.

---

## Scene

- **`scenes/scene-001-morning-kitchen.md`** — A Wednesday morning, ~9am Pacific. Sam visits Maria's Mountain View kitchen for the interview. Her husband at work, stepsons at their mother's. The scene file contains a per-character perspective section so each actor reads only their character's view of the situation.

---

## Before any actor is spawned — present the two pre-experiment choices to the user

Per `CLAUDE.md` and `methodology/how-to-orchestrate-multi-agent-dialogue.md` → *Pre-experiment choices*, the coordinator must present these two questions to the user and capture their answers in `notes.md` *before* spawning anything.

### Choice 1 — How to enforce actor isolation

(a) **Sub-agents per actor in the current Claude Code session.** Uses the `Agent` tool to spawn one sub-agent per character. Each spawn is a fresh isolated context. No external API access required.

(b) **Python coordinator with separate API conversation IDs.** A `lib/run_dialogue.py` script makes separate Anthropic API calls per actor. Requires `ANTHROPIC_API_KEY` env var.

### Choice 2 — Who plays the coordinator role

A. **Parent LLM context** — this session IS the coordinator. Simple, observable, judgement-capable. Carries any context the parent has loaded. Best for pilots.

B. **Dedicated coordinator sub-agent.** Isolated, reproducible. Adds an LLM call per turn for a mostly mechanical job. Rarely the right answer.

C. **Pure Python code.** Cheapest, most deterministic, zero routing bias. Best for production.

### Recording the user's answers

The first two lines of `notes.md` look like:

```
Isolation:        (a) — sub-agents in current Claude Code session
Coordinator role: A  — parent LLM context (this session)
```

Then a free-form section for any additional notes.

---

## How the experiment runs (once the user has picked)

1. **Brief each actor.** Per `methodology/how-to-orchestrate-multi-agent-dialogue.md` → *Per-actor briefing format*, each actor receives, in this order:
   - The actor system prompt from `actor/system-prompt.md`
   - Their character's `profile.md`
   - Their character's `journal.md`
   - The scene's perspective on the situation for their character (extracted from `scene-001-morning-kitchen.md`)
   - The instruction: *"The scene begins now. Wait for the other character to speak, or speak first if the scene briefing calls for it."*

2. **Open with the doorbell.** Per the scene file's *Opening* section, Sam arrives at Maria's door at 8:58 and they walk to the kitchen. Coordinator initiates by sending Maria the prompt that the doorbell has rung; she responds; Sam arrives and they begin.

3. **Loop turn by turn** following the protocol in `methodology/how-to-orchestrate-multi-agent-dialogue.md`. Every event (think / speak / route / spawn / correct / journal / close) is recorded in `event-log.json` with timestamps. The clean dialogue is appended to `transcript.md`.

4. **Detect end of scene** per the protocol's end-of-scene rules. Soft cap: 40 turns per character. Coordinator should err toward letting the scene continue, not toward cutting it short.

5. **Journal-write step.** After the scene closes, each actor is asked to write a journal entry in their character's first-person voice. The coordinator appends each to the character's `journal.md`. (Maria's first entry; Sam's first entry — this becomes input to experiment 002.)

---

## Outputs of this experiment

```
experiments/exp-001__maria-and-sam/
├── README.md              ← this file
├── notes.md               ← user's pre-experiment choices + post-run observations
├── transcript.md          ← the clean dialogue
└── event-log.json         ← every event timestamped, for chronological replay
```

Plus side-effects:
- `characters/maria-stern/journal.md` — Maria's first entry appended
- `characters/sam-reed/journal.md` — Sam's first entry appended

---

## How to compare to experiment 002

Experiment 002 (Sam interviews Soo-yeon Park) runs after this one. Same actor system prompt, same coordinator architecture; different character (Soo-yeon vs. Maria); same questioner (Sam, but now with one journal entry of accumulated reflection).

The comparison axes:
- Does Sam's behaviour visibly evolve between scenes 001 and 002 because of his journal?
- Does the dialogue with Soo-yeon look distinctively *Korean older wife* — slow, formal, brief — versus Maria's *Costa Rican-American marketing director* register, even though both actors run on the same model?
- Any cross-scene contamination between Maria's content and Soo-yeon's content? (There should be none.)
