fix(planning): replace hardcoded generic task types with roster-driven selection

The serialization think step (step 2) had a hardcoded list of generic task types
(research_plus, draft, review, polish, etc.) — these NEVER matched CLP templates.
This is the root cause of auto-hired agents and quick-task fallbacks for all
book/story/article pipelines.

Replaced with:
- Instruction to use ONLY task types from TEAM ROSTER supported_templates
- Explicit sequencing rules for book, article, blog, recipe, short story pipelines
- Book pipeline: book_research first, cascade handles the rest
- Article pipeline: ai_article_research first
- Blog: blog_research per post
- Recipe: recipe_collection_plan
- Short story: short_story

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
David Baity
2026-03-12 01:54:28 -04:00
parent 440b70d3d8
commit c43e931bdb

View File

@@ -50,36 +50,41 @@ steps:
- task_name: short, specific
- description: full detail — enough that the assigned agent can execute without asking
- agents: EXACT name(s) from TEAM ROSTER
- task_type: one of the valid task types listed below
- task_type: MUST be an EXACT template name from the agent's supported_templates in the TEAM ROSTER
- priority: 1 (critical) to 5 (nice-to-have)
Order tasks correctly — blockers before dependents.
No ambiguous assignments. No placeholder names.
Do NOT invent task type names. Each task_type MUST appear verbatim in the TEAM ROSTER.
VALID TASK TYPES (use ONLY these exact strings):
research_plus — deep research on a topic
outline — structure or plan for a piece of content
draft — write a complete draft of content
review — critique and give feedback on content
roundtable — multi-voice deliberation for consensus
polish — final editing and refinement
quick — short single-step response
writing — general writing task
planning — sub-planning session
analysis — data or situation analysis
brainstorm — open ideation session
code — software development task
BOOK/FICTION SEQUENCING RULE:
- For novels and books, the pipeline is: book_research → book_outline → book_chapter (×N) →
chapter_review (×3 per chapter) → chapter_roundtable → chapter_polish → book_editorial → project_index
- Do NOT spawn book_chapter tasks until book_outline has run and provided chapter context.
- Start with ONE book_research task only. The cascade templates handle everything after that.
ARTICLE SERIES SEQUENCING RULE:
- For article series: ai_article_research → ai_article_plan → ai_article_write (×N)
- Start with ONE ai_article_research task only.
BLOG SEQUENCING RULE:
- For a blog post: blog_research → blog_write (one per post)
RECIPE SEQUENCING RULE:
- For a recipe collection: ONE recipe_collection_plan task only.
SHORT STORY RULE:
- For a short story (under 20k words): ONE short_story task only.
CANONICAL SELECTION RULE: If the plan produces multiple competing drafts of the
same artifact (e.g. three mission statement drafts, two roadmap versions), the plan
MUST include a final "Select Canonical: [artifact]" polish task assigned to Iris or
Atlas that explicitly picks one version, merges the best elements, and archives the
rest. Do NOT leave competing versions unresolved.
MUST include a final "Select Canonical: [artifact]" task assigned to the most
relevant specialist that explicitly picks one version, merges the best elements, and
archives the rest. Do NOT leave competing versions unresolved.
DECOMPOSITION RULE: When the deliverable is a batch of similar items (e.g. 10 podcast
scripts, 5 chapters, 8 articles), create ONE individual draft task per item — NOT a
single "write all 10" batch task. A single LLM call cannot produce 10 full-length
scripts. Each episode/chapter/article must be its own task with its own specific
description. The review and polish tasks can still be batched at the end.
scripts, 5 chapters, 8 articles), create ONE individual task per item — NOT a
single "write all 10" batch task. Each item must be its own task with its own specific
description. Review and polish tasks can be batched at the end.
- type: package
packet_type: PlanningResponsePacket