aiwg
Version:
Deployment tool and support utility for AI context. Copies agents, skills, commands, rules, and behaviors into the paths each AI platform reads (Claude Code, Codex, Copilot, Cursor, Warp, OpenClaw, and 6 more) so one source of truth works across 10 platfo
481 lines (427 loc) • 11.7 kB
YAML
# Debug Memory Schema for Executable Feedback Loop
# Based on REF-013 MetaGPT
# Finding: Debug memory pattern enables cross-session learning
# Issue: #101
$schema: "https://json-schema.org/draft/2020-12/schema"
$id: "https://aiwg.io/schemas/debug-memory/v1"
title: "Debug Memory Schema"
description: |
Structured storage for execution history, enabling learning from
past failures and fixes. Core to the executable feedback loop.
type: object
required:
- session_id
- file_path
- executions
properties:
session_id:
type: string
format: uuid
description: "Unique session identifier"
file_path:
type: string
description: "Primary file being worked on"
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
status:
type: string
enum: [in_progress, passed, failed, escalated]
description: "Current status of this debug session"
executions:
type: array
items:
$ref: "#/$defs/Execution"
description: "History of execution attempts"
learnings:
$ref: "#/$defs/Learnings"
description: "Patterns and learnings from this session"
metadata:
type: object
properties:
agent:
type: string
description: "Agent that created this memory"
task_id:
type: string
description: "Associated task ID"
ralph_iteration:
type: integer
description: "Agent loop iteration if applicable"
$defs:
Execution:
type: object
required:
- attempt
- timestamp
- code_hash
- test_results
properties:
attempt:
type: integer
minimum: 1
description: "Attempt number"
timestamp:
type: string
format: date-time
code_hash:
type: string
description: "SHA-256 hash of code at this attempt"
code_snapshot:
type: string
description: "Optional: full code at this attempt"
environment:
type: object
properties:
runtime:
type: string
description: "e.g., node, python, go"
runtime_version:
type: string
test_framework:
type: string
description: "e.g., jest, pytest, go test"
os:
type: string
additional:
type: object
additionalProperties: true
test_results:
type: object
required: [total, passed, failed]
properties:
total:
type: integer
minimum: 0
passed:
type: integer
minimum: 0
failed:
type: integer
minimum: 0
errors:
type: integer
minimum: 0
description: "Runtime errors (not assertion failures)"
skipped:
type: integer
minimum: 0
duration_ms:
type: integer
minimum: 0
coverage_percent:
type: number
minimum: 0
maximum: 100
failures:
type: array
items:
$ref: "#/$defs/Failure"
analysis:
$ref: "#/$defs/Analysis"
fix_applied:
$ref: "#/$defs/Fix"
Failure:
type: object
required:
- test_name
- error_type
- error_message
properties:
test_name:
type: string
description: "Name/description of failing test"
test_file:
type: string
description: "Path to test file"
test_line:
type: integer
description: "Line number in test file"
error_type:
type: string
enum:
- AssertionError
- TypeError
- ReferenceError
- SyntaxError
- RuntimeError
- TimeoutError
- NetworkError
- ValidationError
- Other
description: "Category of error"
error_message:
type: string
description: "Full error message"
stack_trace:
type: string
description: "Stack trace if available"
expected:
type: string
description: "Expected value (for assertions)"
actual:
type: string
description: "Actual value (for assertions)"
source_location:
type: object
properties:
file:
type: string
line:
type: integer
function:
type: string
description: "Location in source code that caused failure"
Analysis:
type: object
required:
- root_cause
- fix_strategy
properties:
root_cause:
type: string
minLength: 20
description: "Identified root cause of failure(s)"
root_cause_category:
type: string
enum:
- null_undefined_access
- type_mismatch
- missing_validation
- logic_error
- off_by_one
- race_condition
- resource_leak
- missing_error_handling
- api_misuse
- configuration_error
- dependency_issue
- other
description: "Category of root cause"
fix_strategy:
type: string
minLength: 20
description: "Strategy to fix the issue"
confidence:
type: number
minimum: 0
maximum: 1
description: "Confidence in the analysis"
related_failures:
type: array
items:
type: string
description: "Other failures with same root cause"
similar_past_issues:
type: array
items:
type: object
properties:
session_id:
type: string
file:
type: string
resolution:
type: string
description: "Similar issues from debug memory"
Fix:
type: object
required:
- description
properties:
description:
type: string
description: "What was changed"
diff_summary:
type: string
description: "e.g., '+5/-2 lines'"
files_changed:
type: array
items:
type: string
description: "List of modified files"
diff:
type: string
description: "Actual diff if available"
verification:
type: string
enum: [pending, passed, failed]
description: "Was the fix verified?"
Learnings:
type: object
description: "Accumulated learnings from this session"
properties:
patterns_identified:
type: array
items:
type: object
required: [pattern, frequency]
properties:
pattern:
type: string
description: "Identified error pattern"
category:
type: string
frequency:
type: integer
minimum: 1
description: "How many times seen"
fix_template:
type: string
description: "Template for fixing this pattern"
effectiveness:
type: number
minimum: 0
maximum: 1
description: "How often the fix template works"
recurring_failures:
type: array
items:
type: object
properties:
test:
type: string
occurrences:
type: integer
resolution:
type: string
enum: [resolved, pending, wont_fix, escalated]
notes:
type: string
code_quality_issues:
type: array
items:
type: object
properties:
issue:
type: string
location:
type: string
severity:
type: string
enum: [critical, major, minor]
addressed:
type: boolean
recommendations:
type: array
items:
type: string
description: "Recommendations for future development"
# Index configuration for efficient querying
indexing:
primary_key: session_id
secondary_indexes:
- file_path
- status
- "executions.failures.error_type"
- "executions.analysis.root_cause_category"
- "learnings.patterns_identified.pattern"
# Retention policy
retention:
default_days: 30
on_escalation: 90
on_learning_identified: 60
# Query patterns
queries:
find_similar_failures: |
SELECT * FROM debug_memory
WHERE executions.failures.error_type = $error_type
AND executions.failures.source_location.file LIKE $file_pattern
ORDER BY updated_at DESC
LIMIT 10
get_fix_templates: |
SELECT learnings.patterns_identified
FROM debug_memory
WHERE learnings.patterns_identified.category = $category
AND learnings.patterns_identified.effectiveness > 0.7
recent_escalations: |
SELECT * FROM debug_memory
WHERE status = 'escalated'
AND updated_at > $since
ORDER BY updated_at DESC
# Integration hooks
hooks:
on_failure:
- check_similar_past_issues
- apply_known_fix_template
on_success:
- update_fix_effectiveness
- extract_learnings
on_escalation:
- notify_human
- preserve_full_context
# Examples
examples:
- session_id: "dm-001-example"
file_path: "src/auth/validate.ts"
status: passed
executions:
- attempt: 1
timestamp: "2026-01-25T15:00:00Z"
code_hash: "abc123"
environment:
runtime: node
runtime_version: "20.11.0"
test_framework: jest
test_results:
total: 10
passed: 8
failed: 2
errors: 0
duration_ms: 1500
coverage_percent: 75
failures:
- test_name: "should reject null input"
test_file: "test/auth/validate.test.ts"
test_line: 42
error_type: TypeError
error_message: "Cannot read property 'length' of null"
source_location:
file: "src/auth/validate.ts"
line: 15
function: "validateInput"
analysis:
root_cause: "validateInput() accesses input.length without null check"
root_cause_category: null_undefined_access
fix_strategy: "Add null/undefined check at function entry"
confidence: 0.95
fix_applied:
description: "Added early return for null/undefined input"
diff_summary: "+3/-0 lines"
verification: passed
- attempt: 2
timestamp: "2026-01-25T15:01:30Z"
code_hash: "def456"
environment:
runtime: node
runtime_version: "20.11.0"
test_framework: jest
test_results:
total: 10
passed: 10
failed: 0
errors: 0
duration_ms: 1450
coverage_percent: 82
learnings:
patterns_identified:
- pattern: "null_access_without_check"
category: null_undefined_access
frequency: 1
fix_template: "Add null check: if (!input) return/throw"
effectiveness: 1.0
recommendations:
- "Consider using TypeScript strict null checks"
- "Add input validation layer for all public functions"
# References
references:
research:
- "@.aiwg/research/findings/REF-013-metagpt.md"
implementation:
- "#101"
related:
- "@.claude/rules/executable-feedback.md"
- "@agentic/code/addons/ralph/schemas/reflection-memory.json"