Story: Unified system_settings (replace feature_flags)
Table of Contents
This page documents a story in Sprint 15. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
Goal
Replace the boolean-only feature_flags table with a unified system_settings table supporting bool / int / string / JSON. Touch every layer (SQL through Qt) and remove the legacy files.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 15 |
| Now | Completed 2026-03-20. |
| Waiting on | None. |
| Next | None. |
| Last touched | 2026-03-20 |
Acceptance
- New ores_variability_system_settings_tbl with typed value types.
- Typed accessors (get_bool / get_int / get_string / get_json) in the service.
- NATS protocol variability.v1.settings.*.
- system_setting_changed_event in eventing.
- Shell + CLI + HTTP + Qt all migrated; cross-module consumers updated.
- Legacy files (29 + 5 + 4) removed; 14 Qt files renamed.
Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Replace feature_flags with unified system_settings | DONE | 2026-05-20 | 2026-03-20 | 9-phase migration: new ores_variability_system_settings_tbl (bool / int / string / JSON value types) + domain + JSON/table I/O + entity/mapper/repository + service with typed accessors + NATS handler/protocol variability.v1.settings.* + eventing system_setting_changed_event; shell list-flags/add-flag → list-settings/save-setting; CLI add_system_setting_options + system_settings_parser; cross-module updates (iam_routes, iam auth, variability_routes, http.server, wt.service, Qt currency windows, TenantProvisioningWizard, event viewer); 29 + 5 + 4 legacy files removed; 14 Qt files renamed FeatureFlag* → SystemSetting*. |
Decisions
- Typed accessors over generic Value
- keeps call sites readable.
- JSON as a first-class type
- supports the iam.token.* settings landed in the JWT refresh work without needing a separate table.
Out of scope
- User-editable schemas for settings (future).
See also
- JWT refresh — first real consumer of typed system settings (iam.token.*).