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:
2026-02-25 17:02:07 +01:00
parent 3a74a298a5
commit 59411ede0f
66 changed files with 4975 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "ADR Context",
"description": "Contextual information gathered for an Architecture Decision Record",
"type": "object",
"required": ["decision_topic", "current_state", "constraints", "timestamp"],
"properties": {
"decision_topic": { "type": "string", "minLength": 5 },
"current_state": {
"type": "object",
"required": ["description"],
"properties": {
"description": { "type": "string", "minLength": 10 },
"affected_files": { "type": "array", "items": { "type": "string" } },
"affected_components": { "type": "array", "items": { "type": "string" } }
}
},
"constraints": {
"type": "array",
"items": {
"type": "object",
"required": ["type", "description"],
"properties": {
"type": { "type": "string", "enum": ["technical", "organizational", "timeline"] },
"description": { "type": "string", "minLength": 5 }
}
}
},
"precedents": {
"type": "array",
"items": {
"type": "object",
"required": ["description"],
"properties": {
"description": { "type": "string" },
"location": { "type": "string" },
"outcome": { "type": "string" }
}
}
},
"stakeholders": { "type": "array", "items": { "type": "string" } },
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,38 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "ADR Options Analysis",
"description": "Analysis of options for an architectural decision",
"type": "object",
"required": ["decision_topic", "options", "recommendation", "timestamp"],
"properties": {
"decision_topic": { "type": "string", "minLength": 5 },
"options": {
"type": "array",
"minItems": 2,
"items": {
"type": "object",
"required": ["name", "description", "pros", "cons"],
"properties": {
"name": { "type": "string", "minLength": 1 },
"description": { "type": "string", "minLength": 10 },
"pros": { "type": "array", "items": { "type": "string" } },
"cons": { "type": "array", "items": { "type": "string" } },
"effort": { "type": "string", "enum": ["trivial", "small", "medium", "large", "epic"] },
"risk": { "type": "string", "enum": ["low", "medium", "high"] },
"reversibility": { "type": "string", "enum": ["easy", "moderate", "difficult", "irreversible"] },
"compatibility": { "type": "string", "enum": ["high", "medium", "low"] }
}
}
},
"recommendation": {
"type": "object",
"required": ["option", "rationale", "confidence"],
"properties": {
"option": { "type": "string", "minLength": 1 },
"rationale": { "type": "string", "minLength": 20 },
"confidence": { "type": "string", "enum": ["high", "medium", "low"] }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,60 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Speckit Analysis Report",
"description": "Cross-artifact consistency and quality analysis report before implementation.",
"type": "object",
"required": ["total_requirements", "total_tasks", "coverage_percent", "can_proceed", "feature_dir", "summary"],
"properties": {
"total_requirements": {
"type": "integer",
"description": "Total number of requirements extracted from spec"
},
"total_tasks": {
"type": "integer",
"description": "Total number of tasks in the task breakdown"
},
"coverage_percent": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Percentage of requirements covered by tasks (0-100)"
},
"can_proceed": {
"type": "boolean",
"description": "Whether the feature is ready for implementation"
},
"feature_dir": {
"type": "string",
"minLength": 1,
"description": "Path to the feature directory"
},
"summary": {
"type": "string",
"minLength": 1,
"description": "Brief summary of the analysis findings"
},
"issues": {
"type": "object",
"properties": {
"critical": {
"type": "integer",
"description": "Number of critical severity issues"
},
"high": {
"type": "integer",
"description": "Number of high severity issues"
},
"medium": {
"type": "integer",
"description": "Number of medium severity issues"
},
"low": {
"type": "integer",
"description": "Number of low severity issues"
}
},
"description": "Issue counts grouped by severity level"
}
},
"additionalProperties": true
}

View File

@@ -0,0 +1,120 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Audit Report",
"description": "Zettelkasten health audit covering orphans, dangling links, and index gaps",
"type": "object",
"required": ["orphans", "dangling_links", "stats", "index_gaps", "dead_ends"],
"properties": {
"orphans": {
"type": "array",
"items": {
"type": "object",
"required": ["filename", "title"],
"properties": {
"filename": {
"type": "string",
"description": "Hex-ID filename of the orphan note"
},
"title": {
"type": "string",
"description": "Title of the orphan note"
},
"suggested_connection": {
"type": "string",
"description": "Suggested note to link from"
}
}
},
"description": "Notes with no incoming or outgoing links"
},
"dangling_links": {
"type": "array",
"items": {
"type": "object",
"required": ["source_filename", "target_filename", "link_text"],
"properties": {
"source_filename": {
"type": "string",
"description": "File containing the broken link"
},
"target_filename": {
"type": "string",
"description": "Target file that doesn't exist"
},
"link_text": {
"type": "string",
"description": "Display text of the broken link"
},
"suggested_fix": {
"type": "string",
"enum": ["retarget", "remove"],
"description": "Suggested fix action"
}
}
},
"description": "Links pointing to non-existent notes"
},
"stats": {
"type": "object",
"required": ["total_notes", "total_links"],
"properties": {
"total_notes": { "type": "integer", "minimum": 0 },
"total_links": { "type": "integer", "minimum": 0 },
"label_notes": { "type": "integer", "minimum": 0 },
"orphan_count": { "type": "integer", "minimum": 0 },
"dangling_count": { "type": "integer", "minimum": 0 },
"avg_links_per_note": { "type": "number", "minimum": 0 }
},
"description": "Overall collection statistics"
},
"index_gaps": {
"type": "array",
"items": {
"type": "object",
"required": ["section", "description"],
"properties": {
"section": {
"type": "string",
"description": "Section name missing from index"
},
"description": {
"type": "string",
"description": "What's missing"
},
"suggested_entry_point": {
"type": "string",
"description": "Suggested note to use as entry point"
}
}
},
"description": "Sections or keywords missing from the index note"
},
"dead_ends": {
"type": "array",
"items": {
"type": "object",
"required": ["filename", "title"],
"properties": {
"filename": {
"type": "string",
"description": "Hex-ID filename of the dead-end note"
},
"title": {
"type": "string",
"description": "Title of the note"
},
"outgoing_links": {
"type": "integer",
"minimum": 0,
"description": "Number of outgoing links (may have outgoing but no incoming)"
}
}
},
"description": "Notes with no incoming links (reachable only via search)"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}

View File

@@ -0,0 +1,55 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Categorized Changelog Changes",
"description": "Categorized and described changes for changelog generation",
"type": "object",
"required": ["version_label", "sections", "timestamp"],
"properties": {
"version_label": { "type": "string", "minLength": 1 },
"breaking_changes": {
"type": "array",
"items": {
"type": "object",
"required": ["description"],
"properties": {
"description": { "type": "string" },
"migration": { "type": "string" },
"related_commits": { "type": "array", "items": { "type": "string" } }
}
}
},
"sections": {
"type": "array",
"items": {
"type": "object",
"required": ["title", "type", "entries"],
"properties": {
"title": { "type": "string" },
"type": { "type": "string" },
"entries": {
"type": "array",
"items": {
"type": "object",
"required": ["description"],
"properties": {
"description": { "type": "string" },
"scope": { "type": "string" },
"commits": { "type": "array", "items": { "type": "string" } },
"notable": { "type": "boolean" }
}
}
}
}
}
},
"contributors": { "type": "array", "items": { "type": "string" } },
"stats": {
"type": "object",
"properties": {
"total_entries": { "type": "integer" },
"notable_entries": { "type": "integer" }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,36 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Speckit Checklist Status",
"description": "Status report from the checklist step: quality checklist generation for requirement validation.",
"type": "object",
"required": ["checklist_files", "total_items", "feature_dir", "summary"],
"properties": {
"checklist_files": {
"type": "array",
"items": {
"type": "string"
},
"description": "Paths to generated checklist files"
},
"total_items": {
"type": "integer",
"minimum": 0,
"description": "Total number of checklist items across all files"
},
"feature_dir": {
"type": "string",
"minLength": 1,
"description": "Path to the feature directory"
},
"summary": {
"type": "string",
"minLength": 1,
"description": "Brief description of the checklists generated"
},
"critical_gaps": {
"type": "integer",
"description": "Number of critical quality gaps identified"
}
},
"additionalProperties": true
}

View File

@@ -0,0 +1,30 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Speckit Clarify Status",
"description": "Status report from the clarify step: ambiguity resolution and spec refinement.",
"type": "object",
"required": ["questions_asked", "answers_encoded", "feature_dir", "summary"],
"properties": {
"questions_asked": {
"type": "integer",
"minimum": 0,
"description": "Number of clarification questions identified"
},
"answers_encoded": {
"type": "integer",
"minimum": 0,
"description": "Number of clarifications resolved and encoded into the spec"
},
"feature_dir": {
"type": "string",
"minLength": 1,
"description": "Path to the feature directory"
},
"summary": {
"type": "string",
"minLength": 1,
"description": "Brief description of clarifications made"
}
},
"additionalProperties": true
}

View File

@@ -0,0 +1,84 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GitHub Comment Result",
"description": "Result of posting research report as a GitHub issue comment",
"type": "object",
"required": ["success", "issue_reference", "timestamp"],
"properties": {
"success": {
"type": "boolean",
"description": "Whether the comment was successfully posted"
},
"issue_reference": {
"type": "object",
"required": ["issue_number", "repository"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1,
"description": "Issue number that was commented on"
},
"repository": {
"type": "string",
"pattern": "^[^/]+/[^/]+$",
"description": "Repository full name"
},
"issue_url": {
"type": "string",
"format": "uri",
"description": "URL to the issue"
}
}
},
"comment": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1,
"description": "GitHub comment ID"
},
"url": {
"type": "string",
"format": "uri",
"description": "Direct URL to the posted comment"
},
"body_length": {
"type": "integer",
"minimum": 0,
"description": "Length of the posted comment body in characters"
},
"created_at": {
"type": "string",
"format": "date-time",
"description": "When the comment was created"
}
},
"description": "Details of the posted comment (only present if success=true)"
},
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": ["authentication_failed", "rate_limit_exceeded", "issue_not_found", "issue_locked", "permission_denied", "comment_too_long", "network_error", "api_error", "unknown_error"],
"description": "Error code"
},
"message": {
"type": "string",
"description": "Human-readable error message"
},
"retryable": {
"type": "boolean",
"description": "Whether the operation can be retried"
}
},
"description": "Error details (only present if success=false)"
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "Operation timestamp"
}
}
}

View File

@@ -0,0 +1,53 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Commit Analysis",
"description": "Structured analysis of git commits for changelog generation",
"type": "object",
"required": ["range", "commits", "summary", "timestamp"],
"properties": {
"range": {
"type": "object",
"required": ["from", "to", "total_commits"],
"properties": {
"from": { "type": "string", "minLength": 1 },
"to": { "type": "string", "minLength": 1 },
"total_commits": { "type": "integer", "minimum": 0 },
"date_range": {
"type": "object",
"properties": {
"start": { "type": "string" },
"end": { "type": "string" }
}
}
}
},
"commits": {
"type": "array",
"items": {
"type": "object",
"required": ["hash", "date", "type", "subject"],
"properties": {
"hash": { "type": "string", "minLength": 4 },
"author": { "type": "string" },
"date": { "type": "string" },
"type": { "type": "string", "enum": ["feat", "fix", "docs", "refactor", "test", "chore", "perf", "ci", "other"] },
"scope": { "type": ["string", "null"] },
"subject": { "type": "string", "minLength": 1 },
"breaking": { "type": "boolean" },
"breaking_note": { "type": "string" }
}
}
},
"summary": {
"type": "object",
"required": ["by_type"],
"properties": {
"by_type": { "type": "object" },
"breaking_changes": { "type": "integer", "minimum": 0 },
"contributors": { "type": "array", "items": { "type": "string" } },
"most_changed_scopes": { "type": "array", "items": { "type": "string" } }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}

View 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"
}
}
}

View File

@@ -0,0 +1,81 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Convergent Proposals",
"description": "Prioritized simplification proposals from convergent thinking phase",
"type": "object",
"required": ["source_findings", "validation_summary", "proposals", "timestamp"],
"properties": {
"source_findings": {
"type": "object",
"required": ["total_reviewed", "confirmed", "partially_confirmed", "rejected"],
"properties": {
"total_reviewed": { "type": "integer" },
"confirmed": { "type": "integer" },
"partially_confirmed": { "type": "integer" },
"rejected": { "type": "integer" },
"rejection_reasons": {
"type": "array",
"items": {
"type": "object",
"required": ["finding_id", "reason"],
"properties": {
"finding_id": { "type": "string" },
"reason": { "type": "string" }
}
}
}
}
},
"validation_summary": {
"type": "string",
"description": "Narrative summary of the converge→diverge→converge validation process"
},
"proposals": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "title", "description", "source_findings", "impact", "effort", "risk", "tier", "files"],
"properties": {
"id": { "type": "string", "pattern": "^SMP-\\d{3}$" },
"title": { "type": "string" },
"description": { "type": "string" },
"source_findings": {
"type": "array",
"items": { "type": "string" },
"description": "DVG-xxx IDs this proposal addresses"
},
"impact": { "type": "string", "enum": ["high", "medium", "low"] },
"effort": { "type": "string", "enum": ["small", "medium", "large"] },
"risk": { "type": "string", "enum": ["low", "medium", "high"] },
"tier": {
"type": "integer",
"minimum": 1,
"maximum": 3,
"description": "Priority tier: 1=do now, 2=do next, 3=consider later"
},
"files": {
"type": "array",
"items": { "type": "string" },
"description": "Files that would be modified"
},
"dependencies": {
"type": "array",
"items": { "type": "string" },
"description": "SMP-xxx IDs that must be applied first"
},
"lines_removed_estimate": { "type": "integer" },
"second_order_effects": {
"type": "array",
"items": { "type": "string" },
"description": "Insights discovered during deeper probing"
}
}
}
},
"eighty_twenty_analysis": {
"type": "string",
"description": "Which 20% of proposals yield 80% of the simplification benefit"
},
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,24 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["current_coverage", "uncovered_functions", "uncovered_branches", "edge_cases", "mock_requirements"],
"properties": {
"current_coverage": { "type": "string" },
"uncovered_functions": {
"type": "array",
"items": { "type": "string" }
},
"uncovered_branches": {
"type": "array",
"items": { "type": "string" }
},
"edge_cases": {
"type": "array",
"items": { "type": "string" }
},
"mock_requirements": {
"type": "array",
"items": { "type": "string" }
}
}
}

View File

@@ -0,0 +1,42 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Dead Code Scan",
"description": "Scan results for dead or redundant code",
"type": "object",
"required": ["target", "findings", "summary", "timestamp"],
"properties": {
"target": { "type": "string", "minLength": 1 },
"findings": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "type", "location", "description", "confidence", "safe_to_remove"],
"properties": {
"id": { "type": "string", "pattern": "^DC-[0-9]{3}$" },
"type": {
"type": "string",
"enum": ["unused_export", "unreachable", "orphaned_file", "redundant", "stale_test", "unused_import", "commented_code"]
},
"location": { "type": "string", "minLength": 1 },
"symbol": { "type": "string" },
"description": { "type": "string", "minLength": 5 },
"evidence": { "type": "string" },
"confidence": { "type": "string", "enum": ["high", "medium", "low"] },
"safe_to_remove": { "type": "boolean" },
"removal_note": { "type": "string" }
}
}
},
"summary": {
"type": "object",
"required": ["total_findings"],
"properties": {
"total_findings": { "type": "integer", "minimum": 0 },
"by_type": { "type": "object" },
"high_confidence_count": { "type": "integer", "minimum": 0 },
"estimated_lines_removable": { "type": "integer", "minimum": 0 }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,22 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["hypotheses"],
"properties": {
"hypotheses": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "description", "likelihood", "test_approach"],
"properties": {
"id": { "type": "integer" },
"description": { "type": "string", "minLength": 1 },
"likelihood": { "type": "string", "enum": ["high", "medium", "low"] },
"test_approach": { "type": "string", "minLength": 1 },
"expected_result_if_true": { "type": "string" }
}
}
}
}
}

View File

@@ -0,0 +1,21 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["expected_behavior", "actual_behavior", "reproduction_steps", "relevant_files"],
"properties": {
"expected_behavior": { "type": "string", "minLength": 1 },
"actual_behavior": { "type": "string", "minLength": 1 },
"reproduction_steps": {
"type": "array",
"items": { "type": "string" }
},
"relevant_files": {
"type": "array",
"items": { "type": "string" }
},
"environmental_factors": {
"type": "array",
"items": { "type": "string" }
}
}
}

View File

@@ -0,0 +1,31 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["files_changed", "modules_affected", "related_tests", "breaking_changes"],
"properties": {
"files_changed": {
"type": "array",
"items": {
"type": "object",
"required": ["path", "change_type", "purpose"],
"properties": {
"path": { "type": "string" },
"change_type": { "type": "string", "enum": ["added", "modified", "deleted"] },
"purpose": { "type": "string" }
}
}
},
"modules_affected": {
"type": "array",
"items": { "type": "string" }
},
"related_tests": {
"type": "array",
"items": { "type": "string" }
},
"breaking_changes": {
"type": "array",
"items": { "type": "string" }
}
}
}

View File

@@ -0,0 +1,82 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Divergent Findings",
"description": "Broad-net findings from divergent thinking phase of the recinq pipeline",
"type": "object",
"required": ["scope", "findings", "metrics_summary", "timestamp"],
"properties": {
"scope": {
"type": "object",
"required": ["target", "files_scanned", "total_lines"],
"properties": {
"target": { "type": "string", "description": "What was analyzed (path, module, or 'whole-project')" },
"files_scanned": { "type": "integer" },
"total_lines": { "type": "integer" }
}
},
"findings": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "category", "title", "description", "evidence", "severity"],
"properties": {
"id": { "type": "string", "pattern": "^DVG-\\d{3}$" },
"category": {
"type": "string",
"enum": [
"premature_abstraction",
"unnecessary_indirection",
"overengineering",
"yagni_violation",
"accidental_complexity",
"copy_paste_drift",
"dead_weight",
"naming_lie",
"dependency_gravity",
"missing_abstraction",
"other"
]
},
"title": { "type": "string" },
"description": { "type": "string" },
"evidence": {
"type": "object",
"required": ["files"],
"properties": {
"files": { "type": "array", "items": { "type": "string" } },
"line_count": { "type": "integer" },
"reference_count": { "type": "integer" },
"change_frequency": { "type": "integer" },
"metrics": { "type": "string" }
}
},
"severity": {
"type": "string",
"enum": ["critical", "high", "medium", "low"]
},
"confidence": {
"type": "string",
"enum": ["high", "medium", "low"],
"description": "How confident the provocateur is in this finding"
}
}
}
},
"metrics_summary": {
"type": "object",
"required": ["total_findings"],
"properties": {
"total_findings": { "type": "integer" },
"by_category": { "type": "object", "additionalProperties": { "type": "integer" } },
"by_severity": { "type": "object", "additionalProperties": { "type": "integer" } },
"hotspot_files": {
"type": "array",
"items": { "type": "string" },
"description": "Files appearing in multiple findings"
}
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,87 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Documentation Consistency Report",
"description": "Output from the analyze-consistency step: list of inconsistencies between code and documentation",
"type": "object",
"required": ["summary", "inconsistencies", "timestamp"],
"properties": {
"summary": {
"type": "object",
"required": ["total_count", "by_severity"],
"properties": {
"total_count": {
"type": "integer",
"minimum": 0,
"description": "Total number of inconsistencies found"
},
"by_severity": {
"type": "object",
"properties": {
"critical": { "type": "integer", "minimum": 0 },
"high": { "type": "integer", "minimum": 0 },
"medium": { "type": "integer", "minimum": 0 },
"low": { "type": "integer", "minimum": 0 }
},
"description": "Count of inconsistencies by severity level"
},
"clean": {
"type": "boolean",
"description": "True if no inconsistencies were found"
}
}
},
"inconsistencies": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "severity", "category", "title", "description", "source_location", "doc_location"],
"properties": {
"id": {
"type": "string",
"pattern": "^DOC-[0-9]{3}$",
"description": "Unique inconsistency ID (DOC-001, DOC-002, etc.)"
},
"severity": {
"type": "string",
"enum": ["critical", "high", "medium", "low"],
"description": "Severity of the inconsistency"
},
"category": {
"type": "string",
"enum": ["cli_flags", "personas", "pipelines", "contracts", "env_vars", "api", "stale_reference", "missing_docs", "other"],
"description": "Category of the inconsistency"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Short title describing the inconsistency"
},
"description": {
"type": "string",
"minLength": 1,
"description": "Detailed description of the inconsistency and what needs to change"
},
"source_location": {
"type": "string",
"description": "File and line where the source of truth is (code, pipeline, etc.)"
},
"doc_location": {
"type": "string",
"description": "File and section where the documentation is stale or missing"
},
"fix_description": {
"type": "string",
"description": "What specifically needs to be updated"
}
}
},
"description": "List of documentation inconsistencies"
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When the analysis was performed"
}
}
}

View File

@@ -0,0 +1,71 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Documentation Issue Result",
"description": "Output from the create-issue step: GitHub issue creation result",
"type": "object",
"required": ["success", "repository", "timestamp"],
"properties": {
"success": {
"type": "boolean",
"description": "Whether the issue was successfully created"
},
"repository": {
"type": "string",
"pattern": "^[^/]+/[^/]+$",
"description": "Repository full name (owner/repo)"
},
"issue": {
"type": "object",
"properties": {
"number": {
"type": "integer",
"minimum": 1,
"description": "GitHub issue number"
},
"url": {
"type": "string",
"format": "uri",
"description": "URL to the created issue"
},
"title": {
"type": "string",
"description": "Issue title"
},
"inconsistency_count": {
"type": "integer",
"minimum": 0,
"description": "Number of inconsistencies reported in the issue"
}
},
"description": "Details of the created issue (only present if success=true)"
},
"skipped": {
"type": "boolean",
"description": "True if no issue was created because no inconsistencies were found"
},
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": ["authentication_failed", "rate_limit_exceeded", "permission_denied", "network_error", "api_error", "unknown_error"],
"description": "Error code"
},
"message": {
"type": "string",
"description": "Human-readable error message"
},
"retryable": {
"type": "boolean",
"description": "Whether the operation can be retried"
}
},
"description": "Error details (only present if success=false)"
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "Operation timestamp"
}
}
}

View File

@@ -0,0 +1,112 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Documentation Scan Results",
"description": "Output from the scan-changes step: changed files and current documentation state snapshot",
"type": "object",
"required": ["scan_scope", "changed_files", "documentation_snapshot", "timestamp"],
"properties": {
"scan_scope": {
"type": "object",
"required": ["mode", "range"],
"properties": {
"mode": {
"type": "string",
"enum": ["diff", "full"],
"description": "Whether this was a diff-based or full scan"
},
"range": {
"type": "string",
"description": "Git range used for diff (e.g. 'main...HEAD') or 'full' for full scan"
},
"base_ref": {
"type": "string",
"description": "Base reference for comparison"
}
}
},
"changed_files": {
"type": "object",
"required": ["total_count", "categories"],
"properties": {
"total_count": {
"type": "integer",
"minimum": 0,
"description": "Total number of changed files"
},
"categories": {
"type": "object",
"properties": {
"go_code": {
"type": "array",
"items": { "type": "string" },
"description": "Changed Go source files"
},
"cli_commands": {
"type": "array",
"items": { "type": "string" },
"description": "Changed CLI command files (cmd/wave/commands/)"
},
"pipelines": {
"type": "array",
"items": { "type": "string" },
"description": "Changed pipeline definitions"
},
"personas": {
"type": "array",
"items": { "type": "string" },
"description": "Changed persona definitions"
},
"contracts": {
"type": "array",
"items": { "type": "string" },
"description": "Changed contract schemas"
},
"documentation": {
"type": "array",
"items": { "type": "string" },
"description": "Changed documentation files (docs/, README.md, CLAUDE.md, etc.)"
},
"other": {
"type": "array",
"items": { "type": "string" },
"description": "Other changed files"
}
}
}
}
},
"documentation_snapshot": {
"type": "object",
"required": ["files"],
"properties": {
"files": {
"type": "array",
"items": {
"type": "object",
"required": ["path", "exists"],
"properties": {
"path": {
"type": "string",
"description": "Path to the documentation file"
},
"exists": {
"type": "boolean",
"description": "Whether the file exists"
},
"summary": {
"type": "string",
"description": "Brief summary of the file's content and key sections"
}
}
},
"description": "Key documentation files and their current state"
}
}
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When the scan was performed"
}
}
}

View File

@@ -0,0 +1,38 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Doc Sync Scan Results",
"description": "Documentation inconsistency scan for doc-sync pipeline",
"type": "object",
"required": ["scan_scope", "findings", "summary", "timestamp"],
"properties": {
"scan_scope": { "type": "string", "minLength": 1 },
"findings": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "type", "severity", "title", "description"],
"properties": {
"id": { "type": "string", "pattern": "^DOC-[0-9]{3}$" },
"type": { "type": "string", "enum": ["MISSING_DOCS", "STALE_DOCS", "INACCURATE", "INCOMPLETE"] },
"severity": { "type": "string", "enum": ["CRITICAL", "HIGH", "MEDIUM", "LOW"] },
"title": { "type": "string", "minLength": 3 },
"doc_location": { "type": "string" },
"code_location": { "type": "string" },
"description": { "type": "string", "minLength": 10 },
"suggested_fix": { "type": "string" }
}
}
},
"summary": {
"type": "object",
"required": ["total_findings"],
"properties": {
"total_findings": { "type": "integer", "minimum": 0 },
"by_type": { "type": "object" },
"by_severity": { "type": "object" },
"fixable_count": { "type": "integer", "minimum": 0 }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,112 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://schema.recinq.com/wave/docs-phase.schema.json",
"title": "Wave Docs Phase Output Contract",
"description": "Validates docs phase outputs for prototype-driven development pipeline",
"type": "object",
"properties": {
"phase": {
"type": "string",
"const": "docs",
"description": "Phase identifier"
},
"artifacts": {
"type": "object",
"properties": {
"feature_docs": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*feature-docs\\.md$",
"description": "Path to feature documentation file"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Feature documentation file must exist"
},
"content_type": {
"type": "string",
"const": "markdown",
"description": "Documentation content format"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
},
"stakeholder_summary": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*stakeholder-summary\\.md$",
"description": "Path to stakeholder summary file"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Stakeholder summary file must exist"
},
"content_type": {
"type": "string",
"const": "markdown",
"description": "Summary content format"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
}
},
"required": ["feature_docs", "stakeholder_summary"],
"additionalProperties": true
},
"validation": {
"type": "object",
"properties": {
"coverage_percentage": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Specification coverage in documentation"
},
"readability_score": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Documentation readability rating"
},
"documentation_quality": {
"type": "string",
"enum": ["poor", "fair", "good", "excellent"],
"description": "Overall documentation quality assessment"
}
},
"required": ["documentation_quality"],
"additionalProperties": false
},
"metadata": {
"type": "object",
"properties": {
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When docs phase was completed"
},
"duration_seconds": {
"type": "number",
"minimum": 0,
"description": "Time taken for docs phase"
},
"source_spec_path": {
"type": "string",
"description": "Path to source specification file"
}
},
"required": ["timestamp", "source_spec_path"],
"additionalProperties": false
}
},
"required": ["phase", "artifacts", "validation", "metadata"],
"additionalProperties": false
}

View File

@@ -0,0 +1,110 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://schema.recinq.com/wave/dummy-phase.schema.json",
"title": "Wave Dummy Phase Output Contract",
"description": "Validates dummy phase outputs for prototype-driven development pipeline",
"type": "object",
"properties": {
"phase": {
"type": "string",
"const": "dummy",
"description": "Phase identifier"
},
"artifacts": {
"type": "object",
"properties": {
"prototype": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*prototype/?$",
"description": "Path to prototype directory"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Prototype directory must exist"
},
"content_type": {
"type": "string",
"const": "code",
"description": "Prototype content type"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
},
"interface_definitions": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*interfaces\\.md$",
"description": "Path to interface definitions file"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Interface definitions file must exist"
},
"content_type": {
"type": "string",
"const": "markdown",
"description": "Interface definitions content format"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
}
},
"required": ["prototype", "interface_definitions"],
"additionalProperties": true
},
"validation": {
"type": "object",
"properties": {
"runnable": {
"type": "boolean",
"description": "Whether the prototype can be executed"
},
"interface_completeness": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Percentage of interfaces stubbed"
},
"prototype_quality": {
"type": "string",
"enum": ["poor", "fair", "good", "excellent"],
"description": "Overall prototype quality assessment"
}
},
"required": ["runnable", "prototype_quality"],
"additionalProperties": false
},
"metadata": {
"type": "object",
"properties": {
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When dummy phase was completed"
},
"duration_seconds": {
"type": "number",
"minimum": 0,
"description": "Time taken for dummy phase"
},
"source_docs_path": {
"type": "string",
"description": "Path to source documentation file"
}
},
"required": ["timestamp", "source_docs_path"],
"additionalProperties": false
}
},
"required": ["phase", "artifacts", "validation", "metadata"],
"additionalProperties": false
}

View File

@@ -0,0 +1,98 @@
{
"$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"
}
}
}

View File

@@ -0,0 +1,76 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Code Architecture Analysis",
"description": "Architecture and design analysis of explored code",
"type": "object",
"required": ["topic", "patterns", "timestamp"],
"properties": {
"topic": { "type": "string", "minLength": 3 },
"patterns": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "where", "why"],
"properties": {
"name": { "type": "string" },
"where": { "type": "string" },
"why": { "type": "string" },
"quality": { "type": "string", "enum": ["well-implemented", "adequate", "needs-improvement"] }
}
}
},
"data_flow": {
"type": "array",
"items": {
"type": "object",
"required": ["name"],
"properties": {
"name": { "type": "string" },
"stages": { "type": "array", "items": { "type": "string" } },
"key_transformations": { "type": "array", "items": { "type": "string" } }
}
}
},
"error_handling": {
"type": "object",
"properties": {
"strategy": { "type": "string" },
"patterns": { "type": "array", "items": { "type": "string" } },
"gaps": { "type": "array", "items": { "type": "string" } }
}
},
"concurrency": {
"type": "object",
"properties": {
"model": { "type": "string" },
"primitives": { "type": "array", "items": { "type": "string" } },
"risks": { "type": "array", "items": { "type": "string" } }
}
},
"extension_points": {
"type": "array",
"items": {
"type": "object",
"required": ["interface", "file"],
"properties": {
"interface": { "type": "string" },
"file": { "type": "string" },
"purpose": { "type": "string" }
}
}
},
"design_decisions": {
"type": "array",
"items": {
"type": "object",
"required": ["decision"],
"properties": {
"decision": { "type": "string" },
"rationale": { "type": "string" },
"trade_offs": { "type": "string" }
}
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,62 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Explain Exploration Results",
"description": "Structured exploration of a codebase topic for explanation",
"type": "object",
"required": ["topic", "entry_points", "key_types", "timestamp"],
"properties": {
"topic": { "type": "string", "minLength": 1 },
"entry_points": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["file", "symbol", "role"],
"properties": {
"file": { "type": "string", "minLength": 1 },
"symbol": { "type": "string", "minLength": 1 },
"role": { "type": "string", "minLength": 1 },
"line": { "type": "integer", "minimum": 1 }
}
}
},
"key_types": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "file", "purpose"],
"properties": {
"name": { "type": "string", "minLength": 1 },
"file": { "type": "string", "minLength": 1 },
"purpose": { "type": "string", "minLength": 1 },
"methods": { "type": "array", "items": { "type": "string" } },
"relationships": { "type": "array", "items": { "type": "string" } }
}
}
},
"call_flows": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "steps"],
"properties": {
"name": { "type": "string" },
"steps": { "type": "array", "items": { "type": "string" } },
"description": { "type": "string" }
}
}
},
"dependencies": {
"type": "object",
"properties": {
"depends_on": { "type": "array", "items": { "type": "string" } },
"depended_by": { "type": "array", "items": { "type": "string" } },
"external": { "type": "array", "items": { "type": "string" } }
}
},
"test_files": { "type": "array", "items": { "type": "string" } },
"config_points": { "type": "array", "items": { "type": "string" } },
"file_count": { "type": "integer", "minimum": 0 },
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,52 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Feature Exploration",
"description": "Codebase exploration for feature implementation",
"type": "object",
"required": ["feature", "scope", "related_files", "timestamp"],
"properties": {
"feature": { "type": "string", "minLength": 1 },
"scope": { "type": "string", "enum": ["small", "medium", "large"] },
"related_files": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["path", "relevance", "reason"],
"properties": {
"path": { "type": "string", "minLength": 1 },
"relevance": { "type": "string", "enum": ["primary", "secondary"] },
"reason": { "type": "string", "minLength": 1 },
"key_symbols": { "type": "array", "items": { "type": "string" } }
}
}
},
"patterns_to_follow": {
"type": "array",
"items": {
"type": "object",
"required": ["name"],
"properties": {
"name": { "type": "string" },
"example_file": { "type": "string" },
"relevance": { "type": "string", "enum": ["must_follow", "should_follow"] }
}
}
},
"affected_modules": { "type": "array", "items": { "type": "string" } },
"test_files": { "type": "array", "items": { "type": "string" } },
"risks": {
"type": "array",
"items": {
"type": "object",
"required": ["description", "severity"],
"properties": {
"description": { "type": "string" },
"severity": { "type": "string", "enum": ["high", "medium", "low"] },
"mitigation": { "type": "string" }
}
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,33 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Feature Implementation Plan",
"description": "Ordered implementation plan for a feature",
"type": "object",
"required": ["feature", "steps", "total_complexity", "timestamp"],
"properties": {
"feature": { "type": "string", "minLength": 5 },
"steps": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "title", "description"],
"properties": {
"id": { "type": "string", "pattern": "^S\\d{2}$" },
"title": { "type": "string" },
"description": { "type": "string" },
"files_to_modify": { "type": "array", "items": { "type": "string" } },
"files_to_create": { "type": "array", "items": { "type": "string" } },
"tests_to_write": { "type": "array", "items": { "type": "string" } },
"acceptance_criteria": { "type": "array", "items": { "type": "string" } },
"complexity": { "type": "string", "enum": ["S", "M", "L"] },
"dependencies": { "type": "array", "items": { "type": "string" } }
}
}
},
"total_complexity": { "type": "string", "enum": ["S", "M", "L", "XL"] },
"branch_name_suggestion": { "type": "string" },
"commit_message_suggestion": { "type": "string" },
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,38 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Investigation Findings",
"type": "object",
"required": [
"root_cause",
"affected_files",
"fix_approach"
],
"properties": {
"root_cause": {
"type": "string",
"description": "Description of the root cause"
},
"affected_files": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of affected file paths"
},
"recent_commits": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of relevant commit hashes"
},
"blast_radius": {
"type": "string",
"description": "Assessment of what else could be affected"
},
"fix_approach": {
"type": "string",
"description": "Recommended approach to fix the issue"
}
}
}

View File

@@ -0,0 +1,65 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GitHub Issue Enhancement Plan",
"description": "Schema for GitHub issue enhancement recommendations",
"type": "object",
"required": ["issues_to_enhance"],
"properties": {
"issues_to_enhance": {
"type": "array",
"items": {
"type": "object",
"required": ["issue_number", "enhancements"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"current_title": {
"type": "string"
},
"suggested_title": {
"type": "string"
},
"current_body": {
"type": "string"
},
"body_template": {
"type": ["string", "null"],
"description": "Enhanced body template preserving original content"
},
"suggested_labels": {
"type": "array",
"items": {
"type": "string"
}
},
"enhancements": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "List of specific enhancements to apply"
},
"rationale": {
"type": "string",
"description": "Why these enhancements are recommended"
},
"priority": {
"type": "string",
"enum": ["high", "medium", "low"]
}
}
}
},
"total_to_enhance": {
"type": "integer",
"minimum": 0
},
"enhancement_strategy": {
"type": "string",
"description": "Overall strategy for enhancements"
}
}
}

View File

@@ -0,0 +1,71 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GitHub Issue Enhancement Results",
"description": "Schema for GitHub issue enhancement execution results",
"type": "object",
"required": ["enhanced_issues", "total_attempted", "total_successful"],
"properties": {
"enhanced_issues": {
"type": "array",
"items": {
"type": "object",
"required": ["issue_number", "success", "changes_made", "url"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"success": {
"type": "boolean"
},
"changes_made": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of changes successfully applied"
},
"title_updated": {
"type": "boolean"
},
"body_updated": {
"type": "boolean"
},
"labels_added": {
"type": "array",
"items": {
"type": "string"
}
},
"comment_added": {
"type": "boolean"
},
"error": {
"type": "string",
"description": "Error message if enhancement failed"
},
"url": {
"type": "string",
"format": "uri"
}
}
}
},
"total_attempted": {
"type": "integer",
"minimum": 0
},
"total_successful": {
"type": "integer",
"minimum": 0
},
"total_failed": {
"type": "integer",
"minimum": 0
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}

View File

@@ -0,0 +1,86 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GitHub Issue Analysis",
"description": "Schema for GitHub issue quality analysis results",
"type": "object",
"required": ["repository", "total_issues", "poor_quality_issues"],
"properties": {
"repository": {
"type": "object",
"required": ["owner", "name"],
"properties": {
"owner": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
}
}
},
"total_issues": {
"type": "integer",
"minimum": 0
},
"analyzed_count": {
"type": "integer",
"minimum": 0
},
"poor_quality_issues": {
"type": "array",
"items": {
"type": "object",
"required": ["number", "title", "quality_score", "problems"],
"properties": {
"number": {
"type": "integer",
"minimum": 1
},
"title": {
"type": "string"
},
"body": {
"type": "string"
},
"quality_score": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"problems": {
"type": "array",
"items": {
"type": "string"
}
},
"recommendations": {
"type": "array",
"items": {
"type": "string"
}
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
},
"url": {
"type": "string",
"format": "uri"
}
}
}
},
"quality_threshold": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}

View File

@@ -0,0 +1,87 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GitHub Enhancement Verification Report",
"description": "Schema for verifying GitHub issue enhancements were applied",
"type": "object",
"required": ["total_enhanced", "successful_enhancements", "failed_enhancements"],
"properties": {
"total_enhanced": {
"type": "integer",
"minimum": 0
},
"successful_enhancements": {
"type": "array",
"items": {
"type": "object",
"required": ["issue_number", "verified_changes"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"verified_changes": {
"type": "array",
"items": {
"type": "string"
}
},
"quality_score_before": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"quality_score_after": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"url": {
"type": "string",
"format": "uri"
}
}
}
},
"failed_enhancements": {
"type": "array",
"items": {
"type": "object",
"required": ["issue_number", "problems"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"problems": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"quality_improvement": {
"type": "object",
"properties": {
"average_score_before": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"average_score_after": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"improvement_percentage": {
"type": "number"
}
}
},
"summary": {
"type": "string",
"description": "Human-readable summary of verification results"
}
}
}

View File

@@ -0,0 +1,26 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Hello World Result",
"description": "Verification result from the hello-world verify step",
"type": "object",
"required": ["success", "message"],
"properties": {
"success": {
"type": "boolean",
"description": "Whether the hello-world pipeline completed successfully"
},
"message": {
"type": "string",
"description": "Human-readable verification result"
},
"checks": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Optional list of individual verification checks performed"
}
},
"additionalProperties": true
}

View File

@@ -0,0 +1,138 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://schema.recinq.com/wave/implement-phase.schema.json",
"title": "Wave Implement Phase Output Contract",
"description": "Validates implementation phase outputs for prototype-driven development pipeline",
"type": "object",
"properties": {
"phase": {
"type": "string",
"const": "implement",
"description": "Phase identifier"
},
"artifacts": {
"type": "object",
"properties": {
"implementation_plan": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*implementation-plan\\.md$",
"description": "Path to implementation plan file"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Implementation plan file must exist"
},
"content_type": {
"type": "string",
"const": "markdown",
"description": "Implementation plan content format"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
},
"progress_checklist": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*implementation-checklist\\.md$",
"description": "Path to progress checklist file"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Progress checklist file must exist"
},
"content_type": {
"type": "string",
"const": "markdown",
"description": "Checklist content format"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
}
},
"required": ["implementation_plan", "progress_checklist"],
"additionalProperties": true
},
"validation": {
"type": "object",
"properties": {
"tests_executed": {
"type": "boolean",
"description": "Whether test suite was executed"
},
"test_results": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"description": "Total number of tests"
},
"passed": {
"type": "integer",
"minimum": 0,
"description": "Number of tests that passed"
},
"failed": {
"type": "integer",
"minimum": 0,
"description": "Number of tests that failed"
},
"coverage_percent": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Test coverage percentage"
}
},
"required": ["total", "passed", "failed"],
"additionalProperties": false
},
"implementation_readiness": {
"type": "string",
"enum": ["ready", "partial", "needs_work"],
"description": "Assessment of implementation readiness"
}
},
"required": ["tests_executed", "implementation_readiness"],
"additionalProperties": false
},
"metadata": {
"type": "object",
"properties": {
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When implementation phase was completed"
},
"duration_seconds": {
"type": "number",
"minimum": 0,
"description": "Time taken for implementation phase"
},
"previous_phases": {
"type": "array",
"items": {
"type": "string",
"enum": ["spec", "docs", "dummy"]
},
"minItems": 3,
"maxItems": 3,
"description": "Previous phases that fed into this implementation"
}
},
"required": ["timestamp", "previous_phases"],
"additionalProperties": false
}
},
"required": ["phase", "artifacts", "validation", "metadata"],
"additionalProperties": false
}

View File

@@ -0,0 +1,44 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Improvement Assessment",
"description": "Structured assessment of code improvement opportunities",
"type": "object",
"required": ["target", "findings", "summary", "timestamp"],
"properties": {
"target": { "type": "string", "minLength": 1 },
"findings": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "category", "title", "location", "description", "impact", "effort"],
"properties": {
"id": { "type": "string", "pattern": "^IMP-[0-9]{3}$" },
"category": {
"type": "string",
"enum": ["error_handling", "performance", "testability", "robustness", "maintainability", "code_quality"]
},
"title": { "type": "string", "minLength": 3 },
"location": { "type": "string", "minLength": 1 },
"description": { "type": "string", "minLength": 10 },
"current_code": { "type": "string" },
"suggested_fix": { "type": "string", "minLength": 5 },
"impact": { "type": "string", "enum": ["high", "medium", "low"] },
"effort": { "type": "string", "enum": ["trivial", "small", "medium", "large"] },
"risk": { "type": "string", "enum": ["none", "low", "medium", "high"] }
}
}
},
"summary": {
"type": "object",
"required": ["total_findings", "overall_quality"],
"properties": {
"total_findings": { "type": "integer", "minimum": 0 },
"by_category": { "type": "object" },
"quick_wins": { "type": "array", "items": { "type": "string" } },
"high_impact": { "type": "array", "items": { "type": "string" } },
"overall_quality": { "type": "string", "minLength": 10 }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,91 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GitHub Issue Implementation Assessment",
"type": "object",
"required": ["implementable", "issue", "assessment"],
"properties": {
"implementable": {
"type": "boolean",
"const": true,
"description": "Must be true for the pipeline to proceed. Set to false if the issue lacks sufficient detail."
},
"issue": {
"type": "object",
"required": ["number", "title", "body", "repository", "url"],
"properties": {
"number": {
"type": "integer",
"minimum": 1
},
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string"
},
"repository": {
"type": "string",
"pattern": "^[^/]+/[^/]+$"
},
"url": {
"type": "string",
"format": "uri"
},
"labels": {
"type": "array",
"items": { "type": "string" }
},
"state": {
"type": "string"
},
"author": {
"type": "string"
},
"comments": {
"type": "array",
"items": { "type": "object" }
}
}
},
"assessment": {
"type": "object",
"required": ["quality_score", "complexity", "skip_steps", "branch_name"],
"properties": {
"quality_score": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "How well-specified the issue is (0-100)"
},
"complexity": {
"type": "string",
"enum": ["trivial", "simple", "medium", "complex"],
"description": "Estimated implementation complexity"
},
"skip_steps": {
"type": "array",
"items": {
"type": "string",
"enum": ["specify", "clarify", "checklist", "analyze"]
},
"description": "Speckit steps that can be skipped because the issue provides sufficient detail"
},
"branch_name": {
"type": "string",
"minLength": 1,
"description": "Suggested branch name for the implementation"
},
"missing_info": {
"type": "array",
"items": { "type": "string" },
"description": "Information that would improve the issue but isn't blocking"
},
"summary": {
"type": "string",
"description": "Brief summary of the assessment"
}
}
}
}
}

View File

@@ -0,0 +1,96 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GitHub Issue Content",
"description": "Parsed content from a GitHub issue for research pipeline processing",
"type": "object",
"required": ["issue_number", "title", "body", "author", "url", "repository"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1,
"description": "GitHub issue number"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "Issue title"
},
"body": {
"type": "string",
"description": "Issue body/description text"
},
"author": {
"type": "object",
"required": ["login"],
"properties": {
"login": {
"type": "string",
"minLength": 1,
"description": "GitHub username of issue author"
}
}
},
"labels": {
"type": "array",
"items": {
"type": "object",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description": "Label name"
},
"color": {
"type": "string",
"description": "Label color hex code"
},
"description": {
"type": "string",
"description": "Label description"
}
}
},
"description": "Labels applied to the issue"
},
"url": {
"type": "string",
"format": "uri",
"description": "HTML URL to the GitHub issue"
},
"repository": {
"type": "object",
"required": ["owner", "name", "full_name"],
"properties": {
"owner": {
"type": "string",
"description": "Repository owner"
},
"name": {
"type": "string",
"description": "Repository name"
},
"full_name": {
"type": "string",
"pattern": "^[^/]+/[^/]+$",
"description": "Full repository name (owner/repo)"
}
}
},
"state": {
"type": "string",
"enum": ["open", "closed"],
"description": "Issue state"
},
"created_at": {
"type": "string",
"format": "date-time",
"description": "Issue creation timestamp"
},
"comments_count": {
"type": "integer",
"minimum": 0,
"description": "Number of comments on the issue"
}
}
}

View File

@@ -0,0 +1,72 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Issue Implementation Plan",
"type": "object",
"required": ["issue_number", "branch_name", "feature_dir", "tasks"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"branch_name": {
"type": "string",
"minLength": 1
},
"feature_dir": {
"type": "string",
"description": "Path to the feature directory under specs/"
},
"spec_file": {
"type": "string",
"description": "Path to the spec.md file"
},
"plan_file": {
"type": "string",
"description": "Path to the plan.md file"
},
"tasks_file": {
"type": "string",
"description": "Path to the tasks.md file"
},
"tasks": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "title", "description"],
"properties": {
"id": {
"type": "string",
"description": "Task identifier"
},
"title": {
"type": "string",
"description": "Brief task title"
},
"description": {
"type": "string",
"description": "Detailed task description"
},
"file_changes": {
"type": "array",
"items": {
"type": "object",
"required": ["path", "action"],
"properties": {
"path": { "type": "string" },
"action": {
"type": "string",
"enum": ["create", "modify", "delete"]
}
}
}
}
}
}
},
"summary": {
"type": "string",
"description": "Brief summary of the implementation plan"
}
}
}

View File

@@ -0,0 +1,116 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Issue Update Context",
"description": "Schema for gathered context about a GitHub issue and recent codebase changes",
"type": "object",
"required": ["repository", "issue", "changes_since_creation", "referenced_files"],
"properties": {
"repository": {
"type": "object",
"required": ["owner", "name"],
"properties": {
"owner": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
}
}
},
"issue": {
"type": "object",
"required": ["number", "title", "body", "url", "created_at"],
"properties": {
"number": {
"type": "integer",
"minimum": 1
},
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string"
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
},
"url": {
"type": "string",
"format": "uri"
},
"created_at": {
"type": "string"
},
"comments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"author": {
"type": "string"
},
"body": {
"type": "string"
},
"created_at": {
"type": "string"
}
}
}
}
}
},
"changes_since_creation": {
"type": "object",
"required": ["commits", "commit_count"],
"properties": {
"commits": {
"type": "array",
"items": {
"type": "string"
}
},
"commit_count": {
"type": "integer",
"minimum": 0
},
"releases": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"referenced_files": {
"type": "object",
"required": ["found", "missing"],
"properties": {
"found": {
"type": "array",
"items": {
"type": "string"
}
},
"missing": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"criticism": {
"type": "string"
},
"project_context": {
"type": "string"
}
}
}

View File

@@ -0,0 +1,73 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Issue Update Draft",
"description": "Schema for a drafted update to a GitHub issue",
"type": "object",
"required": ["issue_number", "original_title", "updated_title", "title_changed", "original_body", "updated_body", "staleness_assessment", "changes_made"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"original_title": {
"type": "string",
"minLength": 1
},
"updated_title": {
"type": "string",
"minLength": 1
},
"title_changed": {
"type": "boolean"
},
"original_body": {
"type": "string"
},
"updated_body": {
"type": "string",
"minLength": 1
},
"staleness_assessment": {
"type": "object",
"required": ["overall_staleness", "sections"],
"properties": {
"overall_staleness": {
"type": "string",
"enum": ["low", "medium", "high", "critical"]
},
"sections": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "status", "reason"],
"properties": {
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": ["STILL_VALID", "OUTDATED", "INCOMPLETE", "WRONG"]
},
"reason": {
"type": "string"
}
}
}
}
}
},
"changes_made": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
},
"criticism_addressed": {
"type": "array",
"items": {
"type": "string"
}
}
}
}

View File

@@ -0,0 +1,57 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Issue Update Result",
"description": "Schema for the result of applying an issue update",
"type": "object",
"required": ["issue_number", "success", "changes_applied", "verification"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"url": {
"type": "string",
"format": "uri"
},
"success": {
"type": "boolean"
},
"title_updated": {
"type": "boolean"
},
"body_updated": {
"type": "boolean"
},
"changes_applied": {
"type": "array",
"items": {
"type": "string"
}
},
"verification": {
"type": "object",
"required": ["title_matches", "body_matches"],
"properties": {
"title_matches": {
"type": "boolean"
},
"body_matches": {
"type": "boolean"
},
"discrepancies": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"staleness_assessment": {
"type": "string",
"enum": ["low", "medium", "high", "critical"]
},
"error": {
"type": ["string", "null"]
}
}
}

View File

@@ -0,0 +1,179 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Plan Exploration",
"description": "Structured codebase exploration output for feature planning",
"type": "object",
"required": ["feature_context", "related_files", "patterns", "affected_modules", "testing_landscape", "risks", "timestamp"],
"properties": {
"feature_context": {
"type": "object",
"required": ["input_summary", "scope_assessment"],
"properties": {
"input_summary": {
"type": "string",
"minLength": 10,
"description": "Brief summary of the feature or task being planned"
},
"scope_assessment": {
"type": "string",
"enum": ["small", "medium", "large", "epic"],
"description": "Estimated scope of the work"
}
}
},
"related_files": {
"type": "array",
"items": {
"type": "object",
"required": ["path", "relevance", "reason"],
"properties": {
"path": {
"type": "string",
"description": "File path relative to project root"
},
"relevance": {
"type": "string",
"enum": ["primary", "secondary", "reference"],
"description": "How relevant this file is to the feature"
},
"reason": {
"type": "string",
"description": "Why this file is relevant"
},
"key_symbols": {
"type": "array",
"items": {
"type": "string"
},
"description": "Important functions, types, or constants in this file"
}
}
},
"description": "Files related to the feature"
},
"patterns": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "name", "description", "relevance"],
"properties": {
"id": {
"type": "string",
"pattern": "^PAT-[0-9]{3}$",
"description": "Pattern identifier"
},
"name": {
"type": "string",
"description": "Short name for the pattern"
},
"description": {
"type": "string",
"description": "What the pattern is and how it works"
},
"example_file": {
"type": "string",
"description": "File that best demonstrates this pattern"
},
"relevance": {
"type": "string",
"enum": ["must_follow", "should_follow", "informational"],
"description": "How important it is to follow this pattern"
}
}
},
"description": "Codebase patterns and conventions discovered"
},
"affected_modules": {
"type": "array",
"items": {
"type": "object",
"required": ["path", "description", "impact_level"],
"properties": {
"path": {
"type": "string",
"description": "Module or package path"
},
"description": {
"type": "string",
"description": "What this module does"
},
"impact_level": {
"type": "string",
"enum": ["direct", "indirect", "none"],
"description": "Level of impact from the planned changes"
},
"dependencies": {
"type": "array",
"items": {
"type": "string"
},
"description": "Modules this one depends on"
},
"dependents": {
"type": "array",
"items": {
"type": "string"
},
"description": "Modules that depend on this one"
}
}
},
"description": "Modules affected by the planned changes"
},
"testing_landscape": {
"type": "object",
"required": ["existing_test_files", "testing_patterns"],
"properties": {
"existing_test_files": {
"type": "array",
"items": {
"type": "string"
},
"description": "Test files relevant to the feature"
},
"testing_patterns": {
"type": "array",
"items": {
"type": "string"
},
"description": "Testing patterns used in the codebase (e.g., table-driven, mocks)"
},
"coverage_gaps": {
"type": "array",
"items": {
"type": "string"
},
"description": "Areas lacking test coverage"
}
}
},
"risks": {
"type": "array",
"items": {
"type": "object",
"required": ["description", "severity"],
"properties": {
"description": {
"type": "string",
"description": "What the risk is"
},
"severity": {
"type": "string",
"enum": ["high", "medium", "low"],
"description": "Risk severity"
},
"mitigation": {
"type": "string",
"description": "How to mitigate this risk"
}
}
},
"description": "Risks identified during exploration"
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When the exploration was completed"
}
}
}

View File

@@ -0,0 +1,235 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Plan Review",
"description": "Structured review of a task breakdown plan",
"type": "object",
"required": ["verdict", "summary", "task_reviews", "cross_cutting_concerns", "recommendations", "risk_assessment", "timestamp", "markdown_content"],
"properties": {
"verdict": {
"type": "object",
"required": ["decision", "confidence", "rationale"],
"properties": {
"decision": {
"type": "string",
"enum": ["approve", "approve_with_notes", "revise"],
"description": "Overall verdict on the plan"
},
"confidence": {
"type": "string",
"enum": ["high", "medium", "low"],
"description": "Confidence in the verdict"
},
"rationale": {
"type": "string",
"minLength": 20,
"description": "Explanation for the verdict"
}
}
},
"summary": {
"type": "object",
"required": ["total_tasks_reviewed", "issues_found", "issues_by_severity", "strengths"],
"properties": {
"total_tasks_reviewed": {
"type": "integer",
"minimum": 1,
"description": "Number of tasks reviewed"
},
"issues_found": {
"type": "integer",
"minimum": 0,
"description": "Total number of issues found"
},
"issues_by_severity": {
"type": "object",
"properties": {
"critical": {
"type": "integer",
"minimum": 0
},
"high": {
"type": "integer",
"minimum": 0
},
"medium": {
"type": "integer",
"minimum": 0
},
"low": {
"type": "integer",
"minimum": 0
}
},
"description": "Issues broken down by severity"
},
"strengths": {
"type": "array",
"items": {
"type": "string"
},
"description": "Things the plan does well"
}
}
},
"task_reviews": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["task_id", "status"],
"properties": {
"task_id": {
"type": "string",
"pattern": "^T[0-9]{2}$",
"description": "ID of the reviewed task"
},
"status": {
"type": "string",
"enum": ["ok", "needs_refinement", "missing_details", "overcomplicated", "wrong_persona", "bad_dependencies"],
"description": "Review status for this task"
},
"issues": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "severity", "description", "suggestion"],
"properties": {
"id": {
"type": "string",
"pattern": "^REV-[0-9]{3}$",
"description": "Issue identifier"
},
"severity": {
"type": "string",
"enum": ["critical", "high", "medium", "low"],
"description": "Issue severity"
},
"description": {
"type": "string",
"description": "What the issue is"
},
"suggestion": {
"type": "string",
"description": "How to fix it"
}
}
},
"description": "Issues found in this task"
}
}
},
"description": "Per-task review results"
},
"cross_cutting_concerns": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "category", "description", "affected_tasks", "recommendation"],
"properties": {
"id": {
"type": "string",
"pattern": "^CC-[0-9]{3}$",
"description": "Concern identifier"
},
"category": {
"type": "string",
"description": "Category of concern (e.g., testing, security, performance)"
},
"description": {
"type": "string",
"description": "What the concern is"
},
"affected_tasks": {
"type": "array",
"items": {
"type": "string",
"pattern": "^T[0-9]{2}$"
},
"description": "Tasks affected by this concern"
},
"recommendation": {
"type": "string",
"description": "Recommended action"
}
}
},
"description": "Concerns that span multiple tasks"
},
"recommendations": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "priority", "description", "type"],
"properties": {
"id": {
"type": "string",
"pattern": "^REC-[0-9]{3}$",
"description": "Recommendation identifier"
},
"priority": {
"type": "string",
"enum": ["critical", "high", "medium", "low"],
"description": "Priority of the recommendation"
},
"description": {
"type": "string",
"description": "What should be done"
},
"type": {
"type": "string",
"enum": ["add_task", "modify_task", "remove_task", "reorder", "split_task", "merge_tasks", "change_persona", "add_dependency"],
"description": "Type of change recommended"
}
}
},
"description": "Actionable recommendations for improving the plan"
},
"risk_assessment": {
"type": "object",
"required": ["overall_risk", "key_risks"],
"properties": {
"overall_risk": {
"type": "string",
"enum": ["high", "medium", "low"],
"description": "Overall risk level of the plan"
},
"key_risks": {
"type": "array",
"items": {
"type": "object",
"required": ["description", "severity", "likelihood"],
"properties": {
"description": {
"type": "string",
"description": "Risk description"
},
"severity": {
"type": "string",
"enum": ["high", "medium", "low"]
},
"likelihood": {
"type": "string",
"enum": ["high", "medium", "low"]
},
"mitigation": {
"type": "string",
"description": "How to mitigate"
}
}
},
"description": "Key risks identified in the plan"
}
}
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When the review was completed"
},
"markdown_content": {
"type": "string",
"minLength": 50,
"description": "Pre-rendered human-readable review in markdown format"
}
}
}

View File

@@ -0,0 +1,40 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Speckit Plan Status",
"description": "Status report from the plan step: research, design, and implementation plan generation.",
"type": "object",
"required": ["plan_file", "feature_dir", "summary"],
"properties": {
"plan_file": {
"type": "string",
"minLength": 1,
"description": "Path to the generated implementation plan file"
},
"feature_dir": {
"type": "string",
"minLength": 1,
"description": "Path to the feature directory"
},
"summary": {
"type": "string",
"minLength": 1,
"description": "Brief description of the plan produced"
},
"research_file": {
"type": "string",
"description": "Path to research.md if generated"
},
"data_model_file": {
"type": "string",
"description": "Path to data-model.md if generated"
},
"constitution_issues": {
"type": "array",
"items": {
"type": "string"
},
"description": "Constitution compliance issues found during planning"
}
},
"additionalProperties": true
}

View File

@@ -0,0 +1,142 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Plan Tasks",
"description": "Structured task breakdown for feature implementation",
"type": "object",
"required": ["feature_summary", "tasks", "execution_order", "metadata", "markdown_content"],
"properties": {
"feature_summary": {
"type": "object",
"required": ["title", "description", "total_tasks", "estimated_total_complexity"],
"properties": {
"title": {
"type": "string",
"minLength": 5,
"description": "Short title for the feature"
},
"description": {
"type": "string",
"minLength": 20,
"description": "Brief description of what the feature does"
},
"total_tasks": {
"type": "integer",
"minimum": 1,
"description": "Total number of tasks in the breakdown"
},
"estimated_total_complexity": {
"type": "string",
"enum": ["S", "M", "L", "XL"],
"description": "Overall complexity estimate"
}
}
},
"tasks": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "title", "description", "persona", "complexity", "acceptance_criteria"],
"properties": {
"id": {
"type": "string",
"pattern": "^T[0-9]{2}$",
"description": "Task identifier (T01, T02, etc.)"
},
"title": {
"type": "string",
"minLength": 5,
"description": "Short task title"
},
"description": {
"type": "string",
"minLength": 20,
"description": "What needs to be done"
},
"persona": {
"type": "string",
"enum": ["navigator", "philosopher", "craftsman", "auditor", "planner", "implementer", "reviewer"],
"description": "Which persona should execute this task"
},
"complexity": {
"type": "string",
"enum": ["S", "M", "L", "XL"],
"description": "Task complexity estimate"
},
"dependencies": {
"type": "array",
"items": {
"type": "string",
"pattern": "^T[0-9]{2}$"
},
"description": "Task IDs that must complete before this one"
},
"acceptance_criteria": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
},
"description": "How to verify the task is complete"
},
"affected_files": {
"type": "array",
"items": {
"type": "string"
},
"description": "Files that will be created or modified"
},
"risks": {
"type": "array",
"items": {
"type": "string"
},
"description": "Risks specific to this task"
}
}
},
"description": "Ordered list of tasks"
},
"execution_order": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["phase", "task_ids"],
"properties": {
"phase": {
"type": "integer",
"minimum": 1,
"description": "Execution phase number"
},
"task_ids": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"pattern": "^T[0-9]{2}$"
},
"description": "Tasks that can run in parallel in this phase"
}
}
},
"description": "Parallelization groups for task execution"
},
"metadata": {
"type": "object",
"required": ["generated_at"],
"properties": {
"generated_at": {
"type": "string",
"format": "date-time",
"description": "When the plan was generated"
}
}
},
"markdown_content": {
"type": "string",
"minLength": 50,
"description": "Pre-rendered human-readable plan in markdown format"
}
}
}

View File

@@ -0,0 +1,43 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Pull Request Result",
"description": "Result of creating a pull request. Used by pipeline steps that produce a PR as their final output.",
"type": "object",
"required": ["pr_url", "pr_number", "branch", "summary"],
"properties": {
"pr_url": {
"type": "string",
"format": "uri",
"description": "URL to the created pull request"
},
"pr_number": {
"type": "integer",
"minimum": 1,
"description": "Pull request number"
},
"branch": {
"type": "string",
"minLength": 1,
"description": "Branch name for the pull request"
},
"summary": {
"type": "string",
"minLength": 1,
"description": "Brief description of what the pull request does"
},
"copilot_review_requested": {
"type": "boolean",
"description": "Whether a Copilot review was requested for the PR"
},
"closes_issue": {
"type": "boolean",
"description": "Whether the PR closes a linked issue"
},
"issue_number": {
"type": "integer",
"minimum": 1,
"description": "Issue number that this PR addresses"
}
},
"additionalProperties": true
}

View File

@@ -0,0 +1,42 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Probed Findings",
"description": "Deep-dive analysis from the recinq probe step",
"type": "object",
"required": ["target", "total_probed", "findings"],
"properties": {
"target": {
"type": "string",
"description": "What was analyzed (path, module, or 'whole-project')"
},
"total_probed": {
"type": "integer",
"description": "Total number of confirmed findings that were probed deeper"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "deeper_analysis", "files"],
"properties": {
"id": {
"type": "string",
"description": "Original finding ID (e.g. DVG-001)"
},
"deeper_analysis": {
"type": "string",
"description": "Extended analysis including dependency graph, second-order effects, and cross-finding patterns"
},
"files": {
"type": "array",
"items": { "type": "string" },
"description": "File paths involved in this finding and its connections"
}
},
"additionalProperties": true
},
"description": "Per-finding deep-dive results"
}
},
"additionalProperties": true
}

View File

@@ -0,0 +1,119 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Project Survey",
"description": "Structured survey of a project for onboarding guide generation",
"type": "object",
"required": ["project", "build", "structure", "timestamp"],
"properties": {
"project": {
"type": "object",
"required": ["name", "language", "purpose"],
"properties": {
"name": { "type": "string", "minLength": 1 },
"language": { "type": "string", "minLength": 1 },
"framework": { "type": "string" },
"purpose": { "type": "string", "minLength": 5 },
"license": { "type": "string" }
}
},
"build": {
"type": "object",
"required": ["commands"],
"properties": {
"commands": {
"type": "object",
"properties": {
"build": { "type": "string" },
"test": { "type": "string" },
"run": { "type": "string" }
}
},
"prerequisites": { "type": "array", "items": { "type": "string" } },
"ci_system": { "type": "string" }
}
},
"structure": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["path", "purpose"],
"properties": {
"path": { "type": "string", "minLength": 1 },
"purpose": { "type": "string", "minLength": 1 },
"key_files": { "type": "array", "items": { "type": "string" } }
}
}
},
"architecture": {
"type": "object",
"properties": {
"entry_points": { "type": "array", "items": { "type": "string" } },
"components": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "role"],
"properties": {
"name": { "type": "string" },
"package": { "type": "string" },
"role": { "type": "string" }
}
}
},
"patterns": { "type": "array", "items": { "type": "string" } }
}
},
"dependencies": {
"type": "object",
"properties": {
"key_deps": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "purpose"],
"properties": {
"name": { "type": "string" },
"purpose": { "type": "string" },
"import": { "type": "string" }
}
}
},
"total_count": { "type": "integer", "minimum": 0 }
}
},
"configuration": {
"type": "object",
"properties": {
"env_vars": { "type": "array", "items": { "type": "string" } },
"config_files": { "type": "array", "items": { "type": "string" } },
"feature_flags": { "type": "array", "items": { "type": "string" } }
}
},
"testing": {
"type": "object",
"properties": {
"framework": { "type": "string" },
"patterns": { "type": "array", "items": { "type": "string" } },
"run_command": { "type": "string" },
"coverage_command": { "type": "string" }
}
},
"workflow": {
"type": "object",
"properties": {
"branch_strategy": { "type": "string" },
"commit_convention": { "type": "string" },
"pr_process": { "type": "string" }
}
},
"documentation": {
"type": "object",
"properties": {
"locations": { "type": "array", "items": { "type": "string" } },
"quality": { "type": "string", "enum": ["good", "adequate", "sparse", "missing"] }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,29 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Code Review Publish Result",
"description": "Result of publishing a code review comment on a pull request",
"type": "object",
"required": ["comment_url", "pr_number"],
"properties": {
"comment_url": {
"type": "string",
"format": "uri",
"description": "URL to the posted review comment"
},
"pr_number": {
"type": "integer",
"minimum": 1,
"description": "PR number that was reviewed"
},
"repository": {
"type": "string",
"pattern": "^[^/]+/[^/]+$",
"description": "Repository full name (owner/repo)"
},
"summary": {
"type": "string",
"description": "Brief summary of the review"
}
},
"additionalProperties": true
}

View File

@@ -0,0 +1,43 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Recinq Context",
"description": "Parsed input context from the recinq gather step",
"type": "object",
"required": ["input_type", "original_input", "focus_hint"],
"properties": {
"input_type": {
"type": "string",
"enum": ["issue", "pr", "local"],
"description": "The kind of input: GitHub issue, GitHub PR, or local path/description"
},
"original_input": {
"type": "string",
"description": "The raw input string exactly as given by the user"
},
"focus_hint": {
"type": "string",
"description": "Summary of what should be simplified or focused on"
},
"url": {
"type": "string",
"description": "GitHub issue or PR URL (empty for local input)"
},
"repo": {
"type": "string",
"description": "GitHub owner/repo (empty for local input)"
},
"number": {
"type": "integer",
"description": "GitHub issue or PR number (0 for local input)"
},
"title": {
"type": "string",
"description": "GitHub issue or PR title (empty for local input)"
},
"body": {
"type": "string",
"description": "GitHub issue or PR body (empty for local input)"
}
},
"additionalProperties": true
}

View File

@@ -0,0 +1,27 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["target_files", "affected_callers", "existing_tests", "integration_points", "risk_assessment"],
"properties": {
"target_files": {
"type": "array",
"items": { "type": "string" }
},
"affected_callers": {
"type": "array",
"items": { "type": "string" }
},
"existing_tests": {
"type": "array",
"items": { "type": "string" }
},
"integration_points": {
"type": "array",
"items": { "type": "string" }
},
"risk_assessment": {
"type": "string",
"enum": ["low", "medium", "high"]
}
}
}

View File

@@ -0,0 +1,178 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Research Findings",
"description": "Web research results organized by topic with sources and insights",
"type": "object",
"required": ["issue_reference", "findings_by_topic", "research_metadata"],
"properties": {
"issue_reference": {
"type": "object",
"required": ["issue_number", "repository"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"repository": {
"type": "string",
"pattern": "^[^/]+/[^/]+$"
}
}
},
"findings_by_topic": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["topic_id", "topic_title", "findings", "confidence_level"],
"properties": {
"topic_id": {
"type": "string",
"pattern": "^TOPIC-[0-9]{3}$",
"description": "Reference to topic ID from research-topics"
},
"topic_title": {
"type": "string",
"description": "Topic title for readability"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "summary", "source", "relevance_score"],
"properties": {
"id": {
"type": "string",
"pattern": "^FINDING-[0-9]{3}$",
"description": "Unique finding identifier"
},
"summary": {
"type": "string",
"minLength": 20,
"maxLength": 2000,
"description": "Summarized finding content"
},
"key_points": {
"type": "array",
"items": {
"type": "string"
},
"description": "Bullet points of key insights"
},
"source": {
"type": "object",
"required": ["url", "title", "type"],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Source URL"
},
"title": {
"type": "string",
"description": "Source page/article title"
},
"type": {
"type": "string",
"enum": ["official_docs", "github_issue", "github_discussion", "stack_overflow", "blog_post", "tutorial", "api_reference", "academic_paper", "forum_post", "other"],
"description": "Type of source"
},
"author": {
"type": "string",
"description": "Author or organization name"
},
"credibility_score": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Source credibility assessment (0-1)"
}
}
},
"relevance_score": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Relevance to the topic (0-1)"
},
"quotes": {
"type": "array",
"items": {
"type": "object",
"required": ["text"],
"properties": {
"text": {
"type": "string",
"description": "Direct quote from source"
},
"context": {
"type": "string",
"description": "Context for the quote"
}
}
},
"description": "Notable quotes from the source"
}
}
},
"description": "Individual research findings for this topic"
},
"confidence_level": {
"type": "string",
"enum": ["high", "medium", "low", "inconclusive"],
"description": "Overall confidence in findings for this topic"
},
"consensus": {
"type": "string",
"description": "Summary of consensus across sources"
},
"gaps": {
"type": "array",
"items": {
"type": "string"
},
"description": "Questions that couldn't be fully answered"
}
}
},
"description": "Research findings organized by topic"
},
"research_metadata": {
"type": "object",
"required": ["started_at", "completed_at"],
"properties": {
"started_at": {
"type": "string",
"format": "date-time",
"description": "Research start timestamp"
},
"completed_at": {
"type": "string",
"format": "date-time",
"description": "Research completion timestamp"
},
"persona": {
"type": "string",
"description": "Wave persona that conducted research"
},
"total_sources_consulted": {
"type": "integer",
"minimum": 0,
"description": "Total number of sources examined"
},
"sources_included": {
"type": "integer",
"minimum": 0,
"description": "Number of sources included in findings"
},
"search_queries_used": {
"type": "array",
"items": {
"type": "string"
},
"description": "Search queries that were used"
}
}
}
}
}

View File

@@ -0,0 +1,206 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Research Report",
"description": "Synthesized research report for GitHub issue comment",
"type": "object",
"required": ["issue_reference", "executive_summary", "detailed_findings", "recommendations", "sources", "markdown_content"],
"properties": {
"issue_reference": {
"type": "object",
"required": ["issue_number", "repository", "title"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"repository": {
"type": "string",
"pattern": "^[^/]+/[^/]+$"
},
"title": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
}
}
},
"executive_summary": {
"type": "object",
"required": ["overview", "key_findings", "primary_recommendation"],
"properties": {
"overview": {
"type": "string",
"minLength": 50,
"maxLength": 1000,
"description": "Brief overview of research conducted and main conclusions"
},
"key_findings": {
"type": "array",
"minItems": 1,
"maxItems": 7,
"items": {
"type": "string"
},
"description": "Top findings as bullet points"
},
"primary_recommendation": {
"type": "string",
"minLength": 20,
"description": "Single most important recommendation"
},
"confidence_assessment": {
"type": "string",
"enum": ["high", "medium", "low"],
"description": "Overall confidence in the research conclusions"
}
}
},
"detailed_findings": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["section_title", "content", "relevance"],
"properties": {
"section_title": {
"type": "string",
"minLength": 3,
"description": "Section heading"
},
"topic_id": {
"type": "string",
"pattern": "^TOPIC-[0-9]{3}$",
"description": "Reference to original topic if applicable"
},
"content": {
"type": "string",
"minLength": 50,
"description": "Detailed markdown content for this section"
},
"relevance": {
"type": "string",
"enum": ["critical", "high", "medium", "supplementary"],
"description": "How relevant this section is to the issue"
},
"code_examples": {
"type": "array",
"items": {
"type": "object",
"required": ["code", "language"],
"properties": {
"code": {
"type": "string",
"description": "Code snippet"
},
"language": {
"type": "string",
"description": "Language for syntax highlighting"
},
"caption": {
"type": "string",
"description": "Explanation of the code"
}
}
},
"description": "Code examples for this section"
},
"related_sources": {
"type": "array",
"items": {
"type": "string",
"pattern": "^SRC-[0-9]{3}$"
},
"description": "References to sources list"
}
}
},
"description": "Detailed findings organized by section"
},
"recommendations": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "object",
"required": ["id", "title", "description", "priority"],
"properties": {
"id": {
"type": "string",
"pattern": "^REC-[0-9]{3}$",
"description": "Recommendation identifier"
},
"title": {
"type": "string",
"minLength": 5,
"maxLength": 100,
"description": "Concise recommendation title"
},
"description": {
"type": "string",
"minLength": 20,
"description": "Detailed recommendation explanation"
},
"priority": {
"type": "string",
"enum": ["critical", "high", "medium", "low"],
"description": "Recommendation priority"
},
"effort_estimate": {
"type": "string",
"enum": ["trivial", "small", "medium", "large", "unknown"],
"description": "Estimated implementation effort"
}
}
},
"description": "Actionable recommendations based on research"
},
"sources": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "url", "title"],
"properties": {
"id": {
"type": "string",
"pattern": "^SRC-[0-9]{3}$",
"description": "Source identifier for cross-referencing"
},
"url": {
"type": "string",
"format": "uri",
"description": "Source URL"
},
"title": {
"type": "string",
"description": "Source title"
},
"type": {
"type": "string",
"enum": ["official_docs", "github_issue", "github_discussion", "stack_overflow", "blog_post", "tutorial", "api_reference", "academic_paper", "forum_post", "other"]
},
"reliability": {
"type": "string",
"enum": ["authoritative", "reputable", "community", "unverified"],
"description": "Source reliability assessment"
}
}
},
"description": "All sources cited in the report"
},
"markdown_content": {
"type": "string",
"minLength": 100,
"description": "Pre-rendered markdown content ready for GitHub comment"
},
"follow_up_questions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Questions that warrant further investigation"
}
}
}

View File

@@ -0,0 +1,106 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Research Topics",
"description": "Extracted research topics from GitHub issue analysis",
"type": "object",
"required": ["issue_reference", "topics"],
"properties": {
"issue_reference": {
"type": "object",
"required": ["issue_number", "repository"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1,
"description": "Reference to source issue number"
},
"repository": {
"type": "string",
"pattern": "^[^/]+/[^/]+$",
"description": "Repository full name (owner/repo)"
},
"title": {
"type": "string",
"description": "Issue title for context"
}
}
},
"topics": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "object",
"required": ["id", "title", "questions", "keywords", "priority"],
"properties": {
"id": {
"type": "string",
"pattern": "^TOPIC-[0-9]{3}$",
"description": "Unique topic identifier (e.g., TOPIC-001)"
},
"title": {
"type": "string",
"minLength": 5,
"maxLength": 200,
"description": "Concise topic title"
},
"description": {
"type": "string",
"description": "Detailed description of what needs to be researched"
},
"questions": {
"type": "array",
"minItems": 1,
"maxItems": 5,
"items": {
"type": "string",
"minLength": 10
},
"description": "Specific questions to answer through research"
},
"keywords": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 2
},
"description": "Search keywords for web research"
},
"priority": {
"type": "string",
"enum": ["critical", "high", "medium", "low"],
"description": "Research priority level"
},
"category": {
"type": "string",
"enum": ["technical", "documentation", "best_practices", "security", "performance", "compatibility", "other"],
"description": "Topic category for organization"
}
}
},
"description": "List of research topics extracted from the issue"
},
"extraction_metadata": {
"type": "object",
"properties": {
"extracted_at": {
"type": "string",
"format": "date-time",
"description": "Timestamp when topics were extracted"
},
"persona": {
"type": "string",
"description": "Wave persona that performed the extraction"
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Confidence score for topic relevance (0-1)"
}
}
}
}
}

View File

@@ -0,0 +1,73 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Security Scan Results",
"description": "Output from the security scan step",
"type": "object",
"required": ["target", "findings", "summary", "timestamp"],
"properties": {
"target": {
"type": "string",
"minLength": 1,
"description": "What was scanned"
},
"attack_surface": {
"type": "array",
"items": {
"type": "object",
"required": ["entry_point", "type", "description"],
"properties": {
"entry_point": { "type": "string", "minLength": 1 },
"type": {
"type": "string",
"enum": ["http_handler", "cli_input", "file_parser", "db_query", "api_call", "ipc", "other"]
},
"description": { "type": "string", "minLength": 1 },
"risk_level": { "type": "string", "enum": ["high", "medium", "low"] }
}
}
},
"findings": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "title", "severity", "category", "location", "description"],
"properties": {
"id": { "type": "string", "pattern": "^SEC-[0-9]{3}$" },
"title": { "type": "string", "minLength": 5 },
"severity": { "type": "string", "enum": ["CRITICAL", "HIGH", "MEDIUM", "LOW"] },
"category": { "type": "string", "minLength": 1 },
"location": { "type": "string", "minLength": 1 },
"description": { "type": "string", "minLength": 10 },
"evidence": { "type": "string" },
"exploitability": { "type": "string" }
}
}
},
"secrets_check": {
"type": "object",
"properties": {
"hardcoded_secrets": { "type": "array", "items": { "type": "string" } },
"insecure_configs": { "type": "array", "items": { "type": "string" } }
}
},
"summary": {
"type": "object",
"required": ["total_findings", "by_severity", "risk_assessment"],
"properties": {
"total_findings": { "type": "integer", "minimum": 0 },
"by_severity": {
"type": "object",
"required": ["CRITICAL", "HIGH", "MEDIUM", "LOW"],
"properties": {
"CRITICAL": { "type": "integer", "minimum": 0 },
"HIGH": { "type": "integer", "minimum": 0 },
"MEDIUM": { "type": "integer", "minimum": 0 },
"LOW": { "type": "integer", "minimum": 0 }
}
},
"risk_assessment": { "type": "string", "minLength": 10 }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,31 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Smoke Test Analysis",
"type": "object",
"required": [
"summary",
"files_examined",
"recommendation"
],
"properties": {
"summary": {
"type": "string",
"minLength": 10,
"description": "Brief summary of the analysis"
},
"files_examined": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "List of files that were examined"
},
"recommendation": {
"type": "string",
"minLength": 10,
"description": "Recommendation based on analysis"
}
},
"additionalProperties": false
}

View File

@@ -0,0 +1,78 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Source Extract",
"description": "Extracted content from a single web source for ingestion",
"type": "object",
"required": ["url", "title", "summary", "key_concepts"],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Original URL that was fetched"
},
"title": {
"type": "string",
"description": "Article or page title"
},
"author": {
"type": "string",
"description": "Author name"
},
"date": {
"type": "string",
"description": "Publication date"
},
"summary": {
"type": "string",
"minLength": 50,
"maxLength": 3000,
"description": "Summary of the source content"
},
"key_concepts": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["concept", "description"],
"properties": {
"concept": {
"type": "string",
"description": "Name of the key concept"
},
"description": {
"type": "string",
"description": "Explanation of the concept as presented in the source"
}
}
},
"description": "Key concepts extracted from the source"
},
"notable_quotes": {
"type": "array",
"items": {
"type": "object",
"required": ["text"],
"properties": {
"text": {
"type": "string",
"description": "Direct quote"
},
"context": {
"type": "string",
"description": "Context for the quote"
}
}
},
"description": "Notable direct quotes from the source"
},
"author_year_key": {
"type": "string",
"pattern": "^[A-Z][a-zA-Z]+[0-9]{4}[a-z]?$",
"description": "Suggested AuthorYear key for bibliographic note (e.g., Willison2026)"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}

View File

@@ -0,0 +1,119 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://schema.recinq.com/wave/spec-phase.schema.json",
"title": "Wave Spec Phase Output Contract",
"description": "Validates spec phase outputs for prototype-driven development pipeline",
"type": "object",
"properties": {
"phase": {
"type": "string",
"const": "spec",
"description": "Phase identifier"
},
"artifacts": {
"type": "object",
"properties": {
"spec": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*spec\\.md$",
"description": "Path to specification file"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Specification file must exist"
},
"content_type": {
"type": "string",
"const": "markdown",
"description": "Specification content format"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
},
"requirements": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*requirements\\.md$",
"description": "Path to requirements file"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Requirements file must exist"
},
"content_type": {
"type": "string",
"const": "markdown",
"description": "Requirements content format"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
}
},
"required": ["spec"],
"additionalProperties": true
},
"validation": {
"type": "object",
"properties": {
"completeness_score": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Specification completeness rating"
},
"clarity_score": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Specification clarity rating"
},
"testability_score": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Specification testability rating"
},
"specification_quality": {
"type": "string",
"enum": ["poor", "fair", "good", "excellent"],
"description": "Overall specification quality assessment"
}
},
"required": ["specification_quality"],
"additionalProperties": false
},
"metadata": {
"type": "object",
"properties": {
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When spec phase was completed"
},
"duration_seconds": {
"type": "number",
"minimum": 0,
"description": "Time taken for spec phase"
},
"input_description": {
"type": "string",
"minLength": 1,
"description": "Original project description input"
}
},
"required": ["timestamp", "input_description"],
"additionalProperties": false
}
},
"required": ["phase", "artifacts", "validation", "metadata"],
"additionalProperties": false
}

View File

@@ -0,0 +1,35 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Speckit Specify Status",
"description": "Status report from the specify step: feature branch creation and spec authoring.",
"type": "object",
"required": ["branch_name", "spec_file", "feature_dir", "summary"],
"properties": {
"branch_name": {
"type": "string",
"minLength": 1,
"description": "Git branch name created for the feature"
},
"spec_file": {
"type": "string",
"minLength": 1,
"description": "Path to the generated spec.md file"
},
"feature_dir": {
"type": "string",
"minLength": 1,
"description": "Path to the feature directory"
},
"summary": {
"type": "string",
"minLength": 1,
"description": "Brief description of what was created"
},
"checklist_status": {
"type": "string",
"enum": ["pass", "fail"],
"description": "Result of self-validation against the quality checklist"
}
},
"additionalProperties": true
}

View File

@@ -0,0 +1,97 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Supervision Evaluation",
"description": "Quality evaluation of both output and process",
"type": "object",
"required": ["output_quality", "process_quality", "overall_score", "timestamp"],
"properties": {
"output_quality": {
"type": "object",
"required": ["correctness", "completeness", "test_coverage", "code_quality"],
"properties": {
"correctness": {
"type": "object",
"required": ["score", "findings"],
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
},
"completeness": {
"type": "object",
"required": ["score", "findings"],
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
},
"test_coverage": {
"type": "object",
"required": ["score", "findings"],
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
},
"code_quality": {
"type": "object",
"required": ["score", "findings"],
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
}
}
},
"process_quality": {
"type": "object",
"required": ["efficiency", "scope_discipline", "tool_usage"],
"properties": {
"efficiency": {
"type": "object",
"required": ["score", "findings"],
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
},
"scope_discipline": {
"type": "object",
"required": ["score", "findings"],
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
},
"tool_usage": {
"type": "object",
"required": ["score", "findings"],
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
},
"token_economy": {
"type": "object",
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
}
}
},
"overall_score": {
"type": "string",
"enum": ["excellent", "good", "adequate", "poor"]
},
"key_strengths": {
"type": "array",
"items": { "type": "string" }
},
"key_concerns": {
"type": "array",
"items": { "type": "string" }
},
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,83 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Supervision Evidence",
"description": "Evidence gathered for supervising completed work",
"type": "object",
"required": ["scope", "commits", "artifacts", "test_results", "timestamp"],
"properties": {
"scope": {
"type": "object",
"description": "What was inspected and how it was identified",
"required": ["description", "detection_method"],
"properties": {
"description": { "type": "string", "minLength": 5 },
"detection_method": {
"type": "string",
"enum": ["auto_detect", "pipeline_run", "branch", "pr", "freeform"]
},
"pipeline_name": { "type": "string" },
"branch_name": { "type": "string" },
"pr_number": { "type": "integer" }
}
},
"commits": {
"type": "array",
"items": {
"type": "object",
"required": ["hash", "message", "files_changed"],
"properties": {
"hash": { "type": "string" },
"message": { "type": "string" },
"author": { "type": "string" },
"files_changed": { "type": "integer" },
"insertions": { "type": "integer" },
"deletions": { "type": "integer" },
"has_session_transcript": { "type": "boolean" },
"transcript_summary": { "type": "string" }
}
}
},
"artifacts": {
"type": "array",
"description": "Pipeline workspace artifacts found",
"items": {
"type": "object",
"required": ["path", "type"],
"properties": {
"path": { "type": "string" },
"type": { "type": "string" },
"size_bytes": { "type": "integer" },
"summary": { "type": "string" }
}
}
},
"test_results": {
"type": "object",
"required": ["ran", "passed"],
"properties": {
"ran": { "type": "boolean" },
"passed": { "type": "boolean" },
"total_tests": { "type": "integer" },
"failed_tests": { "type": "integer" },
"coverage_percent": { "type": "number" },
"details": { "type": "string" }
}
},
"session_transcripts": {
"type": "array",
"description": "Claudit session transcripts from git notes",
"items": {
"type": "object",
"required": ["commit_hash", "summary"],
"properties": {
"commit_hash": { "type": "string" },
"summary": { "type": "string" },
"tool_calls_count": { "type": "integer" },
"notable_detours": { "type": "array", "items": { "type": "string" } },
"errors_encountered": { "type": "array", "items": { "type": "string" } }
}
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}

View File

@@ -0,0 +1,33 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Speckit Tasks Status",
"description": "Status report from the tasks step: dependency-ordered task breakdown generation.",
"type": "object",
"required": ["total_tasks", "feature_dir", "summary"],
"properties": {
"total_tasks": {
"type": "integer",
"minimum": 1,
"description": "Total number of tasks generated"
},
"feature_dir": {
"type": "string",
"minLength": 1,
"description": "Path to the feature directory"
},
"summary": {
"type": "string",
"minLength": 1,
"description": "Brief description of the task breakdown"
},
"tasks_per_story": {
"type": "object",
"description": "Mapping of user story identifiers to task counts"
},
"parallel_opportunities": {
"type": "integer",
"description": "Number of tasks that can be executed in parallel"
}
},
"additionalProperties": true
}

View File

@@ -0,0 +1,50 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Validated Findings",
"description": "Convergent validation results from the recinq converge step",
"type": "object",
"required": ["target", "total_findings", "confirmed", "rejected", "findings"],
"properties": {
"target": {
"type": "string",
"description": "What was analyzed (path, module, or 'whole-project')"
},
"total_findings": {
"type": "integer",
"description": "Total number of divergent findings reviewed"
},
"confirmed": {
"type": "integer",
"description": "Number of findings classified as CONFIRMED or PARTIALLY_CONFIRMED"
},
"rejected": {
"type": "integer",
"description": "Number of findings classified as REJECTED"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "status", "rationale"],
"properties": {
"id": {
"type": "string",
"description": "Original finding ID (e.g. DVG-001)"
},
"status": {
"type": "string",
"enum": ["CONFIRMED", "PARTIALLY_CONFIRMED", "REJECTED"],
"description": "Validation classification"
},
"rationale": {
"type": "string",
"description": "Explanation of why the finding was classified this way"
}
},
"additionalProperties": true
},
"description": "Per-finding validation results"
}
},
"additionalProperties": true
}

View File

@@ -0,0 +1,85 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Web Findings",
"description": "Structured web research results for a given topic",
"type": "object",
"required": ["topic", "sources", "search_queries"],
"properties": {
"topic": {
"type": "string",
"description": "The topic that was researched"
},
"sources": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["url", "title", "key_ideas", "relevance_to_topic"],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Source URL"
},
"title": {
"type": "string",
"description": "Article or page title"
},
"author": {
"type": "string",
"description": "Author name if available"
},
"date": {
"type": "string",
"description": "Publication date if available"
},
"key_ideas": {
"type": "array",
"minItems": 1,
"items": { "type": "string" },
"description": "Key ideas extracted from the source"
},
"quotes": {
"type": "array",
"items": {
"type": "object",
"required": ["text"],
"properties": {
"text": {
"type": "string",
"description": "Direct quote from source"
},
"context": {
"type": "string",
"description": "Context for the quote"
}
}
},
"description": "Notable direct quotes"
},
"relevance_to_topic": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Relevance score (0-1)"
},
"source_type": {
"type": "string",
"enum": ["blog_post", "academic_paper", "documentation", "news_article", "conference_talk", "book_excerpt", "other"],
"description": "Type of source"
}
}
},
"description": "Web sources found and analyzed"
},
"search_queries": {
"type": "array",
"items": { "type": "string" },
"description": "Search queries that were executed"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}

View File

@@ -0,0 +1,72 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Zettel References",
"description": "Notes found in the Zettelkasten relevant to a given topic",
"type": "object",
"required": ["query_keywords", "references", "index_entry_points"],
"properties": {
"query_keywords": {
"type": "array",
"items": { "type": "string" },
"description": "Keywords used for searching"
},
"references": {
"type": "array",
"items": {
"type": "object",
"required": ["filename", "title", "folgezettel_address", "relevance", "key_quotes"],
"properties": {
"filename": {
"type": "string",
"pattern": "^[0-9a-f]{8}\\.md$",
"description": "Hex-ID filename of the note"
},
"title": {
"type": "string",
"description": "Full title including Folgezettel address"
},
"folgezettel_address": {
"type": "string",
"description": "Folgezettel address (e.g., 3.1c2)"
},
"relevance": {
"type": "string",
"enum": ["high", "medium", "low"],
"description": "Relevance to the search topic"
},
"key_quotes": {
"type": "array",
"items": { "type": "string" },
"description": "Notable passages from the note"
},
"section": {
"type": "string",
"description": "Top-level section the note belongs to"
}
}
},
"description": "Relevant notes found in the Zettelkasten"
},
"index_entry_points": {
"type": "array",
"items": {
"type": "object",
"required": ["keyword", "filename", "title"],
"properties": {
"keyword": { "type": "string" },
"filename": { "type": "string" },
"title": { "type": "string" }
}
},
"description": "Entry points from the index note"
},
"total_notes_searched": {
"type": "integer",
"minimum": 0
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}