Escape Hatch (last resort)
When the operation tools and the block vocabulary genuinely cannot express what the user needs, you may drop to Python against the marconi library. This is the last resort, not a shortcut around learning the tools.
Before you escape — STOP
- Re-check
list_blocksand the operation tools. Most "I need X" cases are a block or a composition you missed. - Confirm the task is truly outside the surface (a common real example: decoding a digital protocol such as ADS-B — OOK/PPM → bits → CRC → parse — which the v1.0 analog vocabulary doesn't cover).
If you must escape
- Write a Python script that
import marconiand uses the library API directly —Workspace, the ops (capture,find_signals,run_pipeline, …), and the models. To read sample data, usemarconi.read_capture(path)(returns(samples, CaptureRef)); stay inside the workspace. - Run it with
uv run python <script.py>. - Report the gap explicitly to the user: which operation or block was missing. These gaps are the product roadmap — they're how the toolkit grows.
- Leave the script in the workspace. Like pipelines and scenes, it's a durable, re-runnable artifact the user owns.
Judgment
- Prefer extending the workflow with existing ops over hand-rolling DSP. If you find yourself reimplementing
find_signalsor a flowgraph in numpy, you've probably missed a tool. - Keep escape scripts small and single-purpose; they document the gap.