Project overrides were scattered across the Project aggregate, three ad hoc Record<ProjectId, ...> fields in ServerSettings, and a client-settings record. Every other server setting was environment-only, so a settings hierarchy could not be built on top of them. Introduce projectSettingsOverrides: one record per project holding a partial of PROJECT_SCOPED_SERVER_SETTING_KEYS, and resolveProjectSettings() which returns the effective settings plus the source of each key. Legacy fields are folded into the record once on load and kept populated as derived views for one release. Server consumers that act on a thread or checkout (agent access gates, auto-settlement, title/branch generation, restart continuation, legacy token streaming, auto-pull, setup scripts, cwd bootstrap) now read through the resolver so an override takes effect everywhere the environment value did. Model: Claude Fable 5.1. Harness: Claude Code.
Julius Marminge committed on 9/11/2026, 5:19:11 PMparent05d4042
25 files changedLine totals unavailable