Draft: isolated macOS onboarding and multi-account QA experience - #393
Draft: isolated macOS onboarding and multi-account QA experience#393cyq1017 wants to merge 13 commits into
Conversation
|
你好 @cyq1017 👋 —— 这条不是 review 意见,是一个合并前必须先解决的编号冲突,提前告诉你免得你后面白改。 问题这个分支里的 关键在于:main 那个已经跑在生产库上了( 两个不同的迁移共用一个编号,会毁掉"到底哪些跑过"这个唯一记录:以后问"v0.70 跑了吗",答案变成"哪个 v0.70?"。而 Postgres 两个都能正常 apply,不会报任何错 —— 所以这个问题通常要到几个月后出事故时才被发现,那是最不想遇到无法回答的问题的时刻。 需要你做的把你这个改名成
顺带一提#394 加了 那个 PR 还新增了 另外提醒一件事这个分支基于的 你的 PR 正文写了「请先审核,暂不要合并」,所以我没有合它,只是把编号这件事先说一声。 |
…394) `main` carries `migrate_v0.70_device_app_version.sql`, already applied to production. PR #393 independently added `migrate_v0.70_provider_accounts.sql`. Different schema, same number, neither author in a position to know. Two migrations sharing a number destroys the only record of what has actually run: "did v0.70 run?" becomes "which v0.70?". Postgres applies both without complaint, so the question only gets asked months later, during an incident. Three layers, because the first two are advice and advice gets missed: - `scripts/check_migration_numbers.sh` — fails on any duplicate, names both files, and prints the next free number. Verified both ways: passes on `main` (71 migrations), and reddens with exit 1 when the real #393 collision is reproduced locally. - Wired into swift-ci as its own job, next to the helper guards. The container-touch guard sat unwired for months and caught three real holes the first time anyone ran it — a guard nothing calls is not a guard. - Written into AGENTS.md (Codex et al.) and a new CLAUDE.md (Claude Code loads it automatically at session start; the repo only had AGENTS.md, so Claude sessions were starting blind). CLAUDE.md points at AGENTS.md as the single source of truth rather than forking the guidance. The rule as documented: never reuse a number, **including one only used on an unmerged branch** — parallel work is normal here, and two sessions each taking "the next number" is precisely the failure. If your branch collides with one that has landed on `main`, renumber yours; `main`'s has usually already run against production. The guard's own find/xargs pipelines use `-print0`/`-0`: the repo path contains a space, and the first version cheerfully reported a file named "cli". Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
请先审核,暂不要合并
这是一组用于合作者体验和评审的 macOS QA 改动,基于
onboarding-multi-account-v2。它不是发布候选版本,也不代表首次启动、多账户、真实额度采集或生产安全已经完成验收。
我们为什么这样做
我们近期讨论的 CLIPulse 主线是:
或 Supabase 状态。
因此本 PR 没有再做一套静态设计稿,而是在现有 macOS UI 上增加一个独立、
可重复体验的
CLIPulse QA运行环境。本 PR 做了什么
CLIPulse QAXcode scheme 和Debug QAconfiguration;live collector 和相关持久化副作用;
docs/qa/macos-onboarding-multi-account-checklist.md。关键设计取舍
这样合作者看到的导航、首次启动和多账户交互更接近后续产品。
不是到处添加松散的
if isQA;条件不满足时进入 quarantine/fail-closed。示例数据没有 API key、cookie、真实 account ID 或生产同步 owner。
onboarding-multi-account-v2上。它是该功能分支的安全体验层,不应直接对
main审核或合并。如何体验
CLI Pulse Bar/CLI Pulse Bar.xcodeproj;CLIPulse QAscheme;My Mac;CFFIXED_USER_HOME=/private/tmp/clipulse-qa-homeCLIPULSE_QA_RESET_ON_LAUNCH=0docs/qa/macos-onboarding-multi-account-checklist.md体验并记录问题。请勿在 QA app 输入真实邮箱、密码、OTP、API key、cookie 或服务商凭据。
本次推送前验证
git diff --check origin/onboarding-multi-account-v2...HEAD:通过;构建仍会显示仓库现有的 Swift 6 concurrency warnings。本 PR 不把这些 warning
视为已解决,也不据此声称 release readiness。
本 PR 没有验证
希望合作者重点审核
请把结论分为: