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

6.3 KiB
Raw Blame History

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 分发稿。