{
  "audit_date_utc": "2026-10-14",
  "status": "editorial_suggestions; production manifest remains authoritative",
  "implementation_manifest": "interactive-pages/placement-manifest.json",
  "demos": [
    {
      "concept": "KV cache",
      "component": "KvCacheDemo",
      "primary_chapter": "books/llm/llms-from-scratch/chapters/08-kv-cache.md",
      "primary_title": "第 08 章 KV cache：先证明等价，再讨论加速",
      "insert_after_section": "8.2 prefill 与 decode 的形状不同",
      "insert_before_section": "8.3 上游朴素版怎样保存状态",
      "body_evidence": "8.2 明确给出 prefill 的 [B,H,P,d]、decode 的 [B,H,1,d] 查询以及带偏移的块 causal mask；8.8 明确区分计算量、缓存元素数与实际测速。",
      "why_here": "读者已经理解 K/V 可复用，尚未进入状态保存实现；此处让矩阵变化可见，能作为代码阅读前的桥梁。",
      "suggested_introduction": "先用一个小模型看清新增 token 改变了哪些位置。下面只演示计算与缓存的关系，数字是按教学规则计算的工作量，不是设备测速。",
      "success_checks": [
        "prefill 处理全部提示，decode 只产生新增 query，同时读取全部可见 K/V",
        "每层独立 K/V，Q 不作为历史缓存持久保存",
        "若支持块追加，第 i 行可看见键 j <= past + i；不能使用错误的左上三角",
        "明确等价条件：权重不变、位置一致、上下文不丢弃、关闭训练随机性",
        "缓存内存与上下文增长同时可见；不暗示缓存让注意力历史读取变为常数",
        "不将剪掉旧 K/V 与截断原 token 后从头重算称为同一算法",
        "单步和重置可重复，任何数值都不标称实际训练或 GPU/CPU 性能"
      ],
      "related_chapters": [
        "books/llm/llms-from-scratch/chapters/09_gqa_mla_kv_sharing.md",
        "books/llm/llms-from-scratch/chapters/14-sampling-generation.md"
      ],
      "source_review_depth": "Full chapter text read; no experiment rerun."
    },
    {
      "concept": "教育 BPE",
      "component": "BpeDemo",
      "primary_chapter": "books/llm/zero-to-hero/chapters/22_从零训练BPE并保存词表.md",
      "primary_title": "第 22 章 BPE 学的是一张有先后顺序的合并表",
      "insert_after_section": "22.3 编码新文本时，不再数谁出现得最多",
      "insert_before_section": "22.4 解码容易，但可逆性的方向要说清楚",
      "body_evidence": "22.1 区分重叠计数和不重叠替换；22.2 本书字节 BPE 的同频规则是编号对字典序，而 minbpe 简单实现倾向首次出现顺序；22.3 用固定 rank 解释编码，并给出最长匹配反例。",
      "why_here": "当前组件使用固定字符级教学规则，不训练字节 BPE；放在编码排名解释之后最贴合组件实际能力。",
      "suggested_introduction": "下面用一套固定的字符级教学规则，逐步展示编码时怎样按合并顺序组合相邻项。它不训练真实 BPE，也不复现 GPT 的分词结果；本章代码从 UTF-8 字节出发，仍以代码中的 merges、rank 和测试为准。",
      "success_checks": [
        "界面明确写字符级教学词表，不能把字符编号当真实 UTF-8 字节 ID 或 GPT/tiktoken ID",
        "固定合并规则与排名可查看，当前候选和被选规则可解释",
        "替换从左到右且不重叠，读者能看清合并前后序列",
        "已训练规则编码不能按输入临时最高频重新排序，也不能偷换成最长匹配",
        "若未来增加训练模式，明确训练与编码两阶段，并为同频采用公布且受测的规则",
        "中文、emoji、组合字符若不受当前教学词表支持，明确拒绝或说明，不伪造任意文本 roundtrip",
        "压缩比例只对应当前输入，不称为语言理解能力或模型质量指标"
      ],
      "secondary_placement": {
        "chapter": "books/llm/llms-from-scratch/chapters/03-tokenization-bpe.md",
        "insert_after_section": "3.5 编码时为什么看合并排名，不重新训练",
        "insert_before_section": "3.6 上游两种自写 BPE 的用途和实测边界",
        "note": "共用组件，但保留本章真实字节分词器、特殊符号和 tiktoken 边界，不重复造第二套教育词表。"
      },
      "related_chapters": [
        "books/llm/zero-to-hero/chapters/21_文本字节与token边界.md",
        "books/llm/zero-to-hero/chapters/23_预切分特殊token与GPT兼容.md",
        "books/llm/happy-llm/chapters/06_tokenizer_data_labels.md"
      ],
      "source_review_depth": "Full primary chapter text read; secondary chapter headings and opening scanned. No tokenizer experiments rerun."
    },
    {
      "concept": "Go GMP",
      "component": "GmpDemo",
      "primary_chapter": "books/go/articles/03_运行时与底层原理/什么是GMP.md",
      "primary_title": "什么是 GMP：goroutine 怎样得到执行机会",
      "insert_after_section": "一个 G 阻塞时，究竟占住了什么",
      "insert_before_section": "抢占为什么需要安全点",
      "body_evidence": "正文先区分 G/M/P，再说明 runnable 与 running、各类工作来源及两种阻塞；明确 findRunnable 并非永远固定本地/全局/窃取顺序，系统调用也不总立即新建线程。",
      "why_here": "读者已经有资源和队列词汇，能通过同一个教学情境比较停放 G、阻塞 M 与可移交 P，然后继续读抢占的实现条件。",
      "suggested_introduction": "用下面几段固定情境观察资源怎样重新配对。它是帮助理解的调度模型，省略了真实运行时的许多条件，不表示 Go 总按同一顺序调度，也不预测任务等待多久。",
      "success_checks": [
        "G 是任务，M 是 OS 线程，P 是执行普通 Go 代码所需运行时资源，P 不等于物理核",
        "普通 Go 代码执行时一个 M 持有一个 P 并执行一个 G，G 数量可大于 P",
        "等待 channel/timer/可轮询网络时停放 G，不为每个等待 G 固定占住一个 M",
        "阻塞系统调用可能占住 M；P 可以按运行时条件移交，不能写成每次进入 syscall 都立即新建线程",
        "唤醒后先 runnable，不等于当场 running",
        "本地队列、全局队列和工作窃取是简化情境，不做固定优先级、严格 FIFO 或每次精确偷一半的承诺",
        "抢占与安全点有关，不显示保证 10ms 内执行的服务承诺",
        "所有事件为教学脚本，不标成实际 Go trace 或运行时测量"
      ],
      "related_chapters": [
        "books/go/articles/02_并发编程/Goroutine.md",
        "books/go/articles/14_性能与调试/Go trace.md",
        "books/go/articles/15_部署与云原生/Go 在容器中.md"
      ],
      "source_review_depth": "Main explanation through diagnostics read; long code appendix not line-by-line reviewed; no runtime experiments rerun."
    }
  ]
}
