mirror of
https://github.com/vicliu624/trail-mate.git
synced 2026-10-23 21:43:28 +00:00
1.8 KiB
1.8 KiB
P1 · [Design is not formed] Configuration lacks version, verification and atomic commit owner
Status: acknowledged Category: Design Defects/Configuration and Environment
Conclusion
Configuration data exists, but the Configuration aggregate responsible for versioning, verification and atomic changes is not formed. MeshConfig is located in chat_types.h, AppConfig collects cross-domain settings, and default values, compatible conversions and persistence are scattered in core_sys and platform store.
Mix of current responsibilities
- Domain settings: protocol, team, positioning, display and other business meanings.
- Product combination: whether a certain setting is allowed for a certain target.
- Persistence schema: field versions, defaults and migrations.
- Platform mechanism: NVS / file / flash reading and writing.
These responsibilities need to be coordinated, but cannot be "owned by default" by one huge struct and multiple platform loaders.
Target model
ConfigurationSnapshot: Immutable committed snapshot with schema version.- typed settings:
CommunicationSettings,TeamSettings,PositioningSettings, etc. ConfigurationPolicy: cross-field and capability constraints.ConfigurationService:validate → migrate → atomically commit.IConfigurationStore: Only save/read serialized snapshots.
Invariants
- Invalid configuration cannot be partially written.
- Migrations must be explicit, repeatable, and document source versions.
- Capabilities that are not supported by the target cannot be forcibly enabled by configuration.
- The platform store does not define business default values.
Evidence: modules/core_chat/include/chat/domain/chat_types.h, modules/core_sys/include/app/app_config.h, platform/esp/arduino_common/src/app_config_store.cpp.