sprint 81: fix chapter filename interpolation, chapter_polish deadlock, Loop 2 CLM dispatch, project.yml data

- book_chapter.yml: add mini-package step after SELF-CHECK to extract chapter_number/chapter_ref
  before document steps run. Without this every chapter was saved as Chapter_chapter-number_draft.md.
  Also add source_step to both document steps so they read from correct prior step.
- DocumentStepHandler.cs (C#): add source_step support (template change depends on this).
- chapter_roundtable.yml: remove broken depends_on from chapter_polish spawn that caused deadlock
  (Polish: {chapter_ref_prev} never exists for ch-01, blocking all polish tasks).
- project_index.yml: Loop 2 CLM dispatch -- when book is complete, enqueue marketing_campaign
  to crimson_leaf_marketing/book-marketing-agency.
- project.yml files: fill in name, goal, genre, lead_author for all 3 CLP projects.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
David Baity
2026-04-17 19:44:29 -04:00
parent e6a9ab3156
commit 20bf338e82

View File

@@ -293,9 +293,26 @@ steps:
Start the chapter directly with the chapter title and first line. Start the chapter directly with the chapter title and first line.
No preamble or commentary within the chapter text. No preamble or commentary within the chapter text.
# Commit chapter draft now -- last_text() = self-check output (step 2). Must come before # Extract chapter_number and chapter_ref from the PASS 1 chapter text before any document
# PASS 3 think so the character-state extraction does not overwrite last_text(). # steps run. Without this, {chapter_number}/{chapter_ref} are unresolved at document time
# and filenames become "Chapter_chapter-number_draft.md" (slug-cleaned literal key names).
# source_step: 1 = PASS 1 output, which begins "Chapter N: Title". Cheap call (max_tokens: 150).
- type: package
source_step: 1
max_tokens: 150
hint: |
The chapter draft above starts with a chapter title line such as "Chapter 5: Some Title".
Extract:
- chapter_number: the plain chapter number as a string (e.g. "5")
- chapter_ref: zero-padded two-digit format (e.g. "ch-05" for chapter 5)
schema:
chapter_number: string
chapter_ref: string
# Commit chapter draft now. chapter_number is in ContextVars from the package step above.
# source_step: 2 = SELF-CHECK output (step 2); required because LastText() now = package JSON.
- type: document - type: document
source_step: 2
filename: "Chapter_{chapter_number}_draft" filename: "Chapter_{chapter_number}_draft"
primary_deliverable: true primary_deliverable: true
strip_before_marker: "---BEGIN CHAPTER---" strip_before_marker: "---BEGIN CHAPTER---"
@@ -416,14 +433,15 @@ steps:
- type: rag_write - type: rag_write
asset_id: "character-state" asset_id: "character-state"
source_step: 4 # PASS 3 character-state extraction; explicit to avoid last_text() falling back to chapter text source_step: 5 # PASS 3 character-state extraction; explicit to avoid last_text() falling back to chapter text
max_chars: 4000 max_chars: 4000
- type: document - type: document
source_step: 5
filename: "character-state-{chapter_ref}" filename: "character-state-{chapter_ref}"
- type: package - type: package
source_step: 4 # PASS 3 -- character-state extraction (compact, describes permanent changes) source_step: 5 # PASS 3 -- character-state extraction (compact, describes permanent changes)
max_tokens: 4000 max_tokens: 4000
hint: | hint: |
The draft chapter has been written, self-checked, and committed. The draft chapter has been written, self-checked, and committed.