Review A — 跨章内部一致性
Sub-agent (researcher) 在主会话外的独立 review,于 2026-05-27 完成。原文未删改,仅去掉 reviewer 元注。
Review 覆盖范围:完整通读 §4–§13、§15、§17、§18、§20、§21、§23、§27,并对 §1–§3、§5–§16 做了主题 grep。§14、§19、§22、§24、§25、§26 仅做了关键引用反查(如 §24 是否提 ADR-011、§25 8 张表的回引),未逐行通读。下列结论建立在以上证据上。
严重不一致(P0:阻断使用)
-
§8 容器→代码映射 vs §27 子系统→代码映射 全面冲突。§8 在 850–866 行写:
finbayes/cli/、finbayes/cognition/web_tasks.py、finbayes/channel/、finbayes/cognition/runtime.py / router.py / orchestrator.py、finbayes/cognition/providers/、finbayes/state/。§27 在 5574–5579 行改成src/finbayes/io/entries/{cli,tui,web,mcp,channels}/、src/finbayes/orchestration/、src/finbayes/cognition/(综合层不是 Web)、src/finbayes/providers/。这是两套互斥的目录骨架,直接照 §8 实施会产出和 §27 / §17 / §18 / §20 / §21 / §25 全部不兼容的工程仓。建议以 §27 为准,删除或重写 §8 的代码位置表,统一加src/前缀与io/entries/层级。 -
§11 状态机清单 vs §27 状态机映射 不是同一套对象。§11 (1757–1766) 列 5 个 first-class 状态机:Session / Task / TaskGroup / Judgment Record / StateCandidate。§27 (5605–5611) 改成 Task / Fin Object / Judgment Record / State Candidate / Provider Readiness。Session、TaskGroup 在 §27 消失;Fin Object(§4 没说有状态机)、Provider Readiness(§9 没建状态机定义)凭空出现。§25 (5112) 又说"完整 5 个状态机"但不指明是哪 5 个。业务对象一致性的核心断点,影响 Pydantic 模型与测试设计。
中等不一致(P1:需修订)
-
§15 表数量"8 vs 6"。§15 文字表 (2610–2619) 列 8 张:sessions / watchlist_objects / judgment_records / dynamic_profiles / state_candidates / fin_objects / audit_trail / context_snapshots。同章 mermaid (2584–2589) 与正文 (2592) 只说 6 张(漏 audit_trail、context_snapshots)。§25 (5113) 说"完整 8 张表"。修 mermaid 与正文描述或显式声明 audit / snapshots 不算 State Store 表。
-
业务对象命名中英对照漂移。§4 概念名是"动态画像"(中文),§27 (5590) 称
Dynamic Profile,§11 (1762) 又混用"Judgment Record / StateCandidate"全英。建议在 §4 概念表加一列"工程英文名"(Session / Watchlist / JudgmentRecord / DynamicProfile / StateCandidate / FinObject / Task),后续章节统一引用。 -
§10 S5 标题与内容降级层级不符。§10 (1617) 标题 "S5 — Provider 降级路径(L1 → L2 → L3)",但图与"关键点" (1655) 描述的是 L1 → L1' → L2 → L3 → L4 五层。标题应改为
(L1 → L1' → L2 → L3 → L4)与 §9.6 / §13 / §18 / §20 对齐。 -
§9 子系统简称 vs §10 sequence 简称缺少 IO 标识。§10 (1458–1465) 定义
IO = Input/Output Pipeline,但 §9 (881) 称 "Input/Output Pipeline"、§27 (5574) 称 "Input / Output Pipeline"、§17 凭证图 (3010) 又称 "Input Pipeline" / "Output Pipeline" 分离。建议统一为 "Input/Output Pipeline (IO)"。 -
任务类型清单数量在 §4 vs §9 vs §6 vs §17 不一致表述。§4 (351–360) 与 §9.5 (1280) 列 7 类。§6 (495) 写"9 个场景覆盖 7 类任务",没明示是 7 类,需要读者计数。建议在 §6 标题加"覆盖 7 类任务"。
-
§13 / §18 / §20 对 L1' 表示形式抖动。§9.6 (1326–1327) 与 §13 (2178) 用
L1A/L1B或LLM_L1b;§18 (3441) 标 "L1 / L1' / L2 / L3 / L4";§20 (3946) 用 "L1 → L1'"。语义一致但形式三套,给读者制造阅读成本。
轻微漂移(P2:建议改进)
-
ADR-011 不存在但 prompt 假设它在。文档实际只引用 ADR-001 至 ADR-010,§23 (4564–4592) 完整登记。如规划中确有 ADR-011,需在 §23 补登;否则 prompt 描述与文档现状之差不算文档问题。
-
§9 Provider Adapter 子系统降级图(1342–1357 行)画了 L1A/L1B/L2/L3 进 Selected,但 L3 / L4 没有连到 Selected 节点,导致图上"L3 命中"和"L4 触发"路径与 Adapter / Cred / Call 的关系隐式。建议补 L3 / L4 的下游连线或改图例。
-
§4 "TaskGroup 是工程对象不是 first-class" (419 行) vs §11 把 TaskGroup 列为 5 个 first-class 状态对象之一 (1763)。§11 表标题应改为"5 个有独立状态机的对象(含工程对象)",避免与 §4 的 first-class 7 个混淆。
-
§17 Capability Registry 章节号引用:§17 (3072) 说"详见 §9 Capability Registry 段",正确;但 §17 (3225) 重复一次。无害但冗余。
-
§24/§25 未通读,与 ADR / 状态机 / 表数量的回引没有逐项核对。建议下一轮 review 把 §22 / §24 / §25 / §26 纳入。
-
抽查的 20 处 §N 跨章引用全部命中目标主题,没有发现幻觉引用。
一致性强项(值得保留)
-
禁词"行动准备 / 行动判断 / 行动方案"一致性优秀。全文除 §2 (195)、§17 (3193)、§23 (4611, 4616) 四处显式 negative reference 与 §25 (5342) 的 review 规则外,正文未出现这三个禁词。替换为"交易准备 / 交易决策 / 交易行动"在 §4 / §6 / §9 / §10 / §22 / §27 全文一致使用。
-
凭证不变量在 §4 / §9 / §13 / §15 / §17 / §18 / §20 多章交叉承接清晰:边界 hook (§9.1, §17) → 不进 State / Cache / Audit (§13, §15) → 审计层只记类型不记字符串 (§17, §18) → 测试集 (§20)。是文档跨章一致性最强的链路。
-
"画像不裁剪事实空间" 在 §4 (411)、§5 (438)、§9.3 (1114, 1140)、§13 (2273)、§17 (3174)、§18 多处一致重申,没有半句矛盾。
-
8 个 sequence 场景(§10)的简称表(IO/TO/CR/PA/ES/SM)与 §9 子系统名映射稳定,所有 sequence 用同一套简称。
-
ADR 引用编号在主文档与 §23 索引表完全对齐:ADR-001/002/003 已 accepted,ADR-004 至 ADR-010 标为"待写",与正文中"详见 ADR-XXX 待写 / 待定 / 决策位置"措辞一致;无幻觉编号。
Suggested Next Step
最高优先级修复两条 P0:(a) 选定 §27 为代码骨架事实源,重写 §8 的代码位置表(或彻底删掉,仅在 §8 写"详见 §27");(b) 在 §11 与 §27 之间统一一份"有独立状态机的对象清单",把 Session / TaskGroup(§11 有)与 Fin Object / Provider Readiness(§27 有)的去留显式决定。这两条不修,工程实施仓启动就会立刻分叉。