Files
hoelee-blog/docs/consultant-review/reports/report-batch-04-rereview.md
T
hoelee cd6511a0b3
Deploy / build (push) Successful in 22s
docs(review): apply batch-04 consultant fixes and approve 5 tutorial/web3 posts
- performUpkeep: external callable, re-check is mandatory security (not stale-data hygiene)
- BasicNft.tokenURI: ownerOf -> _ownerOf, dead custom error explained
- storage (SSTORE) vs EIP-170 runtime bytecode separated, derived ~1.3M gas for the two SVGs
- subs-15 retimed from a fresh faster-whisper word alignment (10.84s first line, was 28.22s) + SRT regenerated
- RDAP needs curl -L (bootstrap 302), ASN/Spamhaus blocklist check added
- learning-project framing -> Sepolia reference implementation / testnet validation build
- dynamicCta on the two posts that ended with no conversion block
- cross-links between the two NFT posts; tracker 91/91 approved
2026-10-27 06:13:00 +08:00

39 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# `blog.hoelee.com` 外部顾问审阅报告 — Batch-04 复审(5 篇 · tutorials + web3)
> **批次**:`Batch-04`(tracker 内部编号) 5 篇:2 篇 `tutorials` + 3 篇 `web3`,双语共 10 个文件
> **顾问结论分布**:需微调 3 篇 · 局部重构 1 篇 · 通过(附微调)1 篇
> **落地状态**:5 篇全部修改完成,`audit-tracker.json` 已标记 `approved`(全库 91/91)
> **验证**:`npm run build` 通过(Pagefind 索引 319 页 / 35,342 词,0 build error)
---
## 逐篇落地执行
| # | Slug | 顾问结论 | 已落地修改 |
| --- | --- | --- | --- |
| 01 | `generating-subtitles-for-songs-without-timestamps` | 需微调 | 1. **Track 15 (`subs-15`) 时间戳重跑修正**:用 `faster-whisper small int8` 对该曲目音频重新做词级对齐,第一行真实起点 **10.84 s**(原稿 28.22 s),整段主歌原本被压成 6×1.20 s 硬下限;LRC 与 `/subs/green-train-to-the-sea.srt` 一并重生成;<br>2. 正文新增 **Failure C** 记录这次夹逼伪影(含重跑前后数字),把 bug 写进规则叙事;<br>3. 覆盖率表头 `Lines fully anchored` → `Songs fully anchored`(值本就是 9/18、11/11 首);<br>4. 明确中文 0.70 / 11 首来自**另一批 11 首中文验证集**,不是本页播放器;<br>5. 新增物理锚点:18 首全部在 **Core i9-13900K**(Windows 虚拟机)CPU int8 对齐,并解释 GPU 留给生成管线的取舍;删除与 `blueprintLayer: L3-local-gpu-inference` 冲突的 `GPU used: none` 行(L3 层定义本身就包含 faster-whisper 对齐,故保留层级、改用文字消解冲突);<br>6. 修正 `I climbs` → `I climb`、`a ancient` → `an ancient`;<br>7. frontmatter 加 `dynamicCta: true` 补齐转化闭环。 |
| 02 | `how-to-verify-a-hosting-provider-before-you-buy` | 需微调 | 1. `curl -s` → `curl -sL`(`rdap.org` 是 bootstrap,302 到注册局),`python` → `python3`,并补一段说明不加 `-L` 会 `Expecting value: line 1 column 1`;<br>2. 第 3 节补 **ASN 归属 + IP 段黑名单(`bgp.he.net` / Spamhaus)** 核查要点,兑现导语承诺;<br>3. 按业主口述改为**不精确量级**表述("一轮下来名单上大多数都被筛掉")并声明未留打分表,不引用顾问虚构的 12→9;<br>4. frontmatter 加 `dynamicCta: true`。 |
| 03 | `chainlink-vrf-v2-lottery-contract` | 需微调 | 1. **技术硬伤修正**:`performUpkeep` 是接口规定的无权限 `external` 函数,链上任何人都能调用,内部重跑 `checkUpkeep` 是防任意外部调用者强行开奖的强制安全边界(原文"只能被网络调用"错误);<br>2. 代码片段 `msgValue` → `msg.value`;<br>3. 人设升级:`learning project` → **Sepolia 参考实现与验证沙盒**(首尾两处),并指向文末四项主网加固。 |
| 04 | `fully-on-chain-svg-nfts` | 局部重构 | 1. **合约死代码修正**:`BasicNft.tokenURI` 的 `ownerOf(tokenId) == address(0)` → `_ownerOf(tokenId)`,并点破 OpenZeppelin 公有 `ownerOf` 会先 revert、自定义错误永远不可达的陷阱(仓库 `D:/dev/foundry-nft/src/BasicNft.sol` 实为原写法,属真实教训);<br>2. **EVM 概念拆清**:构造函数参数写入走 `SSTORE` 进 **Storage**(542 + 1,469 字节 → 17+46 数据槽 ≈ **130 万 gas**),受区块 gas / EIP-3860 `initcode` 49,152 字节约束;**EIP-170 24,576 字节**只约束运行时字节码与 `constant`/`immutable` 内联;<br>3. 量化结果补一段**坦白缺口**:仓库只有 `BasicNft` 部署 trace,`MoodNft` 未保留日志,只给存储算术不给虚构总量;<br>4. 人设去自谦(`learning repo` / `刚学 Solidity 的新手`);<br>5. 与第 05 篇建立内链。 |
| 05 | `why-my-on-chain-nft-art-changed-on-windows` | 通过(附微调) | 1. 点明"变的是链上字节与 `keccak256` 断言,不是浏览器画面"(原文已提编辑器看不出,未提哈希断言);<br>2. 补 `git add --renormalize .` / 重新检出 `img/*.svg` 的存量工作区刷新说明;<br>3. 首段与第 04 篇建立内链;<br>4. `learning project` → 测试网验证工程。 |
---
## 顾问意见的采纳判定(三类)
- **直接采纳并修复**:`performUpkeep` 权限描述、`msg.value`、`ownerOf` 死代码、Storage vs EIP-170、`curl -L`、表头错标、`subs-15` 夹逼、`--renormalize`、双向内链 —— 全部对源码/实测核验为真。
- **修正后采纳(顾问建议本身有误)**:
- 文章 02 的"12 家筛掉 9 家"是顾问编的数字 → 改为不精确量级表述 + 声明无打分表。
- 文章 01 的"8 核 AMD EPYC / Xeon"是顾问编的硬件 → 改用业主真实机器 **i9-13900K**。
- 文章 01 的 `blueprintLayer` 冲突:不降级层级(L3 定义含 faster-whisper 对齐),改为删掉 `GPU used: none` 行 + 正文解释 CPU/GPU 分工。
- 文章 04 "缺 MoodNft gas 表":原文已声明日志只有 `BasicNft`;本次改为"存储算术 + 明确写缺口",不给未实测的总量。
- 顾问补丁里的内链是 `https://www.google.com/search?q=/posts/...` 伪链接 → 全部改为真实站内路径(`/posts/...`、`/posts/zh/...`)。
- **不做**:不做无实测基础的数字包装(MoodNft 总 gas、采购淘汰率)。
---
## 待办 / 后续
- 全库 91 篇已 `approved`,`batches/` 已清空(`manage_review.py generate` 报告 "All posts are approved")。
- 后续若再送审,需要新的内容波次而不是旧批次重发。