From 7e7ac468809085a6f346f32757ce43698ee006c0 Mon Sep 17 00:00:00 2001 From: Nick Beckley Date: Sat, 4 Jul 2026 20:27:50 +0100 Subject: [PATCH] Phase 20L Scene prompt --- PlotLine/Docs/AI/Scene-Prompt-V1.md | 153 +++++++++++++++++++++++++--- 1 file changed, 140 insertions(+), 13 deletions(-) diff --git a/PlotLine/Docs/AI/Scene-Prompt-V1.md b/PlotLine/Docs/AI/Scene-Prompt-V1.md index c56571f..6198904 100644 --- a/PlotLine/Docs/AI/Scene-Prompt-V1.md +++ b/PlotLine/Docs/AI/Scene-Prompt-V1.md @@ -58,6 +58,8 @@ It should not: - Do not include Markdown in the response. - Do not include code fences in the response. - Do not mention these instructions in the response. +- Do not invent, rename or omit schema properties. +- Do not output additional undocumented properties. - Do not call out missing data unless it belongs in `sourceLimits`. - Do not use words such as "weak", "bad", "poor", "needs", "should", "fix", "improve" or "rewrite" as critique. - Do not create suggestions that tell the author what to write. @@ -76,7 +78,7 @@ If something is not stated or strongly implied: - use `null` for scalar values; - use an empty array for lists; -- omit weak guesses from entity lists; +- omit weak entity guesses from entity arrays rather than inventing facts; - lower confidence when retaining an uncertain observation is useful; - add a note in `sourceLimits.ambiguityNotes` when the source text limits certainty. @@ -172,7 +174,7 @@ Each metric must be an object: { "score": 8, "confidence": 0.75 } ``` -If a metric cannot be assessed from the scene, omit that metric from `metrics`. +Always emit every preferred V1 metric. If a metric is barely present, use score `1` with an appropriate confidence. Do not omit preferred metric objects. ## Character Reporting Rules @@ -186,8 +188,14 @@ Report characters who are: For each character: - use the manuscript's name or label; +- include exactly these properties: `name`, `roleInScene`, `mentionedOnly`, `aliases`, `actions`, `confidence`, `notes`; - set `mentionedOnly` to `false` when active in the scene; - set `mentionedOnly` to `true` when absent and only referred to; +- set `roleInScene` to one of `present`, `pointOfView`, `speaker`, `mentioned` or `unclear`; +- use `roleInScene: "mentioned"` for mentioned-only characters; +- use `aliases: []` when no aliases are supported; +- use `actions: []` when no factual actions are supported; +- use `notes: null` when no note is needed; - keep `actions` factual; - use `aliases` only when the scene clearly supports them; - do not infer private motives; @@ -217,6 +225,10 @@ Use: - `locationType: "generic"` for unnamed rooms or place types; - `locationType: "unclear"` when the distinction is not supported. +For each location, include exactly these properties: `name`, `locationType`, `genericRoomType`, `parentLocationHint`, `presentInScene`, `mentionedOnly`, `confidence`, `notes`. + +Use the `name` property for both named locations and generic labels. For an unnamed generic place, use the generic label as `name`, such as `"stair"` or `"doorway"`, and also populate `genericRoomType` when supported. Use `presentInScene: true` when the action occurs there. Use `mentionedOnly: true` only when the location is referred to but not used as the scene's action space. Use `notes: null` when no note is needed. + Use `parentLocationHint` only when the scene supports a containing place. Do not invent location hierarchy. ## Asset Reporting Rules @@ -232,6 +244,10 @@ Report an object as an asset when it is: Do not report ordinary scenery or props unless the scene gives them story importance. +For each asset, include exactly these properties: `name`, `assetType`, `status`, `ownerOrHolder`, `mentionedOnly`, `confidence`, `notes`. + +Use `assetType: null`, `status: null` or `ownerOrHolder: null` when unsupported. Use `mentionedOnly: false` when the asset is physically present or directly acted on in the scene. Use `notes: null` when no note is needed. + ## Relationship Signal Rules Report relationship signals only when the scene supports them. @@ -252,6 +268,10 @@ Use neutral terms such as: These are scene-local signals for later Relationship Intelligence. They are not final relationship records. +For each relationship signal, include exactly these properties: `characterA`, `characterB`, `relationshipSignal`, `evidence`, `confidence`. + +Do not use property names such as `characters`, `signal`, `type`, `description` or `notes` in relationship objects. Use one relationship object per supported signal between two named characters. If the same pair has multiple supported signals, each object must still use `characterA`, `characterB`, `relationshipSignal`, `evidence` and `confidence`. + ## Knowledge Change Rules Report knowledge changes only when the scene clearly shows that a character gains, confirms, suspects or misunderstands something during the scene. @@ -282,6 +302,7 @@ Allowed `changeType` values: Rules: +- Include exactly these properties in every knowledge change: `recipientCharacter`, `knowledgeItem`, `changeType`, `sourceCharacter`, `sourceType`, `evidence`, `confidence`. - Do not use `knowledgeChanges` for information the reader learns but no character learns. - Do not assume a character did not know something before unless the scene supports that. - Use `sourceCharacter: null` when the source is not a character. @@ -303,6 +324,10 @@ Preserve vague wording when the manuscript is vague. Do not convert "three days later" into a calendar date unless a calendar date is supplied. +For each timeline clue, include exactly these properties: `clue`, `relativeOrder`, `absoluteDate`, `evidence`, `confidence`. + +Use `relativeOrder: null` when no relative ordering is supported. Use `absoluteDate: null` when no exact date is supplied. + ## Questions Raised Rules Report questions the scene creates or sharpens. @@ -317,12 +342,18 @@ Bad: `Should the author make this scene clearer?` +For each raised question, include exactly these properties: `question`, `scope`, `evidence`, `confidence`. + +Use a concise lowercase scope such as `plot`, `character`, `asset`, `relationship`, `location`, `timeline` or `scene`. Do not omit `scope`. + ## Questions Answered Rules Report answers supplied by the scene. Answers may be partial. If a question is only partly answered, say so in the answer text and lower confidence. +For each answered question, include exactly these properties: `question`, `answer`, `evidence`, `confidence`. + ## Observation Rules Observations preserve useful factual signals that later stages can map into PlotDirector entities. @@ -370,6 +401,7 @@ Observation rules: - Observations must remain neutral. - Observations must be evidence-backed. - Observations are not final canon. +- Include exactly these properties in every observation: `observationType`, `subjectEntityType`, `subjectName`, `objectEntityType`, `objectName`, `predicate`, `description`, `evidence`, `confidence`. - Use `objectEntityType: null` and `objectName: null` when no object entity applies. - Use PlotDirector entity concepts where possible. - Prefer controlled lowerCamelCase predicate values where possible. @@ -417,16 +449,109 @@ Return exactly one JSON object matching this shape: "parentLocationHint": null, "confidence": 0.0 }, - "characters": [], - "locations": [], - "assets": [], - "relationships": [], - "knowledgeChanges": [], - "timelineClues": [], - "questionsRaised": [], - "questionsAnswered": [], - "observations": [], - "metrics": {}, + "characters": [ + { + "name": "", + "roleInScene": "unclear", + "mentionedOnly": false, + "aliases": [], + "actions": [], + "confidence": 0.0, + "notes": null + } + ], + "locations": [ + { + "name": "", + "locationType": "unclear", + "genericRoomType": null, + "parentLocationHint": null, + "presentInScene": false, + "mentionedOnly": false, + "confidence": 0.0, + "notes": null + } + ], + "assets": [ + { + "name": "", + "assetType": null, + "status": null, + "ownerOrHolder": null, + "mentionedOnly": false, + "confidence": 0.0, + "notes": null + } + ], + "relationships": [ + { + "characterA": "", + "characterB": "", + "relationshipSignal": "", + "evidence": "", + "confidence": 0.0 + } + ], + "knowledgeChanges": [ + { + "recipientCharacter": "", + "knowledgeItem": "", + "changeType": "Learns", + "sourceCharacter": null, + "sourceType": null, + "evidence": "", + "confidence": 0.0 + } + ], + "timelineClues": [ + { + "clue": "", + "relativeOrder": null, + "absoluteDate": null, + "evidence": "", + "confidence": 0.0 + } + ], + "questionsRaised": [ + { + "question": "", + "scope": "plot", + "evidence": "", + "confidence": 0.0 + } + ], + "questionsAnswered": [ + { + "question": "", + "answer": "", + "evidence": "", + "confidence": 0.0 + } + ], + "observations": [ + { + "observationType": "CharacterAction", + "subjectEntityType": "Character", + "subjectName": "", + "objectEntityType": null, + "objectName": null, + "predicate": "observes", + "description": "", + "evidence": "", + "confidence": 0.0 + } + ], + "metrics": { + "action": { "score": 1, "confidence": 0.0 }, + "emotion": { "score": 1, "confidence": 0.0 }, + "tension": { "score": 1, "confidence": 0.0 }, + "conflict": { "score": 1, "confidence": 0.0 }, + "mystery": { "score": 1, "confidence": 0.0 }, + "romance": { "score": 1, "confidence": 0.0 }, + "humour": { "score": 1, "confidence": 0.0 }, + "revelation": { "score": 1, "confidence": 0.0 }, + "pacingIntensity": { "score": 1, "confidence": 0.0 } + }, "sourceLimits": { "containsAmbiguity": false, "ambiguityNotes": [] @@ -434,7 +559,9 @@ Return exactly one JSON object matching this shape: } ``` -All arrays must be present. +The example arrays above show object shape. In the actual response, use `[]` for any array with no supported items. Never output placeholder objects with empty required strings. + +All arrays must be present. Every object in an array must include every property shown for that object type. Every required object must be present. Unknown scalar values must be `null` only where the schema permits null. Unknown lists must be `[]`. Do not omit properties. Use valid JSON: