RELEASE · 0b90745当前 Release 合同
4 个原生产品 target、6 个本地 package、没有 App test target。
- Chat V1/V2 与 flag 仍在
- Onboarding PiP 已删除
- 旧设计 token 仍是多源
这不是 656 个 Swift 文件的目录浏览器,而是一张从用户价值下钻到状态 owner、数据流、证据、风险和迁移门禁的控制面。先选代码 revision,再谈问题和重构;同一结论在 Release、main 与本地候选上可能处于不同状态。
main@6922f359 已由独立 clean snapshot 完整遍历并形成 L0–L4 current architecture;5e6ac6e 继续作为历史机制图,main-delta 只解释 Release → main 变化。74/74 Package tests 和 Archive 成功不等于 App 生命周期、真机性能或生产行为已通过。先读 current main 递归架构。
旧问题不是全部作废,而是必须带适用范围。下面三条事实线不互相覆盖;本地候选尤其不能冒充已集成结果。
RELEASE · 0b907454 个原生产品 target、6 个本地 package、没有 App test target。
MAIN · 6922f35独立 clean snapshot 已完整遍历;比 Release 多 88 个提交。
LOCAL · 5e6 + UNCOMMITTEDWave 0 hardening 与 hosted tests 只证明本地候选可运行。
产品、iOS 工程师和新人各用同一个 5 分钟窗口,完成问题定位、现场症状、因果机制、revision、第一动作与反证。评的是地图,不是参与者。
每个角色只有原话明确支持六项理解门时才通过。
能说清用户看到什么、为什么值得处理,以及第一条产品或测量决策。
能说清状态 owner、数据流、effect、失败恢复和最小验证动作。
能分清历史、Release、main、本地候选和目标设计,并知道从哪里开始。
Last verdict 6faf7396…9b86a 是 request_changes:0 P0 + 6 P1。它还证明旧 83 项 mutation 可被共享 cache 的无关 schema 错误误杀;因此绿色输出已降级。Current successor 已用隔离 cache、目标诊断和 source-bound facts 重跑 credential90/90,并冻结为 2fadb1c1…95e0;独立 review 尚未产生。
PRIV-001 · INDEPENDENTLY CLOSED987a1b8b…d739 的 exact review 已确认,45ba8781…e44c 的未变 Swift 源回归也未发现新 P0/P1:pending Calendar backend delete 的权威重试与 reset commit 共用 serial owner;generic reset 对未知 outcome fail closed。
SEC-001 · FROZEN CANDIDATECurrent successor 保持 cache canonical immutable;每个 mutant 从同一 clean cache 隔离执行,只有目标 credential-policy 诊断才算 kill。Helper、invocation、binding、local、alias 都绑定源码 offset/slice;required/default closure、callable typealias、higher-order source、bound/optional/factory callAsFunction 与 method-value 已进入 90/90 精确矩阵。
2fadb1c1…95e0重放六类机制与相邻边界;本地 PASS 不能自批。前者回答“是否已证明线上不可用”,后者回答“现在把性能预算投在哪里”。没有真机 Release trace 前,不把代码风险冒充事故;但核心路径的高杠杆工作可以先排到最前。
这里的 P0 是工程工作的执行顺序,不是问题严重度升级:Chat 与 Contact 的全量更新机制及 Debug Simulator 页面路径已经闭合,Calendar 仍是 P1 risk,多图导入的放大机制也已在 Simulator 闭合;四者的真机与生产影响仍未知。是否升级成事故 P0,只由固定源码 SHA、Xcode Release configuration、设备、OS 与 fixture 的同场景证据决定。
5000 行 Debug Simulator 单行追加的投影 + 同步列表路径配对中位数约 81.9ms;真机 Release 门仍未通过。
先消掉最容易证明的无关工作,不拿 selection、widget 门禁和滚动正确性换跑分,也不重新引入 Chat V1。
真机验收:5000 行 append 主线程 p95 ≤16.7ms、相对 current 至少降 60%;feedback / expansion 从 500→5000 行 p95 不超过 2 倍;截图、连续视频、trace 共用 case ID。
源码、9 次页面运行与实现合同 → · 跨电脑 Notion 总包 →
10×48MP 机制实验的 current-style 峰值中位数 785MB;一次 prepare 文件化候选约 82MB。
10×48MP 候选峰值中位数下降约 89.6%,本地阶段总时长仅约 3.57s → 3.63s。
真机验收:峰值至少降 60%;10 张不超过 1 张的 2.5 倍;首张 ≤500ms;取消后 3s 回到 +30MB。
本地证据与实现合同 → · 跨电脑 Notion 总包 →
普通单事件只更新受影响日期;series、时区和窗口替换必须主动失效。
快路只服务边界明确的单事件;系统级变化仍主动重建,避免用性能优化换来陈旧日期桶。
验收:1k / 10k、recurring series、all-day timezone、display timezone change、窗口替换下与全量真值等价。
12 次姓名输入稳定触发 12 次 Notes 全量投影;1,000 / 5,000 notes 每次无关投影中位数约 23.6 / 91.5ms。
把“每个字符广播到整页”变成“草稿只更新编辑器”;备注没变时,解析和分组次数应该是严格的 0。
验收:20 次姓名/company 输入的 Notes body/projection = 0;note 事务至多投影一次且与 full oracle 等价;真机 1,000 notes 单次输入 app-owned p95 ≤8ms。
源码、3×3 页面运行、截图与实现合同 → · 跨电脑 Notion 总包 →
Talent Signal 能便宜地验证第一眼、ActivityKit 形态和合同写法;它不能替 Ailoha 证明 ARPC、Widget Intent、App Group、多账号与后端推送已经可靠。
Gate 0 已通过平台复审;Gate 1 是 0/8,selectedDirection = UNSET;ActivityKit 未实现,真实系统截图 0/10。current main 的合同审计已证明 status、identity、ordering、recovery 与 disclosure 分散,但没有证明线上事故。下面七项是可独立实现和验收的 P0 原子。
P0-01 · ATTENTION先在 Talent Signal 验证 App 可见 / 不可见的接管规则;再在 Ailoha 重放“进岛 → 回复 → 退出 → 再接管”。
P0-02 · STATE先验证 execution × attention × freshness 的投影和非法组合;再映射 Ailoha 的 Chat、Widget 与外部动作。
P0-03 · CLARITYAiloha compact 显示不断增长的 timer,expanded 却显示阶段。先做五秒误读测试,再决定是否迁回。
P0-04 · IDENTITY当前客户端允许多张非终态卡,但注册链只有一个 update token / observer。事实成立,生产故障仍待双任务真机反证。
P0-05 · ORDERING为 local update、Intent、reconcile 与 remote push 共用 eventRevision 和 allowed transition;晚到 running 不能覆盖 completed。
P0-06 · LIFECYCLEAtom A 只验真实系统 UI;Atom B 才验 APNs、exact readback、乱序、杀进程和 outbox;最后仍需 Ailoha 自己复验。
P0-07 · PRIVACY先验证最小 disclosure projection、payload allowlist、VoiceOver 和 Always-On;Ailoha 再按任务类型制定隐私矩阵。
current main 已证明“系统允许多卡、更新寻址更像单卡”,也证明 21 个富字段由 Widget 局部决定是否显示。新的共同决策包给出 A/B/C 三种卡片策略、D0–D4 披露分级和直接动作边界;推荐候选仍是 一张 task-bound Spotlight Card + D0 strict + 高后果动作回 App,但未被产品 owner 接受前仍是 proposal。
下方只描述隔离 worktree 的 Wave 0 候选,不把本地通过写成已合并、已上线或已完成整个重构。
bat/IOS-20260812-frontend-refactor-wave0 · 88-file 2fadb1c1…95e0 frozen · 未 commit / push / PR / merge / release
真实 Ailoha hosted target、test plan 与可加载 app-owned type 的 smoke test。
生产日志value-free;旧83项收据因cache自污染失效。Current successor以隔离cache与目标诊断完成90/90,并通过连续复验与全fact omission negatives。
Calendar backend-ID/phase ledger、single serial owner 与 logout-before-revoke settlement 已进入账户合同。
Hosted65/65、ARPC6/6与account/effect89/89保留;credential旧83失效,successor 90/90 Chief-local PASS;exact manifest与独立 verdict仍未完成。
下列账本把完整 verdict、中途 finding、漂移停审与回应分层。Last exact 6faf7396…9b86a 是 0 P0 + 6 P1;current successor 已获 Chief-local 90/90 + 89/89,manifest 与独立复审仍未完成。
反例:不存在的 EventMonitor hook。回应:Session 暂停自动发送,registry 在真实 task 创建后校验;stale 先 cancel 具体 task、再 cancel request。该用例曾 RED(transport=1)后 GREEN。
反例:logout 发布可捕获的过渡 session。回应:reset 首步写 App Group tombstone 并移除 session;成功登录事务最后才 activate。
反例:same-session restart 会清掉通用 ledger,错误 link 可被接受,response-lost 不做 backend reconciliation。回应:backend-ID/phase ledger + exact GET;unknown outcome、marker failure 与 relaunch 都幂等续跑。
反例:writer 可越过 reset receipt。回应:writer 与 reset 协调同一 screenshots directory,临界区重验 session,stale cleanup throwing + readback;新增 precheck 已过后的暂停竞态。
反例:不可读 journal 被 try? 当成无 pending,启动 auto-retry 反而退出 quarantine。回应:读取错误在启动与运行中都一律 recovery-required。
反例:taskId == nil 被猜作本地卡并跳过 owner guard。回应:owner guard 先执行;本地卡只由 session-bound durable registry 识别,reset 同步清 registry。
反例:随机 ID 与敏感正文跨账号留存。回应:通知内容 value-free、ID 带 session namespace,退出事务验证 pending/delivered 均已清除。
a6259a09…a191 的独立复审已确认 startup recovery 与 foreground mirror 共用串行 owner;这个关闭结论只属于该快照,新候选仍需回归。
反例:backend response 没有 Apple link 时 delete 直接返回,pending create 的 EventKit object 与 ledger 可长期残留。回应:先按 backend ID cleanup + absence readback,再完成 ledger;失败可重试。
反例:factory-returned Logger 与同一声明第二 binding 不在 sink inventory。回应:增加 repository Logger summary 与两个精确 compile-valid mutation。
反例:wrapper 接收 credential trailing closure,跨文件调用后进入日志。回应:对 body 直接含 credential source 的 higher-order assignment 做保守 summary;不宣称完整语言 taint。
Reviewer 对 bb65577e…4fcc 已形成两类 P1,但最终复算变为 db110943…8d54a;按 FREEZE 合同立即停止,既不外推 finding,也不给 exact verdict。
反例:删除失败只可人工二次调用,startup 仍误走 create/link GET。回应:side effect 前 durable deletePending,startup 直接重试 delete,测试断言 backend GET=0。
反例:ordinary closure argument、调用 tainted helper 的 trailing closure、computed Logger property。回应:direct/indirect closure summary 与 computed Logger inventory,新增三条 compile-valid mutation。
反例:普通已完成 mirror 没有 pending-create ledger,EventKit failure/crash 后无 startup owner。回应:每次 linked delete 都先建立独立 durable delete intent,失败与 completion failure 均由启动恢复。
反例:mirrorEnabled guard 可让断开日历的用户跳过既有 pending cleanup。回应:owner cleanup 先于 preference,新增 disabled-preference case 与 mutation。
反例:labeled closure、tainted-property trailing closure 与 typed-factory computed Logger。回应:fixed-point summary 扩展并新增第 26–28 个 compile-valid mutation。
97f1… 反例:backend DELETE 在 durable local owner 前发生。response-lost / crash 可留下永久 EventKit mirror;现有 linked-delete tests 从太晚的 mirrorDelete seam 起步。
97f1… 反例:Logger alias 与 Logger.init 构造都 typecheck-valid 且通过 28-mutant guard;repository-wide known-sink 声明因此失效。
b915… 在请求前持久化 backendDeletePending;第十轮确认 linked/pending 主状态机进入生产路径,同时发现 backend-only event 的相邻 owner 缺口。
b915… 增加 Logger-valued alias、Logger.init 与 os.Logger qualification;第十轮确认三条直接反例关闭,同时发现五种相邻 grammar。
b915… 反例:event 没有 Apple link 时 production DELETE 仍可无 ledger 发送,commit→response-lost 后 startup 无 owner。回应:a8b8… 允许 externalID 为空的 durable row,success/404 后才 complete。
b915… 反例:immediate receiver、parenthesized / optional / computed alias 与 .notice 都 typecheck-valid 且可绕过。回应:五个 exact mutant + real typecheck,credential 扩到 36/36。
a8b8… 的第十一轮确认 backend-only owner 与五种 Logger grammar 直接反例已进入实现,同时在同一 exact 快照发现 logout/reset handoff 与两种 constructor grammar 的相邻 P1。
a8b8… 反例:session revoke 后 generic reset 可 complete 未知结果的 backendDeletePending,或只删 EventKit 而不确认 backend。回应:987a… 在同一 serial owner 内先结算,再提交 reset;generic reset fail closed。
a8b8… 反例:typed Logger = .init(...) 与 outer-parenthesized (Logger(...)) 均 typecheck-valid 且可绕过。回应:两个 exact mutant + real typecheck,credential 扩到 38/38。
987a… 的第十二轮确认 settlement/backend retry/reset commit 共用同一 serial owner,generic reset 对未知 outcome fail closed;该关闭结论只属于 exact 快照,current 仍做有限回归。
987a… 反例:Logger typealias constructor 与 Optional(Logger(...))! 均 typecheck-valid 且可绕过。回应:45ba… 加 typealias fixed point、wrapper inventory 与两个 exact mutants,credential 扩到 40/40。
45ba… 复审确认指定两条已闭合,但括号 typealias、Optional.some 与 typed closure receiver 仍可绕过。结论不是“再补三条就语言完备”,而是升级 AST/SwiftSyntax 或收窄版本化语法合同。
e76… 的 49/49 与四类 P1 同时成立:default arity、nested closure ownership、higher-order/cast callable 与 multiline parameter-return。回应:统一 SwiftSyntax declaration/call graph;该快照 verdict 保持 0 P0 + 4 P1。
5da… 虽有 55/55,仍跳过 member call、只消费 variadic 首参、让 local name 遮住跨文件 overload,并排除 member source-return;另可接受成功但空的 analyzer JSON。Exact verdict:0 P0 + 5 P1。
五条 5da exact mutation与 envelope negatives均独立通过;新反例是 overload/container scope 合并、带标签 variadic 中间实参、computed/nested member source。Manifest 首末均为 f42e41cb…a4a91。
Stable scope、labeled middle actual与member property/call/wrapper直接反例已关闭;新反例是不可见nested/closure/receiver candidate遮蔽、typealias/generic误排除、variadic吞trailing closure、member subscript无fact,以及successful-empty/poisoned cache。Manifest首末均匹配。
400508九条direct regression均关闭;新反例是source/alias仍file-shadow、Substring compound误判、default+required trailing closure、callAsFunction、_read/yield,以及非空伪造sink fact。Manifest首末均匹配。
独立复审发现 cache 原地加入 characterOffset,导致后续 mutant 用无关 schema failure 冒充 kill;另有 source visibility、required/default + typealias closure、bound/factory callable、method-value 与 non-sink fact completeness 五类缺口。旧 83/83 已失效。
cache 改为 immutable copy;mutant cache 隔离且拒绝 analyzer/schema 错误归因;全部六类 fact 绑定 source slice;连续 validate、五类 fact 删除、closure 顺序/typealias、higher-order source、direct/bound/optional/factory callable 与 method-value 已进入 90/90。System Lightweight、HEAD RED与diff-check通过;独立 review 尚待。
当前 ordinary logout 已 strict server unregister;但离线/过期凭据会使退出保持 recovery shell。需后端 generation/receipt 与产品恢复体验共同决策。
当前65/65、credential90/90与account/effect89/89只覆盖已枚举合同;旧credential83/83保持失效。新逐项mutant仍只保证parse-valid,代表性typecheck由聚合oracle提供。Protected CI与真实账号UI/extension/system replay仍缺。
左侧节点与默认 Archify 图都固定在 clean main@6922f359。5e6 是历史机制,Release → main 是变化说明,目标态是候选设计;四者不会混成一张图。
“深度”不等于扫描更多文件,而是让每个结论都能回到固定修订、运行路径、来源边界与可反证条件;让每次代码动作都只能发生在被外部授权的一小步内。
本轮调研的递归路径与每一层留下的可复用产物。
先锁定 commit、clean state 与观察时间。运行代码决定实现事实;设计与协作文档提供意图和时间切片。OUTPUT · revision ledger
从 L0 用户价值下钻到 L4 实现缝,逐层记录 owner、输入、状态、effect、失败模式与 consumer,不用目录结构冒充架构。OUTPUT · recursive map
代码回答“现在实际运行什么”;Figma 回答局部设计意图;飞书回答协作语义与历史。三者发生漂移时保留分歧,不强行合并。OUTPUT · alignment ledger
Fact 必须有直接来源与观察时间;inference 必须写推理和反证;hypothesis 必须有验证动作,永远不能伪装成结论。OUTPUT · claim + source + falsifier
按用户/产品、代码/数据流、架构/依赖、可靠性/可观测性、安全/隐私、流程/成本逐面检查,问题按机制去重。OUTPUT · 30 mechanisms + unknowns
Reviewer 不只读结论,还构造 compile-valid 日志绕过、A→B 迟到响应、跨进程 TOCTOU、401/5xx retry 与 EventKit 乱序;未解决的 P0/P1 阻断批准。OUTPUT · counterexample → invalidated claim → next gate
新反例会立即降级旧的 PASS;先冻结可构建快照,再把未关闭机制、解除条件和不可外推边界写回控制面。OUTPUT · claim invalidation ledger + next gate
来源直接支持;记录 revision、source 与 observed time。
由多个事实推导;必须公开推理链和能推翻它的条件。
仍是未知;绑定 owner、验证动作与下一决策点。
搜索和筛选不会丢失证据;展开卡片可看后果、claim 类型、验证动作与代码锚点。
推荐演进式垂直切片:先保护账户与日志,再让 Task 证明新的 owner/effect 边界。
只修 P0、补 app tests、修 scheme,暂不改变 state owner。
Strangler + adapter:Task → Contact → Calendar,逐步替换并删除旧路径。
新建 AppShell、Stores、Transport、DesignSystem 后整体切流。
Calendar P1 已独立关闭;credential guard 的 6faf verdict 仍有 6 个 P1。Current 90/90 remediation 已完成 Lightweight 并冻结为 2fadb1c1…95e0;只有 independent approval 后才可进入 Wave 1。
Typed dependencies、session scope、NavigationEffect。
统一 Home/Chat/详情、alias、乐观 transition。
Repository、query、screen session 分离。
Tokens、Dynamic Type、Reduce Motion、跨进程 envelope。
基于 rollout、consumer=0 与 Reviewer 证据删除。
这轮只验证未登录入口。把已经好的语义基础、已经闭合的失败和账号内未知分开,避免一句“无障碍有问题”让团队无从下手。
main@6922f359:Google、Apple、同意协议能被运行语义树发现;最大字号没有进入品牌字体;Reduce Motion 开启后背景视频仍播放。spoken VoiceOver、Release 语义树和账号内旅程仍未验证。打开完整证据和验收合同P0-1 · DYNAMIC TYPELarge 与 AXXXL 都是 40 个语义元素、6 个目标、0 个滚动区域;品牌字体 API 使用 fixed size。
P0-2 · REDUCE MOTION一秒间隔两帧的变化主要集中在视频区;播放器无条件 play 并在结束后重播。
P0-3 · SEMANTIC JOURNEY三个核心动作有语义基础;Debug 仍有快捷登录、环境和空白 target,真实朗读顺序与 alert 焦点未知。
设计和文档提供意图,当前修订提供运行事实;任何一方都不能无条件覆盖另两方。
main@6922f359 已是 Chat V2-only、三项 visible bottom nav、12-route Onboarding 与部分生成 token 链;Figma fresh read 因 View-seat MCP 限额失败,所以历史问卷节点仍标记 unknown,不冒充 current target。读人话对齐页 · 看机器收据已保存的 2026-08-11 观察:393×852、dark #1A1A1A、Lora 24、Manrope、5 选项、disabled Continue、24pt inset、accent #C8F04A。
当前代码主路径已演进为 Setup 2.0 + permissions + Action Button + Try It;不能把此节点当全流程。Onboarding、Chat、Calendar、Contact、Screenshot、Home、ARPC、Auth、Task lifecycle、Live Activity。
决定产品/协作陈述,不覆盖之后的代码事实。名为 iOS 重构的一篇草稿正文实际是 Agent/backend。main@6922f359 的 clean tree 是当前静态架构;5e6ac6e 解释旧机制;Wave 0 只代表本地保护候选。
HTML 负责探索;Markdown 负责长期审阅、diff 与 AI 后续加载。
brain://tasks/active/IOS-20260812-frontend-refactor-wave0/verification.md
独立攻击审查摘要公开反例与复审状态;完整账本位于 brain://tasks/active/IOS-20260812-frontend-refactor-wave0/review.md
current main Archify specification固定 revision、12 个主节点、15 条连接、34 个可解析源码引用
5e6 历史 Archify specification历史态 JSON;目标态见相邻文件
Release → main 变化说明Chat 收敛、六个 Package owner、隐式依赖与 token 生成链;不是完整 current architecture
AI 重构 Harness 方法概览公开方法摘要;完整入口位于 brain://reports/ios-refactor-harness/README.md
Gate 状态与恢复摘要公开执行边界;完整合同位于 brain://reports/ios-refactor-harness/gate-contract.md