mirror of
https://github.com/proffesor-for-testing/agentic-qe.git
synced 2026-09-19 08:45:47 +08:00
2253d05618
Remove the nested v3/ subdirectory by moving all active source code, tests, configs, and assets directly to the project root. Archive v2/ (dead code, 847MB) to v2-archive.tar.gz. Key changes: - Move v3/src/ → src/, v3/tests/ → tests/, v3/packages/ → packages/ - Move v3/tsconfig.json, v3/vitest.config.ts to root - Merge v3/package.json into root package.json (ESM, scripts, deps, exports) - Merge v3/scripts/ into scripts/, v3/implementation/ into docs/implementation/ - Update all CI workflows to remove "cd v3 &&" and v3/ path prefixes - Fix all init installer path resolution (3-level-up → 2-level-up) - Fix hooks to use "node ./dist/cli/bundle.js" instead of bare "aqe" - Update settings.json ADR/DDD directories to docs/implementation/ - Fix helper scripts (statusline, adr-compliance, ddd-tracker, guidance-hooks) - Update 58 agent definitions: aqe/v3/ → aqe/ memory namespaces - Update 15 guidance shards: v3/src/ → src/ path references - Fix sync interfaces: remove v3/ and v2/ path references - Fix test path calculations (process.cwd() + '..' no longer needed) - Fix flaky perf test threshold (500ms → 1000ms for CI environments) - Fix complexity-analyzer test to match ADR-051 keyword-based eligibility Build passes, 17,901 tests pass, CLI and MCP bundles verified. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.0 KiB
4.0 KiB
SPEC-030-A: Quality Lambda Calculation
| Field | Value |
|---|---|
| Specification ID | SPEC-030-A |
| Parent ADR | ADR-030 |
| Version | 1.0 |
| Status | Accepted |
| Last Updated | 2026-01-10 |
| Author | Architecture Team |
Overview
This specification defines the Quality Lambda calculation algorithm, which determines the "minimum cut" coherence signal across multiple quality dimensions.
Quality Lambda Structure
export interface QualityLambda {
/** Current lambda value (0-100 scale) */
lambda: number;
/** Previous lambda value for delta calculation */
lambdaPrev: number;
/** Number of quality dimensions at boundary (unstable) */
boundaryEdges: number;
/** Concentration of instability (Q15: 0-32767) */
boundaryConcentrationQ15: number;
/** Number of quality partitions (fragmented quality) */
partitionCount: number;
/** Control flags */
flags: number;
}
Lambda Calculation Algorithm
export function calculateQualityLambda(metrics: QualityMetrics): QualityLambda {
// Normalize each metric to 0-1 scale
const normalized = {
coverage: metrics.lineCoverage / 100,
passRate: metrics.testPassRate / 100,
security: 1 - Math.min(metrics.criticalVulns / 5, 1),
performance: Math.min(metrics.p95Latency / metrics.targetLatency, 1),
maintainability: metrics.maintainabilityIndex / 100,
reliability: 1 - (metrics.flakyTestRatio || 0),
};
// Find minimum "cut" - the weakest quality dimension
const values = Object.values(normalized);
const lambda = Math.min(...values) * 100;
// Count boundary edges (dimensions near threshold)
const threshold = 0.7;
const boundaryEdges = values.filter(
v => v < threshold + 0.1 && v >= threshold - 0.1
).length;
// Calculate concentration (Q15 fixed-point)
const belowThreshold = values.filter(v => v < threshold);
const concentrationQ15 = belowThreshold.length > 0
? Math.round((belowThreshold.reduce((a, b) => a + b, 0) / belowThreshold.length) * 32767)
: 32767;
// Count quality partitions (clusters of related issues)
const partitionCount = countQualityPartitions(metrics);
return {
lambda,
lambdaPrev: metrics.previousLambda || lambda,
boundaryEdges,
boundaryConcentrationQ15: concentrationQ15,
partitionCount,
flags: 0,
};
}
function countQualityPartitions(metrics: QualityMetrics): number {
// Group related quality issues into partitions
let partitions = 0;
if (metrics.lineCoverage < 70 || metrics.branchCoverage < 60) partitions++;
if (metrics.criticalVulns > 0 || metrics.highVulns > 2) partitions++;
if (metrics.testPassRate < 95 || metrics.flakyTestRatio > 0.05) partitions++;
if (metrics.maintainabilityIndex < 60) partitions++;
return partitions;
}
Quality Dimensions
| Dimension | Source | Normalization |
|---|---|---|
| Coverage | Line coverage % | value / 100 |
| Pass Rate | Test pass rate % | value / 100 |
| Security | Critical vulns | 1 - min(vulns/5, 1) |
| Performance | P95 latency | min(actual/target, 1) |
| Maintainability | Maintainability index | value / 100 |
| Reliability | Flaky test ratio | 1 - ratio |
Validation Rules
| Rule ID | Description | Severity |
|---|---|---|
| SPEC-030-A-001 | Lambda must be 0-100 scale | Error |
| SPEC-030-A-002 | At least 4 quality dimensions required | Warning |
| SPEC-030-A-003 | BoundaryConcentrationQ15 must be 0-32767 | Error |
Changelog
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0 | 2026-01-10 | Architecture Team | Initial specification |