Why
Premium option keys can be registered/saved via free cimo_options REST while UI/runtime gates (buildType, localized smartOptimization force-off, filters) enforce freemium.
Enforcement is correct for users, but the multiple layers are easy to drift.
Opportunity
Single-source enforcement so free cannot silently activate premium behaviour via crafted REST writes, without duplicating gate maps in PHP and JS.
References
docs/prd/free-vs-premium.md
docs/prd/settings-and-freemium-ux.md
.cursor/rules/cimo-anti-slop.mdc (single source for shared heuristics)
Out of scope
Moving premium feature implementations into the free tree.
Why
Premium option keys can be registered/saved via free
cimo_optionsREST while UI/runtime gates (buildType, localizedsmartOptimizationforce-off, filters) enforce freemium.Enforcement is correct for users, but the multiple layers are easy to drift.
Opportunity
Single-source enforcement so free cannot silently activate premium behaviour via crafted REST writes, without duplicating gate maps in PHP and JS.
References
docs/prd/free-vs-premium.mddocs/prd/settings-and-freemium-ux.md.cursor/rules/cimo-anti-slop.mdc(single source for shared heuristics)Out of scope
Moving premium feature implementations into the free tree.