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.*).

Emacs 29.1 (Org mode 9.6.6)