Skip to content

Commit b9fb13e

Browse files
committed
Review uncommitted schema edits
1 parent 03a02cd commit b9fb13e

File tree

9 files changed

+1444
-9
lines changed

9 files changed

+1444
-9
lines changed

HISTORY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
- Added an optional `story.ideation` object for pre-narrative concept development, with required domains `character`, `theme`, `plot`, and `genre` whenever `ideation` is present.
66
- Added lightweight shared ideation node validation requiring `id` and `summary`, with open metadata for beginner and LLM-assisted workflows.
77
- Added optional `narratives[].status` with canonical values `candidate`, `draft`, and `complete` to represent potential or in-progress narratives without splitting data into separate arrays.
8+
- Made `subtext.storypoints[].narrative_function` and `subtext.storybeats[].narrative_function` optional so blank-slate templates can omit narrative function assignment until later authoring.
89
- Preserved backward compatibility for existing stories by keeping `story.ideation` optional and retaining `story.genre` as a concise top-level story label.
910

1011
## Recent Canonical Terminology Updates

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ npm run validate:schema
6565
`examples/example-mapping.json` is a mapping fragment example, not a full schema document.
6666
Use [/VALIDATION.md](/VALIDATION.md) for validating your own NCP files and CI setup.
6767

68+
## Templates
69+
70+
- [Complete Storyform template](/examples/complete-storyform-template.json): blank-slate NCP fixture with canonical Storypoint Appreciations excluding `Event` and `Progression` labels, plus Signpost-only Storybeats (no Progression/Event Storybeats). `narrative_function` is intentionally omitted so teams can fill in only what they need.
71+
6872
## For Adopters (Self-Serve)
6973

7074
If you found this repository and want to validate your own NCP JSON, do this:
@@ -97,6 +101,7 @@ narrative-context-protocol/
97101
│ ├── ideation-beginner.json
98102
│ ├── anora.json
99103
│ ├── the-shawshank-redemption.json
104+
│ ├── complete-storyform-template.json
100105
│ ├── example-mapping.json
101106
│ ├── invalid/
102107
│ │ ├── ideation-missing-domain.json

SPECIFICATION.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ These labels preserve authorial framing voice while retaining compatibility with
246246
## Validation and Narrative Integrity
247247

248248
To ensure integrity and consistency in narratives structured with NCP:
249-
- Storypoints and Storybeats must include canonical terms from schema enums.
249+
- Storypoints and Storybeats must use canonical terms from schema enums when `narrative_function` is provided.
250250
- Linear-focused and Character-framing Appreciations are both canonical-valid labels for holistic framing workflows.
251251
- Regardless of Appreciation framing, NCP normalization reduces these terms to canonical Story Goal / Story Consequence families for interoperability.
252252
- Linear stories should use linear-focused Appreciations; holistic stories may use either linear-focused or Character-framing Appreciations.

VALIDATION.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ npm run validate:schema
3333
This validates:
3434

3535
- `/examples/example-story.json`
36+
- `/examples/ideation-beginner.json`
3637
- `/examples/anora.json`
3738
- `/examples/the-shawshank-redemption.json`
39+
- `/examples/complete-storyform-template.json`
3840
- Expected failures in `/examples/invalid/*.json`
3941

4042
## Validate Your Own NCP File(s)

docs/narrative-context-protocol-schema.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ Quick heuristic:
105105

106106
## Narrative Layers
107107

108+
Each item in `story.narratives[]` is a Dramatica storyform: a single, complete argument structure within the story, expressed through `subtext` and `storytelling` layers.
109+
108110
Each item in `story.narratives[]` contains:
109111

110112
- `id`
@@ -181,9 +183,11 @@ Custom extension fields:
181183

182184
Required keys per item:
183185

184-
- `id`, `appreciation`, `narrative_function`, `illustration`, `summary`, `storytelling`, `perspectives`
186+
- `id`, `appreciation`, `illustration`, `summary`, `storytelling`, `perspectives`
187+
188+
Optional canonical key:
185189

186-
`appreciation` and `narrative_function` are validated against canonical enums in the schema.
190+
- `narrative_function` (validated against canonical enum when provided)
187191

188192
Custom extension fields:
189193

@@ -194,12 +198,13 @@ Custom extension fields:
194198

195199
Required keys per item:
196200

197-
- `id`, `scope`, `sequence`, `narrative_function`, `summary`, `storytelling`, `perspectives`
201+
- `id`, `scope`, `sequence`, `summary`, `storytelling`, `perspectives`
198202

199203
Optional keys:
200204

201205
- `signpost` (1-4)
202206
- `throughline`
207+
- `narrative_function` (validated against canonical enum when provided)
203208
- `custom_narrative_function`, `custom_narrative_function_namespace`
204209

205210
`scope` controls allowed `sequence` range (enforced in schema):

0 commit comments

Comments
 (0)