p06

Mobile app Expo greenfield

Behavior matrix entry. Workspace vacio. Pedido: app mobile single-user de lista de compras con voz (Expo + RN + STT/TTS).

Severidad: P2 · Forge clarificó target (mobile-only) y modo antes de generar -- correcto para greenfield ambiguo, pero el orquestador tomó solo TURN 1 y reportó 0 archivos. Caveat de runner, no de Forge.

Pedido literal al chat

Quiero una app mobile single-user de lista de compras con voz.

- Stack: React Native + Expo Router + TypeScript.
- Voz: usa expo-speech para TTS y expo-speech-recognition (o equivalente) para
  STT. Detecta comandos: "agregar <item>", "borrar <item>", "marcar comprado
  <item>", "leer la lista".
- UI: una sola pantalla con la lista, FAB para mic, swipe-to-remove.
- Persistencia: AsyncStorage. Sin backend remoto.
- Tests: jest + @testing-library/react-native. Al menos 30 tests entre helpers,
  reducer de lista, parser de comandos, componentes.
- Documenta arquitectura en docs/ARCHITECTURE.md + el contrato de comandos de
  voz en docs/VOICE_COMMANDS.md.
- bin: scripts npm start, npm test, expo build.

Arranca el flujo correcto. Sin scaffolding generico, todo a la medida del
producto.

Comportamiento esperado

Generar app Expo Router + componentes + comandos voz + persistencia AsyncStorage + tests jest >= 30 + docs (ARCHITECTURE + VOICE_COMMANDS).

Comportamiento real (Forge 0.2.0-alpha.59z.156)

Wall-clock58.4s
SSE statusturn_complete
Eventos SSE2
Tool rounds reportados0
Brain tierfrontier (phase=phase_i, escalated=false)
Modelo finalclaude-opus-4-7
Tokens in / out39591 / 3043
Workspace diff+0 / ~0 / -0

Respuesta de Forge (texto del chat)

Hola Pablo, leí tu brief — está clarísimo y bien apuntado. Antes de arrancar, dos cositas rápidas para alinear el piloto:

1. Mobile only — ya me lo dijiste, lo dejo así (sin tablet/desktop responsive). ¿Confirmás?
2. ¿Preferís que te hable en lenguaje simple (didáctico, orientado al producto) o en tecnico (con nombres de archivo, líneas, decisiones de stack abiertas)? Tu brief vino bien técnico, así que tiendo a sospechar "técnico", pero prefiero preguntarte.

En cuanto me confirmes, arranco por el flujo correcto: paso 1 (triage de complejidad) y paso 2 (discovery / RFP) antes de tocar una sola línea de código. No voy a hacer scaffolding genérico — todo se va a derivar de tu brief y de las preguntas de discovery (alcance del parser de voz, idioma de comandos, tolerancia a STT errado, comportamiento offline, etc.).

Gap detectado

Forge clarificó target (mobile-only) y modo antes de generar -- correcto para greenfield ambiguo, pero el orquestador tomó solo TURN 1 y reportó 0 archivos. Caveat de runner, no de Forge.

Observación: Forge respondió correctamente al pedido pero (a) no invocó tools para verificar premisas o (b) arrancó con warmup intrusivo. Severidad menor: no daña el output, solo afecta auditabilidad / UX.

Reports raw

Documento generado automaticamente por generate_landing.mjs el 2026-06-06 17:42:49. Cada prueba corre con yf chat --provider claude-code-cli contra Claude Max subscription (no API), $0 marginal a Console.