Commit Graph

31 Commits

Author SHA1 Message Date
David Baity
c966146324 chore: restore chapter_polish model to power alias after benchmark
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 13:19:51 -04:00
David Baity
1b462638f0 benchmark: run D — openai/gpt-5.4
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 13:15:02 -04:00
David Baity
4ac96b62d7 benchmark: run C — x-ai/grok-4
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 13:11:01 -04:00
David Baity
c5ec53c8e0 benchmark: run B — claude-sonnet-4.6
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 13:07:47 -04:00
David Baity
4c65db1f90 benchmark: run A — claude-opus-4.6
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 13:03:52 -04:00
David Baity
1e2cb6e875 enforce word count in chapter_polish and book_chapter templates
- chapter_polish: add explicit 'chapter_target_words minimum' warning to think hint
  with instruction to EXPAND scenes to reach target length
- chapter_polish: add word_count criterion (30%) to adjudication, restructure weights
- book_chapter PASS 1: strengthen word count instruction with explicit stop-early warning
- book_chapter: add word_count criterion (30%) to adjudication, restructure weights

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 11:38:16 -04:00
David Baity
ff38fff631 refactor: move all project folders into projects/ subdirectory
This change reorganizes the repository structure to keep the root directory
clean. All 15 project folders are now nested under projects/, alongside
infrastructure directories (agents/, templates/, deliverables/, rag/, skills/).

This allows the repository to grow without polluting the core service directories.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 11:09:34 -04:00
David Baity
db06dce05d feat: wire skills guides into templates, deduplicate Iris RAG
Skills guides wired (all were dead code — no templates declared skills:):
- book_chapter.yml: YAFictionGuide + RomanceFictionGuide + SciFiFictionGuide
- chapter_review.yml: same (Devon, Lane, Cora reviewers now have genre context)
- chapter_roundtable.yml: same (debate participants use genre craft knowledge)
- chapter_polish.yml: same (Iris polishes with full genre guide in context)
- short_story.yml: same
- blog_write.yml: BlogWritingGuide
- recipe_develop.yml: RecipeWritingGuide

All templates updated to include 'skills' in sections list so guides
are injected as SKILLS & GUIDES block in the prompt.

Iris RAG deduplication:
- agents/iris/rag/agent.rag.md: 15 near-identical entries -> 2 canonical
  Entry 1: Bible & Continuity Check requirement
  Entry 2: Editorial assignments (Devon/Lane/Cora with their roles)
  13 duplicates removed

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 09:39:05 -04:00
David Baity
acccb65af7 fix: roundtable early exit, iteration cap, and ghost-agent prevention
chapter_roundtable.yml:
- Reduce max_iterations 9 → 5 (3 rounds of 3 editors is enough; 9 was
  burning credits in a retry loop after credit exhaustion)
- Add explicit 'Once any participant outputs CONSENSUS REACHED, the
  debate is over' — prevents continuation into wasted rounds

planning.yml:
- Add ANTI-HALLUCINATION RULE FOR AGENTS block: explicitly names the
  known ghost agents (Worldbuilder, Prose Engine, Plot Architect, etc.)
  and forbids their use; maps task types to canonical CLP agents so
  planning LLM has unambiguous fallback assignments

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 09:19:46 -04:00
David Baity
4c9222960d fix: template prompt bloat and variable substitution failures
- chapter_polish: remove sections:deliverables — chapter text already in
  {chapter_text}; this caused 150KB+ prompts for late chapters (40MB logs)
- chapter_roundtable: require structured CONSENSUS REACHED block so
  key_changes is always formatted as an extractable string; change
  key_changes schema from list to string to match
- book_chapter: remove sections:history to reduce context; restructure
  Pass 0 to plan-only (no prose output) so the chapter is only written
  once in Pass 1 instead of twice; add explicit instruction in package
  hint to copy full chapter_text into spawn context
- short_story: remove sections:history and sections:deliverables (standalone
  task, needs neither); restructure Pass 0 to plan-only, Pass 1 to write;
  add note to handle literal {genre_name} placeholders gracefully
- recipe_develop, ai_article_write, blog_write: remove sections:history
  (these standalone tasks do not need full project conversation history;
  deliverables kept so they can read the research/plan file)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 09:05:45 -04:00
David Baity
09a0abe890 fix: chapter_review adjudication threshold 65→60, better criteria descriptions
- pass_threshold: 65→60 (reviews scoring 58-64 are high quality but barely
  missing the bar; editorial reviews are inherently subjective)
- deliverable_type: coordination→editorial_review (correct semantic type)
- Improved criteria descriptions to clearly signal this is an editorial
  feedback document, not a task completion report

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 05:11:41 -04:00
David Baity
8dfb1bb140 fix: roundtable max_iterations 3→9 for 3-agent, 3-round deliberation
With 3 agents and max_iterations=3, effective_max=max(3,3)=3, meaning
each agent speaks exactly once per roundtable — no back-and-forth.
Adjudicator correctly rejected these as incomplete (score=0-58 on
completeness/consensus_clarity/actionability).

9 iterations = 3 full rounds for 3 agents, allowing genuine debate:
Round 1: Initial assessments | Round 2: Responses | Round 3: Consensus

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 05:08:52 -04:00
David Baity
f4b7a04a27 fix: roundtable uses all three editors as participants
Replace agent_name: Devon with agents: [Devon, Lane, Cora] so the
chapter_roundtable task has all three editors rotating in the debate.
Addresses user feedback that roundtable should not be a specific
agent - everyone in the editorial team should be drafted.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 04:31:04 -04:00
David Baity
c180e6ea67 fix: use single-brace {agent_slug} in chapter_review filename
Double-brace {{agent_slug}} left outer braces in filename even after
substitution, causing all 3 reviewers (Devon/Lane/Cora) to write to
the same file review-ch-XX-{agent-slug}.md overwriting each other.
Single-brace now correctly produces review-ch-XX-devon.md etc.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 04:17:46 -04:00
David Baity
66e4e4f902 fix(planning): add BOARDROOM and NO-RE-PIPELINE rules
- BOARDROOM RULE: when request is a strategic debate/deliberation, create
  ONE task_type: boardroom for Selene, NOT content pipeline tasks
- NO-RE-PIPELINE RULE: if project already has book_research/outline/chapters
  in history, do NOT restart the pipeline mid-flight

Fixes Issue where planning incorrectly spawned a full research pipeline
when asked for a boardroom session, creating a 3rd set of Hollow Crown chapters.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 03:29:43 -04:00
David Baity
deeb20b91a Disable adjudication on book_outline to prevent duplicate chapter spawning
Root cause: AR retries book_outline when score < 60; each retry's package step
creates a new batch of chapters. InProgress chapters can't be deleted on rejection
so multiple sets accumulate. The boardroom deliberation (4 rounds) is the quality
gate — no retry needed at the outline level.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 03:17:17 -04:00
David Baity
ccffc65443 Fix duplicate chapter bug: strengthen synthesis/package step to prevent multi-variant chapter inflation
- Synthesis step: explicit rule against presenting alternatives or 'Option A/B' variants
- Package step: explicit deduplication — count only '- Chapter N:' entries in PART 2 only
- Clear warning: producing more actions than chapters = error, recount

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 03:13:03 -04:00
David Baity
6c39789f94 Fix: add agent_name to roundtable and polish spawns
- book_chapter.yml: spawn Roundtable task with agent_name: Devon
  (dispatcher requires at least one agent; Devon chairs the roundtable
  while rotate_participants still drafts all available editors)
- chapter_roundtable.yml: spawn Polish task with agent_name: Iris
  (Iris is the designated chapter polish author)

Previously: dispatch_create_task_skipped reason=no_agent for both tasks.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 02:54:12 -04:00
David Baity
25f25da192 Fix chapter_polish: remove empty devon/lane/cora_final context refs
CLP's chapter_roundtable doesn't extract individual editor finals
(it's roster-driven, not hardcoded to Devon/Lane/Cora).
Removed the three empty context references from the polish step hint.
consensus_critique already summarizes all editorial positions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 02:41:25 -04:00
David Baity
92caebc339 fix(book_outline): spawn EXACTLY one task per chapter, not minimum N
LLM was creating 20 tasks (2x outlines worth) because the hint said
'minimum {chapter_count|10} chapters'. Changed to explicit 'count the
chapters in the outline and create that exact number of actions'.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 02:25:52 -04:00
David Baity
df62a19c3f fix(book-pipeline): inference hints + LLM-filled context vars + roster roundtable
- book_research.yml: add inference hint when genre_name/genre_audience/research_focus are empty
- book_outline.yml: add inference hint for genre/audience; change package schema to ask LLM
  to FILL genre_name/genre_audience/prose_style/chapter_target_words from the outline text
  (was using {template_vars} which stay empty unless planning sets them)
- devon/agent.yml: add chapter_roundtable to supported_templates
- lane/agent.yml: add chapter_roundtable to supported_templates
  (all three editors now participate in roundtable — roster-driven, not hardcoded)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 02:16:18 -04:00
David Baity
dd00c07a90 fix(ai_article_research): use type: spawn instead of package/IntakeResponse
IntakeResponse packet type is for intake routing only, not child task creation.
Replace with type: spawn (same pattern as book_research.yml) to correctly
spawn the ai_article_plan task after research completes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 02:05:47 -04:00
David Baity
06faeb0c41 fix(short_story): remove requires block, infer genre/audience/style from task description
Templates spawned from genesis only receive a description, not pre-set
context variables. Removing requires: prevents step-0 failures when the
story brief is rich enough for Iris to infer genre/audience/prose style.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 01:58:29 -04:00
David Baity
c43e931bdb 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>
2026-03-12 01:54:29 -04:00
David Baity
d78d99304c fix(genesis): constrain to ONE entry-point task, explicit pipeline routing
Genesis must spawn exactly ONE task (book_research, short_story,
recipe_collection_plan, ai_article_research, blog_research, or planning).
The cascade templates handle everything downstream automatically.

This prevents Nova from skipping the book_research→book_outline pipeline
and spawning chapters/editorial tasks without proper context.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 01:49:04 -04:00
David Baity
f1e010d08d fix(clp): add genesis template, fix roster-driven task types
- templates/genesis.yml: copied from global seed, fixed to use
  roster-driven task types (no hardcoded generic type list)
- agents/nova/agent.yml: added genesis to supported_templates

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 01:37:48 -04:00
David Baity
1f811e98e1 fix(clp): genericise templates — no hardcoded agents/companies/task-types
- planning.yml: roster-driven task types, no hardcoded agent names or generic types
- chapter_roundtable.yml: removed fixed [Devon,Lane,Cora] participant list, any editor can join
- book_chapter.yml: removed hardcoded agents from roundtable spawn
- book_research.yml: removed agent: Atlas from book_outline spawn (Bouncer routes by type)
- ai_article_research.yml: removed agent_name: Atlas from plan spawn
- book_editorial.yml: removed Shadow Heir/Elara/Kai/Alpha Publishing/Wattpad hardcoding
- project_index.yml: removed Wattpad reference
- ai_article_write.yml: fixed adjudication criteria (article, not fiction chapter)
- chapter_review.yml: reply→document so reviews are committed and accessible

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 01:34:36 -04:00
David Baity
d90eceda0c fix(clp): route intake to Nova (CEO), clean task type overlaps
- InputFromUser.yml: route planning tasks to Nova (not Selene)
- Nova: restored planning to supported_templates (is CEO)
- Selene: removed planning (now boardroom/quick/hire_agent only)
- Atlas: removed planning+quick, added blog_research
- Nova: removed quick (Selene handles quick)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 01:27:28 -04:00
David Baity
50749f8e2b feat(clp): build full CLP agent roster, templates, and skills library
- 8 company agents: Lyra (intake), Selene (CEO), Atlas (research),
  Nova (publishing ops), Iris (author), Devon (dev editor),
  Lane (line editor), Cora (continuity editor)
- 19 additional templates (20 total): blog, recipe, short_story,
  book pipeline, ai_article, planning, boardroom, quick, project_index
- 5 skill guides: YA, Romance, SciFi, Blog, Recipe writing
- Rewritten charter and business plan

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-12 01:14:51 -04:00
PAE
d6b2c94135 Provision intake template: InputFromUser for crimson_leaf_publishing 2026-03-12 04:08:34 +00:00
5ae606adb7 Bootstrap: scaffold templates/ 2026-03-12 04:08:12 +00:00