Files
hoelee-blog/docs/consultant-review/reports/report-batch-10.md
T
hoelee b7a53af943
Deploy / build (push) Successful in 30s
post: QR pre-download decode gate (EN+ZH) + Argon batch-10 review
- 69-module symbol at 20 mm = 0.29 mm/module, refused below a 0.40 mm floor
- 30% centre image on a 29-module symbol knocks out 19% of area, capped at 15%
- maroon #800000 passes WCAG at 10.9:1 but is 1.9:1 on the red channel, so warn only
- 300 dpi export quoted at 50.1 x 56.9 mm with the caption band and pHYs block
- gate reads every code back with jsQR at two densities before the download unlocks
- batch-10 external review: 94/96/88/100, 10 items applied, 2 rejected with reasons
2026-11-10 09:31:43 +08:00

50 lines
6.3 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.
# Batch-10 外部顾问(Argon)审阅报告与落地整改记录(2026-11-10)
## 一、审阅结论概述
- **审阅对象**:`qr-gate-that-decodes-before-the-download`(二维码生成器的解码闸门,EN + ZH 双生稿)
- **投递方式**:`argon-ask`(4 Argon / High 思考),附件 = `batch-10-consultant-review-pack.md`(31.3 KB,单附件),prompt 2.6 KB,含 `MARKER-BLOGQR-4712`
- **耗时**:246 秒,回稿 13,755 字(原始落盘 24,566 字节)
- **顾问裁决**:**微调后可直接发布**(`draft: true` 可切 `false`),不需要推翻重写
- **四维评分**:事实与证据严密性 94 / 工程师人设纯洁性 96 / 商业与招聘转化 88 / OPSEC 与脱敏合规 100
> ⚠ 标记核对:回复正文**未回写** `MARKER-BLOGQR-4712`。按内容判据接受——它引用了本稿的 slug、独有的中文原句(「占边长 43.8%」段)与资料包内的实测表数字,不可能是别的任务的旧答案。后续 ask 应在 prompt 里明确「第一行原样输出 MARKER」。
---
## 二、逐条落地台账
| 编号 | 顾问意见 | 处置 | 实测依据 / 落地方式 |
|---|---|---|---|
| **REV-1** | `19.2%` 面积在代码里不是定值:`planCentre()` 用 `round(codePx × ratio)`,小 `modulePx` 下 8.7 模块取整成 9,再加留白得 `(13/29)² = 20.1%` | **接受(改口径)** | 按真实导出算:`modulePx=16`、`codePx=464`、`sidePx=139`、`knockout=203` → 边长 43.8%、面积 **19.1%**。正文与 summary 的 `19.2%` 全部改为 `19%`,避免读者用退化参数复算 |
| **REV-2** | `592 px` / `50.1 mm` 是 Version-3(29 模块)专属,正文当成通值 | **接受** | 正文改为「29 模块的符号——含两侧各四个模块静区共 37 模块」,50.1 mm 与 592 px 挂在该符号上;`21.9 mm` 的向下取整反例同步保留(`floor(295/37)=7 px → 259 px → 21.928 mm`) |
| **REV-3** | `1.9:1` 的红通道比口径未点明:按 sRGB 线性化会算出 `3.95:1`,刚好跨过 `<3` 的告警阈值 | **接受** | 正文改为「只看原始 8 位红色通道(这也是闸门的算法口径)」,与 `warmInk()` 里 `max(r)/255+0.05 ÷ min(r)/255+0.05` 一致;`10.9:1` 经 Argon 独立复算(L=0.0459)通过 |
| **REV-4** | 「缝隙落在解码器块大小两侧」的归因在 jsQR 源码层不够精确 | **接受** | 改为「jsQR 先用 8×8 自适应二值化块求局部阈值,再在模块几何中心单点采样,某些密度下采样网格与圆点白缝产生混叠」;双密度策略与「两者都失败才拒」结论不变 |
| **REV-5** | 第 4、5 条盲区本质同一件事(纸面尺寸契约),并列会散 | **接受(结构合并)** | 合并为「四、毫米级尺寸契约:整数像素、说明文字条带与 `pHYs` 块」;H2 改为 `Four Blind Spots…`,`jumpLinks.architecture` 与两侧 `<a id>` 同步改为 `#four-blind-spots-of-a-clean-bitmap`,dist 锚点审计 2/2 通过 |
| **REV-6** | 中文版把几何的 `mistranslated`(平移错位)误译为「翻译错位」 | **接受(真 bug)** | 改为「平移错位(mistranslate)」;同批采纳另两处中文语序修订(重采样误判句、19% 面积句) |
| **REV-7** | 正文缺指向实站生成器的显式内链,小商家读到规则却无处落地 | **接受** | 在盲区小节后加一段内链 + 4 行失效对照表;`https://tools.hoelee.com/qr-code-generator/` 实测 `200`,符合「外链必须活」闸门;两侧 dist 均渲染出 `<table>` |
| **REV-8** | 现标题缺 `print / failure` 词根,抓不住搜索意图 | **接受(备选 1 微调)** | 标题改为 `Why Printed QR Codes Fail to Scan: Building a Pre-Download Verification Gate`(`Engineering` 降为 `Building`,少一点宣言味);slug 保持 `qr-gate-that-decodes-before-the-download` 不动,符合 slug 与标题解耦规范 |
| **REV-9** | 开篇「免费小工具站长 / 帮我印」口吻偏弱 | **部分接受** | 拒绝其整段替换(`highest-liability asset` / `production requirement is binary` 把第一人称生产记录换成了营销抽象,违反本仓「以做过的事与量到的数开篇」铁律);只做轻改:`I run a set of free tools` → `The utility suite I maintain`。中文「帮我印」保留——那是引用店家原话,不是作者口吻 |
| **REV-10** | 建议插入读者锚点句「written for business owners … and for engineers」 | **拒绝** | 这正是业主此前明确否决的句式(「宣告这篇写给某类读者」)。不加 |
| **REV-11** | `56.9 mm` 无法独立验算,标为「无法确认」 | **接受(补推算)** | 已在源码核出:`bandTarget = max(4, codeMm × 0.13) = 6.52 mm → bandModules = 5 → 6.77 mm`,`50.12 + 6.77 = 56.9 mm`。正文现在写出这条推导,把它从断言变成可复算 |
| **REV-12** | OPSEC:80 KB 预算、238 + 954 测试、探针项数可否公开 | **无需改** | 均为前端构建期质量指标与开源依赖体积,无 IP / 凭证 / 客户信息 |
---
## 三、真机验证
1. **禁用词与人称扫描**(两语言各一遍,仅扫正文):`homelab / home lab / 家用 / 小主机 / 折腾` 0 命中;`you / your / 你 / 您` 0 命中;`we / our / 我们` 0 命中。
2. **静态构建**:`node scripts/check-assets.mjs` 通过(206 已发布条目);`npm run build` 完成,`astro check` 无报错。
3. **锚点审计**(临时 `draft: false` → `npx astro build` → 核 dist → 改回 `true`):
- `#why-a-qr-code-fails-on-paper` / `#four-blind-spots-of-a-clean-bitmap` / `#the-result` 在 EN、ZH 两个 dist 页面 **全部命中**;
- `exec-summary`、`dynamic-cta` 均在;`<details>` 各 2 个;内链 `tools.hoelee.com/qr-code-generator` 各 1 处。
4. **收尾状态**:两语言均 `draft: true`,未推送、未部署,美术资源待出。
---
## 四、下一会话入口
1. 出美术:`art-meta.json` 补该 slug 的 `evidence` 与 `ogTitle_en/zh` → `post_art.py` → `plan_banner_crops.py` → 拷 `banner-plan.json` 进仓库 → `render_from_art.mjs --only qr-gate-that-decodes-before-the-download`(必须看到 `(plan, plan)` 日志行)。
2. `draft: false` → `node scripts/check-assets.mjs && npm run build` → 推 Gitea(再 GitHub)→ 部署后线上断言。
3. 发布后补 `audit-tracker.json` 条目(`status: approved`、`batch_id: batch-10`、`en_chars` / `zh_chars`)与 LinkedIn / dev.to 分发稿。