{
  "schema_version": 1,
  "scope": "逐章阅读后的概念级判断，尚未穷尽全书。candidate不是已实现；static/prose均记录具体理由，后续可复核。",
  "chapters": [
    {
      "path": "books/llm/llms-from-scratch/chapters/04-attention-causality.md",
      "review_depth": "full_chapter_read",
      "review_date": "2026-10-14",
      "concepts": [
        {
          "id": "weighted-average",
          "sections": [
            "4.1",
            "4.2"
          ],
          "status": "implemented_reuse",
          "component": "AttentionDemo",
          "reason": "可修改 Q/K/V，跟踪点积、归一化权重及加权输出；值维度可不同。"
        },
        {
          "id": "attention-scaling",
          "sections": [
            "4.3"
          ],
          "status": "implemented_reuse",
          "component": "AttentionDemo",
          "reason": "缩放开关可比较权重；点积方差推导继续保留正文，不把独立性假设伪装成训练事实。"
        },
        {
          "id": "causal-mask",
          "sections": [
            "4.4",
            "4.5"
          ],
          "status": "implemented_reuse",
          "component": "AttentionDemo",
          "reason": "五阶段展示掩码在 softmax 前，并允许扰动未来 K/V 验证早期结果不变。"
        },
        {
          "id": "dropout-expectation",
          "sections": [
            "4.6"
          ],
          "status": "implemented_reuse",
          "reason": "可调权重、概率、掩码和训练/评估模式；按每个掩码自己的概率加权验证期望，单次结果不强行归一化。",
          "component": "DropoutDemo"
        },
        {
          "id": "multihead-shapes",
          "sections": [
            "4.7",
            "4.8"
          ],
          "status": "implemented_reuse",
          "reason": "可调B/T/D/H并追踪唯一元素身份；展示reshape、transpose、还原和错误直接合并，不把形状相同当数值正确。",
          "component": "MultiHeadShapeDemo"
        },
        {
          "id": "weight-layout",
          "sections": [
            "4.2",
            "4.9"
          ],
          "status": "candidate",
          "reason": "展示 Linear 权重转置前后对应输出，区别布局匹配与随机初始化相等。"
        },
        {
          "id": "upstream-and-exercises",
          "sections": [
            "4.8",
            "4.9",
            "参考与覆盖"
          ],
          "status": "prose_or_existing_code",
          "reason": "上游文件对应和真实数值对照继续靠可复跑代码；练习中适合交互的部分已拆成上述概念，不另造装饰动画。"
        }
      ]
    },
    {
      "path": "books/llm/happy-llm/chapters/07_training_export_sampling.md",
      "review_depth": "full_chapter_read",
      "review_date": "2026-10-14",
      "concepts": [
        {
          "id": "weighted-gradient-accumulation",
          "sections": [
            "07.1"
          ],
          "status": "implemented_reuse",
          "reason": "固定参数点比较按有效token计数加权与微批均值等权的loss、梯度及一次更新；空批明确跳过。尾批提交时机仍是独立候选。",
          "component": "WeightedAccumulationDemo"
        },
        {
          "id": "training-step-order",
          "sections": [
            "07.1"
          ],
          "status": "candidate",
          "reason": "逐步对比梯度缩放、反向、裁剪、更新、清零的有效顺序，避免将参数名当成行为保证。"
        },
        {
          "id": "pad-eos-loss-mask",
          "sections": [
            "07.1",
            "07.8"
          ],
          "status": "candidate",
          "reason": "编辑 PAD/EOS 与 ignore_index，显示每个目标是否贡献损失；不能将已被置零的 EOS 损失再靠外部 mask 恢复。"
        },
        {
          "id": "warmup-cosine",
          "sections": [
            "07.2"
          ],
          "status": "candidate",
          "reason": "调 warmup、总步数、累积步，画当前学习率并区分 micro-batch 与 optimizer-step 时钟。"
        },
        {
          "id": "checkpoint-state",
          "sections": [
            "07.3"
          ],
          "status": "static_or_existing_code",
          "reason": "权重/优化器/随机状态的生命周期表与真实重载校验更直接；暂不模拟假检查点。"
        },
        {
          "id": "temperature-topk",
          "sections": [
            "07.4"
          ],
          "status": "implemented_reuse",
          "component": "SamplingDemo",
          "reason": "可调温度/k/u，明确阈值过滤的并列差异与温度0分支。"
        },
        {
          "id": "left-padding-index",
          "sections": [
            "07.4",
            "07.8"
          ],
          "status": "implemented_reuse",
          "reason": "编辑mask与三种规则，追踪最右有效位置、数量减一和末列；明确拒绝空行，构造分数只解释索引。",
          "component": "PaddingColumnDemo"
        },
        {
          "id": "batched-stopping",
          "sections": [
            "07.4",
            "07.5"
          ],
          "status": "candidate",
          "reason": "分步显示各行 EOS/finished/pad，避免把一行结束误当成整个batch结束。"
        },
        {
          "id": "beam-search",
          "sections": [
            "07.4"
          ],
          "status": "candidate",
          "reason": "小词表枚举路径并累计对数概率，区分候选结束、保留完成集合与当前束截断。"
        },
        {
          "id": "flags-vs-execution",
          "sections": [
            "07.2",
            "07.4",
            "07.8"
          ],
          "status": "prose_or_existing_code",
          "reason": "源代码分支缺陷需要真实测试与源码对应；当前不制作与真实实现脱节的开关模拟。"
        },
        {
          "id": "cpu-experiment-and-attribution",
          "sections": [
            "07.6",
            "07.7",
            "07.8"
          ],
          "status": "prose_or_existing_code",
          "reason": "保留真实运行日志、局限和许可；不把三个快照补成虚构的连续训练曲线。"
        },
        {
          "id": "accumulation-tail-flush",
          "sections": [
            "07.1"
          ],
          "status": "candidate",
          "reason": "现有加权实验只覆盖同一参数点的两个微批次，不覆盖epoch末不足K步的提交与清零时机。"
        }
      ]
    },
    {
      "path": "books/go/articles/02_并发编程/Channel.md",
      "review_depth": "main_concept_sections_read",
      "review_date": "2026-10-14",
      "concepts": [
        {
          "id": "buffer-handoff-backpressure",
          "sections": [
            "先判断它会不会等"
          ],
          "status": "implemented_reuse",
          "component": "ChannelDemo",
          "reason": "容量、G和发送值可调，手动观察无缓冲配对、满缓冲等待和空位交接。"
        },
        {
          "id": "close-and-ok",
          "sections": [
            "先判断它会不会等",
            "关闭的是数据流，不是 goroutine"
          ],
          "status": "implemented_reuse",
          "component": "ChannelDemo",
          "reason": "关闭后读完已有值、0与ok的区别、唤醒等待者、发送与重复关闭panic均可实际操作。"
        },
        {
          "id": "close-ownership",
          "sections": [
            "关闭的是数据流，不是 goroutine"
          ],
          "status": "static_or_existing_code",
          "reason": "谁能证明全部发送结束属于协议设计；现有责任表和WaitGroup代码比可随意close的按钮更完整，不能把模型可点击误认为关闭安全。"
        },
        {
          "id": "nil-select-readiness",
          "sections": [
            "nil channel 很危险，也很有用",
            "select 选的是当前能做的动作"
          ],
          "status": "implemented_reuse",
          "reason": "对照nil、空、有值、关闭与Done/default的就绪集合，手动选择合法接收；不声称书写顺序优先或有限等待公平。",
          "component": "SelectReadinessDemo"
        },
        {
          "id": "select-evaluation",
          "sections": [
            "select 选的是当前能做的动作"
          ],
          "status": "candidate",
          "reason": "逐步显示所有channel表达式与发送值表达式先求值，然后才选择通信分支。"
        },
        {
          "id": "timeout-budget",
          "sections": [
            "超时要先决定：等一条，还是等整段工作"
          ],
          "status": "candidate",
          "reason": "可控虚拟时钟对比单次等待重新计时与整段请求共用deadline，不能将虚拟时间当调度精度。"
        },
        {
          "id": "shared-reference-after-send",
          "sections": [
            "超时要先决定：等一条，还是等整段工作"
          ],
          "status": "candidate",
          "reason": "展示slice/map/指针传值后仍指向共享底层对象；需要明确的所有权协议，不把同步点当永久线程安全。"
        }
      ]
    },
    {
      "path": "books/go/articles/07_数据存储/数据库索引.md",
      "review_depth": "main_concept_sections_read",
      "review_date": "2026-10-14",
      "concepts": [
        {
          "id": "btree-navigation",
          "sections": [
            "一棵树为什么能少读很多页"
          ],
          "status": "candidate",
          "reason": "调有序键和页容量，跟踪分隔键导航与叶页范围遍历；不套固定三层或虚构实测IO。"
        },
        {
          "id": "clustered-vs-heap",
          "sections": [
            "同样叫“主键”，InnoDB 和 PostgreSQL 存的东西不同"
          ],
          "status": "candidate",
          "reason": "按两个明确存储布局追踪二级键到聚簇键或堆位置的路径，区分列覆盖和MVCC可见性。"
        },
        {
          "id": "composite-order-and-bounds",
          "sections": [
            "联合索引是按多个键依次排序"
          ],
          "status": "implemented_reuse",
          "component": "IndexSearchDemo",
          "reason": "编辑整数行与谓词，真实二分定位一个候选区间，再过滤并核对集合；保留重复键。"
        },
        {
          "id": "skip-scan",
          "sections": [
            "联合索引是按多个键依次排序",
            "一次真实实验：先看计划形状，暂时不比较毫秒"
          ],
          "status": "candidate",
          "reason": "改变前导列不同值数，对比逐组定位与完整索引扫描的机制；不能把比较次数当优化器成本或声称总会选skip scan。"
        },
        {
          "id": "covering-icp-visibility",
          "sections": [
            "覆盖索引和索引下推分别省哪一步"
          ],
          "status": "candidate",
          "reason": "选择返回列、索引可过滤谓词与可见性标记，分别数候选和必须读取的完整行；避免混淆Using index与Using index condition。"
        },
        {
          "id": "selectivity-estimation",
          "sections": [
            "少背“失效清单”，多问四个具体问题"
          ],
          "status": "candidate",
          "reason": "修改数据分布并比较真实选择率与过时统计估计；不用自创成本公式预测数据库计划。"
        },
        {
          "id": "real-plan-evidence",
          "sections": [
            "一次真实实验：先看计划形状，暂时不比较毫秒",
            "EXPLAIN 要从估计读到实际"
          ],
          "status": "prose_or_existing_code",
          "reason": "保留原书真实EXPLAIN与复现脚本，不能将模拟结果替换为生产计划；ANALYZE副作用说明应始终可见。"
        }
      ]
    },
    {
      "path": "books/seo/book/chapters/13_crawling_indexing.md",
      "review_depth": "full_chapter_read",
      "review_date": "2026-10-14",
      "concepts": [
        {
          "id": "signal-dependencies",
          "sections": [
            "13.1",
            "13.8"
          ],
          "status": "implemented_reuse",
          "reason": "逐步区分配置、抓取许可、实际响应和已读取信号；保留未知的真实索引状态。",
          "component": "IndexingSignalsDemo"
        },
        {
          "id": "page-purpose-security",
          "sections": [
            "13.1"
          ],
          "status": "prose_or_existing_code",
          "reason": "公开、保密和业务意图需要真实权限决策；教学模型不能代替身份验证。"
        },
        {
          "id": "robots-indexing-boundary",
          "sections": [
            "13.2"
          ],
          "status": "implemented_reuse",
          "reason": "阻止抓取时不读取页面状态及HTML信号，明确URL仍可能出现。",
          "component": "IndexingSignalsDemo"
        },
        {
          "id": "robots-rule-matching",
          "sections": [
            "13.2"
          ],
          "status": "candidate",
          "reason": "可编辑路径与规则，对照分组和最长匹配；当前实验只使用已经解析的有效许可。"
        },
        {
          "id": "robots-host-cache-errors",
          "sections": [
            "13.2"
          ],
          "status": "prose_or_existing_code",
          "reason": "多主机、缓存和robots文件本身错误需结合线上请求与官方行为，不在当前内容页模型中。"
        },
        {
          "id": "readable-noindex",
          "sections": [
            "13.3",
            "13.8",
            "练习一"
          ],
          "status": "implemented_reuse",
          "reason": "只改robots许可，观察同一noindex从未读取变为已读取；不承诺即时删除。",
          "component": "IndexingSignalsDemo"
        },
        {
          "id": "headers-and-html",
          "sections": [
            "13.3",
            "13.8"
          ],
          "status": "candidate",
          "reason": "响应头与HTML冲突、路径代理规则可通过两份响应证据定位；当前只模拟HTML指令。"
        },
        {
          "id": "snippet-controls",
          "sections": [
            "13.3"
          ],
          "status": "static_or_existing_code",
          "reason": "摘要限制和data-nosnippet的代码与范围对照已有明确静态示例。"
        },
        {
          "id": "removal-and-nofollow",
          "sections": [
            "13.3"
          ],
          "status": "prose_or_existing_code",
          "reason": "安全移除与nofollow有各自目标，不能由当前索引案例推断。"
        },
        {
          "id": "canonical-hint",
          "sections": [
            "13.4",
            "13.8"
          ],
          "status": "implemented_reuse",
          "reason": "自引用或指向重复原文只表达偏好；选定规范版本始终未知，并提示与noindex混用的边界。",
          "component": "IndexingSignalsDemo"
        },
        {
          "id": "duplicate-pagination-decisions",
          "sections": [
            "13.4",
            "练习三"
          ],
          "status": "prose_or_existing_code",
          "reason": "排序变体和分页内容是否满足不同任务需要真实内容判断；不能用地址相似度替代。"
        },
        {
          "id": "canonical-syntax",
          "sections": [
            "13.4"
          ],
          "status": "static_or_existing_code",
          "reason": "HTML和响应头写法保留可复制代码，不另做装饰动画。"
        },
        {
          "id": "sitemap-data-validation",
          "sections": [
            "13.5",
            "练习二"
          ],
          "status": "candidate",
          "reason": "URL集合、重复条目、容量拆分和lastmod校验适合可编辑数据检验；提交不等于收录。"
        },
        {
          "id": "sitemap-submission",
          "sections": [
            "13.5"
          ],
          "status": "prose_or_existing_code",
          "reason": "XML示例和提交诊断流程仍靠真实工具与证据，不模拟成功收录。"
        },
        {
          "id": "response-semantics",
          "sections": [
            "13.6"
          ],
          "status": "implemented_reuse",
          "reason": "200/404/503分支区分正常内容、删除和暂时失败，不读取错误正文中的指令。",
          "component": "IndexingSignalsDemo"
        },
        {
          "id": "redirect-chain",
          "sections": [
            "13.6"
          ],
          "status": "candidate",
          "reason": "可展示每跳状态及目标，帮助区分多跳、循环与最终响应。"
        },
        {
          "id": "soft404-business",
          "sections": [
            "13.6"
          ],
          "status": "prose_or_existing_code",
          "reason": "软404、HTTP方法和库存策略需实际内容及业务语义，玩具状态不足以判断。"
        },
        {
          "id": "faceted-url-combinations",
          "sections": [
            "13.7"
          ],
          "status": "candidate",
          "reason": "可调筛选维度计算URL组合及约束后的集合，不推导虚构抓取预算。"
        },
        {
          "id": "crawl-demand-capacity",
          "sections": [
            "13.7"
          ],
          "status": "prose_or_existing_code",
          "reason": "容量与需求要由访问日志、发布时间和资源证据区分，不生成预算或收录预测分数。"
        },
        {
          "id": "canonical-template-failure",
          "sections": [
            "13.8"
          ],
          "status": "candidate",
          "reason": "从多篇文章错误指向首页的样本定位模板回退；现有案例不模拟CMS模板。"
        },
        {
          "id": "timeline-evidence",
          "sections": [
            "13.9"
          ],
          "status": "candidate",
          "reason": "将发布、修复、最近抓取和索引记录放在时间线上，区分已修复与待处理。"
        },
        {
          "id": "operational-checks",
          "sections": [
            "13.9",
            "执行清单",
            "本章参考来源"
          ],
          "status": "prose_or_existing_code",
          "reason": "curl/grep和固定样本的回归流程继续使用真实命令；三层验收不能互相替代。"
        }
      ]
    },
    {
      "path": "books/seo/book/chapters/02_search_pipeline.md",
      "review_depth": "full_chapter_read",
      "review_date": "2026-10-14",
      "concepts": [
        {
          "id": "discovery-crawl-index-boundary",
          "sections": [
            "2.1",
            "2.3",
            "2.5",
            "2.10"
          ],
          "status": "implemented_reuse",
          "reason": "复用信号实验辨别已发现、抓取许可、已读取与索引未知，避免把流程图当执行承诺。",
          "component": "IndexingSignalsDemo"
        },
        {
          "id": "discovery-link-graph",
          "sections": [
            "2.2"
          ],
          "status": "candidate",
          "reason": "可编辑链接图寻找孤立页和可达路径；不能由可达性推出搜索引擎已抓取。"
        },
        {
          "id": "url-value-and-links",
          "sections": [
            "2.2"
          ],
          "status": "prose_or_existing_code",
          "reason": "真实href与sitemap代码可直接检查，URL独立价值仍是内容判断。"
        },
        {
          "id": "crawler-access-context",
          "sections": [
            "2.3"
          ],
          "status": "prose_or_existing_code",
          "reason": "网络、登录、身份与访问频率需要实际请求证据，当前模型只假设一次内容页请求。"
        },
        {
          "id": "html-render-resource-evidence",
          "sections": [
            "2.4"
          ],
          "status": "candidate",
          "reason": "并排比较初始HTML、渲染DOM和失败资源，说明何时缺少内容。"
        },
        {
          "id": "framework-access-decisions",
          "sections": [
            "2.4"
          ],
          "status": "prose_or_existing_code",
          "reason": "框架及权限选择属于项目条件，不自动公开受限内容。"
        },
        {
          "id": "canonical-content-judgment",
          "sections": [
            "2.5"
          ],
          "status": "prose_or_existing_code",
          "reason": "当前实验解释canonical提示，但真实重复内容与用户任务仍需审阅。"
        },
        {
          "id": "search-context-comparison",
          "sections": [
            "2.6"
          ],
          "status": "candidate",
          "reason": "对照查询、地区和时间等已知上下文，展示观察差异但不制造排序权重。"
        },
        {
          "id": "ranking-mechanisms",
          "sections": [
            "2.6"
          ],
          "status": "prose_or_existing_code",
          "reason": "相关性、排名与展示需要官方限定；不能编造统一评分公式。"
        },
        {
          "id": "historical-versus-live",
          "sections": [
            "2.7",
            "2.10"
          ],
          "status": "candidate",
          "reason": "历史抓取快照与实时测试对照，可解释为什么一次成功请求不等于索引恢复。"
        },
        {
          "id": "search-console-operation",
          "sections": [
            "2.7"
          ],
          "status": "prose_or_existing_code",
          "reason": "实际工具操作和账号访问保留正文，不伪造真实站点记录。"
        },
        {
          "id": "diagnostic-evidence-tree",
          "sections": [
            "2.8"
          ],
          "status": "candidate",
          "reason": "按证据分支定位访问、渲染、信号问题；不把分支结论写成排名保证。"
        },
        {
          "id": "business-priority",
          "sections": [
            "2.8",
            "2.9"
          ],
          "status": "prose_or_existing_code",
          "reason": "权限、业务影响和验收优先级取决于真实目标，避免统一假分数。"
        },
        {
          "id": "regional-value-checklist",
          "sections": [
            "2.10",
            "2.11",
            "本章参考来源"
          ],
          "status": "prose_or_existing_code",
          "reason": "地区页价值、执行清单及来源保留阅读与真实证据核对。"
        }
      ]
    },
    {
      "path": "books/go/articles/02_并发编程/context.md",
      "review_depth": "full_chapter_read",
      "review_date": "2026-10-14",
      "concepts": [
        {
          "id": "context-method-state",
          "sections": [
            "开篇"
          ],
          "status": "candidate",
          "reason": "显示Deadline/Done/Err/Value各自状态，尤其未取消和永不可取消的区别。"
        },
        {
          "id": "cancel-tree-deadline",
          "sections": [
            "先画出取消会走到哪里",
            "子级只能收紧有效 deadline"
          ],
          "status": "implemented_reuse",
          "reason": "可改父子预算、取消分支并推进虚拟时钟，对照有效deadline与Done/Err；精确虚拟事件不代表真实调度时刻。",
          "component": "ContextTreeDemo"
        },
        {
          "id": "cancel-not-join",
          "sections": [
            "每次派生都接住 cancel，即使预计很快会成功",
            "有 Done 并不代表代码就会停"
          ],
          "status": "candidate",
          "reason": "本批实验明确解释cancel不等于join，并另有Go标准库完成屏障测试；独立可交互的任务退出流程仍待设计。"
        },
        {
          "id": "first-cause-wins",
          "sections": [
            "Err 回答取消类别，Cause 保留具体原因"
          ],
          "status": "candidate",
          "reason": "选择子级或父级先取消，分别展示Err类别与首次Cause；超时cause与手动cancel不能混同。"
        },
        {
          "id": "context-value-shadowing",
          "sections": [
            "WithValue 只放请求范围内需要跨层流转的元数据"
          ],
          "status": "candidate",
          "reason": "逐层查找键并对比子级遮蔽与父级不变；不能伪装可变对象线程安全。"
        },
        {
          "id": "afterfunc-stop-race",
          "sections": [
            "两个扩展入口，用前先看清谁负责善后"
          ],
          "status": "candidate",
          "reason": "按明确事件次序比较stop成功和回调已开始；false不等于回调已完成。"
        },
        {
          "id": "withoutcancel-boundary",
          "sections": [
            "两个扩展入口，用前先看清谁负责善后"
          ],
          "status": "candidate",
          "reason": "展示值查找保留但Done/deadline/cause断开，并提示需要新的退出预算与任务负责人。"
        },
        {
          "id": "parameter-policy",
          "sections": [
            "开篇",
            "WithValue 只放请求范围内需要跨层流转的元数据"
          ],
          "status": "prose_or_existing_code",
          "reason": "ctx参数惯例、私有可比较键、元数据与必需依赖边界适合现有代码和接口审查。"
        },
        {
          "id": "defer-cleanup",
          "sections": [
            "每次派生都接住 cancel，即使预计很快会成功"
          ],
          "status": "candidate",
          "reason": "循环内defer何时真正执行可复用未来defer作用域实验，区分任务结束与资源清理。"
        },
        {
          "id": "external-effects",
          "sections": [
            "有 Done 并不代表代码就会停"
          ],
          "status": "prose_or_existing_code",
          "reason": "驱动、外部I/O和业务副作用取消需真实接口与事务证据，不能由本地教学状态机保证。"
        },
        {
          "id": "source-experiments",
          "sections": [
            "依据与本次验证",
            "完整代码与复现方法"
          ],
          "status": "prose_or_existing_code",
          "reason": "原书Go测试与race/vet记录保留为原作者条件，不把本轮Node模型测试当已重跑Go。"
        }
      ]
    },
    {
      "path": "books/go/articles/02_并发编程/Go 内存模型.md",
      "review_depth": "full_chapter_read",
      "review_date": "2026-10-14",
      "concepts": [
        {
          "id": "publication-happens-before",
          "sections": [
            "先看一条能证明的顺序"
          ],
          "status": "candidate",
          "reason": "写入、close、观察关闭、读取之间的同步路径可逐边展示；不把墙钟先后当证明。"
        },
        {
          "id": "data-race-drf-sc",
          "sections": [
            "数据竞争到底指什么"
          ],
          "status": "prose_or_existing_code",
          "reason": "保留普通访问、原子访问、DRF-SC定义与边界表；随机动画不能证明无竞争。"
        },
        {
          "id": "synchronization-tools",
          "sections": [
            "平时用的同步工具，分别连起哪条边"
          ],
          "status": "prose_or_existing_code",
          "reason": "现有关系表逐项列出承诺与限制，库存实验不代表覆盖所有工具。"
        },
        {
          "id": "buffered-confirmation",
          "sections": [
            "缓冲会改变确认的位置"
          ],
          "status": "candidate",
          "reason": "可对比C=0/1时发送完成能否推出接收；已有channel实验未完整覆盖happens-before证明。"
        },
        {
          "id": "atomic-reservation-interleaving",
          "sections": [
            "没有数据竞争，也能把一件商品卖两次",
            "修正：让检查和更新成为一个不可拆开的决定"
          ],
          "status": "implemented_reuse",
          "reason": "逐步推进两个请求，观察拆开的Load/check/Add超卖与CAS失败后重新读取检查；可对比串行和0–3库存。",
          "component": "AtomicReservationDemo"
        },
        {
          "id": "race-detector-boundary",
          "sections": [
            "go test -race：找到了就修，没找到还要继续推理"
          ],
          "status": "prose_or_existing_code",
          "reason": "真实检测报告与Go测试更合适；浏览器不充当race detector，也不把没检测到当完整证明。"
        },
        {
          "id": "reproduction-evidence",
          "sections": [
            "依据与本次验证",
            "完整代码与复现方法"
          ],
          "status": "prose_or_existing_code",
          "reason": "保留原章可运行代码与历史验证条件；本批最小契约测试不是原章所有程序的复跑。"
        }
      ]
    },
    {
      "path": "books/go/articles/02_并发编程/sync 包.md",
      "review_depth": "full_chapter_read",
      "review_date": "2026-10-14",
      "concepts": [
        {
          "id": "sync-selection",
          "sections": [
            "先按工作选择入口"
          ],
          "status": "prose_or_existing_code",
          "reason": "选型表明确保护约束、等待和取消不是同一件事，静态比较便于查阅。"
        },
        {
          "id": "mutex-invariant",
          "sections": [
            "Mutex：锁住的是约定，不是字段本身",
            "锁的几个边界"
          ],
          "status": "candidate",
          "reason": "可展示完整检查更新的锁范围与错误小临界区；本批只解释多字段约束，不宣称模拟锁。"
        },
        {
          "id": "rwmutex-performance",
          "sections": [
            "RWMutex：读多只是候选条件，不是性能结论"
          ],
          "status": "prose_or_existing_code",
          "reason": "升级降级限制和性能适用条件以正文保留，不用动画推导吞吐。"
        },
        {
          "id": "waitgroup-lifecycle",
          "sections": [
            "WaitGroup：把“都结束了”做成一个可靠边界"
          ],
          "status": "candidate",
          "reason": "登记任务与等待归零、错误的goroutine内Add时序可逐步观察。"
        },
        {
          "id": "once-panic",
          "sections": [
            "Once：执行一次，连失败语义也只认一次"
          ],
          "status": "candidate",
          "reason": "可对照Once和OnceValue在panic后的重复调用语义，不把一次执行当成功保证。"
        },
        {
          "id": "cond-recheck",
          "sections": [
            "Cond：等待的主角是条件，通知只是催你再看一眼"
          ],
          "status": "candidate",
          "reason": "可展示Wait解锁、通知、重新获取锁与循环重检条件的不同步骤。"
        },
        {
          "id": "pool-boundaries",
          "sections": [
            "Pool：借出临时对象，归还后停止使用"
          ],
          "status": "prose_or_existing_code",
          "reason": "对象生命周期与可随时移除的约定应保留；浏览器不能推断GC或分配收益。"
        },
        {
          "id": "map-boundaries",
          "sections": [
            "Map：一条原子操作能解决的事，别拆成两条"
          ],
          "status": "prose_or_existing_code",
          "reason": "原子方法、值内部对象和多键约束以真实API和代码解释，不造性能结果。"
        },
        {
          "id": "atomic-reservation-reuse",
          "sections": [
            "atomic：单个操作可靠，组合逻辑还要自己证明"
          ],
          "status": "implemented_reuse",
          "reason": "复用同一个库存交错模型，直接验证Load与Add不自动合成业务事务。",
          "component": "AtomicReservationDemo"
        },
        {
          "id": "sync-original-evidence",
          "sections": [
            "依据与本次验证",
            "完整代码与复现方法"
          ],
          "status": "prose_or_existing_code",
          "reason": "保留原章完整示例与历史验证条件，本批只执行独立的context/atomic契约测试。"
        }
      ]
    },
    {
      "path": "books/llm/happy-llm/chapters/06_tokenizer_data_labels.md",
      "review_depth": "relevant_sections_read_06_2_06_4_06_5",
      "review_date": "2026-10-14",
      "concepts": [
        {
          "id": "token-target-shift",
          "sections": [
            "06.4",
            "06.5"
          ],
          "status": "implemented_reuse",
          "reason": "对照原角色与X/Y偏移一位，解释提示末格预测回答首格。",
          "component": "TokenSupervisionDemo"
        },
        {
          "id": "pad-eos-position-mask",
          "sections": [
            "06.2",
            "06.4",
            "06.5"
          ],
          "status": "implemented_reuse",
          "reason": "同ID不同来源按位置区分真实EOS和PAD，计算有效目标分母；无监督拒绝平均。",
          "component": "TokenSupervisionDemo"
        },
        {
          "id": "tokenizer-bundle-normalization",
          "sections": [
            "06.1",
            "06.2"
          ],
          "status": "candidate",
          "reason": "词表、规范化、预切分与解码契约仍需另行审视，不把BPE编码演示当覆盖全部tokenizer。"
        },
        {
          "id": "data-conversion-protocol",
          "sections": [
            "06.3"
          ],
          "status": "prose_or_existing_code",
          "reason": "角色schema、字节偏移和转换幂等性需要实际数据与代码检查；本批未模拟完整数据管线。"
        }
      ]
    },
    {
      "path": "books/llm/llms-from-scratch/chapters/25_instruction_tuning.md",
      "review_depth": "full_chapter_read",
      "review_date": "2026-10-14",
      "concepts": [
        {
          "id": "sft-target-alignment",
          "sections": [
            "25.1",
            "25.2",
            "25.3"
          ],
          "status": "implemented_reuse",
          "reason": "复用同一监督实验，明确回答开始下标P对应移位标签P−1。",
          "component": "TokenSupervisionDemo"
        },
        {
          "id": "empty-supervision",
          "sections": [
            "25.4"
          ],
          "status": "implemented_reuse",
          "reason": "截断至只剩提示时有效集合为空，显式显示不能平均而非虚构零损失。",
          "component": "TokenSupervisionDemo"
        },
        {
          "id": "attention-loss-mask-distinction",
          "sections": [
            "25.3"
          ],
          "status": "prose_or_existing_code",
          "reason": "本批就近解释两种mask职责；不另画attention矩阵重复现有AttentionDemo。"
        },
        {
          "id": "token-weighted-batches",
          "sections": [
            "25.4"
          ],
          "status": "candidate",
          "reason": "不同有效token数下均值的均值与整体均值不同；本批只计算单个有效目标集合。"
        },
        {
          "id": "sft-training-generation-contract",
          "sections": [
            "25.5"
          ],
          "status": "prose_or_existing_code",
          "reason": "模板、数据切分、生成提取和真实评估依赖一致协议，不把合成损失当指令能力。"
        }
      ]
    },
    {
      "path": "books/llm/llms-from-scratch/chapters/14-sampling-generation.md",
      "review_depth": "relevant_sections_read_14_5_14_6_14_7",
      "review_date": "2026-10-14",
      "concepts": [
        {
          "id": "batch-row-stopping",
          "sections": [
            "14.5"
          ],
          "status": "implemented_reuse",
          "reason": "预先给定候选token，逐行维护finished并补PAD，区分EOS与长度终止；独立教学扩展不改上游单行脚本。",
          "component": "BatchStoppingDemo"
        },
        {
          "id": "cache-context-window",
          "sections": [
            "14.6"
          ],
          "status": "candidate",
          "reason": "输入裁剪与cache位置必须同步，现有KV实验尚不覆盖滑窗裁剪或重算。"
        },
        {
          "id": "generation-reproducibility",
          "sections": [
            "14.7"
          ],
          "status": "prose_or_existing_code",
          "reason": "依赖版本、随机调用顺序与设备差异应记录，不以浏览器固定序列冒充真实模型重现。"
        }
      ]
    },
    {
      "path": "books/llm/nanogpt/chapters/08_training.md",
      "review_depth": "full_chapter_read",
      "review_date": "2026-10-14",
      "concepts": [
        {
          "id": "weighted-gradient-accumulation",
          "sections": [
            "8.1"
          ],
          "status": "implemented_reuse",
          "component": "WeightedAccumulationDemo",
          "reason": "演示不等有效数时的梯度权重及等长成立条件；dropout与同批统计边界明确。"
        },
        {
          "id": "adamw-state-and-decay",
          "sections": [
            "8.2"
          ],
          "status": "candidate",
          "reason": "用短梯度序列追踪一二阶矩、偏差校正与解耦衰减，区别L2项；不伪造训练收敛。"
        },
        {
          "id": "precision-range",
          "sections": [
            "8.3"
          ],
          "status": "candidate",
          "reason": "有限数值例比较FP16/BF16范围与缩放，明确不是GPU吞吐或精度实测。"
        },
        {
          "id": "unscale-clip-order",
          "sections": [
            "8.4"
          ],
          "status": "candidate",
          "reason": "可调二维梯度、阈值、loss scale，比较先还原与先裁剪的真实向量。"
        },
        {
          "id": "last-microbatch-log",
          "sections": [
            "8.5"
          ],
          "status": "candidate",
          "reason": "对比最后批日志值与所有微批平均；当前实验不模拟日志时机。"
        },
        {
          "id": "timing-measurement",
          "sections": [
            "8.5"
          ],
          "status": "static_or_existing_code",
          "reason": "同步、预热与实际性能口径需要真实设备测量，保留代码与方法，不显示虚构毫秒。"
        }
      ]
    }
  ]
}
