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>
This commit is contained in:
96
.wave/contracts/connections.schema.json
Normal file
96
.wave/contracts/connections.schema.json
Normal file
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Connections",
|
||||
"description": "Mapping of new content to existing Zettelkasten notes and addresses",
|
||||
"type": "object",
|
||||
"required": ["source_title", "related_notes", "suggested_placements"],
|
||||
"properties": {
|
||||
"source_title": {
|
||||
"type": "string",
|
||||
"description": "Title of the source being connected"
|
||||
},
|
||||
"related_notes": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["filename", "title", "folgezettel_address", "relationship"],
|
||||
"properties": {
|
||||
"filename": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9a-f]{8}\\.md$",
|
||||
"description": "Hex-ID filename of the related note"
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"description": "Full title of the related note"
|
||||
},
|
||||
"folgezettel_address": {
|
||||
"type": "string",
|
||||
"description": "Folgezettel address of the related note"
|
||||
},
|
||||
"relationship": {
|
||||
"type": "string",
|
||||
"description": "Why this note is related to the source"
|
||||
},
|
||||
"link_direction": {
|
||||
"type": "string",
|
||||
"enum": ["from_new", "to_new", "bidirectional"],
|
||||
"description": "Whether the new note should link to this, or this should link to new"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Existing notes related to the source content"
|
||||
},
|
||||
"suggested_placements": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["folgezettel_address", "parent_note", "section", "rationale"],
|
||||
"properties": {
|
||||
"folgezettel_address": {
|
||||
"type": "string",
|
||||
"description": "Suggested Folgezettel address for a new note"
|
||||
},
|
||||
"parent_note": {
|
||||
"type": "string",
|
||||
"description": "Filename of the parent note in the Folgezettel sequence"
|
||||
},
|
||||
"section": {
|
||||
"type": "string",
|
||||
"description": "Top-level section name"
|
||||
},
|
||||
"rationale": {
|
||||
"type": "string",
|
||||
"description": "Why this placement makes sense"
|
||||
},
|
||||
"concept": {
|
||||
"type": "string",
|
||||
"description": "Which concept from the source this placement is for"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Suggested positions in the Folgezettel for new notes"
|
||||
},
|
||||
"index_update_needed": {
|
||||
"type": "boolean",
|
||||
"description": "Whether the index note should be updated"
|
||||
},
|
||||
"suggested_index_entries": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["keyword", "rationale"],
|
||||
"properties": {
|
||||
"keyword": { "type": "string" },
|
||||
"rationale": { "type": "string" }
|
||||
}
|
||||
},
|
||||
"description": "Suggested new entries for the index note"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user