mirror of
https://github.com/vxcontrol/pentagi.git
synced 2026-10-29 01:57:00 +00:00
Three defects on the shutdown and container-listing paths: - Telemetry drain ran the langfuse and otel sinks serially under one deadline. langfuse's ForceFlush/Shutdown ignore the caller ctx and block on their own timeout, so a langfuse outage burned the whole budget and the healthy otel sink's final batch was never flushed. Add observer.Drain, which flushes then shuts down each sink in its own goroutine bounded by the deadline; main uses it, retiring the inline flush-then-shutdown dance. - The partial-success listing put the raw stat/list error into the 200 body's Failures[].Message, exposing docker-layer detail (container ids, the daemon address) that response.Error only reveals under develop mode. Send a generic message to the client and keep the raw text dev-gated, logged server-side. - A path read successfully by one query could also appear in Failures when another query failed on it, order-dependent. Reconcile at assembly: drop any failure whose path was read successfully, so no path is in both arrays. Also bound the exec stdout buffered before parsing so a compromised sandbox can't stream unbounded output into memory. Tests: Drain delivers a healthy otel sink while a langfuse sink blocks and returns within its deadline; the listing failure message is dev-gated; a path never lands in both Files and Failures. Live: unreachable collector -> shutdown stays bounded (~5s) and exits cleanly. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>