Package com.tnsai.quality.sandbox
Class ObservedSandbox
java.lang.Object
com.tnsai.quality.sandbox.ObservedSandbox
- All Implemented Interfaces:
Sandbox,AutoCloseable
Decorator wrapping a
Sandbox so every execute(com.tnsai.quality.sandbox.Command)
call also produces a SandboxExecutionEvent on the
configured SandboxExecutionListener (TNS-296).
Listener calls are wrapped in try/catch — observability outages never break the execution hot path. The actual sandbox failure (timeout, infrastructure error) still propagates as expected.
- Since:
- 0.10.0 (TNS-296)
-
Constructor Summary
ConstructorsConstructorDescriptionObservedSandbox(Sandbox delegate, SandboxExecutionListener listener, String backend) -
Method Summary
Modifier and TypeMethodDescriptionRuncommandto completion (or until the sandbox kills it for exceedingResourceLimits.timeout).spec()TheSandboxSpecthis instance was created from.voidstop()Graceful shutdown.voidForcibly kill the sandbox and release its resources.
-
Constructor Details
-
ObservedSandbox
-
-
Method Details
-
spec
Description copied from interface:SandboxTheSandboxSpecthis instance was created from. Useful for downstream tooling (audit, observability) that needs to record the configured policy alongside the result. -
execute
Description copied from interface:SandboxRuncommandto completion (or until the sandbox kills it for exceedingResourceLimits.timeout). Always returns aSandboxResult; failures inside the sandbox are reflected inSandboxResult.exitCodeandSandboxResult.stderr, not thrown.Throws if the sandbox itself has been terminated, or if the backend layer cannot dispatch the command (image missing, runtime crash). Those are infrastructure failures, distinct from "the user's command exited non-zero".
-
stop
public void stop()Description copied from interface:SandboxGraceful shutdown. Backends SHOULD send SIGTERM (or the platform equivalent), wait a short grace period, then promote toSandbox.terminate()if the process is still running. -
terminate
public void terminate()Description copied from interface:SandboxForcibly kill the sandbox and release its resources. Idempotent — calling on an already-terminated sandbox is a no-op. Safe infinallyblocks.
-