Skip to content

Commit 028edab

Browse files
committed
record the open g2g backend gaps
1 parent 80e28c9 commit 028edab

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

DESIGN_TODO.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# DESIGN_TODO
2+
3+
A terse catalogue of open tasks only. Gaps on the host side of the glass2glass
4+
Python-element host are tracked in that repo's `DESIGN_TODO.md`, under
5+
"Python-element host", not here.
6+
7+
## g2g backend coverage
8+
9+
- **Which README pipelines run under `PYML_BACKEND=g2g` is not established
10+
yet.** `PYML_BACKEND=g2g uv run pytest tests/test_pipelines.py -q
11+
-p no:randomly` gives 11 passing and 67 failing: `pyml_classifier` (6
12+
variants), `pyml_inference` (executorch, candle), `pyml_llm` (llamacpp),
13+
`pyml_vlm`, `pyml_embedding` (clip, dinov2). Every one of the 67 failures is
14+
`PIPELINE_TIMEOUT` firing at 30 s while the model loads, so the split
15+
measures the card rather than g2g support. Getting the real answer needs the
16+
same suite run under `gst` at the same timeout and diffed: a pipeline that
17+
passes on gst and fails on g2g is a genuine gap, one that fails on both is the
18+
environment. The full suite takes 10-18 minutes and wants the GPU, so do not
19+
run the two backends at once on a 6 GB card.
20+
21+
- **Eleven elements have no per-frame seam, so they cannot run on g2g at all.**
22+
`alert`, `tracker`, `vad`, `clap`, `overlay_counter`, `kafkasink`,
23+
`streammux`, `streamdemux`, `coalescehistory` and `llm_remote` subclass a
24+
GStreamer base directly. `stablediffusion` is hosted but fills in neither
25+
`process_frames` nor `process_payload`. Reparenting a family onto one of those
26+
two seams in `backend/core.py` is what makes its pipelines runnable.
27+
`overlay_counter` inherits `overlay`, which the launcher rewrites to g2g's
28+
native `analyticsoverlay`, so the plain overlay line works regardless.
29+
30+
- **`wavparse` will not negotiate an audio payload pipeline.**
31+
`filesrc ! wavparse ! pyelement ...` fails `NoConsistentFixation` whatever the
32+
caps string says. Not investigated, and it blocks every audio-in README
33+
pipeline on g2g.
34+
35+
## Elements
36+
37+
- **`WhisperSpeechTTS.do_generate_speech` returns a `(1, n)` array**, which
38+
`soundfile` rejects with `LibsndfileError: Format not recognised`, so the
39+
element emits no audio. `CoquiTTS` returns 1-D and is fine. Pre-existing on
40+
both backends.
41+
42+
- **`AnomalyEngine._transform` is assigned only in `do_load_model`**, so
43+
`_get_transform` raises `AttributeError` on an engine whose model never
44+
loaded. Pre-existing on both backends.

0 commit comments

Comments
 (0)