Compare commits
31 Commits
feat/impl-
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
843620fc2f
|
|||
|
93fdc7d0f9
|
|||
|
ab6dabd542
|
|||
|
ba4d3fc89d
|
|||
|
bf20e9d39e
|
|||
|
967069a65c
|
|||
| 4762952822 | |||
|
1e4b4430ee
|
|||
|
f216db8953
|
|||
|
be99f9e4f7
|
|||
|
d0dbd3c257
|
|||
| 45fc2a43f0 | |||
| 8c96d6aa64 | |||
| b25e6a4e20 | |||
| c5641a8364 | |||
| 00e9bd18e5 | |||
| 1baff9075c | |||
| 3d6ff645fe | |||
| dc048eba4e | |||
| 05a683388b | |||
| ae8f9fef45 | |||
| 8d567390e5 | |||
| 372320b807 | |||
| 61acd692f4 | |||
| 672a2d28cb | |||
| 433379155b | |||
| 756841f8c2 | |||
| c97fce1f29 | |||
| 8b6a88ad59 | |||
| 4476d26140 | |||
| f28531fb4c |
37
.claude/commands/wave.md
Normal file
37
.claude/commands/wave.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
description: Run Wave multi-agent pipelines
|
||||
---
|
||||
|
||||
## User Input
|
||||
|
||||
```text
|
||||
$ARGUMENTS
|
||||
```
|
||||
|
||||
## Instructions
|
||||
|
||||
You are invoking the Wave multi-agent pipeline orchestrator. Parse the user's arguments to determine which subcommand to run.
|
||||
|
||||
### Subcommand Routing
|
||||
|
||||
Based on the arguments provided:
|
||||
|
||||
**If arguments start with "run"** (e.g., `/wave run impl-issue -- "fix bug"`):
|
||||
- Execute: `wave run <remaining arguments>`
|
||||
- Example: `wave run -v impl-issue -- "implement feature X"`
|
||||
|
||||
**If arguments start with "status"** (e.g., `/wave status`):
|
||||
- Execute: `wave list runs --limit 10`
|
||||
- Show the output to the user in a readable format
|
||||
|
||||
**If arguments start with "list"** (e.g., `/wave list`):
|
||||
- Execute: `wave list pipelines`
|
||||
- Show available pipelines to the user
|
||||
|
||||
**If arguments start with "logs"** (e.g., `/wave logs <run-id>`):
|
||||
- Execute: `wave logs <run-id>`
|
||||
- Show the pipeline run logs
|
||||
|
||||
**If no arguments or "help"**:
|
||||
- Show available subcommands: run, status, list, logs
|
||||
- Example usage for each subcommand
|
||||
@@ -1,15 +1,6 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(git add:*)",
|
||||
"Bash(git commit:*)",
|
||||
"Bash(git push:*)",
|
||||
"Bash(npm run build:*)",
|
||||
"Bash(grep:*)",
|
||||
"Bash(npm run format.lessons:*)",
|
||||
"Bash(xargs:*)",
|
||||
"Bash(cat:*)",
|
||||
"Bash(prettier --write:*)"
|
||||
],
|
||||
"deny": ["Read(./.env)", "Read(./.env.*)", "Read(./secrets/**)"]
|
||||
},
|
||||
|
||||
95
.claude/wave-agent.md
Normal file
95
.claude/wave-agent.md
Normal file
@@ -0,0 +1,95 @@
|
||||
---
|
||||
model: claude-haiku-4-5
|
||||
disallowedTools:
|
||||
- TodoWrite
|
||||
permissionMode: bypassPermissions
|
||||
---
|
||||
# Wave Agent Protocol
|
||||
|
||||
You are operating within a Wave pipeline step.
|
||||
|
||||
## Operational Context
|
||||
|
||||
- **Fresh context**: You have no memory of prior steps. Each step starts clean.
|
||||
- **Artifact I/O**: Read inputs from injected artifacts. Write outputs to artifact files.
|
||||
- **Workspace isolation**: You are in an ephemeral worktree. Changes here do not affect the source repository directly.
|
||||
- **Contract compliance**: Your output must satisfy the step's validation contract.
|
||||
- **Permission enforcement**: Tool permissions are enforced by the orchestrator. Do not attempt to bypass restrictions listed below.
|
||||
- **Real execution only**: Always use actual tool calls to execute commands. Never generate simulated or fabricated output.
|
||||
- **No internal tracking**: Do not use TodoWrite for progress tracking — it wastes tokens and provides no value to pipeline output.
|
||||
|
||||
## Artifact Conventions
|
||||
|
||||
When reading artifacts from previous steps:
|
||||
- Artifacts are injected into `.wave/artifacts/` with the name specified in the pipeline
|
||||
- Read the artifact content to understand what the previous step produced
|
||||
- Do not assume artifact structure — read and verify
|
||||
- **Error handling**: If a required artifact is missing or empty, fail immediately with
|
||||
a clear error message (e.g., "Required artifact 'findings' not found at .wave/artifacts/findings").
|
||||
If a JSON artifact fails to parse, report the parse error and do not proceed with stale assumptions
|
||||
|
||||
When writing output artifacts:
|
||||
- Write to the path specified in the step's `output_artifacts` configuration
|
||||
- JSON artifacts must be valid JSON matching the contract schema if specified
|
||||
- Markdown artifacts should be well-structured with clear sections
|
||||
- Always write output before the step completes — missing artifacts fail the contract
|
||||
|
||||
Path conventions:
|
||||
- `.wave/artifacts/` — injected artifacts from prior steps (read-only input)
|
||||
- `.wave/output/` or the path from `output_artifacts` — your step's output files that contract validation checks
|
||||
|
||||
## Tool Usage
|
||||
|
||||
- Use the Edit tool for file modifications. Do NOT use perl, sed, or awk
|
||||
- Use the Write tool for new files. Do NOT use cat heredocs or echo redirection
|
||||
- Use the Read tool for reading files. Do NOT use cat, head, or tail
|
||||
- Use the Grep tool for searching. Do NOT use grep or rg via Bash
|
||||
- Do NOT push to remote — that happens in the create-pr step
|
||||
- Do NOT include Co-Authored-By or AI attribution in commits
|
||||
- Do NOT use GitHub closing keywords (`Closes #N`, `Fixes #N`, `Resolves #N`) in commit messages or PR bodies — use `Related to #N` instead. Closing keywords auto-close issues on merge, which causes false-positive closures when PRs only partially address an issue
|
||||
|
||||
These rules apply to both the main context AND any Task subagents you spawn.
|
||||
|
||||
## Template Variables Reference
|
||||
|
||||
Pipeline prompts may contain template variables that are resolved at runtime.
|
||||
These are the available variables:
|
||||
|
||||
| Variable | Type | Description |
|
||||
|----------|------|-------------|
|
||||
| `{{ input }}` | string | CLI input passed to the pipeline via `wave run <pipeline> -- "<input>"` |
|
||||
| `{{ pipeline_id }}` | string | Unique identifier for the current pipeline run |
|
||||
| `{{ forge.cli_tool }}` | string | Git forge CLI tool name (`gh`, `glab`, `tea`, `bb`) |
|
||||
| `{{ forge.pr_command }}` | string | Forge-specific PR subcommand (`pr`, `mr`, `pulls`) |
|
||||
| `{{ project.test_command }}` | string | Project's test command (e.g., `go test ./...`) |
|
||||
| `{{ project.build_command }}` | string | Project's build command (e.g., `go build ./...`) |
|
||||
| `{{ project.skill }}` | string | Project's primary skill identifier |
|
||||
|
||||
Variables are resolved before the prompt is passed to the persona. Unresolved
|
||||
variables (e.g., typos) are detected by contract validation and cause step failure.
|
||||
|
||||
## Inter-Step Communication
|
||||
|
||||
- Each step receives only the artifacts explicitly injected via `inject_artifacts`
|
||||
- You cannot access outputs from steps that are not listed as dependencies
|
||||
- Your output artifacts will be available to downstream steps that depend on you
|
||||
- Keep artifact content focused and machine-parseable where possible
|
||||
|
||||
|
||||
---
|
||||
|
||||
#
|
||||
|
||||
You are operating as the persona.
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Restrictions
|
||||
|
||||
The following restrictions are enforced by the pipeline orchestrator.
|
||||
|
||||
### Denied Tools
|
||||
|
||||
- `TodoWrite`
|
||||
|
||||
15
.dockerignore
Normal file
15
.dockerignore
Normal file
@@ -0,0 +1,15 @@
|
||||
node_modules
|
||||
dist
|
||||
coverage
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
.git
|
||||
.github
|
||||
.idea
|
||||
.vscode
|
||||
.direnv
|
||||
.wave
|
||||
.claude
|
||||
.navi
|
||||
*.log
|
||||
5
.env.example
Normal file
5
.env.example
Normal file
@@ -0,0 +1,5 @@
|
||||
# Build-time secrets for Vite (baked into static bundle).
|
||||
# Copy to .env (gitignored). Used by docker compose build via args.
|
||||
|
||||
VITE_SUPABASE_URL=https://<your-project>.supabase.co
|
||||
VITE_SUPABASE_ANON_KEY=<anon-key>
|
||||
37
.gitea/workflows/ci.yml
Normal file
37
.gitea/workflows/ci.yml
Normal file
@@ -0,0 +1,37 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
pull_request:
|
||||
branches: [main]
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: git.librete.ch/public/runner-image:v0.1.0@sha256:9d1e204fe8e06b7d16cdc8da0c7077fa4171daef62099cc8c09993834e576ca5
|
||||
timeout-minutes: 10
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Cache npm
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.npm
|
||||
key: npm-${{ hashFiles('package-lock.json') }}
|
||||
restore-keys: npm-
|
||||
|
||||
- name: Install
|
||||
run: npm ci --no-audit --no-fund
|
||||
|
||||
- name: Test
|
||||
run: npm test
|
||||
|
||||
- name: Build (sanity)
|
||||
env:
|
||||
# Build needs VITE_* injected at compile time. Use placeholders
|
||||
# for CI sanity build — real values are passed at deploy time.
|
||||
VITE_SUPABASE_URL: https://example.invalid
|
||||
VITE_SUPABASE_ANON_KEY: ci-placeholder
|
||||
run: npm run build
|
||||
89
.gitea/workflows/deploy.yml
Normal file
89
.gitea/workflows/deploy.yml
Normal file
@@ -0,0 +1,89 @@
|
||||
name: Deploy
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
tags: ["v*"]
|
||||
|
||||
# Required repository secrets:
|
||||
# REGISTRY git.librete.ch
|
||||
# REGISTRY_USER libretech (user-namespace packages — bot can't push)
|
||||
# REGISTRY_PASS libretech-user PAT scoped write:package
|
||||
# DEPLOY_HOST root@cloud.librete.ch
|
||||
# DEPLOY_KEY passphrase-less private key on netcup root authorized_keys
|
||||
# DEPLOY_PATH /srv/cc
|
||||
# HEALTH_URL https://cc.cloud.librete.ch/
|
||||
# VITE_SUPABASE_URL public; baked at build time
|
||||
# VITE_SUPABASE_ANON_KEY public-by-design supabase anon key; baked at build time
|
||||
#
|
||||
# Required repository variable:
|
||||
# DEPLOY_ENABLED "true" to enable
|
||||
#
|
||||
# Image: git.librete.ch/public/code-crispies
|
||||
# main pushes → :main + :sha-<short>
|
||||
# tag pushes → :<tag> + :latest
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: git.librete.ch/public/runner-image:v0.1.0@sha256:9d1e204fe8e06b7d16cdc8da0c7077fa4171daef62099cc8c09993834e576ca5
|
||||
timeout-minutes: 20
|
||||
if: ${{ vars.DEPLOY_ENABLED == 'true' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: docker/setup-buildx-action@v3
|
||||
|
||||
- uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ secrets.REGISTRY }}
|
||||
username: ${{ secrets.REGISTRY_USER }}
|
||||
password: ${{ secrets.REGISTRY_PASS }}
|
||||
|
||||
- id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: ${{ secrets.REGISTRY }}/public/code-crispies
|
||||
tags: |
|
||||
type=ref,event=branch
|
||||
type=ref,event=tag
|
||||
type=sha,format=short
|
||||
type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/') }}
|
||||
|
||||
- uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
build-args: |
|
||||
VITE_SUPABASE_URL=${{ secrets.VITE_SUPABASE_URL }}
|
||||
VITE_SUPABASE_ANON_KEY=${{ secrets.VITE_SUPABASE_ANON_KEY }}
|
||||
|
||||
- name: Deploy to host
|
||||
env:
|
||||
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
|
||||
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
|
||||
DEPLOY_PATH: ${{ secrets.DEPLOY_PATH }}
|
||||
HEALTH_URL: ${{ secrets.HEALTH_URL }}
|
||||
run: |
|
||||
mkdir -p ~/.ssh && chmod 700 ~/.ssh
|
||||
printf '%s\n' "$DEPLOY_KEY" > ~/.ssh/id_deploy
|
||||
chmod 600 ~/.ssh/id_deploy
|
||||
|
||||
ssh -i ~/.ssh/id_deploy \
|
||||
-o StrictHostKeyChecking=accept-new \
|
||||
"$DEPLOY_HOST" \
|
||||
"set -e
|
||||
cd '$DEPLOY_PATH'
|
||||
git pull --ff-only
|
||||
docker compose pull
|
||||
docker compose up -d --remove-orphans"
|
||||
|
||||
# Wait up to 60s for the cc vhost to return a 200.
|
||||
for i in $(seq 1 12); do
|
||||
curl -fsS "$HEALTH_URL" >/dev/null && exit 0
|
||||
sleep 5
|
||||
done
|
||||
echo "deploy health check failed"; exit 1
|
||||
14
.gitignore
vendored
14
.gitignore
vendored
@@ -7,4 +7,16 @@ coverage
|
||||
.env.local
|
||||
|
||||
# Claude Code local settings (user-specific)
|
||||
.claude/settings.local.json
|
||||
.claude/settings.local.json
|
||||
.claude_settings.json
|
||||
|
||||
# Auto-Claude
|
||||
.auto-claude
|
||||
.worktrees
|
||||
|
||||
# Wave ephemeral data
|
||||
.wave/workspaces
|
||||
.wave/traces
|
||||
.wave/artifacts
|
||||
.wave/output
|
||||
.wave/state.db
|
||||
|
||||
5
.wave/.onboarded
Normal file
5
.wave/.onboarded
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"completed": true,
|
||||
"completed_at": "2026-03-28T12:38:49.56259042+01:00",
|
||||
"version": 1
|
||||
}
|
||||
0
.wave/.ontology-stale
Normal file
0
.wave/.ontology-stale
Normal file
44
.wave/contracts/adr-context.schema.json
Normal file
44
.wave/contracts/adr-context.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
38
.wave/contracts/adr-options.schema.json
Normal file
38
.wave/contracts/adr-options.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
60
.wave/contracts/analysis-report.schema.json
Normal file
60
.wave/contracts/analysis-report.schema.json
Normal 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
|
||||
}
|
||||
84
.wave/contracts/audit-findings.schema.json
Normal file
84
.wave/contracts/audit-findings.schema.json
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Audit Findings",
|
||||
"description": "Output from the audit-items step: per-item fidelity classification with evidence",
|
||||
"type": "object",
|
||||
"required": ["findings", "summary", "timestamp"],
|
||||
"properties": {
|
||||
"findings": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["item_number", "item_type", "item_url", "title", "category", "evidence"],
|
||||
"properties": {
|
||||
"item_number": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"description": "Source issue or PR number"
|
||||
},
|
||||
"item_type": {
|
||||
"type": "string",
|
||||
"enum": ["issue", "pr"],
|
||||
"description": "Whether the source item is an issue or PR"
|
||||
},
|
||||
"item_url": {
|
||||
"type": "string",
|
||||
"description": "Full GitHub URL for reference"
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"description": "Item title for readability"
|
||||
},
|
||||
"category": {
|
||||
"type": "string",
|
||||
"enum": ["verified", "partial", "regressed", "obsolete", "unverifiable"],
|
||||
"description": "Fidelity classification"
|
||||
},
|
||||
"evidence": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "File paths, code references, and commit SHAs supporting the classification"
|
||||
},
|
||||
"unmet_criteria": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Specific acceptance criteria not satisfied (for partial/regressed)"
|
||||
},
|
||||
"remediation": {
|
||||
"type": "string",
|
||||
"description": "Actionable description of what needs to change (empty for verified/obsolete)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Per-item audit findings"
|
||||
},
|
||||
"summary": {
|
||||
"type": "object",
|
||||
"required": ["total_audited"],
|
||||
"properties": {
|
||||
"total_audited": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "Total number of items audited"
|
||||
},
|
||||
"by_category": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"verified": { "type": "integer", "minimum": 0 },
|
||||
"partial": { "type": "integer", "minimum": 0 },
|
||||
"regressed": { "type": "integer", "minimum": 0 },
|
||||
"obsolete": { "type": "integer", "minimum": 0 },
|
||||
"unverifiable": { "type": "integer", "minimum": 0 }
|
||||
},
|
||||
"description": "Count of findings per fidelity category"
|
||||
}
|
||||
}
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When the audit was performed"
|
||||
}
|
||||
}
|
||||
}
|
||||
116
.wave/contracts/audit-inventory.schema.json
Normal file
116
.wave/contracts/audit-inventory.schema.json
Normal file
@@ -0,0 +1,116 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Audit Inventory",
|
||||
"description": "Output from the collect-inventory step: all closed issues and merged PRs with extracted metadata",
|
||||
"type": "object",
|
||||
"required": ["scope", "items", "timestamp"],
|
||||
"properties": {
|
||||
"scope": {
|
||||
"type": "object",
|
||||
"required": ["mode"],
|
||||
"properties": {
|
||||
"mode": {
|
||||
"type": "string",
|
||||
"enum": ["full", "time_range", "label"],
|
||||
"description": "How the inventory was scoped"
|
||||
},
|
||||
"filter": {
|
||||
"type": "string",
|
||||
"description": "The filter expression applied (e.g., 'last 30 days', 'label:enhancement')"
|
||||
},
|
||||
"repository": {
|
||||
"type": "string",
|
||||
"pattern": "^[^/]+/[^/]+$",
|
||||
"description": "Repository full name (owner/repo)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"items": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["number", "type", "title", "url", "close_reason", "closed_at"],
|
||||
"properties": {
|
||||
"number": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"description": "GitHub issue or PR number"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"enum": ["issue", "pr"],
|
||||
"description": "Whether this is an issue or pull request"
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"description": "Issue or PR title"
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"description": "Full GitHub URL"
|
||||
},
|
||||
"body": {
|
||||
"type": "string",
|
||||
"description": "Full issue/PR body text"
|
||||
},
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Associated labels"
|
||||
},
|
||||
"close_reason": {
|
||||
"type": "string",
|
||||
"description": "Why the item was closed (completed, merged, not_planned)"
|
||||
},
|
||||
"closed_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When the item was closed"
|
||||
},
|
||||
"linked_prs": {
|
||||
"type": "array",
|
||||
"items": { "type": "integer" },
|
||||
"description": "PR numbers linked to this issue"
|
||||
},
|
||||
"linked_commits": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Commit SHAs associated with this item"
|
||||
},
|
||||
"acceptance_criteria": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Extracted acceptance criteria from the body"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "All inventory items to audit"
|
||||
},
|
||||
"summary": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"total_issues": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "Number of closed issues in inventory"
|
||||
},
|
||||
"total_prs": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "Number of merged PRs in inventory"
|
||||
},
|
||||
"excluded_not_planned": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "Number of issues excluded due to not_planned close reason"
|
||||
}
|
||||
}
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When the inventory was collected"
|
||||
}
|
||||
}
|
||||
}
|
||||
80
.wave/contracts/audit-publish-result.schema.json
Normal file
80
.wave/contracts/audit-publish-result.schema.json
Normal file
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Audit Publish Result",
|
||||
"description": "Output from the publish step: GitHub issue creation results for actionable findings",
|
||||
"type": "object",
|
||||
"required": ["success", "repository", "timestamp"],
|
||||
"properties": {
|
||||
"success": {
|
||||
"type": "boolean",
|
||||
"description": "Whether the publish operation completed successfully"
|
||||
},
|
||||
"repository": {
|
||||
"type": "string",
|
||||
"pattern": "^[^/]+/[^/]+$",
|
||||
"description": "Repository full name (owner/repo)"
|
||||
},
|
||||
"issues_created": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["number", "url", "source_item", "category"],
|
||||
"properties": {
|
||||
"number": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"description": "Created GitHub issue number"
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"description": "URL to the created issue"
|
||||
},
|
||||
"source_item": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"description": "Original issue/PR number that this finding references"
|
||||
},
|
||||
"category": {
|
||||
"type": "string",
|
||||
"enum": ["partial", "regressed"],
|
||||
"description": "Fidelity category of the finding"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "List of GitHub issues created for fixable gaps"
|
||||
},
|
||||
"issues_skipped": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "Number of findings skipped (verified, obsolete, unverifiable, or no remediation)"
|
||||
},
|
||||
"skipped": {
|
||||
"type": "boolean",
|
||||
"description": "True if no issues were created because all findings are verified/obsolete"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
133
.wave/contracts/audit-triage-report.schema.json
Normal file
133
.wave/contracts/audit-triage-report.schema.json
Normal file
@@ -0,0 +1,133 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Audit Triage Report",
|
||||
"description": "Output from the compose-triage step: aggregated findings with prioritized action list",
|
||||
"type": "object",
|
||||
"required": ["metadata", "summary", "findings", "prioritized_actions"],
|
||||
"properties": {
|
||||
"metadata": {
|
||||
"type": "object",
|
||||
"required": ["scope", "timestamp", "repository", "total_items_audited"],
|
||||
"properties": {
|
||||
"scope": {
|
||||
"type": "string",
|
||||
"description": "Audit scope description (e.g., 'full', 'last 30 days', 'label:enhancement')"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"description": "When the triage report was composed"
|
||||
},
|
||||
"repository": {
|
||||
"type": "string",
|
||||
"pattern": "^[^/]+/[^/]+$",
|
||||
"description": "Repository full name (owner/repo)"
|
||||
},
|
||||
"total_items_audited": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "Total number of items that were audited"
|
||||
}
|
||||
}
|
||||
},
|
||||
"summary": {
|
||||
"type": "object",
|
||||
"required": ["verified", "partial", "regressed", "obsolete", "unverifiable"],
|
||||
"properties": {
|
||||
"verified": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "Items fully implemented and intact"
|
||||
},
|
||||
"partial": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "Items with some acceptance criteria unmet"
|
||||
},
|
||||
"regressed": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "Items that were implemented but later broken"
|
||||
},
|
||||
"obsolete": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "Items no longer applicable to current codebase"
|
||||
},
|
||||
"unverifiable": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "Items with no traceable implementation artifacts"
|
||||
}
|
||||
}
|
||||
},
|
||||
"findings": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["item_number", "item_type", "item_url", "title", "category", "evidence"],
|
||||
"properties": {
|
||||
"item_number": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"description": "Source issue or PR number"
|
||||
},
|
||||
"item_type": {
|
||||
"type": "string",
|
||||
"enum": ["issue", "pr"],
|
||||
"description": "Whether the source item is an issue or PR"
|
||||
},
|
||||
"item_url": {
|
||||
"type": "string",
|
||||
"description": "Full GitHub URL"
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"description": "Item title"
|
||||
},
|
||||
"category": {
|
||||
"type": "string",
|
||||
"enum": ["verified", "partial", "regressed", "obsolete", "unverifiable"],
|
||||
"description": "Fidelity classification"
|
||||
},
|
||||
"evidence": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Supporting evidence (file paths, code refs, commit SHAs)"
|
||||
},
|
||||
"remediation": {
|
||||
"type": "string",
|
||||
"description": "Actionable fix description"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "All findings grouped by category (regressed first, then partial, then unverifiable, then obsolete, then verified)"
|
||||
},
|
||||
"prioritized_actions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["priority", "item_number", "action_description"],
|
||||
"properties": {
|
||||
"priority": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"description": "Priority rank (1 = highest)"
|
||||
},
|
||||
"item_number": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"description": "Source issue or PR number"
|
||||
},
|
||||
"action_description": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"description": "What needs to be done to resolve this finding"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Prioritized list of remediation actions (regressed first, then partial)"
|
||||
}
|
||||
}
|
||||
}
|
||||
69
.wave/contracts/bootstrap-assessment.schema.json
Normal file
69
.wave/contracts/bootstrap-assessment.schema.json
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Bootstrap Project Assessment",
|
||||
"type": "object",
|
||||
"required": ["flavour", "project_intent", "existing_files", "scaffold_recommendations"],
|
||||
"properties": {
|
||||
"flavour": {
|
||||
"type": "string",
|
||||
"description": "Detected or configured project language/framework (e.g. go, rust, node, bun, python, csharp)"
|
||||
},
|
||||
"project_intent": {
|
||||
"type": "string",
|
||||
"description": "Description of the project's purpose derived from user input, README, or design docs"
|
||||
},
|
||||
"existing_files": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "List of files already present in the project directory"
|
||||
},
|
||||
"scaffold_recommendations": {
|
||||
"type": "object",
|
||||
"required": ["files_to_create", "build_system", "ci_provider"],
|
||||
"properties": {
|
||||
"files_to_create": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Recommended files to scaffold for this flavour"
|
||||
},
|
||||
"build_system": {
|
||||
"type": "string",
|
||||
"description": "Recommended build system (e.g. cargo, go, npm, bun, pip, dotnet)"
|
||||
},
|
||||
"ci_provider": {
|
||||
"type": "string",
|
||||
"description": "CI provider to generate config for (e.g. github-actions)"
|
||||
},
|
||||
"gitignore_patterns": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Patterns to include in .gitignore"
|
||||
}
|
||||
}
|
||||
},
|
||||
"wave_config": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"language": {
|
||||
"type": "string",
|
||||
"description": "Value of project.language from wave.yaml if set"
|
||||
},
|
||||
"build_command": {
|
||||
"type": "string",
|
||||
"description": "Value of project.build_command from wave.yaml if set"
|
||||
},
|
||||
"test_command": {
|
||||
"type": "string",
|
||||
"description": "Value of project.test_command from wave.yaml if set"
|
||||
}
|
||||
},
|
||||
"description": "Relevant configuration from wave.yaml"
|
||||
}
|
||||
}
|
||||
}
|
||||
55
.wave/contracts/categorized-changes.schema.json
Normal file
55
.wave/contracts/categorized-changes.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
36
.wave/contracts/checklist-status.schema.json
Normal file
36
.wave/contracts/checklist-status.schema.json
Normal 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
|
||||
}
|
||||
30
.wave/contracts/clarify-status.schema.json
Normal file
30
.wave/contracts/clarify-status.schema.json
Normal 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
|
||||
}
|
||||
84
.wave/contracts/comment-result.schema.json
Normal file
84
.wave/contracts/comment-result.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
53
.wave/contracts/commit-analysis.schema.json
Normal file
53
.wave/contracts/commit-analysis.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
81
.wave/contracts/convergent-proposals.schema.json
Normal file
81
.wave/contracts/convergent-proposals.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
24
.wave/contracts/coverage-analysis.schema.json
Normal file
24
.wave/contracts/coverage-analysis.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
}
|
||||
71
.wave/contracts/dead-code-issue-result.schema.json
Normal file
71
.wave/contracts/dead-code-issue-result.schema.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Dead Code Issue Result",
|
||||
"description": "Output from the create-issue step: GitHub issue creation result for dead code findings",
|
||||
"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"
|
||||
},
|
||||
"finding_count": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"description": "Number of dead code findings 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 findings 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
47
.wave/contracts/dead-code-scan.schema.json
Normal file
47
.wave/contracts/dead-code-scan.schema.json
Normal file
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"$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]{1,4}$" },
|
||||
"type": {
|
||||
"type": "string",
|
||||
"enum": ["unused_export", "unreachable", "orphaned_file", "redundant", "stale_test", "unused_import", "commented_code", "duplicate_signature"]
|
||||
},
|
||||
"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" },
|
||||
"suggested_action": {
|
||||
"type": "string",
|
||||
"enum": ["remove", "consolidate", "investigate"],
|
||||
"description": "Recommended action for this finding"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"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" }
|
||||
}
|
||||
}
|
||||
48
.wave/contracts/dead-code-verification.schema.json
Normal file
48
.wave/contracts/dead-code-verification.schema.json
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"type": "object",
|
||||
"required": ["verdict", "items_removed", "items_skipped", "lines_removed", "test_status", "summary"],
|
||||
"properties": {
|
||||
"verdict": {
|
||||
"type": "string",
|
||||
"const": "CLEAN",
|
||||
"description": "Must be CLEAN for the pipeline to proceed. Output NEEDS_REVIEW to intentionally fail contract validation and halt the pipeline."
|
||||
},
|
||||
"items_removed": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["id", "description", "justification"],
|
||||
"properties": {
|
||||
"id": { "type": "string" },
|
||||
"description": { "type": "string" },
|
||||
"justification": { "type": "string" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"items_skipped": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["id", "description", "reason"],
|
||||
"properties": {
|
||||
"id": { "type": "string" },
|
||||
"description": { "type": "string" },
|
||||
"reason": { "type": "string" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"lines_removed": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"test_status": {
|
||||
"type": "string",
|
||||
"enum": ["passing", "failing", "not_run"]
|
||||
},
|
||||
"summary": {
|
||||
"type": "string",
|
||||
"description": "Human-readable summary of the verification"
|
||||
}
|
||||
}
|
||||
}
|
||||
22
.wave/contracts/debug-hypotheses.schema.json
Normal file
22
.wave/contracts/debug-hypotheses.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
21
.wave/contracts/debug-reproduction.schema.json
Normal file
21
.wave/contracts/debug-reproduction.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
}
|
||||
41
.wave/contracts/diff-analysis.schema.json
Normal file
41
.wave/contracts/diff-analysis.schema.json
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"type": "object",
|
||||
"required": ["pr_metadata", "files_changed", "modules_affected", "related_tests", "breaking_changes"],
|
||||
"properties": {
|
||||
"pr_metadata": {
|
||||
"type": "object",
|
||||
"required": ["number", "url", "head_branch", "base_branch"],
|
||||
"properties": {
|
||||
"number": { "type": "integer", "description": "PR number" },
|
||||
"url": { "type": "string", "description": "Full PR URL" },
|
||||
"head_branch": { "type": "string", "description": "Source branch name" },
|
||||
"base_branch": { "type": "string", "description": "Target branch name" }
|
||||
}
|
||||
},
|
||||
"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" }
|
||||
}
|
||||
}
|
||||
}
|
||||
82
.wave/contracts/divergent-findings.schema.json
Normal file
82
.wave/contracts/divergent-findings.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
87
.wave/contracts/doc-consistency-report.schema.json
Normal file
87
.wave/contracts/doc-consistency-report.schema.json
Normal 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]{1,4}$",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
38
.wave/contracts/doc-fix-scan.schema.json
Normal file
38
.wave/contracts/doc-fix-scan.schema.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Doc Fix Scan Results",
|
||||
"description": "Documentation inconsistency scan for doc-fix 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]{1,4}$" },
|
||||
"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" }
|
||||
}
|
||||
}
|
||||
71
.wave/contracts/doc-issue-result.schema.json
Normal file
71
.wave/contracts/doc-issue-result.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
112
.wave/contracts/doc-scan-results.schema.json
Normal file
112
.wave/contracts/doc-scan-results.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
112
.wave/contracts/docs-phase.schema.json
Normal file
112
.wave/contracts/docs-phase.schema.json
Normal 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
|
||||
}
|
||||
110
.wave/contracts/dummy-phase.schema.json
Normal file
110
.wave/contracts/dummy-phase.schema.json
Normal 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
|
||||
}
|
||||
69
.wave/contracts/enhancement-plan.schema.json
Normal file
69
.wave/contracts/enhancement-plan.schema.json
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "GitHub Issue Enhancement Plan",
|
||||
"description": "Schema for GitHub issue enhancement recommendations",
|
||||
"type": "object",
|
||||
"required": ["repository", "issues_to_enhance"],
|
||||
"properties": {
|
||||
"repository": {
|
||||
"type": "string",
|
||||
"description": "Repository in owner/repo format"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
71
.wave/contracts/enhancement-results.schema.json
Normal file
71
.wave/contracts/enhancement-results.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
87
.wave/contracts/epic-assessment.schema.json
Normal file
87
.wave/contracts/epic-assessment.schema.json
Normal file
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Epic Issue Assessment",
|
||||
"description": "Schema for epic/umbrella issue analysis results",
|
||||
"type": "object",
|
||||
"required": ["is_epic", "issue", "analysis"],
|
||||
"properties": {
|
||||
"is_epic": {
|
||||
"type": "boolean",
|
||||
"const": true,
|
||||
"description": "Must be true for the pipeline to proceed. Set to false if the issue is not an epic or umbrella issue."
|
||||
},
|
||||
"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" }
|
||||
},
|
||||
"existing_issues": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"number": { "type": "integer" },
|
||||
"title": { "type": "string" },
|
||||
"labels": { "type": "array", "items": { "type": "string" } }
|
||||
}
|
||||
},
|
||||
"description": "Existing issues in the repo to avoid duplication"
|
||||
}
|
||||
}
|
||||
},
|
||||
"analysis": {
|
||||
"type": "object",
|
||||
"required": ["scope_summary", "proposed_issues_count", "complexity"],
|
||||
"properties": {
|
||||
"scope_summary": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"description": "Brief summary of what the epic covers"
|
||||
},
|
||||
"proposed_issues_count": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 15,
|
||||
"description": "Number of sub-issues to create"
|
||||
},
|
||||
"complexity": {
|
||||
"type": "string",
|
||||
"enum": ["small", "medium", "large", "epic"],
|
||||
"description": "Overall complexity of the work"
|
||||
},
|
||||
"key_themes": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Major themes or categories of work identified"
|
||||
},
|
||||
"risks": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Identified risks or concerns"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
28
.wave/contracts/epic-children.schema.json
Normal file
28
.wave/contracts/epic-children.schema.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Epic Children",
|
||||
"description": "Schema for the list of open child issue URLs belonging to an epic",
|
||||
"type": "object",
|
||||
"required": ["parent_url", "repo", "child_urls"],
|
||||
"properties": {
|
||||
"parent_url": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "URL of the parent epic issue"
|
||||
},
|
||||
"repo": {
|
||||
"type": "string",
|
||||
"pattern": "^[^/]+/[^/]+$",
|
||||
"description": "Repository in owner/repo format"
|
||||
},
|
||||
"child_urls": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"minItems": 1,
|
||||
"description": "URLs of open child issues to implement"
|
||||
}
|
||||
}
|
||||
}
|
||||
49
.wave/contracts/epic-report.schema.json
Normal file
49
.wave/contracts/epic-report.schema.json
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Epic Implementation Report",
|
||||
"description": "Output from the report step of ops-implement-epic: implementation status for each subissue",
|
||||
"type": "object",
|
||||
"required": ["parent_issue", "results", "summary"],
|
||||
"properties": {
|
||||
"parent_issue": {
|
||||
"type": "object",
|
||||
"required": ["owner", "repo", "number", "url"],
|
||||
"properties": {
|
||||
"owner": { "type": "string" },
|
||||
"repo": { "type": "string" },
|
||||
"number": { "type": "integer", "minimum": 1 },
|
||||
"url": { "type": "string", "format": "uri" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"results": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["number", "title", "status"],
|
||||
"properties": {
|
||||
"number": { "type": "integer", "minimum": 1 },
|
||||
"title": { "type": "string" },
|
||||
"status": { "type": "string", "enum": ["implemented", "failed", "skipped"] },
|
||||
"pr_url": { "type": "string" },
|
||||
"pr_number": { "type": "integer" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"summary": {
|
||||
"type": "object",
|
||||
"required": ["total_subissues", "implemented", "failed", "skipped"],
|
||||
"properties": {
|
||||
"total_subissues": { "type": "integer", "minimum": 0 },
|
||||
"implemented": { "type": "integer", "minimum": 0 },
|
||||
"failed": { "type": "integer", "minimum": 0 },
|
||||
"skipped": { "type": "integer", "minimum": 0 },
|
||||
"comment_posted": { "type": "boolean" },
|
||||
"comment_url": { "type": "string" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
52
.wave/contracts/epic-scope-plan.schema.json
Normal file
52
.wave/contracts/epic-scope-plan.schema.json
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Epic Scope Plan",
|
||||
"description": "Output from the fetch-scope step of ops-implement-epic: parsed subissues with dependency graph",
|
||||
"type": "object",
|
||||
"required": ["parent_issue", "subissues", "total_subissues", "open_subissues"],
|
||||
"properties": {
|
||||
"parent_issue": {
|
||||
"type": "object",
|
||||
"required": ["owner", "repo", "number", "title", "url"],
|
||||
"properties": {
|
||||
"owner": { "type": "string" },
|
||||
"repo": { "type": "string" },
|
||||
"number": { "type": "integer", "minimum": 1 },
|
||||
"title": { "type": "string", "minLength": 1 },
|
||||
"url": { "type": "string", "format": "uri" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"subissues": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["number", "repository", "title", "url", "state", "dependencies"],
|
||||
"properties": {
|
||||
"number": { "type": "integer", "minimum": 1 },
|
||||
"repository": { "type": "string", "pattern": "^[^/]+/[^/]+$" },
|
||||
"title": { "type": "string", "minLength": 1 },
|
||||
"url": { "type": "string", "format": "uri" },
|
||||
"state": { "type": "string", "enum": ["OPEN", "CLOSED"] },
|
||||
"complexity": { "type": "string", "enum": ["S", "M", "L", "XL"] },
|
||||
"dependencies": {
|
||||
"type": "array",
|
||||
"items": { "type": "integer", "minimum": 1 }
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"total_subissues": { "type": "integer", "minimum": 1 },
|
||||
"open_subissues": { "type": "integer", "minimum": 0 },
|
||||
"dependency_tiers": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "array",
|
||||
"items": { "type": "integer", "minimum": 1 }
|
||||
}
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
76
.wave/contracts/explain-analysis.schema.json
Normal file
76
.wave/contracts/explain-analysis.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
62
.wave/contracts/explain-exploration.schema.json
Normal file
62
.wave/contracts/explain-exploration.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
52
.wave/contracts/feature-exploration.schema.json
Normal file
52
.wave/contracts/feature-exploration.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
33
.wave/contracts/feature-plan.schema.json
Normal file
33
.wave/contracts/feature-plan.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
38
.wave/contracts/findings.schema.json
Normal file
38
.wave/contracts/findings.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
37
.wave/contracts/gap-analysis.schema.json
Normal file
37
.wave/contracts/gap-analysis.schema.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Gap Analysis",
|
||||
"description": "Ontology vs. code comparison identifying implementation gaps",
|
||||
"type": "object",
|
||||
"required": ["ontology_version", "gaps", "coverage"],
|
||||
"properties": {
|
||||
"ontology_version": {
|
||||
"type": "string"
|
||||
},
|
||||
"gaps": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["id", "type", "entity", "description", "severity"],
|
||||
"properties": {
|
||||
"id": { "type": "string", "pattern": "^GAP-[0-9]+$" },
|
||||
"type": { "type": "string", "enum": ["missing_entity", "missing_relationship", "missing_invariant", "partial_implementation", "stale_code", "undocumented_behavior"] },
|
||||
"entity": { "type": "string" },
|
||||
"description": { "type": "string" },
|
||||
"severity": { "type": "string", "enum": ["low", "medium", "high", "critical"] },
|
||||
"code_locations": { "type": "array", "items": { "type": "string" } },
|
||||
"recommendation": { "type": "string" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"coverage": {
|
||||
"type": "object",
|
||||
"required": ["entities_covered", "entities_total", "percentage"],
|
||||
"properties": {
|
||||
"entities_covered": { "type": "integer", "minimum": 0 },
|
||||
"entities_total": { "type": "integer", "minimum": 0 },
|
||||
"percentage": { "type": "number", "minimum": 0, "maximum": 100 }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
33
.wave/contracts/gate-result.schema.json
Normal file
33
.wave/contracts/gate-result.schema.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Gate Result",
|
||||
"description": "Gate step resolution metadata",
|
||||
"type": "object",
|
||||
"required": ["gate_type", "status", "resolved_at"],
|
||||
"properties": {
|
||||
"gate_type": {
|
||||
"type": "string",
|
||||
"enum": ["approval", "pr_merge", "ci_pass", "timer"]
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": ["approved", "rejected", "timed_out", "merged", "checks_passed", "checks_failed"]
|
||||
},
|
||||
"resolved_at": {
|
||||
"type": "string",
|
||||
"format": "date-time"
|
||||
},
|
||||
"resolved_by": {
|
||||
"type": "string",
|
||||
"description": "User or system that resolved the gate"
|
||||
},
|
||||
"wait_duration_seconds": {
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
},
|
||||
"metadata": {
|
||||
"type": "object",
|
||||
"description": "Gate-type-specific metadata (PR number, check suite ID, etc.)"
|
||||
}
|
||||
}
|
||||
}
|
||||
29
.wave/contracts/gh-pr-comment-result.schema.json
Normal file
29
.wave/contracts/gh-pr-comment-result.schema.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "GitHub PR Comment Result",
|
||||
"description": "Result of posting a code review comment on a GitHub 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
|
||||
}
|
||||
65
.wave/contracts/github-enhancement-plan.schema.json
Normal file
65
.wave/contracts/github-enhancement-plan.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
71
.wave/contracts/github-enhancement-results.schema.json
Normal file
71
.wave/contracts/github-enhancement-results.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
86
.wave/contracts/github-issue-analysis.schema.json
Normal file
86
.wave/contracts/github-issue-analysis.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
87
.wave/contracts/github-verification-report.schema.json
Normal file
87
.wave/contracts/github-verification-report.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
26
.wave/contracts/hello-world-result.schema.json
Normal file
26
.wave/contracts/hello-world-result.schema.json
Normal 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
|
||||
}
|
||||
138
.wave/contracts/implement-phase.schema.json
Normal file
138
.wave/contracts/implement-phase.schema.json
Normal 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
|
||||
}
|
||||
44
.wave/contracts/improvement-assessment.schema.json
Normal file
44
.wave/contracts/improvement-assessment.schema.json
Normal 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]{1,4}$" },
|
||||
"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", "description": "Optional: code snippet illustrating the issue" },
|
||||
"suggested_fix": { "type": "string", "minLength": 5, "description": "Optional: recommended fix or improvement" },
|
||||
"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" }
|
||||
}
|
||||
}
|
||||
36
.wave/contracts/interface-design.schema.json
Normal file
36
.wave/contracts/interface-design.schema.json
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Interface Design",
|
||||
"description": "Go interface definitions derived from ontology entities",
|
||||
"type": "object",
|
||||
"required": ["package_name", "interfaces"],
|
||||
"properties": {
|
||||
"package_name": {
|
||||
"type": "string"
|
||||
},
|
||||
"interfaces": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["name", "description", "methods"],
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"description": { "type": "string" },
|
||||
"source_entity": { "type": "string" },
|
||||
"methods": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["name", "signature"],
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"signature": { "type": "string" },
|
||||
"description": { "type": "string" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
91
.wave/contracts/issue-assessment.schema.json
Normal file
91
.wave/contracts/issue-assessment.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
96
.wave/contracts/issue-content.schema.json
Normal file
96
.wave/contracts/issue-content.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
72
.wave/contracts/issue-impl-plan.schema.json
Normal file
72
.wave/contracts/issue-impl-plan.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
116
.wave/contracts/issue-update-context.schema.json
Normal file
116
.wave/contracts/issue-update-context.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
73
.wave/contracts/issue-update-draft.schema.json
Normal file
73
.wave/contracts/issue-update-draft.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
57
.wave/contracts/issue-update-result.schema.json
Normal file
57
.wave/contracts/issue-update-result.schema.json
Normal 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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
36
.wave/contracts/iteration-state.schema.json
Normal file
36
.wave/contracts/iteration-state.schema.json
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Iteration State",
|
||||
"description": "Per-iteration status for resumability tracking",
|
||||
"type": "object",
|
||||
"required": ["step_id", "total_items", "items"],
|
||||
"properties": {
|
||||
"step_id": {
|
||||
"type": "string"
|
||||
},
|
||||
"total_items": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"completed_items": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"items": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["index", "status"],
|
||||
"properties": {
|
||||
"index": { "type": "integer", "minimum": 0 },
|
||||
"status": { "type": "string", "enum": ["pending", "running", "completed", "failed", "skipped"] },
|
||||
"input": { "type": "string" },
|
||||
"error": { "type": "string" },
|
||||
"pipeline_run_id": { "type": "string" },
|
||||
"started_at": { "type": "string", "format": "date-time" },
|
||||
"completed_at": { "type": "string", "format": "date-time" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
38
.wave/contracts/ontology-evolution.schema.json
Normal file
38
.wave/contracts/ontology-evolution.schema.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Ontology Evolution",
|
||||
"description": "Categorized ontology changes with effort and risk assessment",
|
||||
"type": "object",
|
||||
"required": ["base_version", "changes", "summary"],
|
||||
"properties": {
|
||||
"base_version": {
|
||||
"type": "string",
|
||||
"description": "Reference to the base ontology being evolved"
|
||||
},
|
||||
"changes": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["id", "category", "description", "effort", "risk"],
|
||||
"properties": {
|
||||
"id": { "type": "string", "pattern": "^EVO-[0-9]+$" },
|
||||
"category": { "type": "string", "enum": ["add_entity", "modify_entity", "remove_entity", "add_relationship", "modify_relationship", "remove_relationship", "add_invariant", "modify_boundary"] },
|
||||
"description": { "type": "string" },
|
||||
"effort": { "type": "string", "enum": ["trivial", "small", "medium", "large", "epic"] },
|
||||
"risk": { "type": "string", "enum": ["low", "medium", "high", "critical"] },
|
||||
"rationale": { "type": "string" },
|
||||
"affected_entities": { "type": "array", "items": { "type": "string" } }
|
||||
}
|
||||
}
|
||||
},
|
||||
"summary": {
|
||||
"type": "object",
|
||||
"required": ["total_changes", "breaking_changes"],
|
||||
"properties": {
|
||||
"total_changes": { "type": "integer", "minimum": 0 },
|
||||
"breaking_changes": { "type": "integer", "minimum": 0 },
|
||||
"estimated_effort": { "type": "string" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
89
.wave/contracts/ontology.schema.json
Normal file
89
.wave/contracts/ontology.schema.json
Normal file
@@ -0,0 +1,89 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Ontology Extraction",
|
||||
"description": "Domain ontology with entities, relationships, invariants, behaviors, and boundaries",
|
||||
"type": "object",
|
||||
"required": ["domain", "entities", "relationships", "boundaries"],
|
||||
"properties": {
|
||||
"domain": {
|
||||
"type": "string",
|
||||
"description": "Domain name being modeled"
|
||||
},
|
||||
"entities": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["name", "type", "description", "properties"],
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"type": { "type": "string", "enum": ["aggregate", "entity", "value_object", "event", "service"] },
|
||||
"description": { "type": "string" },
|
||||
"properties": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["name", "type"],
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"type": { "type": "string" },
|
||||
"required": { "type": "boolean" },
|
||||
"description": { "type": "string" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"relationships": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["from", "to", "type"],
|
||||
"properties": {
|
||||
"from": { "type": "string" },
|
||||
"to": { "type": "string" },
|
||||
"type": { "type": "string", "enum": ["has_many", "has_one", "belongs_to", "depends_on", "produces", "consumes"] },
|
||||
"description": { "type": "string" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"invariants": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["name", "description", "scope"],
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"description": { "type": "string" },
|
||||
"scope": { "type": "string" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"behaviors": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["name", "actor", "description"],
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"actor": { "type": "string" },
|
||||
"description": { "type": "string" },
|
||||
"triggers": { "type": "array", "items": { "type": "string" } },
|
||||
"outcomes": { "type": "array", "items": { "type": "string" } }
|
||||
}
|
||||
}
|
||||
},
|
||||
"boundaries": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["name", "entities"],
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"description": { "type": "string" },
|
||||
"entities": { "type": "array", "items": { "type": "string" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
179
.wave/contracts/plan-exploration.schema.json
Normal file
179
.wave/contracts/plan-exploration.schema.json
Normal 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]{1,4}$",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
235
.wave/contracts/plan-review.schema.json
Normal file
235
.wave/contracts/plan-review.schema.json
Normal 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]{1,4}$",
|
||||
"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]{1,4}$",
|
||||
"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]{1,4}$",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
40
.wave/contracts/plan-status.schema.json
Normal file
40
.wave/contracts/plan-status.schema.json
Normal 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
|
||||
}
|
||||
142
.wave/contracts/plan-tasks.schema.json
Normal file
142
.wave/contracts/plan-tasks.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
43
.wave/contracts/pr-result.schema.json
Normal file
43
.wave/contracts/pr-result.schema.json
Normal 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
|
||||
}
|
||||
42
.wave/contracts/probed-findings.schema.json
Normal file
42
.wave/contracts/probed-findings.schema.json
Normal 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
|
||||
}
|
||||
119
.wave/contracts/project-survey.schema.json
Normal file
119
.wave/contracts/project-survey.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
43
.wave/contracts/recinq-context.schema.json
Normal file
43
.wave/contracts/recinq-context.schema.json
Normal 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
|
||||
}
|
||||
27
.wave/contracts/refactor-analysis.schema.json
Normal file
27
.wave/contracts/refactor-analysis.schema.json
Normal 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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
178
.wave/contracts/research-findings.schema.json
Normal file
178
.wave/contracts/research-findings.schema.json
Normal 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]{1,4}$",
|
||||
"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]{1,4}$",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
206
.wave/contracts/research-report.schema.json
Normal file
206
.wave/contracts/research-report.schema.json
Normal 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]{1,4}$",
|
||||
"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]{1,4}$"
|
||||
},
|
||||
"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]{1,4}$",
|
||||
"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]{1,4}$",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
106
.wave/contracts/research-topics.schema.json
Normal file
106
.wave/contracts/research-topics.schema.json
Normal 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]{1,4}$",
|
||||
"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)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
73
.wave/contracts/scope-plan.schema.json
Normal file
73
.wave/contracts/scope-plan.schema.json
Normal file
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Epic Scope Plan and Results",
|
||||
"description": "Schema for epic decomposition plan with created sub-issues",
|
||||
"type": "object",
|
||||
"required": ["parent_issue", "created_issues", "total_created"],
|
||||
"properties": {
|
||||
"parent_issue": {
|
||||
"type": "object",
|
||||
"required": ["number", "url", "repository"],
|
||||
"properties": {
|
||||
"number": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"repository": {
|
||||
"type": "string",
|
||||
"pattern": "^[^/]+/[^/]+$"
|
||||
}
|
||||
}
|
||||
},
|
||||
"created_issues": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["number", "title", "url", "success"],
|
||||
"properties": {
|
||||
"number": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"labels": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" }
|
||||
},
|
||||
"success": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"complexity": {
|
||||
"type": "string",
|
||||
"enum": ["S", "M", "L", "XL"]
|
||||
},
|
||||
"dependencies": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"description": "Titles or numbers of issues this depends on"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"total_created": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"total_failed": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
78
.wave/contracts/scope-report.schema.json
Normal file
78
.wave/contracts/scope-report.schema.json
Normal file
@@ -0,0 +1,78 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "Epic Scope Verification Report",
|
||||
"description": "Schema for verification of created sub-issues",
|
||||
"type": "object",
|
||||
"required": ["parent_issue", "verified_issues", "summary"],
|
||||
"properties": {
|
||||
"parent_issue": {
|
||||
"type": "object",
|
||||
"required": ["number", "url"],
|
||||
"properties": {
|
||||
"number": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
}
|
||||
}
|
||||
},
|
||||
"verified_issues": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["number", "title", "exists"],
|
||||
"properties": {
|
||||
"number": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
},
|
||||
"exists": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"has_acceptance_criteria": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"references_parent": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"summary": {
|
||||
"type": "object",
|
||||
"required": ["total_verified", "total_valid", "total_issues_created"],
|
||||
"properties": {
|
||||
"total_verified": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"total_valid": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"total_issues_created": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"comment_posted": {
|
||||
"type": "boolean",
|
||||
"description": "Whether a summary comment was posted on the epic"
|
||||
},
|
||||
"comment_url": {
|
||||
"type": "string",
|
||||
"description": "URL of the summary comment if posted"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
73
.wave/contracts/security-scan.schema.json
Normal file
73
.wave/contracts/security-scan.schema.json
Normal 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]{1,4}$" },
|
||||
"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" }
|
||||
}
|
||||
}
|
||||
119
.wave/contracts/spec-phase.schema.json
Normal file
119
.wave/contracts/spec-phase.schema.json
Normal 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
|
||||
}
|
||||
35
.wave/contracts/specify-status.schema.json
Normal file
35
.wave/contracts/specify-status.schema.json
Normal 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
|
||||
}
|
||||
97
.wave/contracts/supervision-evaluation.schema.json
Normal file
97
.wave/contracts/supervision-evaluation.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
83
.wave/contracts/supervision-evidence.schema.json
Normal file
83
.wave/contracts/supervision-evidence.schema.json
Normal 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" }
|
||||
}
|
||||
}
|
||||
33
.wave/contracts/tasks-status.schema.json
Normal file
33
.wave/contracts/tasks-status.schema.json
Normal 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
|
||||
}
|
||||
50
.wave/contracts/validated-findings.schema.json
Normal file
50
.wave/contracts/validated-findings.schema.json
Normal 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
|
||||
}
|
||||
106
.wave/logs/audit-doc-20260328-173838-e10a.log
Normal file
106
.wave/logs/audit-doc-20260328-173838-e10a.log
Normal file
@@ -0,0 +1,106 @@
|
||||
[17:38:38] → scan-changes (navigator) [claude-haiku via claude]
|
||||
[17:38:38] scan-changes Executing agent
|
||||
[17:39:00] scan-changes Bash → git log --oneline --name-status main...
|
||||
[17:39:01] scan-changes Bash → git status --porcelain
|
||||
[17:39:02] scan-changes Glob → **/*.md
|
||||
[17:39:02] scan-changes Glob → docs/**/*
|
||||
[17:39:09] scan-changes Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:39:11] scan-changes Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:39:12] scan-changes Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:39:12] scan-changes Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:39:14] scan-changes Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:39:14] scan-changes Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:39:15] scan-changes Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:39:22] scan-changes Glob → schemas/**/*
|
||||
[17:39:23] scan-changes Glob → src/**/*.js
|
||||
[17:39:25] scan-changes Bash → cat /home/mwc/Coding/code-crispies/....
|
||||
[17:39:26] scan-changes Glob → lessons/**/*.json
|
||||
[17:39:31] scan-changes Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:39:32] scan-changes Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:39:33] scan-changes Grep → @(param|returns|typedef|type|descrip...
|
||||
[17:39:34] scan-changes Grep → ^\s*(export\s+)?(function|const|clas...
|
||||
[17:39:52] scan-changes Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[17:39:54] scan-changes Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:39:56] scan-changes Glob → CONTRIBUTING.md
|
||||
[17:39:57] scan-changes Glob → CHANGELOG.md
|
||||
[17:40:11] scan-changes Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[17:40:12] scan-changes Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[17:40:15] scan-changes Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:40:57] scan-changes Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[17:41:07] scan-changes Processing results
|
||||
[17:41:07] scan-changes validating contract
|
||||
[17:41:07] ✓ scan-changes completed (148.9s, 63.6k in / 7.6k out)
|
||||
[17:41:07] ├─ artifact: .wave/output/scan-results.json (written)
|
||||
[17:41:07] └─ contract: doc-scan-results.schema.json ✓ valid
|
||||
[17:41:07] → analyze-consistency (reviewer)
|
||||
[17:41:07] analyze-consistency Executing agent
|
||||
[17:41:15] analyze-consistency Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[17:41:16] analyze-consistency Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[17:41:21] analyze-consistency Bash → file /home/mwc/Coding/code-crispies/...
|
||||
[17:41:22] analyze-consistency Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:41:27] analyze-consistency Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:41:28] analyze-consistency Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:41:28] analyze-consistency Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:41:42] analyze-consistency Agent →
|
||||
[17:41:44] analyze-consistency Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:41:45] analyze-consistency Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:41:46] analyze-consistency Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:41:46] analyze-consistency Glob → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:41:48] analyze-consistency Glob → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:41:48] analyze-consistency Glob → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:41:51] analyze-consistency Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:41:52] analyze-consistency Grep → process\.env|import\.meta\.env
|
||||
[17:41:52] analyze-consistency Grep → SUPABASE|supabase|auth|AUTH
|
||||
[17:41:54] analyze-consistency Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:41:55] analyze-consistency Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:41:58] analyze-consistency Grep → VITE_|process\.env
|
||||
[17:42:22] analyze-consistency Bash → mkdir -p /home/mwc/Coding/code-crisp...
|
||||
[17:43:07] analyze-consistency Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[17:43:18] analyze-consistency Bash → node -e "
|
||||
const report = require('./...
|
||||
[17:43:25] analyze-consistency Processing results
|
||||
[17:43:25] analyze-consistency validating contract
|
||||
[17:43:25] ✓ analyze-consistency completed (138.1s, 27.3k in / 6.1k out)
|
||||
[17:43:25] ├─ artifact: .wave/output/consistency-report.json (written)
|
||||
[17:43:25] └─ contract: doc-consistency-report.schema.json ✓ valid
|
||||
[17:43:25] → compose-report (navigator) [claude-haiku via claude]
|
||||
[17:43:25] compose-report Executing agent
|
||||
[17:43:32] compose-report Bash → ls .wave/artifacts/report
|
||||
[17:43:36] compose-report Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:43:40] compose-report Bash → ls .wave/output 2>/dev/null || mkdir...
|
||||
[17:43:52] compose-report Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[17:44:00] compose-report Processing results
|
||||
[17:44:00] compose-report validating contract
|
||||
[17:44:00] ✓ compose-report completed (34.9s, 8.0k in / 1.7k out)
|
||||
[17:44:00] ├─ artifact: .wave/output/report.md (written)
|
||||
[17:44:00] └─ contract: non_empty_file ✓ valid
|
||||
[17:44:00] → publish (craftsman) [claude-opus via claude]
|
||||
[17:44:00] publish Executing agent
|
||||
[17:44:07] publish Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[17:44:08] publish Bash → gh repo view --json nameWithOwner --...
|
||||
[17:44:14] publish Bash → gh issue create \
|
||||
--title "docs: d...
|
||||
[17:44:22] publish Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[17:44:26] publish Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[17:44:29] publish Processing results
|
||||
[17:44:29] publish validating contract
|
||||
[17:44:29] ✓ publish completed (28.9s, 5.8k in / 1.0k out)
|
||||
[17:44:29] ├─ artifact: .wave/output/issue-result.json (written)
|
||||
[17:44:29] └─ contract: doc-issue-result.schema.json ✓ valid
|
||||
[17:44:29] ⚠ publish [publish] outcome: .issue_url at .wave/output/issue-result.json: key "issue_url" not found
|
||||
2026/03/28 17:44:29 [retro] quantitative retrospective saved for run audit-doc-20260328-173838-e10a
|
||||
|
||||
✓ Pipeline 'audit-doc' completed successfully (351.2s, 121.1k tokens)
|
||||
|
||||
Outcomes
|
||||
✓ Branch: audit-doc-20260328-173838-e10a (local only)
|
||||
|
||||
! [publish] outcome: .issue_url at .wave/output/issue-result.json: key "issue_url" not found
|
||||
|
||||
4 artifacts produced
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-doc-20260328-173838-e10a/__wt_audit-doc-20260328-173838-e10a/.wave/output/scan-results.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-doc-20260328-173838-e10a/__wt_audit-doc-20260328-173838-e10a/.wave/output/consistency-report.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-doc-20260328-173838-e10a/__wt_audit-doc-20260328-173838-e10a/.wave/output/report.md
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-doc-20260328-173838-e10a/__wt_audit-doc-20260328-173838-e10a/.wave/output/issue-result.json
|
||||
|
||||
|
||||
101
.wave/logs/audit-dx-20260328-135948-267b.log
Normal file
101
.wave/logs/audit-dx-20260328-135948-267b.log
Normal file
@@ -0,0 +1,101 @@
|
||||
[13:59:48] → audit (navigator) [claude-haiku via claude]
|
||||
[13:59:48] audit Executing agent
|
||||
[14:00:04] audit Agent →
|
||||
[14:00:10] audit Agent →
|
||||
[14:00:16] audit Agent →
|
||||
[14:00:21] audit Agent →
|
||||
[14:00:24] audit Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[14:00:24] audit Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[14:00:25] audit Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[14:00:25] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:26] audit Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[14:00:27] audit Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[14:00:27] audit Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[14:00:28] audit Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[14:00:29] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:29] audit Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[14:00:30] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:30] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:31] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:31] audit Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[14:00:32] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:33] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:33] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:34] audit Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[14:00:36] audit Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[14:00:36] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:36] audit Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[14:00:38] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:38] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:39] audit Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[14:00:40] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:41] audit Bash → wc -l /home/mwc/Coding/code-crispies...
|
||||
[14:00:41] audit Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[14:00:41] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:42] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:43] audit Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[14:00:44] audit Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[14:00:45] audit Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[14:00:45] audit Bash → tree -L 2 /home/mwc/Coding/code-cris...
|
||||
[14:00:46] audit Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[14:00:47] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:47] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:48] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:50] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:50] audit Bash → wc -l /home/mwc/Coding/code-crispies...
|
||||
[14:00:52] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:53] audit Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[14:00:53] audit Bash → grep -n "validate\|Validate" /home/m...
|
||||
[14:00:55] audit Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[14:00:56] audit Bash → head -2000 /home/mwc/Coding/code-cri...
|
||||
[14:00:57] audit Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[14:00:58] audit Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[14:00:58] audit Bash → wc -l /home/mwc/Coding/code-crispies...
|
||||
[14:00:59] audit Grep → ^import |^export |^from "
|
||||
[14:01:00] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:01:01] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:01:02] audit Bash → grep -n "^function \|^export functio...
|
||||
[14:01:02] audit Bash → grep -n "loadModuleFromUrl\|addCusto...
|
||||
[14:01:05] audit Bash → grep -n "TODO\|FIXME\|HACK\|BUG\|XXX...
|
||||
[14:01:05] audit Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[14:01:07] audit Bash → grep -n "loadModules\|setModules\|ad...
|
||||
[14:01:07] audit Bash → grep -n "try \|catch \|if (!.*) \|if...
|
||||
[14:01:09] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:01:10] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:01:12] audit Bash → cd /home/mwc/Coding/code-crispies/.w...
|
||||
[14:01:14] audit Bash → grep -A 5 "case \"" /home/mwc/Coding...
|
||||
[14:01:14] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:01:16] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:01:18] audit Bash → head -100 /home/mwc/Coding/code-cris...
|
||||
[14:02:04] audit Bash → cd /home/mwc/Coding/code-crispies/.w...
|
||||
[14:02:05] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:02:06] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:02:12] audit Bash → npm install 2>&1 | tail -5
|
||||
[14:02:18] audit Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[14:02:21] audit Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[14:02:22] audit Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[14:02:42] audit Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[14:02:43] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:02:43] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:03:17] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:03:17] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:03:18] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:03:21] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:03:22] audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:03:26] audit Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[14:03:28] audit Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[14:03:32] audit Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[14:05:44] audit Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[14:05:51] audit Processing results
|
||||
[14:05:51] audit validating contract
|
||||
[14:05:51] ✓ audit completed (362.6s, 52.1k in / 9.9k out)
|
||||
[14:05:51] ├─ artifact: .wave/output/dx-audit-report.md (written)
|
||||
[14:05:51] └─ contract: non_empty_file ✓ valid
|
||||
2026/03/28 14:05:51 [retro] quantitative retrospective saved for run audit-dx-20260328-135948-267b
|
||||
|
||||
✓ Pipeline 'audit-dx' completed successfully (362.8s, 62.0k tokens)
|
||||
|
||||
1 artifacts produced
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-dx-20260328-135948-267b/audit/.wave/output/dx-audit-report.md
|
||||
|
||||
|
||||
144
.wave/logs/audit-pedagogy-20260328-175313-79a5.log
Normal file
144
.wave/logs/audit-pedagogy-20260328-175313-79a5.log
Normal file
@@ -0,0 +1,144 @@
|
||||
[17:53:13] → scan-lessons (navigator) [claude-haiku via claude]
|
||||
[17:53:13] scan-lessons Executing agent
|
||||
[17:53:19] scan-lessons Glob → lessons/**/*.json
|
||||
[17:53:20] scan-lessons Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[17:53:23] scan-lessons Glob → **/*.json
|
||||
[17:53:27] scan-lessons Glob → lessons/**/*.json
|
||||
[17:53:32] scan-lessons Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[17:53:33] scan-lessons Glob → **/lessons/**/*.json
|
||||
[17:53:53] scan-lessons Agent →
|
||||
[17:53:57] scan-lessons Agent →
|
||||
[17:54:03] scan-lessons Agent →
|
||||
[17:54:07] scan-lessons Agent →
|
||||
[17:54:11] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:11] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:12] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:13] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:13] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:14] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:14] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:15] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:17] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:18] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:18] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:18] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:19] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:21] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:21] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:26] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:26] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[17:54:27] scan-lessons Grep → "solution"
|
||||
[18:04:37] scan-lessons Read → /home/mwc/.claude/projects/-home-mwc...
|
||||
[18:04:39] scan-lessons Read → /home/mwc/.claude/projects/-home-mwc...
|
||||
[18:04:40] scan-lessons Read → /home/mwc/.claude/projects/-home-mwc...
|
||||
[18:09:51] scan-lessons Read → /home/mwc/.claude/projects/-home-mwc...
|
||||
[18:09:59] scan-lessons Read → /home/mwc/.claude/projects/-home-mwc...
|
||||
[18:10:08] scan-lessons Bash → cat /home/mwc/.claude/projects/-home...
|
||||
[18:10:25] scan-lessons Bash → python3 << 'PYEOF'
|
||||
import json, re, ...
|
||||
[18:11:15] scan-lessons Bash → python3 << 'PYEOF'
|
||||
import json, re, ...
|
||||
[18:11:49] scan-lessons Bash → python3 << 'PYEOF'
|
||||
import json
|
||||
|
||||
path...
|
||||
[18:12:17] scan-lessons Bash → python3 << 'PYEOF'
|
||||
import json, re
|
||||
|
||||
...
|
||||
[18:12:31] scan-lessons Bash → python3 << 'PYEOF'
|
||||
import json
|
||||
|
||||
path...
|
||||
[18:12:37] scan-lessons Processing results
|
||||
[18:12:37] scan-lessons validating contract
|
||||
[18:12:37] ✓ scan-lessons completed (1164.0s, 122.1k in / 14.1k out)
|
||||
[18:12:37] ├─ artifact: .wave/output/lesson-inventory.json (written)
|
||||
[18:12:37] └─ contract: lesson-inventory.schema.json ⚠ soft failure
|
||||
[18:12:37] → pedagogy-audit (pedagogy-auditor) [claude-opus via claude]
|
||||
[18:12:37] pedagogy-audit Executing agent
|
||||
[18:12:42] pedagogy-audit Bash → ls .wave/artifacts/lessons/
|
||||
[18:12:42] pedagogy-audit Bash → ls .wave/output/ 2>/dev/null || echo...
|
||||
[18:12:45] pedagogy-audit Bash → file .wave/artifacts/lessons && wc -...
|
||||
[18:12:48] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[18:12:51] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[18:12:56] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[18:13:01] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[18:13:02] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[18:13:03] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[18:13:05] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[18:13:49] pedagogy-audit ToolSearch → select:TodoWrite
|
||||
[18:13:54] pedagogy-audit TodoWrite → Write pedagogy-report.json with...
|
||||
[18:18:19] pedagogy-audit Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[18:18:31] pedagogy-audit TodoWrite → Write pedagogy-report.md with h...
|
||||
[18:19:55] pedagogy-audit Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[18:20:01] pedagogy-audit TodoWrite → 3/3 tasks
|
||||
[18:20:20] pedagogy-audit Processing results
|
||||
[18:20:20] ✓ pedagogy-audit completed (462.8s, 154.1k in / 26.7k out)
|
||||
[18:20:20] ├─ artifact: .wave/output/pedagogy-report.md (written)
|
||||
[18:20:20] └─ artifact: .wave/output/pedagogy-report.json (written)
|
||||
[18:20:20] → improvement-plan (planner) [claude-haiku via claude]
|
||||
[18:20:20] improvement-plan Executing agent
|
||||
[18:20:30] improvement-plan Agent →
|
||||
[18:20:35] improvement-plan Agent →
|
||||
[18:20:38] improvement-plan Bash → find /home/mwc/Coding/code-crispies ...
|
||||
[18:20:38] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[18:20:40] improvement-plan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[18:20:40] improvement-plan Glob → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:20:41] improvement-plan Bash → pwd && ls -la
|
||||
[18:20:42] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[18:20:42] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[18:20:44] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[18:20:46] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:20:46] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:20:47] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:20:48] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:20:48] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:20:49] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[18:20:52] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[18:20:53] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:20:53] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:20:53] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:20:54] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:20:58] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:20:58] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:20:59] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:20:59] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:21:00] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:21:03] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:21:03] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:21:04] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:21:26] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[18:21:55] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:21:55] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:21:56] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:22:02] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:22:03] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:22:04] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:22:09] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:22:10] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:22:10] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[18:22:17] improvement-plan Read → /home/mwc/Coding/code-crispies/src/h...
|
||||
[18:22:19] improvement-plan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[18:22:24] improvement-plan ToolSearch → select:TodoWrite
|
||||
[18:22:29] improvement-plan TodoWrite → Write improvement-plan.json wit...
|
||||
[18:26:22] improvement-plan Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[18:26:29] improvement-plan TodoWrite → Write improvement-plan.md as hu...
|
||||
[18:27:51] improvement-plan Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[18:27:58] improvement-plan TodoWrite → 4/4 tasks
|
||||
[18:28:08] improvement-plan Processing results
|
||||
[18:28:08] ✓ improvement-plan completed (468.6s, 125.0k in / 22.6k out)
|
||||
[18:28:08] ├─ artifact: .wave/output/improvement-plan.md (written)
|
||||
[18:28:08] └─ artifact: .wave/output/improvement-plan.json (written)
|
||||
2026/03/28 18:28:08 [retro] quantitative retrospective saved for run audit-pedagogy-20260328-175313-79a5
|
||||
|
||||
✓ Pipeline 'audit-pedagogy' completed successfully (2095.6s, 464.5k tokens)
|
||||
|
||||
5 artifacts produced
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260328-175313-79a5/scan-lessons/.wave/output/lesson-inventory.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260328-175313-79a5/pedagogy-audit/.wave/output/pedagogy-report.md
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260328-175313-79a5/pedagogy-audit/.wave/output/pedagogy-report.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260328-175313-79a5/improvement-plan/.wave/output/improvement-plan.md
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260328-175313-79a5/improvement-plan/.wave/output/improvement-plan.json
|
||||
|
||||
|
||||
136
.wave/logs/audit-pedagogy-20260328-194243-c189.log
Normal file
136
.wave/logs/audit-pedagogy-20260328-194243-c189.log
Normal file
@@ -0,0 +1,136 @@
|
||||
[19:42:43] → scan-lessons (navigator) [claude-haiku via claude]
|
||||
[19:42:43] scan-lessons Executing agent
|
||||
[19:42:50] scan-lessons Glob → lessons/**/*.json
|
||||
[19:42:50] scan-lessons ToolSearch → select:TodoWrite
|
||||
[19:42:56] scan-lessons Bash → ls /home/mwc/Coding/code-crispies/le...
|
||||
[19:42:56] scan-lessons Glob → **/lessons/**/*.json
|
||||
[19:43:06] scan-lessons TodoWrite → Read all English lesson JSON files
|
||||
[19:43:12] scan-lessons Agent →
|
||||
[19:43:14] scan-lessons Agent →
|
||||
[19:43:17] scan-lessons Agent →
|
||||
[19:43:19] scan-lessons Agent →
|
||||
[19:43:21] scan-lessons Agent →
|
||||
[19:43:23] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:43:23] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:43:24] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:43:24] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:43:25] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:43:25] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:47:00] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:47:01] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:47:02] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:47:11] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:47:15] scan-lessons Read → /home/mwc/.claude/projects/-home-mwc...
|
||||
[19:47:22] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:47:23] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:47:23] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:47:27] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:47:27] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:47:28] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:47:49] scan-lessons TodoWrite → Generate lesson inventory via s...
|
||||
[19:47:54] scan-lessons Bash → mkdir -p /home/mwc/Coding/code-crisp...
|
||||
[19:48:16] scan-lessons Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[19:48:20] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[19:48:38] scan-lessons Bash → node -e "const d=JSON.parse(require(...
|
||||
[19:48:59] scan-lessons TodoWrite → Verify output quality and compl...
|
||||
[19:49:11] scan-lessons Bash → node -e "
|
||||
const d=JSON.parse(require...
|
||||
[19:49:20] scan-lessons Bash → wc -c /home/mwc/Coding/code-crispies...
|
||||
[19:49:26] scan-lessons TodoWrite → 3/3 tasks
|
||||
[19:49:37] scan-lessons Processing results
|
||||
[19:49:37] scan-lessons validating contract
|
||||
[19:49:37] ✓ scan-lessons completed (414.0s, 198.4k in / 8.1k out)
|
||||
[19:49:37] ├─ artifact: .wave/output/lesson-inventory.json (written)
|
||||
[19:49:37] └─ contract: lesson-inventory.schema.json ⚠ soft failure
|
||||
[19:49:37] → pedagogy-audit (pedagogy-auditor) [claude-opus via claude]
|
||||
[19:49:37] pedagogy-audit Executing agent
|
||||
[19:49:43] pedagogy-audit Bash → ls .wave/artifacts/lessons/
|
||||
[19:49:44] pedagogy-audit Bash → ls .wave/output/ 2>/dev/null || echo...
|
||||
[19:49:48] pedagogy-audit Bash → file .wave/artifacts/lessons && wc -...
|
||||
[19:49:51] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[19:49:55] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[19:50:01] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[19:50:02] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[19:50:04] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[19:50:04] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[19:50:05] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[19:50:06] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[19:50:07] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[19:50:08] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[19:50:09] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[19:50:09] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[19:51:25] pedagogy-audit ToolSearch → select:TodoWrite
|
||||
[19:51:32] pedagogy-audit TodoWrite → Write JSON audit report to .wav...
|
||||
[19:55:57] pedagogy-audit Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[19:56:03] pedagogy-audit TodoWrite → Write markdown summary to .wave...
|
||||
[19:57:30] pedagogy-audit Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[19:57:36] pedagogy-audit TodoWrite → 3/3 tasks
|
||||
[19:57:46] pedagogy-audit Processing results
|
||||
[19:57:46] ✓ pedagogy-audit completed (488.8s, 223.6k in / 29.9k out)
|
||||
[19:57:46] ├─ artifact: .wave/output/pedagogy-report.md (written)
|
||||
[19:57:46] └─ artifact: .wave/output/pedagogy-report.json (written)
|
||||
[19:57:46] → improvement-plan (planner) [claude-haiku via claude]
|
||||
[19:57:46] improvement-plan Executing agent
|
||||
[19:57:57] improvement-plan Agent →
|
||||
[19:57:59] improvement-plan Agent →
|
||||
[19:58:01] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[19:58:01] improvement-plan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[19:58:02] improvement-plan Glob → **/lessons/**/*.json
|
||||
[19:58:04] improvement-plan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[19:58:04] improvement-plan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[19:58:05] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[19:58:06] improvement-plan Bash → pwd && ls -la
|
||||
[19:58:07] improvement-plan Bash → ls -R /home/mwc/Coding/code-crispies...
|
||||
[19:58:07] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[19:58:14] improvement-plan Bash → find /home/mwc/Coding/code-crispies ...
|
||||
[19:58:16] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[19:58:17] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[19:58:17] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[19:58:18] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:58:19] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:58:20] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[19:58:22] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:58:22] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:58:23] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:58:28] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[19:58:29] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:58:30] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:58:30] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:58:34] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:58:34] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:58:35] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[19:59:49] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[20:00:09] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[20:00:09] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[20:00:09] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[20:00:15] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[20:00:16] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[20:00:23] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[20:00:23] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[20:00:24] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[20:00:24] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[20:00:32] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[20:00:33] improvement-plan Read → /home/mwc/Coding/code-crispies/schem...
|
||||
[20:00:53] improvement-plan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[20:00:58] improvement-plan ToolSearch → select:TodoWrite
|
||||
[20:01:04] improvement-plan TodoWrite → Write improvement-plan.json wit...
|
||||
[20:04:22] improvement-plan Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[20:04:28] improvement-plan TodoWrite → Write improvement-plan.md as hu...
|
||||
[20:06:04] improvement-plan Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[20:06:11] improvement-plan TodoWrite → 2/2 tasks
|
||||
[20:06:22] improvement-plan Processing results
|
||||
[20:06:22] ✓ improvement-plan completed (515.7s, 122.8k in / 21.3k out)
|
||||
[20:06:22] ├─ artifact: .wave/output/improvement-plan.md (written)
|
||||
[20:06:22] └─ artifact: .wave/output/improvement-plan.json (written)
|
||||
2026/03/28 20:06:22 [retro] quantitative retrospective saved for run audit-pedagogy-20260328-194243-c189
|
||||
|
||||
✓ Pipeline 'audit-pedagogy' completed successfully (1418.7s, 604.1k tokens)
|
||||
|
||||
5 artifacts produced
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260328-194243-c189/scan-lessons/.wave/output/lesson-inventory.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260328-194243-c189/pedagogy-audit/.wave/output/pedagogy-report.md
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260328-194243-c189/pedagogy-audit/.wave/output/pedagogy-report.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260328-194243-c189/improvement-plan/.wave/output/improvement-plan.md
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260328-194243-c189/improvement-plan/.wave/output/improvement-plan.json
|
||||
|
||||
|
||||
231
.wave/logs/audit-pedagogy-20260328-213312-b6f8.log
Normal file
231
.wave/logs/audit-pedagogy-20260328-213312-b6f8.log
Normal file
@@ -0,0 +1,231 @@
|
||||
warning: input looks like free text — consider using: impl-feature, impl-hotfix, impl-improve
|
||||
[21:33:12] → scan-lessons (navigator) [claude-haiku via claude]
|
||||
[21:33:12] scan-lessons Executing agent
|
||||
[21:33:22] scan-lessons Glob → lessons/**/*.json
|
||||
[21:33:22] scan-lessons ToolSearch → select:TodoWrite
|
||||
[21:33:29] scan-lessons Glob → **/lessons/**/*.json
|
||||
[21:33:31] scan-lessons Bash → ls /home/mwc/Coding/code-crispies/le...
|
||||
[21:33:39] scan-lessons TodoWrite → Read all English lesson JSON fi...
|
||||
[21:33:45] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:33:45] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:33:46] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:33:47] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:33:47] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:33:48] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:33:48] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:33:57] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:33:58] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:33:59] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:00] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:00] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:01] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:01] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:10] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:11] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:12] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:13] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:21] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:21] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:22] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:23] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:24] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:24] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:33] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:33] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:34] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:35] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:36] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:49] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:34:57] scan-lessons TodoWrite → Analyze each exercise and write...
|
||||
[21:35:05] scan-lessons Bash → ls -d /home/mwc/Coding/code-crispies...
|
||||
[21:35:42] scan-lessons Bash → mkdir -p /home/mwc/Coding/code-crisp...
|
||||
[21:36:00] scan-lessons Agent →
|
||||
[21:36:07] scan-lessons Bash → ls /home/mwc/Coding/code-crispies/le...
|
||||
[21:36:07] scan-lessons Bash → ls /home/mwc/Coding/code-crispies/le...
|
||||
[21:36:12] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:12] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:13] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:14] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:15] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:15] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:26] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:26] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:27] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:27] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:28] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:29] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:45] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:46] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:47] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:47] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:48] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:48] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:49] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:54] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:54] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:55] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:56] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:36:57] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:37:03] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:37:03] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:37:04] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:37:05] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:37:05] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:37:06] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:37:12] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:37:17] scan-lessons Bash → mkdir -p /home/mwc/Coding/code-crisp...
|
||||
[21:38:01] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[21:38:08] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[21:38:18] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[21:38:28] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[21:38:39] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[21:38:45] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[21:38:54] scan-lessons Bash → wc -l /home/mwc/Coding/code-crispies...
|
||||
[21:39:10] scan-lessons Bash → python3 -c "import json; data = json...
|
||||
[21:39:16] scan-lessons Bash → python3 -c "
|
||||
import json
|
||||
data = json...
|
||||
[21:39:22] scan-lessons TodoWrite → 2/2 tasks
|
||||
[21:39:28] scan-lessons Processing results
|
||||
[21:39:28] scan-lessons validating contract
|
||||
[21:39:28] ✓ scan-lessons completed (375.4s, 199.3k in / 5.1k out)
|
||||
[21:39:28] ├─ artifact: .wave/output/lesson-inventory.json (written)
|
||||
[21:39:28] └─ contract: lesson-inventory.schema.json ⚠ soft failure
|
||||
[21:39:28] → pedagogy-audit (pedagogy-auditor) [claude-opus via claude]
|
||||
[21:39:28] pedagogy-audit Executing agent
|
||||
[21:39:34] pedagogy-audit Bash → ls .wave/artifacts/lessons/
|
||||
[21:39:35] pedagogy-audit Bash → ls .wave/output/ 2>/dev/null || echo...
|
||||
[21:39:39] pedagogy-audit Bash → file .wave/artifacts/lessons && wc -...
|
||||
[21:39:43] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:39:47] pedagogy-audit Bash → ls .wave/output/
|
||||
[21:39:50] pedagogy-audit Bash → ls .wave/artifacts/
|
||||
[21:39:55] pedagogy-audit Glob → **/*.json
|
||||
[21:39:55] pedagogy-audit Glob → lessons/**/*.json
|
||||
[21:39:59] pedagogy-audit Glob → **/*.json
|
||||
[21:40:03] pedagogy-audit Glob → lessons/*.json
|
||||
[21:40:03] pedagogy-audit Glob → src/lessons/*.json
|
||||
[21:40:09] pedagogy-audit Bash → find /home/mwc/Coding/code-crispies ...
|
||||
[21:40:13] pedagogy-audit Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[21:40:19] pedagogy-audit ToolSearch → select:TodoWrite
|
||||
[21:40:28] pedagogy-audit TodoWrite → Read all 41 lesson module JSON ...
|
||||
[21:40:36] pedagogy-audit Agent →
|
||||
[21:40:37] pedagogy-audit Agent →
|
||||
[21:40:39] pedagogy-audit Agent →
|
||||
[21:40:41] pedagogy-audit Agent →
|
||||
[21:40:43] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:40:44] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:40:44] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:40:44] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:40:45] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:40:46] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:40:46] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:40:47] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:40:50] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:40:50] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:47:51] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:47:52] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:47:53] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:47:54] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:47:54] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:48:02] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:48:03] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:48:03] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:48:04] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:48:04] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:48:17] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:48:18] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:48:19] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:48:19] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:48:19] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:48:26] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:48:27] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:48:27] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:48:27] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:48:28] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:49:54] pedagogy-audit TodoWrite → Analyze each module for Bloom's...
|
||||
[21:49:58] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:49:59] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:50:00] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:50:00] pedagogy-audit Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:50:09] pedagogy-audit TodoWrite → Write pedagogy-report.json
|
||||
[21:54:18] pedagogy-audit Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[21:54:25] pedagogy-audit TodoWrite → Write pedagogy-report.md
|
||||
[21:55:59] pedagogy-audit Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[21:56:06] pedagogy-audit TodoWrite → 4/4 tasks
|
||||
[21:56:16] pedagogy-audit Processing results
|
||||
[21:56:16] ✓ pedagogy-audit completed (1008.3s, 258.9k in / 32.5k out)
|
||||
[21:56:16] ├─ artifact: .wave/output/pedagogy-report.md (written)
|
||||
[21:56:16] └─ artifact: .wave/output/pedagogy-report.json (written)
|
||||
[21:56:16] → improvement-plan (planner) [claude-haiku via claude]
|
||||
[21:56:16] improvement-plan Executing agent
|
||||
[21:56:24] improvement-plan Agent →
|
||||
[21:56:26] improvement-plan Agent →
|
||||
[21:56:28] improvement-plan Glob → lessons/**/*.json
|
||||
[21:56:28] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[21:56:29] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[21:56:30] improvement-plan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[21:56:30] improvement-plan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[21:56:31] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[21:56:32] improvement-plan Bash → find /home/mwc/Coding/code-crispies ...
|
||||
[21:56:33] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[21:56:35] improvement-plan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[21:56:36] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[21:56:37] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:56:38] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:56:38] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:39] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:39] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:42] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:43] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:43] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:46] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:47] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:50] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:50] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:51] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:53] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:54] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:55] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:57] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:58] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:56:58] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:57:02] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:57:02] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:57:03] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:57:44] improvement-plan Glob → .wave/artifacts/audit/**/*
|
||||
[21:57:47] improvement-plan Glob → **/.wave/artifacts/audit/**/*
|
||||
[21:57:52] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[21:57:56] improvement-plan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[21:57:59] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:58:00] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:58:06] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:58:07] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:58:08] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:58:13] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:58:14] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:58:15] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:58:15] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:58:21] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:58:27] improvement-plan Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[21:58:31] improvement-plan ToolSearch → select:TodoWrite
|
||||
[21:58:36] improvement-plan TodoWrite → Write improvement-plan.json wit...
|
||||
[22:01:46] improvement-plan Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[22:01:52] improvement-plan TodoWrite → Write improvement-plan.md as hu...
|
||||
[22:03:42] improvement-plan Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[22:03:48] improvement-plan TodoWrite → 2/2 tasks
|
||||
[22:03:59] improvement-plan Processing results
|
||||
[22:03:59] ✓ improvement-plan completed (463.2s, 121.1k in / 20.5k out)
|
||||
[22:03:59] ├─ artifact: .wave/output/improvement-plan.md (written)
|
||||
[22:03:59] └─ artifact: .wave/output/improvement-plan.json (written)
|
||||
2026/03/28 22:03:59 [retro] quantitative retrospective saved for run audit-pedagogy-20260328-213312-b6f8
|
||||
|
||||
✓ Pipeline 'audit-pedagogy' completed successfully (1847.1s, 637.3k tokens)
|
||||
|
||||
5 artifacts produced
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260328-213312-b6f8/scan-lessons/.wave/output/lesson-inventory.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260328-213312-b6f8/pedagogy-audit/.wave/output/pedagogy-report.md
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260328-213312-b6f8/pedagogy-audit/.wave/output/pedagogy-report.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260328-213312-b6f8/improvement-plan/.wave/output/improvement-plan.md
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260328-213312-b6f8/improvement-plan/.wave/output/improvement-plan.json
|
||||
|
||||
|
||||
115
.wave/logs/audit-pedagogy-20260329-001752-e77c.log
Normal file
115
.wave/logs/audit-pedagogy-20260329-001752-e77c.log
Normal file
@@ -0,0 +1,115 @@
|
||||
warning: input looks like free text — consider using: impl-feature, impl-hotfix, impl-improve
|
||||
[00:17:52] → scan-lessons (navigator) [claude-haiku via claude]
|
||||
[00:17:52] scan-lessons Executing agent
|
||||
[00:17:58] scan-lessons Glob → lessons/**/*.json
|
||||
[00:17:59] scan-lessons ToolSearch → select:TodoWrite
|
||||
[00:18:03] scan-lessons Bash → ls /home/mwc/Coding/code-crispies/le...
|
||||
[00:18:04] scan-lessons Glob → **/*.json
|
||||
[00:18:22] scan-lessons TodoWrite → Read sample lesson file to unde...
|
||||
[00:18:22] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:18:53] scan-lessons TodoWrite → Read and analyze all 41 English...
|
||||
[00:19:10] scan-lessons Agent →
|
||||
[00:19:15] scan-lessons Agent →
|
||||
[00:19:20] scan-lessons Agent →
|
||||
[00:19:25] scan-lessons Agent →
|
||||
[00:19:31] scan-lessons Agent →
|
||||
[00:19:34] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:19:35] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:19:35] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:19:36] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:19:36] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:19:37] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:19:37] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:19:38] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:24:06] scan-lessons Read → /home/mwc/.claude/projects/-home-mwc...
|
||||
[00:24:35] scan-lessons TodoWrite → Compile results and write lesso...
|
||||
[00:24:37] scan-lessons Bash → mkdir -p /home/mwc/Coding/code-crisp...
|
||||
[00:25:20] scan-lessons Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[00:25:26] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[00:25:33] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[00:25:43] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[00:26:27] scan-lessons Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:26:53] scan-lessons Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:27:21] scan-lessons Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:27:27] scan-lessons Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:28:24] scan-lessons Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:28:34] scan-lessons Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:28:38] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[00:28:47] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[00:30:09] scan-lessons Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:31:26] scan-lessons Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:31:31] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[00:31:39] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[00:32:02] scan-lessons Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:32:06] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[00:32:19] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[00:32:24] scan-lessons Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[00:32:33] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[00:32:39] scan-lessons Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[00:32:44] scan-lessons TodoWrite → 3/3 tasks
|
||||
[00:32:54] scan-lessons Processing results
|
||||
[00:32:54] scan-lessons validating contract
|
||||
[00:32:54] ✓ scan-lessons completed (902.2s, 193.8k in / 39.0k out)
|
||||
[00:32:54] ├─ artifact: .wave/output/lesson-inventory.json (written)
|
||||
[00:32:54] └─ contract: lesson-inventory.schema.json ⚠ soft failure
|
||||
[00:32:54] → pedagogy-audit (pedagogy-auditor) [claude-opus via claude]
|
||||
[00:32:54] pedagogy-audit Executing agent
|
||||
[00:33:01] pedagogy-audit Bash → ls .wave/artifacts/lessons/
|
||||
[00:33:01] pedagogy-audit Bash → ls .wave/output/ 2>/dev/null || echo...
|
||||
[00:33:05] pedagogy-audit Bash → file .wave/artifacts/lessons && wc -...
|
||||
[00:33:10] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:33:14] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:33:23] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:33:23] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:33:24] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:33:25] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:33:25] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:34:18] pedagogy-audit Bash → mkdir -p .wave/output
|
||||
[00:34:22] pedagogy-audit ToolSearch → select:TodoWrite
|
||||
[00:34:27] pedagogy-audit TodoWrite → Write pedagogy-report.json with...
|
||||
[00:38:55] pedagogy-audit Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[00:39:04] pedagogy-audit TodoWrite → Write pedagogy-report.md with h...
|
||||
[00:40:39] pedagogy-audit Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[00:40:44] pedagogy-audit TodoWrite → 3/3 tasks
|
||||
[00:40:53] pedagogy-audit Processing results
|
||||
[00:40:53] ✓ pedagogy-audit completed (478.6s, 145.6k in / 26.8k out)
|
||||
[00:40:53] ├─ artifact: .wave/output/pedagogy-report.md (written)
|
||||
[00:40:53] └─ artifact: .wave/output/pedagogy-report.json (written)
|
||||
[00:40:53] → improvement-plan (planner) [claude-haiku via claude]
|
||||
[00:40:53] improvement-plan Executing agent
|
||||
[00:40:59] improvement-plan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[00:41:00] improvement-plan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[00:41:05] improvement-plan Bash → file /home/mwc/Coding/code-crispies/...
|
||||
[00:41:09] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[00:41:28] improvement-plan Agent →
|
||||
[00:41:29] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:41:30] improvement-plan Glob → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:41:50] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:41:50] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:41:51] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:41:57] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:41:58] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:42:03] improvement-plan Read → /home/mwc/Coding/code-crispies/src/h...
|
||||
[00:42:03] improvement-plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[00:42:28] improvement-plan ToolSearch → select:TodoWrite
|
||||
[00:42:33] improvement-plan TodoWrite → Write improvement-plan.json wit...
|
||||
[00:46:43] improvement-plan Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[00:46:55] improvement-plan TodoWrite → Write improvement-plan.md as hu...
|
||||
[00:48:38] improvement-plan Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[00:48:44] improvement-plan TodoWrite → 4/4 tasks
|
||||
[00:48:56] improvement-plan Processing results
|
||||
[00:48:56] ✓ improvement-plan completed (483.6s, 123.8k in / 25.9k out)
|
||||
[00:48:56] ├─ artifact: .wave/output/improvement-plan.md (written)
|
||||
[00:48:56] └─ artifact: .wave/output/improvement-plan.json (written)
|
||||
2026/03/29 00:48:56 [retro] quantitative retrospective saved for run audit-pedagogy-20260329-001752-e77c
|
||||
|
||||
✓ Pipeline 'audit-pedagogy' completed successfully (1864.7s, 554.9k tokens)
|
||||
|
||||
5 artifacts produced
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260329-001752-e77c/scan-lessons/.wave/output/lesson-inventory.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260329-001752-e77c/pedagogy-audit/.wave/output/pedagogy-report.md
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260329-001752-e77c/pedagogy-audit/.wave/output/pedagogy-report.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260329-001752-e77c/improvement-plan/.wave/output/improvement-plan.md
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260329-001752-e77c/improvement-plan/.wave/output/improvement-plan.json
|
||||
|
||||
|
||||
103
.wave/logs/audit-pedagogy-20260329-210909-22e5.log
Normal file
103
.wave/logs/audit-pedagogy-20260329-210909-22e5.log
Normal file
@@ -0,0 +1,103 @@
|
||||
warning: input looks like free text — consider using: impl-feature, impl-hotfix, impl-improve
|
||||
[21:09:10] → scan-lessons (navigator) [claude-haiku via claude]
|
||||
[21:09:10] scan-lessons Executing agent
|
||||
[21:09:18] scan-lessons Glob → lessons/**/*.json
|
||||
[21:09:18] scan-lessons ToolSearch → select:TodoWrite
|
||||
[21:09:26] scan-lessons Glob → **/lessons/**/*.json
|
||||
[21:09:26] scan-lessons Glob → **/lessons/*.json
|
||||
[21:09:27] scan-lessons Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[21:09:59] scan-lessons TodoWrite → Read all English lesson JSON files
|
||||
[21:14:22] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:14:22] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:14:23] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:14:24] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:14:24] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:14:25] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:14:25] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:14:39] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:14:40] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:14:40] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:14:42] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:14:42] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:14:43] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:14:44] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:14:44] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:15:32] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:15:33] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:15:34] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:15:34] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:15:37] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:15:37] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:15:53] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:15:53] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:17:23] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:17:38] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:17:38] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:17:43] scan-lessons Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[21:17:48] scan-lessons TodoWrite → Analyze each exercise and build...
|
||||
[21:17:57] scan-lessons Bash → mkdir -p /home/mwc/Coding/code-crisp...
|
||||
[21:25:07] scan-lessons Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[21:25:24] scan-lessons Bash → python3 -c "import json; data = json...
|
||||
[21:25:43] scan-lessons TodoWrite → 3/3 tasks
|
||||
[21:25:57] scan-lessons Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:26:09] scan-lessons Processing results
|
||||
[21:26:09] scan-lessons validating contract
|
||||
[21:26:09] ✓ scan-lessons completed (1018.4s, 391.2k in / 43.1k out)
|
||||
[21:26:09] ├─ artifact: .wave/output/lesson-inventory.json (written)
|
||||
[21:26:09] └─ contract: lesson-inventory.schema.json ⚠ soft failure
|
||||
[21:26:09] → pedagogy-audit (pedagogy-auditor) [claude-opus via claude]
|
||||
[21:26:09] pedagogy-audit Executing agent
|
||||
[21:26:22] pedagogy-audit Bash → ls .wave/artifacts/lessons/
|
||||
[21:26:22] pedagogy-audit Bash → ls .wave/output/ 2>/dev/null || echo...
|
||||
[21:26:30] pedagogy-audit Bash → file .wave/artifacts/lessons && wc -...
|
||||
[21:26:39] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:27:46] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:28:34] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:32:34] pedagogy-audit Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:39:02] pedagogy-audit ToolSearch → select:TodoWrite
|
||||
[21:39:09] pedagogy-audit TodoWrite → Write pedagogy-report.json with...
|
||||
[21:45:02] pedagogy-audit Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[21:45:09] pedagogy-audit TodoWrite → Write pedagogy-report.md with h...
|
||||
[21:46:37] pedagogy-audit Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[21:46:43] pedagogy-audit TodoWrite → 3/3 tasks
|
||||
[21:46:55] pedagogy-audit Processing results
|
||||
[21:46:55] ✓ pedagogy-audit completed (1246.0s, 124.2k in / 34.8k out)
|
||||
[21:46:55] ├─ artifact: .wave/output/pedagogy-report.md (written)
|
||||
[21:46:55] └─ artifact: .wave/output/pedagogy-report.json (written)
|
||||
[21:46:55] → improvement-plan (planner) [claude-haiku via claude]
|
||||
[21:46:55] improvement-plan Executing agent
|
||||
[21:47:02] improvement-plan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[21:47:03] improvement-plan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[21:47:06] improvement-plan Bash → file /home/mwc/Coding/code-crispies/...
|
||||
[21:47:09] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:47:13] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:47:17] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:47:20] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:47:23] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:47:27] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:47:31] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:47:34] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:47:39] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:47:45] improvement-plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[21:48:08] improvement-plan ToolSearch → select:TodoWrite
|
||||
[21:48:41] improvement-plan TodoWrite → Write improvement-plan.json wit...
|
||||
[21:52:56] improvement-plan Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[21:53:03] improvement-plan TodoWrite → Write improvement-plan.md as hu...
|
||||
[21:54:52] improvement-plan Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[21:54:57] improvement-plan TodoWrite → 3/3 tasks
|
||||
[21:55:07] improvement-plan Processing results
|
||||
[21:55:07] ✓ improvement-plan completed (492.6s, 79.8k in / 26.8k out)
|
||||
[21:55:07] ├─ artifact: .wave/output/improvement-plan.md (written)
|
||||
[21:55:07] └─ artifact: .wave/output/improvement-plan.json (written)
|
||||
2026/03/29 21:55:07 [retro] quantitative retrospective saved for run audit-pedagogy-20260329-210909-22e5
|
||||
|
||||
✓ Pipeline 'audit-pedagogy' completed successfully (2757.8s, 700.1k tokens)
|
||||
|
||||
5 artifacts produced
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260329-210909-22e5/scan-lessons/.wave/output/lesson-inventory.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260329-210909-22e5/pedagogy-audit/.wave/output/pedagogy-report.md
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260329-210909-22e5/pedagogy-audit/.wave/output/pedagogy-report.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260329-210909-22e5/improvement-plan/.wave/output/improvement-plan.md
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-pedagogy-20260329-210909-22e5/improvement-plan/.wave/output/improvement-plan.json
|
||||
|
||||
|
||||
225
.wave/logs/audit-security-20260328-152711-3121.log
Normal file
225
.wave/logs/audit-security-20260328-152711-3121.log
Normal file
@@ -0,0 +1,225 @@
|
||||
[15:27:11] → scan (navigator) [claude-haiku via claude]
|
||||
[15:27:11] scan Executing agent
|
||||
[15:27:29] scan Agent →
|
||||
[15:27:31] scan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[15:27:33] scan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[15:27:36] scan Grep → innerHTML|outerHTML|insertAdjacentHTML
|
||||
[15:27:37] scan Grep → document\.write
|
||||
[15:27:38] scan Grep → createElement\s*\(\s*['\"]?script['\...
|
||||
[15:27:38] scan Grep → postMessage
|
||||
[15:27:46] scan Grep → srcdoc|iframe.*src|blob:|data:
|
||||
[15:27:47] scan Grep → URL\.parse|URLSearchParams|location\...
|
||||
[15:27:47] scan Grep → \$\{.*\}|template.*inject
|
||||
[15:27:50] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:27:54] scan Bash → grep -n "iframe\|srcdoc\|contentWind...
|
||||
[15:28:01] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:28:10] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:28:14] scan Grep → \.write\(|innerHTML.*=|\.innerHTML\s...
|
||||
[15:28:14] scan Glob → src/**/*.js
|
||||
[15:28:17] scan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[15:28:22] scan Bash → grep -rn "addEventListener.*message\...
|
||||
[15:28:24] scan Bash → grep -n "marked\|sanitize\|DOMPurify...
|
||||
[15:28:27] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:28:30] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:28:33] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:28:35] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:28:38] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:28:42] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:28:45] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:28:47] scan Bash → grep -n "sectionContent\s*=" /home/m...
|
||||
[15:28:50] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:28:55] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:28:57] scan Bash → grep -n "dataset\|getAttribute\|data...
|
||||
[15:29:08] scan Bash → grep -n "window\.location\|location\...
|
||||
[15:29:11] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:29:15] scan Bash → grep -rn "marked\." /home/mwc/Coding...
|
||||
[15:29:18] scan Bash → grep -rn "script\|<iframe\|postMessa...
|
||||
[15:29:26] scan Bash → grep -n "lessonDescription\|lesson\....
|
||||
[15:29:29] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:29:32] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:29:35] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:29:45] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:29:49] scan Bash → grep -A5 "mode === \"tailwind\"" /ho...
|
||||
[15:29:52] scan Bash → grep -rn "srcdoc\|iframe.*src\|<ifra...
|
||||
[15:29:55] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:30:42] scan Agent →
|
||||
[15:30:46] scan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[15:30:50] scan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[15:30:57] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:30:57] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:31:06] scan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[15:31:10] scan Grep → localStorage\.(get|set|remove)
|
||||
[15:31:10] scan Grep → VITE_|API_KEY|SECRET|PASSWORD|TOKEN
|
||||
[15:31:14] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:31:15] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:31:15] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:31:25] scan Bash → grep -n "JSON.parse" /home/mwc/Codin...
|
||||
[15:31:33] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:31:34] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:31:43] scan Bash → grep -rn "\.innerHTML" /home/mwc/Cod...
|
||||
[15:31:46] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:31:49] scan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[15:31:52] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:31:59] scan Bash → grep -rn "signInWithOAuth\|signInWit...
|
||||
[15:32:03] scan Bash → grep -rn "redirect\|window.location\...
|
||||
[15:32:06] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:32:11] scan Bash → grep -rn "import.meta.env" /home/mwc...
|
||||
[15:32:14] scan Bash → git log --all --full-history -- "pro...
|
||||
[15:32:18] scan Bash → cat /home/mwc/Coding/code-crispies/....
|
||||
[15:32:22] scan Bash → git ls-files | grep -E '\.env|projec...
|
||||
[15:32:27] scan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[15:32:31] scan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[15:32:37] scan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[15:32:44] scan Bash → grep -rn "GITHUB_CLIENT\|GOOGLE_CLIE...
|
||||
[15:32:47] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:32:50] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:33:50] scan Agent →
|
||||
[15:33:53] scan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[15:33:56] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:33:57] scan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[15:34:02] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:34:03] scan Glob → **/*.html
|
||||
[15:34:06] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:34:06] scan Grep → Content-Security-Policy|csp|CSP
|
||||
[15:34:19] scan Grep → script src|link href|iframe|fetch\(|...
|
||||
[15:34:23] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:34:29] scan Bash → head -100 /home/mwc/Coding/code-cris...
|
||||
[15:34:29] scan Glob → **/*.js
|
||||
[15:34:33] scan Grep → fetch|XMLHttpRequest|axios|http
|
||||
[15:34:36] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:34:37] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:34:40] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:34:41] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:34:45] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:34:45] scan Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[15:34:48] scan Bash → grep -r "marked\|lodash" /home/mwc/C...
|
||||
[15:34:48] scan Bash → grep -A 5 '"marked"' /home/mwc/Codin...
|
||||
[15:35:02] scan Bash → grep -A 15 '"node_modules/marked"' /...
|
||||
[15:35:06] scan Bash → grep -E '^\s+"(version|integrity)": ...
|
||||
[15:35:11] scan Bash → cat /home/mwc/Coding/code-crispies/....
|
||||
[15:35:11] scan Bash → cat /home/mwc/Coding/code-crispies/....
|
||||
[15:35:15] scan Bash → grep -n "sandbox\|integrity\|crossor...
|
||||
[15:35:18] scan Bash → grep -n "sandbox\|integrity\|crossor...
|
||||
[15:35:22] scan Bash → grep -n "src=\|href=" /home/mwc/Codi...
|
||||
[15:35:34] scan Bash → grep -n "script\|https://cdn" /home/...
|
||||
[15:35:37] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:35:37] scan Bash → grep -r "fetch\|cdn.tailwindcss" /ho...
|
||||
[15:35:41] scan Bash → grep -r "integrity\|crossorigin\|sri...
|
||||
[15:36:29] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:36:29] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:36:34] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:36:34] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:36:39] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:36:40] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:36:44] scan Grep → \.env
|
||||
[15:36:45] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:36:49] scan Grep → sandbox
|
||||
[15:36:51] scan Grep → Content-Security-Policy|content-secu...
|
||||
[15:36:59] scan Grep → loadModuleFromUrl
|
||||
[15:37:01] scan Grep → marked\.
|
||||
[15:37:06] scan Grep → loadModuleFromUrl\(
|
||||
[15:37:07] scan Grep → import.*marked|from.*marked
|
||||
[15:37:12] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:37:13] scan Grep → innerHTML|outerHTML|insertAdjacentHTML
|
||||
[15:37:17] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:37:17] scan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:37:26] scan Bash → mkdir -p /home/mwc/Coding/code-crisp...
|
||||
[15:39:06] scan Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[15:39:18] scan Processing results
|
||||
[15:39:18] scan validating contract
|
||||
[15:39:19] ✓ scan completed (727.6s, 52.1k in / 9.1k out)
|
||||
[15:39:19] ├─ artifact: .wave/output/security-scan.json (written)
|
||||
[15:39:19] └─ contract: security-scan.schema.json ✓ valid
|
||||
[15:39:19] → deep-dive (auditor) [claude-haiku via claude]
|
||||
[15:39:19] deep-dive Executing agent
|
||||
[15:39:28] deep-dive Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:39:28] deep-dive Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[15:39:38] deep-dive Agent →
|
||||
[15:39:42] deep-dive Agent →
|
||||
[15:39:48] deep-dive Agent →
|
||||
[15:39:53] deep-dive Agent →
|
||||
[15:39:56] deep-dive Grep → \.innerHTML\s*[=\+]
|
||||
[15:39:57] deep-dive Grep → localStorage\.getItem
|
||||
[15:39:58] deep-dive Grep → eval\s*\(|Function\s*\(|setTimeout\s...
|
||||
[15:39:58] deep-dive Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[15:39:59] deep-dive Read → /home/mwc/Coding/code-crispies/vite....
|
||||
[15:39:59] deep-dive Read → /home/mwc/Coding/code-crispies/src/h...
|
||||
[15:40:00] deep-dive Grep → document\.write
|
||||
[15:40:01] deep-dive Grep → innerHTML|outerHTML|insertAdjacentHTML
|
||||
[15:40:02] deep-dive Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[15:40:02] deep-dive Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[15:40:03] deep-dive Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[15:40:03] deep-dive Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[15:40:05] deep-dive Grep → \.innerHTML
|
||||
[15:40:05] deep-dive Grep → \.innerHTML
|
||||
[15:40:06] deep-dive Read → /home/mwc/Coding/code-crispies/src/h...
|
||||
[15:40:06] deep-dive Grep → iframeDoc\.write
|
||||
[15:40:07] deep-dive Read → /home/mwc/Coding/code-crispies/src/h...
|
||||
[15:40:08] deep-dive Grep → iframe\.(sandbox|srcdoc|setAttribute)
|
||||
[15:40:08] deep-dive Grep → marked
|
||||
[15:40:17] deep-dive Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[15:40:18] deep-dive Read → /home/mwc/Coding/code-crispies/src/h...
|
||||
[15:40:19] deep-dive Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[15:40:19] deep-dive Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[15:40:20] deep-dive Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[15:40:21] deep-dive Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[15:40:22] deep-dive Grep → dompurify|sanitize-html|xss-filters|...
|
||||
[15:40:22] deep-dive Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[15:40:25] deep-dive Grep → lesson\.description|lesson\.task|des...
|
||||
[15:40:25] deep-dive Glob → **/lessons/**/*.json
|
||||
[15:40:27] deep-dive Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[15:40:27] deep-dive Grep → import.*lessons|import.*modules
|
||||
[15:40:30] deep-dive Read → /home/mwc/Coding/code-crispies/lessons
|
||||
[15:40:41] deep-dive Bash → find /home/mwc/Coding/code-crispies ...
|
||||
[15:40:41] deep-dive Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[15:40:43] deep-dive Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[15:40:46] deep-dive Grep → sectionContent\[|referenceContent\[
|
||||
[15:40:46] deep-dive Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[15:40:49] deep-dive Grep → const sectionContent|const reference...
|
||||
[15:40:50] deep-dive Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[15:40:51] deep-dive Bash → cd /home/mwc/Coding/code-crispies/sr...
|
||||
[15:40:53] deep-dive Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[15:40:53] deep-dive Grep → setInnerHTML|innerHTML\s*\+=
|
||||
[15:40:54] deep-dive Bash → cd /home/mwc/Coding/code-crispies &&...
|
||||
[15:40:57] deep-dive Read → /home/mwc/Coding/code-crispies/packa...
|
||||
[15:40:59] deep-dive Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[15:40:59] deep-dive Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[15:41:02] deep-dive Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[15:41:04] deep-dive Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[15:41:05] deep-dive Grep → injectTailwindClasses|marked\.parse
|
||||
[15:41:52] deep-dive Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[15:41:53] deep-dive Grep → VITE_SUPABASE|CLIENT_SECRET|GITHUB_C...
|
||||
[15:41:58] deep-dive Grep → data-i18n-html|\.innerHTML\s*=\s*t\(
|
||||
[15:41:59] deep-dive Grep → loadModuleFromUrl
|
||||
[15:42:03] deep-dive Read → /home/mwc/Coding/code-crispies/src/c...
|
||||
[15:42:10] deep-dive ToolSearch → select:TodoWrite
|
||||
[15:42:15] deep-dive TodoWrite → Write security deep-dive report
|
||||
[15:42:19] deep-dive Bash → mkdir -p /home/mwc/Coding/code-crisp...
|
||||
[15:44:46] deep-dive Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[15:44:50] deep-dive TodoWrite → 1/1 tasks
|
||||
[15:44:57] deep-dive Processing results
|
||||
[15:44:57] ✓ deep-dive completed (338.7s, 47.0k in / 10.0k out)
|
||||
[15:44:57] └─ artifact: .wave/output/security-deep-dive.md (written)
|
||||
[15:44:57] → report (summarizer) [claude-haiku via claude]
|
||||
[15:44:57] report Executing agent
|
||||
[15:45:09] report Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[15:45:13] report Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[15:45:16] report Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:45:17] report Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[15:45:23] report Bash → mkdir -p /home/mwc/Coding/code-crisp...
|
||||
[15:46:02] report Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[15:46:08] report Processing results
|
||||
[15:46:08] report validating contract
|
||||
[15:46:08] ✓ report completed (70.6s, 25.7k in / 2.6k out)
|
||||
[15:46:08] ├─ artifact: .wave/output/security-report.md (written)
|
||||
[15:46:08] └─ contract: non_empty_file ✓ valid
|
||||
2026/03/28 15:46:08 [retro] quantitative retrospective saved for run audit-security-20260328-152711-3121
|
||||
|
||||
✓ Pipeline 'audit-security' completed successfully (1137.3s, 146.6k tokens)
|
||||
|
||||
3 artifacts produced
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-security-20260328-152711-3121/scan/.wave/output/security-scan.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-security-20260328-152711-3121/deep-dive/.wave/output/security-deep-dive.md
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/audit-security-20260328-152711-3121/report/.wave/output/security-report.md
|
||||
|
||||
|
||||
71
.wave/logs/doc-onboard-20260328-161951-4e6a.log
Normal file
71
.wave/logs/doc-onboard-20260328-161951-4e6a.log
Normal file
@@ -0,0 +1,71 @@
|
||||
[16:19:52] → survey (navigator) [claude-haiku via claude]
|
||||
[16:19:52] survey Executing agent
|
||||
[16:20:01] survey Bash → ls -la /home/mwc/Coding/code-crispies/
|
||||
[16:20:02] survey Read → /home/mwc/Coding/code-crispies/packa...
|
||||
[16:20:03] survey Glob → **/*.json
|
||||
[16:20:08] survey Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[16:20:08] survey Read → /home/mwc/Coding/code-crispies/src/c...
|
||||
[16:20:09] survey Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[16:20:10] survey Read → /home/mwc/Coding/code-crispies/src/h...
|
||||
[16:20:11] survey Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[16:20:11] survey Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[16:20:11] survey Read → /home/mwc/Coding/code-crispies/src/h...
|
||||
[16:20:16] survey Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[16:20:16] survey Read → /home/mwc/Coding/code-crispies/vite....
|
||||
[16:20:17] survey Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[16:20:18] survey Read → /home/mwc/Coding/code-crispies/src/s...
|
||||
[16:20:19] survey Read → /home/mwc/Coding/code-crispies/schem...
|
||||
[16:20:20] survey Read → /home/mwc/Coding/code-crispies/tests...
|
||||
[16:20:21] survey Read → /home/mwc/Coding/code-crispies/Makefile
|
||||
[16:20:22] survey Bash → ls /home/mwc/Coding/code-crispies/docs/
|
||||
[16:20:23] survey Bash → ls /home/mwc/Coding/code-crispies/pu...
|
||||
[16:20:23] survey Read → /home/mwc/Coding/code-crispies/.env
|
||||
[16:20:29] survey Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[16:20:30] survey Bash → ls /home/mwc/Coding/code-crispies/.g...
|
||||
[16:20:31] survey Read → /home/mwc/Coding/code-crispies/src/c...
|
||||
[16:20:31] survey Read → /home/mwc/Coding/code-crispies/supab...
|
||||
[16:20:32] survey Read → /home/mwc/Coding/code-crispies/src/c...
|
||||
[16:20:33] survey Bash → ls /home/mwc/Coding/code-crispies/le...
|
||||
[16:20:36] survey Read → /home/mwc/Coding/code-crispies/.gith...
|
||||
[16:20:37] survey Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[16:20:38] survey Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[16:20:38] survey Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[16:20:44] survey Grep → export function
|
||||
[16:20:45] survey Grep → ^const translations = |^\t(en|de|pl|...
|
||||
[16:20:51] survey Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[16:22:29] survey Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[16:22:34] survey Bash → python3 -c "import json; data = json...
|
||||
[16:22:42] survey Processing results
|
||||
[16:22:42] survey validating contract
|
||||
[16:22:42] ✓ survey completed (170.6s, 152.1k in / 8.7k out)
|
||||
[16:22:42] ├─ artifact: .wave/output/project-survey.json (written)
|
||||
[16:22:42] └─ contract: project-survey.schema.json ✓ valid
|
||||
[16:22:42] → guide (philosopher) [claude-opus via claude]
|
||||
[16:22:42] guide Executing agent
|
||||
[16:22:48] guide Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[16:22:49] guide Bash → ls /home/mwc/Coding/code-crispies/
|
||||
[16:22:53] guide Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[16:22:53] guide Bash → ls /home/mwc/Coding/code-crispies/src/
|
||||
[16:22:54] guide Bash → ls /home/mwc/Coding/code-crispies/le...
|
||||
[16:22:54] guide Read → /home/mwc/Coding/code-crispies/packa...
|
||||
[16:22:58] guide Read → /home/mwc/Coding/code-crispies/vite....
|
||||
[16:22:59] guide Bash → ls /home/mwc/Coding/code-crispies/te...
|
||||
[16:23:00] guide Bash → ls /home/mwc/Coding/code-crispies/docs/
|
||||
[16:23:00] guide Bash → cat /home/mwc/Coding/code-crispies/....
|
||||
[16:23:05] guide Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[16:23:07] guide Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[16:24:29] guide Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[16:24:37] guide Processing results
|
||||
[16:24:37] guide validating contract
|
||||
[16:24:37] ✓ guide completed (114.4s, 25.2k in / 5.9k out)
|
||||
[16:24:37] ├─ artifact: .wave/output/onboarding-guide.md (written)
|
||||
[16:24:37] └─ contract: non_empty_file ✓ valid
|
||||
2026/03/28 16:24:37 [retro] quantitative retrospective saved for run doc-onboard-20260328-161951-4e6a
|
||||
|
||||
✓ Pipeline 'doc-onboard' completed successfully (285.4s, 191.9k tokens)
|
||||
|
||||
2 artifacts produced
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/doc-onboard-20260328-161951-4e6a/survey/.wave/output/project-survey.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/doc-onboard-20260328-161951-4e6a/guide/.wave/output/onboarding-guide.md
|
||||
|
||||
|
||||
244
.wave/logs/impl-feature-20260328-133515-7069.log
Normal file
244
.wave/logs/impl-feature-20260328-133515-7069.log
Normal file
@@ -0,0 +1,244 @@
|
||||
[13:35:15] → explore (navigator) [claude-haiku via claude]
|
||||
[13:35:15] explore Executing agent
|
||||
[13:35:24] explore Glob → **/*.json
|
||||
[13:35:24] explore Glob → lessons/**/*.json
|
||||
[13:35:25] explore Glob → tests/**/*.{js,test.js}
|
||||
[13:35:32] explore Bash → ls -la /home/mwc/Coding/code-crispies/
|
||||
[13:35:34] explore Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[13:35:44] explore Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[13:35:50] explore Glob → lessons/**/*.json
|
||||
[13:35:50] explore Glob → src/**/*.js
|
||||
[13:35:51] explore Glob → tests/**/*.js
|
||||
[13:35:52] explore Glob → schemas/**/*.json
|
||||
[13:35:59] explore Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[13:36:00] explore Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[13:36:01] explore Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[13:36:13] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:36:13] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:36:14] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:36:15] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:36:22] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:36:23] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:36:23] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:36:24] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:36:32] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:36:33] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:36:34] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:36:34] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:36:45] explore Grep → module-list|renderModuleList|section...
|
||||
[13:36:46] explore Grep → renderPreview|applyCode|mode.*javasc...
|
||||
[13:36:46] explore Bash → find /home/mwc/Coding/code-crispies/...
|
||||
[13:36:54] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:36:56] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:37:02] explore Grep → getModuleSection|section.*group|sect...
|
||||
[13:37:03] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:37:04] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:37:10] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:37:12] explore Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:37:22] explore Grep → section-card|landing.*section|css-pr...
|
||||
[13:37:23] explore Grep → sectionContent
|
||||
[13:37:31] explore Bash → mkdir -p /home/mwc/Coding/code-crisp...
|
||||
[13:38:36] explore Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[13:38:48] explore Processing results
|
||||
[13:38:48] explore validating contract
|
||||
[13:38:48] ✓ explore completed (213.0s, 89.2k in / 8.9k out)
|
||||
[13:38:48] ├─ artifact: .wave/output/exploration.json (written)
|
||||
[13:38:48] └─ contract: feature-exploration.schema.json ✓ valid
|
||||
[13:38:48] → plan (planner) [claude-haiku via claude]
|
||||
[13:38:48] plan Executing agent
|
||||
[13:38:59] plan Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[13:38:59] plan Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[13:39:04] plan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[13:39:10] plan Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:39:25] plan Agent →
|
||||
[13:39:26] plan Bash → find /home/mwc/Coding/code-crispies ...
|
||||
[13:39:28] plan Bash → ls -la /home/mwc/Coding/code-crispie...
|
||||
[13:39:30] plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[13:39:31] plan Read → /home/mwc/Coding/code-crispies/lesso...
|
||||
[13:39:31] plan Read → /home/mwc/Coding/code-crispies/src/c...
|
||||
[13:39:34] plan Read → /home/mwc/Coding/code-crispies/src/h...
|
||||
[13:39:34] plan Read → /home/mwc/Coding/code-crispies/src/h...
|
||||
[13:39:34] plan Read → /home/mwc/Coding/code-crispies/schem...
|
||||
[13:39:37] plan Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[13:39:37] plan Bash → wc -l /home/mwc/Coding/code-crispies...
|
||||
[13:39:42] plan Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[13:39:42] plan Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[13:39:42] plan Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[13:39:50] plan Read → /home/mwc/Coding/code-crispies/src/a...
|
||||
[13:39:50] plan Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[13:39:53] plan Read → /home/mwc/Coding/code-crispies/src/i...
|
||||
[13:39:53] plan Bash → wc -l /home/mwc/Coding/code-crispies...
|
||||
[13:39:56] plan Bash → grep -n "module-list" /home/mwc/Codi...
|
||||
[13:39:57] plan Read → /home/mwc/Coding/code-crispies/packa...
|
||||
[13:40:00] plan Read → /home/mwc/Coding/code-crispies/src/m...
|
||||
[13:40:00] plan Bash → grep -n "@codemirror/lang-javascript...
|
||||
[13:42:10] plan Bash → mkdir -p /home/mwc/Coding/code-crisp...
|
||||
[13:43:20] plan Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[13:44:23] plan Processing results
|
||||
[13:44:23] plan validating contract
|
||||
[13:44:23] ✓ plan completed (334.8s, 27.3k in / 11.5k out)
|
||||
[13:44:23] ├─ artifact: .wave/output/plan.json (written)
|
||||
[13:44:23] └─ contract: feature-plan.schema.json ✓ valid
|
||||
[13:44:23] → implement (craftsman) [claude-opus via claude]
|
||||
[13:44:23] implement Executing agent
|
||||
[13:44:31] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:44:31] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:44:39] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:44:40] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:44:40] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:44:42] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:44:42] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:44:43] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:44:44] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:44:55] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:44:57] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:44:57] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:45:04] implement ToolSearch → select:TodoWrite
|
||||
[13:45:17] implement TodoWrite → S01: Update JSON schema to supp...
|
||||
[13:45:25] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:45:34] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:50:29] implement Bash → npm install @codemirror/lang-javascript
|
||||
[13:50:50] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:50:56] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:51:04] implement TodoWrite → S04: Create 3 JavaScript lesson...
|
||||
[13:51:24] implement Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[13:51:42] implement Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[13:52:04] implement Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[13:52:13] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:52:27] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:52:39] implement TodoWrite → S06: Add JavaScript preview ren...
|
||||
[13:52:51] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:53:04] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:53:10] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:53:17] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:53:23] implement Grep → updateEditorForMode
|
||||
[13:53:27] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:53:37] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:53:44] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:53:51] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:53:58] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:54:04] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:54:10] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:54:15] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:54:20] implement Grep → // Markdown
|
||||
[13:54:24] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:54:32] implement Grep → // JavaScript
|
||||
[13:54:38] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:54:46] implement TodoWrite → S09: Add JavaScript section to ...
|
||||
[13:54:53] implement Grep → markdown.*section-card|data-section=...
|
||||
[13:54:59] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:55:07] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:55:14] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:55:19] implement Grep → sidebar-nav-mobile
|
||||
[13:55:24] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:55:31] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:55:40] implement Grep → sectionContent|renderFooterLessonLin...
|
||||
[13:55:46] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:55:53] implement Grep → ^\\tmarkdown:
|
||||
[13:55:59] implement Grep → markdown:.*`
|
||||
[13:56:16] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:56:32] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:56:38] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:56:45] implement Grep → function renderFooterLessonLinks
|
||||
[13:56:55] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:57:01] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:57:13] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:57:19] implement Grep → data-section.*markdown
|
||||
[13:57:31] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:57:37] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:57:44] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:57:59] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:58:06] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:58:27] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:58:33] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:58:39] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:58:45] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:58:50] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:58:57] implement Grep → body\\[data-section=\"markdown\"\\]
|
||||
[13:59:09] implement Grep → data-section..markdown
|
||||
[13:59:16] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:59:29] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:59:36] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[13:59:42] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:00] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:06] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:11] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:20] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:26] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:34] implement TodoWrite → S10: Add sidebar section groupi...
|
||||
[14:00:40] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:00:52] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:01:00] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:01:07] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:01:13] implement Grep → \.module-container
|
||||
[14:01:19] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:01:25] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:01:36] implement TodoWrite → S11: Update tests for JavaScrip...
|
||||
[14:01:42] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:01:51] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:02:04] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:02:20] implement Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[14:02:25] implement Bash → ls /home/mwc/Coding/code-crispies/.w...
|
||||
[14:02:30] implement Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:02:45] implement Edit → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:02:54] implement TodoWrite → Run full test suite and fix fai...
|
||||
[14:03:00] implement Bash → npm run test 2>&1
|
||||
[14:03:11] implement Bash → npx prettier --write "lessons/50-js-...
|
||||
[14:03:22] implement TodoWrite → Commit changes to worktree branch
|
||||
[14:03:26] implement Bash → git status
|
||||
[14:03:31] implement Bash → git log --oneline -5
|
||||
[14:03:37] implement Bash → git add \
|
||||
package.json \
|
||||
package...
|
||||
[14:03:45] implement Bash → git commit -m "$(cat <<'EOF'
|
||||
feat: a...
|
||||
[14:03:52] implement TodoWrite → Write result output to .wave/ou...
|
||||
[14:03:58] implement Bash → ls -d /home/mwc/Coding/code-crispies...
|
||||
[14:04:17] implement Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[14:04:25] implement TodoWrite → 14/14 tasks
|
||||
[14:04:34] implement Processing results
|
||||
[14:04:34] implement validating contract
|
||||
[14:04:39] ✓ implement completed (1210.7s, 172.2k in / 38.0k out)
|
||||
[14:04:39] ├─ artifact: .wave/output/result.md (written)
|
||||
[14:04:39] └─ contract: test_suite ✓ valid
|
||||
[14:04:39] → publish (craftsman) [claude-opus via claude]
|
||||
[14:04:39] publish Executing agent
|
||||
[14:04:46] publish Read → /home/mwc/Coding/code-crispies/.wave...
|
||||
[14:04:47] publish Bash → git log --oneline main..HEAD
|
||||
[14:04:53] publish Bash → git push -u origin HEAD
|
||||
[14:05:00] publish Bash → COMMIT_SUBJECT=$(git log --format=%s...
|
||||
[14:05:05] publish Bash → git remote -v
|
||||
[14:05:09] publish Bash → git remote -v
|
||||
[14:05:13] publish Bash → cat .git/config
|
||||
[14:05:16] publish Bash → cat .git
|
||||
[14:05:20] publish Read → /home/mwc/Coding/code-crispies/.git/...
|
||||
[14:05:34] publish Bash → curl -s "https://git.librete.ch/api/...
|
||||
[14:05:35] publish Bash → gh auth status 2>&1; echo "---"; gh ...
|
||||
[14:05:42] publish Bash → git push -u github HEAD
|
||||
[14:05:52] publish Bash → COMMIT_SUBJECT=$(git log --format=%s...
|
||||
[14:05:59] publish Bash → ls .wave/output/ 2>/dev/null || echo...
|
||||
[14:06:07] publish Write → /home/mwc/Coding/code-crispies/.wav...
|
||||
[14:06:12] publish Processing results
|
||||
[14:06:12] publish validating contract
|
||||
[14:06:12] ✓ publish completed (92.6s, 16.1k in / 2.3k out)
|
||||
[14:06:12] ├─ artifact: .wave/output/pr-result.json (written)
|
||||
[14:06:12] └─ contract: pr-result.schema.json ✓ valid
|
||||
2026/03/28 14:06:12 [retro] quantitative retrospective saved for run impl-feature-20260328-133515-7069
|
||||
|
||||
✓ Pipeline 'impl-feature' completed successfully (1857.0s, 365.6k tokens)
|
||||
|
||||
Outcomes
|
||||
✓ Branch: feat/impl-feature-20260328-133515-7069 (local only)
|
||||
✓ Pull Request: https://github.com/nextlevelshit/code-crispies/pull/3
|
||||
|
||||
4 artifacts produced
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/impl-feature-20260328-133515-7069/explore/.wave/output/exploration.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/impl-feature-20260328-133515-7069/plan/.wave/output/plan.json
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/impl-feature-20260328-133515-7069/__wt_feat-impl-feature-20260328-133515-7069/.wave/output/result.md
|
||||
• file:///home/mwc/Coding/code-crispies/.wave/workspaces/impl-feature-20260328-133515-7069/__wt_feat-impl-feature-20260328-133515-7069/.wave/output/pr-result.json
|
||||
|
||||
Next Steps
|
||||
→ Review the pull request: Pull Request
|
||||
https://github.com/nextlevelshit/code-crispies/pull/3
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user