* fix(auth): partition app.json filename by edition to isolate credentials Two dws binaries sharing the same config directory (typically ~/.dws or DWS_CONFIG_DIR) previously read and wrote a single app.json. Editions that pin AuthClientID via hooks still go through the open-core post-login persistence path, which records a bare ClientID without a paired ClientSecret. The sibling edition reading the same path would then adopt that foreign clientID via ResolveAppCredentials. Mirror the strategy already used by the cache loader (pkg/config.EditionPartition): GetAppConfigPath returns a filename suffixed with the active edition name. Open-source keeps "app.json" for backwards compatibility; sibling editions land on "app-<edition>.json". LoadAppConfig / SaveAppConfig / HasAppConfig / DeleteAppConfig all route through GetAppConfigPath, so this single change physically isolates credential files end-to-end without any read-time heuristics. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(auth): address app config partition review * fix(auth): clean legacy sibling app config * test(auth): cover legacy app config cleanup guards * fix(auth): close app config review follow-ups --------- Co-authored-by: shangguanxuan.sgx <shangguanxuan.sgx@alibaba-inc.com> Co-authored-by: Cursor <cursoragent@cursor.com>