Phase 20L Scene prompt

This commit is contained in:
Nick Beckley 2026-07-04 20:27:50 +01:00
parent 6932518ec6
commit 7e7ac46880

View File

@ -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: