# Gap Analysis: Scan v1

**Date:** 2026-02-11
**Scan:** scan-v1.json
**Detection Rate:** 0% (0/10 violations detected)

## Violations vs Detection

| # | Violation | Claim ID | File:Line | Detected? | Why Not? | Extractor Needed |
|---|-----------|----------|-----------|-----------|----------|------------------|
| 1 | Key injection | cache-key-validation-001 | client.rs:27 | ❌ | No key validation checker | `key_validation_check.toml` |
| 2 | TLS disabled | cache-tls-validation-001 | config.rs:23 | ❌ | No `verify_tls: false` detector | `tls_verification_check.toml` |
| 3 | Hardcoded password | cache-hardcoded-password-001 | config.rs:18 | ❌ | Built-in secrets extractor may not match pattern | `hardcoded_password_check.toml` |
| 4 | Missing TTL | cache-ttl-required-001 | client.rs:66 | ❌ | No SET without EX/PX detector | `ttl_presence_check.toml` |
| 5 | Unbounded size | cache-max-size-001 | config.rs:32 | ❌ | No `max_size: None` detector | `max_size_check.toml` |
| 6 | Sync blocking | cache-async-blocking-001 | client.rs:105 | ❌ | No blocking in async detector | `async_blocking_check.toml` |
| 7 | No eviction | cache-eviction-policy-001 | config.rs:37 | ❌ | No `eviction_policy: None` detector | `eviction_policy_check.toml` |
| 8 | Zero timeout | cache-timeout-001 | config.rs:27 | ❌ | No `Duration::from_secs(0)` detector | `timeout_check.toml` |
| 9 | No pooling | cache-max-connections-001 | client.rs:30 | ❌ | No connection-per-request detector | `connection_pool_check.toml` |
| 10 | No metrics | cache-metrics-enabled-001 | config.rs:42 | ❌ | No `metrics_enabled: false` detector | `metrics_check.toml` |

## Summary

- **Violations embedded:** 10
- **Detected by built-in extractors:** 0
- **Missing (need custom extractors):** 10 (100%)

## Extractor Creation Plan

All 10 violations need custom extractors. Priority by category:

### Security (3 extractors):
1. `key_validation_check.toml` - Detect missing `validate_key()` call
2. `tls_verification_check.toml` - Detect `verify_tls: false`
3. `hardcoded_password_check.toml` - Detect `password: "secret123"`

### Performance (3 extractors):
4. `ttl_presence_check.toml` - Detect `SET` without `EX`/`PX`
5. `max_size_check.toml` - Detect `max_size: None`
6. `async_blocking_check.toml` - Detect `get_connection()` in async fn

### Correctness (3 extractors):
7. `eviction_policy_check.toml` - Detect `eviction_policy: None`
8. `timeout_check.toml` - Detect `Duration::from_secs(0)`
9. `connection_pool_check.toml` - Detect repeated `get_multiplexed_async_connection()`

### Observability (1 extractor):
10. `metrics_check.toml` - Detect `metrics_enabled: false`

## Next Step: Phase 4 Extractor Creation

Use `/aphoria-custom-extractor-creator` for each of the 10 missing patterns.

**Target:** Create all 10 extractors in ~40 minutes (4 min per extractor)
