Skip to content

feat: Le Guin prose-craft doctrine into prose generation (CWQE Phase 10) (#2175)#2246

Merged
atomantic merged 2 commits into
mainfrom
claim/issue-2175
Jul 7, 2026
Merged

feat: Le Guin prose-craft doctrine into prose generation (CWQE Phase 10) (#2175)#2246
atomantic merged 2 commits into
mainfrom
claim/issue-2175

Conversation

@atomantic

Copy link
Copy Markdown
Owner

Closes #2175

Summary

Completes the final pillar of CWQE Phase 10 (generation-side craft doctrine) — the Le Guin style doctrine — after the worldbuilding-doctrine slice (#2219) and the character-framework + structure-rules slice (#2245). Per the design record (docs/plans/2026-07-04-creative-writing-quality-engine.md): "style is not ornament — it IS the fantasy; prefer strong nouns/verbs over adjective-noun clichés."

This is the curriculum, not the editor: craft doctrine injected into the prose prompt before the writer model drafts, the prose sibling of the Sanderson's-Laws worldbuilding doctrine already baked into buildExpansionPrompt.

What changed

  • server/lib/styleGuide.js — new PROSE_CRAFT_DOCTRINE const: short, imperative, always-on prose-craft rules (style is the reader's experience of the world; strong specific nouns/verbs over adjective/adverb padding; cut dead clichés like "ancient wisdom"/"piercing gaze"/"heavy silence"; concrete sensory detail over summarized emotion; deliberate rhythm/sentence-length variation). composeStyleNotes(series, { proseCraft }) gains an opt-in flag that appends it.
  • server/services/pipeline/textStages.js — the prose-writing stages (prose, comicScript, teleplay — the existing ROSTER_BACKED_STAGES set) pass proseCraft: true; the structural idea beat-sheet stage does not. The shared arc-planner and episode-seed context builders leave it off (default false), since sentence-level craft is noise when outlining beats.
  • No migration — it folds into the already-rendered {{series.styleNotes}} via composeStyleNotes, so there's no new stage-prompt template variable (same pattern as the structured style guide and the CWQE Phase 14: series voice discovery + exemplar/anti-exemplar passages injected into prose prompts #2179 voice exemplars).
  • TestsstyleGuide.test.js gains a composeStyleNotes suite covering: empty input, guide-leads/notes-trail ordering, doctrine absent by default, doctrine appended when proseCraft is set, and craft-only output.

Test plan

atomantic added 2 commits July 6, 2026 19:03
Completes CWQE Phase 10 (#2175) — the style-doctrine pillar after the
worldbuilding (#2219) and character/structure (#2245) slices.

Adds PROSE_CRAFT_DOCTRINE to styleGuide.js: always-on generation-side
craft guidance (strong nouns/verbs over adjective-noun cliches; style is
not ornament; concrete sensory detail; varied rhythm). composeStyleNotes
gains an opt-in { proseCraft } flag; textStages wires it only for the
prose-writing stages (prose/comicScript/teleplay), not the structural
idea/arc/episode-seed passes. Folds into the existing styleNotes render,
so no new template variable and no migration.
… style guide + doctrine (#2175)

codex review finding: pipeline-pov-rewrite is a prose-generating stage
that renders {{series.styleNotes}} but passed raw series.styleNotes,
bypassing composeStyleNotes — so the structured style guide, #2179 voice
exemplars, AND the new #2175 prose-craft doctrine never reached
alternate-POV rewrites. Route it through composeStyleNotes({ proseCraft:
true }), matching the prose/comicScript/teleplay stages. The token-budget
overheadText already references seriesVars.styleNotes, so it now accounts
for the composed block automatically.
@atomantic atomantic merged commit 01e535c into main Jul 7, 2026
3 of 4 checks passed
@atomantic atomantic deleted the claim/issue-2175 branch July 7, 2026 02:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CWQE Phase 10: generation-side craft doctrine — worldbuilding laws, character framework (Wound/Lie/Want/Need + sliders), try-fail & beat rules

1 participant