867 lines
27 KiB
Markdown
867 lines
27 KiB
Markdown
# Scene Intelligence Schema V1
|
|
|
|
## Purpose
|
|
|
|
This document defines the JSON object returned by the Scene Intelligence engine for one manuscript scene.
|
|
|
|
Scene Intelligence is an observation and database-population stage. It observes, organises and suggests factual story signals from a single scene so later PlotDirector stages can build character, relationship, location, asset, knowledge, thread and continuity models.
|
|
|
|
The AI is an assistant archivist. It never critiques, rewrites, judges scene quality, creates final canon or performs cross-scene continuity analysis.
|
|
|
|
## Output Contract
|
|
|
|
The engine must return one valid JSON object and no prose outside the JSON.
|
|
|
|
All arrays must be present, even when empty. Optional scalar properties must be `null` when unsupported by the supplied scene. The model must not invent missing identifiers, motives, locations, assets, chronology or outcomes.
|
|
|
|
Confidence values use a decimal number from `0.0` to `1.0`:
|
|
|
|
- `0.90` to `1.00`: directly stated or strongly explicit in the scene.
|
|
- `0.70` to `0.89`: strongly implied by the scene.
|
|
- `0.40` to `0.69`: plausible but uncertain.
|
|
- below `0.40`: normally omit the item.
|
|
|
|
Metrics use descriptive intensity scores from `1` to `10`. They are not quality ratings.
|
|
|
|
## Root Object
|
|
|
|
```json
|
|
{
|
|
"schemaVersion": "1.0",
|
|
"sceneReference": {
|
|
"projectId": 12,
|
|
"bookId": 34,
|
|
"chapterId": 56,
|
|
"sceneId": 78,
|
|
"chapterNumber": 4,
|
|
"sceneNumber": 2,
|
|
"sourceLabel": "Chapter 4, Scene 2"
|
|
},
|
|
"summary": {
|
|
"short": "Mara confronts Elias about the missing ledger.",
|
|
"detailed": "Mara finds Elias in the archive and asks why the ledger vanished after the council meeting. Elias avoids naming who took it, but confirms the theft changes their route north.",
|
|
"confidence": 0.92
|
|
},
|
|
"scenePurpose": {
|
|
"observedFunction": "Reveals the missing ledger and changes the characters' immediate situation.",
|
|
"confidence": 0.82
|
|
},
|
|
"pointOfView": {
|
|
"characterName": "Mara",
|
|
"narrativeMode": "third person limited",
|
|
"confidence": 0.88,
|
|
"evidence": "The narration reports Mara's perceptions but not Elias's internal thoughts."
|
|
},
|
|
"setting": {
|
|
"timeOfDay": "night",
|
|
"dateOrTimeReference": null,
|
|
"locationName": "Archive Hall",
|
|
"locationType": "named",
|
|
"genericRoomType": "archive",
|
|
"parentLocationHint": null,
|
|
"confidence": 0.86
|
|
},
|
|
"characters": [],
|
|
"locations": [],
|
|
"assets": [],
|
|
"relationships": [],
|
|
"knowledgeChanges": [],
|
|
"timelineClues": [],
|
|
"questionsRaised": [],
|
|
"questionsAnswered": [],
|
|
"observations": [],
|
|
"metrics": {},
|
|
"sourceLimits": {
|
|
"containsAmbiguity": false,
|
|
"ambiguityNotes": []
|
|
}
|
|
}
|
|
```
|
|
|
|
The root object must not include scene-level thread candidates or continuity warning objects. Thread Detection and the Continuity Engine derive those later from structured Scene Intelligence output.
|
|
|
|
## Property Reference
|
|
|
|
### `schemaVersion`
|
|
|
|
- Purpose: Identifies the Scene Intelligence schema version.
|
|
- Data type: string.
|
|
- Required: yes.
|
|
- Confidence usage: none.
|
|
- Example: `"1.0"`.
|
|
- Notes: Must remain stable for this schema generation.
|
|
|
|
### `sceneReference`
|
|
|
|
- Purpose: Carries application-provided scene identity for later persistence and audit.
|
|
- Data type: object.
|
|
- Required: yes.
|
|
- Confidence usage: none; these values come from PlotDirector, not AI inference.
|
|
- Example: see root example.
|
|
- Notes: Copy supplied identifiers exactly. Do not infer missing identifiers.
|
|
|
|
#### `sceneReference.projectId`
|
|
|
|
- Purpose: Project identifier supplied by PlotDirector.
|
|
- Data type: integer or null.
|
|
- Required: yes.
|
|
- Confidence usage: none.
|
|
- Example: `12`.
|
|
- Notes: May be null in test fixtures before database identifiers are assigned.
|
|
|
|
#### `sceneReference.bookId`
|
|
|
|
- Purpose: Book identifier supplied by PlotDirector.
|
|
- Data type: integer or null.
|
|
- Required: yes.
|
|
- Confidence usage: none.
|
|
- Example: `34`.
|
|
- Notes: Must not be inferred from manuscript text.
|
|
|
|
#### `sceneReference.chapterId`
|
|
|
|
- Purpose: Chapter identifier supplied by PlotDirector.
|
|
- Data type: integer or null.
|
|
- Required: yes.
|
|
- Confidence usage: none.
|
|
- Example: `56`.
|
|
- Notes: Must not be inferred.
|
|
|
|
#### `sceneReference.sceneId`
|
|
|
|
- Purpose: Scene identifier supplied by PlotDirector.
|
|
- Data type: integer or null.
|
|
- Required: yes.
|
|
- Confidence usage: none.
|
|
- Example: `78`.
|
|
- Notes: Must not be inferred.
|
|
|
|
#### `sceneReference.chapterNumber`
|
|
|
|
- Purpose: Human-readable chapter number supplied by the scanner or application.
|
|
- Data type: number or null.
|
|
- Required: yes.
|
|
- Confidence usage: none.
|
|
- Example: `4`.
|
|
- Notes: Decimal chapter numbers are allowed if PlotDirector uses them.
|
|
|
|
#### `sceneReference.sceneNumber`
|
|
|
|
- Purpose: Human-readable scene number within the chapter.
|
|
- Data type: number or null.
|
|
- Required: yes.
|
|
- Confidence usage: none.
|
|
- Example: `2`.
|
|
- Notes: Decimal scene numbers are allowed if PlotDirector uses them.
|
|
|
|
#### `sceneReference.sourceLabel`
|
|
|
|
- Purpose: Display label for audit and review.
|
|
- Data type: string.
|
|
- Required: yes.
|
|
- Confidence usage: none.
|
|
- Example: `"Chapter 4, Scene 2"`.
|
|
- Notes: Copy from supplied context when available.
|
|
|
|
### `summary`
|
|
|
|
- Purpose: Describes what happens in the scene without critique or rewrite advice.
|
|
- Data type: object.
|
|
- Required: yes.
|
|
- Confidence usage: `confidence` applies to accuracy against the supplied scene text.
|
|
- Example: see root example.
|
|
- Notes: Summaries should be neutral, concise and factual. They should not judge pacing, prose, structure or quality.
|
|
|
|
#### `summary.short`
|
|
|
|
- Purpose: One-sentence operational summary for lists and dashboards.
|
|
- Data type: string.
|
|
- Required: yes.
|
|
- Confidence usage: covered by `summary.confidence`.
|
|
- Example: `"Mara confronts Elias about the missing ledger."`
|
|
- Notes: Usually 12 to 30 words.
|
|
|
|
#### `summary.detailed`
|
|
|
|
- Purpose: Fuller scene account for downstream structured processing.
|
|
- Data type: string.
|
|
- Required: yes.
|
|
- Confidence usage: covered by `summary.confidence`.
|
|
- Example: `"Mara finds Elias in the archive..."`
|
|
- Notes: Preserve uncertainty. Do not add motives, causes or outcomes not supported by the scene.
|
|
|
|
#### `summary.confidence`
|
|
|
|
- Purpose: Indicates how directly the scene supports the generated summary.
|
|
- Data type: number from `0.0` to `1.0`.
|
|
- Required: yes.
|
|
- Confidence usage: this is the confidence value.
|
|
- Example: `0.92`.
|
|
- Notes: Lower confidence for fragmentary, abstract or heavily ambiguous scenes.
|
|
|
|
### `scenePurpose`
|
|
|
|
- Purpose: Captures the observed function of the scene in neutral terms.
|
|
- Data type: object.
|
|
- Required: yes.
|
|
- Confidence usage: `confidence` reflects how clearly the function is supported.
|
|
- Example:
|
|
|
|
```json
|
|
{
|
|
"observedFunction": "Introduces the missing ledger and changes the immediate situation.",
|
|
"confidence": 0.82
|
|
}
|
|
```
|
|
|
|
- Notes: This is descriptive, not evaluative. Avoid author instructions or critique.
|
|
|
|
### `pointOfView`
|
|
|
|
- Purpose: Records apparent point-of-view information.
|
|
- Data type: object.
|
|
- Required: yes.
|
|
- Confidence usage: confidence reflects support from narration and internal access.
|
|
- Example:
|
|
|
|
```json
|
|
{
|
|
"characterName": "Mara",
|
|
"narrativeMode": "third person limited",
|
|
"confidence": 0.88,
|
|
"evidence": "The narration reports Mara's perceptions."
|
|
}
|
|
```
|
|
|
|
- Notes: If unclear, use null for `characterName` and lower confidence.
|
|
|
|
### `setting`
|
|
|
|
- Purpose: Records scene-level time and place signals.
|
|
- Data type: object.
|
|
- Required: yes.
|
|
- Confidence usage: confidence reflects how explicitly the setting is supported.
|
|
- Example: see root example.
|
|
- Notes: Detailed location candidates also appear in `locations`.
|
|
|
|
#### `setting.timeOfDay`
|
|
|
|
- Purpose: Broad time-of-day cue.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: covered by `setting.confidence`.
|
|
- Example: `"night"`.
|
|
- Notes: Use null if not stated or strongly implied.
|
|
|
|
#### `setting.dateOrTimeReference`
|
|
|
|
- Purpose: Explicit chronology text.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: covered by `setting.confidence`.
|
|
- Example: `"three days after the coronation"`.
|
|
- Notes: Preserve manuscript wording where practical.
|
|
|
|
#### `setting.locationName`
|
|
|
|
- Purpose: Primary named location when present.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: covered by `setting.confidence`.
|
|
- Example: `"Archive Hall"`.
|
|
- Notes: Do not convert generic rooms into named locations.
|
|
|
|
#### `setting.locationType`
|
|
|
|
- Purpose: Distinguishes named locations from generic spaces.
|
|
- Data type: string enum: `"named"`, `"generic"`, `"unclear"`.
|
|
- Required: yes.
|
|
- Confidence usage: covered by `setting.confidence`.
|
|
- Example: `"named"`.
|
|
- Notes: A kitchen is generic unless the manuscript identifies it as a specific named place.
|
|
|
|
#### `setting.genericRoomType`
|
|
|
|
- Purpose: Generic room or place type when useful.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: covered by `setting.confidence`.
|
|
- Example: `"archive"`.
|
|
- Notes: Required when `locationType` is `"generic"` and the room type is supported.
|
|
|
|
#### `setting.parentLocationHint`
|
|
|
|
- Purpose: Supported parent or containing place hint.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: covered by `setting.confidence`.
|
|
- Example: `"Royal Library"`.
|
|
- Notes: Use only when the scene supports it. Do not invent hierarchy.
|
|
|
|
#### `setting.confidence`
|
|
|
|
- Purpose: Confidence in the scene-level setting summary.
|
|
- Data type: number from `0.0` to `1.0`.
|
|
- Required: yes.
|
|
- Confidence usage: this is the confidence value.
|
|
- Example: `0.86`.
|
|
- Notes: Lower when inferred from context only.
|
|
|
|
### `characters`
|
|
|
|
- Purpose: Lists characters present, active, mentioned or otherwise scene-relevant.
|
|
- Data type: array of character objects.
|
|
- Required: yes.
|
|
- Confidence usage: each item has its own confidence.
|
|
- Example:
|
|
|
|
```json
|
|
[
|
|
{
|
|
"name": "Mara",
|
|
"roleInScene": "pointOfView",
|
|
"mentionedOnly": false,
|
|
"aliases": [],
|
|
"actions": ["questions Elias about the missing ledger"],
|
|
"confidence": 0.91,
|
|
"notes": "Point-of-view character."
|
|
}
|
|
]
|
|
```
|
|
|
|
- Notes: Mentioned-only characters must use `mentionedOnly: true` and `roleInScene: "mentioned"`.
|
|
|
|
#### Character object properties
|
|
|
|
- `name`
|
|
- Purpose: Character name or label from the manuscript.
|
|
- Data type: string.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"Mara"`.
|
|
- Notes: Use the manuscript's name. Do not merge aliases unless identity is clear in the scene.
|
|
- `roleInScene`
|
|
- Purpose: Indicates how the character participates.
|
|
- Data type: string enum: `"present"`, `"pointOfView"`, `"speaker"`, `"mentioned"`, `"unclear"`.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"pointOfView"`.
|
|
- Notes: Use the most specific applicable role.
|
|
- `mentionedOnly`
|
|
- Purpose: Separates absent references from active scene participants.
|
|
- Data type: boolean.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `true`.
|
|
- Notes: True when the character is absent and only referred to.
|
|
- `aliases`
|
|
- Purpose: Names or titles used for the same character in this scene.
|
|
- Data type: array of strings.
|
|
- Required: yes.
|
|
- Confidence usage: include only clearly supported aliases.
|
|
- Example: `["the captain"]`.
|
|
- Notes: Do not infer aliases across scenes at this stage.
|
|
- `actions`
|
|
- Purpose: Factual actions taken in the scene.
|
|
- Data type: array of strings.
|
|
- Required: yes.
|
|
- Confidence usage: include only supported actions.
|
|
- Example: `["hides the letter"]`.
|
|
- Notes: Keep each action concise. Do not include inferred motives.
|
|
- `confidence`
|
|
- Purpose: Confidence in the character item.
|
|
- Data type: number from `0.0` to `1.0`.
|
|
- Required: yes.
|
|
- Confidence usage: this is the confidence value.
|
|
- Example: `0.91`.
|
|
- Notes: Lower for ambiguous names, pronoun-only references or unclear presence.
|
|
- `notes`
|
|
- Purpose: Short neutral note about scene relevance.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: should reflect item support.
|
|
- Example: `"Mentioned as the previous owner of the ledger."`
|
|
- Notes: No critique or advice.
|
|
|
|
### `locations`
|
|
|
|
- Purpose: Lists named locations and meaningful generic places referenced by the scene.
|
|
- Data type: array of location objects.
|
|
- Required: yes.
|
|
- Confidence usage: each item has its own confidence.
|
|
- Example:
|
|
|
|
```json
|
|
[
|
|
{
|
|
"name": "Archive Hall",
|
|
"locationType": "named",
|
|
"genericRoomType": "archive",
|
|
"parentLocationHint": null,
|
|
"presentInScene": true,
|
|
"mentionedOnly": false,
|
|
"confidence": 0.9,
|
|
"notes": "Primary scene location."
|
|
}
|
|
]
|
|
```
|
|
|
|
- Notes: Generic rooms must not become top-level canonical locations. Named locations may later become Location records.
|
|
|
|
#### Location object properties
|
|
|
|
- `name`
|
|
- Purpose: Location name or generic label.
|
|
- Data type: string.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"Archive Hall"`.
|
|
- Notes: Use `"kitchen"` or `"bedroom"` only as generic labels when unnamed.
|
|
- `locationType`
|
|
- Purpose: Indicates whether the location is named or generic.
|
|
- Data type: string enum: `"named"`, `"generic"`, `"unclear"`.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"generic"`.
|
|
- Notes: Named locations are candidates for later Location Intelligence.
|
|
- `genericRoomType`
|
|
- Purpose: Normalised generic room or place type.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"kitchen"`.
|
|
- Notes: Should be present for generic rooms when supported.
|
|
- `parentLocationHint`
|
|
- Purpose: Supported parent or containing location.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"Manor House"`.
|
|
- Notes: Use only when the scene supports it.
|
|
- `presentInScene`
|
|
- Purpose: Indicates that scene action occurs there.
|
|
- Data type: boolean.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `true`.
|
|
- Notes: False for locations only discussed.
|
|
- `mentionedOnly`
|
|
- Purpose: Indicates an absent location reference.
|
|
- Data type: boolean.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `false`.
|
|
- Notes: Usually true when `presentInScene` is false.
|
|
- `confidence`
|
|
- Purpose: Confidence in location identification.
|
|
- Data type: number from `0.0` to `1.0`.
|
|
- Required: yes.
|
|
- Confidence usage: this is the confidence value.
|
|
- Example: `0.9`.
|
|
- Notes: Lower for implied or ambiguous place references.
|
|
- `notes`
|
|
- Purpose: Neutral location note.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: should match support level.
|
|
- Example: `"Mentioned as the next destination."`
|
|
- Notes: Do not invent worldbuilding.
|
|
|
|
### `assets`
|
|
|
|
- Purpose: Lists meaningful story objects, documents, weapons, tools, vehicles or other assets.
|
|
- Data type: array of asset objects.
|
|
- Required: yes.
|
|
- Confidence usage: each item has its own confidence.
|
|
- Example:
|
|
|
|
```json
|
|
[
|
|
{
|
|
"name": "missing ledger",
|
|
"assetType": "document",
|
|
"status": "missing",
|
|
"ownerOrHolder": null,
|
|
"mentionedOnly": false,
|
|
"confidence": 0.89,
|
|
"notes": "The scene turns on its disappearance."
|
|
}
|
|
]
|
|
```
|
|
|
|
- Notes: Do not list ordinary props unless they have story relevance.
|
|
|
|
#### Asset object properties
|
|
|
|
- `name`
|
|
- Purpose: Asset name or label.
|
|
- Data type: string.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"missing ledger"`.
|
|
- Notes: Use manuscript wording where possible.
|
|
- `assetType`
|
|
- Purpose: Broad asset category.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"document"`.
|
|
- Notes: Keep simple and descriptive.
|
|
- `status`
|
|
- Purpose: Scene-supported state of the asset.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"missing"`.
|
|
- Notes: Use null if no meaningful status is supported.
|
|
- `ownerOrHolder`
|
|
- Purpose: Character or group currently owning, holding or controlling the asset.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"Elias"`.
|
|
- Notes: Use null if unsupported.
|
|
- `mentionedOnly`
|
|
- Purpose: Indicates whether the asset is only referred to and not physically present.
|
|
- Data type: boolean.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `false`.
|
|
- Notes: Helps later Asset Intelligence separate present objects from references.
|
|
- `confidence`
|
|
- Purpose: Confidence in asset identification.
|
|
- Data type: number from `0.0` to `1.0`.
|
|
- Required: yes.
|
|
- Confidence usage: this is the confidence value.
|
|
- Example: `0.89`.
|
|
- Notes: Lower for unclear object significance.
|
|
- `notes`
|
|
- Purpose: Neutral note about asset relevance.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: should match item support.
|
|
- Example: `"Discussed as stolen after the council meeting."`
|
|
- Notes: No speculation beyond scene evidence.
|
|
|
|
### `relationships`
|
|
|
|
- Purpose: Captures scene-local relationship signals between characters.
|
|
- Data type: array of relationship signal objects.
|
|
- Required: yes.
|
|
- Confidence usage: each item has its own confidence.
|
|
- Example:
|
|
|
|
```json
|
|
[
|
|
{
|
|
"characterA": "Mara",
|
|
"characterB": "Elias",
|
|
"relationshipSignal": "mistrust",
|
|
"evidence": "Mara questions Elias about what he is hiding.",
|
|
"confidence": 0.78
|
|
}
|
|
]
|
|
```
|
|
|
|
- Notes: These are evidence-backed scene-local signals, not final relationship records. Neutral signal terms include `trust`, `mistrust`, `affection`, `fear`, `authority`, `secrecy`, `conflict`, `dependence`, `protection`, `rivalry` and `obligation`.
|
|
|
|
### `knowledgeChanges`
|
|
|
|
- Purpose: Records when a character gains, confirms, suspects or misunderstands knowledge during this scene.
|
|
- Data type: array of knowledge change objects.
|
|
- Required: yes.
|
|
- Confidence usage: each item has its own confidence.
|
|
- Example:
|
|
|
|
```json
|
|
[
|
|
{
|
|
"recipientCharacter": "Mara",
|
|
"knowledgeItem": "The ledger was taken after the council meeting.",
|
|
"changeType": "IsTold",
|
|
"sourceCharacter": "Elias",
|
|
"sourceType": "dialogue",
|
|
"evidence": "Elias says it vanished after the council adjourned.",
|
|
"confidence": 0.88
|
|
}
|
|
]
|
|
```
|
|
|
|
- Notes: Do not use this for information the reader learns but no character learns. Do not assume a character did not know something before unless the scene supports that.
|
|
|
|
#### Knowledge change object properties
|
|
|
|
- `recipientCharacter`
|
|
- Purpose: Character receiving, confirming, suspecting or misunderstanding the knowledge.
|
|
- Data type: string.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"Mara"`.
|
|
- Notes: Must be a character supported by the scene.
|
|
- `knowledgeItem`
|
|
- Purpose: The knowledge gained or changed.
|
|
- Data type: string.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"The ledger was taken after the council meeting."`
|
|
- Notes: State the knowledge neutrally.
|
|
- `changeType`
|
|
- Purpose: Type of knowledge change.
|
|
- Data type: string enum: `"Learns"`, `"Realises"`, `"IsTold"`, `"Discovers"`, `"Confirms"`, `"Suspects"`, `"Misunderstands"`.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"IsTold"`.
|
|
- Notes: Choose the most specific supported value.
|
|
- `sourceCharacter`
|
|
- Purpose: Character source of the knowledge, if any.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"Elias"`.
|
|
- Notes: Null for discovery, narration or unclear source.
|
|
- `sourceType`
|
|
- Purpose: How the knowledge reaches the recipient.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"dialogue"`.
|
|
- Notes: Examples include `"dialogue"`, `"observation"`, `"document"`, `"memory"`, `"deduction"`, `"narration"`.
|
|
- `evidence`
|
|
- Purpose: Short evidence note from the scene.
|
|
- Data type: string.
|
|
- Required: yes.
|
|
- Confidence usage: should support item confidence.
|
|
- Example: `"Elias says it vanished after the council adjourned."`
|
|
- Notes: Keep concise; do not quote long passages.
|
|
- `confidence`
|
|
- Purpose: Confidence in the knowledge change.
|
|
- Data type: number from `0.0` to `1.0`.
|
|
- Required: yes.
|
|
- Confidence usage: this is the confidence value.
|
|
- Example: `0.88`.
|
|
- Notes: Lower for implied realisations or unclear recipients.
|
|
|
|
### `timelineClues`
|
|
|
|
- Purpose: Captures chronology details needed by Timeline and Continuity stages.
|
|
- Data type: array of timeline clue objects.
|
|
- Required: yes.
|
|
- Confidence usage: each item has its own confidence.
|
|
- Example:
|
|
|
|
```json
|
|
[
|
|
{
|
|
"clue": "The ledger disappeared after the council meeting.",
|
|
"relativeOrder": "after council meeting",
|
|
"absoluteDate": null,
|
|
"evidence": "Elias says it vanished after the council adjourned.",
|
|
"confidence": 0.86
|
|
}
|
|
]
|
|
```
|
|
|
|
- Notes: Do not create exact dates from vague references.
|
|
|
|
### `questionsRaised`
|
|
|
|
- Purpose: Lists open story questions created or sharpened by the scene.
|
|
- Data type: array of question objects.
|
|
- Required: yes.
|
|
- Confidence usage: each item has its own confidence.
|
|
- Example:
|
|
|
|
```json
|
|
[
|
|
{
|
|
"question": "Who took the ledger?",
|
|
"scope": "plot",
|
|
"evidence": "The ledger is missing and no culprit is named.",
|
|
"confidence": 0.84
|
|
}
|
|
]
|
|
```
|
|
|
|
- Notes: Questions should be story-state questions, not critique questions.
|
|
|
|
### `questionsAnswered`
|
|
|
|
- Purpose: Lists scene-supported answers to previously open or scene-local questions.
|
|
- Data type: array of answer objects.
|
|
- Required: yes.
|
|
- Confidence usage: each item has its own confidence.
|
|
- Example:
|
|
|
|
```json
|
|
[
|
|
{
|
|
"question": "When did the ledger disappear?",
|
|
"answer": "After the council meeting.",
|
|
"evidence": "Elias says it vanished after the council adjourned.",
|
|
"confidence": 0.86
|
|
}
|
|
]
|
|
```
|
|
|
|
- Notes: Preserve uncertainty when an answer is partial.
|
|
|
|
### `observations`
|
|
|
|
- Purpose: Preserves neutral, entity-mappable factual signals that later stages can map into PlotDirector entities.
|
|
- Data type: array of observation objects.
|
|
- Required: yes.
|
|
- Confidence usage: each item has its own confidence.
|
|
- Example:
|
|
|
|
```json
|
|
[
|
|
{
|
|
"observationType": "AssetInteraction",
|
|
"subjectEntityType": "Character",
|
|
"subjectName": "Mara",
|
|
"objectEntityType": "Asset",
|
|
"objectName": "missing ledger",
|
|
"predicate": "asksAbout",
|
|
"description": "Mara questions Elias about the missing ledger.",
|
|
"evidence": "Mara asks why the ledger vanished.",
|
|
"confidence": 0.87
|
|
}
|
|
]
|
|
```
|
|
|
|
- Notes: Observations are not final canon. They remain neutral and evidence-backed.
|
|
|
|
#### Observation object properties
|
|
|
|
- `observationType`
|
|
- Purpose: Categorises the factual signal for later mapping.
|
|
- Data type: string enum: `"CharacterAction"`, `"CharacterKnowledge"`, `"CharacterLocation"`, `"RelationshipSignal"`, `"AssetInteraction"`, `"LocationSignal"`, `"TimelineSignal"`, `"QuestionSignal"`.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"AssetInteraction"`.
|
|
- Notes: Choose the closest supported category.
|
|
- `subjectEntityType`
|
|
- Purpose: Entity type for the subject.
|
|
- Data type: string enum: `"Character"`, `"Location"`, `"Asset"`, `"Knowledge"`, `"Relationship"`, `"Timeline"`, `"Scene"`, `"Unknown"`.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"Character"`.
|
|
- Notes: Use PlotDirector concepts where possible.
|
|
- `subjectName`
|
|
- Purpose: Name or label of the subject entity.
|
|
- Data type: string.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"Mara"`.
|
|
- Notes: Use manuscript wording where possible.
|
|
- `objectEntityType`
|
|
- Purpose: Entity type for the object, if the observation has one.
|
|
- Data type: string enum or null: `"Character"`, `"Location"`, `"Asset"`, `"Knowledge"`, `"Relationship"`, `"Timeline"`, `"Scene"`, `"Unknown"`, null.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"Asset"`.
|
|
- Notes: Use null when there is no object.
|
|
- `objectName`
|
|
- Purpose: Name or label of the object entity, if any.
|
|
- Data type: string or null.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"missing ledger"`.
|
|
- Notes: Use null when there is no object.
|
|
- `predicate`
|
|
- Purpose: Short relationship/action phrase connecting subject and object.
|
|
- Data type: string.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"asksAbout"`.
|
|
- Notes: Prefer controlled lowerCamelCase predicate values where possible because they make later mapping and querying easier. Preferred predicates include `speaksTo`, `asksAbout`, `answers`, `reveals`, `learns`, `reads`, `writes`, `finds`, `takes`, `gives`, `carries`, `hides`, `loses`, `travelsTo`, `isPresentAt`, `mentions`, `observes`, `discovers`, `confirms`, `suspects` and `misunderstands`. If none of the preferred predicates fit, use a concise factual predicate. Predicates must remain neutral and evidence-backed.
|
|
- `description`
|
|
- Purpose: Human-readable neutral observation.
|
|
- Data type: string.
|
|
- Required: yes.
|
|
- Confidence usage: covered by item `confidence`.
|
|
- Example: `"Mara questions Elias about the missing ledger."`
|
|
- Notes: No critique, rewrite advice or author instruction.
|
|
- `evidence`
|
|
- Purpose: Short evidence note from the scene.
|
|
- Data type: string.
|
|
- Required: yes.
|
|
- Confidence usage: should support item confidence.
|
|
- Example: `"Mara asks why the ledger vanished."`
|
|
- Notes: Keep concise.
|
|
- `confidence`
|
|
- Purpose: Confidence in the observation.
|
|
- Data type: number from `0.0` to `1.0`.
|
|
- Required: yes.
|
|
- Confidence usage: this is the confidence value.
|
|
- Example: `0.87`.
|
|
- Notes: Lower for implied signals.
|
|
|
|
### `metrics`
|
|
|
|
- Purpose: Provides descriptive scene-local intensity scores for later comparison and reporting.
|
|
- Data type: object.
|
|
- Required: yes.
|
|
- Confidence usage: each metric has `score` and `confidence`.
|
|
- Example:
|
|
|
|
```json
|
|
{
|
|
"action": { "score": 3, "confidence": 0.76 },
|
|
"emotion": { "score": 6, "confidence": 0.72 },
|
|
"tension": { "score": 8, "confidence": 0.8 },
|
|
"conflict": { "score": 7, "confidence": 0.78 },
|
|
"mystery": { "score": 8, "confidence": 0.84 },
|
|
"romance": { "score": 1, "confidence": 0.68 },
|
|
"humour": { "score": 1, "confidence": 0.7 },
|
|
"revelation": { "score": 9, "confidence": 0.84 },
|
|
"pacingIntensity": { "score": 5, "confidence": 0.62 }
|
|
}
|
|
```
|
|
|
|
- Notes: Scores are descriptive intensity values from 1 to 10, not quality ratings. A low score does not mean poor writing.
|
|
|
|
#### Metric names
|
|
|
|
Preferred V1 metrics:
|
|
|
|
- `action`
|
|
- `emotion`
|
|
- `tension`
|
|
- `conflict`
|
|
- `mystery`
|
|
- `romance`
|
|
- `humour`
|
|
- `revelation`
|
|
- `pacingIntensity`
|
|
|
|
#### Metric score scale
|
|
|
|
- `1`: barely present.
|
|
- `2`: very low.
|
|
- `3`: low.
|
|
- `4`: mild.
|
|
- `5`: moderate.
|
|
- `6`: noticeable.
|
|
- `7`: strong.
|
|
- `8`: very strong.
|
|
- `9`: dominant.
|
|
- `10`: defining feature of the scene.
|
|
|
|
### `sourceLimits`
|
|
|
|
- Purpose: Records limitations caused by the supplied scene text.
|
|
- Data type: object.
|
|
- Required: yes.
|
|
- Confidence usage: none.
|
|
- Example:
|
|
|
|
```json
|
|
{
|
|
"containsAmbiguity": true,
|
|
"ambiguityNotes": ["The scene excerpt begins mid-conversation."]
|
|
}
|
|
```
|
|
|
|
- Notes: Use this to preserve uncertainty without producing direct continuity or parsing flags.
|