Skip to content

PvZ authored-dialogue handoff

Classic Adventure's on-lawn remarks previously never entered the following typed conversation. The model received the native stage and its own earlier replies, but not the words the player was answering.

The optional scripted-dialogue-v1 capability accepts one bounded heardDave observation for the same classic Adventure epoch. It becomes the assistant turn immediately before the player's input. It is client-reported speech, not a system instruction, an achievement, or a new action capability. Source chapters retain their existing reached-event context; plant conversations remain separate.

The client records canonical displayed remarks, sends one with the next typed turn, retains it on failure, and consumes it after success. Repeated rendering, old hosts, account changes, and late replies cannot reapply or misattribute it.

Focused replies omit unrelated biography/example conversations. General voice guidance no longer mandates misspellings or a shouted catchphrase. Authored greetings, choices, effects, and difficulty are unchanged.

Verification and limits

  • 400 isolated game-NPC tests pass, including schema/speaker/epoch boundaries, prompt order, one-copy context, future-story disclosure and quoted instructions.
  • 605 game/UI/packaging tests pass, including actual request/retry behavior.
  • Hosted build and typecheck pass.
  • Local live-provider samples used saved compiled 3-3 snapshots without account, save or notebook writes. Free-provider recovery used the existing fallback. They demonstrate that correct request structure does not guarantee good prose: one final reply prematurely called the trick an upgrade; another invented an old taco debt. These are retained as quality failures, not counted as a pass.
  • No generated text can create a debt or apply an upgrade. This change does not add a semantic prose verifier or silently switch the user's selected model.

Browser and publication receipts live with the game worktree's release record.

Follow-up continuity

The first handoff originally reached the provider but was omitted from the saved notebook. Once the browser consumed it, the next turn lost the authored line. Successful exchanges now store the displayed line, player input and generated reply in that order, using the existing bounded, scoped conversation schema. No new stored field, migration, client download or game effect is introduced.

Verification: 404 isolated game-NPC tests, hosted build and typecheck pass. The new regression first failed on the missing line. Route/database coverage verifies that invalid generation saves no partial exchange, stale retries generate no second reply, subsequent turns receive the line once, and other campaigns remain isolated. Earlier saves and other Adventure cycles cannot see later dialogue. The existing prose-quality failures above remain open; preserving a conversation is not proof that a model will always write a grounded or entertaining answer.

Keeping a follow-up focused

A follow-up used to restore the full biography and sample conversations after the one-shot handoff was consumed. In the retained 3-3 windup capture this grew the request from 27,060 to 34,847 characters. Typed conversations with prior Dave/player turns on the current level now keep the focused lore directions; the follow-up is 26,924 characters. Character identity, relationship guidance, native facts, conversation history and legal action contracts are retained. Background visits and new conversations keep their existing lore selection.

406 isolated game-NPC tests pass, including EN/ZH/ES focus and boundaries for other speakers, editions, cycles and earlier/later levels. Two fixed live Free correction turns used the previously retained bad replies as actual history, without resampling or account writes. English stopped claiming an upgrade had happened but gave a fairly generic pep-talk line; Chinese acknowledged that the taco debt was invented and withdrew it. These are bounded correction samples, not proof that the unchanged first-turn prompt or every later reply is grounded.