Skip to content

Contracts Overview ​

This section centralizes the canonical contracts used across Orchestration and Providers.

  • Schemas Index β€” all v0 JSON Schemas with purpose and status
  • Conformance Matrix β€” docs/examples validated vs schemas
  • Generated Types β€” TypeScript/Python/Swift type hints from schemas
  • Breaking/Non-breaking β€” guidance for changes

Quick links:

Layer-to-Layer Contracts (Canonical, Priority 0.9) ​

Operational Contracts (Canonical, Priority 0.9) ​

Contract Implementation Framework ​

Schema Validation Architecture ​

Multi-level Validation Pipeline:

typescript
interface ContractValidationPipeline {
  stages: ValidationStage[];
  errorHandling: ErrorStrategy;
  performanceMetrics: ValidationMetrics;
}

enum ValidationStage {
  SYNTAX_CHECK = "syntax",        // JSON Schema syntax validation
  SEMANTIC_CHECK = "semantic",     // Business logic validation  
  COMPATIBILITY_CHECK = "compat",  // Backward compatibility verification
  PERFORMANCE_CHECK = "perf"       // Contract performance validation
}

class ContractValidator {
  async validateRequest(schema: JSONSchema, payload: any): Promise<ValidationResult> {
    const syntaxResult = await this.validateSyntax(schema, payload);
    if (!syntaxResult.valid) return syntaxResult;
    
    const semanticResult = await this.validateSemantics(schema, payload);
    if (!semanticResult.valid) return semanticResult;
    
    const compatResult = await this.validateCompatibility(schema, payload);
    return compatResult;
  }
  
  private async validateSyntax(schema: JSONSchema, payload: any): Promise<ValidationResult> {
    const ajv = new Ajv({ allErrors: true, strict: true });
    const validate = ajv.compile(schema);
    const valid = validate(payload);
    
    return {
      valid,
      errors: validate.errors || [],
      stage: ValidationStage.SYNTAX_CHECK,
      performance: { validation_time_ms: Date.now() - start }
    };
  }
}

Contract Storage & Versioning ​

Schema Registry Architecture:

yaml
# Schema storage structure
schemas/
  v0/
    orchestration/
      render_request.v0.json
      render_context_reply.v0.json
      provider_request.v0.json
    layer_contracts/
      l1_l2_contract.v0.json
      l2_l5_contract.v0.json
      l4_l5_contract.v0.json
    operational/
      auth_contract.v0.json
      health_contract.v0.json
      monitoring_contract.v0.json
  v1/
    # Future schema versions
    migration_guides/
      v0_to_v1_migration.md
      breaking_changes.md

Database Schema for Contract Management:

sql
-- Contract registry database schema
CREATE TABLE contract_schemas (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    name VARCHAR(255) NOT NULL,
    version VARCHAR(50) NOT NULL,
    schema_content JSONB NOT NULL,
    status contract_status NOT NULL DEFAULT 'draft',
    created_at TIMESTAMPTZ DEFAULT NOW(),
    updated_at TIMESTAMPTZ DEFAULT NOW(),
    created_by VARCHAR(255) NOT NULL,
    UNIQUE(name, version)
);

CREATE TYPE contract_status AS ENUM ('draft', 'review', 'approved', 'deprecated', 'retired');

CREATE TABLE contract_validations (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    schema_id UUID REFERENCES contract_schemas(id),
    validation_type VARCHAR(100) NOT NULL,
    payload_sample JSONB NOT NULL,
    validation_result JSONB NOT NULL,
    performance_metrics JSONB NOT NULL,
    created_at TIMESTAMPTZ DEFAULT NOW()
);

CREATE INDEX idx_contract_schemas_name_version ON contract_schemas(name, version);
CREATE INDEX idx_contract_validations_schema_id ON contract_validations(schema_id);
CREATE INDEX idx_contract_validations_created_at ON contract_validations(created_at);

Performance Optimization ​

Contract Validation Performance:

typescript
class HighPerformanceValidator {
  private schemaCache: Map<string, CompiledSchema> = new Map();
  private validationMetrics: ValidationMetrics = new ValidationMetrics();

  async validateWithCaching(schemaId: string, payload: any): Promise<ValidationResult> {
    const startTime = performance.now();
    
    // Schema compilation caching
    let compiledSchema = this.schemaCache.get(schemaId);
    if (!compiledSchema) {
      const schema = await this.loadSchema(schemaId);
      compiledSchema = this.compileSchema(schema);
      this.schemaCache.set(schemaId, compiledSchema);
    }
    
    // Fast-path validation for common patterns
    if (this.isCachedValidationApplicable(payload)) {
      const cachedResult = await this.getCachedValidation(schemaId, payload);
      if (cachedResult) {
        this.validationMetrics.recordCacheHit(schemaId, performance.now() - startTime);
        return cachedResult;
      }
    }
    
    // Full validation with performance tracking
    const result = await this.performFullValidation(compiledSchema, payload);
    
    this.validationMetrics.recordValidation(schemaId, {
      validation_time_ms: performance.now() - startTime,
      payload_size_bytes: JSON.stringify(payload).length,
      errors_count: result.errors.length,
      cache_hit: false
    });
    
    return result;
  }

  // Validation performance targets
  getPerformanceTargets(): ValidationPerformanceTargets {
    return {
      simple_contracts: { p95_ms: 5, p99_ms: 15 },      // Basic request/response
      complex_contracts: { p95_ms: 20, p99_ms: 50 },    // Multi-layer contracts
      schema_compilation: { p95_ms: 100, p99_ms: 200 }, // Schema compilation time
      cache_hit_ratio: 0.85                              // Target cache efficiency
    };
  }
}

Advanced Testing & Validation ​

Contract Testing Framework ​

Unit Testing for Contract Validation:

typescript
describe('ContractValidation', () => {
  describe('L1↔L2 Contract', () => {
    test('validates correct noosphere search request', async () => {
      const validRequest = {
        request_id: "req-123",
        query: "hyperbolic embeddings",
        max_results: 10,
        search_method: "vector",
        timeout_ms: 2000
      };
      
      const result = await validator.validate('l1_l2_contract.v0', validRequest);
      expect(result.valid).toBe(true);
      expect(result.performance.validation_time_ms).toBeLessThan(5);
    });

    test('rejects malformed search request', async () => {
      const invalidRequest = {
        request_id: "", // Invalid: empty request_id
        query: "test",
        max_results: -1, // Invalid: negative number
        search_method: "invalid_method", // Invalid: not in enum
      };
      
      const result = await validator.validate('l1_l2_contract.v0', invalidRequest);
      expect(result.valid).toBe(false);
      expect(result.errors).toHaveLength(3);
      expect(result.errors[0].instancePath).toBe('/request_id');
    });
  });

  describe('Performance Validation', () => {
    test('contract validation meets performance targets', async () => {
      const requests = generateTestPayloads(1000);
      const results = [];
      
      for (const request of requests) {
        const result = await validator.validate('render_request.v0', request);
        results.push(result.performance.validation_time_ms);
      }
      
      const p95 = percentile(results, 95);
      const p99 = percentile(results, 99);
      
      expect(p95).toBeLessThan(20); // P95 < 20ms
      expect(p99).toBeLessThan(50); // P99 < 50ms
    });
  });
});

Integration Testing for Layer Contracts:

typescript
describe('Layer Contract Integration', () => {
  test('L1β†’L2β†’L5 contract flow', async () => {
    // 1. L5 requests context from L2
    const l5Request = {
      request_id: "integration-test-001",
      intent: "debug authentication",
      budgets: { tokens_max: 2000, time_ms: 1000 },
      sources: ["L2", "L1"]
    };
    
    // 2. L2 forwards to L1 with project scope
    const l2ToL1Request = {
      request_id: "integration-test-001",
      query: "authentication debugging patterns",
      project_context: "react-typescript-project",
      max_results: 15
    };
    
    // 3. Validate contract compliance at each step
    const l5ValidationResult = await validator.validate('l2_l5_contract.v0', l5Request);
    expect(l5ValidationResult.valid).toBe(true);
    
    const l1ValidationResult = await validator.validate('l1_l2_contract.v0', l2ToL1Request);
    expect(l1ValidationResult.valid).toBe(true);
    
    // 4. End-to-end contract compatibility
    const compatibility = await validator.validateCompatibility([
      { contract: 'l2_l5_contract.v0', payload: l5Request },
      { contract: 'l1_l2_contract.v0', payload: l2ToL1Request }
    ]);
    
    expect(compatibility.compatible).toBe(true);
  });
});

Chaos Engineering for Contracts ​

Contract Resilience Testing:

typescript
class ContractChaosTests {
  async testMalformedPayloadResilience() {
    const chaosPayloads = [
      { type: 'oversized', payload: generateOversizedPayload(10 * 1024 * 1024) },
      { type: 'malicious_injection', payload: { query: "'; DROP TABLE users; --" } },
      { type: 'unicode_attack', payload: { query: "π•Œπ•Ÿπ•šπ•”π• π••π•– 𝔸π•₯π•₯π•’π•”π•œ πŸ’€" } },
      { type: 'deeply_nested', payload: generateDeeplyNestedObject(1000) },
      { type: 'circular_reference', payload: createCircularReference() }
    ];

    for (const chaos of chaosPayloads) {
      const result = await validator.validateWithTimeout('render_request.v0', chaos.payload, 1000);
      
      // Contract validation should fail gracefully, not crash
      expect(result.valid).toBe(false);
      expect(result.errors).toBeDefined();
      expect(result.performance.validation_time_ms).toBeLessThan(1000);
    }
  }

  async testConcurrentValidationLoad() {
    const concurrency = 100;
    const requests = Array.from({ length: concurrency }, () => 
      generateValidPayload('l1_l2_contract.v0')
    );

    const startTime = performance.now();
    const promises = requests.map(payload => 
      validator.validate('l1_l2_contract.v0', payload)
    );
    
    const results = await Promise.all(promises);
    const totalTime = performance.now() - startTime;

    // All validations should succeed
    expect(results.every(r => r.valid)).toBe(true);
    
    // System should handle concurrent load efficiently
    expect(totalTime).toBeLessThan(5000); // 5 seconds for 100 concurrent validations
    
    // Cache hit ratio should be high for similar payloads
    const cacheStats = validator.getCacheStatistics();
    expect(cacheStats.hit_ratio).toBeGreaterThan(0.8);
  }
}

Mock Services for Contract Development ​

Contract-Driven Mock Generation:

typescript
class ContractMockGenerator {
  generateMockService(contractSchema: JSONSchema): MockService {
    const mockService = new MockService();
    
    // Generate realistic responses based on schema
    mockService.addHandler('POST', '/api/v1/search', async (req) => {
      const validationResult = await validator.validate(contractSchema, req.body);
      
      if (!validationResult.valid) {
        return MockResponse.badRequest(validationResult.errors);
      }
      
      return MockResponse.ok(this.generateRealisticResponse(req.body, contractSchema));
    });
    
    return mockService;
  }

  private generateRealisticResponse(request: any, schema: JSONSchema): any {
    // Generate response that matches schema constraints
    const responseSchema = schema.properties.response;
    return this.generateFromSchema(responseSchema, {
      realistic: true,
      seed: hash(JSON.stringify(request)) // Deterministic responses
    });
  }
}

// Usage in development
const l1MockService = mockGenerator.generateMockService(l1L2Contract);
const l2MockService = mockGenerator.generateMockService(l2L5Contract);

// Development server with contract validation
app.use('/api/l1', contractValidator.middleware('l1_l2_contract.v0'));
app.use('/api/l2', contractValidator.middleware('l2_l5_contract.v0'));

Contract Evolution & Governance ​

Breaking Change Detection ​

Automated Schema Compatibility Analysis:

typescript
class SchemaCompatibilityAnalyzer {
  analyzeBreakingChanges(oldSchema: JSONSchema, newSchema: JSONSchema): BreakingChangeReport {
    const changes: BreakingChange[] = [];
    
    // Check for removed required fields
    const oldRequired = oldSchema.required || [];
    const newRequired = newSchema.required || [];
    const removedRequired = oldRequired.filter(field => !newRequired.includes(field));
    
    changes.push(...removedRequired.map(field => ({
      type: 'REMOVED_REQUIRED_FIELD',
      field,
      severity: 'BREAKING',
      impact: 'Clients sending this field will receive validation errors'
    })));
    
    // Check for type changes
    const typeChanges = this.detectTypeChanges(oldSchema.properties, newSchema.properties);
    changes.push(...typeChanges);
    
    // Check for enum constraint changes
    const enumChanges = this.detectEnumChanges(oldSchema, newSchema);
    changes.push(...enumChanges);
    
    return {
      breaking_changes: changes.filter(c => c.severity === 'BREAKING'),
      non_breaking_changes: changes.filter(c => c.severity === 'NON_BREAKING'),
      compatibility_score: this.calculateCompatibilityScore(changes),
      migration_complexity: this.assessMigrationComplexity(changes)
    };
  }
}

Contract Governance Framework ​

Review Process Automation:

yaml
# .github/workflows/contract-review.yml
name: Contract Review Process

on:
  pull_request:
    paths: ['docs/architecture/contracts/schemas/**']

jobs:
  schema-validation:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Validate JSON Schema syntax
        run: npm run contracts:validate-syntax
        
      - name: Breaking change analysis  
        run: npm run contracts:breaking-changes -- --base=main --head=HEAD
        
      - name: Performance impact assessment
        run: npm run contracts:perf-impact -- --schemas-changed
        
  stakeholder-review:
    needs: schema-validation
    if: contains(github.event.pull_request.labels.*.name, 'breaking-change')
    runs-on: ubuntu-latest
    steps:
      - name: Request architecture review
        uses: ./.github/actions/request-review
        with:
          reviewers: "@architecture-team"
          reason: "Breaking contract changes detected"
          
      - name: Generate migration guide
        run: npm run contracts:generate-migration-guide

Other Specifications ​