# MAP — ModuLisp repo inventory ``` modulisp/ ├── meson.build # project root: useq_utils → useq_devtools → useq_signal_engine static libs ├── library.properties # Arduino library manifest (ModuLisp 0.1.0, includes=src/signal_engine/signal_engine.h) ├── src/ │ ├── pch.h # precompiled header (std includes) │ ├── modulisp/ │ │ └── lisp/symbol_intern.h # header-only symbol interning table │ ├── signal_engine/ # 11 .cpp + 12 .h + symbols.def │ │ ├── token.{h,cpp} # tokenizer │ │ ├── cell_store.{h,cpp} # S-expression cell arena │ │ ├── node_pool.{h,cpp} # fixed-pool DAG node storage + traversal │ │ ├── graph_builder.{h,cpp} # cell graph → node DAG compiler │ │ ├── compiler_pipeline.{h,cpp} # source → tokens → cells → DAG orchestration │ │ ├── cold_eval.{h,cpp} + eval_ops.h # constant folding / cold evaluation │ │ ├── executor.{h,cpp} # tick-time DAG executor │ │ ├── state_registry.{h,cpp} # defstate slots, live-edit slots │ │ ├── synth_registry.{h,cpp} # synth graph snapshot registry │ │ ├── synth_graph.{h,cpp} # serialisable synth artefact graph │ │ ├── diagnostics.{h,cpp} # health/persistent-output diagnostics │ │ ├── signal_engine.h # umbrella header │ │ ├── types.h, build_profile.h # shared types, build tuning knobs │ │ └── symbols.def # builtin symbol catalogue (X-macro list) │ ├── utils/ # string.{h,cpp}, common.{h,cpp}, itoa.{h,cpp}, log.{h,cpp}, │ │ # json_builder.h, json_cursor.h, dtostrf.h, serial_message.h, │ │ # time.h, compiler_config.h │ ├── devtools/ # devtools.{h,cpp} — USEQ_DEVTOOLS-gated telemetry │ └── ports/ # IStorage.h, II2CTransport.h, mocks/{MockStorage.h,MockI2CBus.h} └── test/ ├── meson.build # 17 Catch2 executables, fresh file ├── catch.hpp # vendored Catch2 v2 (from src-useq/test/catch.hpp) └── signal_engine/ # 17 test .cpp (host-only subset; exclusions in README.md) ``` Build artifacts: `build/` (meson/ninja). 3 libs + 17 test executables.