/** * F5 Implementation Validator * Validates code against requirements * * @module @f5/cli/core/implementation-validator * @version 1.0.0 */ import { type ImplementationChecklist } from './requirement-tracker.js'; export type ConfidenceLevel = 'high' | 'medium' | 'low'; export interface TraceabilityEntry { requirementId: string; file: string; startLine: number; endLine: number; codeSnippet: string; confidence: ConfidenceLevel; comment: string; } export interface ValidationIssue { type: 'missing' | 'extra' | 'ambiguous' | 'incomplete'; severity: 'error' | 'warning' | 'info'; message: string; requirementId?: string; file?: string; line?: number; suggestion?: string; } export interface ValidationReport { generatedAt: string; sourceDocument: string; codeDirectory: string; traceability: TraceabilityEntry[]; issues: ValidationIssue[]; coverage: { total: number; implemented: number; percentage: number; critical: { total: number; implemented: number; }; }; status: 'pass' | 'fail' | 'warning'; summary: string; } export declare class ImplementationValidator { private tracker; constructor(); /** * Scan code files for requirement references * Pattern: // REQ-XXX: description */ scanCodeForReferences(directory: string): Promise; /** * Recursively scan directory for code files */ private scanDirectory; /** * Scan a single file for traceability comments */ private scanFile; /** * Find the code block following a traceability comment */ private findCodeBlock; /** * Assess confidence level of traceability */ private assessConfidence; /** * Compare requirements vs implementation */ validate(checklistPath: string, codeDirectory: string): Promise; /** * Find validation issues */ private findIssues; /** * Calculate coverage statistics */ private calculateCoverage; /** * Determine overall validation status */ private determineStatus; /** * Detect code that doesn't map to any requirement (scope creep) */ detectScopeCreep(codeDirectory: string, checklist: ImplementationChecklist): Promise; /** * Generate human-readable report */ generateReport(validation: ValidationReport): string; /** * Generate markdown report */ generateMarkdownReport(validation: ValidationReport): string; }