# STORY-021 — Dev — corrección tras rechazo Reviewer

**Fecha**: 2026-05-05  
**Actor**: Dev  
**Transición**: In Progress → In Review (fix aplicado)

---

## Problema detectado por Reviewer

```
tests/architecture.rs → architecture_layers_are_respected: FAILED
```

`src/infra/agent.rs:9` importaba `crate::domain::state::TokenCount`, violando R2/R4
(`infra/` solo puede importar `config`).

## Fix aplicado

**Opción A (sugerida por Reviewer)**: Definir `TokenCount` localmente en `infra/agent.rs`.

```rust
/// Conteo de tokens de una invocación de agente.
/// Definida localmente en infra para respetar la arquitectura en capas
/// (infra solo puede importar config, no domain).
#[derive(Debug, Clone, Default)]
#[allow(dead_code)]
pub(crate) struct TokenCount {
    pub input: u64,
    pub output: u64,
}
```

Eliminado `use crate::domain::state::TokenCount;`.

## Verificaciones

### ✅ Build
```
cargo build → Finished `dev` profile
```

### ✅ Tests
```
cargo test → 463 passed, 0 failed, 1 ignored
```
Incluye 42 tests STORY-021 (story021 module) y 11 tests de arquitectura.

### ✅ Arquitectura
```
cargo test --test architecture → 11 passed, 0 failed
```

### ✅ Formato
```
cargo fmt --check → sin cambios pendientes
```

### ✅ Linting
```
cargo clippy -- -D warnings → 0 warnings
```

---

## Nota sobre CA1

El CA1 original pedía "importa TokenCount desde domain::state". Esto era contradictorio con la arquitectura. Con el fix, `parse_token_count` devuelve `Option<TokenCount>` donde `TokenCount` es la struct local (mismos campos, mismas derivaciones). El comportamiento público es idéntico.
