# 06 Positioning

> SKILL · 求职方向的双环复盘

- Skill: `gilgameshcc/06-positioning` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add gilgameshcc/06-positioning`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gilgameshcc/06-positioning/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: gilgameshcc (https://skillmd.com/u/gilgameshcc)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/gilgameshcc/06-positioning

---

# SKILL · 求职方向的双环复盘

> **把本文件整份交给你的 agent 即可。** 不依赖任何特定 agent 产品，不需要注册斜杠命令、不需要放进特定目录、不需要装任何东西——`SKILL.md` 只是一个文件名约定，不是某一家的格式。把这份文件粘给它，说一句「按这个帮我复盘这一轮」就能开始。

**这份文件是写给 agent 的执行剧本。** 你（使用者）只需要读「开跑前」和「不对劲的时候」两节。

---

## 开跑前

### 要什么 / 缺了退化成什么

| 输入 | 必需？ | 缺了会退化成什么 |
|---|---|---|
| **一批已经投出去的记录**（`ledger.md`，或散着贴的原始记录） | ✅ 必需 | 缺这个不能跑。但它可以很散——见下方「最小可接受形态」 |
| 每条记录里的**对方回应原话** | ⚠️ 强烈建议 | 只剩「有回应 / 没回应」两态。**分不出「薪资不匹配」和「方向不匹配」**——而这两者指向完全相反的改法。收敛环的决策 ① ② 会整体降级为「证据不足」 |
| **反向吸引标记**（对方主动来找你的那些） | ⚠️ 强烈建议 | 发散信号 N3 停用。⭐ 这是新用户第一周唯一看得出的两类信号之一，**丢掉它等于丢掉一半发散环** |
| 面试复盘（`interviews/<company>-<date>.md`，含**溢出栏**） | 可选 | 发散信号 N4 停用（溢出栏是它的唯一采集点）。⭐ **红旗绿旗校准失去对照基准 —— 失去之后具体做什么**：让用户手工列 3 个"当时想验证的点"顶上，用它们跑完这一节，但**整段标 `事后补的基准，可信度低`**，⛔ **不喂给收敛环的决策 ① ②**；报告里这一行写成「**本轮红旗绿旗校准不可判**：没有事前判据，只有事后补的基准」。口径与 `04-interview` 缺上游评估时**完全一致**，不要另发明一套 |
| 每日 review 卡（`runs/<date>-review.md`） | 可选 | 漏斗信号只能靠台账重建，拿不到「跳过原因分布」这一层。**必须在报告里写明少了哪一层** |
| 岗位语料（`jobs/<batch>.md`，最好 ≥ 2 个批次） | 可选 | 发散信号 N1 / N6 停用 |
| 你现在的 `positioning.md` | ⚠️ 强烈建议 | 没有它，「对不上」这件事就没有参照物——**所有「面试官关注点与预设定位不符」的信号都变成不可判定**。⭐ **不可判定之后进哪里**：⛔ **不丢弃**。按 L2 那条口径（归不了类的默认进 `discoveries.md`）**全部登记进 `discoveries.md`**，信号类型先挂 N2（错配），证据栏注明「无定位参照，本轮只登记不判定」，累计计数照常走独立事件口径。等 `positioning.md` 建起来之后**回头重判这一批**——原话还在，判定可以补，**丢掉的原话补不回来**。⛔ 但它们本轮**不参与收敛环的决策 ②**（要改定位，得先有一个"原来的定位"） |
| ⭐ **台账里这几个字段有没有记**：**渠道** · **用的是哪一版材料** · **级别** · **这条岗位是怎么进来的** · **JD 里有没有写学历门槛** | ⚠️ 强烈建议 | ⛔ **这一类缺失与「量不够」性质完全不同，不许压成同一种空栏。** 没记 = **过去那一段永久不可判**（再攒也不会有），只能**从现在开始记**，而**过去那部分补不回来**。逐条影响哪个决策、报告里必须写哪三件事，见 6.3「空栏必须分成两种」 |
| ⭐ **我能不能联网检索**（⚠️ 这一条不是给我材料，是开跑前要先确认的**能力**） | ✅ 必需先确认 | 本模块主链路**不依赖**联网，但 `公开可查` 这一整档来源标注、以及来源独立性的核对深度依赖它。不能联网时**不报错、降级跑**，退化规则见下面一节 |

### ⚠️ 不能联网时退化成什么

**本模块的主链路不依赖联网**：样本体检、四层回应分层、双环判定、开分支门槛，全部只用你手上的材料就能跑完。⭐ **所以「没联网」不是不能跑，是有四处会变。** 开跑前先自查一句：**我这次有没有联网 / 检索能力？** 没有就照下面四条退化，⛔ **不许假装查过**。

1. **`公开可查` 这一整档不可用。** 本该查的（岗位公开描述、"这条要求是不是这一类岗位的普遍要求"、两家公司是不是同一个主体）一律标 `我推测的`，并在同一行注明「因无法检索而未核实」。⛔ **不许标 `公开可查`** —— 没查过就不是查到的
2. **报告顶部写一行**：`本次无公开检索能力 —— 公开材料层为空，全部结论只由你给的材料与我的推测构成`
3. ⭐ **来源独立性核对退化成保守口径。** 出处记得清楚的照常判；**判不出来的一律按「来源不独立」处理（合并计 1）**，⛔ 不许因为"看起来是两家不同的公司"就算成两个独立来源。理由是代价不对称：**把一个人的一次判断当成市场形态、拿去改方向，代价远高于漏判一次真扩散** —— 而漏判的那次下一轮还会再出现
4. **收敛环决策 ② 的旁证拿不到。** 「这条客观条件是不是这一类岗位的普遍要求」只能靠台账原话的家数判。⛔ **不许因为"我印象里这类岗位都这样"就升级成硬性排除** —— 那是 `我推测的`，而它一旦升级就是永久砍掉一块搜索面

⚠️ **这不是报错，是降级继续跑。** 缺的不是判断力，是**佐证层**：同一份报告照出，只是 `公开可查` 那一档全空、来源独立性判得更保守。**空着就写空着，不要用推测把它填上。**

### ⭐ 最小可接受形态

> **10-20 条「公司 / 岗位 / 投递日期 / 对方回了什么」，散着贴进来也行。**

真的只要这些。聊天记录转述、平台消息截图的文字、一段回忆、语音转文字，都行。**你（agent）负责把它整理成 `ledger.md`**，不要求用户先整理好。

少于 10 条时：**不给漏斗结论**，直接说「这个量级看不出漏斗形态」，然后只做发散环的登记（登记不设门槛）。⛔ 不许因为数据少就把语气放软再给一个建议——那是同一个错误换了个说法。

### ⚠️ 照最小形态给，你会拿到什么、拿不到什么

**这一段必须说破，否则用户会以为"能跑起来"等于"能拿到结论"。**

- **你会拿到**：一份整理好的 `ledger.md`（散着贴的由我整理，不要求你先填模板）· 一份**样本体检**（本轮几条投递、几条回应、几条带明确理由、差门槛多远）· 发散环的**零门槛登记**（N3 / N4 一条就能记，且登记本身就是完整产出）· 一份逐行写明"哪几类信号本轮不可判、差多少"的报告。
- ⛔ **你拿不到**：**收敛环的任何一条实质决策。** `本轮最小样本` 是 ≥ 20 条投递**且** ≥ 8 条有回应；10-20 条一定走 ⑤「什么都不改」。也拿不到 N1 / N2 / N5 / N6 四类信号的任何判定（它们的最小可见量级都在几十到上百条那一档）。
- **一句话**：**最小形态足够跑完一轮、拿到一份诚实的报告，不足以产出任何一条"该改什么"的决策。** ⭐ 这不是缺陷，是设计：**在这个量级上给出改进建议的框架，和一个坏掉的框架无法区分。** 想要收敛环的决策，唯一的办法是把样本攒到门槛以上。

### ⛔ 四条禁止（这一节是对 agent 说的）

1. **不许报错退出。** 输入缺、格式乱、只有半句话，都不是停下的理由。缺什么就明确说「你至少给我 X」，然后用手上有的先跑一版
2. **不许静默自己编。** 任何你没被告知、也没查到的取值，一律标 `我推测的`，并且**不参与任何决策的成立判定**。⛔ 尤其不许把「对方大概是觉得……」写成拒绝理由——那是你编的，不是对方说的
3. **不许一次只问一个问题挤牙膏。** 需要补的东西一次问完（最多两轮）。先用已有信息出一版带「待确认」的报告，再让用户一次补齐
4. **不许把该你自己做的整理工作推给用户。** 用户散着贴来的记录，**你负责整理成台账**。⛔ 不许说「请先按模板填好台账再来找我」

---

## 6.0 为什么必须是两个环，且不能合并

**这是本模块最重要的一条设计判断。写在最前面，因为后面所有规则都从它推出来。**

同一批原始信号，要经过两个**过滤器完全相反**的环：

```
同一批信号 ─┬─→ 收敛环   过滤器：重复出现 + 达到最小样本门槛  → 改执行
            └─→ 发散环   过滤器：反常 + 不重复 + 与预设不符    → 登记，不设门槛
```

收敛环的核心纪律是「**最小样本门槛 + 默认不动**」。它存在的全部意义，就是防止你被一两次拒绝就改定位——真实场景里 N 永远很小（几十条接触、两三场面试），而最常见的错误就是拿单次事件当趋势。

而「投着投着发现新可能性」的信号，**天然是单次的、不重复的、看起来像噪声的**：

- 一个你根本没投过的岗位类型，有人主动来找你——**只发生了一次**
- 面试里跑题聊到一个话题，你讲得比对方还兴奋——**只发生了一次**
- 某个新词在两个不同类型的公司的岗位描述里同时冒出来——**才两次，远达不到任何门槛**

**同一个循环、同一套阈值，一定会把它们当噪声滤掉。** 收敛环的防过拟合纪律，恰好会杀死发散环需要的信号。这不是可以靠「把门槛调低一点」解决的——门槛调低，收敛环就失去了它唯一的作用。

**所以：两个环，两套过滤器，两套输出。**

**两环唯一的接口**：

> **登记是免费的（不设最小样本门槛）；门槛只加在「登记 → 开分支」这一步。**

⛔ **不许用收敛环的样本门槛去挡发散环的登记。** 这是本模块唯一一条「一旦做错，整个模块的差异化就没了」的规则。

⭐ **「登记零门槛」的完整论证只写在这里一处。** 后面 6.3 的决策 ⑤ 与 6.5 的输出物两节都只放一句索引指回本节——**同一条论证在三处各写一遍，改的时候只会改到其中一处，剩下两处就开始漂**（这正是 `discoveries.md` 模板曾经在两个模块里各存一份、然后沿相反方向漂走的那类事故）。

---

## 6.1 三条输入

### 输入一 · 投递漏斗信号 ⭐ 数据量最大的一条

来自 `ledger.md` + `runs/<date>-review.md`。**先分层，再统计**——不分层的漏斗只能告诉你「回复率低」，那句话没有任何可执行含义。

| 层 | 长什么样 | 它能支撑什么 |
|---|---|---|
| **明确理由型拒绝** | 对方说出了一个**具体的、可判定的**理由（「需要有过某类业务场景的落地经验」「这个岗只考虑本地候选人」） | ⭐ 信息量最高的一层。收敛环的决策 ② 和发散环的 N2 / N5 **只能从这一层来** |
| **模糊拒绝型** | 「不太合适」「暂时没有匹配的岗位」「先保持联系」 | ⛔ **永不升级为规则。** 它只能计入「回复率」这个总量，不能被解读成任何具体原因 |
| ⭐ **强正向型** | 对方**主动**索要材料、主动发起对话、主动推另一个岗位 | 收敛环里它是渠道效率信号；发散环里它是 N3 的原料。**分流判据见 6.3 的 N3** |
| 无回应 | 过了你的观察期仍无任何动静 | 只计入总量。⚠️ **无回应不等于拒绝**——它可能是渠道问题、时机问题、或者对方根本没看到 |
| ⭐ **旁栏 · 平台状态型**<br>（⛔ **不是第五层**，见下） | 平台自动显示的状态：「已读不回」「简历未通过」这类**不是对方写的、由平台代显示**的动作 | **有动作、无信息。** 唯一用途是区分「没被看到」与「看到了没往下走」。⛔ 除此之外不解释任何事，**且不计入「有回应」数** |

⚠️ **「对方回应原话」不许在这一步被压成分类标签。** 一旦压成「婉拒 / 待定 / 邀约」，就再也分不出「薪资不匹配」和「方向不匹配」了。**分层是分析动作，原话必须保留在台账里不动。**

#### ⭐ 「已读不回」「简历未通过」这类平台状态归哪里 —— 归**旁栏**，不是四层里的任何一层

**为什么它不属于四层**：四层分的是「**对方的话里有多少可判定信息**」；而平台状态里**根本没有对方的话**，它是平台代显示的。**分类轴不同**，所以它不是"第五层"（那会让人以为还在同一条轴上），是一个**并排的旁栏**。

⛔ **三个都不许往里塞，各有各的代价**：

- ⛔ **不许归「无回应」。** 无回应的含义里包含"可能根本没被看到"；⭐ **而平台状态恰恰证明了对方看到了。** 归进去，等于把手上唯一一条触达证据丢掉
- ⛔ **不许归「明确理由型」。** 「简历未通过」是一个**结果**，不是理由。归进去会让 `N2理由门槛` 与收敛环决策 ① ② 被一批零信息的记录喂满 —— 门槛达标了，可门槛存在的那个理由（有理由可分）没达标
- ⛔ **不许归「模糊拒绝型」。** 那一层至少是**一个人写的一句话**（「先保持联系」），它计入回复率是有含义的：有人读了、并且回了。平台状态没有这个含义

⭐ **计数口径（这一条必须写死，因为它直接决定样本达不达标）**：**平台状态型单列一个自己的数，⛔ 不计入 `本轮最小样本` 的「有回应」数。**

> **理由**：`本轮最小样本` 里那个「≥ 8 条有回应」之所以存在，是为了保证**有足够的量能分出三档理由类型**（见 6.4 该参数的标定说明）。**平台状态型在定义上分不出任何理由档。** 用一批**结构上不可能带理由**的记录去满足一个为「有理由可分」而设的门槛，只会得到最坏的一种结果：**样本体检说够了，收敛环却依然无米下锅** —— 而报告读起来完全正常。

✅ **它唯一正当的用途**：它是**唯一能证伪「无回应多半是没被看到」这条推测的材料**。报告里可以写成「本轮 X 条无回应中，有 Y 条平台显示已读」，⛔ **到此为止** —— 不许接着解读成"看了不要我，说明我的材料不行"，那是 `我推测的`。

### 输入二 · 面试反馈

来自 `interviews/<company>-<date>.md`。看三样：

1. **红旗绿旗实测结果**——⭐ **三态：证实 / 证伪 / 未验证**。⛔ **「未验证」不许记成「证伪」**：没问到、没聊到、对方回避，都是「未验证」。把它当证伪，会让你以为某条判据被证明是错的，而其实只是没测过
2. **面试官关注点 vs 你预设的定位**——**对不上是最有价值的信号**。它同时可能是收敛环的（表述没讲清）或发散环的（你被归到了另一个类目里），分流判据见 6.3 的 N2
3. ⭐ **溢出栏**——跑题跑出来的东西。这是发散信号 N4 的**唯一**采集点。
   ⚠️ **溢出栏有三类，三类全归 N4**：① 用户讲得比对方还兴奋的话题 ② 对方无意透露的行业信息 ③ 可复用的联系人或线索。
   ⛔ **不许只读第 1 类。** 第 ② ③ 类恰恰是发散环决策 ④（升级为非求职产出）的原料——那条决策举的例子就是"一份行业情报 / 一个可持续的联系人 / 一条产品线索"。**只收第 1 类，等于让决策 ④ 永远没有输入。**
   ⛔ **反过来也要写死：复盘卡里「对方说了什么值得记的」那一栏（上游 `04-interview` §4b）⛔ 不是 N4 的采集点，也 ⛔ 不进 `discoveries.md`。** 它登记的是**对方主动给的、会改变你对那家公司判断**的事实，去向是**那家公司的疑点表**，不是发散侧。⭐ **两栏的分界只有一条判据**：拿掉它，变的是**对这家公司**的判断（→ §4b，回流疑点表）还是**对你自己**的判断（→ 溢出栏，归 N4）。
   ⚠️ **这条是 L2 兜底规则的第二个明确例外**（第一个是「该问没问 / 该追没追」）：它**不是归不了类，是有归宿** —— ⛔ 不许用"归不了类的默认进 `discoveries.md`"把它扫进登记簿。**扫进来的代价是双向的**：登记簿被一批本该回流疑点表的公司事实稀释，而那家公司的疑点表**一条都没更新**，下一轮的一页纸照着旧疑点问。

### 输入三 · 市场语料

来自 `jobs/<batch>.md` 的岗位描述文本。看两样：**高频词**（尤其是尚无标准定义的新词）与**结构变化**（同一类岗位的要求组合是不是在变）。

> ⛔ **本模块不讲这些岗位是怎么拿到的。** 假设它们已经在 `jobs/<batch>.md` 里了。采集属于投递执行模块的范围，且受那个模块的边界约束。

---

## 6.2 收敛环：三输入 → 五类决策

### 先过样本门槛，再谈决策

⭐ **每一轮的第一个动作是样本体检，不是找问题。**

```
本轮新增投递数 / 其中有回应数 / 其中明确理由型数 / 面试场次 / 新增岗位语料条数
        ↓
达不到 `本轮最小样本` → ⑤ 什么都不改（显式输出，本轮结束）
                        ⚠️ 但已单独过了自己门槛的那一条仍然输出 —— 见下一节
达到  → 逐条过 ① ~ ④，每条各自还有自己的门槛
```

**门槛是逐条的，不是一次性的。** 本轮样本总量够，不等于「渠道对比」这一条也够——它有自己的 `渠道对比最小样本`。

### ⭐ 反方向：整轮不达标，但某一条自己的门槛过了 —— **那一条仍然输出**

**上面那句「门槛是逐条的」只写了正方向**（逐条过门槛才触发），**反方向一直没写**：整轮样本体检不达标、按流程要走 ⑤「什么都不改」，可**这一轮里恰好有一条决策自己的门槛已经过了**（例如同类质疑已经到了 `同类质疑重复门槛` 那么多家不同公司）。这条怎么办？

> **写死：那一条仍然输出，但必须带标注「⚠️ 本轮整体样本不足，这条是单点触发，谨慎采纳」。**

**为什么不跟着一起压掉**：

- `同类质疑重复门槛` 数的是「**几家不同公司问了同一件事**」，它的分母**不是本轮投递总数**。3 家不同公司各问了一次同一件事，这个事实**不因为你这一轮只投了 12 条而变弱**。⛔ **把它一起压掉，等于用一个它根本不依赖的量去否决它 —— 让样本量惩罚了一条本来有证据的结论。**
- 而且代价不对称：压掉之后它**不会在下一轮自动重现**（下一轮报告说的是"本轮最高到几家"，不会重述这一轮曾经够过），于是用户永远不会知道它到过门槛。

**为什么又必须带标注**：

- 整轮样本不足的真正含义是：**这一轮里「没出现的东西」不可信。** 你看到 3 家问同一件事，但你不知道有多少家其实**没问** —— 分母太小，没给反例留出空间。所以它是**单点触发，不是趋势**。

⛔ **两条例外：整轮不达标时不许单点触发**（代价不可逆的那两条）：

- **决策 ②（改 `positioning.md` / 新增硬性排除条件）** —— 升级一条硬性排除 = 永久砍掉一块搜索面，错了补不回来
- **决策 ④（反身修订定级阈值）** —— 一改，上一轮的数据就不可比；它本来就带 `定级阈值冷却期`

这两条在整轮不达标时并入 ⑤，并写明「**本条本轮已过自己的门槛**，但因整轮样本不足 + 代价不可逆而不触发，下一轮样本达标后优先看这条」。⭐ **注意这句话本身就是输出** —— ⛔ 不许直接不提。

### 五类决策

| # | 决策 | 触发条件（参数见 6.4） | ⛔ 不该触发的样子 |
|---|---|---|---|
| **①** | **改事实池里那件事的讲法** | 同一类质疑在 ≥ `同类质疑重复门槛` 家**不同**公司出现，且你都答得不好 | 同一类质疑只在 1 家出现 → 输出「证据不足，继续观察」。⛔ 一次追问不构成一次修订 |
| **②** | **改 `positioning.md`**（含新增硬性排除条件） | 连续 ≥ `硬性排除升级门槛` 家因**同一个客观不可变条件**被拒（学历 / 城市 / 某类经历年限这种你当下改不了的） | 因主观评价被拒（「不太合适」）→ ⛔ **永不升级为规则**。主观评价升级成硬性排除，等于用一句客套话把自己的搜索面永久砍掉一块 |
| **③** | **改渠道 / 城市 / 薪资档配比** | 两个渠道各自 ≥ `渠道对比最小样本`，且回应率差异明显 | 某渠道只有 3 条且 0 回应 → 样本不足，不动。⛔ 「这个渠道好像没用」是印象，不是数据 |
| **④** | **反身修订定级阈值**（`03-company-analysis` 的定级规则） | 某个档位（级别 / 薪资档）的回应率**系统性**偏离，且**不在冷却期内** | 单批次波动 → 不动。⚠️ **阈值改动必须带 `定级阈值冷却期`**，否则你会在两个方向之间来回震荡，而每次震荡都会让上一轮的数据不可比 |
| ⭐ **⑤** | **什么都不改** | 以上都不成立，或本轮样本不达 `本轮最小样本` | ⛔ **不是沉默地什么都不做**——见下。⚠️ **也不是「整轮一刀切」**：整轮不达标时，已单独过了自己门槛的 ① / ③ 仍然输出（带单点触发标注），② / ④ 并入 ⑤ 但要写明它已过门槛 —— 见上一节 |

### ⭐ 为什么 ⑤ 是最重要的一类，且必须显式输出

**⑤ 必须写进报告，写成一段有主语的结论**，形如：

> **本轮不改。** 本轮新增 N 条投递、其中 M 条有回应、K 条带明确理由。`同类质疑重复门槛` 是 3 家不同公司，本轮最高只到 2 家（纬度智能、青栈网络，都在问同一类问题）。**再攒 1 家同类质疑就够门槛了**，下一轮优先看这条。

⛔ **不许省略成「本轮无明显问题」。** 那句话既没说样本多少，也没说差多远，读者无法判断它是真的做过判断还是根本没算。

**它为什么最重要**：

> **它是「这套东西真的在做判断」的唯一证据。**
> 一个对任何数据都能给出改进建议的框架，和一个坏掉的框架**无法区分**——两者的输出看起来一模一样。只有当它在某些输入上**明确说不改**，你才知道它在另一些输入上说的「该改」是有含义的。

它的成本 ≈ 一段模板文字。**任何一轮精简都不许削它。**

---

## 6.3 发散环：六类信号 N1-N6

> ⚠️ **`N` 前缀在本仓库里指两样完全不同的东西 —— 这才是真正会撞车的地方。**
>
> | 写法 | 指什么 | 谁在用 |
> |---|---|---|
> | **必要条件 N1 / N2 / N3** | `positioning.md` 里「不满足就不投 / 不去」的那几条 | 定级模块、offer 模块，以及面试执行一页纸里的 `N1` / `N2`（那是**必要条件验证题的行号**） |
> | **发散信号 N1-N6** | 本节这六类（命名 / 错配 / 反向吸引 / 溢出 / 结构性拒绝 / 邻接漂移） | 只有本模块 |
>
> ⛔ **本模块的报告、登记簿、分支表里一律写全称**：「**发散信号 N3**」「**必要条件 N3**」，不许只写 `N3`。两者都是"编号 3"，会出现在同一份复盘里，而**读者没有任何线索能分辨**——一句"N3 不满足"到底是"没拿到反向吸引信号"还是"这个岗不满足你的第 3 条必要条件"，对应两个完全相反的动作。
> ✅ **什么算写全了**：`发散信号 N3` / `必要条件 N3`，或者**编号与信号名同格**（`N3 · 反向吸引`）都算——判据是"单看这一格就能分辨"。⛔ 孤零零一个 `N3` 不算。
> ⚠️ **这条撞车目前没有被前缀本身挡住，只能靠写全称挡。** 换一个不碰撞的前缀是更彻底的解法，但它会波及本模块之外的固件与示例，需要一次性改完，不能只改半边。（顺带：`D` 编号是另一回事，本模块不用它。）

### 六类信号

| # | 信号 | 从哪来 | 为什么它属于结果层（而不是执行层） |
|---|---|---|---|
| **N1 命名信号** | 岗位描述里出现的、**尚无标准定义的新词**，从孤例扩散到多城多类公司 | `jobs/` | 一个词从孤例扩散开 = **一个类目正在成形**。类目是定位的落点，不是表述问题 |
| **N2 错配信号** | 反复被拒，但理由是「**经验类目不对**」而不是「能力不够」 | `ledger.md` 明确理由型 | 同一段经历换一个参照系，就从「缺某类场景」变成「有另一类的体系化经验」。**换类目，不是改讲法** |
| ⭐ **N3 反向吸引** | 你**没投过**、但对方主动来找你的岗位类型 | `ledger.md` 的反向吸引标记 + 强正向型回应 | **最被低估的一条。** 它是市场对你的**无偏归类**——不受你搜索关键词的框限。**你搜什么决定你看到什么，唯独这条不是** |
| ⭐ **N4 溢出** | 面试 / 对话里跑题跑出来的东西，**三类都算**：① 你讲得比对方还兴奋的话题 ② 对方无意透露的行业信息 ③ 可复用的联系人或线索 | `interviews/` 的溢出栏（**三类全部**） | 求职过程产出了**不是岗位的东西**（一份行业情报、一个联系人、一条产品线索）。结果层的极端形态 |
| **N5 结构性拒绝** | 某条线**系统性**够不着：同一条客观门槛反复卡住你 | `ledger.md` + `jobs/` 的要求栏 | 优化执行解决不了它 → **关掉这条线或换入口**。关掉也是一种结果层改进 |
| **N6 邻接漂移** | 推荐流 / 采集流里反复出现、但**不在你原关键词列表里**的岗位形态 | `jobs/` 里标了来源的条目 | 市场把你的画像投射到的**邻接空间**——它看到的你和你以为的你不是一回事 |

> **N3 与 N4 是重点**：它们是**只有「投着投着」才能拿到、坐着规划拿不到**的信息。

### ⭐ 每类信号的最小可见量级（这一节不许省）

**下面这张表要在每一轮报告里逐行输出，包括那些「这轮看不出来」的行。**

| 信号 | 最小可见量级 | 来源等级 | 新用户第一周看得出吗 |
|---|---|---|---|
| **N1 命名信号** | 岗位语料约 `N1语料门槛` 条，**且跨 ≥ 2 个批次**（不然分不出「新出现」和「本来就有」），⭐ **且这个词要落在 ≥ `N1独立来源门槛` 个互相独立的来源上**——见表下「什么叫扩散」 | `纯占位待校准` | ❌ 看不出 |
| **N2 错配信号** | ≥ `N2理由门槛` 条**带明确理由**的拒绝。⚠️ 是「带明确理由」的条数，不是总回应条数——大部分回应是模糊型，分不出这一层 | `纯占位待校准` | ❌ 看不出 |
| ⭐ **N3 反向吸引** | **1 条就能登记**；≥ 3 条才看得出形态（是不是集中在同一个你没意识到的类目上）。⭐ **这里的 3 条数的是「互相独立的来源」，不是条数**——口径与 N1 相同，见表下「什么叫扩散」。⚠️ **这个 3 就是参数 `N1独立来源门槛`**，6.4 里它自己写着"这个 3 是编的" | ⭐ `纯占位待校准` | ✅ **看得出** |
| ⭐ **N4 溢出** | **1 场面试 / 1 次对话就能登记**（三类任一）；**开分支**另有门槛 `N4开分支门槛`（默认 2 次**独立事件**且跨 ≥ 2 场面试 / 对话，见 6.4）——⚠️ **登记量级与开分支门槛不是一个数**，别拿"1 场就能登记"去对开分支 | ⭐ `纯占位待校准` | ✅ **看得出**（前提是复盘卡有溢出栏，且**三类都抄过来**） |
| **N5 结构性拒绝** | 同一条线上 ≥ `N5同线门槛` 条岗位，且过半卡在**同一条**客观条件上 | `纯占位待校准` | ⚠️ 勉强，要看这一批投得集不集中 |
| **N6 邻接漂移** | 与 N1 同量级，**且要求语料里记了「这条是怎么进来的」**（搜索命中 / 推荐 / 对方推来）——没记来源就整类不可判。⭐ 来源独立性口径与 N1 相同 | `纯占位待校准` | ❌ 看不出 |

> ⚠️ **N3 / N4 两行的等级为什么必须是 `纯占位待校准` 而不是 `默认建议值`**：它用的那个 3 就是 `N1独立来源门槛`，而那条参数自己标着 `纯占位待校准`、注释里写着"这个 3 是编的"。⭐ 而 N3 恰恰是**新用户第一周唯一看得出的两类信号之一**——**最被依赖的那个门槛，等级不能标得比它的实际来源硬**。标虚一档的代价很具体：用户会以为"3 个独立来源"是个有依据的线，于是在第一周就拿它去改方向。
>
> ⭐ **N4 是同一个形状**：它引用的 `N4开分支门槛` 也标着 `纯占位待校准`，而那条参数的注释就写着"这个 2 是编的"。
>
> ⛔ **一条通则**（这两行是它的两个实例）：**一行的等级，不能比它所引用的参数的等级更硬。** 引用了 `纯占位待校准` 的参数，这一行就不可能是 `默认建议值` —— 那等于凭空给一个编出来的数字升了一级。

### ⭐ 两条门槛打架时：**最小可见量级优先**

**实测出现过的形状**：同一个信号，「最小可见量级」说**本轮不可判**，而它的开分支门槛（`开分支登记门槛` / `N4开分支门槛`）说**次数已经够了**。两条门槛给出相反的答案。

> **写死：最小可见量级优先。⛔ 最小可见量级不过 → 开分支门槛本轮根本不该被评估。**

**理由 —— 这两条门槛管的不是同一件事**：

| 门槛 | 它回答的问题 |
|---|---|
| **最小可见量级** | ⭐ **这类信号在你现在的数据量上，看不看得出来** |
| **开分支门槛** | 看出来之后，**要不要为它花掉一份配额去行动** |

**前者不过，后者就是在一个还分辨不出信号的量级上讨论「要不要行动」** —— 那正是本模块反复在防的那件事：**一个对任何数据都能给出行动建议的框架，和一个坏掉的框架无法区分。**

⛔ **不许反过来**（"次数够了，那就先开着看看"）：登记是**零门槛**的，所以"累计次数"这个数在量级不足时**本来就可能被几条噪声凑出来**。拿它去越过可见量级，等于**把零门槛登记直接当成了证据** —— 与「拿登记行数去凑门槛」是同一类错，只是换了个入口。

✅ **正确输出的形状**：

> **发散信号 N5 结构性拒绝：本轮不可判（最小可见量级不过），⛔ 开分支门槛本轮不评估。** 同一条线上只有 9 条岗位，`N5同线门槛` 是 15 条。**它累计的独立事件数已经到 3 次、够 `开分支登记门槛`，但这一条本轮不成立** —— 在这个量级上分不出「这条线够不着」和「这几家刚好都这么要求」。**先补到 15 条，再回来看开不开分支。**

⚠️ **唯一的例外已经写在表里**：N3 / N4 那句「1 条 / 1 场就能**登记**」是**登记**量级，不是可见量级 —— 登记本来就零门槛，不受这条优先级约束。**受约束的是「见形态」与「开分支」这两步。**

### ⭐ 什么叫「扩散」：数的是**互相独立的来源数**，不是条数

> **适用范围：N1 / N6 / ⭐ N3。** 见本节末尾「为什么 N3 也要这条口径」。

**N1 / N6 唯一容易被骗的地方在这里。** 同一个新词出现了 5 条，可能是市场正在形成一个新类目，也可能是**同一个来源把同一条信息换了几个名字重复投放**——后者叫**伪扩散**。⛔ **它的条数、批次数、语料占比，和真扩散长得一模一样**：只数条数的规则，对这两者给出的判断完全相同，也就等于没在判断。

> **口径：同一个来源（同一家公司 / 同一个中间人 / 同一次转发）来的多条，无论岗位名是否被换过，合并计 1。**

**来源不独立的直接证据**（命中任一条，就按合并计 1 处理）：

- 正文职责逐字相同，或条数与顺序完全一致
- 连**错别字 / 排版怪癖**都一样
- 用人单位一栏是「知名企业」这类不可核验的占位，**没法确认它们是不同的公司**
- 全部由同一个人转来，且时间集中在很短的一段里

⛔ **伪扩散不许升级为候选类目。** 正确处理：在 `discoveries.md` 里按**一条**「同一来源重复投放」登记，**累计次数记 1**，证据栏注明「来源不独立，不计入扩散」。

⭐ **但它仍然要登记**——登记零门槛这条不变。「某个中间人在集中推某个方向」这件事本身就是信息，只是它不是 N1。

### ⭐ 为什么 N3 也要这条口径（且它比 N1 更急）

**同一个中间人来两次，在 N3（反向吸引）上是一模一样的伪扩散。**

- 三条"对方主动来找你"如果**全部来自同一个中间人 / 同一家公司的两个 HR / 同一次转发**，它们不是"市场对你的三次无偏归类"，**是一个人对你的一次判断被数了三遍**。
- ⚠️ **它比 N1 的风险更大**，因为 ⭐ **N3 是新用户第一周唯一看得出的两类信号之一**——最容易被看到的那条线上没有这个口径，用户会在第一周就拿着一个伪信号去改方向。

> **口径（与 N1 完全相同）**：同一个来源（同一家公司 / 同一个中间人 / 同一次转发）来的多条，**合并计 1 个独立来源**。
> N3 的"≥ 3 条才看得出形态"从此读作「**≥ 3 个互相独立的来源**」。

⛔ **来源不独立的 N3 不许拿来判"形态"**（"是不是集中在同一个你没意识到的类目上"）——一个来源当然只会指向一个类目，那不是形态，是同义反复。
⭐ **但它照样登记**，并在证据栏注明「来源不独立，不计入形态判定」。

### ⭐ 登记按行，计数按独立事件 —— 两条规则的接口

**这两条以前是打架的，现在写死。**

| | 口径 | 为什么 |
|---|---|---|
| **登记**（写进 `discoveries.md`） | ⭐ **一条一行，不合并同类。零门槛。** 一场面试产出 4 条互相印证的溢出，就是 **4 行** | 合并会丢掉每次的具体语境和原话，**而原话是这本登记簿唯一不可再生的东西** |
| **计数**（`开分支登记门槛` / `N4开分支门槛` 数的那个数） | ⭐ **按「独立事件」合并。** 同一场面试 / 同一次对话 / 同一个来源里**互相印证**的多条，**合并计 1 次** | 与 N1 的来源独立性**同源**：**数的是独立的观察，不是条数。** 一场面试里的 4 条溢出，是**一个人在一次对话里说的话**，不是 4 次独立观察 |

**所以那 4 条溢出的正确处理是**：`discoveries.md` 里 **4 行**，累计次数栏计 **1 次**，并在证据栏注明「同一场，合并计 1 次独立事件」。

⛔ **不许反过来做**（登记合并成 1 行、计数按条数算 4 次）——那是**两头都错**：既丢了三条原话，又用一次观察凑出了开分支的门槛。

⚠️ **"互相印证"是判据，不是"同一场就一定合并"。** 同一场面试里两条**指向完全不同方向**的溢出（例：一条是你讲嗨的话题，一条是对方顺口透露的行业信息），是**两次独立观察，计 2 次**。合并的是"同一件事被说了几遍"，不是"同一天发生的事"。

### ⭐ 空栏必须分成两种：**量不够** / **字段没记**

#### 先说旧的那一半（仍然成立）：量不够时必须显式输出这句话

> **「这类信号现在看不出来，不是不存在。」**

对每一条达不到最小可见量级的信号，报告里要写成：

> **发散信号 N1 命名信号：⚠️ 本轮不可判（量不够）。** 语料只有 40 条、单批次。`N1语料门槛` 是约 150-200 条且跨 2 个批次。**这不代表没有新词在冒出来，只代表你现在的语料量分辨不出来。** 要看得出来，你需要再攒一批岗位语料。

**为什么这条是硬的**：

> **真正的风险不是「少了三类信号」，是用户跑出来一堆空栏、以为是自己没做对。**

一个空栏有几种完全不同的含义 ——「看过了，没有」和「看不出」——**而空栏本身把它们压成了同一个样子**。用户会默认是第一种，于是得到一个错误的结论：我这个方向没有任何别的可能性。

⚠️ **这与收敛环第 ⑤ 类决策是同一条纪律（正确地不下结论），只是用在了输入侧。**

#### ⛔ 而「看不出」本身还要再分成两种 —— 这一条最贵

**报告里凡是写「不可判」的地方，都必须标出它是下面哪一种。**

| 空栏 | 性质 | 用户该做什么 |
|---|---|---|
| ⚠️ **量不够** | ⭐ **再攒攒就有** | 继续跑，下一轮再看 |
| ⛔ **字段没记** | ⭐ **永久不可判** | ⛔ **攒到天荒地老也不会有。** 必须**从现在开始记**；而**过去那部分补不回来，别去补** |

⭐ **为什么必须分开**：报告里如果只有「差多少」这一栏，用户看到空栏会**一律理解成"再攒攒就行"**。⛔ **而对第二类，「再攒攒」这句安慰是错的建议** —— 他会照着继续跑三个月，然后拿到一模一样的空栏，且这三个月的数据同样补不上那个字段。

**属于「字段没记」的至少有这五个**（不是穷举，判据在表下）：

| 没记的字段 | 它一停，谁就永久不可判 |
|---|---|
| **渠道**（这条是从哪儿投出去的） | 收敛环**决策 ③ 整条**。没有渠道，回应率就没有可比的分组 |
| **用的是哪一版材料** | 收敛环**决策 ①** 的效果无法回看：改过讲法之后有没有变好，得知道哪些记录用的是改前那一版 |
| **级别**（这个岗位当时判的是哪一档） | 收敛环**决策 ④ 整条**。「某个档位的回应率系统性偏离」—— 没有档位这一栏，连"某个档位"都不存在 |
| ⭐ **这条岗位是怎么进来的**（搜索命中 / 推荐 / 对方推来） | 发散信号 **N6 整类**；以及 N1 / N3 的**来源独立性**核对（伪扩散判不了） |
| **JD 里有没有写学历门槛**（及同类的客观门槛栏） | 收敛环**决策 ②** 与发散信号 **N5** 的判据。「因同一个客观不可变条件被拒」—— 没有这一栏，"同一个条件"是回忆，不是数据 |

> ⭐ **判据比清单更重要（清单一定会漏）**：**这个字段是不是"只能在事情发生的当下记下来"？** 是 → 一旦没记，那一段就永久不可判。
> 理由类型、原话、条数这些**能事后从记录里数出来**的，不属于这一类；而「当时投的是哪个渠道」「当时用的是哪一版材料」，事后**只剩回忆，而回忆不是数据**。

#### ⭐ 「字段没记」这一类必须输出的三件事（缺一不可）

**报告里每一条「字段没记」的空栏，都要写全下面三句** —— ⛔ 少写任何一句，用户都会退回"再攒攒就行"：

1. ⛔ **这个决策 / 信号在过去那段数据上永久不可判** —— **不是本轮不够**
2. ✅ **从现在开始记什么** —— 写成一个能立刻照做的动作（"从下一条起，台账加一栏『这条是怎么进来的』，三选一：搜索命中 / 推荐 / 对方推来"）
3. ⛔ **过去那部分补不回来，别去补** —— **不许让用户回头凭记忆补填**。凭记忆补出来的字段，会和真数据长得一模一样，然后在下一轮被当成 `你给的` 用掉

**照这个形状写**：

> **发散信号 N6 邻接漂移：⛔ 本轮不可判 —— 字段没记，不是量不够。** 语料里没有「这条岗位是怎么进来的」这一栏。
> ⛔ **已经攒下的这 40 条，永远判不了 N6**：没有来源，就分不出「市场把我投射到了这里」和「我自己搜到了这里」，而这正是 N6 的全部内容。**再攒 200 条也不会变。**
> ✅ **从现在开始**：下一批语料每条加一个来源字段（搜索命中 / 推荐 / 对方推来）。**改一次记录格式，下一轮这一整类就从「不可判」变成「可判」—— 这是本报告里成本最低的一条。**
> ⛔ **不要回头补这 40 条。** 凭记忆补出来的来源会和真记录长得一模一样，然后在下一轮被当成证据用掉。

⚠️ **报告与模板里这两类必须用不同的标记，⛔ 不许共用一个"不可判"。** 统一写法：`⚠️ 不可判（量不够）· 差 X` / `⛔ 不可判（字段没记）· 永久`。

⭐ **这一节同时管收敛环。** 上表五个字段里有三个（渠道 / 用的是哪一版材料 / 级别）卡的是**收敛环的决策 ① ③ ④**，不是发散信号 —— 所以「不可判」的两分法要在报告的**两节里都用**，不是只用在 3.1 那张信号表上。

### 五类结果层决策

| # | 决策 | 什么时候用 | 硬要求 |
|---|---|---|---|
| **①** | **开一条探路分支** | 某信号累计 ≥ 它自己的开分支门槛（通用 `开分支登记门槛`；**N4 用 `N4开分支门槛`**），**且你写得出证伪判据**。⭐ **累计数的是「独立事件数」，不是登记行数**——见上节。⭐ **且这个信号的最小可见量级必须先过**——见「两条门槛打架时」 | ⛔ **写不出证伪判据 → 不许开**，保持登记态。见下面纪律 2。⛔ 拿登记行数去凑门槛 → 一场面试就能开分支，那是把零门槛登记当成了证据。⛔ **最小可见量级不过 → 这一条本轮根本不评估**（最小可见量级优先） |
| **②** | **重选参照系** | N2 成立：同一段经历在另一个类目里是优势而不是缺口 | 改的是 `positioning.md` 的**「目标形象」**那一句，不是简历里的措辞。⚠️ 改目标形象会让下游全部重来一遍，**一轮最多改一次** |
| **③** | **关掉一条分支** | N5 成立，或某分支到期未达证伪判据 | ⛔ **必须写下关闭依据**，写进 `branches.md` 且不删行。没有关闭依据的分支会反复复活——每隔几周你就会重新想起它一次 |
| **④** | **升级为非求职产出** | N4 成立**且产出了可交付物**（一份行业情报 / 一个可持续的联系人 / 一条产品线索）。⭐ **这三个例子分别对应溢出栏的第 ② ② ③ 类** —— 所以 N4 必须收全三类，只收"你讲嗨的话题"那一类，这条决策就永远没有输入 | 只是聊得开心、没有可交付物 → 不升级，保持登记态 |
| ⑤ | **登记但不行动** | 以上都不成立 | ⚠️ **与收敛环的「不动」不同：这里必须留痕。** 写进 `discoveries.md`，等第 2、3 次出现——收敛环的不动是「不改」，发散环的不动是「记下来，先不动」。⭐ **照下面那句模板的形状写**，别只写"已登记"。（零门槛登记的完整论证见 §6.0，此处不重复）|

### ⭐ 决策 ⑤ 也要有形状：照这句写

**⑤ 必须写成一段有主语的结论**，形如：

> **本轮不开任何分支，但已登记 4 条。** 本轮新登记 4 条（发散信号 N3 两条、发散信号 N4 两条），按独立事件合并后是 **2 次**（其中 N4 的两条来自同一场面试、互相印证，合并计 1 次）。`N4开分支门槛` 是 2 次独立事件**且跨 ≥ 2 场**——次数够了、场次不够，**差 1 场**。N3 那条差 1 次独立事件。**两条全部保持登记态**，落在 `discoveries.md` 第 3-6 行。**下一轮优先看**：再面一场就能判 N4 这条开不开得起来。

⛔ **不许省略成「已登记，继续观察」。** 那句话既没说登了几条、合并成几次，也没说差门槛多远、卡在哪一步（是次数不够，还是判据写不出来），**读者无法判断它是真的数过还是根本没数**。

**为什么这一句是硬的**：

> **发散环那一节最容易退化成一张空表**——这是本模块自己点名的最大风险（见「量不够时必须显式输出这句话」一节）。而一句"必须留痕"挡不住空表，**因为一张空表也可以宣称自己留过痕**。只有当 ⑤ 被写成"登了几条 / 合并成几次 / 差多远 / 卡在哪一步"，读者才验证得了这个环真的跑过。
> ⚠️ 这与收敛环第 ⑤ 类决策是**同一条纪律**，只是那边管"不改"、这边管"不开分支"。两边都给了模板句，**两边都不许省**。

### 三条防失控纪律

**没有这三条，发散环就退化成无差别大量投递。**

1. **配额制**
   探路分支占本轮总投递的比例 ≤ `探路配额上限`；同时活跃的分支 ≤ `活跃分支上限`。
   **主线保守 + 一小部分高方差**——这个配比本身就是纪律，不是随手定的比例。⛔ 配额超了就砍分支，不是提配额。

2. **每条分支自带证伪判据 + 截止日期** ⭐
   写法是一句可判定的话：「**投 N 条，X 周内 0 回应 = 关掉**」。
   - ⛔ **没有证伪判据的分支不许开。** 写不出来说明你其实不知道自己在验证什么
   - ⛔ **没有截止日期的分支不许开。** **一条没有关闭条件的探路分支就是一个无限期的资源漏洞**——它不会以失败告终，它会以「还在跑」的名义一直占着配额
   - ⚠️ **对称的两条**：未到期但暂时 0 回应 → **不许提前关**（那是在用收敛环的耐心标准杀发散环）；到期未达判据 → **不许延期**（一次延期之后就没有第二次拒绝的理由了）

3. **成本可控**
   探路的全部价值是「**低成本**获取市场反馈」。因此 ⛔ **不为一条探路分支重写全套材料**——最多是换一个讲法的顺序、调一段侧重。
   **成本一旦超过阈值，它就不是探路了，是转型**，那是另一个决定，不该在这个循环里悄悄做完。

---

## 6.4 阈值参数化 + 来源等级

⭐ **本模块不写死任何数字。下面每一个都是编的，必须按你自己的情况标定。**

| 参数 | 默认 | 来源等级 | 怎么按你自己的情况标定 |
|---|---|---|---|
| `本轮最小样本` | 本轮新增 ≥ 20 条投递**且** ≥ 8 条有回应 | `默认建议值` | 看你自己的**回应率**：把「有回应数」定在你历史回应率下，至少能分出三档理由类型的量。回应率越低，需要的投递数越大 |
| `同类质疑重复门槛` | 3 家不同公司 | `纯占位待校准` | ⚠️ 完全是编的。标定方式：回头看你已经改过的那些讲法，**当初是在第几次质疑之后改的、改完有没有变好**。没有历史就先用 3，并在报告里标出来 |
| `硬性排除升级门槛` | 连续 5 家因同一客观条件被拒 | `纯占位待校准` | 这条宁可定高。**升级一条硬性排除 = 永久砍掉一块搜索面**，错误的代价是不对称的 |
| `渠道对比最小样本` | 每个渠道各 ≥ 10 条 | `默认建议值` | 两个渠道的条数差太多时（比如 30 比 5），⛔ **不许直接比回应率**——先说明样本不可比 |
| `定级阈值冷却期` | 改过一次后，2 个复盘周期内不再动 | `纯占位待校准` | 至少要长到「上一次改动的效果能被观察到」。你的平均回应周期是多久，冷却期就不该短于它 |
| `探路配额上限` | 占本轮总投递 ≤ 20% | `默认建议值` | 你能承受多大的下行？**这个数字问的是你的容错空间，不是市场** |
| `活跃分支上限` | 同时 2 条 | `默认建议值` | 超过 2 条，你会记不住每条在验证什么——那时配额还在，注意力已经没了 |
| `开分支登记门槛` | 同一信号累计 ≥ 3 次**独立事件** | `纯占位待校准` | ⭐ **数的是独立事件数，不是 `discoveries.md` 的行数**（同一场 / 同一来源里互相印证的多条合并计 1，见 6.3「登记按行，计数按独立事件」）。⚠️ N3 / N4 这类天然低频的信号，3 次可能要好几个月——**所以 N4 单独有一个更低的门槛，见下一行**。要对别的信号类型另设门槛也行，但**必须写下来** |
| ⭐ `N4开分支门槛` | **2 次独立事件，且跨 ≥ 2 场不同的面试 / 对话** | `纯占位待校准` | ⚠️ 这个 2 是编的。**它为什么单独存在**：N4 的最小可见量级是"1 场就能登记"，而通用门槛是 3 次——只面过 2 场的人**在结构上永远开不了这条线**，还会以为是自己没做对。定成 2 次 + 跨 2 场，是让它在**第 2 场面试之后就有可能开起来**，同时用"跨 2 场"挡住"一场面试里说了三件事就开分支"。<br>⭐ **说实话的部分**：即便按这个门槛，**这条线通常也要 3-5 场面试才真的开得起来**——因为不是每场都会跑题跑出东西。**在此之前 N4 停在登记态是正常的，不是你做错了什么。**<br>⛔ 不许为了"让它动起来"临场把门槛降到 1 次——1 次独立事件就开分支，等于把零门槛登记直接当成了证据 |
| `分支默认截止期` | 开启后 4 周或 3 个复盘周期，以先到者为准 | `默认建议值` | 不短于你的平均回应周期 × 2。**短于这个数，你关掉的是等待时间，不是分支** |
| `N1语料门槛` | 约 150-200 条岗位语料，跨 ≥ 2 批次 | `纯占位待校准` | 看你**每批采多少**：至少要两批才能谈「变化」 |
| `N1独立来源门槛` | ≥ 3 个**互相独立**的来源 | `纯占位待校准` | ⚠️ 这个 3 是编的。它防的是伪扩散——同一个来源换几个岗位名重复投放。你的语料里转述来源占比越高，这个数就该定得越高。⭐ **同一条口径同时用于 N6 与 N3**：N3 的"≥ 3 条才看得出形态"数的也是**独立来源数**（同一个中间人来三次 = 1 个来源），见 6.3「为什么 N3 也要这条口径」 |
| `N2理由门槛` | ≥ 30 条带明确理由的拒绝 | `纯占位待校准` | 注意是**带明确理由**的条数。你的明确理由型占比越低，需要的总回应数越大 |
| `N5同线门槛` | 同一条线 ≥ 15 条岗位 | `纯占位待校准` | 要够多才能分清「这条线够不着」和「这几家刚好都要求这个」 |

⛔ **凡是你在报告里用到的数字，都要标它是这三种里的哪一种，或标 `你给的`。**

> **一个没标来源的阈值和一个编的阈值无法区分。** 本模块目前**没有一个阈值是 `实践校准` 级**——全部是 `默认建议值` 或 `纯占位待校准`。**标出来不是弱点，是让你知道哪些数字该先动。**

---

## 6.5 输出物

### 1. 周期性分析报告

模板见 [`templates/周期性分析报告.md`](templates/周期性分析报告.md)。硬要求：

- **收敛环与发散环分两节写**，⛔ 不许合并成一份「本轮总结」
- **每节至少产出一个决策**（收敛环的 ⑤「什么都不改」算一个决策，且必须写成有主语的结论）
- **发散环那一节要逐行输出 N1-N6，包括「本轮不可判」的行**
- 报告开头是**样本体检**，不是结论。⭐ **样本体检之外还要有一张「字段体检」** —— 两者性质不同，⛔ 不许合并（见 6.3「空栏必须分成两种」）
- ⭐ **每一处「不可判」都要标是 `⚠️ 量不够` 还是 `⛔ 字段没记`**；后者要写全三件事（永久不可判 / 从现在开始记什么 / 过去别回头补）
- ⭐ **回应分层里平台状态型单列旁栏**，⛔ 不计入「有回应」数（见 6.1）
- ⭐ **收尾三节缺一不可**：`下一轮要补的输入`（补量）· `下一轮的执行改进项`（该问没问 / 该追没追）· `回溯提示`（当时该做而没做的动作）—— 见下面两小节

#### ⭐ 「该问没问 / 该追没追」有自己的出口 —— ⛔ 不进 `discoveries.md`

**这一整类信息以前只有登记簿一个落点，而登记簿只通向「开分支」。** 于是它进去之后出不来：它永远凑不出独立事件数，也永远写不出证伪判据 —— ⭐ **因为它根本不是一个待验证的方向，它是一件下一轮该换个做法的事。**

典型形状：面试里那条本该追问的没追（「谁对最终用户的验收负责」）· 对方主动来找的时候没问清是哪条业务线 · 拿到明确理由的那几条没顺手问一句"最看重的硬要求是什么"。

> **出口：报告的「下一轮的执行改进项」一节**（模板 §5.2）。**它是执行改进项，不是发散信号。**

- ✅ 每条写成**下一轮的一个动作**：「下一轮面试收尾前，把红旗绿旗那一栏标了『未验证』的条目逐条问一遍」
- ⛔ **不许登记进 `discoveries.md`。** 登记簿装的是"还没想明白但值得记着的**外部信号**"；⭐ **"我该问没问"不是外部信号，是我自己的执行动作** —— 混进去会把登记簿稀释成一份待办清单，而登记簿最不该被稀释
- ⚠️ **这是 L2 兜底规则的一个明确例外**：L2 说"归不了类的默认进 `discoveries.md`"，但这一类**不是归不了类，是有归宿**。⛔ 不许用兜底把它扫进登记簿
- ⛔ **也不进 `branches.md`**：它不需要配额，也写不出证伪判据 —— 它不是一次试验

#### ⭐ 回溯提示：台账里有没有「当时该做而没做」的动作

**每轮复盘做一次，写进报告 §5.3。** 扫一遍台账与面试记录，找**上游模块本该跑、而当时没跑**的地方。至少查这几条：

- 收到过 offer，但**从没做过横向对比**
- 面完了，但**没有当天的复盘记录**（那一场的溢出栏、红旗绿旗实测结果因此全部丢了）
- 有过明确理由型拒绝，但**那句原话没被抄进台账**
- 有过对方主动来找，但**没标反向吸引**

⭐ **目的不是让用户后悔。** 已经过期的机会**追不回来**，说它只会让人难受，且不改变任何事。⛔ **所以措辞一律落在「下次这类事发生时提醒我」上**，不落在「你当时应该……」上。

**照这个形状写**：

> **回溯提示（不是追责）**：台账里有 2 条在三个月前进到过 offer 阶段，**没有对应的对比记录**。那两个机会现在已经过期，⛔ **补不回来，也不必去补**。
> ✅ **下一轮的动作**：⭐ **下次台账里任何一条走到 offer 阶段，当天提醒我先跑一次对比再答复**；同理，任何一条走到面试阶段，当天提醒我留一份复盘记录。

⚠️ **这一节的产出是「下次的触发条件」，不是「这次的检讨」。** ⛔ 写不出触发条件的那一条，就别写进来。

### 2. `discoveries.md` —— 异常登记簿

模板见 [`templates/discoveries.md`](templates/discoveries.md)。字段契约见 [`../../docs/module-contracts.md`](../../docs/module-contracts.md) §9。

- ⭐ **登记零门槛**（完整论证见 §6.0「两环唯一的接口」，此处不重复）：一次性的、看起来像噪声的，照登不误
- ⭐ **一条一行，不合并同类**；「累计出现次数」栏记的是**独立事件数**（同一场 / 同一来源里互相印证的多条合并计 1），由你在复盘时统计回填。**这两句不冲突，是两个口径**——见 6.3「登记按行，计数按独立事件」
- ⭐ **原始证据用原话，不概括。** 概括会把「他们说想找做过某类交付的人」压成「方向不匹配」——而前者能指向一个具体的新类目，后者什么也指不出来
- 已升级为分支的条目**不删行**，改状态

### 3. `branches.md` —— 探路分支

模板见 [`templates/branches.md`](templates/branches.md)。字段契约见 [`../../docs/module-contracts.md`](../../docs/module-contracts.md) §10。

- **证伪判据与截止日期是必填**，不是可选
- 关闭的分支**不删行**，写关闭依据
- ⚠️ 这是全仓唯一一条「发散环 → 执行层」的耦合：定级模块对探路分支下的岗位走**一套更宽的阈值**，否则新方向的岗位永远过不了为老方向标定的门槛，发散环等于白开

### 4. 对 `positioning.md` 与材料讲法的修订建议

**只给建议，不直接改。** 定位文件里的「必要条件」和「硬性排除条件」两栏**必须用户本人写**——agent 推断出的定位会让下游所有结论建立在一个用户没同意过的前提上，而且很难被发现，因为它写得很像用户自己会说的话。

---

## 6.6 方法论血统

**这四条不是本模块发明的，是直接引用。** 每条对应一个具体机制：

| 出处 | 它说什么 | 在这里具体对应哪个机制 |
|---|---|---|
| **《Why Greatness Cannot Be Planned》** —— novelty search / stepping stones | 目标越明确，越容易到不了它——因为「离目标更近」这个筛选标准会砍掉所有通往它的踏脚石 | ⭐ **发散环存在的理由本身**，以及「登记不设门槛」这一条。收敛环就是那个「离目标更近」的筛选器；如果只有它，所有踏脚石都会被当噪声滤掉 |
| **《Traction》** —— bullseye 外环并行小样本测试 | 你以为最好的渠道通常不是最好的；正确做法是对外环渠道做**小样本并行测试**，而不是先想清楚 | **配额制**（6.3 纪律 1）：主线保守 + 一小部分高方差，以及「渠道对比最小样本」这一条 |
| **《Obviously Awesome》** —— market frame 重选 | 同一个产品换一个参照系，就从「功能缺一块」变成「品类里最好的」——**改的是参照系，不是产品** | **N2 错配信号 → 决策 ②「重选参照系」**。同一段经历在另一个类目里是优势而不是缺口。⭐ **这是为什么 N2 属于发散环而不是收敛环** |
| **《Antifragile》** —— barbell / 有限下行 | 大部分资源放在极保守的一侧，一小部分放在下行有限、上行不封顶的一侧 | **三条防失控纪律的整体形状**：配额上限管住下行，证伪判据 + 截止期保证「小成本试错」是真的小成本，而不是一个慢慢变大的坑 |

⛔ **不要在这里重新发明一套理论。** 这四条已经足够解释本模块的每一条纪律，再加只会稀释。

---

## 来源标注

⭐ **报告里的每一条结论、每一个取值，都要标成下面三种之一。**

| 标注 | 意思 | 能不能支撑一个决策 |
|---|---|---|
| `你给的` | 用户直接告诉你的，或来自台账 / 面试复盘里的**原话** | ✅ |
| `公开可查` | 你现场查到的（岗位语料里的公开文本、公开的岗位要求），**必须附来源与查询日期** | ✅ |
| `我推测的` | 你按常识、按行业惯例、按「一般来说」补的——**包括你对拒绝原因的推断** | ⛔ **不能。** 只能进「要证实它，你该问谁 / 查什么」 |

**`我推测的` 的每一条，必须附一句「要证实它，你该问谁 / 查什么」**，写成一个能直接问出口的问题。

> **为什么这条必须硬**：这类分析最典型的失败模式，是把「对方为什么拒绝我」这件**你根本不知道的事**，补成一个听起来很合理的原因，然后基于它改定位。
> ⚠️ **「对方没说理由」和「对方的理由是我猜的那个」之间的差距，正是这整个模块的全部价值所在。** 一旦允许推测项支撑决策，报告就退化成一份读起来很顺、但每一条都可能是编的东西。

---

## 不对劲的时候

| 症状 | 最可能的原因 | 你下一句该说什么 |
|---|---|---|
| ⭐ **每轮都给出一堆改进建议** | 没有样本门槛，或门槛设得太低。**一个对任何数据都能给出改进建议的框架，和一个坏掉的框架无法区分** | 「先告诉我这一轮一共投了多少条、其中多少条有回应、多少条带明确理由。**样本不够就该输出「本轮不改」**，把差多远也写出来。」 |
| ⭐ **发散环栏目全是空的** | 多半是量级不够，**不是没有信号**。N1 / N2 / N6 需要更大的样本才看得出来 | 「这几类信号需要更大的样本才看得出来。**先只看反向吸引和溢出这两类**，其余的逐行写明「本轮不可判 + 差多少 + 这不代表不存在」。」 |
| **它把「不太合适」这类回应解读成了具体原因** | 模糊拒绝型被当成了明确理由型 | 「把回应按明确理由 / 模糊 / 强正向 / 无回应重新分四层，**模糊拒绝型只计入总量，不许拿来解释任何事**。」 |
| **它建议改定位，但依据只有一两次拒绝** | 收敛环的决策 ② 被单次事件触发；或者它把主观评价当成了客观条件 | 「② 只在**连续多家因同一个客观不可变条件被拒**时才成立。这几条是客观条件还是主观评价？逐条标出来，主观的**永不升级为规则**。」 |
| **分支开了一堆，或者某条分支已经跑了很久还在** | 配额与截止期没生效，或者当初就没写证伪判据 | 「把 `branches.md` 里每条的**证伪判据和截止日期**列出来。缺任一项的当场补上，补不出来的就关掉——**没有关闭条件的分支是无限期的资源漏洞**。」 |
| **它把一次反向吸引直接变成了新方向** | 登记与开分支这两步被合并了 | 「登记归登记。**开分支要过它自己的门槛，而且我得写得出证伪判据。** 现在只登记进 `discoveries.md`，别动定位。」 |
| ⭐ **三条反向吸引全是同一个中间人推来的，却被当成"形态"** | N3 数的是**条数**而不是**独立来源数**——伪扩散换了个场景 | 「这三条各自来自谁？**同一个中间人 / 同一家公司来的合并计 1 个来源。** 合并之后还剩几个独立来源？不足 3 个就写「形态本轮不可判」，⭐ **但照样登记**，并注明「来源不独立」。」 |
| ⭐ **一场面试的 4 条溢出被数成了 4 次，正好够开分支** | 计数用了**登记行数**，而不是**独立事件数** | 「登记按行没错（4 行都留着）。但**计数按独立事件合并**：这 4 条是不是同一场里互相印证的同一件事？是 → **计 1 次**。指向完全不同方向的才分开计。⛔ 一次观察不能凑出门槛。」 |
| ⭐ **报告里一堆「不可判」，用户照做又攒了三个月，空栏一格没变** | 「量不够」和「字段没记」被压成了同一种空栏 —— 而后者**再攒也不会有** | 「把每一条不可判标成两种之一：`⚠️ 量不够 · 差 X` 还是 `⛔ 字段没记 · 永久`。**字段没记的那几条写清三件事**：永久不可判 / 从现在开始记什么 / ⛔ 过去那部分别回头补。」 |
| ⭐ **某个信号写着「本轮不可判」，同一份报告里它又够了开分支门槛** | 两条门槛给出相反答案，谁优先没写 | 「**最小可见量级优先。** 可见量级不过 → 开分支门槛本轮不评估，把这句话写出来。⛔ 不许拿"次数够了"越过它 —— 登记零门槛，次数在量级不足时本来就能被噪声凑出来。」 |
| ⭐ **整轮样本不达标走了 ⑤，可某一条明明已经过了自己的门槛，也被一起压掉了** | 只写了「逐条过门槛才触发」，没写「整轮不达标时已过门槛的那条怎么办」 | 「那一条**照样输出**，带标注「本轮整体样本不足，这条是单点触发，谨慎采纳」。⛔ 例外是决策 ②（改定位 / 加硬性排除）与 ④（改定级阈值）—— 代价不可逆，整轮不达标时并入 ⑤，**但要把"它已过门槛"这句话写出来**。」 |
| ⭐ **「已读不回」「简历未通过」被临场归进了某一层，样本刚好因此达标** | 平台状态在四层里没有归宿，执行者只能临场判一个 | 「平台状态**单列旁栏**，⛔ 不计入 `本轮最小样本` 的「有回应」数 —— 它分不出任何理由档，用它凑够门槛只会得到"体检说够了、收敛环没米下锅"。它唯一的用途是证明**对方看到了**。」 |
| ⭐ **「这条我当时该问没问」被登记进了 `discoveries.md`，然后再也没动过** | 这类信息只有登记簿一个落点，而登记簿只通向「开分支」 | 「把它移到报告的**「下一轮的执行改进项」**一节，写成一个下一轮的动作。⛔ 它不是发散信号，也写不出证伪判据 —— **它是我自己的执行动作，不是外部信号**。」 |

---

## 三级自救阶梯

> **不许一出问题就让人接管。** 先自救两级，第三级才回报人，且回报必须带建议动作。

| 级 | 什么时候到这一级 | 你该做什么 | ⛔ 不该做什么 |
|---|---|---|---|
| **L1 有现成的，直接走** | 本文件里有明确规则命中（样本门槛判定、四层回应分层 **+ 平台状态型旁栏**、N1-N6 归类、五类决策、**两条门槛冲突时谁优先**、**空栏是量不够还是字段没记**、**整轮不达标时已过门槛那条怎么办**、来源标注、输出格式） | 按规则执行，**不问**。已有规则能裁决的，自己裁决 | ⛔ 不为「确认一下」打断用户。「模糊拒绝要不要算进理由分层」「已读不回算不算有回应」这类问题本文件已经写死了，别再问 |
| **L2 没现成的，尽力走通 + ⭐ 沉淀** | 用户的记录是散的（聊天记录转述、回忆、语音转文字）/ 某条回应不知道归哪一层 / 某个信号跨在两类之间 | ① 自己把散记录整理成 `ledger.md`，**不要求用户先填模板** ② 归不了类的信号**默认进 `discoveries.md`**（登记免费，错登记的成本远低于漏登记）。⚠️ **这条兜底有两个明确例外**：⛔ 「该问没问 / 该追没追」不进登记簿，它有自己的出口（报告 §5.2 执行改进项）；⛔ 复盘卡 §4b「对方说了什么值得记的」也不进登记簿、也不归 N4，它回流的是**那家公司的疑点表**（见 6.1 输入二）。**两者都不是归不了类，是有归宿** ③ ⭐ **走通之后写回去**：新的分层判据写进报告的「口径」一节，新的参数标定写进你的参数表，下次直接回 L1 | ⛔ 不把「这次绕过去了」只留在对话里。没沉淀 = 下次还得再试一遍 = 等于没走通。⛔ 不因为归不了类就丢掉一条信号；⛔ 也不因为有兜底就把「该问没问」扫进登记簿 |
| **L3 实在不行，才回报人** | L2 也走不通 / 只有用户本人才有的事实（他愿不愿意试这条新方向、他的容错空间多大、那次跑题他自己是不是真的兴奋）/ 要动 `positioning.md` 的必要条件与硬性排除条件 | 输出 **症状 + 已经试过什么 + 建议你做什么（给可选项）**。例：「有 3 条反向吸引都指向同一类岗位，但你从没投过（症状）。我按 N3 归类并登记了 3 次，够 `开分支登记门槛`（已试）。**建议你做**：要么写一条证伪判据把它开成探路分支，要么明确说不感兴趣、我把它标成已忽略——**两种都行，但别让它一直挂着**。」 | ⛔ 不输出裸错误；⛔ 不说「请提供更多信息」这种没有指向的话；⛔ 不替用户改 `positioning.md` 的必要条件 |

---

## 变更日志

- **v0.1.5**（依据本轮 **T-H2 区分度固件**的修订，来源：`fixtures/06-positioning/` 本轮新增的 7 对双向断言固件；只有下面这一条是被固件真的推翻的判据，其余 6 对首跑即有区分力）：
  - ⭐ **写死「复盘卡 §4b 不是 N4 的采集点」**（§6.1 输入二 + L2 兜底例外各补一处，正文已生效）。**为什么改**：固件 `H2-N4三类归宿.{hit,miss}.md` 两份只差"这三条落在上游复盘卡的哪一栏"。首跑时 hit 正确归 N4，**miss 却也被登记进了 `discoveries.md`**——因为本文件里**没有任何一句话**把 `04-interview` §4b「对方说了什么值得记的」排除在外，而 L2 兜底写着"归不了类的信号默认进 `discoveries.md`"，于是它被兜底扫了进来。⛔ 这与 `04-interview` §7.3 明写的「**回流疑点表，不是方向优化的发散侧**」直接冲突。
  - ⚠️ **性质是跨文件缺口，不是本模块判错**：上游把归宿写清楚了，下游没有对应的一句"我不收它"。**代价是双向的**：登记簿被一批本该回流疑点表的公司事实稀释，而那家公司的疑点表一条都没更新——对方主动给的那件事等于没给。
  - 仅改判据表述与兜底例外，未动 `discoveries.md` / `branches.md` 契约（§9 / §10 最小字段不变）→ **patch**。

- **v0.1.4**（来自一次**合成回溯测试**：8 个案例，框架在**不看真值**的情况下跑完，只看它自己产出的报告里哪些格填不出来 / 填得自相矛盾）：
  - ⭐ **P0 · 空栏拆成两种：「量不够」与「字段没记」**（3 个案例复现）。原文只有「差多少」一栏，于是**两种性质完全相反的空栏被压成了同一个样子**：前者再攒攒就有，后者**攒到天荒地老也不会有**。新增 6.3「空栏必须分成两种」：五个属于后者的字段（渠道 / 用的是哪一版材料 / 级别 / 这条岗位是怎么进来的 / JD 里有没有写学历门槛）+ 一条判据（**这个字段是不是只能在当下记**）+ **必须输出的三件事**（永久不可判 / 从现在开始记什么 / ⛔ 过去别回头补）。⛔ 明写：**「再攒攒」这句安慰对第二类是错的建议。** 报告模板同步拆栏 + 新增「字段体检」表。
  - ⭐ **P0 · 两条门槛冲突写死优先级**（case-05）：某信号「最小可见量级」说不可判、「开分支门槛」说够了。**最小可见量级优先** —— 前者管"这类信号现在看不看得出来"，后者管"看出来之后要不要行动"，**前者不过，后者根本不该被评估**。
  - ⭐ **P0 · 补上「门槛是逐条的」的反方向**（case-05）：整轮样本体检不达标走 ⑤ 时，**已单独过了门槛的那一条仍然输出**，带标注「本轮整体样本不足，这条是单点触发，谨慎采纳」。理由：那条门槛的分母不是本轮投递总数，**一起压掉等于让样本量惩罚一条本来有证据的结论**，而且压掉之后它不会在下一轮自动重现。⛔ 例外：决策 ②（永久砍搜索面）与 ④（让上一轮数据不可比）代价不可逆，整轮不达标时并入 ⑤，**但必须把"它已过门槛"写出来**。
  - **P1 · 平台状态型（「已读不回」「简历未通过」）在四层分层里有归宿了**：⛔ 不是第五层 —— 四层分的是"对方的话里有多少可判定信息"，而平台状态**里没有对方的话**，所以它是**并排的旁栏**。⭐ **单列计数，不计入 `本轮最小样本` 的「有回应」数**（它分不出任何理由档，用它凑门槛会得到"体检说够了、收敛环没米下锅"）。唯一用途：**证伪"无回应多半是没被看到"**。原文把这个决定性分叉留给了临场判断。
  - **P1 · 「该问没问 / 该追没追」有了自己的出口**：它不是发散信号，⛔ **不进 `discoveries.md`**（登记簿只通向"开分支"，它进去就出不来），落在报告 §5.2「下一轮的执行改进项」。同时在 L2 兜底规则上开了这一个明确例外。
  - **P1 · 补「不能联网时退化成什么」**（口径与 `03-company-analysis` 一致）：主链路不依赖联网；变的是 `公开可查` 整档不可用 / 报告顶部写一行 / **来源独立性核对退化成保守口径（判不出就合并计 1）** / 决策 ② 的旁证拿不到。
  - **P1 · 周期复盘加「回溯提示」**（case-05：用户三个月前本该跑 offer 模块，两个机会已经过期，框架没有任何机制指出这一点）：扫台账找"当时该做而没做"的动作。⭐ **目的不是让用户后悔** —— 措辞一律落在「下次这类事发生时提醒我」上。
  - 未动 `discoveries.md` / `branches.md` 契约（§9 / §10 最小字段不变）→ **patch**。

- **v0.1.3**（来自一次**跨文件一致性审计**：只看同一件事在不同文件里说得一不一致）：
  - ⭐ **`discoveries.md` / `branches.md` 的模板本体收敛到本模块**，`00-workspace/templates/` 下的两份副本删除、改为索引。两份副本**已沿相反方向漂移**（那边"合并会让「累计出现」失真"暗示累计 = 行数，这边"登记按行、计数按独立事件"），而 `00-workspace` 是仓库自己指定的入口 —— **照入口建工作区的人拿到的正好是被本模块推翻的那一版**。副本里的「每个字段为什么要它」表已搬进本模块两个模板；多出的 `触发它的登记` / `学到了什么` 两字段无下游消费者，删除（追溯指针只存在 `discoveries.md` 的「是否已升级为分支」一侧）。**契约 §9 / §10 未动。**
  - ⭐ **`N` 前缀警告改指真正的碰撞**：不是 `D`，是 `N` —— 必要条件 `N1`-`N3`（定级 / offer / 面试一页纸）与发散信号 `N1`-`N6` 同号不同义。要求报告里一律写全称。
  - ⭐ **N3 门槛等级 `默认建议值` → `纯占位待校准`**：它用的 3 就是 `N1独立来源门槛`（`纯占位待校准`，注释写着"这个 3 是编的"）。**最被依赖的门槛不能标得比它的来源硬。**
  - **两处降级补上具体动作**（缺面试复盘 / 缺 `positioning.md`），口径与 `04-interview` 缺上游时一致。
  - **发散环决策 ⑤ 补模板句**（与收敛环 ⑤ 同构）；「登记零门槛」的完整论证收成 §6.0 一处 + 两处索引；一处自我版本引用 `v0.1.1` 改成"本模块目前"。
  - 未动契约 → **patch**。

- **v0.1.2**（来自一次**端到端实跑测试**：测试者在空白工作区里只拿仓库文件跑完主链路）：
  - ⭐ **N4 从 1 类扩成 3 类**，与上游复盘卡的溢出栏对齐（① 你讲得比对方还兴奋的话题 ② 对方无意透露的行业信息 ③ 可复用的线索）。原文 N4 只定义了第 1 类，**「行业信息」与「可复用线索」在 N1-N6 里无归宿**——而决策 ④（升级为非求职产出）举的例子恰恰是"一份行业情报"。
  - ⭐ **写死「登记按行，计数按独立事件」** —— `discoveries.md` 要求"一条一行不合并"，而开分支门槛是"累计 ≥ 3 次"，一场面试产出 4 条互相印证的溢出时**登记 4 行、计数算几次**原文没写。现在：登记按行（零门槛、不合并），计数按独立事件合并（同一场 / 同一来源里互相印证的多条计 1 次）。理由与 N1 的来源独立性同源：**数的是独立的观察，不是条数。**
  - ⭐ **新增 `N4开分支门槛`**（2 次独立事件且跨 ≥ 2 场，`纯占位待校准`）。原文 N4 的最小可见量级是"1 场"，而通用开分支门槛是"累计 ≥ 3 次"，**只面过 2 场的人在结构上永远开不了这条线**；SKILL 说"可以对不同信号设不同门槛"却没给 N4 默认值。同时明说：**即便如此，这条线通常也要 3-5 场面试才真开得起来——在此之前停在登记态是正常的，不是你没做对。**
  - ⭐ **来源独立性口径补到 N3**。v0.1.1 只给了 N1 / N6，但**同一个中间人来两次，在 N3 上是一模一样的伪扩散**；而 N3 是新用户第一周唯一看得出的两类信号之一——**在最容易被看到的信号上没有这个口径，风险比 N1 更大**。
  - **「开跑前」的最小可接受形态补一行「你会拿到 X，但拿不到 Y」**：10-20 条够跑完一轮拿到一份诚实的报告，⛔ **不够产出收敛环的任何一条实质决策**（`本轮最小样本` 是 ≥ 20 条投递且 ≥ 8 条有回应）。
  - 仅改判据表述与参数表，未动模块结构与 `discoveries.md` / `branches.md` 契约 → **patch**。

- **v0.1.1**：⭐ 给 N1 / N6 补上**来源独立性**口径 —— 计入扩散的是**互相独立的来源数**，同一来源来的多条合并计 1；新增 §6.3 小节「什么叫扩散」与参数 `N1独立来源门槛`。原文里"扩散到多城多类公司"只写在**定义栏**，没有任何可执行的计数口径，可执行的那部分（最小可见量级）只数条数与批次，于是**真扩散与伪扩散得到完全相同的判定**。来源：`fixtures/06-positioning/H2-伪扩散-来源独立性.{hit,miss}.md`（T-H 首跑 hit / miss **同时触发**，该规则无区分力）。
- **v0.1.0**（首发）：确立双环结构与「为什么不能合并」这条设计判断；三条输入（补上数据量最大的投递漏斗信号，含四层回应分层）；收敛环五类决策，第 ⑤ 类「什么都不改」定为必须显式输出的默认出口；发散环 N1-N6 六类信号，每类标注**最小可见量级**并要求量不够时显式输出「看不出来不等于不存在」；三条防失控纪律（配额 / 证伪判据 + 截止期 / 成本上限）；全部阈值参数化 + 三档来源等级；补齐三段式区块与三级自救阶梯。

