Files
librenotes/.wave/contracts/connections.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

97 lines
3.0 KiB
JSON

{
"$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"
}
}
}