Skip to content
Back to skills

05 Offer

ASecurity

> **把本文件整份交给你的 agent 即可。** 不依赖任何特定 agent 产品,不需要注册斜杠命令、不需要放进特定目录、不需要装任何东西——`SKILL.md` 只是一个文件名约定,不是某一家的格式。把这份文件粘给它,说一句「按这个帮我排一下手上的 offer」就能开始。 **这份文件是写给 agent 的执行剧本。** 你(使用者)只需要读「开跑前」「一、最小路径」和「不对劲的时候」三节——其余章节(写死的五条纪律、可选维度池、完整输出格式等)是 agent 执行时要查的细则,你不需要现在通读。 > ⭐ **如果你是人,而且想自己想清楚而不是要一个排序** —— 去读 [`透镜库.md`](透镜库.md)(八个角度,纸上就能做完)。⛔ 那份不出结论,本份才出。 > 下面是标题原文,找的时候直接 Ctrl+F / Cmd+F 搜标题文字即可跳转。 | 小节 | 在讲什么 | 你(人类)现在要读吗 | |---|---|---| | 开跑前 | 要什么输入、缺了怎么退化 | ✅ 读 | | 一、最小路径(四步跑完…) | 四步跑完拿到一版排序 | ✅ 读——这是本文件的主体...

  • 76 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
ai-agentsgit

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 27, 2026

npx -y skills add gilgameshcc/ai-native-jobhunt --skill 05-offer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 05 Offer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 05 Offer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gilgameshcc-05-offer/badge)](https://www.skillsdirectory.com/skills/gilgameshcc-05-offer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# SKILL · Offer 排序与翻转点

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

**这份文件是写给 agent 的执行剧本。** 你(使用者)只需要读「开跑前」「一、最小路径」和「不对劲的时候」三节——其余章节(写死的五条纪律、可选维度池、完整输出格式等)是 agent 执行时要查的细则,你不需要现在通读。

> ⭐ **如果你是人,而且想自己想清楚而不是要一个排序** —— 去读 [`透镜库.md`](透镜库.md)(八个角度,纸上就能做完)。⛔ 那份不出结论,本份才出。

### 全文索引(九个顶级小节,一时找不到内容时先看这里)

> 下面是标题原文,找的时候直接 Ctrl+F / Cmd+F 搜标题文字即可跳转。

| 小节 | 在讲什么 | 你(人类)现在要读吗 |
|---|---|---|
| 开跑前 | 要什么输入、缺了怎么退化 | ✅ 读 |
| 一、最小路径(四步跑完…) | 四步跑完拿到一版排序 | ✅ 读——这是本文件的主体 |
| 二、写死的五条纪律(agent 不许改) | agent 不许碰的判断规则 | ⛔ agent 查,人不用通读 |
| 三、交给现场检索的部分(websearch) | 哪些数据要联网查 | ⛔ agent 查 |
| 四、可选维度池(不是必填清单) | 除四维外还能加什么维度 | ⛔ 深潜才需要 |
| 五、输出格式(六件事,缺一不可) | 最终产出物的完整规格 | ⛔ agent 查,产出物本身已经是「一页纸」呈现,你看那份就够 |
| 来源标注 | 三套标签体系的完整定义 | ⛔ agent 查(精简版已提前放在「开跑前」末尾) |
| 不对劲的时候 | 跑歪了怎么排查 | ✅ 出问题时读 |
| 三级自救阶梯 | agent 卡住时怎么自己找路 | ⛔ agent 查 |

---

## 交付约定:易用性与完成度优先

Agent 负责整理并完成本次可做部分,交付可直接人工 review 的成品,不止给建议或空表。先读用户工作区的 `policies/`;用户可配置的执行偏好和参数集中在这里维护,已有求职条件仍以 `positioning.md` 为准。明确要求的调整直接写回并在 `policies/changes.md` 记录旧值、新值、理由与影响;Agent 建议标待确认。

用户已指定路径就直接创建本次所需目录;未指定时一次询问存放位置,同时继续整理材料。不得要求用户先手工建文件夹,不得把个人材料写进公开仓库。具体岗位建立或复用 `applications/日期-公司-岗位/README.md`,索引实际成品,初始化只补缺失文件;原始材料和历史审阅保留,策略、申请索引及衍生产物可按本次授权更新并记录变更。结束前写 `reviews/日期-任务.md`:成品路径、结论依据、采用策略、待确认项及影响、实际检查和下一步;重新读取文件核对后给可点击路径。缺材料时先完成不依赖它的部分并标部分完成;无文件写入能力须明确未落盘。可审阅不等于获准发送,外部动作仍按既有授权和模块边界。

交付前交叉核对报告、申请索引、台账和审阅卡:结论与下一步必须一致,已判不投的岗位只说明排除依据及证据或本人条件改变后可重评,不沿用继续推进的话术。内容重排后修正上下文指代;检查数量只填写工具实际统计值,未统计就列检查对象,不手写估数。发现历史审阅错误时另写勘误,保留原记录。

完整规则与模板见 [本地交付约定](../../docs/delivery.md);只拿到本 SKILL 时按以上约定建立最小 Markdown 文件即可,不要求先跑其它模块。

## 开跑前

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

| 输入 | 必需? | 缺了会退化成什么 |
|---|---|---|
| 每个 offer 的**薪资结构**(固定与浮动怎么拆、几薪、有没有期权,**不需要具体金额**,相对量就够) | ✅ 必需 | 缺这个不能跑。但它可以是相对的:「B 的固定部分比 A 高一点、浮动比 A 少一半」就足够 |
| 每个 offer 的**通勤时间**(单程,门到门) | ✅ 必需 | 缺这个不能算真实时薪——而真实时薪是最小路径唯一要算的东西 |
| 你的**必要条件**(不满足就不去,写 2-3 条) | ⚠️ 强烈建议 | 没有就没有 gate。agent 会先要你写,写不出来说明你还没决定在找什么 |
| 每周典型工作时长 / 加班常态 / 有没有值班待命 | 可选 | 缺了按「与你现在相当」计入,并标 `我推测的`,且列进翻转点。⚠️ **「你现在」本身也缺时**(刚毕业 / 空窗 / 现职体感说不清),退到 `周工时默认` = 每周约四十五小时,标 `纯占位待校准`,并**必须**列进翻转点做三点采样 |
| 面试复盘(`interviews/<company>-<date>.md`) | 可选 | 「发展空间」这一维只能标 `我推测的`,因而**不参与排序**,只列进「要证实它你该问谁」 |
| 面试前评估(`assessments/<company>.md`) | 可选 | 「下行风险」退化成公开渠道现查 + 答复前必问项 |
| 你现在这份工作的同样几项 | ⚠️ 强烈建议 | 缺了「留在原地」这一列会变成空的——**而没有它就没有机会成本,也就没有翻转点** |
| ⭐ **上游文件在工作区的哪个位置**(`positioning.md` / `assessments/` / `interviews/` 分别在哪个目录;没有就明说没有) | ⚠️ 强烈建议 | ⛔ **不问这一条,最典型的后果是第 1 步从零重问必要条件**,而 `positioning.md` 里已经写着了——**一条真·事前条件被当场重问一遍,时点就变成今天,被降级成 `事后重构`**。见第 1 步 |
| ⭐ **你这台机器能不能联网检索** | ⚠️ 强烈建议 | **不能联网时「三、交给现场检索的部分」整节不可用**(租金水平 / 通勤时长 / 社保政策 / 业务线存活史全部拿不到)→ 这些格一律标 `我推测的` 并按单元格退出排序,**整批升级为「答复前必问项」**,并在「口径与假设」写一行「本次无联网检索」。⛔ 不许假装查过 |
| ⭐ **答复截止日**(对方要你几号之前给答复) | ✅ 必需 | ⛔ **拿不到就明写「截止日未知」,不许默认成「还有时间」。** 它是**多处判据的输入**:「要不要为还在流程中的那家拖延答复」的第 1 条判据要拿它当比较对象(没有它 → 那一条记 `判不出来`);「必问项问不到而答复截止已到」整节要靠它才触发(没有它 → **「来不及问」这件事在文件里彻底不可见**)。⚠️ 它以前不在这张表里,于是两处判据都在引用一个从来没被要过的输入。⭐ **它有三档,⛔ 不是两档**:`已知(_月_日)` / `未知` / ⭐ **`结构上不存在`** —— 见下面那一小节 |
| ⭐ **这些材料是什么时候写的 / 这些事发生在什么时候** | ✅ 必需 | ⛔ **只标检索日期不算。** 缺了「材料日期」,「**当时可不可知**」和「**现在是否属实**」会被混成一件事 —— 实跑里三个案例都撞上这个,其中一个直接踩雷:**最关键的那条公开信息公示于当事人的决策时点之后**。见下面「材料日期 vs 检索日期」 |
| ⭐ **你的决策时点是哪一天**(⭐ **三种,⛔ 不是两种**:**A · 正在做决定** = 今天 / **B · 回溯 · 复盘** = 当时那一天、那件事已经结束 / ⭐ **C · 决策在过去做出、但至今仍在继续** = 当初那一天,而那个决定今天还在过着、今天仍然动得了) | ✅ 必需 | ⚠️ **本模块默认时点是「正在做决定」,但它不是唯一形态。** 不问出来并写进「口径与假设」,「公示晚于决策时点的信息不能用来评价当时的判断」这条纪律就**没有判据可用**。⭐ **它同时是一页纸第 ③ 块选哪种措辞的判据**(A → 「这几天该做什么」;B → 「这一次已经定了的,和下一次要提前做的」;⭐ C → 「当初定的那件事,和今天还能动的那部分」)—— 见输出格式第 1 件 |
| ⭐ **你本人在不在场**(能不能随时回答追问) | ✅ 必需 | 不在场(只有一份材料、没人可问)→ 走「⭐ 用户不在场」那一支:gate 的必要条件**从材料里认定**,整张 gate 表标 `未经确认`。⛔ **不许因为"没人可问"就跳过 gate** —— 那会退回 `无 gate` 恒触发的死循环 |

### ⛔⭐ 答复截止日的第三档:`结构上不存在`(⛔ 旧版只有"已知"和"未知"两档)

⚠️ **旧版把"没有截止日"整个塞进了 `未知`,⛔ 而两者完全不是一件事**:`未知` 说的是「**有一个截止日,我还没问到**」;⭐ **`结构上不存在` 说的是「根本没有一个在等你答复的对方」** —— 典型是「你想好了随时说」,或者本次决策的形态就是「还要不要待下去」(**零个 offer + 有在职工作**那一支)。

- ⭐ **判据字面**:**有没有一个具体的对方,在等你在某一天之前给一个答复?** ⛔ **没有 → `结构上不存在`**;有、只是没问到 → `未知`
- ⭐ **⛔ 它不是"缺输入",它本身就是病灶** —— **没有截止日,决策会被无限推迟;而推迟不是"还没决定",⭐ 推迟就是选了默认选项**(多数情况下是「留在原地」)。⚠️ **默认选项会替你做决定,而且做完不会通知你。**
- ⭐ **处理写死:自己设一个。** 写进「口径与假设」的答复截止那一格,并注明 **`这是你自己设的,不是对方给的`**
- ⭐ **并照着说一句(⛔ 不许省)**:**「这件事没有人在等你答复,所以不会有任何时刻逼你决定 —— 也就是说,你不定,就是定了『不动』。我把 ×× 定成本次的截止日,⛔ 这不是对方给的。」**
- ⭐ **下游照常用它**:以答复截止日为输入的那几处判据(`未成 offer` 的判据 1 · 「必问项问不到而答复截止已到」),⭐ **拿你自己设的这个日期当比较对象**,⛔ 不再记 `判不出来`
- ⛔ **不许拿它去解除任何标记** —— 自己设的截止日到了,同样 ⛔ **不是解除四种标记的理由**(同「答复截止到了不算解除理由」)

### ⭐ 最小可接受形态

> **三组数据:两个 offer + 你现在这份工作,每组只要「薪资结构 + 通勤时间」,就可以起步。**

⚠️ **是三组,不是两组。** 「留在原地」是写死的第 0 列(见第 0 件事),它缺了就没有机会成本、没有指数基准、也就没有翻转点——所以**第一次问用户要数据时就要一次问三组**,不要问完两个 offer 才想起来还有第三列。

**万一「留在原地」这一组真的拿不到**(比如用户目前没有在职工作):把指数基准换成**两个 offer 里薪资结构更简单的那一列** = 100,并在「口径与假设」一节**显式声明**:*本次无「留在原地」列,因此无法计算机会成本,排序只在给定的 offer 之间成立*。⛔ 不许静默地把它当成不存在。

其余的 agent 自己现查、自己整理、自己标来源;实在拿不到的,写成「答复前你要问清的三条」,不猜。

### ⚠️ 另外三种常见形态(⛔ 都不许静默跳过)

#### ① 只有一个 offer,且当前没有在职工作 —— 连基准列都没有

- ⭐ **基准列 = 那个 offer 自己 = 100**,并在「口径与假设」明写:**本次指数不承载任何比较含义,只是一个记账口径**
- ⛔ **机会成本算不出来,就说算不出来。** ⛔ 不许拿"市场上一般的岗位""上一份已经结束的工作"或任何想象中的基准去补 —— 那是编的
- ⭐ **但本模块不因此失效,只是结论形态变了**:只剩一列时,⭐ **gate 才是全部价值所在** —— 它问的不是"哪个更好",而是「**这个到底过不过得了你自己写下的线**」,一个**二值判定**
  - gate 照跑,四种标记(`gate 未通过` / `有条件满足(待闭合)` / `gate 待定` / `无 gate`)照带
  - 真实时薪照算,但它只用来**和你自己写下的底线比**,⛔ 不与任何虚构基准比
  - 翻转点照写;「第 1 名最弱的一维」改写成「**这个 offer 最弱的一维**」,⭐ 五种合格答案照旧(含「本次没有第 1 名」与「你在乎的那几维上没有短板」两种)
- ⭐ **结论形态写死**:从"排序"改成 **接 / 不接 / 先补一条信息再定**,并照着说一句:**「本次没有可比对象,所以这不是一个排序结论,是一个 gate 结论。」**

#### ② 手上一个 offer,另一家还在流程中 —— ⭐ 这很可能是最常见的形态之一

⚠️ 「还在面、尚未成为 offer 的机会」旧版**完全没覆盖**:它进不进表?以什么身份进?写死如下。

- ⭐ **它进表,但不参与排序**:单独一列,带 **`未成 offer`** 标记
  - **为什么必须进表**:⭐ **「等不等它」本身就是今晚要决策的事。** 把它留在表外,用户拿到的排序会假装这个选择不存在
  - **为什么不参与排序**:它没有任何可落纸的条款,取值最多到 `我推测的`。⛔ **不许给它名次,哪怕是最后一名** —— 那等于给一个还不存在的东西发名次
- **那一列填什么**:只填**已经发生的事实**(走到第几轮、对方说的下一步时间、岗位描述里写了什么),逐格标来源。⛔ 不许按"如果拿到,条件大概会是什么样"去填
- ⭐ **「要不要为它拖延答复」的判据 —— ⛔ 每条有三种取值,不是两种**:⭐ **`成立` / `不成立` / `判不出来`**
  1. **时间上够得着** —— 对方给得出的下一步时间点,够得上你手上这个 offer 的答复截止。⭐ **这一条要问出来,⛔ 不许推测**:「你们大概什么时候能给结果?」是一句可以直接问出口的话
     - ⭐ **没有提问对象时**(离线 / 材料型输入 / 手上根本没有对方的联系人)→ ⛔ **不许推测,也 ⛔ 不许因此判 `不成立`** → 记 **`判不出来`**
     - ⚠️ **判据 1 还依赖「答复截止日」当比较对象**(见「开跑前」输入表)—— **截止日未知时同样记 `判不出来`**,⛔ 不许默认成"还有时间"
  2. **它有可能改变决定** —— ⭐ 判法写死:**把它假想成"已经拿到、且条件与你手上第 1 名相当",看决定会不会变**。⛔ 连"条件相当"都改变不了决定的(典型:它在某条必要条件上已经明确不满足),不值得为它拖
     - ⭐ **手上没有第 1 名时,锚点写死怎么换**(⚠️ 这一条旧版预设"存在第 1 名",而四种标记随时会让**一列都排不了第一**):**四种标记导致没有一列能合法排第一 → 锚点换成「排在最前面的那一列」**;**手上只有一个 offer → 锚点就是它**;⛔ **手上一个 offer 都没有 → 记 `判不出来`**(没有任何可比对象,这一条问不出答案)
  3. **拖延的代价可承受** —— 把"延一天要付什么"写下来(要不要回去谈、影不影响入职时间)。⭐ 「再要一天」多数公司给得起,而**要不要得到本身就是一个信号**(与「必问项问不到而答复截止已到」同一条)
  - ⭐ **三种收场写死(⛔ 旧版只有前两种)**:
    - **三条全 `成立`** → `等`
    - ⭐ **任一条 `不成立`** → `不等`(⛔ 与旧版一致)
    - ⭐ **一条都不 `不成立`,但有 `判不出来`** → ⭐ 收场是 **`判不出来`**,⛔ **不是 `不等`,也不是 `等`**。写死三个动作:**① 照"没有它"的样子先出一版排序**(⛔ 不停下)· **② 把那条 `判不出来` 的判据写成「答复前必问项」的第 1 条**(判据 1 → 「你们大概什么时候能给结果?」;判据 2 → 「我手上到底有没有一个能拿第一的选项?」先回去解决那个)· **③ 明写代价让用户自己签字**(照「必问项问不到而答复截止已到」那四条)
  - ⛔ **不许把 `判不出来` 当成 `不成立`。** 那等于"我没人可问"直接判它不值得等 —— ⚠️ **而"没人可问"说的是你的处境,不是那家公司的**
  - ⛔ **不接受"万一它更好呢"作为拖延理由** —— 那是一个**没有临界取值**的假设,而本模块对假设的要求就是写出临界取值(见输出格式第 4 件)
  - ⭐ 判 `不等` 或 `判不出来` 时都在表下写一行「**为什么**」,⛔ 不许静默把这一列删掉
- ⭐ **它什么时候升级成正式一列**:**拿到录用通知之后**(口头的按 `你给的(口头说的)` 后缀处理)。那时去掉 `未成 offer` 标记,重跑一次

#### ⛔ 「连流程都没开始」的机会:不进表

⚠️ **`未成 offer` 只覆盖「还在流程中」,⛔ 不覆盖「连流程都没开始」** —— 一个还没投、只是在考虑的方向,旧版没有位置,于是它要么被硬塞成一列,要么整个消失。

- ⭐ **判据是纯字面的:有没有一件已经发生的事**(投了 / 约了 / 面了 / 对方说过下一步时间)。**一件都没有 → ⛔ 不进表**
- **理由**:`未成 offer` 那一列的填表判据本来就是「**只填已经发生的事实**」—— 而这里**一件都填不出**。硬塞进去只会得到一整列 `我推测的`,⛔ 那不是信息,是占位
- ⭐ **它的正确去处是「这几天该做什么」里的一条动作**(例:「今天投 ××,问一句他们的流程要几周」),⛔ 不是表里的一列
- ⛔ **也不许拿它去凑第二列** —— 见下面「零个 offer + 有在职工作」那一支

#### ③ ⭐ 零个 offer,但有在职工作 —— ⛔ 这一形态旧版完全没覆盖

⚠️ **旧版覆盖了"一个 offer 无在职"和"一个 offer 另一家在面",缺的正是这第三种。** 后果很硬:**六件必需产出里有三件失去了对象**(③ 排序结论 · ④ 翻转点 · ⑤ 第 1 名最弱的一维),⛔ **而模板对这三件都写着「不许留空」** —— 于是执行者要么留白违规,要么硬编一个不存在的名次。

- ⭐ **这不是"没得跑",是一次单列体检**:表里只有第 0 列「留在原地」,⭐ **gate 照跑** —— 它问的是「**你现在这份工作,过不过得了你自己写下的线**」,一个**二值判定**(与形态 ① 同构,只是那一列不是 offer)
- ⭐ **指数基准仍是「留在原地」= 100**,并照着写一句:**本次指数不承载任何比较含义,只是一个记账口径**
- ⭐ **三件失去对象的产出,各给一个写死的替代形态**(⛔ 不许留空,⛔ 也不许硬编一个不存在的名次):

| 六件里的 | ⭐ 零个 offer 时写什么 |
|---|---|
| **③ 排序结论 + 每一名与下一名差在哪一维** | ⭐ 改成「留在原地」这一列的 **gate 结论**:**过 / 不过 / 哪一条还没判出来**。⛔ 不出名次(只有一列,没有"下一名"),并照着说一句:**「本次只有一列,所以这不是一个排序结论,是一个 gate 结论。」**(与形态 ① 同一句) |
| **④ 翻转点** | ⭐ 改成「**什么变了,你就该开始看外面**」:每条照旧写全五段,只是最后一段从"排序会怎么翻"改成 —— ⭐ **取到这个值时「留在原地」就不再过 gate**。⛔ **不许因为"没有排序可翻"就写"无翻转点"完事** —— 翻的对象换了,**临界取值照样存在** |
| **⑤ 第 1 名最弱的一维** | ⭐ 改写成「**留在原地最弱的一维**」,三段照写,⭐ 五种合格答案照旧(含「本次没有第 1 名」与「你在乎的那几维上没有短板」两种)(与形态 ① 的改写同构) |

- ⭐ **① 一页纸、② 横向对照表、⑥ 决策分离结论三件不变**,只是表里只有一列;⭐ **一页纸的第一句形状改成**:**「你现在这份工作过得了 / 过不了你自己写下的线,缺的那一件是 ××。」**
- ⛔ **不许把「还在考虑但没投的方向」补进来凑第二列**(见上一小节)—— 那一列填不出任何已经发生的事实

### ⭐ 一致性自查(⛔ 在开始算之前跑一次)

⚠️ **实跑撞到的形态**:材料里一处事件日期**晚于答复截止日** —— 用户自己写岔了、记错了,或者两处来源打架。⛔ **框架里没有任何位置处理"材料自己前后对不上"**,于是执行者只能去借「两套都跑 + 显式声明」那个模式,⚠️ **而那个模式是为「外部事实不确定」设计的,⛔ 不覆盖「材料自我矛盾」**。

⚠️ **这一条与「材料日期 vs 检索日期」是并列的两条纪律,⛔ 不许混成一条**:

| 纪律 | 它管的是 |
|---|---|
| **材料日期 vs 检索日期**(见第三节) | ⭐ **材料与外部世界的关系** —— 这件事公示于什么时候、当时可不可知 |
| ⭐ **一致性自查(本节)** | ⭐ **材料与它自己的关系** —— 同一份材料里两处对不上 |

- ⭐ **检查什么(三项,⛔ 一项都不许省;逐项在「口径与假设」里写「无冲突」或写冲突原文)**:
  1. ⭐ **日期先后**:事件日 vs 答复截止日 vs 材料日 —— 有没有哪一组的先后关系说不通(典型:某件事的日期**晚于答复截止日**,却被当成决策依据)
  2. ⭐ **同一件事在两处的取值是否一致**:同一条条款 / 同一个工时 / 同一条必要条件,在两处写的不是一个值
  3. ⭐ **相对量的基准是不是同一个**:「高一成」「少一半」这类说法,两处是不是拿**同一列**当基准(⛔ 基准不同的两个相对量不可比,同「同一份表里所有列必须用同一种通勤口径」)
- ⛔ **发现冲突时的三条禁止**:⛔ **不许自己挑一个用** · ⛔ **不许静默取平均** · ⛔ **不许因为"看起来是笔误"就替用户改掉**
- ⭐ **用户在场 → 把冲突原样念回去**(⛔ 不许改写成你自己的话):**「你这里写 ××,那里写 ×× —— 哪个对?」** 拿到答复再往下算
- ⭐ **用户不在场时(材料型输入,没人可问)→ 两种读法都跑**:
  - **两种读法指向同一结论** → ⭐ **正常输出**,并附一句:**「这一处你的材料前后对不上(这里写 ××,那里写 ××),但两种读法的结论相同。」**
  - ⭐ **两种读法指向不同结论** → ⭐ **这就是本次最该先解决的事**:写进输出**最前面**(一页纸第一段;人话译法见输出格式第 1 件的译法表),⛔ 不许埋在下面某一节里
  - ⚠️ **它借的不是「两套都跑」那个模式的理由,只是它的形状**:那个模式处理的是**外部事实不确定**(`事后重构` 的必要条件 / 被覆盖的误差带 / 换一种通勤方式),这里处理的是**材料自我矛盾**。⛔ 两者的声明句不许混用
- ⛔ **自查跑没跑过要留痕**:「口径与假设」里那三行**空着 = 没跑过**。⛔ 不许因为"本次没冲突"就把它整块删掉 —— **删掉之后,「跑过且无冲突」和「根本没查」在文件里长得一模一样**(同「①② 的对照表不许整块删掉」)

### ⛔ 四条禁止(这一节是对 agent 说的)

1. **不许报错退出。** 输入缺、格式乱、只有半句话,都不是停下的理由。缺什么就明确说「你至少给我 X」,然后用手上有的先跑一版
2. **不许静默自己编。** 任何你没被告知、也没查到的取值,一律标 `我推测的`,并且**不参与排序**。⛔ 不许把推测混进表里当事实
3. **不许一次只问一个问题挤牙膏。** 需要补的东西一次问完(最多两轮)。先用已有信息出一版带「待确认」的排序,再让用户一次补齐
4. **不许把该你自己做的整理工作推给用户。** 用户散着贴来的 offer 条款、聊天记录截图转述、语音转文字,**你负责整理成表**。⛔ 不许说「请先按模板填好再给我」

### ⭐ 提前预告:本模块有三套独立的标签体系,别混用(完整定义见「来源标注」节)

⚠️ **下一步(第1步·过gate)第一张表就要用到其中一套,所以提前放在这里,不等到全文后段才说。**

| 体系 | 枚举 | 贴在什么上 |
|---|---|---|
| **来源标注** | `你给的` / `公开可查` / `我推测的` | **对照表里的每一格取值**(gate 表也算) |
| **参数来源等级** | `实践校准` / `默认建议值` / `纯占位待校准` | **「口径与假设」里的每个参数** |
| **证据等级** | `合同白纸黑字` / `面试口头` / `公开记录` / `自己估算` / `未验证` | **翻转点里的每条假设** |

三套**互不换算、互不覆盖**——一个取值可以同时挂三套里的各一个标签。这里只给你先认个脸熟,完整判据(比如 `我推测的` 具体怎么处理、`未验证` 什么时候用)见后面「来源标注」节。

---

## 一、最小路径(四步跑完 + 一版带待确认标记的排序)

**先跑完这四步,再考虑要不要往下深潜。**

> ⭐ **最小路径的承诺是一条产出边界,不是一个分钟数。**
>
> > **最小路径 = 四步跑完 + 一版带待确认标记的排序。**
>
> 展开就是:**第 0 列 + 二值 gate(满足 / 不满足)+ 一维真实时薪 + 一句排序 + 六样必需产出(允许带待确认标记)。** 这些跑完就算跑完了。
>
> ⚠️ **上一版承诺"10 分钟",那是错的,本版撤掉。** 撤掉的理由不是"实测更久",而是**文件自己就把它证否了**:上一版给四步各写了分步预算,**相加正好把 10 分钟占满** —— 也就是说它在被写下来的那一刻就已经零余量,任何一处对照被触发都必破。**一个自己算出来就已经占满的分钟数,是在承诺一件文件自己证否的事。** 所以本版**一律不给最小路径写分钟预算**。
>
> ### ⛔ 下面这些一律不在最小路径里,全部划入深潜
>
> | 划入深潜的 | 最小路径里怎么处理(⛔ 不许当场跑,也 ⛔ 不许静默省掉) |
> |---|---|
> | 必要条件是 `事后重构` → 含它 / 不含它两套排序 | 该条标 `事后重构`,该列在这条上标 **`gate 待定`** 挂起到深潜(冷启动场景例外,见第 1 步) |
> | 「有条件满足」这一档与它的闭合性判据 | **最小路径的 gate 只判满足 / 不满足两档。** 判不出这两档的(包括本该判「有条件满足」的),一律标 **`gate 待定`** 挂起 |
> | 换一种通勤方式会改变 gate 判定 → 两种都跑 | 按**更慢的那一种**判(保守缺省,见第 1 步),并标 **`gate 待定`** 挂起 |
> | 三点采样与交互项 | 参数按默认值先算一版,并在「口径与假设」写一行「**本次未做三点采样,这是初版排序**」 |
> | 误差带的**跨维裁决** | 最小路径只有一维,没有"下一维"可换,所以不做跨维裁决。⚠️ **但误差带本身仍必须在「口径与假设」里报出本次取值 + 声明轮次** —— 它是"这一维分不分得出来"的判据,最小路径照样要用 |
>
> ### 为什么选这条修法(把对照移进深潜),而不是"保留对照、承认最小路径不是一件快事"
>
> 两条路都能修掉"承诺与实际不符"。选前者,是因为**后者等于把一批已知会被触发的重活,留在"最快见效的那条路"上** —— 而这条路的用户特征恰恰是「**今晚就得答复、第一次用这个模块**」。**把重活留在那里,实际结果不是他跑完,是他跳过。** 移进深潜之后,这些情形在最小路径里**不是消失,是变成一个可见的 `gate 待定` 标记 + 一句"这一条要往下深潜才能定"** —— 用户知道自己欠了什么,而不是拿到一版看起来已经跑完了的排序。
>
> ⛔ **反过来也成立:进了深潜,触发了就得跑。** 跑不完就明说"这几套对照我没跑,结论的把握程度因此下降",**不要静默省掉**。深潜要花多久取决于你手上有几条待确认的假设 —— **深潜没有时间承诺,也不该有**:给一个"深潜也只要二十分钟"的数字,等于逼着执行者跳过对照。

### 第 0 件事:把「留在原地」加成一列(写死,不许省)

**「留在原地」不是「不做决定」,它是第三个候选项**,和别的 offer 一样有真实时薪、有发展空间、有下行风险。用户不主动提,你也要加上;用户说「我肯定要走」,你仍然加上——**它是机会成本的基准,删掉它整个排序就没有参照系。**

### 第 1 步 · 过 gate

> ⭐ **先看这里,再往下读**:本步骤按"你的情况分支"组织,不要求从头顺序读完——多数小节前面已经标好触发条件(工作区有没有 `positioning.md` / 用户在不在场 / 输入是材料还是当面写下的),**只读命中你实际情况的那几条**。⭐ **唯一被明确划给"深潜"、最小路径可以直接跳过的是本步骤末尾「有条件满足」的闭合性判据**——最小路径只判「满足 / 不满足」两档,遇到疑似"有条件满足"的情况,标 `gate 待定` 挂起即可,不用现在判定。

#### ⭐ 第一个动作不是"让用户写",是"先看工作区有没有 `positioning.md`"

⛔ **不许一上来就从零重问必要条件。** 先看工作区里有没有 `positioning.md`(求职方向定位的产出物):

- **有** → **直接读它**,把里面的条件原样接过来
  - ⭐ **写下时点按那个文件里记的写下日期判**,⛔ **不按"他今天跟你说的时间"判**。**一条用户几周前手写下来的真·事前条件,被你当场重问一遍,时点就变成今天,进而被降级成 `事后重构`** —— 那不是在核验,那是在**当场把一条真事前条件毁掉**
  - ⛔ 文件里没记写下日期时,也不许默认按今天算:按「说不清」处理(→ **按事前算**,见下面的保守缺省)
- **没有** → 才要用户现在写下 **2-3 条必要条件**(不满足就不去)。写不出来就给他这三个提示:*上一份工作最后让你决定离开的是什么?* / *哪一条你答应了自己再也不将就?* / *哪一条如果三年后回头看会觉得当初不该让步?*

#### ⭐ gate 的输入通道有三条,⛔ 不是两条(按顺序试,前一条不成立才试下一条)

⚠️ **这是上一轮 gate 从没跑起来的根因,而它此前被误判成"回溯场景的固有限制"。** 旧版只有两条通道 —— ① `positioning.md`、② 让用户当场写 —— ⭐ **两条都要求"用户在场"**。于是**任何离线 / 转述型 / 材料型输入,最多只能走到 `无 gate`**:⚠️ **它对所有材料型输入给同一个结论,因而与一条坏掉的规则无法区分。** 补第三条:

| # | 通道 | 判据 | 条件的写下时点按什么算 |
|---|---|---|---|
| **通道 1** | **`positioning.md`** | 工作区里有这个文件 | ⭐ **按文件里记的日期**(见上一小节) |
| **通道 2** | **用户当场写下** | 用户在场,且写得出 | 今天 → 冷启动分支(必然 `事后重构`) |
| ⭐ **通道 3** | ⭐ **从用户已有的书面材料里认定** | 见下面的字面词表 | ⭐ **按那份材料的日期**,⛔ 不按今天 |

##### ⭐ 通道 3 的提取判据:**看那句话里有没有排他性措辞,⛔ 不看"你觉得他在意什么"**

⚠️ **判据必须是字面的,⛔ 不能靠 agent 体会。** 用户在自述 / 聊天记录转述 / 已有书面材料里出现下面这类措辞的那一句,**可以提取为候选必要条件**:

> **A · 禁止型**(书面/正式表述里最常见)
> 「我不可能……」· 「这个不行」· 「必须要……」· 「一定要……」· 「没有 ×× 我就不去」· 「再也不……」· 「绝对不……」· 「受不了……」· 「底线是……」
>
> ⭐ **B · 排序型 / 拒绝型口语**(2026-08-31 补 —— **这一组才是人说话时最常见的形态**)
> 「**不是 ××,是 ××**」(把某维**踢出**比较,同时点名真正的那一维)· 「**×× 无所谓,先保 ××**」· 「**×× 我认了,但 ×× 不行**」· 「**××(一旦发生)我就 ××**」(把两件事绑成连锁)· 「**和我现在的处境不是一回事**」(宣告某个参照系不适用)· 「**再多 ×× 也换不了 ××**」· 「**我可以 ××,但前提是 ××**」
>
> ⚠️ **为什么必须补 B 组**:一次回归实测里,材料中**语义上最强的四句排他性表达,一句都没命中 A 组** —— A 组更像**书面誓言**,而真人在语音自述/聊天记录里说的是 B 组这种**排序型口语**。
> ⭐ **后果很具体**:通道 3 零命中 → gate 表全空 → 触发 `无 gate` → 而「上位出口」的前置是"存在一条硬约束",于是**它结构性地够不着,一次都触发不了**。
> ⛔ **两条规则串联,靠前那条太窄,靠后那条就永远是死的。**

⛔ **词表之外的句子不许提取。** 「我比较喜欢 A」「我觉得 B 那边更有意思」这类是**偏好**,它的去处是**加分条件表**,⛔ 不是 gate。

##### ⛔⭐ 自我说服自查(⛔ 通道 3 提取之后、进 gate 表之前跑一次,⛔ 一次都不许省)

⚠️ **这是补 B 组词表带来的副作用,必须一起补掉。** 补 B 组是为了让通道 3 能命中真人口语 —— ⭐ **而真人最常用「不是 A,是 B」「××无所谓先保××」这种句式的时刻,恰恰是在说服自己**。于是提取出来的"底线"**很可能就是他那段自述的结论**。⭐ **等于拿一个人的结论去检验他的结论。** ⚠️ 实跑里有一份材料的最后一句正是「你说我是不是在给自己找理由」—— ⛔ **框架结构性地答不了。**

⭐ **判据必须字面,⛔ 不许靠 agent 体会"他是不是在自我说服"。** 数两样:

**第一样 · 数每条候选条件"照顾"的是哪一列**

- ⭐ 对每一条候选条件,先**逐列判一次「满足 / 不满足」**
- ⭐ **只有一列判满足** → 记它**指向那一列**;**判满足的不止一列,或一列都不满足** → 记 `不指向任何一列`,⛔ 不参与下面的计数
- ⭐ **分别指向不同列** → 正常走,⛔ 不标记
- ⭐ **全部指向同一列** → 进第二样

**第二样 · 那一列是不是他自述里字面倾向的那个**

- ⭐ **判据同样字面**:材料里有没有一句**字面指向那一列**的倾向表达 —— 「我想去 ××」·「我更倾向 ××」·「我基本上定了 ××」·「你说我是不是在给自己找理由」这类
- ⛔ **没有这样一句 → 不标记**(⛔ 不许靠"感觉他倾向那边"补上)
- ⭐ **两样都成立 → 那几条候选条件整组标 `可能是自我说服`**

##### ⛔ 标了 `可能是自我说服` 之后怎么办(⛔ 不是作废,是降级 + 说破)

- ⛔ **不许单独触发上位出口** —— ⚠️ **哪怕用户不在场也不许**(下面那条"用户不在场可以触发上位出口"的例外,⛔ 对标了本标记的条件不适用)
- ⭐ **必须原话回读,并且问一句写死的话**(⛔ 不许改写成你自己的话):
  > **「你说的『××』『××』『××』三条都指向同一个选择。这可能是你真的有这三条底线,也可能是你已经想好了要去哪一家,正在给这个决定找理由。—— 哪一种?」**
- ⭐ **用户回答"是我的底线"** → 标记去掉,按 `待你确认` 的正常路径走(确认了就转正常必要条件)
- ⭐ **用户回答"我是在找理由"** → 这几条**移到加分条件表**,⛔ 不许留在 gate 里;⭐ 并照着说一句:**「那这一次真正要定的不是『去哪一家』,是『你到底想不想去那一家』—— 这件事我算不出来。」**
- ⭐ **用户不在场(没人可问)** → **结论照出**(⛔ 不许因此停下),⭐ **但必须带一句写死的声明,⛔ 不许省**:
  > **「⚠️ 我认定的这几条底线全部指向同一个选项。我没法判断这是你的底线,还是你已经做了决定之后给它找的理由 —— 这一点只有你自己知道。」**
- ⭐ **同时把它写进翻转点**,临界取值就是「**这几条到底是底线,还是找出来的理由**」(二值)

> **为什么这样是对的**:本模块对付"不可验证的用户自述"一贯的解法就是 —— ⭐ **不替他裁决,而是把结论对它的依赖显式暴露出来**(事后重构两套都跑 / 误差带覆盖两套都跑 / 通勤方式两套都跑,都是这个形状)。
> **这里同样**:⛔ **框架答不了"你是不是在给自己找理由",但它可以把这个问题原样递回去,而不是假装自己没看见。**

##### ⭐ 提取出来的必须回读确认,确认前标 `待你确认`

⚠️ **这里有一个真实的两难,⛔ 两头都不能选**:**提取并直接当成必要条件 = agent 替用户立法**;**不提取 = 明明有信息却判「一条都没有」**。⭐ **`待你确认` 就是这两者之间的那一档** —— 它让条件**进表并起作用**(因而不再是 `无 gate`),同时**明写它不是用户亲口立的法**(因而 agent 没有替他立法)。

- ⭐ **候选条件照进 gate 表,那一格标 `待你确认`**,并回读一句:**「你说过『××』—— 我把它当成一条必要条件,对吗?」**
- **用户确认** → 转成正常必要条件,⭐ **写下时点按那份材料的日期判**(与 `positioning.md` 同一条规则)
- **用户否认** → 从 gate 表移走,改进加分条件表。⛔ 不许留在 gate 里
- **用户没回答 / 用户不在场** → ⭐ **保持 `待你确认`**,走下一小节
- ⛔ **`待你确认` 的条件判出「不满足」时,缺省 ⛔ 不许直接判出局** —— 改判 **`gate 待定`**(留在排序里、不能排第一)。⚠️ 理由与「推测在 gate 上不能踢人」同源:**一条用户没确认过的底线,不该由 agent 拿去踢掉一个选项**
  - ⭐ **⛔ 但这条缺省有一个例外,判据是「那一格的取值有多硬」** —— ⚠️ **判「不满足」靠的若是用户本人原话那种硬格,它就可以踢人**(全文见下面两小节)。⭐ **`待你确认` 标的是「这条底线是不是他的」,⛔ 它没有标「这一列在这条上到底成不成立」**
- ⭐ **反方向 ⛔ 没有例外**:`待你确认` 的条件判出「满足」**一律 ⛔ 不发通行证** —— 同样是 `gate 待定`。⭐ **踢掉一个选项,和抬高一个选项,需要的把握不一样**(见下面「方向不对称」)

##### ⛔⭐ 例外:`待你确认` **可以**踢人 —— 判据是「**那一格的取值有多硬**」,⛔ **不是「用户在不在场」**

**先说这条为什么必须有** —— 不加它就会出现这个死循环:

> 上位出口要求「**已确认的**不可闭合必要条件判为不满足」;
> 而通道 3 提取的条件**一律 `待你确认`**、确认前**不能踢人**;
> ⇒ **材料型 / 回溯型输入永远出不了强结论。**

⚠️ **这与本文自己诊断过的那条同型**:**两条规则串联,靠前那条太窄(或太紧),靠后那条就永远是死的**。修了词表让通道 3 能命中,如果这里不放行,**上位出口仍然一次都触发不了**。

⚠️ **这一节上一版的判据挑错了维度:它写的是「用户在不在场」。** 一句话说破:

> ⭐ **拿"他没确认这是他的底线",去挡住"他自己说了这件事不成立" —— 挡错了对象。**

**掰开说** —— ⭐ **一条 gate 判定有两个部分,它们的不确定性完全不同**:

| | 是什么 | 确定吗 |
|---|---|---|
| **条件** | 「我要 ××」 | ⚠️ 是**我从你材料里认定的**,**你没确认过** |
| ⭐ **那一列在这条上的取值** | 「这一列**没有** ××」 | ⭐ **可能非常硬** —— 有时就是**用户本人白纸黑字说的** |

⭐ **`待你确认` 标的是左边那栏。** ⛔ **而旧规则拿它否掉了整行,连右边那个硬事实一起否掉了。**

⚠️ **实跑里的两个形状**(⛔ 不写公司名 / 人名):
- 一个人自己说「我到三十岁手里得有能拿出来给外人看的东西」,而另一列**他自己说**「那边**没有**能拿出来看的东西」—— ⭐ **后半句是他自己说的,不是 agent 猜的**
- 一个人自己说某条路「外面**对不上**」—— ⭐ 同样是**他本人的判断**,不是 agent 的外推

**例外的适用条件(⭐ 四条同时成立,纯字面)**:

1. ⭐ **那一列在这条条件上判「不满足」,其依据是 `你给的` 的硬格**(**用户本人原话**)—— ⛔ 不是 `我推测的`、⛔ 不是外推、⛔ 不是空格
2. ⭐ **那个依据指向的是这一列自身** —— ⛔ 不是「我觉得这个行业不行」这种笼统判断
3. 那条 `待你确认` 的条件来自通道 3,且**原话在材料里逐字可引**;它是**不可闭合**类(没写闭合上限 → 按不可闭合,见前文)
4. ⭐ **它没有被标 `可能是自我说服`**(见上一小节)—— ⚠️ **标了就不许走这条例外**:那几条候选条件全部指向同一列,而那一列正是他自述里倾向的那个,⛔ **拿它去发一张出局判决,等于用他的结论去检验他的结论**

⭐ **⛔「用户在不在场」不再是适用条件。** 用户在场时**同样适用** —— ⭐ 他在场只意味着你**应该顺便问一句**,⛔ **不意味着在他回答之前你什么都不能说**。

##### ⛔⭐ 方向不对称:这个放行**只对"不满足"一个方向有效**(⛔ 别漏,也别当成笔误)

| 判成 | 能不能 |
|---|---|
| ⭐ **不满足** | ✅ **可以踢出去** —— 因为**踢它的那个事实是硬的** |
| **满足** | ⛔ **仍然不发通行证** —— 一个**没被确认过的条件**,凭什么给谁发通行证?那一格照旧 `gate 待定`、不能排第一 |

> ⭐ **踢掉一个选项,和抬高一个选项,需要的把握不一样。**
> ⛔ 前者只要**这一条上它确实不行**;后者要**这条底线确实是你的底线** —— **而后面这件事,只有你能确认。**

**成立时怎么做**:

- ✅ **允许它触发上位出口**,出结论、出名次
- ⭐ **但结论必须带一句写死的声明**,⛔ 不许省:
  > **「这个先后建立在一条我从你自己的话里认定、但你还没确认过的底线上 —— 原话是『××』。如果这条不算你的底线,整个先后可能翻过来。」**
- ⭐ **同时把它写进翻转点**,临界取值就是「**这条底线算不算数**」(二值)
- ⭐ **用户在场时额外加一个动作**:把回读那句话(「你说过『××』—— 我把它当成一条必要条件,对吗?」)写进「这几天该做什么」的第一条 —— ⛔ **但不因此推迟出结论**

> **为什么这样是对的**:本文对付"不可验证的用户自述"一贯的解法就是 —— ⭐ **不替他裁决,而是把结论对它的依赖显式暴露出来**(事后重构两套都跑 / 误差带覆盖两套都跑 / 通勤方式两套都跑,都是这个形状)。
> **这里同样**:不是"替他立法",是「**按你自己说过的话往下走一步,并且告诉你这一步踩在哪句话上**」。
> ⛔ **而"什么都不敢说"并不比它更安全** —— 它只是把不确定性留给了用户,同时不给他任何可动的东西。

##### ⭐ 用户不在场(只有材料,没人可问)—— ⛔ 它和「冷启动」不是同一件事

⚠️ **框架此前把这两件事混为一谈,全文没有一处区分它们,于是只有前者有处理。** 写死区分:

| | 用户在不在场 | 条件从哪来 | 降级路径 |
|---|---|---|---|
| **冷启动** | ⭐ **在场**,只是第一次用,条件是现写的 | 通道 2 | 全部标 `事后重构` → **只跑两套**(含全部 / 一条都不含)→ gate 只起暴露作用 |
| ⭐ **用户不在场** | ⛔ **不在场**(回溯 / 复盘 / 手上只有一份材料) | ⭐ **只能走通道 3** | 候选条件**照提取、照进表**,整张 gate 表带表级标记 **`未经确认`**,并**写在输出最前面** |

- ⛔ **不许因为"用户不在场"就跳过 gate。** 跳过就回到 `无 gate` 恒触发那个死循环 —— ⭐ **补上通道 3 之后,`无 gate` 才可能真的有区分力**(在真的一句排他性措辞都没有的材料上才触发)
- ⭐ **表级标记 `未经确认` 的执行动作**:这句话**必须出现在一页纸的第一段**,人话版照着说 —— **「下面这几条底线,是我从你写下的材料里挑出来的,你还没确认过。如果有一条不是你的意思,顺序可能就变了。」**(⚠️ 这句话里不含任何禁用词,⛔ 不受一页纸禁用词表阻挡)
- ⭐ **`未经确认` 解除的只有 `无 gate` 这一个标记** —— 因为 gate 表不再是空的。⛔ 它**不解除**任何别的限制:各列仍按各自 gate 结果带 `gate 未通过` / `gate 待定`
- ⭐ **解除方式**:用户本人确认(哪怕只确认一条)→ 那一条去掉 `待你确认`,按写下时点正常判定

⚠️ **`positioning.md` 有三类字段,本模块的 gate 只有两类,第三类必须有一个接收位**:

| `positioning.md` 里的 | 在本模块落到哪 |
|---|---|
| **必要条件** | gate 的 N1-N3,走下面全套判定(满足 / 不满足 / 有条件满足) |
| **加分条件** | 加分条件表 —— 不构成出局,**也不构成通行证** |
| ⭐ **硬性排除条件** | **也进 gate,但它的语义是「短路」**:⭐ **命中即出局,⛔ 没有「有条件满足」这一档,⛔ 不许降档、不许用代价换、不许摊销** |

⭐ **硬性排除与必要条件的区别就在这一点**:必要条件里有一部分是**可闭合**的(付得起代价就能消除),而**硬性排除永远不可闭合** —— 它写下来的时候就已经说明"这件事发生了我就不去",不是"这件事发生了我要花多少钱去补"。⛔ 把硬性排除塞进「有条件满足」那条通道,等于把 gate 上最硬的一条变成最软的一条。

#### ⭐ 冷启动场景:第一次用本模块的人,他的必要条件**必然**是"事后重构"

**判据是纯字面的**:工作区里**没有** `positioning.md`、也没有任何更早的书面记录,而 offer 已经在手上 —— 这种情况下那几条必要条件**必然**是刚刚在这次对话里写出来的,也就是**必然是事后重构**。

- ⛔ **不要逐条去问"这条是收到 offer 之前写下的吗"**。答案结构性地已知(一个诚实的用户只会答"不是"),问了只是浪费一轮,还会让他以为自己答错了什么
- ⛔ **更不要把 2-3 条各跑一套"含它 / 不含它"** —— 那是**二的 n 次方套对照**,工作量翻倍而约束力一点没换来(结论照样交回用户裁决)。⭐ **一次性按"全部条件都是事后重构"处理,只跑两套:含全部条件的一套 / 一条都不含的一套**
- ⭐ **然后一次性说明这意味着什么**(照着说,别改):**「你这几条是刚写的,所以这一次 gate 只能起暴露作用,起不到约束作用 —— 它能告诉你『你的结论有多依赖你刚写下的这几条』,但它挡不住你。」**
- ⭐ **紧接着给出正面价值**(这一句同样别省):**「这一次 gate 的作用是把你的底线写下来;下一次它才开始约束你。」** 并指向**入职前存档**(`offers.md` 末尾,见输出格式可选的第 7 件)—— ⭐ **现在存进去,下次它就是事前的了**
- ⭐ **这一支留在最小路径里,⛔ 不划入深潜。** 理由有两条:① 它只有**两套**(含全部 / 不含全部),不是二的 n 次方套,成本可控;② **如果把它当成一般的 `事后重构` 挂起成 `gate 待定`,冷启动场景下每一条都会待定 → 永远没有一列能排第一** —— 那不是暴露问题,那是把模块瘫痪掉

> ⚠️ **这一小节为什么必须写在这里**:本模块的 README 把它推为"全仓最独立、可冷启动直接开跑"的模块 —— 于是**最被推荐的用法,恰好是 gate 最弱的用法**。不说破这一点,用户会以为自己刚过了一道 gate,而实际上他刚给自己发了一张通行证。

#### ⚠️ 先问一句:这几条是什么时候写下的(**只适用于接续场景**)

> ⚠️ **本小节只适用于接续场景** —— 有 `positioning.md`,或有更早的书面 / 口头记录。**冷启动场景见上一小节:答案已知,⛔ 不必逐条问。**

必要条件的全部约束力来自**它写在你看到这些 offer 之前**。所以第一步是问:*这几条,是你在收到 offer 之前就写下的吗?*

| 回答 | 怎么处理 |
|---|---|
| **是**(有更早的笔记 / 更早跟人说过) | 正常必要条件,走下面的 gate |
| **不是,是现在才想的** | ⚠️ 标注 `事后重构`,**仍然进 gate**,但必须**两套都跑 + 显式声明差异**(见下) |
| **说不清 / 记不清**(「大概那会儿就有这个想法」) | ⭐ **按事前算**(保守缺省)。⛔ 不许当成「不是」 |

⭐ **「说不清」为什么缺省偏向事前**:本节自己的论证是「门槛可以被当场裁剪,**gate 的全部约束力就是这么消失的**」。既然这一格的取值无人可验证,**缺省就必须偏向保留约束**——否则「记不清了」会变成一句零成本的万能解除键。

#### ⛔ 事后重构的必要条件:不降级,改成「两套都跑」

⚠️ **旧版的做法(降级为加分条件、⛔ 不构成出局判定)是错的,别再那么做。**

那条规则的激励方向是反的。它假设用户想让事后条件**算数**,所以「降级」是惩罚。但真实场景常常相反:**用户心里已经想去 A,而 A 违反了他一条不可闭合的底线**——他不需要裁剪任何条件,只要在被问的时候答一句「不是,是现在才想的」,那条底线就被降级、gate 就空了,A 合规进入排序并拿第一。**降级正是他要的结果。** 而这一格**无人可验证,且说谎方向单一有利**。

改成这样:

1. 事后写下的必要条件标注 `事后重构`,**仍然进 gate**,照常做满足 / 不满足 / 有条件满足判定
2. **同时跑两套排序**:**含**这条的 / **不含**这条的
3. 两套结论**相同** → 正常输出,并附一句「**这个结论不依赖那条你事后才想起来的条件**」
4. 两套结论**不同** → ⭐ **必须显式声明**:「**你的结论取决于一条你事后才想起来的条件 —— 它是 X。在往下走之前,先决定这条到底算不算你的底线。**」⛔ 不许自己替用户裁决,⛔ 不许静默按其中一套输出

> **为什么是这条设计**:**一个无法验证的输入,不该被用来自动放行或自动拦截;它该被用来暴露「结论有多依赖它」。** 这与本模块的翻转点是同一条设计——你无法验证一个假设,但你可以把结论对它的依赖显式摆出来,交给用户裁决。

⭐ 顺手让用户**现在就为下一次写一版**(存进 `offers.md` 末尾的入职前存档),下次它就是事前的了。

#### 然后逐列判定,只有三种结果

| 判定 | 怎么处理 |
|---|---|
| **满足** | 进排序 |
| **不满足** | ⛔ **直接出局,不进排序。** 在表下写一行「为什么出局」,就完了 |
| **有条件满足** | 只在**可闭合**的必要条件上成立,见下。写清楚是什么条件、要做什么才能闭合、闭合要付什么代价(代价进「生活成本」)。**闭合不了就按「不满足」处理**。⛔ 进排序后带 `有条件满足(待闭合)` 标记且**不能排第一**,见下 |

⭐ **最小路径只判前两种(满足 / 不满足)。** 第三种「有条件满足」及其闭合性判据**属于深潜** —— 最小路径里遇到本该判这一档的,标 `gate 待定` 挂起(见第一节)。
⛔ **来自 `positioning.md` 的硬性排除条件不走这张表**:它的语义是**短路** —— **命中即出局**,⛔ 没有「有条件满足」这一档,也不许降档。

#### ⛔ Gate 判定格也要标来源,且 `我推测的` 两个方向都不生效

横向对照表每一格都强制写成「取值 + 来源标注」,`我推测的` ⛔ 不参与排序。**gate 表以前没有这一列——这是个洞:**「A 满足 N1」这一格可以整格是你自己推测的,而且**不可见**;而**这一格决定的是谁出局,权重比排序表里任何一格都大**。

所以 gate 表每一格同样写成「**判定 + 来源标注**」(`你给的` / `公开可查` / `我推测的`),并写死两条:

- ⛔ **gate 判定格标 `我推测的` 时,不许据此判出局。** 必须先把它升级成「答复前必问项」里的一个具体问句;拿到答复之前,该列在这条必要条件上**按未判定处理**——留在排序里并标 `gate 待定`,⛔ 不许静默按满足或按不满足处理
- ⛔ **反方向同样不生效**:也不许据一个 `我推测的` 格判「满足」而发一张通行证。**推测在 gate 上既不能踢人,也不能放人**
- ⭐ **「不能放人」的执行动作,和「不能踢人」一样写死**(旧版只给了「不能踢人」的执行动作 —— 留在排序里、标 `gate 待定`;**「不能放人」一个执行动作都没有**,于是它只是一句话):

  > ⭐ **带 `gate 待定` 标记的那一列,不能排第一。**

  - **与「不能踢人」严格对称**:不能踢人 = **留在排序里**;不能放人 = **不能拿第一**
  - ⛔ **因此 `gate 待定` 与 `gate 未通过` / `有条件满足(待闭合)` / `无 gate`(见下一小节)并列 —— 四种标记全部不能排第一**,⛔ 没有哪一种是例外
  - **为什么必须补这一条**:不补就会出现一个明显反常的不对称 —— **必要条件状态"未知"的那一列能赢,而必要条件"已知违反"的那一列(典型是「留在原地」)反而不能赢。** 于是"没问到"比"问到了并且没通过"更有利,而两者之间的差别只是**有没有人去问过**。⛔ 一个奖励"少问一句"的 gate,方向是反的
  - ⭐ **解除方式与另外两个标记同构**:那一格从 `我推测的` 升级成 `你给的` 或 `公开可查`(= 答复拿到了)之后,标记去掉、限制解除。⛔ **答复截止到了不算解除理由**(见「必问项问不到,而答复截止已经到了」)

#### ⛔ 第四种标记:gate 表整个为空 → `无 gate`

⚠️ **上面三种标记管的都是「某一格没判出来」,而实跑里最常见的一种是「一条必要条件都没有」** —— 用户当场给不出,工作区里也没有 `positioning.md`,于是 **gate 表整张为空**。

⭐ **反常就在这里**:**「整个没有 gate」比「某一格没问到」还宽松,而它旧版连一个标记都没有** —— 于是**最松的那一种情形反而畅通无阻**,三种标记拦住的全是比它更严的情况。⛔ 这和「奖励少问一句的 gate」是同一个方向错误,只是更彻底:**这一次连问都没有问。**

- **判据是纯字面的**:N1-N3 **一条都没填**。⛔ 它不是"填了但判不出来"(那是 `gate 待定`),也不是"填了且不满足"(那是 `gate 未通过`)
- ⛔ **但先把三条输入通道都走完再判 `无 gate`**(见上面「gate 的输入通道有三条」)。⚠️ **旧版只有两条通道,两条都要求用户在场,于是所有材料型输入都恒落到这里** —— ⭐ **一个对所有此类输入给同一结论的标记,和一条坏掉的规则无法区分**。⭐ **通道 3 走过、一句排他性措辞都没找到,才算真的 `无 gate`**
- ⭐ **本次所有列一律带 `无 gate` 标记,因而所有列都不能排第一** —— **与另外三种同构**:`gate 未通过` / `有条件满足(待闭合)` / `gate 待定` / `无 gate`,⛔ **四种全部不能排第一,没有例外**
- ⭐ **正确输出就是那条已经定义好的强结论**(排序照出、标记照带,然后照着说):**「没有一列能合法排第一 —— 你一条必要条件都还没写下来。现在该做的不是答复,是先把你的必要条件写下来。」**
- ⭐ **解除方式:用户写下至少一条必要条件 —— 哪怕只有一条。** 写下之后标记去掉,那一条按正常 gate 判定走(冷启动场景则转入下一小节)
  - **为什么一条也算**:⭐ **一条写下来的底线,比零条强得多。这个标记的作用不是逼他写全,是不让「没写」变成默认放行。** 若把解除门槛定成"写满 2-3 条",写不出第二条的人会被卡在这里 —— 而他们正是最需要先写下第一条的那批人
  - ⛔ 写下来的必须是**一条可判定的条件**(能对每一列答"满足 / 不满足")。「钱多事少离家近」不算 —— 这不是在抬高门槛,是那句话根本没法进 gate 表
- ⛔ **不许因为"用户就是给不出"而静默跳过 gate 直接排序。** 跳过之后,「**过了 gate**」和「**根本没有 gate**」在文件里长得一模一样 —— 这正是本模块每一条留痕规则要挡的东西

> ⚠️ **与冷启动例外的关系,别合并**:冷启动那一小节处理的是「**条件是事后写的**」(**有条件**,只是写下时点晚于 offer);本条处理的是「**一条都没有**」。⭐ 两者是**先后关系,不是同一件事**:先用 `无 gate` 逼出至少一条,那一条写下来之后才轮到冷启动分支(一次性按"全部事后重构"处理、只跑两套)。⛔ 不许拿冷启动那句「gate 只起暴露作用」当成"所以空着也行" —— **暴露作用的前提是有东西可暴露。**

##### ⛔ `无 gate` 与「分不出来」出口同时触发时的优先级(写死,⛔ 不许现场挑)

⚠️ **这两个出口会同时成立,而它们要求相反**:`无 gate` 的强结论要求**排序照出、名次照排**;「分不出来」是**唯一允许不出排序**的出口。⛔ **旧版没有裁决句,于是执行者只能自己挑一个** —— 而两条路给用户的下一步动作完全不同。

> ⭐ **裁决:`无 gate` 优先。两者同时成立时,⛔ 不走「分不出来」出口。**

**理由**:`无 gate` 管的是「**你还没告诉我你的底线**」= **输入缺失**;「分不出来」管的是「**证据不足以分开这几列**」= **证据不足**。⭐ **输入缺失优先** —— **连判据都还没有的时候,谈不上"分不分得出来"**。而且「分不出来」出口的第 1 条要求是"先重排一次",⚠️ **重排出来的名次在 `无 gate` 下一列都不能合法排第一** —— 也就是说,就算把那三条要求全跑完,用户拿到的下一步动作**仍然是"先写下一条你自己的底线"**。**先做那件事,那三条才有意义。**

**执行动作写死(三条)**:

1. ⭐ **第一句照 `无 gate` 的形状**:「**没有一列能合法排第一 —— 你一条必要条件都还没写下来。现在该做的不是答复,是先把你的必要条件写下来(哪怕只有一条)。**」
2. ⭐ **「分不出来」那三条要求不作废,降级成第二段照写**:「我还缺这三条:××、××、××」+「补齐后怎么裁决」。⛔ 不许因为 `无 gate` 优先就把它整块删掉 —— **两件事都缺,用户两件都得知道**
3. ⭐ **名次那一栏**:排得出来的照排;⛔ **"两条同时成立"不是省掉这一节的理由**。此时这一节写成两条并列的原因,⛔ **两条都要写**:**① 你一条必要条件都还没写下来(所以就算排出来,也没有一列能合法排第一)· ② 参与排序的这几维在这几列上分不出来(缺的三条信息见下)**
   - ⛔ **不许只写第 ②** —— 只写 ② 会让用户跑去补那三条信息,补完回来发现**照样没有一列能排第一**,⚠️ 而 ① 那件事他**今天就能做,且不用问任何人**
- ⭐ **解除后重判**:用户写下至少一条必要条件 → `无 gate` 解除 → **这时才回头看「分不出来」还成不成立**;仍成立才走那个出口

#### ⛔ 「有条件满足」的闭合性判据(不写上限的一律按不可闭合)

**必要条件分两类,写下的时候就要分好:**

| 类 | 长什么样 | 「有条件满足」能不能用 |
|---|---|---|
| **可闭合** | 违反之后存在一个**你付得起代价就能消除它**的动作(搬家、换通勤方式、改作息) | ✅ 能用,**但必须在写下这条时就写明闭合上限** |
| **不可闭合** | 违反之后没有任何你单方面能做的动作能消除它(岗位没有产出归属、现金依赖期权兜底、汇报线不对) | ⛔ 不能用,只有满足 / 不满足两档 |

⭐ **可闭合的那条,写下时必须带闭合上限**,例:「通勤单程 ≤ 一小时;**搬家我接受,但只接受同城,且只接受一次**」。上限写清楚,「有条件满足」才有边界。

⛔ **没写闭合上限的,一律按不可闭合处理**——即只有满足 / 不满足两档,不许判「有条件满足」。

**为什么这条必须硬**:「有条件满足 → 代价进生活成本 → 合规重入排序」是 gate 唯一的逃逸通道,而且它完全写在规则里。一笔按摊销年限摊平的一次性代价,**吃不掉一个选项在现金上的优势**——于是那个本该被 gate 挡住的选项,会带着一笔小小的扣减重新拿到第一名。**上限是这条通道上唯一的闸门。**

##### ⛔ 但上限只挡「动作的范围」,挡不住「剩余劣势的量级」——补三条

⚠️ **上面那句「没写上限一律按不可闭合」是本文件最好的一条规则**(判据是纯字面的:模板那一格是不是空的),**不要动它**。但它只约束了**动作的范围**(同城、一次),没有约束**剩余劣势的量级**——而它自己给的理由(「一笔摊平的一次性代价吃不掉现金优势」)**恰恰是量级问题**。所以用户按 ⭐ 推荐把上限写全(「同城、一次」)之后,同一条通道会原样复现:搬家闭合 → 一次性代价按摊销年限摊平 → 去吃真实时薪的大幅优势 → 该选项照样拿第一。

补三条,都可机械执行:

**① ⛔ 真实时薪的分母,用「闭合前」的通勤。写死。**

- 理由:**闭合尚未发生。** 而且用闭合后的通勤会让「违反了你的必要条件」这件事**反过来变成优势**(分母缩水 → 时薪上升),这个方向明显是错的
- ⭐ 允许在**翻转点**里附一句「若你真的搬了,它的真实时薪会变成 X」——那是**假设**,⛔ 不作为排序输入
- 生活成本那一维照旧收闭合的**代价**(搬家 / 租房一次性支出按摊销年限摊)
- ⚠️ **「代价照收 + 收益不给」看起来像扣两次,这是故意的**:代价(搬家支出)**真的会发生**,收益(通勤变短)**还没发生**——两者在时点上不对称。**给一个还没发生的动作预支好处,等于让「违反了你的必要条件」反过来变成优势。** 闭合真的完成之后(新租约已签),标记去掉、分母换成闭合后的通勤,那时两边就同步了

**② ⛔ 带 `有条件满足(待闭合)` 标记,且不能排第一。**

- 除非闭合动作**已经完成**(例:新租约已经签了、已经搬完),才去掉标记与限制
- 理由:**这条通道进来的选项,它的第一名建立在一个还没发生的动作上**
- ⭐ 这是与「留在原地」的**对称补齐**:模块对基准列早就写了「gate 未通过时带标记且不能排第一」,而从「有条件满足」通道进来的那一列过去**无标记、无限制、可以裸奔拿第一**
- ⚠️ **四条「不能排第一」加起来(`gate 未通过` / `有条件满足(待闭合)` / `gate 待定` / `无 gate`),可能出现「没有一列能合法排第一」。** 这**不是**死锁,也**不是**「分不出来」出口——**它本身就是一条强结论**:⭐ 照常输出完整排序(名次照排、标记照带),然后明写一句「**没有一列能合法排第一:××(gate 未通过)· ××(闭合动作还没发生)· ××(gate 待定,××这一条还没问到)。所以今晚该做的不是答复,是先把 ×× 问出来 / 先把 ×× 落实 / 先回去谈条件。**」⛔ 不许为了让表好看就悄悄摘掉某一列的标记
  - ⭐ **`gate 待定` 那一支的典型收场**(实跑里最常出现的一种):**「没有一列能合法排第一 —— 今晚该做的不是答复,是先把『这个岗一周有几成时间在写代码』这条还没问到的必要条件问出来。」** 它把"没问到"从一个**悄悄让某一列拿第一的空白**,变成一个**具体的下一步动作**

**③ ⛔ 通勤口径要定义死**——它**同时**是 gate 判据和真实时薪分母输入,只说「单程、门到门」不够。borderline 样本(地铁 65 分钟 / 开车 48 分钟)可以在 gate 门口就绕过去。

- **缺省口径:工作日早高峰 · 你实际会用的那种通勤方式 · 单程门到门**(分母里再换算成往返)
- 标来源等级:自己估的是 `自己估算`,查地图查的是 `公开可查`,**必须附查询日期与查询时段**
- ⛔ **同一份对照表里所有列必须用同一种口径。口径不同的两列不可比**,不许放进同一次排序
- ⚠️ **「你实际会用的那种通勤方式」仍然是一句无人可验证的自述**,和「这条是不是事前写的」是同一类。所以配同一条解法:**当换一种通勤方式会改变任何一格 gate 判定时**(典型:地铁 65 分钟不满足 / 开车 48 分钟满足),⛔ 不许自己挑一种,**两种都跑,并显式声明**:「**按地铁算它过不了 N1,按开车算它过得了 —— 这个结论取决于你到底会怎么通勤,先定这个。**」两种都不改变 gate 判定时,按用户说的那种走,不必对照
- ⛔ **但「两种都跑」只补齐了一半,还缺一条保守缺省 —— 补上。** ⚠️ **这里有个不对称**:事前 / 事后那一格拿到的是**两样**(两套都跑 **+**「说不清 → 按事前算」的保守缺省),而通勤方式旧版**只拿到「两套都跑」,没有保守缺省** —— 于是用户一句「我会开车,比地铁快」就能把一列从出局变成第一。所以:
  - ⭐ **换一种通勤方式会改变任何一格 gate 判定时,缺省按更慢的那一种算**(先落到"过不了"那一侧),两套照跑、差异照声明
  - ⭐ **要按更快的那一种算,必须给出行为化理由** —— 「**我现在这份工作就是开车通勤**」/「**小区已经有固定车位,公司那边也有**」这类**已经发生的事实**
  - ⛔ **不接受可能性陈述**:「我也可以开车」「我打算买车」「实在不行就打车」—— 这些说的是**将来可以怎样**,不是**现在就是怎样**。判据与「有条件满足」的分母写死用闭合前通勤是同一条:**一个还没发生的动作,不能预支它的好处**

⛔ **不许用加分条件换必要条件。** 「它发展空间最好,所以通勤远一点也认了」——如果通勤是你写下的必要条件,这句话就是在改自己刚定的规则。**必要条件的全部价值就在于决策当下不许改。** 加分条件再多也换不掉一条必要条件。

> ⚠️ 这条纪律在几个模块里都出现过(`03-company-analysis` 的「硬性排除不可被匹配度换」、这里的 gate、以及工作区的 `positioning.md` 三类条件),**犯的是同一类错:把不可交易的条件塞进了同一个加权式子**。

⭐ **「留在原地」也要过 gate,但它出局的方式不同**:它是基准列,删掉它整个排序就失去参照系。所以——**必要条件不满足时,它仍然留在表里做基准,但在排序里带「gate 未通过」标记,且不能排第一**。这本身就是一条独立且很强的结论:**现状已经不满足用户自己写下的必要条件**,说明「不动」这个选项也在流血,只是流得慢。

### 第 2 步 · 只算真实时薪

```
真实时薪 = 税后年现金总包 ÷ 真实年工时
```

**分子**(税后年现金总包):

- 固定部分(按薪数展开)+ 浮动部分 × **历史兑现率**
- ⛔ **浮动按历史兑现率打折,不按承诺值。** 拿不到历史兑现率时:**算三遍**——按承诺值、按 `浮动兑现率默认` 、按 0,看排序会不会因此翻。**会翻,它就是一个翻转点,并且要算出临界取值**(见输出格式第 4 件);不会翻,就写进「查了也不会翻」那张表
- ⚠️ 三点采样**不是浮动兑现率的专属义务**,见「参数与来源等级」——凡来源等级是 `默认建议值` 或 `纯占位待校准` 的参数,一律要采
- ⛔ **期权 / 限制性股票不进这个分子。** 它们不是现金,进「下行风险」那一维(问的是「现金部分是否依赖期权兜底」)
- 相对量就够:把其中一列设为基准,其余写成「比基准高约一成」这种说法。**你不需要知道任何具体金额就能排出序**
- ⚠️ **什么时候相对量不够、必须问具体数字**:分子口径是**税后**,而税后依赖税率与累进——相对量在这一点上会失真。判据是**保序**:
  - **两列差得开**(打折后差幅明显大于真实时薪这一维的估算误差带)→ 相对量够,继续用相对量
  - **两列接近**,或**结构差异大**(几薪不同 / 固定与浮动的拆分差很多 / 一次性签字费占比高 / 跨社保缴纳地)→ ⛔ 相对量可能不保序,**必须问到具体数字再算税后**,否则这一维只能标 `我推测的` 并退出排序
  - ⭐ 拿到具体数字**只用来算,不写进 `offers.md`**——落到文件里的仍然是指数
  - ⚠️ **这条与「你不需要知道任何具体金额就能排出序」在真·难分样本上互斥,裁决如下**:那句话是**最小可接受形态的承诺**(拿相对量就能起步、能出一版排序),不是「任何样本都不必给金额」的保证。**当且仅当两列在真实时薪上分不出来、而这一维又是当前的决胜维**时,才触发升级——此时按顺序做:**① 先照常出一版排序**(这一维标 `我推测的` 并按单元格退出排序,看**别的维度**能不能分出来);**② 别的维度也分不出来时**,才把「具体数字」写成「答复前必问项」里的**一个具体问句**(例:「税前月薪具体是多少?几薪?社保按哪个城市的基数缴?」),并按「分不出来」出口的三条要求收场。⛔ **不许一上来就要金额**,⛔ 也不许因为拿不到金额就沉默不出排序

- ⭐ **⛔ 分子不许默认按"全年拿满"算 —— 先看前置声明「雇佣形式」**:**合同制 / 计件 / 无薪假**这类形态下,**年现金总包 = 单位报酬 × ⭐ 可计费周数**,⛔ **不许按全年五十二周算**。⚠️ 这是"名义报酬看起来很高"最隐蔽的一个来源,而它**不在分母里,在分子里** —— 它改的是"一年拿多少钱",不是"一年付多少时间"
  - 可计费周数拿不到时退到 `可计费周数默认`(`纯占位待校准`),因而**必须做三点采样**
  - ⭐ **有带薪假的正式雇佣形态下这一条恒不触发**(可计费周数 = 全年),⛔ 但那时也要在前置声明里把「雇佣形式」填出来,不许空着

**分母**(真实年工时):

```
正常工时 + 加班 + 通勤(往返,按工作日计) + 出差(在途全额 + 驻场超出常规工时的部分)
  + 跨时区错位(按工作日计) + 值班待命 × 待命折算系数
```

- ⭐ **通勤必须计入分母,且往返全额计入,不打折。** 这是写死的。**「名义薪资高但真实时薪更低」最常见的来源就是通勤被排除在分母外**——它是你为这份工作实际支付的时间,无论你在路上做什么
- ⭐ **出差必须计入分母,与通勤同性质** —— 它同样是**你为这份工作实际支付的时间**。⛔ **不因为"公司报销差旅"就不计入:报销的是钱,不是时间**
  - **口径写死**:**在途时间全额计入**(同通勤,不打折);**驻场 / 现场支持期间,只计入超出你常规工时的那部分**(常规那部分已经在「正常工时 + 加班」里,⛔ 不许重复计)
  - ⭐ **岗位描述里出现「私有化交付 / 现场支持 / 驻场 / 去客户现场」时,⛔ 不许按 0 计** —— **岗位描述本身就是证据**。拿不到具体频次时按「与你现在相当」计入并标 `我推测的`,且**必须列进翻转点**
  - 「你现在」也说不清时(没有在职工作 / 现职不出差而新岗位要出差)→ 退到 `出差强度默认`,标 `纯占位待校准`,因而**必须做三点采样**
- ⭐ **全 remote / 住处未定时,通勤这一格怎么填(⛔ 写死,别编)**:
  - ⭐ **判据字面:这份工作要不要求你到某个固定地点上班?**(= 前置声明「前 2」)。**不要求(全 remote)→ ⭐ 通勤按 0 计入分母**,并在「口径与假设」写一行「**本列全 remote,通勤按 0**」。⛔ 不许因为"通勤是写死必算的"就编一个通勤时间出来
  - ⚠️ **通勤口径预设了「住处已定」,而住处常常没定** —— ⭐ **住处取决于租金,租金又取决于住处,两格互为输入,这是一个循环**。⛔ **不许自己替用户设一个住处再算通勤**(那是拿一个编出来的前提去撑两维)
  - ⭐ **解法写死**:**住处提到前置声明「前 3」里先定下来**;⛔ **定不下来 → 通勤与租金两格一起标 `我推测的`**,⛔ 不许只标一格
- ⭐ **跨时区错位必须计入分母,与通勤 / 出差同性质** —— 它同样是**你为这份工作实际支付、而名义报酬里看不见的时间**
  - **口径写死**:为配合对方工作时段而付出的、**落在你正常作息之外**的时间(早会 / 深夜同步 / 因异步等待造成的返工),**按工作日计入**
  - ⭐ **岗位描述或前置声明里出现"与××地团队协作 / 需要配合××时区"时,⛔ 不许按 0 计** —— **岗位描述本身就是证据**(与"驻场 / 现场支持"同一条)。拿不到具体量时按「与你现在相当」计入并标 `我推测的`,且**必须列进翻转点**
  - ⚠️ **同时区时这一项为 0**,⛔ 但前置声明「前 4」照样要填出来,不许空着
- 值班待命按 `待命折算系数` 折算计入(待命不是全工作,但也不是自由时间)

**输出**:把三列的真实时薪做成一个**指数**——挑一列(通常是「留在原地」)定为 100,其余写成相对它的数。**这是指数不是钱**,它让你不必写下任何真实金额就能比较。

### 第 3 步 · 写一句「我最不确定的是什么」

一句话,用户自己说。这句话就是翻转点声明的种子。

如果用户说不上来,给他挑:*浮动到底发不发得出来?* / *加班到底多不多?* / *这个岗位三年后还值不值钱?* / *我搬不搬得动?*

#### ⭐ 然后你(agent)也写一句 —— 但**不要问"我哪里可能判错"**

一次回溯测试里,框架在 8 个案例上都写了"我最可能错在哪",结果:**被真值证伪 3 次,0 次预警到真正会翻盘的那一处**。
它每次挑的都是**方法论洁癖式的风险**("我的分层口径对不对""这几条观察独不独立"),而真值里三次的决定性信号,**全部落在框架自己主动排除掉的格里**。

⭐ **所以问法要换成这一句**:

> **如果三个月后结果跟我说的相反,最可能是哪一条我判定为「不重要 / 不可判 / 不能问」的东西,其实是决定性的?**

**为什么这个问法更准**:你已经想过的地方,你已经在想了;**真正会翻盘的,是你判定"这条不用想"然后就真的不再想的那一条**。
所以要**从排除项里挑**,不是从保留项里挑:

- 哪一格被标成了 `我推测的` 因而**退出了排序**?
- 哪一维因为"取值都差不多"被**删掉**了?
- 哪个问题因为"对方不会答"被**降级**了?
- 哪条信息因为"事后补不回来"被**判为不可判**?

⛔ **写完不要去补它** —— 这一句的用途是**留痕**,让三个月后的你能回来看当时排除掉了什么。真要补,它就该出现在必问项里,而不是这里。

### 第 4 步 · 出排序

#### ⛔ 上位出口:有一列被硬约束判出局时,⭐ **必须出结论**(⛔ 优先于本模块其余任何一条"不出结论"的规则)

⚠️ **本模块当前最严重的失败模式不是"判错",是"拒绝判"。** 一批实跑里六个案例、**四种完全不同的真值类型**,全部输出**同一形状**:「不排名次 + 数据不够,不该下结论」。⭐ **真值核对下来,其中四例当时就是可判的** —— 有一例的真值原话是「**几乎不需要推理,只需要不自我说服**」:四条决定性信号全是对方主动说出口的。

**根因是三条互锁的机械判据**(在跨国 / 材料型 / 回溯型输入上几乎必然同时成立,⛔ **任一成立就出不了名次**):`无 gate` + 「整维退出」+ `未成 offer` 不参与排序。⭐ **这三条各自都在修**(见第 1 步的输入通道与优先级、「作用粒度」的新判据),⭐ **但它们还需要一条上位出口把"敢判"兜住**:

> ⭐ **只要有一列被一条二值硬约束判到出局值,就必须出结论** —— 哪怕结论是「**只剩两列,而这两列分不出来**」。
> ⛔ **不许因为别的维整维退出,就把整个结论压成"数据不够"。**

- ⭐ **什么算"二值硬约束"(判据字面)**:**取到某个值就直接出局、⛔ 没有「有条件满足」这一档**的那类 —— `positioning.md` 的**硬性排除条件** · 已确认的**不可闭合必要条件**判为「不满足」 · 用户写下的、能对每一列答"满足 / 不满足"的那种条件
- ⭐ **执行动作写死,三步**:
  1. ⭐ **先把出局那一列的出局结论照常出**:「**××出局,因为它在××这条上不满足**」—— ⭐ **这一句本身就是一个结论**,⛔ 不许因为别的维数据不全就不说
  2. **剩下的列照常比**:分得出来就出名次;分不出来就照「分不出来」出口的三条要求收场 —— ⭐ **但收场语必须先说第 1 步那句**
  3. ⭐ **最后照着说一句**(⛔ 前提是被判出局的确实只有那一列):**「××这一列已经出局了,剩下的比不比都不改变这一条。」**
- ⛔ **不许把"某一列出局"和"其余维数据不全"合并成一句"数据不够"** —— ⚠️ **前者是结论,后者是缺口;混在一起,用户拿到的是零个结论**
- ⭐ **这条上位规则同时管住维度池的挑选判据**:⚠️ 「取值不同才留」会把**取值相同的二值维**删掉,⛔ **而一个"一旦取到某值就让某列直接出局"的二值维,即使本次取值相同也不许删** —— 它的价值不在区分度,在**出局判定**。删掉它,本该出局的那一列会带着完整名次留在表里
- ⭐ **它与 `无 gate` 不冲突**:一条已经判出局的硬约束**本身就是一条写下来的底线** —— ⭐ **它成立时 gate 表就不是空的,`无 gate` 自然不成立**
- ⭐ **验收标准一句话**:**一个"有一列被硬约束判出局、其余维数据不全"的案例,必须能出结论。** ⛔ 再输出一次「数据不够」就是没修好

给这六样,缺一不可:

1. **排序**(含「留在原地」的名次)。⛔ 带标记的列照带:`gate 未通过`(留在原地)/ `有条件满足(待闭合)` / `gate 待定` / `无 gate`(整张 gate 表为空时**每一列都带**)——⭐ **四种全部不能排第一**(见第 1 步,⛔ 没有例外)
2. **每一名与下一名差在哪个维度** —— ⛔ 必须指名道姓说出是哪一维。⭐ **比较口径写死:差幅必须严格大于这一维误差带的绝对值,才算"分得出来"**(例:误差带 ±5,两列差 5 指数点 → **分不出来**;差 6 才算分得出来)。分不出来就明说「这一维分不出来」,换下一维说。误差带取值见「参数与来源等级」,且必须在「口径与假设」里报出来
   - ⛔ **说"这一维分不出来"之前,必须先过一遍第三档判据**:**这一维上有没有一条 `你给的` 或 `公开可查` 的事实,能确定谁优于谁(哪怕说不出优多少)?** ⭐ **有 → 它是 `方向确定 · 量级不明`,属于"分得出来",⛔ 不许换下一维,也 ⛔ 不许拿它算差幅或判决胜维**(判据全文与措辞见第二节「⭐ 第三档:`方向确定 · 量级不明`」)
   - ⭐ **最小路径只有一维,没有"下一维"可换 —— 给它一个专门的出口**:唯一那一维分不出来时,⛔ **不许走「分不出来」出口**(那个出口的第一个必要条件是"**先只用 `你给的` / `公开可查` 的那几维重排一次**",而最小路径根本没有"那几维",走过去只会卡死)。正确动作是 ⭐ **直接进深潜、加第二维**(按「取值不同才留」挑一维),并跟用户说一句「**真实时薪这一维分不出来,我加一维再排 —— 这一步开始就不是最小路径了。**」
     - ⭐ **加维有停止条件,写死(⛔ 不许无限加下去)**:**每次只加一维**,加完立刻判它分不分得出来;**最多加到第三维**(连真实时薪在内一共三维)。到第三维仍然分不出来 → **停**
       - **为什么是三**:基础维度池只有四维(加上「既得资产」那一维也才五维),到第三维还分不出来,说明**缺的不是维度,是数据** —— 再加下去只会把 `我推测的` 的格越加越多,而推测不参与排序,**加了等于没加**
       - ⭐ **停下来之后输出什么**:走「分不出来」出口(三条要求全部照跑),并 ⛔ **必须点名缺的是哪几类数据**,不许只说"信息不足"。逐维写清它为什么没分出来,⭐ **有四类(⛔ 旧版只有三类,漏的正是最常见的第 ④ 类)**:
         - ① **整维退出,且真的拿不到**(⭐ **这一维一格硬的都没有**,见「作用粒度」那节)→ **这一类才是"缺数据"**,缺的就是这一维的取值,逐条写成必问项
         - ①b ⭐ **保留但可比列 ≤ 1**(这一维还有硬格,只是凑不出一对)→ ⛔ **不算"缺数据到整维没用"**,走「硬证据留档」,⭐ 并把"补哪一格就重新可比"写成必问项
         - ② **差幅不过误差带** → **不缺数据**,是这两列在这一维上真的差不多
         - ②b ⭐ **`方向确定 · 量级不明`(⛔ 新增,⛔ 不许并进 ②)** —— 这一维上有一条 `你给的` / `公开可查` 的事实能确定谁优于谁,只是**量级不知道** → ⭐ **这一维已经分得出来了**,⛔ **它根本不该出现在这张"为什么没分出来"的清单上**。⚠️ **② 的下一步是"别再管这一维",②b 的下一步是"把量级问出来"** —— ⛔ 收进同一句话,就把一个**已经拿到的结论**当成"两列差不多"扔掉了
         - ③ **两维方向相反** → **不缺数据,缺的是一次取舍** → ⛔ 不进这里,走下面那个专门出口
         - ④ ⭐ **可问而未问(⛔ 新增,⛔ 不许并进 ①)** —— 用户自己明说"我没问",或那一格存在一个具体的提问对象。⚠️ **实测里大量缺失属于这一类,而它被整体归进 ①「缺数据」** —— ⭐ **两者的下一步动作完全不同**:

           | | 这件事的性质 | 下一步 |
           |---|---|---|
           | ① 真缺数据 | **拿不到** | 写成必问项,但要说清它可能问不到 |
           | ④ ⭐ **可问而未问** | ⭐ **发一封邮件 / 问一句就有** | ⭐ **今天就能做完** |

           - ⭐ **判据是纯字面的,一眼分**:**这一格有没有一个具体的提问对象(有名有姓的联系人 / recruiter / 某位面试官),且问题写得成一句过去式问句?** **有 → ④**;**没有**(无人可问 / 对方已明确拒答 / 落在「检索的边界」禁掉的那类)**→ ①**
           - ⭐ **④ 的专属措辞写死(⛔ 不许与 ① 用同一句收场)**:**「××这一格不是拿不到 —— 是还没问。今天给 ×× 发一句:『××?』,回信就能填上。」** ⭐ **必须具体到"问谁 + 原话说什么"**
           - ⚠️ **为什么必须分开**:⭐ **把这两种收进同一句话,会把"今天就能做完的事"说成"补不齐"** —— 而这正是本模块自己点名要避免的失败模式(同「两维方向相反不许走『分不出来』出口」)
       - ⚠️ **三维全是 ② 时,结论不是"分不出来",而是一条强结论**(照着说):**「这几个选项在你选的这几维上确实没有实质差别 —— 差别在你还没写进表里的地方,或者它们对你真的一样。」** ⭐ 此时该做的是**回去加一条必要条件或加分条件**,⛔ 不是再加一维
   - ⭐ **两维都分得出来、但方向相反 —— 这是一个独立的出口,⛔ 不许走「分不出来」出口**:
     - **触发判据(两条同时成立,都能一眼判)**:① 这两维**各自都分得出来**(差幅严格大于该维误差带;定性维跨两档;⭐ **`方向确定 · 量级不明` 也算"分得出来"**,见下一条);② **方向相反** —— 同一列在一维领先、在另一维落后
     - ⭐ **⛔ 「分得出来」包含第三档 —— 这是一处硬断裂,补上**:⚠️ 触发判据字面写着"差幅严格大于误差带 / 定性维跨两档",⛔ **而 `方向确定 · 量级不明` 明写这两样都没有** —— 于是「**一维是第三档、另一维与它方向相反**」这种很常见的组合,**两个出口都够不着**(那一档又被写死"算分得出来",所以也进不了「分不出来」)。写死:
       - ⭐ **第三档算"分得出来"的一种**(第二节开头就是这么定义的)→ ⭐ **一维是第三档、另一维分得出来且方向相反 → 照样触发本出口**
       - ⭐ **两维都是第三档时同样走本出口**(两边都只有方向、都没有量级),⛔ 不许改判成「分不出来」
       - ⭐ **走进来之后有一处不同,⛔ 不许省**:取舍问句照问、原话照记,⛔ **但不许说"差多少"**。问法照着说:**「『××』这一条上 A 比 B 好是确定的,但好多少我不知道;『××』那一条上 B 比 A 好,差多少我算得出来。这两件事只能保一件,你保哪一件?」**
     - ⭐ **⛔ 触发不止在维之间 —— 同一维内部的两个子项方向相反,同样触发(⛔ 旧版只有维级,这是一处没有判据的自由裁量缺口)**:
       - ⚠️ **实测撞到的形态**:发展空间那一维里,**两个子项各自都有硬格、方向正好相反**。⭐ **执行者自行把它拆成了两维处理 —— 而这一步框架里没写。** 换一个执行者走「整维取中 → 分不出来」,**同样不违规,得到的是相反的产出**。⭐ **同一份材料、同样合规、两个相反结论,差别只在执行者当时怎么裁 —— 这正是本模块最反对的形态。**
       - ⭐ **触发判据(字面)**:**同一维内部,有两个子项各自都有硬格**(`你给的` / `公开可查`)**,且方向相反**(同一列在一个子项上领先、在另一个子项上落后)→ ⭐ **与跨维方向冲突同样处理**:走取舍出口,把那句取舍的**原话**记下来当这一次的权重
       - ⛔ **不许"整维取中"** —— ⚠️ **取中会把两个都硬的相反信号抹成一个"分不出来",信息全丢**
       - ⛔ **也不许执行者自行把它拆成两维** —— 那是**没有判据的自由裁量**,正是上面那段说的病
       - ⭐ **取舍问句落在子项自己的说法上,⛔ 不许拿维名去问**:**「『××』和『××』这两件事只能保一件,你保哪一件?」**(例:「半年内能不能打出一件明确属于我的产出」↔「出错时我担不担责、有没有拒绝权」)
       - ⭐ **记下来的取舍写在同一格里**(「本次取舍」),⭐ **并注明它是子项级的**(哪一维的哪两个子项)—— ⛔ 只写维名会让下一轮读的人以为是跨维冲突
     - ⛔ **不许塞进「分不出来」出口。** 那个出口是给**证据不足**设计的:它的三条要求(先只用 `你给的` / `公开可查` 重排一次 → 点名三条缺失信息 → 说明补齐后怎么裁决)**全部预设"缺数据"**。⚠️ 而这里**数据是够的**。两种情形若用同一套措辞收场,用户拿到的下一步动作会完全错 —— **他会跑去补一堆补齐了也不会改变结论的信息**
     - ⛔ **也不许给这两维配权重再加起来**(纪律 3:不出综合分、没有维度权重)
     - ⭐ **产生方式:排序不由框架产生,由你回答一个问题产生**(照着问):**「『××』和『××』这两件事只能保一件,你保哪一件?」** —— 把他的回答**按原话写下来**,⭐ **它就是你这次的权重,且只对这一次有效**
     - ⭐ **与加权求和的区别**:这是**一次显式的、被记录下来的取舍**,不是一组藏在公式里的系数。所以它 ⭐ **必须出现在输出里**(`offers.md` 排序结论一节 + 入职前存档),标 `你给的`。⛔ 不许只留在对话里 —— **要让他三个月后回头能看见自己当时选的是什么**
     - ⛔ **只对这一次有效**:不许把它沉淀成跨样本的权重表或默认维度序(那就是权重)。L2 沉淀写进 `offers.md` 时写成「**本次取舍:××(第 _ 轮,用户原话)**」,⛔ 不写成「本人一贯更看重××」
     - ⭐ **用户不回答("你帮我定")→ 不出名次**,把问题原样退回去并说清为什么:**「这一次不是我算不出来,是这两维方向相反、而本模块不做加权求和 —— 这个取舍只有你能做。」** ⛔ 不许替他选,⛔ 也不许因此改判成「分不出来」
     - **三维及以上同时冲突时**:⛔ 不许一次让用户对多维排序(那等于让他现场给一组权重)。⭐ **一次只问第 1↔2 名争的那一对**,定完再看下一对还冲不冲突
3. **翻转点**:**有就写,每条带临界取值和证据等级;一条都没有就明写「本次结论无翻转点,因为……」** ——「无翻转点」是一条强结论,不是缺一节
4. **第 1 名最弱的一维**:弱在哪、要跌到什么程度它才会掉出第一。⭐ **「跌到任何程度都不会,因为决胜维是另一维」是合格答案**,见输出格式第 5 件
5. **一句决策分离结论**:对「公司成不成」的判断 vs 对「我要不要去」的判断,分别是什么
6. ⭐ **一页纸** —— 把上面五样**收**成一页,放在 `offers.md` 的**最前面**。⛔ **最小路径也不许省**:这一件恰恰是为「**今晚就得答复、而且不是技术背景**」的人加的,⚠️ **而那正是最小路径的用户特征**。⭐ **它在文件里排第一,在你的工作顺序里排最后** —— 它是从上面五样收出来的,⛔ 不是另写一份,⛔ 更不是"简化版结论"。四件必需内容、禁用词表与人话译法见输出格式第 1 件

⭐ **最小路径收尾还要再带一句(照着说,⛔ 不许省)—— 但有两种措辞,⛔ 别照抄错那一种**:

⚠️ **旧版只给了一种措辞**,而它假设"补采样有意义"。⛔ **照抄到不成立的场合上,会把用户推去补一件补齐了也不改变结论的事** —— 与「两维方向相反不许走『分不出来』出口」是同一类错。

- ⭐ **判据是纯字面的,一眼判**:**本次落在后两档的那两个参数,有没有出现在任何一维的算法里、而那一维又参与了排序?**
- ⭐ **出现了 → 照说这一句**:**「你这次跳过了参数采样,这意味着这个排序对『浮动兑现率 / 周工时』这两个假设有多敏感是未知的 —— 如果你想在答复前只多花三分钟,就补这一项。」**
- ⭐ **没出现 → ⛔ 不许照抄上面那句,改说这一句**(典型:唯一参与排序的那一维根本不用这两个参数;或它们所在的那一维已经整维退出):**「你这次跳过了参数采样 —— 但本次的名次不由那两个参数决定(××那一维根本没进排序),所以补采样不会改变这个顺序。真要动这个结论,缺的是 ××。」**

- ⚠️ **为什么要单独说出口**:三点采样与交互项被划进深潜,而 ⭐ **最需要它的,恰恰是最不可能跑深潜的人**(今晚就得答复、第一次用本模块)。⛔ 划进深潜之后一句不提,等于让这批人拿到一版**看起来已经跑完**的排序
- ⛔ **这不是把三点采样移回最小路径。** 移回去是重蹈上一版的覆辙 —— 把已知会被触发的重活留在最快的那条路上,实际结果不是他跑完,是他跳过
- ⭐ **补的是哪一项,写死**:只把**落在后两档的那两个参数各取更保守的一端**,重算一次真实时薪,看名次翻不翻。翻了 → 它就是一条翻转点(补上临界取值);不翻 → 写进「查了也不会翻」
- ⚠️ **"三分钟"是给这一项的邀约措辞,⛔ 不是最小路径或深潜的时间承诺**(本模块不给路径写分钟数,见第一节)。用户问"深潜要多久",答案照旧是**取决于你手上有几个参数落在后两档**

⭐ **另外,下面三种情况要额外跑一套并对照**(都是「有人说了一句无人可验证的话,框架就照做」的地方):**① 有 `事后重构` 的必要条件** → 含它 / 不含它各跑一套排序;**② 用户覆盖了任何一维的误差带** → 按他给的 / 按默认各跑一套排序;**③ 换一种通勤方式会改变 gate 判定** → 两种都跑。**两套不同就必须显式声明**,⛔ 不许静默挑一套输出。

⛔ **①② 的对照表不许整块删掉**(模板第三节):不适用时**留着并写一行「本次无 `事后重构` 的必要条件」/「本次无人覆盖误差带」**。理由与「闭合上限那一格空着按不可闭合处理」同源——**判据必须是「这一格是不是空的」这种纯字面谓词。整块删掉之后,「跑过两套且一致」和「根本没跑第二套」在文件里长得一模一样。**

⛔ **绝不许输出「两个都不错,看你自己」。** 见「不对劲的时候」第 1 条。

---

## 二、写死的五条纪律(agent 不许改)

最小路径已经用上了全部五条。往下深潜时,**这五条仍然一个字不改**:

| # | 纪律 | ⛔ 违反的样子 |
|---|---|---|
| **1** | **Gate:必要条件 vs 加分条件,不可换。** 不满足直接出局,不进排序 | 把必要条件当成一个权重很高的维度,让它被别的维度补偿掉 |
| **2** | **真实时薪口径**:通勤计入分母;浮动按历史兑现率打折不按承诺值;期权不进现金分子 | 直接拿名义总包比大小;把通勤算成「生活方式选择」不算成本 |
| **3** | **出排序,不出综合分** | 给出 0-100 分、五星评级、红绿灯、加权总分 |
| **4** | **翻转点声明** + 每条假设的证据等级 | 给一个结论就走,不说这个结论建立在什么上、错多少会变 |
| **5** | **每条结论标来源**(`你给的` / `公开可查` / `我推测的`),推测项**不参与排序** | 把查不到的东西补成一个看起来合理的取值,混进表里 |

> **这五条是本模块与市面上任何一个 offer 记分板的全部差异。** 别的都可以按情况调;这五条一动,它就变回记分板了。

### ⭐ 前置声明:既不是维度、也不是参数的那一类(⛔ 它以前在框架里没有容器)

⚠️ **框架原本只有「维度」和「参数」两种东西,而有一类输入两种都不是。** 典型是**雇佣形式**(正式雇佣 / 合同制 / 计件 / 派遣):它自己**不是一维**(不参与排序、不比高下),也**不是一个参数**(不是算式里的一个数),⭐ **但它决定了别的维度怎么算** —— 有没有带薪假决定分子按几周算;要不要坐班决定通勤那一格填不填;住处定不定得下来决定租金与通勤两格能不能标硬。

⛔ **没有容器时,它只会散在正文的一句话里,而下游每一维各自解释一遍** —— 于是同一个前提在不同维度上被读成不同意思。现在给它一栏,⭐ **放在「口径与假设」的最前面,⛔ 先填它,再填参数表**。

| # | 前置声明 | 本次取值 | 来源标注 | ⭐ 它改变了哪几维的算法 |
|---|---|---|---|---|
| 前 1 | **雇佣形式**(正式雇佣 / 合同制 / 计件 / 派遣 / 未定) | | `你给的` / `公开可查` / `我推测的` | 分子(可计费周数)· 下行风险(保证期与试用期条款) |
| 前 2 | **要不要到固定地点上班**(坐班 / 混合 / 全 remote / 未定) | | | 分母(通勤是否按 0)· 生活成本(租金按哪个城市取) |
| 前 3 | **住处**(已定:__ / 未定) | | | 分母(通勤)· 生活成本(租金) |
| 前 4 | **跨时区**(同时区 / 差 _ 小时 / 未定) | | | 分母(跨时区错位) |
| 前 _ | ⭐ 本次自己加的前置声明 | | | ⛔ **必须写清它改了哪几维,不写不许用** |

- ⭐ **判据一句话,能一眼判**:**一个输入如果"它取什么值会改变另一维怎么算",它就是前置声明** —— ⛔ 不是维度,也 ⛔ 不是参数
- ⛔ **前置声明标 `我推测的` 时,它影响的那几维一律按单元格退出。** ⚠️ 理由:**一个推测的前提能同时污染好几维,比一个推测的取值更贵**
- ⭐ **逐列填**:不同列可以取不同值(A 坐班、B 全 remote 是完全正常的),⛔ 但**每一列自己的前置声明必须与那一列各维的算法一致**
- ⚠️ ⭐ **前 3「住处」与通勤 / 租金是一个循环**:住处取决于租金,租金又取决于住处。⭐ **解法就是把住处提到前置声明里先定死**;⛔ **定不下来时,通勤与租金两格必须一起标 `我推测的`** —— ⛔ 不许只标一格(只标一格会让另一格看起来是硬的)

### 参数与来源等级

本模块不写死任何阈值。**用到的参数只有下面这几个,每个都要在输出里标出来源等级:**

| 参数 | 默认 | 来源等级 | 说明 |
|---|---|---|---|
| `浮动兑现率默认` | 拿不到历史数据时按七折 | `默认建议值` | 同时按承诺值与按 0 各算一遍,看排序翻不翻 |
| `待命折算系数` | 待命小时按四分之一计入工时 | `纯占位待校准` | 没有任何实证支撑,**用户跑过一轮后应按自己实际体感改掉** |
| `一次性成本摊销年限` | 一年 | `默认建议值` | 搬家 / 租房 / 押金这类一次性支出摊几年 |
| `周工时默认` | 每周约四十五小时 | `纯占位待校准` | 仅在**用户连「现在」的工时都说不清**时兜底,见「开跑前」表 |
| `出差强度默认` | 每月约两天在途,无长期驻场 | `纯占位待校准` | 仅在**连「现在」的出差强度都说不清**时兜底。⛔ 岗位描述里写了驻场 / 现场支持的,**不许按 0 计** |
| ⭐ `跨时区错位默认` | 每工作日约一小时落在正常作息之外 | `纯占位待校准` | 仅在前置声明「前 4」为跨时区、而具体量说不清时兜底。⛔ 同时区时为 0;⛔ 岗位描述里写了"配合××时区"的**不许按 0 计** |
| ⭐ `可计费周数默认` | 全年约四十五周 | `纯占位待校准` | ⭐ **只在前置声明「前 1」不是正式雇佣时才用**(合同制 / 计件 / 无薪假)。⛔ 正式雇佣形态下不用它,分子按全年算 |
| ⭐ **agent 自己引入的参数** | **没有默认值** | ⭐ **必须标,多半是 `纯占位待校准`** | 见下面「⛔ agent 自加的参数」一节。⛔ 不进「口径与假设」表的,不许拿来排序 |
| `通勤计入方式` | 往返全额,不打折 | **写死,不是参数** | 见纪律 2 |
| `通勤口径` | 工作日早高峰 · 你实际会用的那种通勤方式 · 单程门到门(分母里换算成往返) | **缺省写死**;实际取值标 `自己估算` 或 `公开可查`(附查询日期与时段) | ⛔ **同一份对照表里所有列必须用同一口径**,口径不同的两列不可比。它同时是 gate 判据和分母输入,不定义死就能在 gate 门口被绕过 |
| `有条件满足的分母口径` | **用闭合前的通勤** | **写死,不是参数** | 闭合尚未发生;用闭合后会让「违反必要条件」反过来变成优势 |
| 维度权重 | **没有** | — | 本模块不做加权求和,所以没有权重可设。如果你一定要给维度排「先看哪个」,那是阅读顺序不是权重,标 `纯占位待校准` |

**参数来源等级只有三档**:`实践校准`(用户自己跑过一轮后按实际体感改过的取值——**只有它是有依据的**)/ `默认建议值`(本模块给的、有大致常识支撑的起手值)/ `纯占位待校准`(**没有任何实证支撑,纯粹是为了让算式跑起来**)。

⛔ **凡是你在输出里用到的数字,都要标它是这三档里的哪一档,或标 `你给的`。** 一个没标来源的数字和一个编的数字无法区分。

#### ⛔ agent 自己引入的参数:有方向声明义务,也必须有来源等级

⚠️ 上面那张「更保守 / 更激进」的表给 agent 自加的参数写了**方向声明**义务,却**没给它来源等级栏** —— 于是实跑里出现过:**执行者临时编了一个折算系数,而它决定了唯一参与排序那一维的判定**。一个**没进口径表、没标等级、没被采样**的数字,独自决定了整个结论。

- ⭐ **凡是你自己引入的参数**(任何"我按 ×× 折算""我把 A 换算成 B 的比率"),**必须与本模块自带参数同等对待**:⭐ **进「口径与假设」那张表**,⛔ 不许只出现在正文的一句话里
- ⭐ **必须标来源等级,判据一句话**:**用户没给过、本模块没写过、公开渠道也查不到 → 它就是 `纯占位待校准`。** ⛔ 不许因为"这个折算很常识"就标 `默认建议值` —— **`默认建议值` 只属于本模块参数表里写着的那几个**,⛔ 自己加的进不了这一档
- ⭐ **于是它自动落进三点采样义务**(后两档必采);⚠️ 并且它一入表,**本次落在后两档的参数就至少有两个 → 交互项被触发**(见下)
- ⚠️ **方向声明不能替代来源等级**,两件事:**方向管采样怎么采,等级管要不要采**。⛔ 只写了方向就直接用,等于跳过了采样义务

#### ⛔ 三点采样义务:不是浮动兑现率的专属

> **凡是来源等级为 `默认建议值` 或 `纯占位待校准` 的参数,一律做三点采样**(本模块默认值 / 一个明显更保守的取值 / 一个明显更激进的取值),并把结果写进翻转点或「查了也不会翻」。`实践校准` 和 `你给的` 不必采。
>
> ⚠️ **这一整套(含下面的交互项)属于深潜,不在最小路径里** —— 最小路径按默认值先算一版,并在「口径与假设」写一行「本次未做三点采样,这是初版排序」。见第一节。
>
> ⚠️ **最容易被漏掉的是 `周工时默认`**:「开跑前」那张表自己写着"用户连『现在』的工时都说不清,就退到它",而它标 `纯占位待校准`。⭐ **一旦退到它,本次就至少有两个参数落在后两档**(它 + `浮动兑现率默认`)—— **交互项因此被触发**。⛔ 不许因为"用户没主动提工时"就当它不存在。
>
> ⛔ **唯一的例外:估算误差带不做三点采样**(理由见下面「估算误差带」一节)。三点采样的对象是**算式里的参数**,不是**判断算式结果算不算变化的那把尺子**。

**为什么扩到全部而不只是兑现率**:

- `一次性成本摊销年限` 从一年改成三年,实测**排序不翻,但决胜维从「生活成本」换成了「发展空间」**——名次没动,**给用户的整套理由却全换了**。只盯着「排序翻不翻」会漏掉这一类
- `待命折算系数` 自己标着「没有任何实证支撑」,却在旧版里没有任何采样义务——**一个承认自己是编的数字,比一个可能不准的数字更需要被采样**

⭐ 采样结果有两种合格形态,缺一不可:**① 名次变了 → 写进翻转点**;**② 名次没变但决胜维或理由变了 → 也要写一行**「按 X 算名次不变,但第 1↔2 的差会从『某维』换成『某维』」。

##### ⛔ 「更保守 / 更激进」的方向,逐参数写死(不许现场解释)

「保守」对多数参数**双向可读**(摊销年限的「保守」是摊 1 年还是摊 5 年?),解释权一旦留在现场,采样就等于没做。**本模块统一按「对该 offer 的吸引力更不利 = 保守」定义**,逐条写死:

| 参数 | 更保守(= 对该 offer 更不利) | 更激进 |
|---|---|---|
| `浮动兑现率默认` | **按 0** | 按承诺值全额 |
| `待命折算系数` | **按二分之一**(待命更像工作 → 分母更大 → 时薪更低) | 按 0(待命不算工时) |
| `一次性成本摊销年限` | **摊 1 年**(当年全额吃掉,年化代价最大) | 摊 5 年 |
| `周工时默认` | **每周约五十五小时** | 每周约四十小时 |
| `出差强度默认` | **每月约一周在途,或有长期驻场** | 不出差 |
| ⭐ `跨时区错位默认` | **每工作日约两小时落在正常作息之外** | 不错位 |
| ⭐ `可计费周数默认` | **全年约四十周**(可计费的周数更少 → 分子更小 → 时薪更低) | 全年约五十周 |
| agent 自己引入的参数 | 采样前**先写一句**「这个参数往哪个方向动会让这一列更不利」,再据此定两端 | — |

##### ⛔ 至少跑一次「两个参数同时取保守值」(交互项)

单参数逐个变动会漏掉**交互项**:「浮动按 0」单独不翻、「摊销按 1 年」单独也不翻,两者**同时**成立时可能翻掉名次。

- ⭐ **只要有两个及以上参数落在 `默认建议值` / `纯占位待校准` 两档,就额外跑一次「它们同时取保守值」**,结果按上面两种合格形态之一写出来
- ⛔ 不必穷举所有组合(那会把深潜撑爆)。**同时取保守值这一次是下限,不是上限**——发现它翻了,再往回定位是哪一对在起作用
- ⚠️ **交互项不是走形式。** 实跑里出现过这样的样本:**单参数逐个采样一个都不翻,只有交互项翻**(同时取保守值时,某一列跌到低于「留在原地」)。⛔ 见到"单参数都没翻"就跳过交互项,正好漏掉唯一会翻的那一次

#### ⛔ 估算误差带:每一维一个默认值,且必须先声明后排序

**「差幅小于这一维的估算误差带就换下一维说」这条规则,只有在误差带是事先定好的时候才成立。** 实测过:同一份数据,误差带取 ±1 指数点时决胜维是「真实时薪」,取 ±5 时决胜维变成「生活成本」——**同一份数据两套解释链**。所以误差带不能等看到结果再挑。

| 维度 | 默认误差带 | 来源等级 | 说明 |
|---|---|---|---|
| **① 真实时薪(指数,基准列 = 100)** | **±5 指数点** | `默认建议值` | ⭐ **这一维必须报误差带**,它是最小路径里唯一必算的一维。工时与加班多半是自己估算的,±5 是给这部分估算留的余量 |
| **② 发展空间** | 定性三档(强 / 中 / 弱),**相邻一档视为分不出来** | `纯占位待校准` | 没有可比的数值刻度,所以误差带只能定成「差一档不算差」 |
| **③ 生活成本(折成年化可支配的指数)** | **±3 指数点** | `纯占位待校准` | 租金取的是公开挂牌中位数量级,个体实际落点可以差很多 |
| **④ 下行风险** | 定性三档,**相邻一档视为分不出来** | `纯占位待校准` | 同 ② |
| agent 自己加的维度 | **默认按「定性三档,相邻一档分不出来」处理** | `纯占位待校准` | 想用更细的刻度,先说清刻度是怎么来的 |

规则:

- ⭐ **在开始排序之前**把这张表里本次实际采用的取值写进 `offers.md` 的「口径与假设」一节,**连同来源等级一起报出来**。⛔ 不许排完序再回头调误差带
- ⭐ **比较口径写死,只有一种读法**:**差幅必须严格大于该维误差带的绝对值,才算"分得出来"。** ⛔ 不许读成"两列各带 ±N、区间重叠即分不出来"(那等于把门槛悄悄放大一倍),⛔ 更不许现场在两种读法之间挑。**两种读法在同一份数据上会给出不同答案**(典型:两列差 5 指数点、误差带 ±5 —— 按写死这条是"分不出来",按重叠读法也是"分不出来",但两列差 8 时两种读法就分家了),所以必须钉死一种
  - 定性三档的那几维照旧:**相邻一档视为分不出来,跨两档才算分得出来**
- ⛔ 误差带**只用来判断「这一维分不分得出来」**,不用来加宽或收窄结论的措辞,也不许拿它当置信区间写成「95% 区间」这类东西——它是一个约定,不是统计量

#### ⛔⭐ 跨越一年以上的比较:看的是斜率,⛔ 不是相邻两次的差

⚠️ **误差带那条「相邻一档视为分不出来」在多年尺度上会系统性抹掉缓慢下滑** —— ⭐ **三年滑三档,每年看都是相邻一档**:每一次比较都判"分不出来",于是三年下来的那三档在输出里**一点痕迹都不剩**。⭐ **多年尺度要的是斜率,而框架里没有斜率。**

> ⭐ **判据写死,纯字面**:**比较跨越一年以上时,看的是「这几年是往哪个方向走的」,⛔ 不是「今年和去年差几档」。**

- ⭐ **触发判据(字面)**:这一维上**最早那次观察与最近那次观察之间跨了一年以上**(按各自的材料日期算)。⛔ 跨不到一年 → 不触发,照旧按误差带逐次比
- ⭐ **趋势的判据(字面)**:**同一维上连续两次观察同向** —— 连着两次都在往下,或连着两次都在往上,⛔ **中间没有一次反向** → 记为一条**趋势**
  - ⚠️ **两次同向就够,⛔ 不要求三次**:多年尺度上多数人手里只有两三个时点;门槛定到三次,这条规则在真实材料上**恒不触发** —— ⭐ **和一条坏掉的规则无法区分**
  - ⭐ **每次观察必须带它的时点**(材料日期,见第三节)。⛔ **没有时点的观察进不了趋势判定**,也 ⛔ 不许按"大概那几年"补一个
- ⭐ **趋势本身就是一条可以参与排序的事实**,按 `方向确定 · 量级不明` 那一档处理(见上一小节):✅ **可以用它定先后**;⛔ **不能拿它算差幅**、⛔ **不能拿它判决胜维**(每一步都落在误差带以内,所以它没有量级)
- ⛔ **不许把三次观察各自跟误差带比一遍、然后说"三次都分不出来"** —— ⚠️ **那是把一条趋势拆成三次分不出来**,正是这一小节要挡的东西
- ⭐ **措辞写死**:**「这一维上,从 ×× 到 ×× 是一路在往下走的(××→××→××);每一步都小到分不出来,但方向连着没变过。」** ⛔ 不许简化成「这一维分不出来」,⛔ 也不许写成「跌了三档」(那是在给一条没有量级的事实编一个量级)
- ⭐ **它是第三档里唯一能写进翻转点的一种,⛔ 别推广到别处**:第三档一般 ⛔ **不进翻转点**(没有可落在刻度上的取值,见上一小节);⭐ **而趋势有一个二值的临界取值 —— 「连续两次观察反向」**,与 `待你确认` 那条二值翻转点同型。⛔ 不许给它编一个刻度上的数

#### ⭐ 第三档:`方向确定 · 量级不明`(⛔ 旧版只有"分得出来" / "分不出来"两档)

⚠️ **实跑撞到的形态**:某一维上有一条**方向明确的硬差异**(A 比 B 好,这一点是确定的),⛔ **但材料里零金额、零刻度,量级判不出来**。旧版两档里它只能落进「这一维分不出来」—— ⭐ **于是它和"两列真的差不多"在输出里长得一模一样**。

⛔ **而这两者的下一步动作正好相反**:

| 这一维的真实状态 | 它是什么 | 下一步 |
|---|---|---|
| **两列真的差不多** | 差幅不过误差带 | ⭐ **换下一维,别再管这一维了** |
| ⭐ **`方向确定 · 量级不明`** | ⭐ **这一维已经有结论了**,缺的只是"差多少" | ⭐ **把量级问出来**;⚠️ **而它若是本次的决胜位置,方向本身可能已经够用了** |

⚠️ **把两种性质不同的东西收进同一句话,正是本模块自己点名反对的失败模式**(同「④ 可问而未问 ⛔ 不许并进 ① 真缺数据」、同「两维方向相反 ⛔ 不许走『分不出来』出口」)。

- ⭐ **判据写死,纯字面,一眼判**:

  > **这一维上有没有一条 `你给的` 或 `公开可查` 的事实,能确定 A 优于 B(哪怕说不出优多少)?**
  > **有 → `方向确定 · 量级不明`。⛔ 没有 → 才是「这一维分不出来」。**

  - ⛔ **`我推测的` 撑不起这一档**(连同 `你给的(原话记不清)` 与上游标 `未验证` 的那些 —— 它们在排序里按 `我推测的` 处理):**靠推测得出的"方向"不是方向,是猜**
  - ⛔ **也不许拿"我算了一下大概是 A 高"去凑** —— 那是一个**算得出差幅**的比较,它要么分得出来、要么分不出来,⛔ 不进这一档
- ⭐ **它算「分得出来」的一种,⛔ 不许当成「分不出来」扔掉**,⛔ 也不许因为它"没有数"就整维退出
- ⭐ **它能做什么 / ⛔ 不能做什么(写死)**:
  - ✅ **排序时可以用它定先后** —— 「A 在这一维上优于 B」本身就是一条可用的先后关系
  - ⛔ **不能用它算差幅**(没有量级就没有差幅),⭐ **因此 ⛔ 不能用来判"是不是决胜维"** —— 判决胜维要拿差幅去和误差带比,⚠️ **而这一档两样都没有**
  - ⛔ **不能拿它去写翻转点** —— 翻转点必须带临界取值,而这一档没有可落在刻度上的取值。⭐ 它的正确去处是必问项(见下一条)。⚠️ **唯一的例外是「跨越一年以上的趋势」**(见上一小节):那一种有一个二值临界取值("连续两次观察反向"),⛔ 别把这个例外推广到第三档的其余情形
  - ✅ ⭐ **它能触发「两维方向相反」出口** —— ⚠️ 那个出口的触发判据字面要求"差幅严格大于误差带 / 定性维跨两档",⛔ **而这一档两样都没有**,于是「一维是第三档、另一维与它方向相反」以前**两个出口都够不着**。⭐ **写死:这一档算"分得出来"的一种,因而照样触发方向冲突出口**(全文见第 4 步那一节)
- ⭐ **输出措辞写死(⛔ 不许简化)**:**「这一维 A 优于 B 是确定的,但优多少不知道。」**
  - ⛔ 不许简化成「A 更好」—— **丢掉了"多少不知道"**,读起来像一个已经量化过的结论
  - ⛔ 更不许写成「这一维分不出来」—— **丢掉了已经拿到的那个结论**,用户会以为该换下一维
- ⭐ **必问项里必须配一句能问出量级的具体问法**(⛔ 不许只写「再确认一下这一维」):问法要落在**这一维自己的刻度**上。例:真实时薪那一维 → 「这两边在这一条上,差的是几成,还是成倍?」;定性三档的那几维 → 「这两家在这一条上是差一档还是差两档?各举一件具体发生过的事。」
- ⭐ **名次完全由这一档定出来时,"差在哪一维"那一栏怎么写(⛔ 别留空,⛔ 更别硬编一个决胜维)**:照着写 —— **「本次第 1↔2 的先后,是由『××这一维上 A 优于 B 是确定的』定出来的;⛔ 这一维没有量级,所以本次没有决胜维。」** ⭐ 并把上一条那句问法写成必问项 —— **量级问出来之后,才谈得上决胜维。**

#### ⛔ 用户覆盖误差带:三条硬约束(这是本节唯一的口子,必须收住)

「用户给了自己的取值 → 标 `你给的`,优先于默认」这一句以前是**无下限、无论证义务、无时点约束**的。实测:在一组**薪资结构完全同构**的样本上(同薪数、都无浮动、同社保缴纳地,所以「结构差异大 → 必须问具体数字」那条旁路不会触发),top2 真实时薪差 1.4 指数点——

- **±5(默认)→ 决胜维 = 生活成本 → A 第 1**
- **±1(用户声明)→ 决胜维 = 真实时薪 → B 第 1**

**换掉的不只是决胜维,是名次。** 而「⛔ 不许排完序再回头调」拦不住它:多轮对话里用户看完排序再说一句「我觉得误差带该按 ±1」,触发的是「用户取值优先于默认」,**两条规则直接对撞**。所以补三条:

**① ⛔ 收窄要给理由,且理由要对得上具体哪一项估算**

- 用户收窄误差带时,**必须同时说明凭什么收窄**,并指明它对应**哪一项估算误差**。例:「我有考勤打卡数据,工时不是估的」→ 对应的是 ±5 里给「工时与加班自估」留的那部分余量
- ⛔ **给不出理由的,按默认值走**,并在「口径与假设」里写一行「用户要求收窄至 ±N,未给出对应的估算依据,本次仍按默认 ±M」

**② ⭐ 只要覆盖了任何一维的误差带,就同时按默认值再跑一遍**

- 两套名次**相同** → 正常输出
- 两套名次**不同** → ⭐ **必须显式声明**:「**按你给的误差带是这个顺序,按默认误差带是另一个顺序 —— 这个结论完全建立在你对自己数据精度的判断上。**」⛔ 不许只输出其中一套
- 名次相同但**决胜维**不同 → 也要写一行(同三点采样的第 ② 种合格形态)

**③ ⛔ 加时点留痕:这一格要写「声明于第几轮 / 是否修改过」**

- 模板的误差带表补这一列,`offers.md` 里照填。改过就写「第 1 轮 ±5 → 第 4 轮改为 ±1(看到排序之后)」
- **理由**:**一个从来没被观测到「先声明」过的先后约束,和一个没有这条约束的模块无法区分。** 「不许排完序再回头调」如果在机械层面无痕,它就只是一句话

#### ⛔ 裁决:误差带不做三点采样

「参数与来源等级」那张标签体系表曾把误差带划进「后两档必采」的范围,与本节「⛔ 不许排完序再回头调」直接冲突(采样 = 同时拿多个取值跑)。**裁决:误差带不采样。**

**理由**:**你需要误差带来判断采样结果算不算变化,再去采样误差带本身是循环的。** 误差带是那把尺子,不是被量的东西。它改用上面 ①②③ 三条约束(要理由 / 两套都跑 / 留痕)。

---

## 三、交给现场检索的部分(websearch)

**不做数据库,也不让用户手填几十个格子。** 下面这些你现场查,查到的标 `公开可查` 并附来源与查询日期:

| 查什么 | 用在哪一维 |
|---|---|
| 相关城市 / 区域的租金水平(公开挂牌的中位数量级即可) | 生活成本 |
| 两地之间的通勤时长(公开地图服务的通勤时段耗时) | **只进真实时薪的分母。** ⛔ 通勤的**时间**不再进生活成本——那是同一笔时间罚两次。生活成本只收通勤的**货币**部分(交通费) |
| 通勤的公开票价 / 里程油耗量级 | 生活成本(**只算钱,不算时间**) |
| 社保公积金缴纳基数与比例的公开政策 | 生活成本(折成年化可支配的差异) |
| 公司的**公开**融资轮次、公开新闻、这条业务线**公开可见的上线时间**(= 存活史) | 下行风险。⛔ **只用作「这条线开了多久」,不由「轮次 + 距今时间」反推还能撑多久。** 那个推算需要你拿不到的烧钱速率,算出来的数看起来精确,实际是编的——它和「⚠️ 检索的边界」里禁掉的「这家公司还能撑多久」是同一件事,只是绕了一道 |
| 行业 / 职级的公开薪资锚点 | 判断名义数字是否偏离常态,**不用来定阈值** |

### ⭐ 材料日期 vs 检索日期:⛔ 两件事,别只标一个

⚠️ **实跑里三个独立案例都撞上同一件事:只标了检索日期,没标材料日期** —— 于是「**当时可不可知**」和「**现在是否属实**」被混成一件事。其中一个直接踩雷:**最关键的那条公开信息,公示时间晚于当事人的决策时点** —— 它只能算"今天可核实的事",⛔ **不能用来评价他当时的判断**。⚠️ 那个案例是执行者自己发现并写破的,**而框架里没有任何一条规则要求他这么做**。现在写死:

- ⭐ **每一格 `公开可查` 要标两个日期,缺一个都不算标全**:**① 你查到它的日期**(检索日期)· ⭐ **② 这件事公示 / 发生的日期**(材料日期,⛔ 不许省)
  - 材料日期本身查不到时,写「**材料日期不详**」,⛔ 不许拿检索日期顶替 —— 那等于把"今天查到的"说成"当时就有的"
- ⭐ **纪律写死**:**一条公开信息的公示时间晚于用户的决策时点时,它只能用于「今天该怎么办」,⛔ 不能用于「他当时判断得对不对」。** 拿一件当时根本不存在的信息去要求当时的人,是事后诸葛,也是本模块 README 点名反对的光环效应的另一种形态
- ⭐ **落表动作写死**:那一格**照填、照标来源**,⭐ **但在这一维的比较里按单元格退出**(与 `我推测的` 同待遇),并在表下写一行:「**这一格公示于决策时点之后,只用于往后怎么办,⛔ 不用于评价当时的判断。**」
- ⚠️ **判据是纯字面的**:**材料日期 > 决策时点** → 触发。⛔ 不靠"这条算不算当时该知道的"这种裁量
- ⚠️ **本模块默认的决策时点是「正在做决定」= 今天**,那种情形下这条纪律恒不触发(材料日期不可能晚于今天)—— ⭐ **它是给回溯 / 复盘场景准备的,而模块此前只预设了「正在做决定」这一种时点**

### ⛔ 查不到的,升级为「答复前必问项」,不猜

查不到就写成一条**具体的、能问出口的问题**,注明该问谁。这是 `03-company-analysis` 那条「查不到的信息升级为必问项而非放弃」的直接套用。

**问法一律改成过去式**——不问「这里加班多吗」,问「**你上周几点下班?上一次连续加班是哪个项目、持续多久?**」。承诺兑现度同理:「**这一条写进 offer letter 了吗?**」——**没落纸的按 0 计**。

### ⚠️ 检索的边界

⛔ **只查公开渠道可得的。** 不查、不推测、不要求用户去打听:现金流状况、内部财务、未公开的经营数据、这家公司还能撑多久。

**理由不是谨慎,是这类判据对用户没用**:候选人在面试阶段根本拿不到,拿到了也无从验证,而一个建立在拿不到的信息上的判断,看起来精确,实际上是编的。**凡是「公司好不好」的问题,全部改写成「这个岗位会发生什么」**——后者你问得到,且才是真正要决策的东西。

---

## 四、可选维度池(不是必填清单)

四个基础维度 + ⭐ 一维「**既得资产**」(⭐ **只在真的有既得资产时才留**,判据见下面那一小节)+ 若干 AI 时代维度,**全部可选**。挑选判据只有一条:

> ⭐ **这一维在这几个选项上取值不同吗?取值不同才留。**

三个选项上取值几乎一样的维度,写进表里只是让表更长,不会改变排序——删掉它。

> ⛔ **唯一的例外,写死**:⭐ **一个"一旦取到某值就让某列直接出局"的二值维,即使本次取值相同也不许删。** 它的价值**不在区分度,在出局判定** —— 删掉它,本该被判出局的那一列会带着完整名次留在表里。⚠️ **这条例外由第 4 步的「上位出口」管着**:有一列被硬约束判出局时,⭐ **必须出结论**,⛔ 不许因为别的维数据不全就压成"数据不够"。

### 基础四维

| 维度 | 怎么算 | 关键点 |
|---|---|---|
| **① 真实时薪** | 见第 2 步 | **唯一在最小路径里必算的一维** |
| **② 发展空间** | 三个子项,逐项标可答性,见下面的小表 | ⚠️ 这一维极易全部落到 `我推测的`,那就**不参与排序** |
| **③ 生活成本** | 租金 + **通勤的货币成本(交通费)** + **一次性搬家 / 租房成本按 `一次性成本摊销年限` 摊销** + 社保公积金差异 → 折成**年化可支配** | ⛔ **通勤的时间不进这里**——它已经全额计入了真实时薪的分母(纪律 2),再算一次就是同一笔时间罚两次。这里只收交通费。**一次性成本最容易被整个漏掉**:「要求月底前入职、得留出时间处理租房搬家」就是一笔真实的、会改变排序的成本 |
| **④ 下行风险** | 现金部分是否依赖期权兜底 / 这条业务线的**存活史**(开了多久、换过几任、上一任去哪了) / 试用期与保证期条款 / **最坏情况沉没的是时间还是钱**(⚠️ **这是未来时态**:问的是"接下来可能赔进去什么",⛔ **它不覆盖"已经投进去的那些"** —— 那一类见下一小节) | 与面试前评估直接接续:**公司大概率不成、但能拿到目标经验且下行可控,仍可能是好选择**;反过来也成立 |

#### ⭐ 已经投入的东西:⛔ 沉没成本与既得资产是两类,框架里以前一个格子都没有

⚠️ **旧版对"已经投入的东西"只有半格,而且方向是反的。** ④ 下行风险里那句「最坏情况沉没的是时间还是钱」是**未来时态**;唯一的跨期机制(`一次性成本摊销年限`)摊的是**将来要付的**。⭐ **于是框架在立场上是反沉没成本的,而它没有区分下面这两类** —— ⛔ **对第二类照搬「别被沉没成本绑架」,是在劝人放弃自己的东西。**

⚠️ **具体点说**:对一个已经排了多年队、已经积累了**可保留的既得资格**的人,「别被沉没成本绑架」是**有害建议** —— 那不是心理包袱,是**一笔换个雇主就要重来的真实资产**。

| | 判据(字面) | 怎么处理 |
|---|---|---|
| **沉没成本**(认知偏差) | 已经花掉的时间 / 精力 / 情感,**换个地方不会退给你,也带不走** | ⛔ **不进排序** —— 它已经花了,对"接下来去哪"没有信息 |
| ⭐ **既得资产**(真实资产) | 已经积累的东西,**离开会失去或需要重新积累**,且**它有明确的载体**(资格 / 年限 / 排期 / 归属期 / 认证 / 内部信用) | ✅ **进排序**,算在「留在原地」那一列的**收益侧** —— ⭐ **离开的代价里必须显式包含"重新积累它要多久"** |

⭐ **判据一句话,能一眼判**:**「如果我明天离开,这个东西是留下、还是清零重来?」** —— ⭐ **清零重来 = 既得资产(要算)**;**本来就带不走、也退不了 = 沉没成本(不算)**。

- ⭐ **既得资产以一维进表**(按本节唯一的挑选判据「取值不同才留」:多数样本上只有「留在原地」这一列有取值,其余列为空 —— **取值不同,所以留**)。⭐ **刻度写死 = 重新积累它需要多久**(⛔ 不换算成钱,那要一组你没有的汇率)
  - ⛔ **没有明确载体就填不出取值**,那一格记 **`空`**(⛔ **不是 `我推测的`** —— 见「作用粒度」那节的三档)
  - 误差带按定性维处理:**相邻一档视为分不出来**,标 `纯占位待校准`
- ⛔ **写死一条禁令:不许对既得资产说「别被沉没成本绑架」。** ⚠️ 那句话是对付**认知偏差**的;⛔ 用在**真实资产**上,它劝的是"放弃你自己的东西"
- ⭐ **判成沉没成本的那几项,⛔ 不许静默删掉** —— 表下写一行:「**这几项是已经花掉、也带不走的,所以没进排序:××、××。**」⚠️ 理由与本模块所有留痕规则同源:**删掉之后,「判过了、判成不算」和「根本没想过」在文件里长得一模一样。**
- ⚠️ **两类经常同时存在,⛔ 不许因为里面掺了情感成分就把整块判成沉没成本** —— ⭐ **逐项按上面那一问分开判**,分完各走各的

#### ② 发展空间的三个子项(逐项标可答性,⛔ 不写「都能在面试里验证」这种前置断言)

| 子项 | 问法(过去式 / 行为化) | 可答性 | 🔴 危险信号 / 🟢 好信号 |
|---|---|---|---|
| **6-12 个月能否打出明确、可验证的阶段性进展** | *如果我干满一年,什么东西能证明是我做成的?这个东西现在有人在做吗?* | **大概率能答** | 🔴 只说得出「帮忙 / 支持 / 参与」这类没有边界的活 · 🟢 说得出一件有明确交付物、且当前没人占着的事 |
| **授权范围与汇报线**(合并了原「你在闭环里的位置」) | *我的产出最后由谁签字?如果里面有个错误上了线,复盘会上是谁负责?* | **大概率能答** | 🔴 签字的人和担责的人不是同一批 · 🟢 这个岗位是某个明确范围的 owner,且有拒绝权 |
| **最近一次丢单是输给了谁,对方赢在哪一点**(替换原「市场是蓝海还是已白热化」) | *最近一次丢单,是输给了谁?对方赢在哪一点?* | **大概率能答** | 🔴 「我们没怎么丢过单」——要么没在真打,要么不打算跟你说真话 · 🟢 说得出具体竞对 + 具体原因(价格 / 交付周期 / 某个功能 / 关系) |

> ⭐ **「6-12 个月能否打出明确、可验证的进展」是三条里最强的单一判据。**
>
> ⚠️ **原来挂在这里、现在已经删掉或移走的三条,别再加回来**:
> - ❌ **「人才·产品·技术·商业化四条策略是否彼此吻合」——整条删除,没有候选人版本。** 候选人根本看不到商业化策略;「吻合」不可测,事后怎么讲都成立。**这正是本模块 README 自己点名反对的光环效应**:先知道结果,再倒推出一套「当初就很吻合 / 当初就不吻合」的解释
> - ❌ **「市场是蓝海还是已白热化」** ——市场饱和度是尽调项,候选人拿不到可靠取值,也给不出 🔴/🟢 判据。已换成上表第三行的行为化问题
> - ➡️ **「团队的 AI 使用程度」已从本维移走**,见下一小节——它不是发展空间

#### ⚠️ 这个岗位或团队的人离开后去了哪里(**问出来的,不是查出来的**)

> ⚠️ 这是一条**问出来**的信息。问未来直属上级即可:*这个岗位过去两年离开的人去了哪里?团队里有人内部转岗过吗,转去了哪?*
> ⛔ **不检索、不整理特定前任的个人档案。** 这是本仓库「不采集他人个人信息」那条边界,没有例外。
> ⚠️ 它有**系统性偏差**:去处好的可见、去处差的不可见,所以你拿到的答案**偏乐观**,不能当成硬证据。
> ⚠️ 实测中它**经常一条都问不到**。**问不到时整维标 `我推测的`、不参与排序**,⛔ 不要因为它「听起来最硬」就破例把它当成可以撑起排序的那一条。

#### ⚠️ 只记录、不排序:团队的 AI 使用方式

> ⚠️ 下面这几项是**可观察到的差异,不是对成长速度的判断**。「组织 AI 成熟度高 → 个人成长更快」这条因果**没有任何研究测过**——同一批人在 AI 重度 / 轻度环境下的技能增长差异,学习侧至今没有对照数据。所以:**只记录观察,不进排序,不写「所以你会成长更快」**。
>
> - 团队的 AI 使用程度与内部理解是否统一(问法:**同一个问题分别问两位面试官,看答案差多远**)

### AI 时代必问项(默认不是维度,拿到具体回答才升级)

⚠️ **这三条默认是「面试必问项」,不是维度。** 实测里它们在三类样本上取值全是推测——按本节唯一的挑选判据(「取值不同才留」),推测出来的「不同」不算不同,所以它们默认出池。

**只有当用户在面试里真的问了、并拿到了具体回答(→ `你给的`)时,才升级成一个维度加进表**:

- **经验溢价 × AI 暴露度**:*做满三年的人和刚入职三个月的人,日常具体做的事有什么不同?能举一个只有做满三年的人才做得了、而现在的 AI 明显做不了的具体任务吗?* —— 好答案举得出依赖上下文 / 关系 / 责任的具体任务;坏答案是「更熟练、更快、更知道流程」;**最坏是答不上来**
- **学徒通道是否还存在**:*团队里最近一个新人是怎么带出来的?以前给新人做的哪些活现在交给 AI 了?*
- **信号可迁移性**:*一年后我想向外部证明我在这里做成了什么,手上能拿得出的具体东西是什么?*

> ⚠️ 这几条的公开证据全部停在**职业层**,用到「某公司某岗位」是外推。**没拿到具体回答就一律标 `我推测的`,并留在「答复前必问项」里,不进表。**

### ⚠️ 自由发挥的边界

你可以自己加维度、自己组织对话节奏、自己决定深潜到哪一层。**唯一的边界是来源标注**:

> **你自己加的维度,它的取值必须能标成 `你给的` 或 `公开可查`。标不出来就只能是 `我推测的`,而 `我推测的` 不参与排序**——只列进「要证实它,你该问谁 / 查什么」。

**写死的五条负责区分度,来源标注负责不让自由发挥变成编造。**

---

## 五、输出格式(六件事,缺一不可)

写进 `offers.md`,**按下面这个顺序排** —— ⭐ **第 1 件在最前面**:

1. ⭐ **一页纸** —— **产出的第一部分,⛔ 不是附录。** 空模板见 [`templates/offer-matrix.md`](templates/offer-matrix.md) 最前面那一节。

   ⚠️ **为什么它被排到第一**:一次端到端实跑里,用户**反馈「看都看不懂」**。⛔ **问题不在准入门槛** —— 本模块在那一头是过关的(只要一个能读写本地文件的 agent、全是 markdown、不需要 git);问题在**产出本身**:几十 KB,里面是误差带 · 指数 · `纯占位待校准` · "我引入的折算" · 多层嵌套表 · 四种标记 · 三套标签体系。⭐ **「不需要装工具」和「他读得懂」是两件事**,而后者以前没有被任何一条规则保证过。

   **这一页里必须有、且只有这四件事**:

   1. ⭐ **顺序,以及第 1 名和第 2 名差在哪一件事** —— 一句话,用**他自己听得懂的说法**(例:「差的不是钱,是现在这份工作已经不满足你写下的那条『半年内要有一件明确属于我的产出』」)
   2. ⭐ **哪个假设变了会翻** —— 一句话(「如果 ×× 变成 ××,顺序就变成 ××」)。⚠️ **一条都没有时照写**:「不管哪一条变,顺序都不变。」
   3. ⭐ **这几天该做什么** —— **具体动作 + 找谁 + 原话说什么**。⛔ 不许写「再想想」「多了解一下」「谨慎评估」
      - ⭐ **这一块有三种措辞(⛔ 旧版只有两种),⛔ 不许现场挑 —— 按「口径与假设」里那个决策时点字段自动选**:
        - **A · 正在做决定(缺省)** → **保持现状**:标题就是「这几天该做什么」,逐条写动作
        - ⭐ **B · 回溯 · 复盘(那件事已经结束)** → ⛔ **上面那句用不了**(事情已经发生了,没有"这几天")。标题改成「**这一次已经定了的,和下一次要提前做的**」,**分两段写**:
          - **① 这一次已经定了的部分** —— 照实写,⛔ **这一段不出动作**(它已经不可改了)
          - **② 下一次遇到同类处境时,提前做什么** —— ⛔ **每条的措辞必须落在"下次"**:「**下次在 ×× 之前,先 ××**」
          - ⛔ **不许写成「你当时应该……」。理由**:**回溯的用途是让下一轮不再漏,不是让人后悔。**「你当时应该」这句话**产出零个可执行动作** —— 它读起来像一条建议,⚠️ **而没有任何人能执行它**(那个时点已经过去了)
        - ⭐ **C · 决策在过去做出、但至今仍在继续(⛔ 新增,⛔ 不许拿 B 去凑)** —— 典型:当初定了留下 / 定了接,而那件事**今天还在过着**,而且**今天仍然动得了**。⚠️ **A 和 B 都不合身**:A 假设"决定还没做",B 写死"这一段不出动作 + 措辞落在下次" —— ⛔ **照抄 B,会把"今天就该发的那封邮件"用措辞推到「下次」**。标题改成「**当初定的那件事,和今天还能动的那部分**」,**同样分两段写**:
          - **① 当初定的是什么、当时依据的是什么** —— 照实写,⛔ **这一段不出动作**(与 B 的第 ① 段同)
          - ⭐ **② 今天还能动的那部分** —— ⛔ **每条的措辞必须落在"今天"**:「**今天就 ××**」。⛔ **不许写成"下次"**,⛔ 更不许写成「你当时应该……」
          - ⭐ **「可问而未问」的那几格在 C 里落在第 ② 段**,措辞照 A:「**今天给 ×× 发一句:『××?』**」
        - ⭐ **判据是纯字面的,一眼分**:那个字段填的是"正在做决定" → **A**;填了一个过去的日期,**且那件事已经结束、今天不可能再动** → **B**;⭐ 填了一个过去的日期,**但那个决定今天仍在继续、今天仍然做得了动作** → **C**。⛔ 字段空着不许猜,回去把它问出来(它是「开跑前」输入表里的必需项)
          - ⭐ **B / C 分不清时缺省走 C**(保守缺省):⚠️ **判成 B 的代价是把一个今天能做的动作推到"下次",判成 C 的代价只是多写一条今天做不了的动作** —— ⛔ **两个方向的代价不对称,缺省必须偏向"今天还能动"**
      - ⭐ **「可问而未问」的那几格排在这一栏最前面**(判据见第 4 步的四类诊断)—— 它们**今天就能做完**,人话版照着写:「**今天给 ×× 发一句:『××?』**」。⛔ 不许把它们和"拿不到的那些"混成一句「信息还不够」
        - ⭐ **B(回溯)里它们的落点是第 ② 段**,措辞跟着换:「**下次在拿到录用通知的当天就发一句:『××?』**」
      - ⛔ **三种措辞下都不变的**:每条仍然是**具体动作 + 找谁 + 原话说什么**
   4. ⭐ **这一页的话是从哪儿来的** —— 三句人话,见下

   ⛔ **禁用词表(纯字面判据 —— 出现任何一个就是没收敛完,回去改说法,⛔ 不许现场论证"这个词他应该懂")**:`纯占位待校准` · `默认建议值` · `实践校准` · `误差带` · `gate`(连同 `gate 未通过` / `gate 待定` / `无 gate` / `有条件满足(待闭合)` / `未成 offer`)· `指数` · `折算系数` · `三点采样` · `交互项` · `临界取值` · `决胜维` · `翻转点` · `来源标注` · `证据等级` · `你给的` / `公开可查` / `我推测的` · `按单元格退出` / `整维退出` · `事后重构` · `L1` / `L2` / `L3` · ⭐ `待你确认` / `未经确认` · ⭐ `前置声明` · ⭐ `硬证据留档` · ⭐ `可比列` · ⭐ `可计费周数` · ⭐ `上位出口` · ⭐ `可问而未问` · ⭐ `方向确定 · 量级不明` · ⭐ `可能是自我说服` · ⭐ `(有利益方向)` · ⭐ `既得资产` · ⭐ `结构上不存在` · ⭐ `可比 · 算不出`。

   ⚠️ **它们不是不重要 —— 它们全都还在下面几节里,一个字没删。** ⭐ **这一页只换说法,⛔ 不换结论。**

   ⭐ **判据只跑在这一页的正文行上** —— 模板里 `>` 开头的填表说明不算(用户复制后会删掉它们)。

   ⛔ **一页纸是呈现层,不是简化版方法论** —— 三条硬约束:

   - ⛔ **顺序必须与第 3 件(排序结论)逐字一致。** 名次不许不同,⛔ 不许因为"一页纸上说不清楚"就在这里改判
   - ⛔ **不许出现总分 / 星级 / 红绿灯 / 匹配度百分比。** ⚠️ **这一件新增产出最可能的失败方式,就是被写成一个综合分** —— 那正是纪律 3 从第一版起就禁掉的东西,⛔ 不许用"要简洁"这个理由把它请回来
   - ⛔ **不许把带标记的那几列悄悄摘掉标记。** 四种标记在这一页上**换说法、不换存在**,译法写死如下(⛔ 不许现场发挥):

   | 下面几节里的写法 | 这一页上怎么说 |
   |---|---|
   | `gate 未通过` | **它不满足你自己写下的一条底线:××** |
   | `有条件满足(待闭合)` | **它要等你先把 ×× 办成(例:新租约签下来),第一名才算数 —— 现在还没办** |
   | `gate 待定` | **有一条你还没问出来:××。问出来之前它当不了第一** |
   | `无 gate` | **你还没写下任何一条自己的底线,所以现在谁也当不了第一** |
   | `未成 offer` | **这家还在面,还不是一个能选的东西 —— 它在表里,但不排名次** |
   | ⭐ `待你确认`(单条底线) | **这一条是我从你写下的材料里挑出来的:「××」—— 你还没确认过,所以我没拿它踢掉谁,也没拿它放行谁** |
   | ⭐ `未经确认`(整张 gate 表) | ⭐ **必须放在这一页的第一段**:**「下面这几条底线,是我从你写下的材料里挑出来的,你还没确认过。如果有一条不是你的意思,顺序可能就变了。」** |
   | ⭐ 某一维是 `方向确定 · 量级不明` | **这一条上 ×× 比 ×× 好是确定的,但好多少我不知道 —— 所以我拿它排了先后,⛔ 没拿它算差距** |
   | ⭐ 材料前后对不上、且两种读法结论不同 | ⭐ **必须放在这一页第一段**:**「你给我的材料里有一处前后对不上:这里写 ××,那里写 ××。这两种读法会得出不一样的结论 —— 所以今晚最该先解决的是这一件:到底哪个对?」** |
   | ⭐ 一整列的钱都还没落纸,于是在表里按 0 记 | ⭐ **必须紧跟在那一列的名次后面**:**「这一家给的钱,我在表里按『还没有』算的 —— ⛔ 不是因为它给得少,是因为到现在一分都还没落到纸上。等他们把数字写进录用通知,我们回来重算,这一条很可能整个翻过来。」** |
   | ⭐ 那几条底线被标了 `可能是自我说服`,**而用户不在场** | ⭐ **必须放在这一页第一段**:**「⚠️ 我认定的这几条底线全部指向同一个选项。我没法判断这是你的底线,还是你已经做了决定之后给它找的理由 —— 这一点只有你自己知道。」** |
   | ⭐ 某一格标了 `(有利益方向)`,且找不到无利益方向的来源交叉 | **「这一条是从一个『你去了他就有好处』的人那里听来的 —— 可能完全是真的,但我没找到第二个不相干的人说同一件事,所以我没拿它排顺序。」** |
   | ⭐ 「既得资产」那一维(离开会清零、要重新积累的东西) | **「你在现在这儿已经攒下的 ××,换个地方要从头再来一遍,大概要 ××。这一条我是算进去了的 —— ⛔ 它不是包袱,是你的东西。」** |
   | ⭐ 答复截止是 `结构上不存在`(没有人在等你答复) | ⭐ **必须紧跟在第 ③ 块前面**:**「这件事没有人在等你答复,所以不会有任何时刻逼你决定 —— 也就是说,你不定,就是定了『不动』。我把 ×× 定成这一次的期限,⛔ 这不是别人给的。」** |
   | ⭐ 某一维是 `可比 · 算不出`(有硬事实,但算式里有一格根本没问过) | **「这一条上我有一两件确实的事,但算不出一个数来比 —— 因为 ×× 这一格还完全空着。」** |

   ⭐ **「没有一列能合法排第一」时,这一页怎么写**(⚠️ 这是最要紧的一种;⛔ 不许因为"说不出结论"就把这一页省掉):

   - **第一句的形状写死**:**「今晚先别答复 —— 不是这几个都不好,是你还缺一件东西:××。」**
   - ⭐ **顺序照写、译成人话的标记照带**,每一列后面跟一句「它现在为什么当不了第一」
   - ⭐ **「这几天该做什么」必须有,且第一条就是把那件缺的东西补上**(把那句话问出来 / 写下一条自己的底线 / 把租约落实)
   - ⚠️ **写法上必须让他看出这不是「框架没算出来」**,照着说:**「这不是我算不出来。是能排第一的那个还差一件事没落地 —— 而那件事今天就能做。」** ⛔ 不许写成「信息不足,建议慎重考虑」

   ⭐ **来源怎么在这一页上保留(⛔ 不许在这一页上堆标签)**:下面几节里每一格都带 `你给的` / `公开可查` / `我推测的`,⚠️ **把这三个标签原样搬上来,这一页就废了**。改成**三行人话**,只保留「分得清」这件事:

   - **排顺序用的那几条,是你自己告诉我的,或者 offer letter 上写着的**:××、××
   - **××、×× 是我去公开渠道查的**(附查询日期)
   - ⚠️ **下面这几条是我猜的,还没证实,也没参与排顺序**:××、×× —— **想证实就问:「××」**

   ⛔ **第三行不许省,也不许并进前两行。** 它是这一页上**唯一**能让他看出「哪些是我编的」的地方;省掉之后,一页纸和一份看起来很确定的结论长得一模一样。⭐ **一条都没有时照样写一行**(「这一页上没有我猜的东西」)—— 与本模块所有留痕规则同源:**判据必须是「这一行是不是空的」这种纯字面谓词。**

   ⭐ **验收标准(一句话)**:**不看下面任何一节,光看这一页,他就知道今晚该回什么、以及为什么。** 做不到就是没收敛完,回去砍。
2. **一张横向对照表** —— 每个选项一列,**「留在原地」也是一列**;⭐ **还在流程中的机会也占一列,带 `未成 offer` 标记(进表、⛔ 不进排序)**。每格是「取值 + 来源标注」,不是光秃秃一个值。**gate 表的每一格同样要标来源**(见第 1 步)。表前先写「口径与假设」一节,⭐ **顺序写死:前置声明栏在最前面,然后才是参数取值、来源等级、通勤口径、以及每一维的估算误差带(连同「声明于第几轮 / 是否修改过」)**。⭐ 另外四行也要写:**① 本次有没有联网检索**(没有 → §三 整节不可用,那些格全是 `我推测的`);**② 本次有没有做三点采样**(最小路径不做 → 明写「本次未做三点采样,这是初版排序」);⭐ **③ 本次的决策时点是哪一天**(⭐ **三档**:正在做决定 = 今天 / 回溯 · 复盘 = 当时那一天且那件事已结束 / ⭐ 决策在过去做出但至今仍在继续 —— ⛔ 不写它,「公示晚于决策时点的信息不能用来评价当时的判断」就没有判据可用,一页纸第 ③ 块也选不出措辞);⭐ **④ gate 表是不是 `未经确认`**(用户不在场、条件从材料里认定时必写);⭐ **⑤ 答复截止是哪一档**(已知 _月_日 / 未知 / ⭐ **`结构上不存在` → 自己设一个并注明「这是你自己设的」**);⭐ **⑥ 有没有候选条件被标 `可能是自我说服`**(有 → ⛔ 那几条不能单独触发上位出口,声明句必须上一页纸第一段)
3. **排序结论** + **每一名与下一名之间差在哪个维度** —— 指名道姓说是哪一维;差幅小于该维估算误差带时明说「这一维分不出来」,换下一维。⛔ **说这句之前先过一遍第三档判据**:⭐ **这一维上有一条 `你给的` / `公开可查` 的事实能确定谁优于谁(哪怕说不出优多少)→ 它是 `方向确定 · 量级不明`,属于"分得出来"**,照着写「**这一维 ×× 优于 ×× 是确定的,但优多少不知道**」,⛔ 不许简化成「×× 更好」,⛔ 更不许写成「这一维分不出来」;⛔ **不许拿它算差幅或判决胜维**,量级写成必问项(见第二节「⭐ 第三档」)。⭐ **两维方向相反时,用户那句取舍的原话必须写在这里**(「本次取舍:××,第 _ 轮,用户原话」)—— 它是这一次名次的唯一来源,⛔ 不许只留在对话里。⭐ **冲突发生在同一维内部的两个子项之间时同样写在这里**,⛔ **并注明它是子项级的**(哪一维的哪两个子项)—— ⛔ 只写维名,下一轮读的人会当成跨维冲突
   - ⭐ **参与排序的维度为零时怎么写(⛔ 别留空,⛔ 更别自己编一种写法)** —— ⚠️ **这一件与第 4 件都以「名次已经存在」为前提**,而实跑里 **6/6 没有第 1 名**,四个执行者各编了一种写法。写死:
     - ⭐ **先看第 4 步的「上位出口」**:有没有哪一列被二值硬约束判出局?**有** → ⭐ **先出那条出局结论**,这一件写成:**「××出局(因××这条不满足);剩下的 ×× 与 ×× 之间没有任何一维可比,所以不出名次。」** ⛔ 不许因为后半句就把前半句也吞掉
     - **一列都没出局** → 照着写:**「本次参与排序的维度是零维 —— ⛔ 不是这几列一样好,是我手上没有任何一维能拿来比。」** ⭐ 紧跟一句缺口:**「要让它变成一维可比,最短的一条是 ××(必问项第 _ 条)。」**
     - ⛔ **不许写成「两个都不错,看你自己」**,⛔ 也不许因为"没有名次"就把这一件整块删掉 —— ⚠️ **删掉之后,「比过了但分不开」和「根本没比」在文件里长得一模一样**
4. **翻转点声明** —— 每条写成:*哪个假设 → 现在按什么计入(证据等级)→ **临界取值**(这个假设取到什么值时排序正好翻)→ 变成什么样排序会怎么翻 → 要证实它你该问谁 / 查什么*
   - ⭐ **「临界取值」这一列不许省。** 三点采样只能告诉用户「按 0 算会翻」,而临界取值告诉他**「兑现率低于约六成七就会翻」**——这是全文**唯一能直接变成一句谈判或提问话术的数字**。⭐ 拿到临界取值后,**必须把它写成「答复前必问项」里的一个具体问句**(例:「浮动过去两年实际发放的比例是多少?这个口径能写进 offer letter 吗?」——因为低于约六成七这个 offer 就不再站得住)
   - ⭐ **也要写出「查了也不会翻」的那些**,那是在告诉用户哪些事不必再纠结
   - ⚠️ **一条翻转点都没有时**:明写「**本次结论无翻转点,因为……**」。⛔ 不许为了凑数编一条。⭐ **但「因为」后面有两种,⛔ 旧版只给了一种模板,照抄会说反**:
     - ⭐ **A · 证据太足型**(旧版那一种):第 1 名在参与排序的每一维上都领先超过该维误差带 → 措辞:**「本次结论无翻转点:第 1 名在参与排序的每一维上都领先得够开。不必再查了,去谈别的。」**
     - ⭐ **B · 证据太少型(⛔ 缺席的正是这一种,补上)**:**参与排序的东西太少 / 太薄,以至于任何一个假设怎么变都动不了名次** —— 典型是只剩一维在比,或每一维都只有一两对可比。措辞写死:**「本次没有翻转点,⛔ 但这不是因为结论稳 —— 是因为参与排序的东西太少,少到没有什么可翻的。真要让这个顺序动起来,先补 ××、××(必问项第 _、_ 条)。」**
     - ⭐ **判据是纯字面的,一眼分**:**参与排序的维度数 ≥ 2,且每一维的可比列数 = 总列数 → A;否则 → B。**
     - ⚠️ **⛔ 不许用 A 的措辞收 B 的场**:**A 说的是"不必再查",B 说的恰恰是"必须再查"** —— ⭐ **两句话给用户的下一步动作正好相反**,说反一次就把一个"证据不足"的结论包装成了"结论很稳"
   - **「无翻转点」是一条强结论**(A 型),它等于告诉用户「不必再查了,去谈别的」,价值不低于任何一条翻转点;⚠️ **而 B 型不是强结论,是一条警报**,⛔ 别把两者写成同一句
5. **第 1 名最弱的一维** —— 写成三段:*第 1 名在哪一维上最弱 → 弱在什么具体的地方 → 它要跌到什么程度,第 1 名才会掉出第一*
   - ⚠️ **为什么这一件必须单独列出来**:框架里说出弱点只有两个通道——「相邻名次的差」和「翻转点」。而**一个明显好的选项恰恰两个通道都不触发**:它和第 2 名差得开(所以差异那节只会夸它),它的假设动一动也不会翻(所以进不了翻转点)。结果是**赢面越大的选项,弱点越沉默**。更糟的是第 2 步那句「不会翻就写进『查了也不会翻』」还会把这个最薄的环主动归类成「你不必想的事」
   - ⚠️ 「最弱的一维」**不等于**「跟第 2 名差最少的一维」——也可能是它自己绝对水平最低、但恰好没人跟它比的那一维(典型:三列都很差的下行风险)
   - ⛔ **「最弱」在异质刻度之间没有定义**(指数 ±5 和定性三档怎么比?)。挑选判据写死,按顺序用:⭐ **⓪ 先把用户本人明确降权 / 踢掉的那几维排除掉**(见下一条);**① 在剩下的维里优先选「证据最薄的那一维」**(`我推测的` 格最多、或整维退出排序的那一维)——因为一维越薄,第 1 名在这一维上的领先越可能是假的;**② 证据厚度打平时,选「绝对水平最低的那一维」**。⛔ 不许跨刻度换算成一个可比的数再挑,那等于偷偷造了一套权重
   - ⭐ **⓪ 这一步为什么必须有(⛔ 旧版没有,实测挑出了一个"正确但无用"的答案)**:那一维**确实最弱**,⚠️ **而用户在开头就明说过他不关心它** —— ⭐ **一个他不在乎的维度上的短板,不是他的短板。**
     - ⭐ **判据字面**:用户有没有说过一句**明确降权 / 踢掉这一维**的话(「××我无所谓」·「××我不看」·「××怎么样都行」)—— ⚠️ **这正是通道 3 的 B 组词表那一类句式**,⛔ **区别在于它是把某一维踢出比较,不是立一条底线**,所以它的去处是这里,⛔ **不是 gate**
     - ⛔ **只排除"最弱一维"这一步,⛔ 不把那一维踢出排序**:它照样在表里、照样参与逐维比较(用户降的是**他自己的关注**,⛔ 不是这一维的取值)
     - ⭐ **排除之后一维都不剩时,照着说(⛔ 不许退回去挑那个他不在乎的)**:**「你在乎的那几维上,我没找到明显的短板。」** ⭐ 并紧跟一句留痕:**「我没去说 ×× 那一维,因为你说过你不看它。」**
   - ⭐ **第三段「它要跌到什么程度才会掉出第一」,允许并鼓励回答「跌到任何程度都不会」**。理由:名次不是综合分决出来的,是**逐维比较 + 决胜维**决出来的,而本模块写死**不出综合分、没有维度权重**(纪律 3)——**没有跨维权衡率,一个非决胜维的取值再怎么跌都不会改变名次**。所以诚实答案常常就是这一句。合格写法:「**它跌到任何程度都不会掉出第一,因为第 1↔2 的决胜维是『某维』,不是这一维。**」
   - ⭐ **还有第三种合格答案,⛔ 别漏**:**「它不是会跌出第一,是可能整个出局。」** —— 当第 1 名自己带着 `gate 待定` 或 `有条件满足(待闭合)` 标记时(⚠️ 这两种标记本来就不能排第一,所以这一支出现在"标记刚被解除、或深潜里正准备解除"的场景),它面对的**不是名次下滑,是一个二值的存亡判定**:那条必要条件问出来若是"不满足",它**直接出局**,跟它在任何一维上跌多少都无关。合格写法:「**它最弱的地方不是某一维的取值,是它的 ×× 这一格还是 `gate 待定` / 闭合动作还没发生 —— 问出来若是"不满足",它不是掉到第 2,是直接不在表里。**」
   - ⭐ **第四种合格答案:本次根本没有第 1 名(⛔ 别漏,三种旧答案全部预设存在第一名)** —— ⚠️ 两种触发情形:**① 四种标记导致没有一列能合法排第一**;**② 两维方向相反、而用户没做取舍 → 不出名次**。⛔ **不许因为"没有第 1 名"就把这一格留空** —— **弱点的沉默恰恰是这一格要挡的东西**。改写规则写死:
     - **情形 ①(名次排出来了,只是没人能合法拿第一)** → 这一格改写成「**排在最前面那一列最弱的一维**」(⭐ 是"排在最前面",不是"第 1 名"),三段照写
     - **情形 ②(连名次都没排出来)** → 改写成「**争第一的那两列各自最弱的一维**」,⭐ **两列各写一遍**,⛔ 不许只写其中一列(只写一列等于替用户做了那个取舍)
     - ⭐ 合格写法:「**本次没有第 1 名(××、××、×× 三列都带着还没解决的标记)。排在最前面的是 ××,它最弱的一维是 ××,弱在 ××。**」
   - ⭐ **第五种合格答案:他在乎的那几维上没有短板(⛔ 别漏 —— 前四种都预设"总有一维最弱")** —— ⚠️ **实测挑出过一个"正确但无用"的答案**:那一维确实最弱,⛔ **而用户开头就明说过他不关心它**。按上面的 ⓪ 步排除掉他明确降权 / 踢掉的那几维之后,若**一维都不剩**,⭐ **照着写**:「**你在乎的那几维上,我没找到明显的短板。**」+ 一句留痕:「**我没去说 ×× 那一维,因为你说过你不看它。**」⛔ **不许退回去挑那个他不在乎的维**
   - ⛔ **明令禁止为了填满这一格而编一个跨维门槛**(例:「发展空间跌两档就会被真实时薪那一成半反超」)。**任何这样的门槛都等价于偷偷设了一组维度权重**——那正是纪律 3 禁掉的东西,不许从这条新增的必填产出里请回来
   - ⭐ 当第 1 名最弱的那一维**恰好就是决胜维**时,才真的有一个门槛可写,此时**必须写成这一维自己刻度上的取值**(例:「真实时薪指数跌破 100 − 5 的误差带下沿」),⛔ 不许跨维表述
6. **一句决策分离结论** —— 对「**公司成不成**」的判断,和对「**我要不要去**」的判断,分别是什么。这两件事经常答案相反,混在一起答就等于在赌它而不是在选它

### ⚠️ 本模块有三套独立的标签体系,别混用

它们**互不换算、互不覆盖**,一个取值可以同时挂上三套里的各一个标签:

| 体系 | 枚举 | 贴在什么上 | 管什么 |
|---|---|---|---|
| **来源标注** | `你给的` / `公开可查` / `我推测的` | **对照表里的每一格取值** | **能不能参与排序**(`我推测的` ⛔ 不参与) |
| **参数来源等级** | `实践校准` / `默认建议值` / `纯占位待校准` | **「口径与假设」里的每个参数**(⛔ **误差带也标这个等级,但误差带不采样**——见「裁决:误差带不做三点采样」) | **要不要做三点采样**(后两档必采,**误差带除外**) |
| **证据等级** | `合同白纸黑字` / `面试口头` / `公开记录` / `自己估算` / ⭐ `未验证` | **翻转点里的每条假设** | **这条假设有多硬**(口头承诺按 0 计的判据) |

⚠️ **证据等级里的 `公开记录` 就是来源标注里的 `公开可查`,改名只为了让两套标签在文里一眼能分开**——看到 `公开记录` 你就知道在读翻转点,看到 `公开可查` 你就知道在读表格。

⭐ **证据等级新增的 `未验证` 档,专给"上游复盘里问过、但没问出结果"的那些假设。** 它比 `自己估算` **更值得优先写进必问项** —— 因为**已经有人试着问过一次并且没问到**,说明它要么难问,要么对方在回避。⛔ 但它在来源标注那一套里一律按 `我推测的`,**不参与排序**(见「来源标注」节)。

### 可选的第 7 件:入职前存档

让用户**在入职前**把「我当初是这么判断的、我赌的是这几条」记下来,存进 `offers.md` 末尾。⭐ **本次若做过「两维方向相反」的取舍,那句原话也存进来** —— 它是三个月后回头唯一能看见"当时保的是哪一件"的地方。

**这不是仪式感。** 半年后回头看,人会不自觉地从结果倒推出一套当初根本没想过的理由——存档是唯一能挡住这件事的东西,也是本模块坚持「不出综合分」这条纪律的技术性补救。

---

## 来源标注

⭐ **输出里的每一条结论、每一个取值,都要标成下面三种之一。**

| 标注 | 意思 | 能不能参与排序 |
|---|---|---|
| `你给的` | 用户直接告诉你的;或来自 offer letter;**或来自面试复盘里标 `证实` / `证伪` 的那些判据** —— ⛔ **标 `未验证` 的不算**,见下 | ✅ |
| `公开可查` | 你现场查到的,**必须附来源与查询日期** | ✅ |
| `我推测的` | 你按常识、按行业惯例、按「一般来说」补的 | ⛔ **不参与排序** |

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

### ⛔ 上游复盘里标 `未验证` 的判据,在本模块一律按 `我推测的` 处理

**上游的面试复盘用的是三态**(`证实` / `证伪` / `未验证`),且上游明写"三态不能压成两态"。而本模块的来源标注只有两个能落地的档:`你给的`(**测过了**)/ `我推测的`(**凭常识补的**)。⚠️ **`未验证` 是第三种 —— 测过了,但没测出来。两个档都不对。**

⛔ **旧版 `你给的` 的定义写着「或来自他的面试复盘」,按字面读,「某条判据:未验证」就是来自面试复盘 → 判 `你给的` → 参与排序。三态在本模块被压回了两态。** 所以写死:

- ⭐ **上游复盘里标 `未验证` 的判据,在本模块一律按 `我推测的` 处理** —— **按单元格退出排序**(见下一小节的粒度规则),并**必进「答复前必问项」**(写成一个能直接问出口的过去式问句 + 该问谁)
- ⭐ **`你给的` 只指复盘里标 `证实` / `证伪` 的那些。** ⚠️ `证伪` **也是** `你给的` —— 它是一个**测出来了、取值为负**的事实,照常参与排序。⛔ 不要因为它"结果不好"就把它和 `未验证` 归成一类
- ⚠️ **「未验证」不是"没问题",是"没测出来"。** 上游花力气把这一档和 `证伪` 分开,**就是为了不让它在这里被当成通过**。⛔ 见到 `未验证` 就当"应该没事",是本模块最容易犯、也最贵的一种错 —— **它多半正挂着一条必要条件**
- ⛔ **落到 gate 上尤其硬**:`未验证` 支撑的那一格,按 gate 的推测格规则走 —— **既不能踢人,也不能放人**:标 `gate 待定`、**留在排序里**、**不能排第一**(见第 1 步)

### ⭐ 落纸的 vs 口头的:`你给的` 内部还要再分一档

「⚠️ 口头承诺按 0 计,除非写进 offer letter」这条纪律,旧版**在横向对照表里没有任何落点** —— 表里只有一个 `你给的`,**一句口头承诺和一行合同条款长得一模一样**。补上:

- ⭐ **凡是 offer 条款类的取值**(浮动怎么算、几薪、签字费、期权、保证期、汇报线、产出归属),`你给的` 后面**必须再加一个后缀**:**`(写进 offer letter)`** 或 **`(口头说的)`**
- ⛔ **`(口头说的)` 的现金项,在真实时薪的分子里按 0 计**,并**必须**在「答复前必问项」里配一句「**这一条写进 offer letter 了吗?**」
- ⭐ **整列现金都是口头时,必须额外写一句解释这个 0**(2026-08-31 补):
  > 按 0 计之后,那一列的数字**看起来像"这家不给钱"** —— 而实际含义是「**这家给的钱现在一分都还没落纸**」。**两者对用户的动作完全不同**:前者是"别去",后者是"让他写下来再谈"。
  > ⛔ **不许只留一个 0 就往下走。** 必须紧跟一句:「这一列的现金按 0 计,**不是因为它低,是因为它还没落纸** —— 拿到书面之后回来重算,这一维很可能整个翻过来。」
  > ⭐ **这句话在一页纸上也必须有对应说法**(2026-08-31 补):⚠️ **一页纸不许出现方法论词汇,而那个 0 如果不解释,用户在这一页上看到的就是"这家不给钱"** —— ⛔ **恰好是这条纪律要防的那个误读**。人话译法写死在输出格式第 1 件的译法表里(「这一家给的钱,我在表里按『还没有』算的……」),⛔ **不许现场发挥,也 ⛔ 不许因为"一页纸要简洁"就省掉它**。
- ⭐ **非现金项(汇报线 / 产出归属 / 职级 / 远程安排)落在 gate 格上时怎么办**(2026-08-31 补,由固件测出这一格此前没有正面规则):
  - 判定**照常成立**,但那一格**带 `口头` 标记**
  - ⛔ **必须**进「答复前必问项」,问法是:「**这一条能不能写进录用通知?**」
  - ⭐ **对方明确说不能写进去 → 那一格转 `gate 待定`**(回到"不能排第一"那一档)
  > **为什么不像现金项那样直接按 0**:非现金条款**大量**只存在于口头(汇报线极少写进录用通知),全按 0 会让每一列都过不了 gate,规则就废了。
  > **为什么也不能就这么算满足**:本文「来源独立性」那节已经写着"只追溯到一个来源的判定(典型:一位面试官口头说的)**仍然只是口头的**" —— ⛔ **那句话此前只是提醒,没有任何执行动作。上面三条就是它的执行动作。**
  > ⭐ **判据仍是字面的**:那一格有没有 `口头` 标记 · 必问项里有没有那一句 · 对方答没答"不能写"。
- ⭐ 它进翻转点时证据等级写 `面试口头`;**落纸的那些写 `合同白纸黑字`**
- ⚠️ 这**不是第四套标签**,是 `你给的` 内部的一个后缀。⛔ 不许拿它去改写来源标注的三档枚举

### ⭐ 「原话记不清」的处理口径:`你给的(原话记不清)`

⚠️ 三档来源标注里**没有它的位置**:它不是 `你给的`(那一档的前提是有一句**可复述、可追问**的具体说法),也不完全是 `我推测的`(那一档是 agent 凭常识补的,用户根本没听过)。⭐ **而它很常见** —— 「他好像说过团队最近不太加班」「大概提过转正后会调」。

口径写死:

- ⭐ **标成 `你给的(原话记不清)`** —— 仍在 `你给的` 内部(信息确实来自对方,不是编的),⛔ **但在排序里一律按 `我推测的` 处理**(按单元格退出,见下面的粒度规则)
- ⭐ **必进「答复前必问项」,但问法不同**:⛔ 不是去问一个新问题,而是 ⭐ **回去把那句话确认成一句可复述的话** —— 写成过去式问句:「**你上次说的××,具体是怎么说的?这一条能写进 offer letter 吗?**」
- ⭐ **与 `未验证` 的区别**:`未验证` 是**问了没问出来**;`(原话记不清)` 是**问出来了但没记住**。两者在排序上待遇相同,⭐ 但后者的**补救成本低得多** —— 多半翻一遍聊天记录 / 邮件 / offer letter 附件就能升级成 `你给的(口头说的)` 或 `你给的(写进 offer letter)`。**所以它在必问项里排最前面**
- ⛔ **落到 gate 上同 `我推测的`**:既不能踢人也不能放人 → 标 `gate 待定`、留在排序里、不能排第一
- ⚠️ 这同样**不是第四套标签**,是 `你给的` 的第三个后缀(与 `(写进 offer letter)` / `(口头说的)` 并列)。⛔ 不许拿它改写三档枚举

### ⛔⭐ 利益方向:说这话的人,会不会因为你选某一个而得好处

⚠️ **本模块对"这条信息准不准"已经有一整套**(落纸 / 口头 · 原话记不清 · 来源独立性 · 同源合并),⛔ **而它一个位置都没有留给"说这话的人希望你怎么选"**。⭐ **这两件事完全不同**:**一个中间人可以说一句完全属实的话,同时那句话之所以被挑出来说,是因为它有利于成交。**

- ⭐ **判据一句话,纯字面**:**这个人会不会因为你做出某一个特定选择而得到好处?**
  - **会 → 是**:中间人 / 招聘方 / 猎头 / 拿推荐奖金的在职推荐人
  - **不会 → 否**:已离职的人 / 与结果无关的第三方 / 公开登记与公告
- ⭐ **标法**:在原有来源标注后面加一个后缀 **`(有利益方向)`**(与 `(口头说的)` 同级,可叠加:`你给的(口头说的)(有利益方向)`)。⚠️ 这**不是第四套标签**,⛔ 不许拿它去改写来源标注的三档枚举
- ⭐ **标了之后怎么用(写死)**:
  - ⛔ **不降低它的真实性** —— 他说的可能完全属实,⛔ 不许因为这个后缀就判它是假的
  - ⭐ **但它 ⛔ 不能单独支撑一条"往那个方向走"的判断** —— **需要一个没有这个利益方向的来源交叉**
  - ⭐ **找不到交叉来源 → 那一格从 `你给的` 降为 `我推测的`**(因而**不参与排序**,按单元格退出),并 ⛔ **必进「答复前必问项」**,问法写死:**「这件事我还能问谁核实?」** + 点名一个**没有利益方向**的对象
  - ⭐ **落到 gate 上同 `我推测的`**:既不能踢人也不能放人 → 标 `gate 待定`、留在排序里、不能排第一
- ⚠️ **⛔ 别改坏 —— 这条只针对"指向一个选择"的判断。** ⭐ **判据仍是字面的:这句话有没有指向一个选择?**
  - **指向一个选择**(「这家更适合你」「那边现在正是好时候」「你现在这份再待下去就晚了」)→ **标**
  - ⛔ **不指向选择的客观事实不受影响**(面几轮、汇报给谁、几号出结果、岗位职责怎么写)→ **照常按原来的来源标注走**,⛔ 不许因为"是中间人说的"就整片降级
- ⭐ **它在翻转点里的证据等级**:与 `面试口头` 并列,⛔ **不许当成 `公开记录`**

### ⭐ 来源独立性:数的是互相独立的来源,不是条数

⭐ **这是 `06-positioning` 与 `03-company-analysis` 都写着、而本模块以前缺席的一条口径。** ⚠️ 本模块必须**自包含地判**(I1 要求单独可用),所以完整写在这里,不要求你先读那两个模块。

先分开记录**原始来源链**与**观察覆盖面**。不同职能环节可以增加覆盖面,但不自动增加独立来源数。来源独立也可能同时出错,不能用“能不能同时错”作二值检验。

1. 追溯每条事实最初由谁观察、何时记录、是否转述同一文件或统一话术。同一稿件的转载合并为一个来源链。
2. 检查共同错误原因:同一底稿、同一采集过程、互相引用或统一发布机制。HR 与业务负责人都复述公司宣讲稿,仍是一条来源链,即使覆盖不同职能。
3. 不同来源各自直接观察、没有发现共享底稿或转述链时,可以记为不同来源,并注明独立性判断依据与剩余不确定性;不宣称它们不可能同时错。
4. 无法判明来源关系时,不升级为独立印证;仍保留每条事实及其观察面,不因同源就把内容全部丢掉。一条直接且适用的书面证据也可能足以判定某项条件,来源数量不替代证据内容。

- 落到本模块的三处:
  1. **gate 判定格**:只追溯到**一个**来源的判定(典型:一位面试官口头说的),它仍然只是 `你给的(口头说的)`。⛔ **不许因为"他说了三遍"或"三个子项都指向它"就当成更硬** —— 硬度看**落纸没落纸**,不看条数
  2. **`公开可查`**:三条检索结果若**同源**(同一篇稿件 / 同一个库的三个页面),只算**一个** `公开可查`,⛔ 不许当成"互相印证"。⭐ 所以写来源时必须写到**能看出同不同源**的粒度(哪一家、哪一天、原始出处是谁)
  3. **翻转点的证据等级**:`公开记录` 那一档同理 —— **同源的三条 = 一条**
- ⚠️ **为什么这一条在本模块尤其要紧**:「发展空间」和「下行风险」两维的取值,经常**全部来自同一场面试的同一个人**。⛔ 把它数成三条互相印证的观察,会让一个本该是 `我推测的` 的判断看起来像 `公开可查`,进而**混进排序**
- ⭐ **判不出同不同源时,⛔ 按同源处理**(保守缺省)—— 与「说不清 → 按事前算」同一个方向:**无人可验证的那一格,缺省必须偏向保留约束**
- ⛔⭐ **利益方向与来源独立性是两件事,⛔ 不许互相顶替**(见上一小节):⚠️ **三个都拿佣金的人说同一句话 —— 利益同向,来源是否独立仍需追溯**,⛔ **两头都要打折**:先按上面的来源链核查判它们算几个来源,**再看这几个来源是不是都带 `(有利益方向)`**。⭐ **全都带 → 就算它们真的算得上几个独立来源,它仍然 ⛔ 不能单独支撑一条"往那个方向走"的判断** —— 独立性核查的是共同错误原因,⛔ **它解决不了"会不会一起希望你选那一个"**

### ⚠️「`我推测的` 不参与排序」的作用粒度:**按单元格,不是按整维**

三个选项里两个是 `你给的`、一个是 `我推测的`,这一维怎么排?规则是:

- ⭐ **按单元格生效。** `我推测的` 那一格**不参与任何涉及它的两两比较**——即这一维上「它 vs 别人」的那几对比较全部跳过,**而其余各对照常比**(上例里 `你给的` 的那两列在这一维上仍然可以分出高下)
- ⛔ **不代表该选项在这一维必然更差。** 「查不到」是**信息缺失**,不是**取值低**。⛔ 不许把缺失格当成最差值参与排序,那等于在惩罚「老实承认查不到」
- ⛔ 反过来也不许当最好值,或按其余两列取中位数补上——那就是静默编造
- ⭐ **什么时候升级成整维退出:数「还有没有硬格」,⛔ 不数「有几列是推测」。** 见下面三步。

#### ⛔ 旧判据(`我推测的` 过半 → 整维退出)已作废,别再用

⚠️ **它的方向是对的**(用一条可机械执行的判据替换执行者裁量),⭐ **坏的是标定**:

- **三列表 = 2 列即过半**,而"任一关键子项是推测即整列计入"让**一列极易被判为推测** → 在真实稀疏材料上,**每一维都出局**。实跑里有执行者一路加满到第三维,仍然全部整维退出
- ⭐ **更根本的毛病**:⚠️ **它对「材料完整度」的敏感性,超过了对「证据硬度」的敏感性。** 实跑里出现过 —— 某一维里有一格是 **5 个互相独立、各自可证伪的来源**撑起来的,却被**同维另外两个空格**按机械判据一起带出局

⭐ **新判据只问一件事:这一维里还有没有硬的格。** 三步,每一步都能一眼数出来。

##### 第一步 · 每一格先定三档(⛔ 是三档,不是两档)

⚠️ **旧版把「这一格是推测」和「这一格是空的」同等对待,而它们的补法完全不同。**

| 这一格 | 判据(纯字面) | 它缺的是什么 / 怎么补 |
|---|---|---|
| ⭐ **硬** | 标了 `你给的`(含 `(写进 offer letter)` / `(口头说的)` 后缀)或 `公开可查`。⭐ **带 `(有利益方向)` 且是一条"指向某个选择"的判断时**:找得到无利益方向的来源交叉 → 算硬;⛔ **找不到 → 它已经被降为 `我推测的`,落"推测"档,不算硬** | 不用补 |
| **推测** | 标了 `我推测的`(含上游 `未验证`、含 `你给的(原话记不清)`)—— ⭐ **填了,但没有依据** | ⭐ 去**证实**:写成「要证实它你该问谁 / 查什么」 |
| ⭐ **空** | ⭐ **根本没问过 / 没填** —— ⛔ **它不是 `我推测的`** | ⭐ 去**问**:写成「这一格还没问过,问句是××、该问谁」 |

- ⛔ **不许把空格静默写成 `我推测的` 混过去** —— 那等于把"没问"包装成"问了但不确定",⚠️ 而这两件事的下一步动作**完全不同**:一个是去**证实一句已经有人说过的话**,另一个是去**问一句还没人说过的话**
- ⛔ **反过来也不许把推测格记成空格** —— 那会把一个已经编出来的值洗成"没填"

##### 第二步 · 每一列在这一维定档(⭐ 一列仍然只数一次)

| 这一列 | 判据 |
|---|---|
| ⭐ **可比** | 这一维的关键子项里 **至少有一格是硬的** |
| **不可比(推测)** | 一格硬的都没有,但至少填了一格推测 |
| **不可比(空白)** | 关键子项**全空** |

##### 第三步 · 整维判定:⭐ 数 `可比` 的列,⛔ 不数推测的列

| 这一维里 `可比` 的**列数** | 怎么处理 |
|---|---|
| ⭐ **0 列** | ⭐ **整维退出排序** —— 判据字面:**这一维里没有任何一格是 `你给的` 或 `公开可查`**。表下写明,并 ⛔ **逐列写进「要证实它你该问谁」**(⭐ **空格问"没问过"、推测格问"要证实",两种问法分开写**) |
| ⭐ **1 列** | ⭐ **这一维不退出,但本次产生不了任何比较对**(一列没有对手)。⛔ **不许因此当它不存在** → **必须走下面的「硬证据留档」** |
| ⭐ **≥ 2 列** | ⭐ **这一维保留,只用这几列比**,并明写「**这一维只有 _ 列可比:××、××**」;其余各列在这一维上**按单元格退出** |

⚠️ **总列数含「留在原地」那一列**(它是第 0 列,不是附加物)。⭐ **典型三列表**:1 列硬 → 保留但无比较对(走留档);2 列硬 → 保留,明写"只有 2 列可比";0 列硬 → 整维退出。

⭐ **整维退出时,⛔ 必须把它归到四类诊断里的哪一类**(① 真拿不到 / ④ **可问而未问** / ② 差幅不过误差带 / ③ 方向相反,见第 4 步「加维的停止条件」)—— ⚠️ **④ 是实测里最常见、也最常被误并进 ① 的那一类**:**它不是拿不到,是还没问**,⭐ 而它的下一步动作是"今天给 ×× 发一句话",⛔ 不是"这件事补不齐"。

##### ⛔⭐ 「有硬格」≠「算得出取值」(⛔ 两件事,别用同一个判据一起判)

⚠️ **实跑撞到的形态**:真实时薪那一维,**分子有硬格、分母三格全空** —— 按上面第二步,这一列判 `可比`("至少有一格是硬的"字面成立),⛔ **而那个比值根本算不出来**。⭐ **`可比` 判的是「这一列在这一维上还有没有可追溯的东西」,⛔ 它没有判「这一维的取值算不算得出来」。**

- ⭐ **对"由子项算出来的维"补第二问**(典型:真实时薪 = 分子 ÷ 分母;生活成本 = 几项相加):**这一维的算式里,每一个必需的输入是不是都有取值?** —— **硬格算有**;**有默认参数兜底的算有**(`周工时默认` 这类);⭐ **空格 = 没有**
  - ⭐ **都有 → `可比 · 算得出`**:照常算、照常比、照常算差幅
  - ⭐ **有必需输入是空的 → `可比 · 算不出`**:⛔ **不许用它算差幅**(算不出来的数没有差幅),⛔ 也 **不许因此把这一列整个当成空**(那些硬格是真的)—— ⭐ **它落回 `方向确定 · 量级不明`**:那几个硬格若能确定谁优于谁,**方向照用**;量级写成必问项
  - ⛔ **不许拿默认参数把空格填满、再宣称"算出来了"** —— ⭐ **兜底参数只兜"问过了但说不清",⛔ 不兜"根本没问"**(同「空 ≠ 推测」那条:两者的补法一个是去证实、一个是去问)
- ⭐ **定性维(发展空间 / 下行风险 / 既得资产这类,没有算式)只问第一问**,⛔ 不必问第二问
- ⭐ **判据仍是纯字面的**:第一问数「这一列有没有硬格」,第二问数「算式里有没有必需输入是空格」。⛔ 两问都不靠"证据够不够"这种裁量

##### ⭐ 硬证据留档(⛔ 触发即必填)

⚠️ **实跑里那一维只有一格是硬的**(那一格追溯到五个互相独立、各自可证伪的来源),同维另外两格是**空的** —— 按旧判据整维出局。⭐ **执行者是靠别的章节手动把它捞回来的,而框架里没有任何一条规则要求他这么做。** 现在给它一个位置。

- ⭐ **触发判据(纯字面)**:这一维的 `可比` 列数 **≤ 1**,**且**这一维里**至少有一格是硬的**
- ⭐ **写三样**(写在「整维 / 单格退出的记录」正下方):
  1. ⭐ **是哪一格、硬在哪** —— 按「来源独立性」数:这一格最终追溯到**几个人 / 几份文件**,⛔ 不数"我写了几条"
  2. ⭐ **它单独说明了什么** —— ⛔ **只写这一列自己的事实**,⛔ 不许拿它去跟一个空格比出高下(**那就是把缺失当成取值**)
  3. ⭐ **补哪一格,这一维就重新可比** —— 写成「答复前必问项」里的一个过去式问句 + 该问谁
- ⭐ **它可以进 gate、可以进翻转点、可以进「第 1 名最弱的一维」**,⛔ **只是不进这一维的排序比较**
- ⚠️ **gate 与排序维度是两套体系**:一维整维退出,⛔ **不影响挂在它上面那条必要条件的判定** —— 那一格若是硬的,**gate 照判**
- ⛔ **不许因为"这一维不参与排序"就把这一格整个丢掉。** 它往往是本次最硬的证据之一,丢掉它就是**让材料完整度盖过证据硬度** —— 那正是旧判据的病

- 无论是单格跳过、整维出局,还是"只有 _ 列可比",**都必须在输出里明写**。⛔ 静默跳过一格,和把它编一个值填进去,对用户来说是一样的不可见

> **为什么这条必须硬**:一份看起来结构完整、数字精确、条目齐全的评估报告,可以整段是编的——这是这类内容的**默认失败模式**,不是罕见意外。**排序只能建立在能追溯到来源的取值上**;推测项的正确去处是「答复前你要问清的三条」,不是表格里的一个数。

---

## 不对劲的时候

| 症状 | 最可能的原因 | 你下一句该说什么 |
|---|---|---|
| ⭐ **输出是「两个都不错,看你自己」,或排序里出现并列** | ① 参与排序的维度全被标成了 `我推测的` ② 或者选的维度在这几个选项上取值几乎相同——那些维度本来就不该进表 | 「把每个维度的取值来源列出来。只用 `你给的` 和 `公开可查` 的那几维重排一次。如果这样仍然分不出,就直接告诉我:**要拉开这两个的差距,我还缺哪三条信息**——一次说完。」 |
| **名义薪资高的那个排了第一,但你自己直觉不对** | 通勤没进分母,或浮动按承诺值算了 | 「把每天往返通勤时间放进真实年工时的分母重算。浮动部分按承诺值、按七折、按 0 各算一遍,告诉我排序在哪一档翻。」 |
| **它给了一个总分 / 五星 / 红绿灯** | 它退回了同类记分板的默认形态 | 「删掉分数。只给:排序、每一名与下一名差在哪个维度、翻转点。**一个数字会把我对这几个假设把握程度完全不同这件事抹平。**」 |
| **「留在原地」那一列是空的,或被标成「不适用」** | 它把「留在原地」理解成了「不做决定」 | 「把留在原地当成第三个 offer 填完整:它也有真实时薪、也有发展空间、也有下行风险。**没有它就没有机会成本,也就没有翻转点。**」 |
| ⭐ **某一维上明明知道谁比谁好,它却写「这一维分不出来」然后换了下一维** | ⛔ **可分性判定旧版只有两档** —— "方向确定但量级不明"没有档位,只能落进"分不出来",⚠️ **于是它和"两列真的差不多"长得一模一样,而两者的下一步动作正好相反** | 「⭐ **这一维上有没有一条我给你的、或者你查到的事实,能确定谁优于谁?** 有 → 它是 **`方向确定 · 量级不明`**,**算分得出来**,⛔ 别换下一维。照着写:『**这一维 ×× 优于 ×× 是确定的,但优多少不知道**』;⛔ 别拿它算差幅、⛔ 别拿它判决胜维,**把量级写成必问项里的一句具体问法**。」 |
| ⭐ **我材料里两处对不上(某件事的日期比答复截止还晚),它自己挑了一个用** | ⛔ **框架里原本没有"材料自我矛盾"的处理位** —— 它只好去借「两套都跑 + 显式声明」,⚠️ **而那个模式是为"外部事实不确定"设计的** | 「⛔ **别自己挑,也别取平均。** 先跑一遍**一致性自查**三项(日期先后 / 同一件事两处取值 / 相对量的基准)。我在场 → **把冲突原样念回给我**:『你这里写 ××,那里写 ×× —— 哪个对?』我不在场 → **两种读法都跑**:结论相同就正常输出并附一句;⭐ **结论不同 → 写进一页纸第一段,这就是今晚最该先解决的事**。」 |
| ⭐ **我是回头复盘(事情已经发生了),它却给我一栏「这几天该做什么」,还写「你当时应该……」** | ⛔ **一页纸第 ③ 块旧版只有一种措辞**,预设"你正在做决定";回溯场景没有对应写法,执行者只能自己定口径 | 「⭐ **本次决策时点是回溯 · 复盘 → 第 ③ 块换 B 措辞**:标题改成『**这一次已经定了的,和下一次要提前做的**』,分两段 —— **① 这一次已经定了的部分(不出动作)· ② 下一次遇到同类处境时,提前做什么**。⛔ **每条落在"下次",不许写「你当时应该」** —— **回溯的用途是让下一轮不再漏,不是让人后悔**,那句话产出零个可执行动作。」 |
| **它一次只问一个问题,问了十几轮还没开始算** | 它把「开跑前」的清单当成了逐项问答脚本 | 「别再逐条问了。用我已经给的信息先出一版排序,缺的写成『待确认』并标 `我推测的`。我看完一次补齐。」 |
| **必要条件明明不满足,那一列还在排序里拿了名次** | 它把必要条件当成了一个权重很高的维度 | 「必要条件不满足的直接移出排序,表下面写一行为什么出局就行。**加分条件再多也换不掉一条必要条件。**」 |
| **某个选项只违反一条必要条件,却被判「有条件满足」后又拿了第一** | ① 闭合上限没写,「有条件满足」变成了绕过 gate 的通道 ② 或者上限写了,但它只挡动作范围、挡不住剩余劣势的量级 | 「那条必要条件我写闭合上限了吗?没写就按**不可闭合**处理。写了也一样:**「有条件满足」进排序要带 `有条件满足(待闭合)` 标记且不能排第一**,除非闭合动作已经做完了。另外**真实时薪的分母请用闭合前的通勤**——闭合还没发生。」 |
| **它问「这几条必要条件是什么时候写的」,我答「现在才想的」,然后那条就不算数了** | 它还在用旧版的「降级为加分条件」 | 「事后写的**不降级、仍然进 gate**。请把**含这条**和**不含这条**两套排序都跑出来:一样就说一句『结论不依赖它』,不一样就明说**结论取决于哪一条**,让我自己决定它算不算我的底线。」 |
| **我说了一句「误差带按 ±1 吧」,排序就变了** | 覆盖误差带这个口子没有论证义务、也没有时点约束 | 「我凭什么收窄?说不出对应的估算依据就按默认走。就算说得出,也请**按默认误差带再跑一遍**:名次不同就明说『这个结论完全建立在我对自己数据精度的判断上』。另外把我是**第几轮**说的这句记在口径表里。」 |
| **第 1 名最弱的一维那一格,给了一个跨维度的门槛** | 那一格「⛔ 不许留空」,而诚实答案常常是「跌到任何程度都不会」,于是它编了一个 | 「本模块**没有维度权重**(纪律 3),所以跨维门槛等于偷偷设了一组权重。如果决胜维是另一维,就直接写『**跌到任何程度都不会掉出第一,因为决胜维是××**』——这是合格答案。」 |
| ⭐ **上游复盘里明明标着 `未验证`,它把这条当成了"没问题"** | 它按 `你给的` 的旧定义把「来自面试复盘」直接读成了 `你给的`,**三态被压回两态** | 「`未验证` 不是没问题,是**没测出来**。请按 `我推测的` 处理:**这一格退出排序**,并写进答复前必问项。如果它挂着一条必要条件,那一格标 `gate 待定`,**那一列不能排第一**。」 |
| ⭐ **两维方向相反,它却走了「分不出来」出口** | 那个出口是给**证据不足**用的,而这里两维都分得出来、只是方向相反 —— 两种情形被同一套措辞收场了 | 「这两维都分得出来,但方向相反,所以缺的不是数据,是一次取舍。**先告诉我:这两件事只能保一件,你保哪一件?** 我把你的原话写进表里当成这一次的权重 —— ⛔ 不许改成给两维配权重加起来。」 |
| ⭐ **我一条必要条件都没写,它却排出了第一名** | gate 表整张为空时旧版**没有任何标记**,于是最松的情形反而畅通无阻 | 「gate 表是空的 → **每一列都带 `无 gate`,所以没有一列能排第一**。现在该做的不是答复,是先让我写下必要条件 —— **哪怕只有一条**,写下来标记就解除。」 |
| ⭐ **另一家还在面,它却整个没提这件事**(或把它排进了名次) | 「尚未成为 offer 的机会」旧版没有身份,于是要么消失、要么被当成一个正常选项 | 「把它加成带 `未成 offer` 标记的一列:**进表但不参与排序,⛔ 不给名次**。然后按三条判据告诉我要不要为它拖延答复 —— 时间够不够得着 / 假想它拿到了会不会改变决定 / 拖一天的代价。」 |
| ⭐ **它用了一个自己编的折算系数,而那个系数决定了名次** | agent 自加参数只有方向声明义务、没有来源等级栏,于是它绕过了三点采样 | 「把那个系数写进『口径与假设』并标来源等级 —— 我没给过、模块没写过、也查不到,那它就是 `纯占位待校准`,**必须做三点采样**。而且它一入表就有两个参数落在后两档,**交互项也得跑一次**。」 |
| ⭐ **它从零重问我的必要条件,而 `positioning.md` 里已经写好了** | 它没有先看工作区,把「让用户写下 2-3 条」当成了第一个动作 | 「先读工作区里的 `positioning.md`,必要条件直接接过来。**写下时点按那个文件里记的日期判,不按我今天跟你说的时间判**——不然我几周前手写下来的事前条件,被你重问一遍就降成 `事后重构` 了。另外那里的**硬性排除条件**也要接:**命中即出局,没有『有条件满足』这一档**。」 |
| ⭐ ⛔ **不管我给什么,它每次都交同一句「不排名次 + 数据不够」** | ⚠️ **这是本模块当前最严重的失败模式:不是判错,是拒绝判。** 三条机械判据互锁(`无 gate` + 整维退出 + `未成 offer` 不参与排序),在跨国 / 材料型 / 回溯型输入上几乎必然同时成立,**任一成立就出不了名次** | 「⭐ **先跑「上位出口」**:有没有哪一列被一条二值硬约束判到出局值?**有就必须出结论** —— 哪怕结论只是『××出局,剩下两列分不出来』。⛔ **不许因为别的维数据不全,就把一条已经成立的出局结论压成"数据不够"。**」 |
| ⭐ **某一列明明违反了我一条不可闭合的底线,它却说"信息不足,不下结论"** | ⛔ **"某一列出局"和"其余维数据不全"被合并成了一句"数据不够"** —— ⚠️ **前者是结论,后者是缺口,混在一起我拿到的是零个结论** | 「⭐ 三步照走:**① 先把出局那句说出来**(『××出局,因为它在××这条上不满足』)· **② 剩下的列照常比** · **③ 收尾说一句『××已经出局了,剩下的比不比都不改变这一条』。**」 |
| ⭐ **它把「我还没问」和「这件事拿不到」写成了同一句话** | 「整维退出」的诊断只有三类(真缺数据 / 差幅不过误差带 / 方向相反),⛔ **缺第四类「可问而未问」** —— 它被整体归进"缺数据" | 「⭐ 判据一句话:**这一格有没有一个具体的提问对象,且问题写得成一句过去式问句?** 有 → 它是**可问而未问**,措辞换成:『**这一格不是拿不到 —— 是还没问。今天给 ×× 发一句:「××?」,回信就能填上。**』⛔ 别把今天就能做完的事说成补不齐。」 |
| **多个人复述同一份材料,被算成互相印证** | 把职能覆盖面误当独立来源数 | 「请追到每条事实的原始记录,检查共同底稿或转述链。不同职能只增加观察面,不自动增加独立来源;保留事实内容,不用来源条数替代判断。」 |
| ⭐ **本次没有第 1 名,它就把"差在哪一维"和"翻转点"两节整个空掉(或各编了一种写法)** | 这两件都以**名次已经存在**为前提,⛔ 而实跑里 6/6 没有第 1 名 | 「⭐ **差在哪一维**:有列被硬约束判出局 → 先出那条出局结论;一列都没出局 → 照着写『**本次参与排序的维度是零维 —— 不是这几列一样好,是我手上没有任何一维能拿来比**』+ 一句最短缺口。⭐ **翻转点**:改用『**证据太少所以还没有可翻的东西**』那一种措辞,⛔ 别用『领先得够开所以不必再查』。」 |
| ⭐ **每一维都被判「整维退出」,加到第三维还是全军覆没** | 旧判据是「`我推测的` 过半 → 整维退出」,而**三列表 2 列即过半**,且"任一子项推测即整列计入" —— ⚠️ **它对材料完整度的敏感性超过了对证据硬度的敏感性**:一格由五个互相独立来源撑着的取值,会被同维两个**空格**一起带出局 | 「⛔ 别用『推测过半』那条判据了。**先把每一格分成硬 / 推测 / 空三档**(空 ≠ 推测),再数**这一维里有几列至少有一格是硬的**:**0 列才整维退出;1 列走硬证据留档;≥2 列保留,只用这几列比并写明『这一维只有 _ 列可比』**。」 |
| ⭐ **某一维里明明有一格证据极硬(好几个互相独立的来源),却跟着整维一起出局了** | 那一格的邻居是**空格**,而旧判据把"空"和"推测"同等对待 —— ⛔ **框架里没有任何一条规则要求把它捞回来**,只能靠执行者手动 | 「那一维的可比列数是 1,⛔ 不是 0 —— **它不整维退出,走「硬证据留档」**:写清那一格追溯到几个人 / 几份文件、它单独说明了什么(⛔ 不许拿它跟空格比高下)、补哪一格就重新可比。**它照样能进 gate、进翻转点、进「最弱的一维」。**」 |
| ⭐ **我一条必要条件都没写,它同时又说"这几个分不出来",然后不知道该听哪个** | `无 gate` 要求排序照出,「分不出来」是唯一允许不出排序的出口 —— ⛔ **两者会同时触发、要求相反,而旧版没有裁决句** | 「⭐ **`无 gate` 优先** —— 它管的是**输入缺失**(你还没告诉我底线),那个出口管的是**证据不足**;**连判据都没有的时候,谈不上分不分得出来**。第一句照 `无 gate` 的形状说,**那三条缺失信息降级成第二段照写**,⛔ 两条原因都要写。」 |
| ⭐ **它说「先只用硬证据的那几维重排一次」,可我一维全硬的都没有** | 「分不出来」出口的第 1 个必要条件字面上无法满足 —— ⭐ **这与 v0.1.3 给最小路径补过的那个死结同型,深潜里一直没补** | 「⭐ **降到格**:每一维取它的可比列(至少有一格硬的那几列),**只在这几列之间比**,逐维写明『这一维只有 _ 列可比』。**只要有任何一对在任何一维上分得出来,就照常出排序。** 两层都跑完还分不开,才算满足那个条件。」 |
| ⭐ **它判「一条必要条件都没有」,可我明明在材料里写过「我不可能接受××」** | ⚠️ **gate 的输入通道只有两条**(`positioning.md` / 当场写),**两条都要求用户在场** —— 于是**所有材料型输入最多只能走到 `无 gate`** | 「⭐ 走**第三条通道**:从我已有的书面材料里认定。**判据是字面的** —— 那句话里有没有『我不可能』『必须要』『再也不』这类排他性措辞。提取出来的**标 `待你确认` 并回读给我确认**:⛔ 确认前既不能拿它踢人,也不能拿它放人。」 |
| ⭐ **我人不在场(只有一份材料),它就干脆没跑 gate** | ⛔ **"用户不在场"被当成了"跳过 gate 的理由"**,于是回到 `无 gate` 恒触发的死循环 —— ⚠️ **一个对所有材料型输入给同一结论的标记,和一条坏掉的规则无法区分** | 「候选条件**照提取、照进表**,整张 gate 表标 `未经确认`,**并把这句话放在一页纸第一段**:『下面这几条底线是我从你写下的材料里挑出来的,你还没确认过。』⭐ 它解除的只有 `无 gate` 这一个标记,别的限制照旧。」 |
| ⭐ **它拿一条公示于我做决定之后的公开信息,去说我当初判错了** | 只标了检索日期、**没标材料日期** —— 于是「当时可不可知」和「现在是否属实」被混成一件事 | 「每一格公开信息要标**两个**日期:**你查到它的日期** + **它公示 / 发生的日期**。⭐ **公示晚于我的决策时点的,只能用于『今天该怎么办』,⛔ 不能用于『我当时判断得对不对』** —— 那一格在比较里按单元格退出,表下写明。」 |
| ⭐ **这份工作全 remote,它硬编了一个通勤时间**(或:我住哪还没定,它替我定了) | 通勤口径预设「住处已定」,⚠️ **而住处取决于租金、租金又取决于住处 —— 两格互为输入** | 「⭐ 先填**前置声明**:要不要坐班 / 住处定没定。**全 remote → 通勤按 0 并写明**,⛔ 不许编。**住处未定 → 通勤与租金两格一起标 `我推测的`**,⛔ 不许只标一格(只标一格会让另一格看起来是硬的)。另外**跨时区错位要进分母**,无带薪假的**可计费周数要进分子**。」 |
| ⭐ **它说「补一下参数采样」,我补完发现顺序一点没变** | 采样提醒**只有一种措辞**,照抄到"那两个参数根本没进排序"的场合上 —— ⛔ **把用户推去补一件补齐了也不改变结论的事** | 「判据一句话:**那两个参数有没有出现在任何一个参与排序的维度的算法里?** 没有就改说:『**本次的名次不由那两个参数决定,补采样不会改变这个顺序。真要动这个结论,缺的是 ××。**』」 |
| ⭐ **它说「本次无翻转点」,听起来像结论很稳,可我明明什么都没查到** | 「无翻转点」**只有"证据太足"一种措辞模板**,缺相反那一种(**证据太少,所以怎么变都不影响**) | 「判据:**参与排序的维度 ≥ 2 且每一维都是满列可比 → 才算"证据太足"**;否则照这句说:『**这不是因为结论稳 —— 是因为参与排序的东西太少,少到没有什么可翻的。真要让顺序动起来,先补 ××、××。**』⭐ 两句话给的下一步动作正好相反,⛔ 不许说反。」 |
| ⭐ **我手上零个 offer、只有现在这份工作,它说这个模块用不了** | 「零个 offer + 有在职工作」这一形态旧版**完全没覆盖** —— 六件必需产出里**三件失去对象**,而模板对它们都写着「不许留空」 | 「⭐ **这是一次单列体检,gate 照跑** —— 问的是『**我现在这份工作过不过得了我自己写下的线**』。三件失去对象的照替代形态写:**排序结论 → gate 结论**(不出名次)· **翻转点 → 什么变了我就该开始看外面**(临界取值照写)· **第 1 名最弱的一维 → 留在原地最弱的一维**。」 |
| ⭐ **另一家还在面,可我根本没有对方的联系人,它就直接判『不等』** | 三条判据只有 `成立` / `不成立` 两种取值,⛔ **没有 `判不出来`** —— 于是"我没人可问"被读成"它不值得等" | 「⛔ **`判不出来` 不是 `不成立`** —— **『没人可问』说的是我的处境,不是那家公司的**。照三个动作走:**先按『没有它』出一版排序** · **把那条写成必问项第 1 条** · **明写代价让我自己签字**。另外判据 2 没有第 1 名当锚点时,**换成『排在最前面的那一列』**。」 |
| ⭐ **它交出来的东西我看都看不懂**(实跑里用户的原话) | ⛔ **不是准入门槛的问题**(这个模块确实不用装任何东西),是**产出本身**的问题:一页纸没写;或者写了,但把下面几节的词原样搬了上去(误差带 / 指数 / `纯占位待校准` / `gate 待定` / 三套标签) | 「**把最前面那一页重写**,只留四件事:**顺序 + 第 1 名和第 2 名差在哪一件事** · **哪个假设变了会翻** · **这几天该做什么(具体动作,不是"再想想")** · **哪几条是你猜的**。下面几节⛔ 一个字别删、⛔ 结论一个字别改 —— **我要的不是简化版,是换个说法。**」 |
| ⭐ ⛔ **我自己问了一句「你说我是不是在给自己找理由」,它答不上来**(或者干脆没接这句) | ⚠️ **通道 3 的 B 组词表恰好就是人自我说服时的句式** —— ⛔ **提取出的"底线"很可能就是他那段自述的结论,等于拿一个人的结论去检验他的结论** | 「⭐ **先跑那道自我说服自查**:把提取出的每条候选条件逐列判一次,看它们**是不是全部指向同一列**;⭐ 再看材料里**有没有一句字面倾向那一列**的话。两样都成立 → 整组标 `可能是自我说服`:⛔ **不许单独踢掉谁**,⭐ 并把这句原话问回给我:『**这可能是你真的有这三条底线,也可能是你已经想好了要去哪一家,正在给这个决定找理由 —— 哪一种?**』」 |
| ⭐ ⛔ **我已经攒了好几年才拿到的东西(资格 / 排期 / 归属期),它一句「别被沉没成本绑架」就让我别管了** | ⛔ **框架里没有"已经投入的东西"这个格子**,且立场上是反沉没成本的 —— ⚠️ **它没区分"认知偏差"和"有载体的既得资产"** | 「⛔ **那句话用错地方了。** 判据一句话:**如果我明天离开,这个东西是留下、还是清零重来?** ⭐ **清零重来 = 既得资产,要算** —— 它进排序,算在「留在原地」那一列的收益侧,**离开的代价里必须写出'重新积累它要多久'**;本来就带不走也退不了的,才是沉没成本,不进排序(但要在表下写一行,⛔ 别静默删)。」 |
| ⭐ **我这几年是一路在往下走的,它每年比一次都说"差一档,分不出来"** | ⚠️ **误差带那条「相邻一档视为分不出来」在多年尺度上会系统性抹掉缓慢下滑** —— ⭐ **三年滑三档,每年看都是相邻一档**,⛔ **框架里没有斜率** | 「⭐ **跨一年以上的比较,看的是方向,⛔ 不是相邻两次差几档。** 判据:**同一维上连续两次观察同向、中间没有反向 → 记成一条趋势**(每次观察都要带它的日期)。⭐ **趋势本身就是一条能参与排序的事实**,按『方向确定、量级不明』处理:可以定先后,⛔ 不能算差幅。⛔ 别再把它拆成三次分不出来。」 |
| ⭐ **根本没有人在等我答复,它就一直说"再去问清楚",于是我一直没决定** | ⛔ **答复截止只有"已知"和"未知"两档,⛔ 没有"结构上不存在"** —— ⚠️ **而没有截止日不是缺输入,它本身就是病灶** | 「⭐ **这一档叫『没有人在等你答复』,判据是:有没有一个具体的对方在等你在某天之前回话。没有 → 自己设一个**,写进口径表并注明是我自己设的。⭐ 然后照着说:『**你不定,就是定了「不动」**』。⛔ 设了它也不解除任何标记。」 |
| ⭐ **这件事是我几年前定的,可它今天还在过着 —— 它却给我写「你当时应该……」或者「下次再说」** | ⛔ **决策时点只有 A(正在做决定)/ B(回溯复盘)两种**,⚠️ **而 B 写死"这一段不出动作 + 措辞落在下次"** —— ⛔ **今天就该发的那封邮件被措辞推到了「下次」** | 「⭐ **本次是第三种:决策在过去做出、但至今仍在继续。** 标题换成『**当初定的那件事,和今天还能动的那部分**』,分两段:**① 当初定的是什么(不出动作)· ② 今天还能动的那部分 —— ⛔ 每条落在"今天"**:『**今天就 ××**』。⛔ 不许落在"下次",⛔ 更不许写「你当时应该」。」 |
| **多个人复述同一份材料,被算成互相印证** | 把职能覆盖面误当独立来源数 | 「请追到每条事实的原始记录,检查共同底稿或转述链。不同职能只增加观察面,不自动增加独立来源;保留事实内容,不用来源条数替代判断。」 |
| ⭐ **一维只有方向、另一维跟它方向相反,它两个出口都进不去,最后交了"分不出来"** | ⛔ **「两维方向相反」的触发判据字面要求"差幅或跨两档",⛔ 而『方向确定、量级不明』那一档明写这两样都没有** —— 一处硬断裂 | 「⭐ **那一档算"分得出来"的一种**,所以 ⭐ **照样触发方向冲突出口**(两维都是那一档时同样走)。⛔ 走进去之后**不许说"差多少"**,问法换成:『**这一条上 A 比 B 好是确定的,但好多少我不知道;那一条上 B 比 A 好、差多少我算得出来。这两件事只能保一件,你保哪一件?**』」 |
| ⭐ **同一维里两个子项方向正好相反、而且两个都有硬证据 —— 它要么整维取中说"分不出来",要么自己把它拆成了两维** | ⛔ **方向冲突出口只有维级,没有子项级** —— ⚠️ **拆维这一步框架里没写;换个执行者走"整维取中"同样不违规,⭐ 得到的是相反的产出**。**同一份材料、同样合规、两个相反结论,差别只在他当时怎么裁** | 「⭐ **判据补一条:同一维内部两个子项各自都有硬格、且方向相反 → 与跨维冲突同样处理**,走取舍出口,把我那句取舍的**原话**记下来当这一次的权重。⛔ **不许整维取中**(那把两个都硬的相反信号抹成了"分不出来",信息全丢),⛔ **也不许自己拆维**。取舍问句要**落在子项自己的说法上**,并注明这是**子项级**的冲突。」 |
| ⭐ ⛔ **是我自己说的「那边没有 ××」,它却说"这条底线你还没确认过",于是谁也没踢掉** | ⛔ **例外的判据挑错了维度**(写的是"用户在不在场")—— ⚠️ **一条 gate 判定有两个部分**:**条件**(我从材料里认定的,你没确认过)和**那一列在这条上的取值**(⭐ **有时就是你本人白纸黑字说的**)。⛔ **旧规则拿前者否掉了整行** | 「⭐ **判据换成「那一格的取值有多硬」**:判「不满足」靠的若是**我本人原话那种硬格**、且**指向的是这一列自身**,⭐ **就可以踢出去** —— ⛔ 用不用得着这条例外,**跟我在不在场没关系**。⭐ **但方向不对称,别弄反**:判「不满足」✅ 可以踢;⛔ 判「满足」仍然不发通行证 —— **踢掉一个选项,和抬高一个选项,需要的把握不一样。** 结论照旧带那句声明,并把回读那句写进「这几天该做什么」第一条。」 |
| ⭐ **它挑出的"最弱的一维",正好是我开头就说过我不在乎的那一维** | ⛔ **挑选判据只有"证据最薄 / 绝对水平最低"两步,⛔ 没有一步排除用户本人明确降权的维度** —— ⚠️ 于是它给了一个**正确但无用**的答案 | 「⭐ **挑之前先加一步 ⓪:把我明确说过『无所谓 / 不看 / 怎么样都行』的那几维排除掉**(⛔ 只在这一步排除,⛔ 别把它踢出排序 —— 我降的是我自己的关注,不是它的取值)。⭐ **排完一维都不剩就直说**:『**你在乎的那几维上,我没找到明显的短板**』+ 一句『我没去说 ×× 那一维,因为你说过你不看它』。⛔ 不许退回去挑那个我不在乎的。」 |
| ⭐ **它拿中间人(或招聘方)说的一句话当依据,说我该选那一家** | ⛔ **框架只管"这条信息准不准"(一手 / 二手 / 来源独立性),⛔ 完全没有位置记录"说这话的人希望我怎么选"** —— ⚠️ **一个中间人可以说一句完全属实的话,而那句话被挑出来说是因为它有利于成交** | 「⭐ **给来源加一个后缀 `(有利益方向)`**,判据一句话:**这个人会不会因为我做出某一个选择而得到好处?** ⛔ **不降低它的真实性**,⭐ **但它不能单独支撑一条"往那个方向走"的判断** —— 要一个**没有这个利益方向**的来源交叉;⭐ **找不到就把那一格降为 `我推测的`**(退出排序)并进必问项:『**这件事我还能问谁核实?**』。⚠️ 中间人转述的**客观事实**(面几轮、汇报给谁)⛔ 不受影响 —— 判据是**这句话有没有指向一个选择**。」 |

### ⚠️ 唯一允许「不出排序」的出口

正文写着 ⛔ **绝不许输出「两个都不错,看你自己」**;上表第一行又允许以「分不出来」收场。这两句不矛盾,但**边界必须写死**:

> **「分不出来」是本模块唯一允许不出排序的出口,且它有三个必须同时满足的条件:**
>
> ⛔ **先确认这不是「两维方向相反」。** 那一种**证据是够的,缺的是一次取舍**,走它自己的出口(见第 4 步),⛔ 不许走这里 —— 两者若用同一套措辞收场,用户会跑去补一堆补齐了也不改变结论的信息。
>
> ⛔ **最先确认「上位出口」没有触发** —— **有任何一列被二值硬约束判出局时,⭐ 必须出结论,⛔ 不许走这里**(见第 4 步「上位出口」)。⚠️ **这是本模块被误用得最多的一处**:别的维数据不全 → 走这个出口 → 一条已经成立的出局结论被压成"数据不够"。
>
> ⛔ **再确认 `无 gate` 没有同时成立。** 同时成立时 ⭐ **`无 gate` 优先,⛔ 不走这里** —— 裁决与执行动作见第 1 步「`无 gate` 与「分不出来」出口同时触发时的优先级」。
>
> 1. **已经先排过一次** —— 只用 `你给的` 和 `公开可查` 的那几维重排,仍然分不出。⛔ 不许一上来就宣布分不出来
> 2. **点名三条具体缺失信息** —— 不是「信息不足」,是「我缺这三条:××、××、××」,每条写成能直接问出口的过去式问句 + 该问谁
> 3. **说明补齐后会怎么裁决** —— 「这三条里只要 ×× 拿到,第 1↔2 就能分出来,因为……」。⭐ 这一条最容易被跳过,但它才是「分不出来」与「看你自己」的真正区别:**前者告诉用户下一步做什么,后者把决策原样退回去**
>
> ⛔ 三条缺任何一条,就退回「看你自己」,不合格。

#### ⭐ 条件 1 在深潜里也会死掉 —— 补同型出口(⛔ 不许拿它当"所以宣布分不出来"的理由)

⚠️ **条件 1 字面上要求"存在几维是全硬证据的",而实跑里常常一维都不存在** —— 每一维都掺着 `我推测的` 或空格。于是这个出口**整个走不通**:⛔ 走过去只会卡死,或者执行者悄悄放宽判据自己解释一遍。

⭐ **这与 v0.1.3 给最小路径补的那个死结是同一型**(最小路径只有一维,没有"那几维"可重排 → 已补出口:直接进深潜加第二维)。⚠️ **深潜里的同一个死结此前没补。** 现在补:

> ⭐ **条件 1 改写成两层,⛔ 必须按顺序试,第一层不成立才用第二层。**

1. ⭐ **第一层(原口径)**:**存在至少一维,它的每一格都是 `你给的` / `公开可查`** → 只用这些维重排一次。成立就照旧走
2. ⭐ **第二层(一维都没有时用这个)—— 降到格,⛔ 不再要求整维全硬**:
   - 每一维按「作用粒度」那节的第三步取它的 **`可比` 列**(= 关键子项里**至少有一格是硬的**那几列),**只在这几列之间比**
   - 逐维写明「**这一维只有 _ 列可比:××、××**」
   - ⭐ **只要有任何一对列在任何一维上分得出来(差幅严格大于该维误差带 / 定性维跨两档),就不算"分不出来"** —— **照常出排序**,并写明这个名次建立在哪几对可比关系上
3. ⛔ **两层都跑完、一对都分不出来,才算满足条件 1。** 此时在输出里照着写一句:**「本次没有任何一维是全部可追溯的,我已经降到单格重排过一次,仍然分不开。」** ⛔ **不许跳过第二层直接宣布分不出来**

⭐ **判据仍是纯字面的**:第一层看"有没有全硬的维",第二层看"有没有分得出来的可比对"。⛔ 两者都不靠"证据够不够"这种裁量。

### ⚠️ 必问项问不到,而答复截止已经到了

「查不到就升级成必问项」默认假设**你还有时间去问**。实跑里常常没有:问了没人回、截止就在今晚。⛔ **这时不许把 `gate 待定` 悄悄当成"满足"来交差**,也 ⛔ 不许只回一句"建议你去问"就完事。收场规则写死四条:

1. ⭐ **标记照带,排序照出。** `gate 待定` 的那一列仍然**不能排第一** —— ⛔ **截止时间到了不是解除标记的理由**:时间流逝没有改变任何一格的取值。(同理 `有条件满足(待闭合)`:截止到了不等于租约签了)
2. ⭐ **把没问到的那条,转成一个"当场就能做的最小验证动作"**,而不是一个还要等回复的问句。例:那条必要条件若是「这个岗一周有几成时间在写代码」,当场可做的是 —— **翻一遍这家给你的 offer letter / 岗位描述,看它写没写职责构成;再回想面试里对方主动举过的例子属于哪一类**。⚠️ 这些只能得到 `我推测的` 级别的取值,**⛔ 不解除 `gate 待定`**,但它能告诉用户"手上现有的东西指向哪一侧"
3. ⭐ **明写代价,让用户自己签字**(照着说):「**××这条到现在没问到。你可以选:① 再要一天 —— 多数公司给得起,而且"要不要得到"这件事本身就是一个信号;② 现在就答复 —— 那等于你接受『这一条即使不成立,这个 offer 对你也仍然成立』。⛔ 这个字我不能替你签。**」
4. ⛔ **不许因为"来不及"就摘掉四种标记里的任何一种。** 摘掉之后,「**问过了并且通过**」和「**没来得及问**」在文件里长得一模一样 —— 这正是本模块每一条留痕规则要挡的东西

---

## 三级自救阶梯

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

| 级 | 什么时候到这一级 | 你该做什么 | ⛔ 不该做什么 |
|---|---|---|---|
| **L1 有现成的,直接走** | 本文件里有明确规则命中(gate 判定、真实时薪口径、来源标注、输出格式) | 按规则执行,**不问**。已有规则能裁决的,自己裁决 | ⛔ 不为「确认一下」打断用户。「通勤要不要算进去」这种问题本文件已经写死了,别再问 |
| **L2 没现成的,尽力走通 + ⭐ 沉淀** | 用户给的材料是散的(聊天记录转述、条款截图的文字、一段语音转文字)/ 某个维度这里没定义 / 某个数据查不到 | ① 自己把散材料整理成对照表,**不要求用户先填模板** ② 自己按「取值不同才留」的判据决定加哪些维度 ③ 查不到的现场写成「答复前必问项」 ④ ⭐ **走通之后写回去** —— ⭐ **写回目标只有一个:你工作区里的 `offers.md`。** 新的口径写进它的「口径与假设」一节;新的填表规则**也写进它**(末尾另起一节「本地填表约定」),下次直接回 L1。⛔ **不许写回仓库里的 `templates/offer-matrix.md`** —— 那是模块自带的只读模板,而本模块明说"不需要 git";改它的后果是用户下次拉更新必冲突。⭐ 判据一句话:**沉淀只写进工作区文件,不写进模块目录** | ⛔ 不把「这次绕过去了」只留在对话里。没沉淀 = 下次还得再试一遍 = 等于没走通 |
| **L3 实在不行,才回报人** | L2 也走不通 / 只有用户本人才有的事实(他自己的必要条件、他愿不愿意搬家、他现在这份工作的真实体感)/ 触及边界(法律条款、签证、期权税务) | 输出 **症状 + 已经试过什么 + 建议你做什么(给可选项)**。例:「排序在『浮动兑现率』这一档会翻,我按三种口径都算过了(症状+已试)。**建议你做**:让对方把浮动的计算口径写进 offer letter;写不进去就按 0 那一档的排序执行。」 | ⛔ 不输出裸错误;⛔ 不说「请提供更多信息」这种没有指向的话;⛔ 不把 L2 该自己整理的材料推回给用户 |

---

## 变更日志

- **v0.1.8**(发布前第八轮修订,依据**两个实跑案例**:一个多年尺度的"还要不要待下去"、一个带中间人的材料型输入):
  - **[P0] 通道 3 会把"自我说服"洗成"底线" —— 补一道字面自查** —— ⚠️ **这是 v0.1.7 补 B 组词表带来的副作用**:补它是为了让通道 3 命中真人口语,⭐ **而真人最常用「不是 A,是 B」「××无所谓先保××」这种句式的时刻,恰恰是在说服自己**。于是 gate 的候选必要条件**全部从他那段"正在给自己找理由"的自述里提取**,提出来的"底线"**必然是这段论证的结论** —— ⭐ **等于用一个人的结论去检验他的结论**;而材料最后一句正是「你说我是不是在给自己找理由」,⛔ **框架结构性地答不了**。现在补:**通道 3 提取之后、进 gate 表之前跑一次自查** —— ⭐ **数两样,都是字面的**:① 每条候选条件逐列判一次,看**是不是全部指向同一列**;② 材料里**有没有一句字面倾向那一列**的话。两样都成立 → 整组标 **`可能是自我说服`**:⛔ **不许单独触发上位出口(用户不在场也不许)**,⭐ **必须原话回读 + 问一句写死的话**;⭐ **用户不在场时结论照出,但必须带一句写死的声明**(「我没法判断这是你的底线,还是你已经做了决定之后给它找的理由」)。⭐ 设计同源:**不替他裁决,而是把结论对它的依赖显式暴露出来** —— ⛔ 框架答不了这个问题,但它可以**把问题原样递回去,而不是假装没看见**
  - **[P0] 沉没成本没有格子,而且立场用错了地方** —— ⚠️ **框架里一个格子都没有**,且立场上是**反**沉没成本的:唯一的跨期机制(`一次性成本摊销年限`)方向相反(摊将来),最接近的一格(「最坏情况沉没什么」)是**未来时态**。⭐ **而实跑那一例的沉没成本是有明确载体的既得资产,不是认知偏差** —— ⛔ **框架没有区分这两种,会把人推向做错事**(对一个排了多年队、已经积累了可保留资格的人,「别被沉没成本绑架」是**有害建议**)。现在给"已经投入的东西"一个格子,⭐ **两类的判据写死**:**沉没成本**(换个地方不会退给你、也带不走)⛔ **不进排序**;⭐ **既得资产**(离开会失去或要重新积累,**且有明确载体**:资格 / 年限 / 排期 / 归属期 / 认证 / 内部信用)✅ **进排序**,算在「留在原地」那一列的**收益侧**,⭐ **离开的代价里必须显式包含"重新积累它要多久"**。⭐ **判据一句话**:「**如果我明天离开,这个东西是留下、还是清零重来?**」⛔ **并写死一条禁令:不许对既得资产说「别被沉没成本绑架」** —— 那句话是对付认知偏差的,用在真实资产上是**在劝人放弃自己的东西**
  - **[P1] 时间尺度三条** —— ① ⭐ **误差带系统性抹掉缓慢下滑**:「相邻一档视为分不出来」在多年尺度上让**三年滑三档、每年看都是相邻一档** —— ⭐ **多年尺度要的是斜率,而框架里没有斜率**。补:**跨越一年以上的比较看的是方向**,⭐ **连续两次观察同向 = 一条趋势**(⛔ 不要求三次,否则真实材料上恒不触发),趋势按第三档处理(可定先后、⛔ 不算差幅);② ⭐ **答复截止日只有"未知"一档,⛔ 没有"结构上不存在"** —— ⚠️ **而没有截止日不是缺输入,它本身就是病灶**(决策被无限推迟成默认选项)。补第三档并写死处理:**自己设一个** + 照着说「**你不定,就是定了「不动」**」;③ ⭐ **决策时点缺第三种:决策在过去做出、但至今仍在继续** —— A / B 都不合身,⛔ **而 B 写死"这一段不出动作 + 措辞落在下次",于是"今天就该发的那封邮件"被措辞推到了「下次」**。补 C 措辞(「**当初定的那件事,和今天还能动的那部分**」,⭐ **第 ② 段每条落在"今天"**),并给 B / C 分不清时的保守缺省(**缺省走 C**,因为两个方向的代价不对称)
  - **[P1] 两处判据接不上** —— ① ⭐ **「有硬格」≠「算得出取值」**:真实时薪的**分子有硬格、分母三格全空**时,第二步只问"有没有硬格"就判 `可比`,⛔ **而比值算不出来**。补第二问(**算式里每个必需输入是不是都有取值;空格 = 没有**)与第三档 `可比 · 算不出`(⛔ 不算差幅、⛔ 也不把整列当空,方向照用、量级进必问项),并写死 ⛔ **不许拿默认参数把空格填满再宣称算出来了**;② ⭐ **第三档 `方向确定 · 量级不明` 接不上「两维方向相反」出口** —— 后者触发判据字面要求"差幅或跨两档",⛔ **而第三档明写这两样都没有**,于是「一维是第三档、另一维方向相反」**两个出口都够不着**。写死:**第三档算"分得出来"的一种,照样触发方向冲突出口**(两维都是第三档时同样走),⛔ **走进去之后不许说"差多少"**
  - **[P1] 「两维方向相反」只有维级,没有子项级** —— ⚠️ 实测:**同一维内部两个子项各自都有硬格、方向正好相反**。⭐ **执行者自行把它拆成两维处理 —— 而这一步框架里没写**;换一个执行者走「整维取中 → 分不出来」,**同样不违规,得到相反的产出**。⭐ **同一份材料、同样合规、两个相反结论,差别只在执行者当时怎么裁 —— 这正是本模块最反对的形态**。补**子项级触发判据**(同一维内部两个子项各自都有硬格且方向相反 → 与跨维冲突同样处理),⛔ **不许整维取中**(取中把两个都硬的相反信号抹成"分不出来",信息全丢),⛔ **也不许执行者自行拆维**;取舍问句**落在子项自己的说法上**,记下来时**注明它是子项级的**
  - **[P0] 改写「`待你确认` 可以触发上位出口」那条例外 —— ⛔ 上一版判据挑错了维度** —— ⚠️ 它写的是「**用户在不在场**」,⭐ **而正确的判据是「这条『不满足』的判定,靠的是什么」**。一句话说破:⭐ **拿"他没确认这是他的底线",去挡住"他自己说了这件事不成立" —— 挡错了对象。** ⭐ **一条 gate 判定有两个部分**:**条件**(「我要 ××」—— 我从材料里认定的,你没确认过)和 ⭐ **那一列在这条上的取值**(「这一列**没有** ××」—— **有时就是用户本人白纸黑字说的,非常硬**)。⭐ **`待你确认` 标的是前者**,⛔ **而旧规则拿它否掉了整行,连后者那个硬事实一起否掉了**。现在适用条件换成:**① 判「不满足」的依据是 `你给的` 的硬格(用户本人原话)**;**② 那个依据指向的是这一列自身**(⛔ 不是笼统的行业判断);**③ 条件来自通道 3 且原话逐字可引、属不可闭合类**;**④ 没有被标 `可能是自我说服`**。⭐ **「用户在不在场」不再是适用条件** —— 他在场只意味着**你应该顺便问一句**,⛔ 不意味着在他回答之前你什么都不能说。⭐ **并写死方向不对称**:**判「不满足」→ ✅ 可以踢出去**;⛔ **判「满足」→ 仍然不发通行证** —— ⭐ **踢掉一个选项,和抬高一个选项,需要的把握不一样**:前者只要"这一条上它确实不行",后者要"这条底线确实是你的底线",**而后面这件事只有他能确认**。声明句与翻转点照旧保留
  - **[P2] 「挑最弱的一维」没考虑"用户明说过这一维我不在乎"** —— ⚠️ 实测挑出了一个**正确但无用**的答案:那一维确实最弱,⛔ **而用户开头就声明过不关心它**。现在挑选判据前面补一步 ⭐ **⓪ 先排除用户本人明确降权 / 踢掉的那几维**(判据字面:有没有一句「××我无所谓」「××我不看」);⛔ **只排除"挑最弱"这一步,⛔ 不把那一维踢出排序**;⭐ **排除后一维都不剩 → 第五种合格答案**:「**你在乎的那几维上,我没找到明显的短板**」+ 一句留痕,⛔ **不许退回去挑那个他不在乎的**
  - **[P1] 框架没有任何地方要求标注来源的利益方向** —— ⚠️ 实测:一条关键判断的依据来自**一个有佣金动机的人**,⛔ **而框架里没有位置记录这件事**。⭐ **对照**:本模块对**信源可信度**已经很成熟(一手 / 二手 / 来源独立性 / 同源合并),⛔ **那一整套管的是"这条信息准不准",管不了"说这话的人希望我怎么选"** —— ⚠️ **一个中间人可以说一句完全属实的话,而那句话被挑出来说是因为它有利于成交**。补后缀 **`(有利益方向)`**(⛔ 不是第四套标签,与 `(口头说的)` 同级),判据字面(**这个人会不会因为我做出某一个选择而得到好处**);⛔ **不降低它的真实性**,⭐ **但它不能单独支撑一条"往那个方向走"的判断** —— 需要**没有这个利益方向**的来源交叉,⭐ **找不到就降为 `我推测的`** 并进必问项。⭐ 在「来源独立性」那节钉死:**利益方向与来源独立性是两件事** —— **三个都拿佣金的人说同一句话,既不独立、也同向,要一起打折**。⚠️ ⛔ **别改坏:这条只针对"指向一个选择"的判断**,中间人转述的**客观事实**不受影响
- **v0.1.7**(发布前第七轮修订,依据**一轮回归实测剩下的三条 + 一条跨模块核对**):
  - **[P1] 可分性判定补第三档 `方向确定 · 量级不明`** —— ⚠️ 旧版只有"分得出来" / "分不出来"两档,于是「这一维上有一条方向明确的硬差异,但零金额、量级判不出来」只能落进"分不出来",⭐ **和"两列真的差不多"在输出里长得一模一样**,⛔ **而两者下一步动作完全相反**。⭐ 判据字面:**这一维上有没有一条 `你给的` 或 `公开可查` 的事实能确定 A 优于 B(哪怕说不出优多少)**。⭐ **它算"分得出来"的一种**:✅ 可用它定先后,⛔ **不能算差幅 → ⛔ 不能判决胜维**,⛔ 也不能写进翻转点;措辞写死「**这一维 A 优于 B 是确定的,但优多少不知道**」;必问项配一句落在这一维自己刻度上的量级问法。同时在第 4 步的四类诊断里补 ②b(⛔ 不许并进 ②)
  - **[P1] 「开跑前」新增一致性自查(⛔ 在开始算之前跑一次)** —— ⚠️ 实测:材料里一处事件日期**晚于答复截止日**,⛔ **框架里没有任何位置处理"材料自己前后对不上"**,执行者只能借「两套都跑 + 显式声明」,⚠️ **而那个模式是为"外部事实不确定"设计的**。三项照查(日期先后 · 同一件事两处取值 · 相对量的基准);⛔ 不许自己挑一个用 / 静默取平均 / 当笔误改掉;⭐ 用户在场 → 原样念回;⭐ 不在场 → 两种读法都跑,**结论不同就写进一页纸第一段**。⭐ 与「材料日期 vs 检索日期」**并列不混**(一个管材料与外部世界,一个管材料与它自己)
  - **[P1] 一页纸第 ③ 块补回溯措辞(按决策时点字段自动选)** —— ⚠️ 旧版只有「这几天该做什么」,预设"你正在做决定",⛔ 回溯 · 复盘场景用不了。⭐ **B 措辞改成两段**(① 这一次已经定了的部分,⛔ 不出动作 · ② 下一次遇到同类处境时,提前做什么,⛔ 措辞落在"下次")。⛔ **不许写「你当时应该……」——「回溯的用途是让下一轮不再漏,不是让人后悔」,那句话产出零个可执行动作**
  - **[P2] 「整列现金都口头 → 按 0 计」在一页纸上补人话译法** —— ⚠️ 一页纸不许出现方法论词汇,⛔ **而那个 0 不解释,用户看到的就是"这家不给钱"**,恰好是这条纪律要防的那个误读
- **v0.1.6**(发布前第六轮修订,依据**六个互相独立的执行者各跑一个海外合成案例**,⚠️ **随后对照 agent 开了真值**):
  - ⛔ **一句话诊断:本模块的失败模式不是"判错",是"六次全部拒绝判" —— 而真值显示其中四次是可判的。** 六个案例、四种完全不同的真值类型,全部输出同一形状(「不排名次 + 数据不够」);真值核对:真的无从判断 1 例、部分 1 例、⚠️ **当时可判而它没敢判 4 例**(其中一例真值原话:「**几乎不需要推理,只需要不自我说服**」)。根因是**三条互锁的机械判据**:`无 gate`(回溯输入上无法解除)+「数列不数格」整维退出 + `未成 offer` 不参与排序 —— ⭐ **任一成立就出不了名次**
  - **[P0] 新增上位出口:有一列被二值硬约束判出局时,⭐ 必须出结论** —— ⛔ **优先于本模块其余任何一条"不出结论"的规则**。哪怕结论只是「只剩两列、而这两列分不出来」,⛔ 也不许因为别的维整维退出就压成"数据不够"。⚠️ **"某一列出局"是结论,"其余维数据不全"是缺口;合并成一句,用户拿到的是零个结论**。同时管住维度池:⭐ **一个"取到某值就让某列直接出局"的二值维,即使本次取值相同也不许删**
  - **[P0] gate 的输入通道从两条补到三条** —— ⚠️ 旧版只有 `positioning.md` 与"当场让用户写",⭐ **两条都要求用户在场**,于是**任何离线 / 转述 / 材料型输入最多只能走到 `无 gate`**。⚠️ **这很可能就是上一轮 gate 从没跑起来的根因,而它此前被误判成"回溯场景的固有限制"**。现在补**通道 3:从已有书面材料里认定** —— ⭐ **判据是字面的排他性措辞词表**(「我不可能」「必须要」「再也不」等),⛔ 不靠体会;提取出来的标 **`待你确认`** 并**回读确认**(⭐ 这一档正是"提取 = 替用户立法 / 不提取 = 有信息却判一条都没有"这个两难的解),⛔ 确认前既不能踢人也不能放人。⭐ 并**明确区分「冷启动」(用户在场、条件现写)与「用户不在场」(只有材料)** —— ⚠️ 此前框架里没有一处区分它们,只有前者有处理
  - **[P0] 「数列不数格」的标定失败 —— 判据重写(⛔ 旧判据作废)** —— ⚠️ 三个案例复现:三列表 2 列即过半 + "任一子项推测即整列计入" → **在真实稀疏材料上每一维都出局**。⭐ **更根本的毛病:它对「材料完整度」的敏感性超过了对「证据硬度」的敏感性** —— 一格由**五个互相独立、各自可证伪的来源**撑着的取值,被同维两个**空格**一起带出局。现在三步:⭐ **① 每一格分硬 / 推测 / 空三档**(⛔ 空 ≠ 推测,两者补法完全不同:一个去问、一个去证实)· ⭐ **② 每一列看它在这一维有没有硬格** · ⭐ **③ 整维退出的判据改成"这一维里没有任何一格是 `你给的` 或 `公开可查`"**;≥2 列可比 → 保留并明写「只有 _ 列可比」。⭐ **另补「硬证据留档」逃生位**(可比列 ≤1 且有硬格时必填)—— ⚠️ **实跑里执行者是靠别的章节手动把那一维捞回来的,而框架里没有任何规则要求他这么做**
  - **[P0] `无 gate` 与「分不出来」出口互撞,补裁决句** —— 两者要求相反(前者要排序照出、后者是唯一允许不出排序的出口),⛔ 旧版没有优先级。⭐ **裁决:`无 gate` 优先** —— 它管**输入缺失**,那个出口管**证据不足**,**连判据都没有时谈不上"分不分得出来"**;且重排出的名次在 `无 gate` 下一列都不能合法排第一。⭐ **那三条要求不作废,降级成第二段照写**,⛔ 两条原因都要写
  - **[P0] 「分不出来」出口的第 1 个必要条件在深潜里补同型出口** —— ⚠️ 它要求"先只用全硬证据的那几维重排",⛔ **而实跑里不存在任何一维是全硬的**,字面无法满足。⭐ **与 v0.1.3 给最小路径补过的那个死结同型,深潜里一直没补**。现在条件 1 改成两层:**第一层原口径 → 不成立才用第二层「降到格」**(每一维取可比列、只在这几列间比;**任何一对分得出来就照常出排序**);⛔ 不许跳过第二层直接宣布分不出来
  - **[P0] 「整维退出」的诊断补第四类:可问而未问** —— ⚠️ 实测里大量缺失属于这一类(用户自己明说"我没问"),却被整体归进 ①「缺数据」。⭐ **两者下一步动作完全不同**:真缺数据 = **拿不到**;可问而未问 = ⭐ **发一封邮件 / 问一句就有**。判据字面(**有没有一个具体的提问对象 + 问题写得成一句过去式问句**),并给**专属措辞**(具体到"问谁 + 原话说什么")。⛔ **把两种收进同一句话,会把"今天就能做完的事"说成"补不齐"**
  - **[P1] 「来源独立性」补第二问** —— 旧判据只有「**它们能不能同时错**」,治得了"同一个人说三遍",⛔ 治不了"**同一个根因在几个不同职能面各露一次**"。实测:来自 recruiter 与 HR 至少两人、四个不同职能面的四句话被压成一个来源,叠加整维退出后**对结论贡献为零**,⚠️ **而真值证明它就是决定性的**。现在补:**这几条如果错,是同一个人错,还是同一个组织事实错?** 后者按**职能面数**算多个独立观测面。⚠️ ⛔ **第一问一个字不改**(它在"五条事实追溯到五个互不相干对象"那组样本上判得更硬,那条路径原样保留);⛔ 保守缺省也不动
  - **[P1] `未成 offer` 的三条判据补第三种取值 `判不出来`** —— ⛔ 旧版只有 `成立` / `不成立`,于是**没有提问对象**(判据 1 必须问出来、不许推测)时只能判 `不等`。⚠️ **"没人可问"说的是你的处境,不是那家公司的**。⭐ 判据 2 的锚点也补齐(没有第 1 名时换成"排在最前面的那一列";一个 offer 都没有 → `判不出来`)。另补 ⭐ **「连流程都没开始」的机会 ⛔ 不进表**(判据字面:有没有一件已经发生的事)
  - **[P1] 补第三种形态:零个 offer + 有在职工作** —— ⚠️ 旧版覆盖了"一个 offer 无在职"和"一个 offer 另一家在面",缺这一种,后果是**六件必需产出里三件失去对象,而模板对它们都写着「不许留空」**。现在给三件各一个写死的替代形态(排序结论 → gate 结论 / 翻转点 → 「什么变了你就该开始看外面」/ 第 1 名最弱的一维 → 「留在原地最弱的一维」)
  - **[P1] 「第 1 名最弱的一维」补第四种合格答案:本次没有第 1 名** —— ⚠️ 三种旧答案**全部预设存在第一名**,而 6/6 案例都没有。分两支写死(名次排出来了但没人能合法拿第一 → 「排在最前面那一列最弱的一维」;连名次都没排出来 → 「争第一的那两列各自最弱的一维」,**两列各写一遍**)
  - **[P1] 「每一名与下一名差在哪一维」补"参与排序的维度为零"的写法** —— ⚠️ 它与翻转点都以"名次已存在"为前提,实跑里**四个执行者各编了一种写法**。现在写死两支(先看上位出口 / 一列都没出局时照着说「本次参与排序的维度是零维 —— 不是这几列一样好,是我手上没有任何一维能拿来比」+ 一句最短缺口)
  - **[P1] 全 remote / 跨国场景下「通勤」语义失效** —— ⭐ 全 remote 时**通勤按 0 并写明**(⛔ 不许编);⚠️ **住处与租金两格互为输入(循环)** → 住处提到**前置声明**里先定死,⛔ 定不下来时**两格一起标 `我推测的`**。另补两项此前在分母 / 分子里**没有位置**的东西:⭐ **跨时区错位(进分母,与通勤同性质)** · ⭐ **无带薪假 → 可计费周数(进分子,⛔ 不许按全年算)**,各配一个 `纯占位待校准` 参数与保守 / 激进两端
  - **[P1] ⭐ 新增「前置声明」栏 —— 给"改变其他所有维度计算口径的前提"一个容器** —— ⚠️ 框架原本只有「维度」和「参数」两种,⛔ 而**雇佣形式**这类东西两种都不是:它自己不排序、也不是算式里的数,**却决定了别的维度怎么算**。判据一句话:**"它取什么值会改变另一维怎么算" → 它就是前置声明**。⛔ 标 `我推测的` 时,它影响的那几维一律按单元格退出
  - **[P1] 「开跑前」补四项必需输入**:⭐ **答复截止日**(⚠️ 它是多处判据的输入,却从来没被要过)· ⭐ **材料日期 / 事情发生时间** · ⭐ **决策时点** · ⭐ **用户在不在场**
  - **[P1] 补纪律:材料日期 vs 检索日期** —— ⚠️ **三个独立案例复现**:只标检索日期 → 「当时可不可知」与「现在是否属实」被混成一件事;其中一例直接踩雷(**最关键的那条公开信息公示于决策时点之后**,⭐ 执行者自己发现并写破了,**而框架没有任何规则要求他这么做**)。现在写死:**公示时间晚于决策时点的信息,只能用于「今天该怎么办」,⛔ 不能用于「他当时判断得对不对」**,那一格在比较里按单元格退出
  - **[P2] 两处"只有一种措辞"的模板补齐反向那一种** —— ⭐ **三点采样跳过提醒**:那两个参数没进任何参与排序的维度时,⛔ 照抄旧措辞会**把用户推去补一件补齐了也不改变结论的事**;⭐ **「无翻转点」**:旧版只有"证据太足所以不会翻",⛔ 缺"**证据太少所以怎么变都不影响**"那一种 —— ⚠️ **两句话给用户的下一步动作正好相反**(一句是"不必再查",另一句恰恰是"必须再查")
- **v0.1.5**(发布前第五轮修订,依据**端到端实跑**:用户从零走完全程,⚠️ **反馈「看都看不懂」**):
  - **[P0] 新增第 1 件必需产出:一页纸(原有五件顺延)** —— ⚠️ **准入门槛过关 ≠ 他读得懂。** 本模块在准入那一头确实是过关的(只要一个能读写本地文件的 agent、全是 markdown、不需要 git),⛔ **但实跑交出去的是几十 KB**,里面是误差带 · 指数 · `纯占位待校准` · "我引入的折算" · 多层嵌套表 · 四种标记 · 三套标签体系 —— **对一个今晚就得答复、且不是技术背景的人,可消费性接近零**。⭐ **修法不是删规则**(删了就退回记分板),是**加一层呈现层**:**一页纸放最前面,方法论痕迹全部留在它后面的各节、一个字没删**。⭐ 形态照抄仓库里已经验证过的 [`面试执行一页纸`](../03-company-analysis/interview-strategic-assessment/templates/面试执行一页纸.md)(那是给现场用的那一份)
    - **这一页里只有四件事**:**顺序 + 第 1↔2 差在哪一件事** · **哪个假设变了会翻** · **这几天该做什么** · **哪几条是我猜的**
    - ⛔ **禁用词表是纯字面判据**(出现 `误差带` / `指数` / `gate 待定` / `纯占位待校准` 等任一个 = 没收敛完),与「闭合上限那一格空着按不可闭合处理」同源:⭐ **判据必须能一眼判,⛔ 不能靠执行者当场裁定"够不够通俗"**
    - ⛔ **顺序必须与排序结论逐字一致**;⛔ 不许出现总分 / 星级 / 红绿灯 / 匹配度百分比 —— ⚠️ **这一件新增产出最可能的失败方式,就是被写成一个综合分**(纪律 3 在这一页上一个字不改)
    - ⭐ **四种标记有写死的人话译法**(`gate 未通过` → 「它不满足你自己写下的一条底线:××」等):⭐ **换说法、⛔ 不换存在**
    - ⭐ **「没有一列能合法排第一」在这一页上有专门写法**:第一句形状写死成 **「今晚先别答复 —— 不是这几个都不好,是你还缺一件东西:××」**,⛔ 不许写成「信息不足,建议慎重考虑」。⭐ **要让他看出这不是框架没算出来,是还差一件今天就能做的事**
    - ⭐ **来源标注在这一页上改成三行人话**(你说的 / 我查的 / ⚠️ 我猜的还没证实),⛔ 不许把 `你给的` / `公开可查` / `我推测的` 原样堆上去 —— **堆上去这一页就废了**;⛔ 但「我猜的」那一行不许省,⭐ 一条都没有时也要写「这一页上没有我猜的东西」(判据仍是"这一行是不是空的")
  - **[P2]** 「不对劲的时候」补一行(**用户说"看都看不懂"**,并写明这不是准入门槛问题);`templates/offer-matrix.md` 最前面补一页纸空模板;`examples/sample-offer-comparison.md` 最前面补同一份分析的一页纸版本 —— ⭐ **同一份分析、两种说法摆在一起,是这次修订最能说明问题的一处**
- **v0.1.4**(发布前第四轮修订,依据**合成回溯测试**:8 个案例,框架在不看真值的情况下跑完):
  - **[P0] 补第四种标记 `无 gate`:gate 表整个为空时,每一列都不能排第一** —— 8 例里 **4 例**用户一条必要条件都给不出(回溯 / 冷启动场景都会这样)→ gate 表整张为空。⚠️ **而「整个没有 gate」比「某一格没问到」还宽松,旧版却连一个标记都没有** —— 最松的那一种情形反而畅通无阻。现在 `gate 未通过` / `有条件满足(待闭合)` / `gate 待定` / `无 gate` **四种全部不能排第一**;⭐ **解除只要写下一条必要条件(哪怕只有一条)** —— 这个标记的作用不是逼他写全,是**不让"没写"变成默认放行**。⚠️ 与冷启动例外**不合并**:冷启动管的是"条件是事后写的",本条管的是"一条都没有",两者是先后关系
  - **[P0] 「两维方向相反」有了独立于「证据不足」的出口** —— 实测(case-06):两维**都分得出来但方向相反**,纪律 3 禁掉加权求和,而旧版只有"每一名与下一名差在哪一维"(**前提是名次已经存在**),**没有名次的产生算法**。执行者只能塞进「分不出来」出口,⚠️ **而那个出口是给证据不足设计的,措辞上与"证据充足、方向冲突"完全无法区分**。现在:⭐ **排序不由框架产生,由用户回答一句话产生 ——「这两件事只能保一件,你保哪一件?」原话写下来就是这一次的权重,且只对这一次有效**;与加权求和的区别是**一次显式的、被记录下来的取舍**,⭐ **必须出现在输出里**。⛔ 不引入任何权重
  - **[P1] `我推测的` 的"按单元格 vs 整维"改成能一眼数出来的判据** —— 旧版是"支撑不了一个结论",**三个案例的最终结论直接由执行者这一次的裁定决定**。现在:**数列不数格** —— **1 列推测 → 按单元格退出;过半的列都是推测 → 整维退出**(三列表 = 2 列即过半),并必须写进「要证实它你该问谁」
  - **[P1] 补两种没覆盖的形态** —— ① **一个 offer + 当前无在职工作**(连基准列都没有):基准换成它自己、⛔ 机会成本明说算不出来、**结论形态从"排序"改成"接 / 不接 / 先补一条再定"**(只剩一列时 gate 才是全部价值);② ⭐ **还在流程中、尚未成为 offer 的机会**(很可能是最常见的形态之一):给它 **`未成 offer`** 标记,**进表但不参与排序、⛔ 不给名次**,并给出「要不要为它拖延答复」的三条判据(时间够不够得着 / 假想它拿到了会不会改变决定 / 拖一天的代价)
  - **[P1] 分母补「出差」项** —— 与通勤同性质(**报销的是钱,不是时间**):**在途全额 + 驻场超出常规工时的部分**;⛔ 岗位描述写了驻场 / 现场支持的不许按 0 计;新增 `出差强度默认`(`纯占位待校准`,含保守 / 激进两端)
  - **[P1] 「原话记不清」有了位置** —— 它不是 `你给的`(那一档要有可复述的说法),也不完全是 `我推测的`(那一档用户根本没听过)。现在标 **`你给的(原话记不清)`**:排序里按 `我推测的` 处理,⭐ **但必问项的问法不同 —— 不是问新问题,是回去把那句话确认成一句可复述的话**,且**排在必问项最前面**(补救成本最低)
  - **[P1] agent 自加的参数补来源等级栏** —— 旧版只有方向声明义务。实测:执行者临时编了一个折算系数,**而它决定了唯一参与排序那一维的判定**。现在:必须进「口径与假设」表 + 必须标等级(**没给过 / 没写过 / 查不到 = `纯占位待校准`**)→ 自动落进三点采样,且**交互项因此被触发**
  - **[P1] 「加第二维」补停止条件** —— 实测有案例加到第二、第三维仍整维退出。现在:**每次只加一维、最多加到第三维**;停下来后走「分不出来」出口并**点名缺的是哪几类数据**(① 整维退出 = 真缺数据 / ② 差幅不过误差带 = 不缺数据 / ③ 方向冲突 = 走另一个出口)。⭐ 三维全是 ② 时是一条**强结论**,不是"分不出来"
  - **[P1] 补来源独立性口径** —— `06-positioning` 和 `03-company-analysis` 都有"数的是互相独立的来源,不是条数",**本模块缺席**,而实测中有案例的核心恰恰是"这几条观察算不算互相独立"。现在自包含地写死:**判据 = 它们能不能同时错**;同一场面试同一个人说的三句话 = 一个来源;⛔ 判不出同不同源时**按同源处理**
  - **[P2] 最小路径出口补一句采样提醒** —— ⚠️ **最需要三点采样的,恰恰是最不可能跑深潜的人**(今晚就要答复的)。⛔ 不把它移回最小路径(那会重蹈上一版覆辙),⭐ 但收尾必须说出口:**「你这次跳过了参数采样,这个排序对『浮动兑现率 / 周工时』有多敏感是未知的」** + 给出只补一项的具体做法
- **v0.1.3**(发布前第三轮修订,依据**第二轮端到端实跑测试**:空白环境、只拿仓库文件、扮演真人用户走完全程):
  - **[P0] `gate 待定` 补上「不能放人」的执行动作 → 三种标记全部不能排第一** —— 旧版在 gate 那节写着「推测在 gate 上既不能踢人,也不能放人」,但**只有「不能踢人」有执行动作**(留在排序里、标 `gate 待定`),「不能放人」一个动作都没有。于是出现一个反常的不对称:**必要条件状态"未知"的那列能赢,必要条件"已知违反"的那列反而不能赢** —— 而两者的差别只是**有没有人去问过**。现在 `gate 未通过` / `有条件满足(待闭合)` / `gate 待定` **三种全部不能排第一**,「没有一列能合法排第一」那条强结论的枚举同步从两种扩到三种
  - **[P0] `未验证` 在本模块有落点了** —— 上游复盘用三态(`证实` / `证伪` / `未验证`)且明写"不能压成两态",而旧版 `你给的` 的定义写着「或来自他的面试复盘」,**按字面读「某条判据:未验证」就是 `你给的` → 参与排序**,三态在这里被压回两态。现在写死:**`未验证` 一律按 `我推测的` 处理**(按单元格退出排序 + 必进必问项 + 挂着必要条件时标 `gate 待定`);**`你给的` 只指标 `证实` / `证伪` 的那些**(`证伪` 也是 `你给的`)
  - **[P0] 推翻上一版的「最小路径不触发任何对照义务」免责表** —— 那张表 4 行里 3 行的论证是错的("gate 是二值的、没有降级"用的是已被 v0.1.2 取消的旧机制;"不判有条件满足"答非所问,触发条件其实是"换一种通勤方式会不会改变 gate 判定";三点采样漏了 `周工时默认` 这个 `纯占位待校准` 参数,两个参数落后两档就已触发交互项)。**改法:把这些对照从第 1 步整体移进深潜**,最小路径的 gate 只判满足 / 不满足两档,其余一律标 `gate 待定` 挂起
  - **[P0] 10 分钟的承诺撤掉,改成产出边界** —— **旧版自己给的分步预算相加就已经把 10 分钟占满**(零余量),任何一处对照被触发都必破。现在:**最小路径 = 四步跑完 + 一版带待确认标记的排序**,⛔ 不再给最小路径写任何分钟预算
  - **[P0] 冷启动场景的 gate 退化,写明了** —— 第一次用本模块的人(offer 已在手、无 `positioning.md`),他的必要条件**结构性地必然是"事后重构"**。旧版会逐条问写下时点(答案已知)并把 2-3 条各跑两套(**二的 n 次方套**),工作量翻倍而约束力一点没换来。现在:**不必逐条问,一次性按"全部事后重构"处理、只跑两套,并一次性说明「这一次 gate 只起暴露作用、不起约束作用」**,同时给出正面价值(**把底线写下来,下一次它才开始约束你**)并指向入职前存档。README 的 I1 三问同步补冷启动警示
  - **[P1] 通勤方式补保守缺省** —— 旧版说它「和『这条是不是事前写的』是同一类,配同一条解法」,但事前 / 事后拿到的是**两样**(两套都跑 + 保守缺省),通勤方式只拿到一样。现在:**改变 gate 判定时缺省按更慢的那一种算**;要用更快的须给**行为化理由**,⛔ 不接受「我也可以开车」这类可能性陈述
  - **[P1] 本模块开始读 `positioning.md`** —— 旧版第 1 步直接「要用户写下 2-3 条」,全文零处提到它,于是接续场景里一条几周前手写的真·事前条件被当场重问 → 时点变成今天 → 降级成 `事后重构`。现在:**第一个动作是先看工作区有没有 `positioning.md`**,有就直接读,**写下时点按文件里记的日期判**;并给 `positioning.md` 的第三类字段(**硬性排除**)一个接收位,保留它的**短路语义**(命中即出局,⛔ 没有「有条件满足」这一档)
  - **[P1] 误差带的比较口径写死 + 最小路径补出口** —— 「±5」旧版有两种读法(差幅门槛 / 区间重叠),**同一份数据不同答案**。现在写死:**差幅必须严格大于误差带绝对值才算分得出来**。另外最小路径只有一维,判为"分不出来"后既没有下一维可换、也走不了「分不出来」出口(那个出口要求"先只用 `你给的` / `公开可查` 的那几维重排")→ 现在给它专门出口:**直接进深潜加第二维**
  - **[P2]** 证据等级补 `未验证` 档;`你给的` 内部补 **`(写进 offer letter)` / `(口头说的)`** 后缀(否则"口头承诺按 0 计"在横向对照表里没有落点);「开跑前」输入表补**上游文件位置**与**能不能联网检索**两项;「第 1 名最弱的一维」补第三种合格答案(**不是会跌出第一,是可能整个出局**);补「**必问项问不到、而答复截止已到**」的四条收场规则;**L2 沉淀的写回目标改为工作区 `offers.md`**(旧版写回仓库 `templates/`,与"不需要 git"冲突且会让用户拉更新冲突);「不对劲的时候」补两行(`未验证` 被当成没问题 / 从零重问而 `positioning.md` 已有)
- **v0.1.2**(发布前第二轮修订,依据**回归验证**:P0-3 已堵、P0-1 半堵、P0-2 未堵):
  - **统一思路**:剩下的问题全部落在「**有人说了一句无人可验证的话,框架就照做**」的地方。修法不是再加一句 ⛔ 提醒,而是**把不可验证的用户自述,转成一个可见的敏感性**——与本模块已有的翻转点同源
  - **[P0-2] 事后重构的必要条件不再降级**,改成「**两套都跑 + 显式声明差异**」(含它 / 不含它)。旧版激励方向是反的:用户想让底线**不算数**时,降级正是他要的结果
  - **[P0-2] 判定表补「说不清 / 记不清」兜底行 → 按事前算**(保守缺省)
  - **[P0-2] Gate 判定格补来源标注**:`我推测的` 在 gate 上**两个方向都不生效**(既不能踢人也不能放人),必须先升级为答复前必问项,未答复期间标 `gate 待定`
  - **[P0-1] 覆盖误差带补三条**:① 收窄要给理由且理由要对得上具体哪一项估算,给不出就按默认 ② 覆盖了就**同时按默认跑一遍**,名次不同必须显式声明 ③ 模板补「声明于第几轮 / 是否修改过」留痕位
  - **[P0-1] 裁决:误差带不做三点采样**(你需要误差带来判断采样结果算不算变化,再去采样它本身是循环的),并修掉标签体系表里与之冲突的那句
  - **[P0-3 放大器] 分母口径写死用「闭合前」的通勤**;**「有条件满足」进排序带 `有条件满足(待闭合)` 标记且不能排第一**(与「留在原地」对称);**通勤口径定义死**(工作日早高峰 · 实际会用的方式 · 同表所有列同一口径)
  - **[P1] 第 1 名最弱的一维**:明确「跌到任何程度都不会,因为决胜维是另一维」是**合格答案**;⛔ 禁止编跨维门槛(等于偷偷设权重);补「最弱」的挑选判据(先看证据最薄,再看绝对水平最低)
  - **[P2]** 三点采样的保守 / 激进方向**逐参数写死**;补**交互项**(两个及以上参数在后两档时,额外跑一次同时取保守值);裁决「相对量够不够」与「不需要具体金额」的互斥
- **v0.1.1**(发布前修订,依据区分度测试「不通过」+ 红线审查「需修改」+ 独立可用性测试):
  - **gate 补两处闭合性**:必要条件的**写下时点**(事后写的降级为加分条件,与模板口径合一);「有条件满足」只对**可闭合**的条件成立,且**写下时必须带闭合上限**,没写上限一律按不可闭合处理
  - **给「估算误差带」一个定义**:每一维一个默认误差带 + 来源等级,且必须在排序前写进「口径与假设」——旧版误差带全文无定义,同一份数据取 ±1 与取 ±5 会得出两条不同的决胜维
  - **发展空间瘦身**:删掉「四条策略是否彼此吻合」(不可测、光环效应);「市场蓝海还是白热化」换成「最近一次丢单输给了谁」;「团队 AI 使用程度」移出本维,改为**只记录不排序**
  - **AI 时代三条降级为必问项**(经验溢价 × AI 暴露度 / 学徒通道 / 信号可迁移性),拿到具体回答才升级成维度;「你在闭环里的位置」并入「授权范围与汇报线」,消除重复计入
  - **离职者去向改写**:从「最好的单一代理指标」改成**问出来的、有系统性乐观偏差的、问不到就整维出局**的一条,并明确 ⛔ 不检索特定个人
  - **输出加第 5 件必需产出**:第 1 名最弱的一维 + 它要跌到什么程度才会掉出第一(补上「赢面越大弱点越沉默」的缺口)
  - **翻转点**:加「临界取值」列并要求写成必问项里的具体问句;「至少一条」改为「没有就明写无翻转点及理由」
  - **三点采样义务扩面**到所有 `默认建议值` / `纯占位待校准` 参数,且名次不变但决胜维变了也要写
  - **修口径分叉**:通勤时间不再重复计入生活成本(只留交通费);最小可接受形态改为三组;`我推测的` 明确**按单元格生效**;三套标签体系显式区分(证据等级的 `公开可查` 改名 `公开记录`);补 `实践校准` 与 `周工时默认`;融资轮次禁止反推 runway;「分不出来」出口写死三个必要条件
- **v0.1.0**(首发):确立写死的五条纪律(gate / 真实时薪含通勤 / 出排序不出综合分 / 翻转点 / 来源标注);确立目标 10 分钟的最小路径;维度从必填表降为可选维度池 + 一条挑选判据;补齐三段式区块与三级自救阶梯。


## 2026-09-13 修订

来源链与观察面分开计,不再把不同职能等同独立证据。旧变更日志仅记录历史,当前执行以上述来源独立性节为准。回归材料见 [定向回归](../../fixtures/research-regression-2026-09-13.md)。

Files in this skill

  • README.md87 KB
  • 透镜库.md13.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.