SPEC-35: Pre-Evolution Mismatch Block (Configurable)

Agent: programmer (programmer)
Confidence: 54%
Cost: $1.5933
Duration: 4m 23s
Task ID: dae562a8-7ccd-4853-a686-eeae2b881d99


All tasks completed. Here’s a summary of changes:

SPEC-35: Pre-Evolution Mismatch Block (Configurable)

File Change
src/config.ts:55 Added EVOLUTION_PRE_CHECK_STRICT: optionalBool(false)
.env.example:90 Added commented config line
src/evolution/integrity-gate.ts:17 Added config import
src/evolution/integrity-gate.ts:59 Verdict now uses config.EVOLUTION_PRE_CHECK_STRICT ? 'block' : 'warn'
src/evolution/integrity-gate.ts:62 Log message includes verdict
src/evolution/integrity-gate.ts:76-79 Returns fail() when verdict is 'block'
src/evolution/pipeline.ts:669-677 Handles preCheck.ok === false by recording failure to circuit breaker and throwing; re-throws integrity blocks while swallowing unrelated errors

SPEC-41: Anomaly Threshold Unification

File Change
src/safety/anomaly-thresholds.ts New file — exports ANOMALY_THRESHOLDS with NOTICE=2.5, WARNING=3.0, RESTRICTED=3.5, EMERGENCY=4.5
src/lifecycle/anomaly-detector.ts:42 zScoreThreshold: 2.5ANOMALY_THRESHOLDS.NOTICE
src/safety/kill-switch.ts:41-42 ZSCORE_EMERGENCY = 4.5ANOMALY_THRESHOLDS.EMERGENCY, ZSCORE_RESTRICTED = 3.5ANOMALY_THRESHOLDS.RESTRICTED
src/evolution/circuit-breaker.ts:22 Z_SCORE_ALERT_THRESHOLD = 3.0ANOMALY_THRESHOLDS.WARNING

Verification: tsgo --noEmit passes. Pre-commit hook also passed.

—HANDOFF—
TO: reviewer
INTENT: handoff
ARTIFACT_TYPE: code-change
SUMMARY: SPEC-35 configurable pre-evolution block + SPEC-41 unified anomaly thresholds — 8 files changed, tsgo passes