# Tuning constants: one header per namespace Every tunable number of the design (DESIGN_UE.md section 1.3, `DescentTuning.h`) lives in a header of this folder, **one header per namespace**, named `DescentTune_.h`, in namespace `Descent::Tune::`: ```cpp // Core/Tuning/DescentTune_Carrier.h #pragma once #include "CoreMinimal.h" namespace Descent::Tune::Carrier { constexpr double TopSpeedMps = 2.0; // U9: keep v2's top speed, reach it in a few seconds } ``` Rules: 1. **Include the header you need, directly.** There is no umbrella header (`DescentTuning.h` does not exist and must not be created), so adding a namespace never edits a file another track also edits. 2. **A new namespace is a new file.** Your track creates `DescentTune_.h` for its own constants and nobody else touches it. Do not add your constants to somebody else's header; if you need their number, include their header. 3. Constants are `constexpr` (or `inline constexpr`) with the unit in the name or the comment (`...M`, `...Mps`, `...Sec`, `...Deg`). No mutable globals here. User-tunable values are console variables (`descent..`) defined in the owning system's `.cpp`, with the default taken from the constant. 4. Header-only, no includes beyond `CoreMinimal.h`, so any file can include them cheaply. Existing headers (core task): `DescentTune_Sim.h` (sim step clamp, fast-forward defaults), `DescentTune_Env.h` (dry cabin temperature, water temperature coefficients).