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.
542 lines (469 loc) • 17.3 kB
YAML
# FAIR Extensions Schema
# Based on REF-056 FAIR Data Principles
# Issues: #237 (Qualified Cross-References), #238 (License Tracking)
$schema: "https://json-schema.org/draft/2020-12/schema"
$id: "https://aiwg.io/schemas/fair-extensions/v1"
title: "FAIR Extensions Schema"
description: |
Extensions to @-mention system for qualified cross-references (FAIR I3) and
structured license tracking (FAIR R1.1) per REF-056 FAIR Data Principles.
type: object
required:
- version
- qualified_references
- license_tracking
properties:
version:
type: string
pattern: "^\\d+\\.\\d+\\.\\d+$"
default: "1.0.0"
qualified_references:
$ref: "#/$defs/QualifiedReferences"
license_tracking:
$ref: "#/$defs/LicenseTracking"
$defs:
QualifiedReferences:
type: object
description: "Qualified cross-references per FAIR I3"
properties:
enabled:
type: boolean
default: true
fair_principle:
type: string
default: "FAIR I3 - (Meta)data include qualified references to other (meta)data"
syntax:
type: object
properties:
current:
type: string
default: "@path/to/file.md"
description: "Plain @-mention syntax"
qualified:
type: string
default: "@qualifier @path/to/file.md"
description: "Qualified @-mention syntax"
examples:
type: array
items: { type: string }
default:
- "@implements @.aiwg/requirements/UC-001.md"
- "@extends @src/auth/base-auth.ts"
- "@contradicts @docs/archived/old-approach.md"
- "@cites @docs/research/REF-056.md"
- "@supersedes @.aiwg/architecture/v1/sad.md"
- "@depends @src/utils/validator.ts"
- "@tests @test/unit/auth/login.test.ts"
- "@source @src/auth/login.ts"
- "@architecture @.aiwg/architecture/sad.md"
- "@nfr @.aiwg/requirements/nfr-modules/security.md"
qualifiers:
type: object
description: "Supported relationship qualifiers"
properties:
implements:
type: object
properties:
meaning: { type: string, default: "Code implements this requirement" }
use_case: { type: string, default: "Source → Requirement" }
inverse: { type: string, default: "implemented_by" }
extends:
type: object
properties:
meaning: { type: string, default: "Builds upon this artifact" }
use_case: { type: string, default: "Derived → Base" }
inverse: { type: string, default: "extended_by" }
contradicts:
type: object
properties:
meaning: { type: string, default: "Conflicts with this approach" }
use_case: { type: string, default: "New → Old" }
inverse: { type: string, default: "contradicted_by" }
cites:
type: object
properties:
meaning: { type: string, default: "References this research" }
use_case: { type: string, default: "Doc → Paper" }
inverse: { type: string, default: "cited_by" }
supersedes:
type: object
properties:
meaning: { type: string, default: "Replaces this artifact" }
use_case: { type: string, default: "New → Deprecated" }
inverse: { type: string, default: "superseded_by" }
depends:
type: object
properties:
meaning: { type: string, default: "Requires this dependency" }
use_case: { type: string, default: "Code → Dependency" }
inverse: { type: string, default: "depended_on_by" }
tests:
type: object
properties:
meaning: { type: string, default: "Test coverage for" }
use_case: { type: string, default: "Test → Source" }
inverse: { type: string, default: "tested_by" }
source:
type: object
properties:
meaning: { type: string, default: "Source code tested by" }
use_case: { type: string, default: "Source → Test" }
inverse: { type: string, default: "tests" }
architecture:
type: object
properties:
meaning: { type: string, default: "Architectural context" }
use_case: { type: string, default: "Code → Architecture" }
inverse: { type: string, default: "architecturally_defines" }
nfr:
type: object
properties:
meaning: { type: string, default: "Non-functional requirement" }
use_case: { type: string, default: "Code → NFR" }
inverse: { type: string, default: "nfr_implemented_by" }
documents:
type: object
properties:
meaning: { type: string, default: "Documentation for" }
use_case: { type: string, default: "Doc → Code" }
inverse: { type: string, default: "documented_by" }
derives_from:
type: object
properties:
meaning: { type: string, default: "Derived from this source" }
use_case: { type: string, default: "Output → Input" }
inverse: { type: string, default: "derived_to" }
parser:
type: object
properties:
pattern:
type: string
default: "@(\\w+)?\\s*@([^\\s]+)"
description: "Regex to match qualified mentions"
interface:
type: string
default: |
interface QualifiedMention {
qualifier?: string; // "implements", "extends", etc.
target: string; // Path to referenced artifact
line: number;
column: number;
}
validation:
type: object
properties:
check_qualifier_vocabulary:
type: boolean
default: true
description: "Ensure qualifier is from allowed set"
check_target_exists:
type: boolean
default: true
description: "Verify target path exists"
check_relationship_semantics:
type: boolean
default: false
description: "Validate relationship logic (e.g., supersedes target is older)"
migration:
type: object
properties:
preserve_existing:
type: boolean
default: true
description: "Keep plain @-mentions valid"
auto_qualify:
type: boolean
default: false
description: "Auto-detect and add qualifiers"
LicenseTracking:
type: object
description: "Structured license tracking per FAIR R1.1"
properties:
enabled:
type: boolean
default: true
fair_principle:
type: string
default: "FAIR R1.1 - (Meta)data are released with a clear and accessible data usage license"
license_schema:
type: object
properties:
identifier:
type: object
properties:
type: { type: string, default: "string" }
description: { type: string, default: "SPDX license identifier" }
examples:
type: array
default: ["Apache-2.0", "MIT", "GPL-3.0", "BSD-3-Clause"]
reference: { type: string, default: "https://spdx.org/licenses/" }
url:
type: object
properties:
type: { type: string, default: "string" }
format: { type: string, default: "uri" }
description: { type: string, default: "Link to license text" }
permissions:
type: object
properties:
attribution:
type: object
properties:
type: { type: string, default: "boolean" }
description: { type: string, default: "Attribution required" }
commercial_use:
type: object
properties:
type: { type: string, default: "boolean" }
description: { type: string, default: "Commercial use allowed" }
modifications:
type: object
properties:
type: { type: string, default: "boolean" }
description: { type: string, default: "Modifications allowed" }
distribution:
type: object
properties:
type: { type: string, default: "boolean" }
description: { type: string, default: "Distribution allowed" }
patent_grant:
type: object
properties:
type: { type: string, default: "boolean" }
description: { type: string, default: "Patent rights granted" }
private_use:
type: object
properties:
type: { type: string, default: "boolean" }
description: { type: string, default: "Private use allowed" }
conditions:
type: object
properties:
copyleft:
type: object
properties:
type: { type: string, default: "string" }
enum: { type: array, default: ["none", "weak", "strong"] }
state_changes:
type: object
properties:
type: { type: string, default: "boolean" }
description: { type: string, default: "Must document changes" }
extension_types:
type: object
description: "License metadata for each extension type"
properties:
agent:
type: string
default: |
# .claude/agents/test-engineer.md
---
name: Test Engineer
version: 1.0.0
license:
identifier: Apache-2.0
url: https://spdx.org/licenses/Apache-2.0.html
attribution: true
commercial_use: true
modifications: true
distribution: true
patent_grant: true
---
command:
type: string
default: |
// src/extensions/commands/definitions.ts
{
name: "use",
license: {
identifier: "Apache-2.0",
url: "https://spdx.org/licenses/Apache-2.0.html",
attribution: true,
commercialUse: true,
modifications: true,
distribution: true,
patentGrant: true,
},
}
framework:
type: string
default: |
# agentic/code/frameworks/sdlc-complete/manifest.json
{
"name": "sdlc-complete",
"version": "1.0.0",
"license": {
"identifier": "Apache-2.0",
"url": "https://spdx.org/licenses/Apache-2.0.html"
}
}
defaults:
type: object
properties:
aiwg_core:
type: string
default: "Apache-2.0"
third_party:
type: string
default: "See NOTICE file"
common_licenses:
type: object
properties:
apache_2:
type: object
properties:
identifier: { type: string, default: "Apache-2.0" }
attribution: { type: boolean, default: true }
commercial_use: { type: boolean, default: true }
modifications: { type: boolean, default: true }
distribution: { type: boolean, default: true }
patent_grant: { type: boolean, default: true }
copyleft: { type: string, default: "none" }
mit:
type: object
properties:
identifier: { type: string, default: "MIT" }
attribution: { type: boolean, default: true }
commercial_use: { type: boolean, default: true }
modifications: { type: boolean, default: true }
distribution: { type: boolean, default: true }
patent_grant: { type: boolean, default: false }
copyleft: { type: string, default: "none" }
gpl_3:
type: object
properties:
identifier: { type: string, default: "GPL-3.0" }
attribution: { type: boolean, default: true }
commercial_use: { type: boolean, default: true }
modifications: { type: boolean, default: true }
distribution: { type: boolean, default: true }
patent_grant: { type: boolean, default: true }
copyleft: { type: string, default: "strong" }
# CLI commands
cli_commands:
mentions_validate:
command: "aiwg mentions validate [path]"
description: "Validate @-mentions including qualifiers"
options:
- name: "--strict"
description: "Require qualifiers on all mentions"
mentions_graph:
command: "aiwg mentions graph [path]"
description: "Generate relationship graph"
options:
- name: "--format"
description: "mermaid, dot, json"
license_list:
command: "aiwg license list"
description: "List all licenses in use"
license_audit:
command: "aiwg license audit"
description: "Check for missing/invalid licenses"
license_report:
command: "aiwg license report"
description: "Generate NOTICE file for distribution"
# Agent protocol
agent_protocol:
parse_qualified_mentions:
description: "Parse qualified @-mentions from content"
steps:
- read_file_content
- apply_qualified_pattern
- for_each_match:
- extract_qualifier
- extract_target_path
- record_line_column
- return_qualified_mentions
validate_mentions:
description: "Validate all mentions in file"
steps:
- parse_qualified_mentions
- for_each_mention:
- if_has_qualifier:
- check_qualifier_vocabulary
- check_target_exists
- if_semantic_check_enabled:
- validate_relationship_semantics
- return_validation_result
audit_licenses:
description: "Audit licenses across all extensions"
steps:
- discover_all_extensions
- for_each_extension:
- extract_license_metadata
- if_missing:
- record_missing_license
- if_present:
- validate_spdx_identifier
- check_compatibility
- generate_audit_report
generate_notice:
description: "Generate NOTICE file"
steps:
- collect_all_licenses
- group_by_license_type
- format_notice_header
- for_each_license:
- list_artifacts_using_license
- include_license_text_if_required
- write_notice_file
# Storage
storage:
mention_index: ".aiwg/mentions/index.json"
relationship_graph: ".aiwg/mentions/graph.json"
license_registry: ".aiwg/licenses/registry.json"
notice_file: "NOTICE"
# Research targets (from REF-056 FAIR)
research_targets:
fair_i3: "Qualified references with relationship types"
fair_r1_1: "Clear and accessible license metadata"
# Example qualified references
example_qualified_references: |
## References
- @implements @.aiwg/requirements/UC-001-user-authentication.md
- @extends @src/auth/base-authenticator.ts
- @tests @test/unit/auth/login.test.ts
- @architecture @.aiwg/architecture/software-architecture-doc.md#section-5
- @nfr @.aiwg/requirements/nfr-modules/security.md
- @cites @.aiwg/research/corpus/REF-056-fair-principles.md
# Example license metadata
example_license_metadata: |
---
name: Voice Consistency Validator
version: 1.2.0
license:
identifier: Apache-2.0
url: https://spdx.org/licenses/Apache-2.0.html
attribution: true
commercial_use: true
modifications: true
distribution: true
patent_grant: true
---
# Example NOTICE file
example_notice_file: |
NOTICE
======
AIWG
Copyright 2026 jmagly
This product includes software developed under the Apache License 2.0.
Third-Party Components
----------------------
The following third-party components are included:
1. SDLC Complete Framework
License: Apache-2.0
2. Voice Framework Addon
License: Apache-2.0
See individual component LICENSE files for full license text.
# References
references:
research:
- "@.aiwg/research/findings/REF-056-fair-principles.md"
implementation:
- "#237"
- "#238"
related:
- "@.claude/rules/mention-wiring.md"
- "@src/utils/mention-parser.ts"
- "@LICENSE"
- "@src/extensions/types.ts"