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) β
- L1βL2 Contract β Noosphere β Orchestration communication
- L2βL5 Contract β Orchestration β Evaluation quality assessment
- L4βL5 Contract β Adapters β Evaluation experience tracking
Operational Contracts (Canonical, Priority 0.9) β
- Operational Contracts β Authentication, service discovery, health checks, monitoring
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 β
- Source Priorities β Priority ranking for information sources
- Schema Performance Benchmarks β Validation performance targets and metrics
- Contract Security Guidelines β Security considerations for contract design
- Migration Playbook β Step-by-step contract migration procedures