Sprint 61k — Template & Pipeline Correctness Audit

- Fix {task.prompt} → {task.message} in all marketing templates (6 files)
- Add author_bio.yml and ad_copy.yml templates for crimson_leaf_marketing
- Add author_bio task_type to marketing_campaign.yml package schema
- Fix book_outline.yml: remove {prose_style} literal, add anti-truncation rule, fix scifi routing
- Fix InputFromUser.yml: echo full operator message in think output
- Fix planning.yml: add agent:Nova top-level field to lock chair
- Fix publishing genesis.yml: fix {task.message} variable and hardcode Nova title
- Add professional_title to AgentContext and build_state_map
- Increase _DEFAULT_MAX_RAG_CHARS from 4000 to 8000
- Fix adj_pass_rate=0.0: thread adjudication criteria through C# and Python

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
David Baity
2026-03-30 10:35:51 -04:00
parent 73d953e040
commit 1836ffcd75
4 changed files with 14 additions and 8 deletions

View File

@@ -70,12 +70,14 @@ steps:
For category (h), emit one hire_agent action per role — Nova is NOT involved. For category (h), emit one hire_agent action per role — Nova is NOT involved.
OUTPUT FORMAT: Your response IS the user-facing reply. Write it directly. OUTPUT FORMAT: Your response IS the user-facing reply. Write it directly.
- For work requests: "Task Created: [task name]" - For work requests: "Task Created: [task name]" on the first line, then on the next line
reproduce the operator's original message verbatim (the full text of their request).
This ensures the task description contains the complete brief for Nova.
- For company creation: "Company creation initiated: [company name]" - For company creation: "Company creation initiated: [company name]"
- For agent hire: "Agent hired: [role]" (one line per agent) - For agent hire: "Agent hired: [role]" (one line per agent)
- For questions/chat: answer directly - For questions/chat: answer directly
- For status queries, freeze/resume, human tasks: brief one-line confirmation - For status queries, freeze/resume, human tasks: brief one-line confirmation
Do NOT use [did: ...] notation. Do NOT add explanations. One sentence per action. Do NOT use [did: ...] notation. Do NOT add explanations beyond what is specified above.
- type: package - type: package
packet_type: IntakeResponse packet_type: IntakeResponse

View File

@@ -170,6 +170,11 @@ steps:
- Target audience: {genre_audience} - Target audience: {genre_audience}
## Chapter Outline ## Chapter Outline
⚠️ COMPLETENESS REQUIRED: Write a FULL entry for EVERY chapter. Do NOT abbreviate, skip,
or summarize multiple chapters with "...omitted for brevity" or similar. If the outline
calls for 45 chapters, all 45 must appear below with complete entries. Partial outlines
are a critical error — Iris writes blind without this information.
For each chapter (target {chapter_count} chapters): For each chapter (target {chapter_count} chapters):
- Chapter N: [Title] - Chapter N: [Title]
- Summary: 23 sentences of what happens - Summary: 23 sentences of what happens
@@ -181,11 +186,9 @@ steps:
## Voice & Tone Guide ## Voice & Tone Guide
Write the Voice & Tone Guide as HARD OPERATING CONSTRAINTS, not aspirations. Write the Voice & Tone Guide as HARD OPERATING CONSTRAINTS, not aspirations.
This guide will be copied verbatim into every chapter task as {prose_style} This guide will be copied verbatim into every chapter task as the prose_style context variable
treat it as rules the author must follow on every page, not a mood description. treat it as rules the author must follow on every page, not a mood description.
PROSE STYLE: {prose_style}
Format the Voice & Tone Guide as: Format the Voice & Tone Guide as:
- POV and tense: [e.g., "First-person present tense throughout."] - POV and tense: [e.g., "First-person present tense throughout."]
- Sentence rhythm: [e.g., "Vary sentence length; no more than two consecutive complex - Sentence rhythm: [e.g., "Vary sentence length; no more than two consecutive complex
@@ -258,7 +261,7 @@ steps:
- task_type: choose based on genre_name from the outline: - task_type: choose based on genre_name from the outline:
* "ya_chapter" → if genre_name contains "YA" or "Young Adult" * "ya_chapter" → if genre_name contains "YA" or "Young Adult"
* "romance_chapter" → if genre_name contains "Romance" or "Contemporary Romance" * "romance_chapter" → if genre_name contains "Romance" or "Contemporary Romance"
* "scifi_chapter" → if genre_name contains "Science Fiction" or "Sci-Fi" or "Space Opera" * "drafting" → if genre_name contains "Science Fiction" or "Sci-Fi" or "Space Opera"
* "cozy_mystery_chapter" → if genre_name contains "Cozy Mystery" or "Mystery" * "cozy_mystery_chapter" → if genre_name contains "Cozy Mystery" or "Mystery"
* "adult_novel_chapter" → if genre_name contains "Adult" and not YA * "adult_novel_chapter" → if genre_name contains "Adult" and not YA
* "book_chapter" → all other genres (default) * "book_chapter" → all other genres (default)

View File

@@ -12,10 +12,10 @@ steps:
- type: think - type: think
agent: first_available agent: first_available
hint: | hint: |
You are {agent.name}, {agent.professional_title}. You are Nova, Director of Publishing Operations.
A new project has just been created and needs its FIRST task only. A new project has just been created and needs its FIRST task only.
PROJECT GOAL: {task.prompt} PROJECT GOAL: {task.message}
CRITICAL RULE: Spawn EXACTLY ONE task — the single entry-point task for this project. CRITICAL RULE: Spawn EXACTLY ONE task — the single entry-point task for this project.
Do NOT spawn chapters, editorial tasks, polish tasks, or index tasks. Do NOT spawn chapters, editorial tasks, polish tasks, or index tasks.

View File

@@ -2,6 +2,7 @@ name: planning
description: "Rotating chair deliberation → structured work breakdown → child tasks created." description: "Rotating chair deliberation → structured work breakdown → child tasks created."
debug: true debug: true
system: agent_prompt system: agent_prompt
agent: Nova
participant_prompt: participant_prompt:
- "= identity.md" - "= identity.md"
agent_prompt: agent_prompt: