# Observation Lifecycle(观察生命周期协议) 被这些子 skill 引用:`cheat-retro`、`cheat-bump`、主 SKILL.md。 这是项目原则 #3 的完整规范——**rubric 是工作台,不是博物馆**。任何对 `rubric_notes.md` 中观察条目的增删都必须遵循本协议。 --- ## 三个生命阶段 每条观察都在下列状态之一: ``` [新增] → [观察记录] → [跨视频观察] → [规律沉淀] / [被吸收为维度] / [被推翻] ↘ [待验证假设](暂存) ``` | 阶段 | 在 rubric_notes.md 的位置 | 触发 | |---|---|---| | **观察记录** | `## 观察记录` 段 | 单次复盘后写入。每篇视频复盘对应一条 | | **跨视频观察** | `## 重大跨视频观察` 段 | 同一个 pattern 在 ≥2 个样本里出现 | | **规律沉淀** | `## 规律沉淀区(高置信度)` 段 | 已有 ≥2 样本支持且**通过升级验证流程**(即被吸收进维度或被显式确认) | | **待验证假设** | `## 待验证假设` 段 | 单样本观察暂存,等更多样本 | --- ## 升级到下一阶段的门槛(**Claude 判断为主,下面是参考默认**) | 从 → 到 | 默认参考门槛 | Claude 判断信号强度(可软违反) | |---|---|---| | 观察记录 → 跨视频观察 | 同 pattern ≥2 样本 | 1 样本 + 评论区 ≥2000 赞的强模因证据也可升 | | 跨视频观察 → 待验证假设 | 单样本 + 强信号但还没复现 | — | | 跨视频观察 → 规律沉淀 | ≥2 样本 + 不需要改公式 | 1 样本 + 强反例(≥3x 偏差)也可升(标 `**Single-sample, high-confidence**`) | | 跨视频观察 → 维度(不再单独存在) | ≥3 样本 + 通过 bump 流程被吸收 | 同 cheat-bump 的 READINESS_HEURISTIC | | 任意 → 删除 | 被新数据推翻 / 被吸收为维度 / 被沉淀为规律 | `cheat-bump` cleanup pass,或单独操作 | **核心原则**:样本数是**信号强度的代理指标**,不是信号本身。3 个清晰、可追溯到具体数据点的样本 > 10 个零碎、低置信度的样本。 **Claude 软违反的纪律**: - 标注 `**Promoted with N samples (default expects M)**: <为什么仍然成立>`,让用户审视 - 不连环软违反——如果 Claude 在最近 3 次升格里有 2 次以上软违反,cheat-status 提示"你的观察升格判断可能太激进,建议回到默认门槛 review" ### Sample size → 允许的动作(细化分级) 按校准池**总样本数**决定能做什么改动——粗暴改大动作需要更多证据: | 校准池规模 | 允许的动作 | 备注 | |---|---|---| | **1 个** | 记录"单次观察" | 单点不能触发任何规则改动,只能作为种子 | | **2-4 个** | 提炼"候选规律" + 升级到"跨视频观察"段 | 仍不能改公式 | | **5-9 个** | 修正维度定义(**定性变更**——如把 SR=5 的门槛说更严)| 不动权重数值,只改判断习惯。**第一次正式 bump 也在这一档**(rubric 形态首次成型) | | **10-19 个** | 微调权重 ±0.2(**定量变更**)| 如 ER ×1.5 → ×1.7;新增 / 删除维度仍属"定性大动作",需要更多样本 | | **20+ 个** | 用回归反推权重(**数据驱动**)| Spearman correlation 之类,可作为 bump 依据 | **关键纪律**: - 不要在 N=5 时就用回归——5 个点拟合 7 维公式必过拟合 - 不要在 N=20 时还用直觉调权重——已经有数据信号了 - bump 协议(`bump-validation-protocol.md`)的 `MIN_SAMPLES_FOR_BUMP=5` 是**形态首次成型**的最低门槛,不是"开始数据驱动"的门槛——后者要 N≥20 --- ## 删除规则(最容易做错的部分) **两类条目必须删,不能保留**: ### 类型 A:被吸收为维度的观察 例:v2.1 升级时,"观察 E(致谢段二创量级是 ER=5 的最强外部证据)"被吸收为新维度 **MS(Memetic Shareability)**。 → 升级落地后,**删除**"观察 E"这条观察记录。维度 MS 本身就是新归宿。 **理由**:保留观察 = 同一概念在文件里出现两次(一次作为维度,一次作为观察)。读者会困惑:这是历史还是仍生效的规则? ### 类型 B:被新数据推翻的观察 例:观察 X 提议"长视频天花板低",后来 4 个长视频样本都破 50w → 推翻。 → **删除**这条观察。 **理由**:保留 = 让未来的你或其他读者基于错误规则打分。 --- ## 必须保留的条目 下列条目**不删**,留在原处或迁移到合适段: - **未解决的观察**(既未被吸收也未被推翻)→ 跨升级时迁移到新版本的"待验证假设"段 - **历史校准事件**(如"v1 → v2 升级是因为房价 259w 严重低估")→ 保留在版本日志的"升级 Memo"段,**不**保留在观察段 - **本版本仍生效的规律**(已沉淀到"规律沉淀区")→ 保留 --- ## 不允许的反模式(**必须拒绝**) 下列模式都是"博物馆冲动"——把 rubric_notes.md 当历史档案: | 反模式 | 为什么不行 | |---|---| | `~~ER 权重 1.5~~` `**改为 2.0**`(带删除线的旧值) | 用 git history 看旧值,不要在文件里堆 | | "我曾经以为 SR 重要,但其实..." | 这种考古条目让读者读完不知道当下规则是什么 | | "v1 时代 NA 是关键,v2 后发现不是" | 同上。删掉 NA 相关条目,留版本 memo 解释为什么 NA 被砍 | | "保留这条观察作为反例" | 反例的位置是版本 memo 的"被推翻假设"小节,不是观察段 | | "下个 bump 再删,先放着" | 拒绝。bump 落地的同一次操作里删干净 | git history 才是真正的归档。`rubric_notes.md` 是当前生效规则的快照——读者打开它应该看到**今天该怎么打分**,而不是过去几个月的演化史。 --- ## Blind channel leak guard(**任何 skill 写 rubric_notes.md 时必须遵守**) `rubric_notes.md` 是 cheat-score-blind sub-agent(channel B)的**白名单**——sub-agent 读这个文件给 script 打分时,文件内容不能含**已发布作品的实绩数据**,否则 sub-agent 的"盲"被破坏。 **禁止写入 rubric_notes.md 的 pattern**: | 模式 | 例子 | 替代位置 | |---|---|---| | 真实视频标题 + 实绩 | "「停止期待」播放 71.1w" | rubric-memo.md | | 派生证据带命名锚 | "派生证据:「她不一样」MS=5 → 实绩 124.8w" | rubric-memo.md | | 校准池重打表 | bump 时的样本对照表 | rubric-memo.md | | 跨模型审核引用含数字 | "audit: 「老板废话」rank 一致 ✓" | rubric-memo.md | | 含 `\d+w` / `\d+万` / `\d+M` / `\d+k` 的数字(**除 bucket 边界**) | "实绩 13.7w" | rubric-memo.md | **允许的 pattern**(通用语言): - 公式:`(ER×2.0 + HP×1.5 + ...) / N × M` - 维度定义:`ER(情感共鸣):0=无情绪 / 3=中等共鸣 / 5=极端共鸣` - 派生证据**抽象化**:`派生证据:高抽象密度样本 → CC=1 → 低 reach` - Bucket 边界(数字属于规则不属于实绩):`5-30w / 30-100w / 100-150w / >150w` - 观察 ID + 一句话:`观察 E:开头 5 秒含问句 → ER+`(不带样本名 / 不带实绩) **强制 cheat-bump Phase 5 末尾自检**:写完 rubric_notes.md 后跑 `grep -E '\\d+\\s*[wWmMkK万]|播放|实绩|实际'` → 命中 → abort + 回滚。这是硬约束。 历史背景:PR #11 引入 cheat-score-blind 时漏算了这条——cheat-bump 把 Memo 写进 rubric_notes.md,sub-agent 通过白名单读到实绩。PR #12 修复(拆 file)+ 加本段约束防止将来再犯。 --- ## cleanup pass 的强制时机 `cleanup pass` = 把所有满足"可删除"条件的观察一次性清掉。 强制触发: - **bump 落地的最后一步**(见 `bump-validation-protocol.md` Step 5) - 用户显式触发"清算"操作(罕见) 非强制但建议: - 校准池每加 5 个样本,主动审视"观察记录"段,看哪些已经可以升格 / 删除 - `cheat-status` 看板检测到 `rubric_notes.md` 行数超过 500 时,建议清算 --- ## 行数预算 健康 `rubric_notes.md` 的体积参考(目标): | 校准池规模 | 健康行数 | 警戒行数 | |---|---|---| | 0-5 篇 | 100-200 | >300 | | 5-20 篇 | 200-400 | >500 | | 20-50 篇 | 300-500 | >700 | | 50+ 篇 | 400-600 | >800 | 行数超警戒 → 必跑一次 cleanup pass。这不是为了好看,是为了**读者打分前能在 60 秒内读完核心规则**。 --- ## 与"观察记录"模板的对齐 每条观察记录的标准模板(`rubric_notes.template.md` 也用这个): ```markdown ### YYYY-MM-DD [标题简称] (id) — [一句话定性,如"验证 ER 主导"] - 预测:composite=X.XX,bucket=Y - 实绩:播放 / 点赞 / 评论 / 转发(带 T+Nd 标注) - Top 评论关键词:[简短摘录 + 赞数] - 判断:哪个维度被验证 / 推翻?为什么? - Rubric 调整:[如果有,写明 "下次打 XX 类文章时改 YY"] - 详见:[predictions/.md] ``` 跨视频观察的模板: ```markdown ### 观察 X — [一句话规律] **证据**: - 样本 1(composite, 实绩):核心数据 - 样本 2(composite, 实绩):核心数据 - 样本 3(composite, 实绩):核心数据 **假设**:[如果规律成立,意味着什么 rubric 调整] 样本数:N 个,[已超 / 待补]。 ``` --- ## 与 bump 协议的衔接 `cheat-bump` 在 Step 5(cleanup pass)必须按以下顺序处理观察段: 1. 列出所有 `## 观察记录` 段条目 2. 对每条问 3 个问题: - 它是否被本次 bump 吸收为正式维度?→ 删 - 它是否被本次 bump 的新数据推翻?→ 删 - 它是否仍未解决?→ 迁移到"待验证假设"段 3. 列出所有 `## 重大跨视频观察` 段条目 4. 对每条问相同 3 个问题 5. 把"已被验证但不需改公式"的规律 → 迁移到"规律沉淀区" 6. 最后**重新阅读** `rubric_notes.md` 全文,确保读者打开能在 60 秒内理解当下打分规则