Sprint 56: Upstream draft control and editorial boundary refactor

- book_chapter: Remove PASS 2+3 (internal polish cycle); replace with narrow
  SELF-CHECK step (structural validation only — names/POV/hook/format/word-floor).
  Add anti-overpolish drafting discipline rules to PASS 1.
  Add genre-aware guide-use note (apply only the guide matching {genre_name}).
  Update adjudication prose_quality description to match draft-quality standard.

- chapter_polish: Convert from broad 'Rewrite the chapter' pass to bounded
  editorial control pass. Explicitly forbids expansion, sensory addition,
  global voice upgrades, new content. Instructs verbatim preservation of
  unaffected paragraphs. Adjudication rewritten around correction fidelity
  rather than 'more polished is better'. Threshold lowered from 90 to 80.

- chapter_review: Add explicit output categories — STRENGTHS TO PRESERVE,
  MUST-FIX CONTINUITY, MUST-FIX CLARITY, OPTIONAL, FORBIDDEN, VERDICT.
  Remove 'REWRITE' verdict option (roundtable resolves that). Remove all three
  writing-craft guides (editorial tasks do not need genre writing guidance).

- chapter_roundtable: Update CONSENSUS REACHED block to MUST APPLY / OPTIONAL /
  PRESERVE / VERDICT categories. Require disagreements to be resolved before
  calling consensus. Remove REWRITE verdict option. Remove all writing-craft
  guides. Remove 'skills' from sections. Add package hint to populate key_changes
  from the full structured consensus. Update adjudication to score structured output.

- book_outline: Strengthen Voice & Tone Guide as hard operating constraints
  (not aspirations); include anti-overpolish rules, rhythm rules, and voice
  don'ts. Expand per-chapter outline format to include Opens-at location,
  Character state, and Dominant tension. Enrich chapter task description
  packets with that state data so book_chapter has richer upstream context.

- skills/skills.md: Document writing-vs-editorial guide split established in
  Sprint 56. Update Used-by column. Add boundary rules section.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
David Baity
2026-03-21 16:34:05 -04:00
parent 9ac0fa98b7
commit 87c01864dc
6 changed files with 272 additions and 86 deletions

View File

@@ -8,12 +8,27 @@ permanently inflating RAG storage.
| Path | Purpose | Used by | | Path | Purpose | Used by |
|------|---------|---------| |------|---------|---------|
| `guides/YAFictionGuide.md` | YA genre conventions, voice rules, tropes, audience sensitivities | `book_outline`, `book_chapter`, `short_story` when genre is YA | | `guides/YAFictionGuide.md` | YA genre conventions, voice rules, tropes, audience sensitivities | `book_chapter` (when genre is YA — apply only this guide) |
| `guides/RomanceFictionGuide.md` | Romance beats, HEA/HFN requirement, sub-genre map, tension escalation | `book_outline`, `book_chapter`, `short_story` when genre is romance | | `guides/RomanceFictionGuide.md` | Romance beats, HEA/HFN requirement, sub-genre map, tension escalation | `book_chapter` (when genre is Romance — apply only this guide) |
| `guides/SciFiFictionGuide.md` | World-building discipline, tech credibility, sub-genre map, pacing | `book_outline`, `book_chapter`, `short_story` when genre is sci-fi | | `guides/SciFiFictionGuide.md` | World-building discipline, tech credibility, sub-genre map, pacing | `book_chapter` (when genre is Sci-Fi — apply only this guide) |
| `guides/BlogWritingGuide.md` | Blog structure, hook styles, CTA patterns, voice rules | `blog_write`, `blog_research` | | `guides/BlogWritingGuide.md` | Blog structure, hook styles, CTA patterns, voice rules | `blog_write`, `blog_research` |
| `guides/RecipeWritingGuide.md` | Recipe format, headnote style, ingredient conventions, method voice | `recipe_develop`, `recipe_collection_plan` | | `guides/RecipeWritingGuide.md` | Recipe format, headnote style, ingredient conventions, method voice | `recipe_develop`, `recipe_collection_plan` |
## Writing vs Editorial Guide Rules (Sprint 56)
**Writing templates** (`book_outline`, `book_chapter`, `short_story`) receive genre-appropriate
craft guides. All three fiction guides are currently injected into `book_chapter` so it can
serve any fiction genre — the template instructs the agent to apply ONLY the guide matching
`{genre_name}` and ignore the others.
**Editorial templates** (`chapter_review`, `chapter_roundtable`, `chapter_polish`) do NOT
receive writing-craft guides. Writing-style guidance injected into editorial tasks creates
conflicting signals and can trigger unintended prose rewriting. Editorial agents rely on
their own domain expertise and the chapter text itself.
This boundary was established in Sprint 56 to prevent conflicting craft signals and reduce
downstream voice drift.
## How Skills Work ## How Skills Work
1. A template declares `skills: ["guides/YAFictionGuide.md"]` at the top level. 1. A template declares `skills: ["guides/YAFictionGuide.md"]` at the top level.
@@ -26,3 +41,5 @@ permanently inflating RAG storage.
1. Create the file in `guides/` 1. Create the file in `guides/`
2. Add an entry to this table 2. Add an entry to this table
3. Reference the path in the relevant template's `skills:` array 3. Reference the path in the relevant template's `skills:` array
4. Follow the writing-vs-editorial boundary rule above: writing guides belong only in
writing templates; editorial templates should not inject writing-craft guides

View File

@@ -1,5 +1,5 @@
name: book_chapter name: book_chapter
description: "Write one chapter — continuity check, draft, deepen, then spawn editorial review." description: "Write one chapter — continuity check, draft, self-check, then spawn editorial review."
debug: true debug: true
system: agent_prompt system: agent_prompt
@@ -15,6 +15,11 @@ skills:
- guides/RomanceFictionGuide.md - guides/RomanceFictionGuide.md
- guides/SciFiFictionGuide.md - guides/SciFiFictionGuide.md
# Genre-aware guide use: All three genre guides are injected so this template
# can serve any fiction genre. Apply ONLY the guide that matches {genre_name}.
# Ignore guides for other genres — conflicting craft signals from non-matching
# genres will degrade the chapter. The active genre is always {genre_name}.
agent_prompt: agent_prompt:
- "= identity.md" - "= identity.md"
- "agent.rag.json" - "agent.rag.json"
@@ -32,12 +37,15 @@ sections:
steps: steps:
- type: think - type: think
hint: | hint: |
PASS 0 — BIBLE & CONTINUITY PLAN (produce a PLAN only — do NOT write chapter prose yet) PASS 0 — BIBLE, CONTINUITY, AND DRAFT PROMPT
GENRE: {genre_name} | AUDIENCE: {genre_audience} GENRE: {genre_name} | AUDIENCE: {genre_audience}
PROSE STYLE GUIDE: {prose_style} PROSE STYLE GUIDE: {prose_style}
TARGET CHAPTER LENGTH: ~{chapter_target_words} words TARGET CHAPTER LENGTH: ~{chapter_target_words} words
⚠️ SKILLS & GUIDES NOTE: You have multiple genre guides available.
Apply ONLY the guide that matches {genre_name}. Ignore guides for other genres.
CONTINUITY GUARDRAILS: CONTINUITY GUARDRAILS:
- Use ONLY the outline / character bible and the immediately previous chapter for continuity. - Use ONLY the outline / character bible and the immediately previous chapter for continuity.
- Ignore future chapters, editorial reviews, roundtables, polish drafts, and any non-chapter artifacts. - Ignore future chapters, editorial reviews, roundtables, polish drafts, and any non-chapter artifacts.
@@ -67,8 +75,8 @@ steps:
Label them: "PREVIOUS CHAPTER ENDED WITH: ..." Label them: "PREVIOUS CHAPTER ENDED WITH: ..."
Your new chapter MUST pick up from this exact moment. Your new chapter MUST pick up from this exact moment.
STEP 4 — CHAPTER PLAN: STEP 4 — BUILD THE DRAFT PROMPT:
State your plan — do NOT write prose yet: Write the exact drafting prompt for the next pass. That prompt must include:
- CHAPTER: Exact chapter number and title (from the task message) - CHAPTER: Exact chapter number and title (from the task message)
- POV CHARACTER: Whose perspective are we in? - POV CHARACTER: Whose perspective are we in?
- FIRST LINE: The exact opening sentence, continuing from the previous ending - FIRST LINE: The exact opening sentence, continuing from the previous ending
@@ -76,15 +84,18 @@ steps:
- CHAPTER GOAL: What plot event MUST happen here? - CHAPTER GOAL: What plot event MUST happen here?
- KEY BEATS: 35 numbered scene beats that will form the chapter - KEY BEATS: 35 numbered scene beats that will form the chapter
- CLOSING HOOK: Exact last image or line that makes readers continue - CLOSING HOOK: Exact last image or line that makes readers continue
- Reminders about continuity, prose style, and target length
Stop here. Output ONLY the plan above. The full chapter will be written next. Stop here. Output ONLY the draft prompt. Do NOT write chapter prose yet.
- type: think - type: think
model: power model: power
hint: | hint: |
PASS 1 — WRITE THE FULL CHAPTER PASS 1 — WRITE THE DRAFT
Using the plan from your previous step, write the complete chapter now. Use the draft prompt below as your exact writing brief:
{steps[0].text}
Requirements: Requirements:
- Start with the FIRST LINE you planned — make it continue naturally from the previous chapter - Start with the FIRST LINE you planned — make it continue naturally from the previous chapter
@@ -100,21 +111,73 @@ steps:
writing — add interiority, sensory detail, extended dialogue beats, and scene transitions writing — add interiority, sensory detail, extended dialogue beats, and scene transitions
until you hit the target. Short chapters will be REJECTED in adjudication. until you hit the target. Short chapters will be REJECTED in adjudication.
Output ONLY the polished chapter text. DRAFTING DISCIPLINE — apply these on every page:
- {prose_style} is a hard constraint, not decoration
- Not every paragraph needs a memorable or quotable line — use functional connective prose
- Let observation precede interpretation: show the moment before naming what it means
- Avoid clustering aphorisms or thesis-style sentences back to back
- Prefer scene motion over thesis delivery — action and dialogue carry meaning
- Write ONE complete draft now. Do NOT self-polish. Reviewers will give feedback downstream.
Output ONLY the draft chapter text.
Start directly with the chapter title (e.g., "Chapter N: [Title]") and opening line. Start directly with the chapter title (e.g., "Chapter N: [Title]") and opening line.
No commentary, no plan headers, no "Pass 1" label. No commentary, no plan headers, no "Pass 1" label.
- type: think
hint: |
SELF-CHECK — STRUCTURAL VALIDATION ONLY
You have just written a chapter draft. Your job here is narrow: check the draft against
the structural checklist below, apply ONLY the corrections that fall within scope, and
output the final chapter.
DRAFT TO CHECK:
{steps[1].text}
CHECKLIST — check each item, note any issue found:
1. BEAT & HOOK: Does the chapter reach its intended emotional beat and closing hook
from the PASS 0 draft prompt? Flag if the chapter ends without the planned hook.
2. NAMES & POV: Are all character names and the POV consistent with the bible/outline?
Flag any name that doesn't match the project canon.
3. CONTINUITY TERMS: Do world rules, place names, and timeline references match
project state? Flag any factual break.
4. FORMATTING: Are there obvious section-break artifacts, duplicate headers,
or missing chapter title? Flag and fix.
5. WORD FLOOR: Is the draft within 10% of {chapter_target_words}? Flag only if
critically short (more than 20% under target) — do not expand for style.
ALLOWED CORRECTIONS:
- Fix a wrong character name to match the canon name
- Fix a POV slip (e.g., the chapter is 1st-person but one paragraph shifted to 3rd)
- Fix a missing or duplicated chapter title/header
- If the chapter is missing its closing hook entirely, add it as a final paragraph
that matches the hook specified in the draft prompt — no new invention beyond the
planned hook
NOT ALLOWED — do not make any of these changes:
- Improve any sentence for prose quality, rhythm, or lyricism
- Deepen emotional beats or add interiority
- Expand any description or add sensory detail
- Reorder scenes or restructure the chapter
- Add new metaphors, aphorisms, or quotable lines
- Normalize or upgrade the authorial voice
Output the FINAL CHAPTER (corrected where structurally required, verbatim everywhere else).
Start directly with the chapter title and first line.
No preamble, no validation notes, no commentary — ONLY the chapter text.
- type: document - type: document
filename: "chapter-{chapter_ref}" filename: "chapter-{chapter_ref}"
- type: package - type: package
hint: | hint: |
The chapter has been written and committed. The draft chapter has been written, self-checked, and committed.
CRITICAL — include the `chapter_text` field: CRITICAL — include the `chapter_text` field:
Copy the COMPLETE chapter text you just wrote into the `chapter_text` field. Copy the COMPLETE chapter text from the self-check output (step 2 — the final chapter draft)
into the `chapter_text` field.
Reviewers have NO other way to access the chapter content. Reviewers have NO other way to access the chapter content.
Do NOT summarize or truncate it — include every word of the final chapter. Do NOT summarize or truncate it — include every word of the chapter.
Now spawn the three independent editorial reviewers Now spawn the three independent editorial reviewers
and the roundtable debate. Use the exact task_names shown — the roundtable depends_on all three. and the roundtable debate. Use the exact task_names shown — the roundtable depends_on all three.
@@ -166,6 +229,7 @@ steps:
genre_name: "{genre_name}" genre_name: "{genre_name}"
genre_audience: "{genre_audience}" genre_audience: "{genre_audience}"
chapter_ref: "{chapter_ref}" chapter_ref: "{chapter_ref}"
chapter_target_words: "{chapter_target_words}"
depends_on: depends_on:
- "Review (Devon): {chapter_ref}" - "Review (Devon): {chapter_ref}"
- "Review (Lane): {chapter_ref}" - "Review (Lane): {chapter_ref}"
@@ -190,7 +254,7 @@ adjudication:
description: "Characters are distinct and consistent" description: "Characters are distinct and consistent"
prose_quality: prose_quality:
weight: 15 weight: 15
description: "Writing is polished and engaging" description: "Writing is clear and readable; voice is consistent with {prose_style}"
continuity: continuity:
weight: 10 weight: 10
description: "Consistent with prior chapters and canon" description: "Consistent with prior chapters and canon"

View File

@@ -2,6 +2,7 @@ name: book_outline
description: "Boardroom debate to lock the book concept, produce a character bible (for fiction) + full chapter outline, then spawn chapter writing tasks." description: "Boardroom debate to lock the book concept, produce a character bible (for fiction) + full chapter outline, then spawn chapter writing tasks."
debug: true debug: true
system: agent_prompt system: agent_prompt
step_pause_mode: true
context_builders: context_builders:
- markov_names - markov_names
@@ -134,12 +135,29 @@ steps:
- Chapter N: [Title] - Chapter N: [Title]
- Summary: 23 sentences of what happens - Summary: 23 sentences of what happens
- Emotional beat: what the reader feels - Emotional beat: what the reader feels
- Hook / cliffhanger: how this chapter ends - Hook / cliffhanger: the exact last image or line that makes readers continue
- Opens at: [location / setting at chapter start]
- Character state: [protagonist's emotional and physical state as the chapter opens]
- Dominant tension: [the active conflict or pressure driving this chapter]
## Voice & Tone Guide ## Voice & Tone Guide
Three sentences describing the narrative voice per the style guide below. Write the Voice & Tone Guide as HARD OPERATING CONSTRAINTS, not aspirations.
This guide will be copied verbatim into every chapter task as {prose_style} —
treat it as rules the author must follow on every page, not a mood description.
PROSE STYLE: {prose_style} PROSE STYLE: {prose_style}
One example opening sentence.
Format the Voice & Tone Guide as:
- POV and tense: [e.g., "First-person present tense throughout."]
- Sentence rhythm: [e.g., "Vary sentence length; no more than two consecutive complex
sentences. Short sentences for impact. Fragments allowed for interiority."]
- Anti-overpolish rules: [e.g., "Not every paragraph needs a memorable line. Use
functional connective prose. Let observation precede interpretation — show the moment
before naming what it means. Avoid clustering aphorisms. Prefer scene motion over
thesis delivery."]
- Voice don'ts: [e.g., "No head-hopping. No passive construction during action beats.
No normalizing the protagonist's distinctive voice."]
- One example opening sentence that demonstrates all of the above.
## Publishing Notes ## Publishing Notes
Why this book fits the genre and target audience. Why this book fits the genre and target audience.
@@ -147,6 +165,27 @@ steps:
- type: document - type: document
filename: "{{task_name_slug}}" filename: "{{task_name_slug}}"
- type: think
agent: first_available
hint: |
Extract a CLEAN CHAPTER LIST from the outline document above.
Output ONLY the chapter list in this exact format — no other text:
Chapter [Title]
Summary: [2-3 sentence summary]
POV: [character name or "narrator"]
Chapter [Title]
Summary: [2-3 sentence summary]
POV: [character name or "narrator"]
Rules:
- One "Chapter [Title]" line per chapter, in order
- Indented metadata lines underneath each chapter (Summary, POV)
- Do NOT include chapter numbers — just the title
- Do NOT include any markdown headers, bullet points, or extra formatting
- This output will be parsed by StoryForge's outline sync engine
- type: package - type: package
packet_type: IntakeResponse packet_type: IntakeResponse
hint: | hint: |
@@ -173,8 +212,14 @@ steps:
- task_name format: "Write Chapter N: [Chapter Title]" (N is a plain number, 1, 2, 3...) - task_name format: "Write Chapter N: [Chapter Title]" (N is a plain number, 1, 2, 3...)
- agent_name: always "Iris" - agent_name: always "Iris"
- task_type: always "book_chapter" - task_type: always "book_chapter"
- description: Include the chapter summary, POV character, emotional beat, and cliffhanger from the outline. - description: >
Start with: "You are writing Chapter N of [Book Title]. [chapter summary]. POV: [character name]." Include the chapter summary, POV character, emotional beat, cliffhanger, character state,
dominant tension, and opening location from the chapter outline.
Start with: "You are writing Chapter N of [Book Title]. [chapter summary].
POV: [character name]. Opens at: [location]. [Character name] enters this chapter
[character state]. Dominant tension: [tension]. Closes with: [cliffhanger hook]."
Also include the Voice & Tone Guide from the outline as the prose_style value —
copy it exactly. This is a hard constraint for every sentence of the chapter.
- depends_on: the exact task_name of the PREVIOUS chapter (empty string for Chapter 1) - depends_on: the exact task_name of the PREVIOUS chapter (empty string for Chapter 1)
The depends_on chain creates sequential writing — each chapter waits for the previous to be committed. The depends_on chain creates sequential writing — each chapter waits for the previous to be committed.

View File

@@ -1,15 +1,12 @@
name: chapter_polish name: chapter_polish
description: > description: >
Iris polishes the chapter using the editorial consensus from the review roundtable. Iris applies the editorial consensus changes to the chapter. This is a bounded
correction pass, not a rewrite. Only the listed changes are applied; everything
else is preserved verbatim.
debug: true debug: true
model: power model: power
system: agent_prompt system: agent_prompt
skills:
- guides/YAFictionGuide.md
- guides/RomanceFictionGuide.md
- guides/SciFiFictionGuide.md
agent_prompt: agent_prompt:
- "= identity.md" - "= identity.md"
- "agent.rag.json" - "agent.rag.json"
@@ -18,31 +15,28 @@ sections:
- agent - agent
- project - project
- rag - rag
- skills
- message - message
- instructions - instructions
steps: steps:
- type: think - type: think
hint: | hint: |
You are Iris, a fiction author. You are Iris, a fiction author performing a bounded editorial correction pass.
Genre: {genre_name} | Audience: {genre_audience} Genre: {genre_name} | Audience: {genre_audience}
Chapter: {task.message} Chapter: {task.message}
TARGET LENGTH: {chapter_target_words} words minimum. TARGET LENGTH: {chapter_target_words} words minimum.
⚠️ CRITICAL — LENGTH REQUIREMENT: ⚠️ LENGTH NOTE: Preserve the chapter's existing length. Do NOT expand scenes, add sensory
- The polished chapter MUST be at least {chapter_target_words} words. detail, or deepen emotional beats to reach the word count. If the draft is under target,
- DO NOT shorten the chapter. Expand scenes, deepen emotional beats, and add sensory note it in your output — but do NOT pad it. The word count issue belongs in the next
detail as needed to reach the word count target. adjudication cycle, not in this pass.
- If the original chapter is under target, the polish is your opportunity to bring it up.
- Under-length chapters will be REJECTED by the editorial board regardless of prose quality.
You have received a full editorial review from three editors. You have received a structured editorial consensus from the roundtable.
EDITORIAL CONSENSUS: EDITORIAL CONSENSUS:
{consensus_critique} {consensus_critique}
KEY CHANGES REQUESTED: CHANGES TO APPLY:
{key_changes} {key_changes}
VERDICT: {chapter_verdict} VERDICT: {chapter_verdict}
@@ -52,12 +46,34 @@ steps:
{chapter_text} {chapter_text}
--- ---
Rewrite the chapter addressing all CONCERNS and KEY CHANGES from the editorial team. EDITORIAL CONTROL PASS — YOUR OPERATING RULES:
Preserve everything the editors marked as STRENGTHS.
Do not add new plot elements not already present. APPLY ONLY:
Match the genre tone and audience level throughout. - The specific changes listed under MUST APPLY in the consensus above
Expand scenes with sensory detail, interiority, and dialogue to reach {chapter_target_words} words. - Continuity corrections (wrong name, POV break, timeline error)
Output ONLY the fully rewritten chapter text. - Clarity fixes for passages that are genuinely confusing
- Repetition or redundancy removal where explicitly flagged
PRESERVE VERBATIM:
- All paragraphs not touched by an explicit MUST APPLY item
- The chapter's structure, scene order, and scene length
- The authorial and character voice — do NOT normalize it
- Intentional stylistic choices, even unusual ones
- Passages the roundtable marked as STRENGTHS TO PRESERVE
EXPLICITLY FORBIDDEN:
- Do not improve any sentence for rhythm, lyricism, or polish unless a specific MUST APPLY
item requires it
- Do not add new plot elements, new characters, or new scenes
- Do not expand any description or add sensory detail globally
- Do not deepen emotional beats beyond what the text already carries
- Do not add new metaphors, aphorisms, or quotable lines
- Do not reorder scenes or restructure the chapter
- When both deletion and expansion would solve the same problem, prefer deletion
Output ONLY the corrected chapter text.
Start directly with the chapter title and first line.
No commentary, no change log, no editorial notes — ONLY the chapter.
- type: document - type: document
filename: "{{task_name_slug}}-polished" filename: "{{task_name_slug}}-polished"
@@ -67,21 +83,21 @@ steps:
adjudication: adjudication:
enabled: true enabled: true
pass_threshold: 90 pass_threshold: 80
deliverable_type: consumer deliverable_type: consumer
criteria: criteria:
word_count: changes_applied:
weight: 35
description: "All MUST APPLY items from the consensus are addressed; no required changes were skipped"
preservation:
weight: 30 weight: 30
description: "Chapter meets the {chapter_target_words}-word minimum; longer is better, shorter fails" description: "Unaffected passages are preserved verbatim; voice and structure are intact"
prose_quality: word_count:
weight: 25
description: "Language is refined, no awkward phrasing"
consistency:
weight: 20 weight: 20
description: "Style and tone uniform throughout" description: "Chapter meets the {chapter_target_words}-word minimum without artificial padding"
engagement: clarity:
weight: 20 weight: 10
description: "Text is compelling and polished" description: "Corrected passages are clear and unambiguous"
formatting: formatting:
weight: 5 weight: 5
description: "Proper formatting, no artifacts" description: "Proper formatting, no artifacts"

View File

@@ -1,23 +1,17 @@
name: chapter_review name: chapter_review
description: > description: >
Independent chapter review. Agent reads the chapter and produces a structured Independent chapter review. Agent reads the chapter and produces a structured
critique in their editorial domain. critique in their editorial domain with explicit must-fix vs optional categorization.
debug: true debug: true
model: power model: power
system: agent_prompt system: agent_prompt
skills:
- guides/YAFictionGuide.md
- guides/RomanceFictionGuide.md
- guides/SciFiFictionGuide.md
agent_prompt: agent_prompt:
- system.md - system.md
sections: sections:
- project - project
- rag - rag
- skills
- message - message
- instructions - instructions
@@ -36,10 +30,40 @@ steps:
Write a detailed editorial review from your perspective. Write a detailed editorial review from your perspective.
Be specific — cite line numbers or quote passages where relevant. Be specific — cite line numbers or quote passages where relevant.
Structure your review as: Structure your review using EXACTLY these five labeled sections:
1. STRENGTHS (what is working)
2. CONCERNS (what needs attention, in priority order) 1. STRENGTHS TO PRESERVE
3. VERDICT (pass / revise / rewrite — and why) List elements that are working well and must survive the editorial process unchanged.
Be specific: quote or paraphrase the passage. Vague praise ("the writing is good")
is not useful here.
2. MUST-FIX — CONTINUITY
List factual errors, POV breaks, timeline inconsistencies, or world-rule violations.
These are non-negotiable — they cannot be left as "optional." For each item, state:
- What the error is
- What the correction should be
3. MUST-FIX — CLARITY
List passages where meaning is genuinely obscured, transitions are dropped, or
threads are left dangling in a way that blocks reader comprehension. For each item:
- Quote or reference the passage
- State the concrete fix
4. OPTIONAL SUGGESTIONS
Craft improvements that would strengthen the chapter but are NOT required for it to
pass. Label each suggestion clearly as optional. Do not inflate this section — only
include suggestions with a clear upside and low risk of voice damage.
5. FORBIDDEN CHANGES / NON-GOALS
List things that might appear to be problems but should NOT be changed — intentional
voice choices, genre conventions, structural decisions that are working. This section
protects the draft from over-editing.
6. VERDICT
One of: PASS / REVISE
Use PASS if only optional improvements remain.
Use REVISE if any MUST-FIX items are present.
Reserve judgment on full rewrites — that decision belongs to the roundtable.
- type: document - type: document
filename: "review-{chapter_ref}-{agent_slug}" filename: "review-{chapter_ref}-{agent_slug}"
@@ -54,10 +78,10 @@ adjudication:
criteria: criteria:
specificity: specificity:
weight: 40 weight: 40
description: "Review cites specific passages, scenes, or structural elements — not vague general commentary" description: "Review cites specific passages, scenes, or structural elements in all sections — not vague general commentary"
actionability: actionability:
weight: 35 weight: 35
description: "Each concern includes a concrete, implementable suggestion for improvement" description: "Each MUST-FIX item includes a concrete, implementable correction; OPTIONAL items are clearly labeled"
coverage: coverage:
weight: 25 weight: 25
description: "Review addresses both strengths and concerns, ending with a clear VERDICT (pass/revise/rewrite)" description: "All six sections are present; STRENGTHS and FORBIDDEN sections are populated, not left empty"

View File

@@ -2,7 +2,8 @@ name: chapter_roundtable
description: > description: >
Editorial roundtable — available editors debate the chapter in 23 structured rounds. Editorial roundtable — available editors debate the chapter in 23 structured rounds.
Each round, each participant responds to the others' most recent positions. Each round, each participant responds to the others' most recent positions.
The output is a consensus critique (or documented disagreement) for the polish step. The output is a categorized consensus (MUST APPLY / OPTIONAL / PRESERVE) for the
bounded editorial polish step.
debug: true debug: true
system: agent_prompt system: agent_prompt
@@ -10,11 +11,6 @@ system: agent_prompt
agent_prompt: agent_prompt:
- "= identity.md" - "= identity.md"
skills:
- guides/YAFictionGuide.md
- guides/RomanceFictionGuide.md
- guides/SciFiFictionGuide.md
participant_prompt: participant_prompt:
- "= identity.md" - "= identity.md"
@@ -24,9 +20,9 @@ convergence_signal: "CONSENSUS REACHED"
sections: sections:
- agent - agent
- project - project
- deliverables
- participants - participants
- participants_prompt - participants_prompt
- skills
- message - message
- instructions - instructions
@@ -60,16 +56,32 @@ steps:
- Line-level clarity and prose quality - Line-level clarity and prose quality
- Continuity with prior chapters and world rules - Continuity with prior chapters and world rules
If the group has reached sufficient consensus for the polish step, Before calling CONSENSUS REACHED, ensure the group has resolved any disagreements.
If two editors disagree on whether a change is required (one says MUST, one says optional),
the MUST position prevails unless the other editor can argue it would damage the chapter.
The polish step cannot reconcile unresolved debate — resolve it here.
When the group has reached sufficient consensus for the polish step,
end your response with this EXACT block — no variations, no paraphrasing: end your response with this EXACT block — no variations, no paraphrasing:
CONSENSUS REACHED CONSENSUS REACHED
CRITIQUE: [One concise paragraph summarizing the full editorial consensus] CRITIQUE: [One concise paragraph summarizing the full editorial consensus]
KEY CHANGES: MUST APPLY:
- [Specific change 1] - [Must-fix item 1 — continuity error, clarity issue, or structural problem only]
- [Specific change 2] - [Must-fix item 2 — if applicable]
- [Specific change 3 if needed] OPTIONAL (only if explicitly agreed by majority as low-risk):
VERDICT: [PASS / REVISE / REWRITE] - [Optional craft suggestion — clearly labeled, not required]
PRESERVE:
- [Strength or intentional voice choice that must NOT be changed]
- [Additional preserve item if applicable]
VERDICT: [PASS / REVISE]
VERDICT rules:
- PASS: no MUST APPLY items remain after the debate
- REVISE: one or more MUST APPLY items require correction
- Do NOT use REWRITE as a verdict — the polish step is surgical, not a rebuild.
If the chapter is so broken that only a full rewrite would fix it, flag that in CRITIQUE
and set VERDICT to REVISE so the polish step addresses what it can.
Once any participant outputs CONSENSUS REACHED, the debate is over. Once any participant outputs CONSENSUS REACHED, the debate is over.
Do NOT continue to another round after CONSENSUS REACHED has been written. Do NOT continue to another round after CONSENSUS REACHED has been written.
@@ -79,6 +91,13 @@ steps:
consensus_critique: string consensus_critique: string
chapter_verdict: string chapter_verdict: string
key_changes: string key_changes: string
hint: |
Extract the consensus fields from the CONSENSUS REACHED block above.
- consensus_critique: the full CRITIQUE paragraph
- chapter_verdict: PASS or REVISE (never REWRITE)
- key_changes: the complete MUST APPLY section as a single string, including any
OPTIONAL items that were agreed upon and any PRESERVE notes, clearly labeled.
This field is the full contract for chapter_polish — include all sections.
spawn: spawn:
- task_type: chapter_polish - task_type: chapter_polish
task_name: "Polish: {chapter_ref}" task_name: "Polish: {chapter_ref}"
@@ -91,6 +110,7 @@ steps:
genre_name: "{genre_name}" genre_name: "{genre_name}"
genre_audience: "{genre_audience}" genre_audience: "{genre_audience}"
chapter_ref: "{chapter_ref}" chapter_ref: "{chapter_ref}"
chapter_target_words: "{chapter_target_words}"
adjudication: adjudication:
enabled: true enabled: true
@@ -98,11 +118,11 @@ adjudication:
deliverable_type: coordination deliverable_type: coordination
criteria: criteria:
completeness: completeness:
weight: 40
description: "All viewpoints and concerns addressed"
consensus_clarity:
weight: 35 weight: 35
description: "Clear outcome or decision documented" description: "All viewpoints addressed; disagreements resolved before CONSENSUS REACHED"
structured_output:
weight: 35
description: "CONSENSUS REACHED block contains all required sections: CRITIQUE, MUST APPLY, OPTIONAL, PRESERVE, VERDICT"
actionability: actionability:
weight: 25 weight: 30
description: "Next steps are concrete and assignable" description: "MUST APPLY items are specific and directly implementable; PRESERVE items protect identifiable strengths"