Commit Graph

38 Commits

Author SHA1 Message Date
David Baity
5e4be25f51 fix: add chapter_number context var to book_outline.yml spawn schema 2026-03-24 00:24:37 -04:00
David Baity
79a2e8ab7c Sprint 56h: fix spawn_list bug + add iris character_sheet support + voice sig auto-import 2026-03-23 23:46:15 -04:00
David Baity
63f60559b0 Sprint 56h: evolving character sheets + reliable injection
- Split project.rag.md into 6 focused RAG files (voice-signatures, magic-system,
  story-premise, factions, character-state, world-state)
- book_chapter.yml: PASS 0 STEP 5 replaced with live RAG character/world state check +
  location continuity validation; PASS 3 added for character+world state extraction after
  each chapter (rag_write -> character-state RAG + deliverable snapshot)
- chapter_polish.yml: PASS state extraction after final document (full-mode canonical state)
- book_outline.yml: added Factions section template with NPC memory model
- NEW character_update.yml: permanent arc change template (updates static char profile)
- chapter_review.yml: Sprint 56g voice authenticity fixes (fire/ice -> Body/Mind duality)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-23 01:07:24 -04:00
David Baity
177acdfa35 Sprint 56f: Human-readable file naming - Chapter_N_draft/review_a/b/c/final 2026-03-22 18:57:33 -04:00
David Baity
b27229a71f Sprint 56a: PASS 1 + SELF-CHECK locked chapter hook enforcement
- PASS 1: new requirement — FIRST LINE must resolve LOCKED PREVIOUS
  CHAPTER HOOK if present in draft prompt
- SELF-CHECK: item 6 — validate opening paragraph answers locked hook;
  add resolution sentence if missing

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-21 23:28:40 -04:00
David Baity
87c01864dc 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>
2026-03-21 16:34:32 -04:00
David Baity
f3d1ac3dc5 Add draft-only chapter template
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-14 09:53:57 -04:00
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