docs(W27-3): D2.6 §11 补「阈值是否可靠」三条追问 · D2.10 §8.1/§7.3/§7.4 补行情与闲聊 · D1.1 §35 留痕

承接 W27-2(279a632)。本轮做**答辩现场直接会被问到、但文档里还没有答案**的三件事。

## 一、D2.6 §11「答辩现场速答」新增 3 条追问(核心)
甲方原话提的那个问题,之前 `D2.6` 只能靠 `D3.9` 间接回答,现场不一定翻得到。现在直接进速答表:
1. **「分级回退的阈值凭什么保证一定精确检索到答案?」** —— 答:**这个判据本身就站不住**。实测「应当直答」的 26 条
   `score ∈ [0.6115, 1.0]`、「明确不许直答」的 20 条 `∈ [0.5049, 0.8226]`,**两段重叠 ⇒ 单点阈值不存在**;
   `W27` 因此把精确性从**分数阈值**迁到 **`L0` 表层判定 + 实体锚点 + 证据结构**,分数只留作**安全下限**。
   证据 `_eval_harness/threshold_calibration.json`,见 `D3.9` §2.1 / §3.3—§3.4。
2. **「那回退之后降低阈值岂不就不精准了?」** —— 答:**对,而且这条规则在代码中根本不存在**。
   `FALLBACK_COLLECTIONS` 是死代码(`knowledge_search_service.py:41` 定义无人调用);实测若真接上,跨集合余弦分
   **量纲不可比**会撞坏 `MIN_GAP`,`M-1` 从 **100% 掉到 91.3%** ⇒ 不做。现在的回退只在**同一档位内**
   `E5a → E5b → E5c` **单向降级**,降的是**答复完整度**、**不是证据门槛**(`FR-CS-008` ① 已作废,见 `D3.9` §3.5)。
3. **「意图识别是不是不准?为什么闲聊会触发检索?」** —— 答:旧实现把意图分类当**路由器**用且闲聊与业务问句同路;
   `W27` 把意图分类**降级为「增益 + 兜底」**,前面插一层 `L0` **确定性表层判定** ——
   「闲聊不再进检索」靠的是**少让模型参与判定**,不是调准模型。

## 二、D2.10 端到端答辩文档
- §8.1 速答表同步上述 3 条;§6.1 首行计数改为「金标已扩容到 55 条,两个分母都报」。
- §4.2 的 `MIN_GAP` 踩坑块补「并读 §4.1 口径更新」:`MIN_GAP` 仍是有效**结构判据之一**,
  但整套精确性**不能**押在它或任一分数阈值上。
- §7.3 客服线台词表新增 3 行(`E6` 走势 / `E6` 无数据源如实告知 / 闲聊零检索),§7.4 演示顺序加「行情与闲聊」一项,
  §7.5 时间分配把现场演示条目改为「+ 行情 1 条 + 闲聊 1 条(各 5 秒内出结果)」。

## 三、D2.5 / D1.1
- `D2.5` §4 标题「7 组台词」→「**8 组台词**」(新增 §4.8 之后同步)。
- `D1.1` 新增 **§35(第三十一轮)**留痕:本轮改了什么、**为什么只加横幅不改历史**、
  四份 HTML 为何**不重跑生成器**、以及三条**诚实未做**(`D1.6` 留痕待补 / `D2.1` 看板未逐项回填 /
  历史段「五出口」**有意保留**——全文替换会把「当时的决策」改成「现在的结论」,反而失真);头部 **v1.18 → v1.19**(计数不变)。

## 四、验证
- `_sync_check.py`:**0 缺失 / 0 不一致**。
- 5 份 HTML(`D2.10` / `D2.2` / `D2.4` / `D3.1` / `D3.2`)`blockquote` / `table` / `tr` / `td` 开闭标签**逐项配平**。
- 本轮 11 份变更**全部是 `.md` / `.html`**,无代码改动 ⇒ 不影响已绿的 `pytest 2094 passed / 3 skipped`。
This commit is contained in:
张胜宇
2026-09-21 22:46:16 +08:00
parent 279a6327e3
commit be085c5f18
4 changed files with 32 additions and 4 deletions
@@ -992,6 +992,7 @@ flowchart TD
<blockquote class="callout-warn">
<p>⚠️ <strong>踩坑登记</strong>:判据必须建立在<strong>真实查询</strong>上。按<strong>原始问句</strong>独立检索取谷是<strong>错的</strong> —— 同一道题,原始问句 gap 0.0054、真实查询 0.1784(<strong>差 32 倍</strong>)。本轮为此<strong>返工两次</strong>。</p>
<p>⚠️ <strong>并读 §4.1 的口径更新</strong>:<code>MIN_GAP</code> 仍是有效的<strong>结构判据之一</strong>,但它属于「<strong>叠加在分数之上的结构判据</strong>」—— 整套精确性<strong>不能</strong>押在它或任何一个分数阈值上(两组分数区间重叠的实测见 §4.1)。</p>
</blockquote>
<h1 id="5-安全设计">5 安全设计:不变量与白名单</h1>
@@ -1182,6 +1183,9 @@ flowchart TD
<tr><td><strong>安全</strong></td><td>我的验证码被人要走了怎么办?</td><td><code>P0</code> 反诈</td><td>「请立即停止向任何人提供验证码、密码或完整银行卡信息…请马上拨打 400-889-8899 核实账户情况」</td></tr>
<tr><td><strong>安全</strong></td><td>我账户现在有多少钱?收益多少?</td><td><code>P1</code> 账户</td><td>「抱歉,当前智能客服<strong>无法读取本人账户数据</strong>…可以登录后在『我的账户』自助查看,或拨打 400-889-8899 由人工协助处理」</td></tr>
<tr><td><strong>安全</strong></td><td>什么样的基金不会亏钱?</td><td>合规拒答</td><td>「根据监管要求,我<strong>不能对收益水平做出任何承诺</strong>,也不承诺本金不受损失…」(<strong>不转人工</strong>)</td></tr>
<
t
r
</tbody>
</table>
@@ -1197,6 +1201,7 @@ flowchart TD
<li><strong>安全边界</strong>(<strong>必须演,且必须答得住</strong>):反诈 / 账户数据 / 合规拒答</li>
<li><strong>多轮</strong>:「我想买个债基」→「它适合我吗」(指代继承 + 真实适当性裁决);「赎回费怎么算」→「持有 8 个月呢」(追问继承)</li>
<li><strong>场内基金</strong>(<code>W24</code> 新增语料):场内基金有哪些 → 单只产品行 → 管理费率(直返最快,适合开场稳住)</li>
<li><strong>行情与闲聊</strong>🆕(<code>W27</code>):<code>159382</code> 这只 ETF 最近走势怎么样(<strong>算出来的</strong>)→ 无数据源产品的如实告知 → 「你好呀」(<strong>零检索</strong>)→ 反向守卫「在吗,想问下…起投金额」(<strong>仍走知识作答</strong>)。台词与实测答复全文见 <code>D2.5</code> §4.8</li>
</ol>
<blockquote class="callout-info">
@@ -1211,7 +1216,7 @@ flowchart TD
<tr><td>开场</td><td>1′</td><td>用 §0 一页速览讲完「批评是什么 / 根因 / 改法 / 效果」</td></tr>
<tr><td>主图</td><td>3′</td><td>§2.1 主流程图 —— 讲清<strong>安全在前、模型在必要处、所有分支汇到一口</strong></td></tr>
<tr><td>亮点</td><td>4′</td><td>只讲两个:<strong>七出口 + <code>L0</code> 表层判定层</strong>(§3.8)+ <strong>档位物理隔离</strong>(§3.5)</td></tr>
<tr><td>现场演示</td><td>5′</td><td>§7.4 顺序,游客线 5 条 + 客服线 3 条 + 安全 1 条</td></tr>
<tr><td>现场演示</td><td>5′</td><td>§7.4 顺序,游客线 5 条 + 客服线 3 条 + 安全 1 条 + <strong>行情 1 条 + 闲聊 1 条</strong>(<code>W27</code>,各 5 秒内出结果)</td></tr>
<tr><td>收口</td><td>2′</td><td>§6.1 前后对比 + §8 速答</td></tr>
</tbody>
</table>
@@ -1225,13 +1230,16 @@ flowchart TD
<table>
<thead><tr><th>追问</th><th>回答要点</th></tr></thead>
<tbody>
<tr><td><strong>怎么证明"变智能"了?不是你自己说好?</strong></td><td>46 条金标是<strong>改造前</strong>就冻结的,同一套用例跑两遍:转人工率 43.5% → 10.9%,出口准确率 45.7% → 100%。判分脚本<strong>只看出口码与事实命中,不看文案好不好听</strong></td></tr>
<tr><td><strong>怎么证明"变智能"了?不是你自己说好?</strong></td><td>金标是<strong>改造前</strong>就冻结的,同一套用例跑两遍:转人工率 43.5% → 10.9%,出口准确率 45.7% → 100%。<code>W27</code> 已扩容到 <strong>55 条</strong>(基线 46 + 新增 9),复跑 <strong>55/55 = 100%</strong>,46 条可比基线同样 <strong>46/46 = 100%</strong>(两个分母都报)判分脚本<strong>只看出口码与事实命中,不看文案好不好听</strong></td></tr>
<tr><td><strong>转人工率还有 10.9%,为什么不做到 0?</strong></td><td>剩下的 5 条<strong>全部应当转</strong>(<code>P0</code> 反诈 1 / <code>P1</code> 账户 1 / <code>P2</code> 写操作与争议 2 / 用户明确要求 1)。把这几条也答掉才是<strong>事故</strong></td></tr>
<tr><td><strong>让模型组织语言,不怕它乱说吗?</strong></td><td><code>E4</code> 输入是<strong>证据包</strong>(chunk + id),输出契约固定;<strong>证据包外的数字一律不许出现</strong>(<code>INV-2</code>),且<strong>不只写 prompt</strong> —— 有输出守护与引用可解析校验。实测无出处数字 <strong>0</strong>、引用不可解析 <strong>0</strong></td></tr>
<tr><td><strong>访客问费率、问画像,会不会看到不该看的?</strong></td><td>档位是 <strong>Milvus 分区键物理隔离</strong>(不是字段过滤),过滤条件单点推导、失败关闭。访客问"我够哪一档"不是拒答,而是<strong>引导登录</strong>(本人画像属 <code>P1</code>)。实测档位越权 <strong>0</strong></td></tr>
<tr><td><strong>澄清会不会泄露"还有哪些内容你看不到"?</strong></td><td>澄清候选<strong>必须在该档位可见</strong>(写进 <code>INV-1</code>,不是留给开发自觉)</td></tr>
<tr><td><strong>改这么多,会不会把原来的安全能力改弱了?</strong></td><td>判据是「<strong>安全只增不减</strong>」:4 项零容忍全 0(改前禁忌违反还是 1);权限判定顺序未变(鉴权先于参数校验,未登录仍 401);旧实现那条<strong>五档确定性安全路由完整保留</strong>,只把误杀的概念题放出来</td></tr>
<tr><td><strong>零容忍词规则还在吗?</strong></td><td><strong>在</strong>,但挂载点从「输出侧字面黑名单」搬到了「<strong>检索层档位隔离 + 判定层合规词表 + 输出守护</strong>」。放宽的是<strong>误杀</strong>,不是<strong>红线</strong> —— 删掉它等于把 <code>INV-3</code> 的唯一实现删掉</td></tr>
<tr><td><strong>那个「分级回退」的阈值,凭什么保证一定精确检索到答案?</strong></td><td><strong>这个判据本身就站不住</strong> —— 实测:「应当直答」的 26 条 <code>score</code> 区间是 <code>0.6115 — 1.0</code>,「明确不许直答」的 20 条是 <code>0.5049 — 0.8226</code>,<strong>两段重叠</strong> ⇒ <strong>单点阈值不存在</strong>。<code>W27</code> 把精确性从<strong>分数阈值</strong>迁到 <strong><code>L0</code> 表层判定 + 实体锚点 + 证据结构</strong>,分数只留作<strong>安全下限</strong>。证据 <code>threshold_calibration.json</code>,见 <code>D3.9</code> §2.1 / §3.4</td></tr>
<tr><td><strong>那「回退之后降低阈值」岂不就不精准了?</strong></td><td><strong>对,而且这条规则根本不存在</strong>:「跨集合回退(阈值 0.65)」对应的 <code>FALLBACK_COLLECTIONS</code> 是<strong>死代码</strong>,从未接进检索链路。实测真接上会怎样:跨集合分<strong>量纲不可比</strong>,混比撞坏 <code>MIN_GAP</code>,<code>M-1</code> 从 <strong>100% 掉到 91.3%</strong> ⇒ <strong>不做</strong>。现在的回退是<strong>档位内</strong> <code>E5a</code> → <code>E5b</code> → <code>E5c</code> <strong>单向降级</strong>,降的是<strong>答复完整度</strong>,<strong>不是证据门槛</strong>(<code>FR-CS-008</code> ① 已作废)</td></tr>
<tr><td><strong>意图识别是不是不准?为什么闲聊会触发检索?</strong></td><td>旧实现把意图分类当<strong>路由器</strong>用,且「你好呀」与业务问句走<strong>同一条</strong>检索路。<code>W27</code> 把意图分类<strong>降级为「增益 + 兜底」</strong>,前面先插一层 <code>L0</code> <strong>确定性表层判定</strong>(闲聊 / 行情 / 无信息量 / 本人数据 / 计算型参数位),<strong>确定性判据优先,判不准才交回意图分类</strong> —— 所以「闲聊不再进检索」靠的是<strong>少让模型参与判定</strong>,不是调准模型</td></tr>
<tr><td><strong>一次回答要多久?成本怎么控制?</strong></td><td><code>E3</code> 快路径与 <code>E2</code> 计算型<strong>不调模型</strong>(响应最快,适合开场稳住);只有 <code>E4</code> 与部分 <code>E5b</code> 调模型(约 3—5 秒)。这既是成本策略,更是<strong>减少幻觉面</strong></td></tr>
</tbody>
</table>
@@ -87,7 +87,7 @@ cd D:\桌面\金融\group_fqcd_jr
---
## 4. 客服线(登录 `cust_t` · 7 组台词)
## 4. 客服线(登录 `cust_t` · 8 组台词)
### 4.1 本人画像 / 分层(`E2e`,确定性取数,不调模型)
@@ -309,6 +309,9 @@
| 🆕 **「问走势」为什么以前答不好,现在怎么答的?** | 因为「走势」**不是查出来的,是算出来的** —— 知识库里没有这种东西(同一只基金、不同区间、不同日期,答案全不一样)。以前只能把它塞进检索,客户拿到一张静态净值快照。现在走独立数据源 `fin_nav_history`:按净值日个数给近 5/20/60/120 个净值日的涨跌 + 区间高低 + 数据来源与区间,**每个数字都能解析到库里那一行**(`INV-6`),**全程不调模型** |
| 🆕 **闲聊为什么会触发知识库检索?现在呢?** | 以前「你好呀」和业务问句走的是同一条路(意图分类 + 向量检索),必然命中一个 0.5 上下的噪声块,于是答一段答非所问的条款。现在 `L0-a` **确定性判定**闲聊:**零检索、零建单**,且只附**轻型**免责话术(业务答复照旧附**完整**话术,已用单测钉死)。反向边界也钉了:**句中出现产品名就永远不判闲聊**(用例 `C-13`:「在吗,想问下南方稳健增利债券A的起投金额」必须走知识作答) |
| 🆕 **那个「分级回退」的阈值,凭什么保证一定精确检索到答案?** | **这个判据本身就站不住** —— 我们实测过:**「应当直答」的 26 条,`score` 区间是 `0.6115 — 1.0`;「明确不许直答」的 20 条,是 `0.5049 — 0.8226`** —— 两段**重叠**,所以**根本不存在一个能把它们分开的分数阈值**。`0.65` / `0.75` 都只是「当时调出来的数」,**不是精确性保证**。`W27` 因此把「精确性」从**分数阈值**迁到 **`L0` 表层判定 + 实体锚点 + 证据结构**:先按**确定性判据**把闲聊 / 行情 / 无信息量摘出去,知识题再靠「问句里的实体是否落在命中块里」判,**分数只留作安全下限**(宁可少答,不可错答)。证据 `_eval_harness/threshold_calibration.json`,详见 `D3.9` §2.1 / §3.3—§3.4 |
| 🆕 **那「回退之后降低阈值」岂不就不精准了?** | **对,而且这条规则根本不存在** —— 文档里写的「跨集合回退(阈值 0.65)」对应的 `FALLBACK_COLLECTIONS` 是**死代码**(`knowledge_search_service.py:41` 定义了但无人调用),从未接进检索链路。我们**实测过真接上会怎样**:跨集合余弦分**量纲不可比**,混比会把次优分抬到 `0.69—0.79`、**撞坏 `MIN_GAP`**,出口准确率 `M-1` 从 **100% 掉到 91.3%** ⇒ **不做**。现在的回退只做一件事:**在同一档位内** `E5a` 澄清 → `E5b` 部分答+引导 → `E5c` 转人工**单向降级** —— 降的是「**答复完整度**」,**不是「证据门槛」**。这条口径更正已落进 `D3.9` §3.5(`FR-CS-008` ① 作废),并同步改到 `D2.2` / `D3.1` / `D2.4` |
| 🆕 **意图识别是不是做得不准?为什么以前闲聊会触发检索?** | 旧实现把意图分类当**路由器**用(分类错就全错),而且「你好呀」和业务问句走**同一条**检索路。`W27` 把意图分类**降级为「增益 + 兜底」**,前面先插一层 `L0` **确定性表层判定**(闲聊 / 行情 / 无信息量 / 本人数据 / 计算型参数位)—— 确定性判据优先,判不准才交回意图分类。所以「闲聊不再进检索」不是靠**调准模型**,是靠**少让模型参与判定** |
| **前端边界为什么也算这次的活?** | 因为盘点发现四类"校验宽于存储"(`message` 无上限 / `session_id` 无上限 / 幂等键 128 vs 列宽 64 / `feedback_type` 无上限)。前端 `maxlength` 只是体验,绕过前端直发会让越界值**落库时才炸**成 500。已全部收紧,并新增 33 例守卫测试 |
---
@@ -2,7 +2,7 @@
␍
> **体系编号**:`D1.1` · 域:一、治理与索引 · 编号体系见 `D1.1` §4.0␍
␍
> **编号**:CS-DOC-2026-017 | **版本**:v1.18 | **日期**:2026-09-21 | **状态**:**现行(活文档,随文档区变动同步更新)**␍
> **编号**:CS-DOC-2026-017 | **版本**:v1.19 | **日期**:2026-09-21 | **状态**:**现行(活文档,随文档区变动同步更新)**␍
> **性质**:本文件是 `开发文档\` 的**唯一入口**。任何人(含三个月后的自己)打开这一份,就应知道:先读什么、哪份为准、每份什么状态。␍
> **盘点范围**:`开发文档\`(**54 个文件** = 53 份编号文档 + 1 份入口存根 `CLAUDE.md`,无归档子目录)+ `客服agent\`(**10 份**对外交付文档)。␍
␍
@@ -963,3 +963,20 @@ A5 [D3.3] 访客与角色分离的鉴权方案建议(仅此一份,无新旧
| **后续动作** | `D2.2` / `D3.1` 的 `FR-CS-008` 口径更正、`D3.6` §3.4 补 `E6`/`L0`、`D3.7`/`D2.9` 补用例、代码实施 —— 见 `D3.9` §9/§10 |
| ✅ **同轮补充(2026-09-21 · `W27` 代码实施已完成)** | `D3.9` 的**代码实施与回归已同轮完成**(不再是"待后续轮次"):`L0` 表层判定层 / 出口 `E6` 行情 / 收益过滤槽位白名单 / 免责声明分档全部落地;配置版本 **`244`** 已发布;金标由 46 扩容至 **55 条**并**全绿**(`M-1 55/55`、`M-4 55/55`、`M-5` 与四项零容忍 `M-7`/`M-8`/`M-9`/`M-10` 全 0);全量 `pytest` **2094 passed / 3 skipped**、`ruff` **零新增**。实绩见 `D2.1` v6.41、`D3.7` §6.4、`D3.9` §12 |
| ⚠️ **未做(诚实声明)** | ① 本次**只登记新增件与计数**,仍**未做全量文件普查**(历史偏移沿用,`§0` 与 `§4.0` 仍差 1);② ~~`D3.9` 的**代码实施与回归在后续轮次完成**,本件是设计与依据,**不是完成声明**~~ → **已作废:同轮完成,见上一行** |
---
## 35. 第三十一轮:`W27` 交付面口径统一 —— 出口「五 / 六 → 七 + `L0`」+ 金标计数对齐 55 条(2026-09-21)
| 项 | 内容 |
|---|---|
| **本轮做什么** | `W27` 的**代码与设计已入库**(`3e24033`),但**交付面文档仍留旧口径**(「五出口 / 六出口」)—— 这是最容易被评委当场戳到的自相矛盾点。本轮**只改文档**(12 份,**无代码改动**),把口径统一到「**七出口 + `L0` 表层判定层**」。 |
| **口径统一的写法(重要)** | **不重写历史**:`D3.6` 的「五出口」是它的**起步定义**,原文保留并加**口径更新横幅**(列明 `W20` 六出口 → `W27` 七出口 + `L0` 的演进线,并写明**不变的**:转人工仍只是 `E5c`、白名单仍 4 类、`INV-1`~`INV-5` **一条未改**);`D3.6` 另加 **§3.0**说明 §3.1—§3.4 的适用范围(含「分数区间重叠 ⇒ 单点阈值不存在」)。 |
| **改到哪几份** | `D3.6`(横幅 + §3.0 + 配套行计数)· `D1.1`(7 处索引/清单行)· `D2.6`(配套行 + **新增 `W27` 状态更新段** + §11 新增 3 条追问)· `D3.7`(性质行/读法/§0 计数 + **§4 增补 `W27` 扩容后的分母口径**)· `D2.9`(引用表 + 判分输入件 `cases_46` → **`cases_55`**)· `D2.8`(`W27` 判定补充行,前批已入库并核对通过)· `D2.5`(**新增 §4.8** 行情与闲聊实测台词)· `D2.10`(徽标 / meta / Mermaid / S8 表 / 时间分配 / 文档关系表 + §3.8 新增 `E6` 行与 `L0` 段 + §4.1 阈值口径块 + §6.1 + §8.1 三条追问 + §7.3/§7.4 台词)· `D3.1` / `D3.2` / `D2.2` / `D2.4`(HTML 四处 `§0.1` 前加 `callout-warn` 口径横幅) |
| **四份 HTML 规格文档的处理** | 它们是**手上维护的成品**(`客服agent\_build` 已标注「已过期 · 请勿重新生成」),故**不重跑生成器**,只在 `§0.1` 前插一段口径横幅:声明「五出口」是 v1.x / v2.x 时点的起步定义、**现行七出口 + `L0`**、**语义与安全结论全部有效、只是不再是全集**,并指向 `D3.9` 与 `D2.6` §3。 |
| **`D2.5` §4.8(新增)** | 针对甲方上轮点名的两类,全部用 **2026-09-21 真 HTTP 实跑**的答复:`159382` 走势(`E6`:近 5/20/60/120 个净值日涨跌 + 区间高低 + 数据区间 + 数据来源)/无数据源产品**如实告知**(`E6-miss`)/闲聊(**零检索**)/**反向守卫**(「在吗,想问下…起投金额」**必须走知识作答**)。并写明两个易混口径:`E6` **不调模型**(固定模板 + 纯函数,数字全部来自 `fin_nav_history`);闲聊**调模型但完全不查库**。 |
| **`D2.6` §11(新增 3 条追问)** | 直接回答甲方原话提的问题:① 「阈值凭什么保证精确检索」→ 两组分数区间**重叠**(`[0.6115, 1.0]` vs `[0.5049, 0.8226]`),**单点阈值不存在**;② 「回退后降阈值岂不就不精准」→ 该规则**在代码中根本不存在**(`FALLBACK_COLLECTIONS` 是死代码),真接上会让 `M-1` 从 100% 掉到 91.3%,现在的回退只降**答复完整度**、**不降证据门槛**;③ 「意图识别为何不准」→ 意图分类已**降级为「增益 + 兜底」**,前面插一层 `L0` **确定性判定**。 |
| **验证** | `_sync_check.py`:权威目录 → 仓库镜像 **0 缺失 / 0 不一致**;5 份 HTML 的 `blockquote` / `table` / `tr` / `td` 开闭标签**逐项配平**;`git diff --name-only` **12 份全部是 `.md` / `.html`,无任何代码改动** ⇒ **不影响**已绿的 `pytest 2094 passed / 3 skipped`(`3e24033` 已复跑)。 |
| **版本位同步** | 本文件头部 **v1.18 → v1.19**(本轮未增删文档,`§0` 与 `§4.0` 的计数**不变**) |
| **提交** | `qyqy_develop` = `279a632`(12 files, `+172/−39`);`zsy_developcc` = `a810f46`(覆盖式同步,与 `qyqy_develop` **树完全一致**,`git diff` 为空)。 |
| ⚠️ **未做(诚实声明)** | ① `D1.6` 会话留痕(含本轮)**待补**;② `D2.1` 执行看板的 `W27` 条目**未逐项回填**(仅头部 v6.41);③ 历史段的「五出口」**有意保留**(`D1.6` 会话留痕 / `D4.7` / `D2.1` 批次历史 / `D3.6` 原文),**未做全文替换** —— 那会把「当时的决策」改成「现在的结论」,反而失真。 |