UNPKG

aiwg

Version:

Cognitive architecture for AI-augmented software development with structured memory, ensemble validation, and closed-loop correction. FAIR-aligned artifacts, 84% cost reduction via human-in-the-loop, standards adopted by 100+ organizations.

637 lines (557 loc) 22.2 kB
# W3C PROV-Compliant Provenance Record Schema # Version: 1.0.0 # Purpose: Define structure for recording artifact provenance in AIWG # Based on: W3C PROV-DM (REF-062) Entity-Activity-Agent model # ============================================================================== # ENTITY STRUCTURE # ============================================================================== # An entity is an artifact (document, code, test, schema) with a provenance record entity: description: "Immutable or mutable thing tracked in provenance system" required_fields: - id - type - created_at fields: id: type: string format: "urn:aiwg:artifact:<project-relative-path>" description: "Unique identifier for entity using URN schema" examples: - "urn:aiwg:artifact:.aiwg/requirements/use-cases/UC-104-provenance.md" - "urn:aiwg:artifact:src/provenance/tracker.ts" - "urn:aiwg:artifact:test/unit/provenance/tracker.test.ts" - "urn:aiwg:artifact:.claude/rules/provenance-tracking.md" constraints: - "MUST use project-relative path (not absolute)" - "MUST be unique across project" - "MUST match actual file location" type: type: string enum: - document # Markdown, text files - schema # YAML, JSON schemas - code # Source code (.ts, .js, .py) - test # Test files - configuration # Config files (.json, .yaml) - agent_definition # Agent markdown files - command_definition # Command/skill definitions - template # Document templates - data # Data files, fixtures - artifact_bundle # Collection of related artifacts description: "Type of artifact for categorization" examples: - "document" - "code" - "test" created_at: type: string format: "ISO 8601 timestamp (RFC 3339)" description: "When entity was first created" examples: - "2026-01-25T19:30:00Z" - "2026-01-25T19:30:00-05:00" constraints: - "MUST be valid ISO 8601 format" - "SHOULD use UTC timezone (Z suffix) when possible" updated_at: type: string format: "ISO 8601 timestamp" description: "When entity was last modified (optional, for mutable entities)" examples: - "2026-01-25T20:15:00Z" constraints: - "MUST be >= created_at" - "Only include if entity modified after creation" checksum: type: string format: "sha256:<hex-digest>" description: "Content hash for integrity verification (optional)" examples: - "sha256:a3c8f9e2b1d4567890abcdef1234567890abcdef1234567890abcdef12345678" constraints: - "MUST be SHA-256 hash of file contents" - "Hex digest MUST be lowercase" size_bytes: type: integer description: "File size in bytes (optional)" examples: - 4096 - 1048576 attributes: type: object description: "Additional metadata specific to entity type (optional)" examples: - language: "typescript" test_framework: "vitest" - voice_profile: "technical-authority" word_count: 1523 # ============================================================================== # ACTIVITY STRUCTURE # ============================================================================== # An activity is an operation that creates, modifies, or uses entities activity: description: "Something that occurs over time and acts upon or with entities" required_fields: - id - type - started_at - ended_at fields: id: type: string format: "urn:aiwg:activity:<type>:<artifact-name>:<sequence>" description: "Unique identifier for activity" examples: - "urn:aiwg:activity:generation:provenance-guide:001" - "urn:aiwg:activity:modification:tracker:003" - "urn:aiwg:activity:testing:tracker:001" constraints: - "MUST be unique across project" - "Sequence number increments for repeated activities on same artifact" type: type: string enum: - generation # New artifact created - modification # Existing artifact updated - refactoring # Code restructured without behavior change - testing # Tests written or executed - review # Artifact reviewed for quality - merge # Multiple artifacts combined - derivation # New artifact derived from sources - validation # Artifact validated against schema/requirements - deployment # Artifact deployed to environment description: "Type of activity performed" examples: - "generation" - "testing" started_at: type: string format: "ISO 8601 timestamp" description: "When activity began" examples: - "2026-01-25T19:29:45Z" constraints: - "MUST be valid ISO 8601 format" - "MUST be before ended_at" ended_at: type: string format: "ISO 8601 timestamp" description: "When activity completed" examples: - "2026-01-25T19:30:00Z" constraints: - "MUST be valid ISO 8601 format" - "MUST be after started_at" duration_seconds: type: integer description: "Activity duration in seconds (optional, computed from timestamps)" examples: - 15 - 120 constraints: - "MUST equal (ended_at - started_at) in seconds" description: type: string description: "Human-readable description of activity (optional)" examples: - "Generate provenance tracking rule document following token-security.md pattern" - "Implement ProvenanceTracker class based on UC-104 requirements" attributes: type: object description: "Additional metadata specific to activity type (optional)" examples: - command: "aiwg use sdlc" user_prompt: "implement issue #104" - test_framework: "vitest" tests_written: 12 tests_passing: 12 # ============================================================================== # AGENT STRUCTURE # ============================================================================== # An agent is something that bears responsibility for activities agent: description: "Something that bears some responsibility for activity taking place" required_fields: - id - type fields: id: type: string format: "urn:aiwg:agent:<agent-identifier>" description: "Unique identifier for agent" examples: - "urn:aiwg:agent:claude-sonnet-4.5" - "urn:aiwg:agent:software-implementer" - "urn:aiwg:agent:test-engineer" - "urn:aiwg:agent:human:developer@example.com" - "urn:aiwg:agent:tool:eslint" constraints: - "MUST be unique and stable across sessions" - "Use descriptive identifiers" type: type: string enum: - ai_assistant # Base LLM (Claude, GPT) - aiwg_agent # AIWG specialized agent (Software Implementer, Test Engineer) - human # Human developer or user - automated_tool # Script, CLI tool, linter - ci_system # CI/CD pipeline (GitHub Actions, GitLab CI) description: "Category of agent" examples: - "ai_assistant" - "aiwg_agent" name: type: string description: "Human-readable agent name (optional)" examples: - "Claude Sonnet 4.5" - "Software Implementer Agent" - "John Developer" version: type: string description: "Agent version identifier (optional but recommended)" examples: - "claude-sonnet-4-5-20250929" - "1.0.0" - "v2026.1.5" constraints: - "For AI models: use model ID" - "For AIWG agents: use semantic version" tool: type: string description: "Underlying tool or platform (optional, for aiwg_agent)" examples: - "claude-sonnet-4.5" - "gpt-4-turbo" constraints: - "Record base AI model when AIWG agent powered by LLM" attributes: type: object description: "Additional metadata specific to agent type (optional)" examples: - role: "backend_developer" expertise: ["typescript", "testing", "provenance"] - organization: "AIWG Development Team" # ============================================================================== # RELATIONSHIPS STRUCTURE # ============================================================================== # Relationships connect entities, activities, and agents following W3C PROV model relationships: description: "PROV relations establishing provenance chains" # Entity-Activity Relations wasGeneratedBy: description: "Entity was created by activity" structure: entity: "urn:aiwg:artifact:<path>" activity: "urn:aiwg:activity:<type>:<name>:<seq>" time: "ISO 8601 timestamp (optional)" examples: - entity: "urn:aiwg:artifact:src/provenance/tracker.ts" activity: "urn:aiwg:activity:generation:tracker:001" time: "2026-01-25T19:30:00Z" cardinality: "one entity : one activity" used: description: "Activity used entity as input" structure: activity: "urn:aiwg:activity:<type>:<name>:<seq>" entity: "urn:aiwg:artifact:<path>" role: "string (optional - how entity was used)" examples: - activity: "urn:aiwg:activity:generation:tracker:001" entity: "urn:aiwg:artifact:.aiwg/requirements/use-cases/UC-104-provenance.md" role: "source_requirement" - activity: "urn:aiwg:activity:generation:tracker:001" entity: "urn:aiwg:artifact:agentic/code/frameworks/sdlc-complete/schemas/provenance/prov-record.yaml" role: "schema_definition" cardinality: "one activity : many entities" # Entity-Entity Relations wasDerivedFrom: description: "Entity was created from or based on another entity" structure: entity: "urn:aiwg:artifact:<path>" source: "urn:aiwg:artifact:<source-path>" derivation_type: "string (implements|conforms_to|follows_pattern|extends|tests|documents|refines|derives_from)" activity: "urn:aiwg:activity:<type>:<name>:<seq> (optional - which activity performed derivation)" examples: - entity: "urn:aiwg:artifact:src/provenance/tracker.ts" source: "urn:aiwg:artifact:.aiwg/requirements/use-cases/UC-104-provenance.md" derivation_type: "implements" activity: "urn:aiwg:activity:generation:tracker:001" - entity: "urn:aiwg:artifact:test/unit/provenance/tracker.test.ts" source: "urn:aiwg:artifact:src/provenance/tracker.ts" derivation_type: "tests" cardinality: "one entity : many source entities" constraints: - "Use specific derivation_type rather than generic 'derives_from' when possible" - "Record ALL source entities, not just primary one" # Activity-Agent Relations wasAssociatedWith: description: "Activity was performed by agent" structure: activity: "urn:aiwg:activity:<type>:<name>:<seq>" agent: "urn:aiwg:agent:<identifier>" role: "string (optional - agent's role in activity)" examples: - activity: "urn:aiwg:activity:generation:tracker:001" agent: "urn:aiwg:agent:software-implementer" role: "primary_implementer" - activity: "urn:aiwg:activity:review:tracker:001" agent: "urn:aiwg:agent:human:developer@example.com" role: "code_reviewer" cardinality: "one activity : many agents" # Agent-Entity Relations wasAttributedTo: description: "Entity is attributed to agent (who is responsible)" structure: entity: "urn:aiwg:artifact:<path>" agent: "urn:aiwg:agent:<identifier>" examples: - entity: "urn:aiwg:artifact:src/provenance/tracker.ts" agent: "urn:aiwg:agent:software-implementer" cardinality: "one entity : many agents" # Agent-Agent Relations actedOnBehalfOf: description: "Agent acted on behalf of another agent (delegation)" structure: delegate: "urn:aiwg:agent:<identifier>" responsible: "urn:aiwg:agent:<identifier>" activity: "urn:aiwg:activity:<type>:<name>:<seq> (optional)" examples: - delegate: "urn:aiwg:agent:software-implementer" responsible: "urn:aiwg:agent:claude-sonnet-4.5" activity: "urn:aiwg:activity:generation:tracker:001" notes: "AIWG agents act on behalf of base LLM" # ============================================================================== # DERIVATION TYPE VOCABULARY # ============================================================================== # Standard vocabulary for wasDerivedFrom.derivation_type derivation_types: implements: description: "Code implements requirement or specification" examples: - "src/auth.ts implements .aiwg/requirements/UC-001-auth.md" conforms_to: description: "Artifact follows schema or standard" examples: - "provenance-record.yaml conforms to prov-record.yaml schema" follows_pattern: description: "Artifact uses template or established pattern" examples: - "provenance-tracking.md follows token-security.md structure" extends: description: "Artifact extends or builds upon base" examples: - "advanced-agent.md extends base-agent.md" tests: description: "Test artifact verifies code artifact" examples: - "tracker.test.ts tests tracker.ts" documents: description: "Documentation describes implementation" examples: - "api-docs.md documents api.ts" refines: description: "Artifact refines earlier version" examples: - "v2-spec.md refines v1-spec.md" derives_from: description: "General derivation (use when specific type unclear)" examples: - "summary.md derives from research-findings.md" # ============================================================================== # ACTIVITY TYPE VOCABULARY # ============================================================================== # Standard vocabulary for activity.type activity_types: generation: description: "New artifact created from scratch or templates" typical_inputs: ["requirements", "schemas", "templates"] typical_outputs: ["new documents", "new code", "new tests"] modification: description: "Existing artifact updated or edited" typical_inputs: ["existing artifact", "change requirements"] typical_outputs: ["updated artifact"] refactoring: description: "Code restructured without behavior change" typical_inputs: ["existing code"] typical_outputs: ["restructured code"] testing: description: "Tests written or executed" typical_inputs: ["code to test", "requirements"] typical_outputs: ["test files", "test results"] review: description: "Artifact reviewed for quality, security, or compliance" typical_inputs: ["artifact to review", "review criteria"] typical_outputs: ["review comments", "approval/rejection"] merge: description: "Multiple artifacts combined" typical_inputs: ["multiple source artifacts"] typical_outputs: ["merged artifact"] derivation: description: "New artifact derived from existing sources" typical_inputs: ["source artifacts", "transformation rules"] typical_outputs: ["derived artifact"] validation: description: "Artifact validated against schema or requirements" typical_inputs: ["artifact to validate", "schema/requirements"] typical_outputs: ["validation report"] deployment: description: "Artifact deployed to environment" typical_inputs: ["artifact to deploy", "deployment config"] typical_outputs: ["deployed artifact", "deployment log"] # ============================================================================== # AGENT TYPE VOCABULARY # ============================================================================== # Standard vocabulary for agent.type agent_types: ai_assistant: description: "Base large language model (Claude, GPT, etc.)" examples: - "claude-sonnet-4.5" - "gpt-4-turbo" attributes: - model_id - provider - version aiwg_agent: description: "AIWG specialized agent with defined role and tools" examples: - "software-implementer" - "test-engineer" - "security-auditor" attributes: - role - expertise - tool (underlying AI model) human: description: "Human developer, user, or reviewer" examples: - "human:developer@example.com" - "human:john-smith" attributes: - email - name - role automated_tool: description: "Script, CLI tool, linter, formatter" examples: - "tool:eslint" - "tool:prettier" - "tool:aiwg-cli" attributes: - version - configuration ci_system: description: "CI/CD pipeline or automation system" examples: - "ci:github-actions" - "ci:gitlab-ci" attributes: - workflow_id - run_number # ============================================================================== # COMPLETE RECORD TEMPLATE # ============================================================================== # Example of a complete provenance record record_template: metadata: schema_version: "1.0.0" created_at: "2026-01-25T19:30:00Z" description: "Provenance record for artifact creation" entity: id: "urn:aiwg:artifact:<project-relative-path>" type: "document|schema|code|test|configuration|agent_definition|command_definition|template|data|artifact_bundle" created_at: "2026-01-25T19:30:00Z" updated_at: "2026-01-25T20:15:00Z" # Optional checksum: "sha256:abc123..." # Optional size_bytes: 4096 # Optional attributes: {} # Optional activity: id: "urn:aiwg:activity:<type>:<artifact-name>:<sequence>" type: "generation|modification|refactoring|testing|review|merge|derivation|validation|deployment" started_at: "2026-01-25T19:29:45Z" ended_at: "2026-01-25T19:30:00Z" duration_seconds: 15 # Optional description: "Human-readable activity description" # Optional attributes: {} # Optional agent: id: "urn:aiwg:agent:<identifier>" type: "ai_assistant|aiwg_agent|human|automated_tool|ci_system" name: "Agent Name" # Optional version: "1.0.0" # Optional but recommended tool: "claude-sonnet-4.5" # Optional, for aiwg_agent attributes: {} # Optional relationships: wasGeneratedBy: entity: "urn:aiwg:artifact:<path>" activity: "urn:aiwg:activity:<type>:<name>:<seq>" time: "2026-01-25T19:30:00Z" # Optional used: - activity: "urn:aiwg:activity:<type>:<name>:<seq>" entity: "urn:aiwg:artifact:<source-path-1>" role: "source_requirement" - activity: "urn:aiwg:activity:<type>:<name>:<seq>" entity: "urn:aiwg:artifact:<source-path-2>" role: "schema_definition" wasDerivedFrom: - entity: "urn:aiwg:artifact:<path>" source: "urn:aiwg:artifact:<source-path-1>" derivation_type: "implements" activity: "urn:aiwg:activity:<type>:<name>:<seq>" - entity: "urn:aiwg:artifact:<path>" source: "urn:aiwg:artifact:<source-path-2>" derivation_type: "conforms_to" wasAssociatedWith: activity: "urn:aiwg:activity:<type>:<name>:<seq>" agent: "urn:aiwg:agent:<identifier>" role: "primary_implementer" # Optional wasAttributedTo: entity: "urn:aiwg:artifact:<path>" agent: "urn:aiwg:agent:<identifier>" actedOnBehalfOf: # Optional delegate: "urn:aiwg:agent:software-implementer" responsible: "urn:aiwg:agent:claude-sonnet-4.5" activity: "urn:aiwg:activity:<type>:<name>:<seq>" # ============================================================================== # VALIDATION RULES # ============================================================================== # Rules for validating provenance records validation_rules: required_fields: entity: ["id", "type", "created_at"] activity: ["id", "type", "started_at", "ended_at"] agent: ["id", "type"] relationships: ["wasGeneratedBy", "wasAttributedTo"] urn_format: entity_id: "^urn:aiwg:artifact:.+" activity_id: "^urn:aiwg:activity:[^:]+:[^:]+:\\d+$" agent_id: "^urn:aiwg:agent:.+" timestamp_constraints: - "activity.ended_at >= activity.started_at" - "entity.updated_at >= entity.created_at (if present)" - "activity.started_at <= entity.created_at" relationship_integrity: - "All entity references must exist in system" - "All activity references must exist in record or other records" - "All agent references must be defined in record or registry" derivation_chain: - "wasDerivedFrom.source entities should have own provenance records" - "Circular derivations not allowed" # ============================================================================== # NOTES # ============================================================================== notes: - "This schema is based on W3C PROV-DM (REF-062)" - "URN format chosen for stable, project-relative identifiers" - "ISO 8601 timestamps ensure unambiguous temporal ordering" - "All fields marked 'optional' improve record quality but not strictly required" - "Provenance records stored in .aiwg/research/provenance/records/" - "File naming: <artifact-name>.prov.yaml" - "Schema version in record.metadata.schema_version for evolution" references: - "REF-062: W3C PROV-DM (W3C Recommendation 2013)" - "@.claude/rules/provenance-tracking.md - Provenance tracking enforcement rules" - "@.aiwg/research/provenance/docs/provenance-guide.md - Usage guide" - "@.aiwg/research/provenance/examples/ - Example records" - "@https://www.w3.org/TR/prov-dm/ - W3C PROV-DM specification"