- Shipped
- August 28, 2026 at 7:51 PM UTC
- Author
- Kamo
- Commit
- 0352b3e
Three columns on ChildOrgSecurityModel — DEFAULT_MEMBER_HOME_SCREEN, **************** DEFAULT_ORG_OWNER_HOME_SCREEN. Each holds HOME_SCREEN_DEFAULT or REQUIRES_CHILD_ORG_OWNERSHIP; the second withholds the launchpad until that member owns an organization of their own. Three rather than one because the three member types are three different jobs: the same model routinely wants a plain member pushed into creating their own organization while its team members and owners go straight to work. The split mirrors APPLIES_TO_MEMBERS / _TEAM_MEMBERS / _OWNERS exactly. VARCHAR, not an ordinal enum — an ordinal relabels every stored row the day a third option is inserted anywhere but the end. setHomeScreenDefaults is a targeted setter in the shape of setAllowRootSubdomains rather than three more positional parameters on updateModel, which already takes fifteen. Null means "leave this one alone", so a caller that knows about one of the three cannot silently reset the others. normalizeHomeScreenDefault fails OPEN and is tested for it: only the exact string turns the requirement on, because the alternative takes a member's home screen away and a typo or a stale client must never be able to do that by accident.