Menu

#125 US-YW2: Import Scene Goal/Conflict/Outcome as Beats

v1.0.0-beta
closed
nobody
2026-01-20
2026-01-19
Anonymous
No

Originally created by: smith-and-web

User Story

As a yWriter user,
I want to have my Goal, Conflict, and Outcome fields converted into scene beats,
So that my detailed scene planning becomes scaffolding for drafting.

Parent Epic: [#123]

Context

This is the key differentiator for yWriter import. yWriter's Goal/Conflict/Outcome (GCO) fields align perfectly with Kindling's beat scaffolding concept. This is why yWriter users would use Kindling.

yWriter XML Structure

<SCENE>
  <ID>1</ID>
  <Title>The Confrontation</Title>
  <Desc>Sarah confronts John about the letter.</Desc>
  <Goal>Sarah wants to get the truth from John</Goal>
  <Conflict>John refuses to admit he took the letter</Conflict>
  <Outcome>Sarah finds the letter in John's pocket</Outcome>
  <SceneContent>...</SceneContent>
</SCENE>

Mapping to Kindling Beats

Default Beat Order

  1. Description Beat (if <Desc> present): Provides scene context
  2. Goal Beat: <Goal> content
  3. Conflict Beat: <Conflict> content
  4. Outcome Beat: <Outcome> content

Beat Labeling Options

Option A: Explicit labels (recommended)

Beat 1: "Sarah confronts John about the letter." (from Desc)
Beat 2: "Goal: Sarah wants to get the truth from John"
Beat 3: "Conflict: John refuses to admit he took the letter"
Beat 4: "Outcome: Sarah finds the letter in John's pocket"

Option B: Generic labels

Beat 1: "Sarah confronts John about the letter."
Beat 2: "Sarah wants to get the truth from John"
Beat 3: "John refuses to admit he took the letter"
Beat 4: "Sarah finds the letter in John's pocket"

Import Configuration Options

Allow user to configure during import:

GCO Import Options
──────────────────
☑ Import Goal as beat Import Conflict as beat Import Outcome as beat Import Description as beat Include "Goal:/Conflict:/Outcome:" prefixes

Acceptance Criteria

  • [ ] Goal field imports as beat with label "Goal: {content}"
  • [ ] Conflict field imports as beat with label "Conflict: {content}"
  • [ ] Outcome field imports as beat with label "Outcome: {content}"
  • [ ] Empty GCO fields are skipped (no empty beats created)
  • [ ] Scene description (<Desc>) imports as first beat if present
  • [ ] Beat ordering: Description → Goal → Conflict → Outcome
  • [ ] User can configure beat import preferences (include/exclude each field)
  • [ ] User can toggle label prefixes on/off
  • [ ] Beats are correctly associated with the imported scene

Edge Cases

  • All GCO empty: Scene imports with no beats (outline only)
  • Only Goal set: Scene imports with single beat
  • Description but no GCO: Scene imports with description as only beat
  • Very long GCO text: Truncate for beat display? Or allow long beats?

Related

Tickets: #123

Discussion

  • Anonymous

    Anonymous - 2026-01-20

    Originally posted by: smith-and-web

    Implemented in PR [#140]. Goal/Conflict/Outcome fields are converted to Kindling beats. Reaction scenes use Response/Dilemma/Decision labels instead.

     

    Related

    Tickets: #140

  • Anonymous

    Anonymous - 2026-01-20

    Ticket changed by: smith-and-web

    • status: open --> closed
     

Log in to post a comment.

MongoDB Logo MongoDB