Fase 5: BuildFailed.log_tail con la cola real del log del sandbox
Cuando una fase de build falla, el lab ahora conserva las últimas 50
líneas del log y las entrega a la IA por el bus.
- sandbox.rs: BuildFailure { reason, log_tail } (impl Error), wrap en
Error::Other. Sandbox::run hace tee de stdout/stderr al padre (streaming
en vivo intacto) y a un ring buffer acotado; al fallar, devuelve la cola
en log_tail. spawn_pump + push_tail con tests.
- BuildFailure::from_error(&Error) recupera la struct por downcast.
- bus.rs run_compile: separa reason del log_tail real del compilador en
vez de mandar e.to_string() y log_tail=None.
Tests: push_tail (ring), roundtrip por downcast, none para errores planos.
Firmas de build/build_source_patch sin cambios. 22 binarios verdes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
42288230f9
commit
6db3e3e302
+5
-2
@@ -101,8 +101,11 @@ pre-requisito de validación.
|
||||
`examples/agent-caps.toml`. El `default_policy` hardcoded queda como fallback.
|
||||
- [ ] `CRASHED` real (requiere supervisión de servicios, que llega con el init propio del
|
||||
track posterior).
|
||||
- [ ] `BuildFailed.log_tail` con cola real del lab (hoy es `None`; el `reason` viene del
|
||||
`Error` de Rust pero no se conserva el log textual del sandbox).
|
||||
- [x] `BuildFailed.log_tail` con cola real del lab. `Sandbox::run` hace *tee* de
|
||||
stdout/stderr (sigue viéndose en vivo) y retiene las últimas 50 líneas; al fallar una
|
||||
fase devuelve `BuildFailure { reason, log_tail }` envuelto en `Error::Other`. El bus lo
|
||||
recupera por `BuildFailure::from_error` (downcast) y separa `reason` del log textual del
|
||||
compilador, para que la IA reaccione al error real, no sólo al mensaje de Rust.
|
||||
- **Hecho cuando:** un cliente externo dispara un build y recibe el evento de fin por el
|
||||
socket. ✅ Camino implementado (`Compile` → `BuildReady`/`BuildFailed`) y la maquinaria
|
||||
alrededor cubierta por `crates/hammerd/tests/bus_e2e.rs`: handshake con peer creds,
|
||||
|
||||
Reference in New Issue
Block a user