FEAT-060 - Preference Inventory, Mapping, Clamp, And Persistence Audit¶
Summary¶
The preferences persistence surface now has a source-driven machine-readable inventory and drift tests. The native REST mutable preference surface also uses one canonical metadata table for field names, value kinds, error text, and validators.
Outcome¶
- Added
preference-inventory.v1.jsonwith allPreferences.cppCInikey references observed by the source audit. - Added Python drift tests that fail when
Preferences.cppadds, removes, or changes an INI key without updating the inventory. - Classified non-round-trip keys explicitly:
DownSessionCompletedFiles,VideoPreviewThumbnails,LogErrorColor,LogWarningColor,LogSuccessColor,UpdateQueueListPref, and dynamic key families. - Centralized native REST mutable preference metadata so parser, route schema, and request validation share the same field list.
- Kept persisted key names, defaults, and runtime behavior unchanged.
Acceptance¶
- [x] Every
Preferences.cppCInikey reference is represented in a machine-readable inventory. - [x] Read/write asymmetries are classified instead of treated as silent drift.
- [x] REST mutable preference fields are covered by one metadata table.
- [x] Existing REST field names and value ranges remain unchanged.
Validation¶
python -m emule_workspace test native --config Release --platform x64 --suite-name web_api --build-output-mode ErrorsOnlypassed.python -m emule_workspace test python --workspace-root ..\.. -qpassed with 422 tests.
Implementation Commits¶
- App:
cff6300(FEAT-060 centralize REST preference metadata) - Build tests:
ac2ffa5(FEAT-060 guard preference inventory) - Tooling: recorded by the commit that adds this item.