Files
librenotes/.wave/contracts/editorial-plan.schema.json
Michael Czechowski 59411ede0f Add Wave contract schemas for pipeline validation
JSON Schema definitions for all pipeline handover contracts
including issue analysis, research, enhancement, and sync flows.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 17:02:07 +01:00

99 lines
3.0 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Editorial Plan",
"description": "Analysis of a blog draft with a mapped editorial plan based on author criticism",
"type": "object",
"required": ["draft_filename", "draft_title", "sections", "editorial_actions"],
"properties": {
"draft_filename": {
"type": "string",
"pattern": "^[0-9a-f]{8}\\.md$",
"description": "Hex-ID filename of the draft note"
},
"draft_title": {
"type": "string",
"description": "Title of the blog draft"
},
"sections": {
"type": "array",
"items": {
"type": "object",
"required": ["heading", "line_range", "summary"],
"properties": {
"heading": {
"type": "string",
"description": "Section heading text"
},
"line_range": {
"type": "string",
"description": "Line range in the file (e.g., 15-42)"
},
"summary": {
"type": "string",
"description": "Brief summary of what this section covers"
},
"word_count": {
"type": "integer",
"minimum": 0
}
}
},
"description": "Structural map of the draft's sections"
},
"editorial_actions": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "type", "target_section", "description", "criticism_addressed"],
"properties": {
"id": {
"type": "string",
"pattern": "^EDIT-[0-9]{3}$",
"description": "Unique action identifier"
},
"type": {
"type": "string",
"enum": ["rewrite", "restructure", "cut", "expand", "add", "replace_example", "fix_tone", "fix_links"],
"description": "Type of editorial action"
},
"target_section": {
"type": "string",
"description": "Section heading this action targets, or 'global' for whole-draft changes"
},
"description": {
"type": "string",
"description": "Specific description of what to change and why"
},
"criticism_addressed": {
"type": "string",
"description": "Which part of the author's criticism this action addresses"
},
"priority": {
"type": "string",
"enum": ["high", "medium", "low"],
"description": "How critical this edit is"
}
}
},
"description": "Ordered list of editorial actions to apply"
},
"linked_notes": {
"type": "array",
"items": {
"type": "object",
"required": ["filename", "title"],
"properties": {
"filename": { "type": "string" },
"title": { "type": "string" }
}
},
"description": "Notes currently linked from the draft"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}