Tags: tiny-systems/module
Tags
Stability fixes: depth limit, lifecycle context, pool race - Add message depth tracking (max 256 hops) to detect cycles in flow graphs. Depth propagates via Msg struct (same-module) and gRPC metadata (cross-module). Exceeding the limit returns PermanentError. - Replace context.Background() with runner lifecycle context in debounced metadata patches. Cancelled after Flush() in Stop/ StopWithoutCleanup to prevent stale writes after runner shutdown. - Synchronize AddressPool.runCtx with RWMutex to prevent race between Register() and Start() during startup.
Fix trace_id not propagated from send_signal to telemetry The bug: when TinySignal controller injected a remote span context via trace.ContextWithRemoteSpanContext, the runner extracted it with trace.SpanContextFromContext which only returns LOCAL span contexts. Remote span contexts were silently dropped, causing tracer.Start to create a new root span with a fresh trace_id instead of inheriting the signal's trace_id. Fix: use context.WithoutCancel(ctx) instead of manually transferring span context via context.Background(). This preserves everything in the context including remote span contexts, while still preventing cancellation from interfering with telemetry submission. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Add optional PVC support for stateful modules
Helm values: storage.enabled, storage.size, storage.storageClassName,
storage.mountPath, storage.accessMode. Creates PVC and mounts it to
the module pod. Sets STORAGE_PATH env var for components.
Also adds StorageRequirements to module Requirements struct.
CLI install example:
helm install my-module tinysystems/tinysystems-operator \
--set storage.enabled=true --set storage.size=10Gi
Add optional PVC support for stateful modules
Helm values: storage.enabled, storage.size, storage.storageClassName,
storage.mountPath, storage.accessMode. Creates PVC and mounts it to
the module pod. Sets STORAGE_PATH env var for components.
Also adds StorageRequirements to module Requirements struct.
CLI install example:
helm install my-module tinysystems/tinysystems-operator \
--set storage.enabled=true --set storage.size=10Gi
Add optional TraceID to TinySignal for deterministic trace lookup Callers can provide a trace ID when creating a signal. The controller injects it as a remote span context so the execution trace uses the known ID, enabling direct trace lookup without polling.
Add optional TraceID to TinySignal for deterministic trace lookup Callers can provide a trace ID when creating a signal. The controller injects it as a remote span context so the execution trace uses the known ID, enabling direct trace lookup without polling.
Add TinyScenario CRD for storing per-port sample data from traces New CRD enables capturing real trace data as reusable "scenarios" for edge validation, replacing schema-generated mock data with actual payloads. - TinyScenario CRD: project-scoped, owned by TinyProject, stores ScenarioPortData (port full name + JSON payload) per port - Resource manager CRUD: CreateScenario, GetProjectScenarios, GetScenario, UpdateScenario, DeleteScenario - Conversion functions: ScenarioPortsFromTrace (trace → CRD), RuntimeDataFromScenario (CRD → SimulatePortDataFromMaps input) - CRD chart bumped to 0.1.44
Add TinyScenario CRD for storing per-port sample data from traces New CRD enables capturing real trace data as reusable "scenarios" for edge validation, replacing schema-generated mock data with actual payloads. - TinyScenario CRD: project-scoped, owned by TinyProject, stores ScenarioPortData (port full name + JSON payload) per port - Resource manager CRUD: CreateScenario, GetProjectScenarios, GetScenario, UpdateScenario, DeleteScenario - Conversion functions: ScenarioPortsFromTrace (trace → CRD), RuntimeDataFromScenario (CRD → SimulatePortDataFromMaps input) - CRD chart bumped to 0.1.44
PreviousNext