| Files | `PascalCase.h` | Matches the primary class name |
---
## Architecture Patterns
### Header-Only
All components are `.h` files. The only `.cpp` files are `main.cpp`, `orchestrator_main.cpp`, `FileDialog.cpp`, and vendored backends.
### Panel Extraction
UI panels are free functions in their own headers, included and called from `main.cpp`:
```cpp
// panels/MenuBarPanel.h
#pragma once
#include "EditorState.h"
void renderMenuBar(EditorState& state);
```
### EditorState
Single state struct defined in `EditorState.h`. Panels receive it by reference — they never own global state.
### Generators
One file per language, inheriting from `ProjectionGenerator` base in `ProjectionGenerator.h`. The shared dispatch helper `dispatchGenerate()` eliminates duplicated `generate()` bodies.
### No God Objects
If a struct exceeds 50 fields, group related fields into sub-structs (e.g., `DiffState`, `LSPState`).
---
## Test Requirements
- **Minimum 2 tests per step** for non-trivial features.
- **Real assertions only:** Every test must use `assert()` or the `expect()` helper with actual value checks.
- **No print-only tests:** `std::cout << "PASS"` without a preceding assertion is forbidden.
- **Test pattern:** Use the standard `expect()` helper, `int passed/failed` counters, `return failed ? 1 : 0`.
- **Edge cases:** At least 1 edge case test per step (empty input, null, boundary).
- **Coverage continuity:** If a test is removed or simplified, add equivalent coverage in a new unit or integration test and note the replacement in the commit/progress log.