Skip to content

Milestones

List view

  • Every engine test and lint the tree can express runs on every PR, green and reproducible. Today `streamlib-engine`'s lib suite is reached by name only (`.github/workflows/test.yml:95-123` — "a tracked follow-up"), so a new engine test runs nowhere until it is named there and in the `xtask` mirror. Created 2026-09-01 by the milestone sweep from CI & Test Infrastructure (#5, closed) and Stability & Debuggability Uplift (#11, closed). - #1369 — gate `streamlib-engine`'s lib tests - #2246 — a failed surface-store buffer lookup leaks a plane fd; its test fails every run - #2247 — rare VMA `Unfreed dedicated allocations found!` abort under default-parallel runs (#2245, the DRM-probe heap corruption and hang, is fixed; #911 closed as obsolete) - #705 — `rust_c_printf_via_libc_captured` flakes under `--workspace` - #2062 — `app_sugar_test` runs nowhere - #1310 — `-D warnings` hardening + `rust-toolchain.toml` pin (the fmt gate at `source-gates.yml:87` and the workspace clippy gate at `test.yml:116` are live; the pin is not)

    No due date
    4/9 issues closed
  • Runtime logs that stay bounded on disk and readable per runtime — the observability half of `docs/plan/ARCHITECTURE.md` §Control plane & observability ("the JSONL log schema is a durable contract"). Created 2026-09-01 by the milestone sweep from the logging halves of Orchestrator Control Plane (#12, closed) and Stability & Debuggability Uplift (#11, closed). Shipping logs off-host and merging runtimes into one timeline were dropped 2026-09-13/14: both served the retired orchestrator and are commercial-product scope. - #457 — JSONL rotation + retention, per runtime — shipped PR #2254 - #458 — tail-and-ship log uploader — closed 2026-09-13: its destination (the orchestrator) is retired, and off-host log shipping is product scope - #459 — cross-runtime JSONL merge-ordering policy — closed 2026-09-14: its consumers (orchestrator UI, uploader) are retired, and a cross-runtime timeline is product scope - #759 — iceoryx2 internal-struct stderr spam through the stdio interceptor

    No due date
    4/5 issues closed
  • Deferred NVIDIA hardware JPEG-decode work, split out of the codec milestone 2026-09-01 so it stops reading as unfinished codec scope. Both tickets are deferred by plan decision — `docs/plan/ARCHITECTURE.md:1130` is DECIDED and negative: "JPEG decode is its own backend (`sdk/vulkan-jpeg`; the nvJPEG backend stays parked)." Nothing here starts without un-parking that, which is a plan decision and not a ticket-level one. **Contents:** - **#846** — NVDEC MJPEG research ruling (cuvid / Video Codec SDK path; doc + measurement, no code). - **#1206** — engine-internal nvJPEG re-integration + cdylib-safe plugin exposure (the CUDA-library path parked at `runtime/streamlib-engine/src/vulkan/_nvjpeg_impl_pending_/`). These are two **different** NVIDIA paths, not one job split in half — NVDEC MJPEG is the Video Codec SDK, nvJPEG is the CUDA library. Neither is a head start on the other. **Pickup point:** the JPEG codec-block rung of the codec buildout, where `JpegDecoder` becomes a built-in. Until then #846's preconditions are unmeasurable — see its 2026-09-01 gate-check comment. Shipped JPEG decode today is `sdk/vulkan-jpeg` (CPU parse + Huffman + fused Vulkan compute); #1212 (its PSNR regression lock) stays in CI & Test Infrastructure because it locks that compute path, not this hardware work.

    No due date
    0/2 issues closed
  • Runtimes on different machines exchange data with no setup. Every runtime opens one Zenoh session beside iceoryx2 when it starts and finds other runtimes automatically, and any runtime on the mesh can link one runtime's output to another's input. A link between runtimes rides Zenoh, a link inside one runtime rides iceoryx2, and no processor can tell which. - Plan: `docs/plan/ARCHITECTURE.md` §Networking, the `[runtime-mesh]` entries. - Rationale: `docs/decisions/runtime-mesh.md`. **The work, in order** 1. **local-transport-hardening** — the same-host transport hardened before the mesh wires onto it live: #2261–#2266, `docs/plan/changes/local-transport-hardening.md`. 2. **loss-visibility** — every lost bag counted, the count a remote link extends: #2268–#2270, `docs/plan/changes/loss-visibility.md`. 3. **runtime-mesh** — not yet proposed. 4. **cross-runtime-links** — not yet proposed. **Out of scope** - Authentication and access control. That is its own later security pass, owned by the auth posture OPEN under §Control plane & observability. - A common clock across machines. It is OPEN under §Networking. - MoQ and WebRTC. They are edge extension wheels, not the mesh. - Replacing iceoryx2 between processes on one host. <details><summary>Description before the 2026-09-14 tracker reconcile (title was "Zenoh Mesh Transport")</summary> Bring Zenoh in as StreamLib's cross-HOST inter-runtime transport — the mechanism by which two StreamLib runtimes on different devices talk to each other, alongside iceoryx2 which already does the cross-PROCESS (same-host) case. Zenoh gives dynamic auto-discovering mesh topology, interest-based routing, distributed queryables, and network-fault-resilient cloud sync, so a variety of devices/sensors/compute bricks can snap together over pogo/magnetic connectors into a live mesh ("power armor"), hot-plug at runtime, and route a processor graph across hosts with no hardcoded IPs and no central broker. Self-describing bags ride over Zenoh the same way they ride over iceoryx2 today. Edge I/O processors (MoQ, WebRTC, raw UDP, MAVLink) stay ordinary source/sink processors that ingest/egress external-world data at a runtime boundary — they are NOT the inter-runtime fabric (that was the pre-Zenoh assumption behind #217's "MoQ transport layer" framing). **Sequencing (2026-09-04, extension-model pivot, PR #2147):** new work, not a move — it runs as its own change after the WebRTC/MoQ extension work (milestone #9). Whether the cross-host gateway is engine code or a capability extension is decided then; the plan holds it OPEN under §Networking. Placeholder milestone capturing early research (see the seed issue); scope + decomposition re-derived at pickup. Out of scope: replacing iceoryx2 for cross-process transport; a hosted relay / cloud control plane (product-layer, other repos). <details><summary>Original phrasing (pre-2026-09-04)</summary> "Byte-shaped msgpack + JTD schemas ride over Zenoh the same way they ride over iceoryx2 today." — JTD is retired vocabulary (schema-free-ports, 2026-08-11). </details> </details>

    No due date
    19/29 issues closed
  • ## Goal Make the host runtime robust against NVIDIA driver-init fragilities when GPU work first runs under concurrent processor setup. The engine already pre-warms NVIDIA's fragile per-handle-type VMA state (DMA-BUF / OPAQUE_FD pools) and the shader-compiler pipeline path (compute + graphics, `HostVulkanDevice::prewarm_*`) at device init; this milestone finishes the shape. - #1207 — the latent concurrent-setup race (joined 2026-09-01 — #1203 names it as the canonical fix: funnel all pipeline creation through one compile thread) - #1203 — validate-or-remove the pre-warm once #1207's funnel lands; decide NVIDIA vendor-gating - #1204 — extend the pre-warm to the ray-tracing pipeline path The multi-plugin `.slpkg` premise in the older bodies is gone with the plugin system; if the race survives it is between the app process's native built-ins' concurrent `setup()`.

    No due date
    0/3 issues closed
  • Port the CLAP audio-plugin host from macOS/iOS to Linux so audio-plugin pipelines can run on Linux. **Status (2026-09-01):** a plan OPEN — `docs/plan/ARCHITECTURE.md:1287` "Audio plugins (CLAP / VST3 / LV2): intended, do not build until a concrete consumer demands a specific plugin. Direction: CLAP first." #373 carries the capability. The two earlier tickets closed in the milestone sweep: #993 (SDK re-export for the deleted All-Dynamic package model) and #1090 (a field on a schema layer that no longer exists). `packages/clap` is a held pre-pivot consumer, read for logic only.

    No due date
    2/3 issues closed
  • Generic Forward-Forward (Hinton 2022) primitives in streamlib — compute kernel for one FF layer with local goodness rule, multi-input dispatch for (positive, negative) samples, fused weight update. Building blocks for any FF consumer (immediate consumer: tatolab/drone-racer composition layer). Scope is the *primitive*, not the application — architecture / training procedure / hyperparameter tuning lives in consumer repos. Retitled 2026-09-01 from "Forward-Forward Research" to name the capability. Not in the plan yet — the primitive needs an align before #516 is implementable (§Kernels decides what kernel kinds exist).

    No due date
    0/1 issues closed
  • The kernel surface beyond what `docs/plan/ARCHITECTURE.md` §Kernels ships (compute, graphics, ray tracing, CPU readback — DECIDED at `:594`, always present, Python-reachable): extra shader stages, indirect draw / dispatch, MRT, MSAA, configurable samplers + YCbCr, multi-set descriptors, bindless, specialization constants, texel buffers, concurrent dispatch, depth attachments + the depth-correctness test, vertex/index buffers from Python (#1898, owner-filed post-MVP), and the single-`Buffer` model (#964). Each is "driven by a concrete consumer when one arrives" — none is scheduled. Retitled 2026-09-01 from "RHI Pipeline Abstraction Buildout" and merged with Graphics Kernel Buildout (#19, closed). The buildout's core shipped and closed: #505 graphics kernel (#609), #506 ray-tracing kernel (#610), #497/#498 converter migrations onto `VulkanComputeKernel`, #496 (moot once `vulkan-video` merged into the engine), #761 (semaphore rename), #765 (`wait_idle` migration, now gated by `xtask check-device-wait-idle`). Known duplicate pairs to fold at pickup, not before: #499/#662 (multi-set), #502/#661 (samplers), #507/#663 (bindless). The RHI perf memory-joggers that were here (#508, #584, #688, #849, #850, #851, #940) are milestone-less — they are not kernel features.

    No due date
    10/26 issues closed