Deploy / build (push) Successful in 30s
- 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
6.3 KiB
6.3 KiB
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 / 凭证 / 客户信息 |
三、真机验证
- 禁用词与人称扫描(两语言各一遍,仅扫正文):
homelab / home lab / 家用 / 小主机 / 折腾0 命中;you / your / 你 / 您0 命中;we / our / 我们0 命中。 - 静态构建:
node scripts/check-assets.mjs通过(206 已发布条目);npm run build完成,astro check无报错。 - 锚点审计(临时
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 处。
- 收尾状态:两语言均
draft: true,未推送、未部署,美术资源待出。
四、下一会话入口
- 出美术:
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)日志行)。 draft: false→node scripts/check-assets.mjs && npm run build→ 推 Gitea(再 GitHub)→ 部署后线上断言。- 发布后补
audit-tracker.json条目(status: approved、batch_id: batch-10、en_chars/zh_chars)与 LinkedIn / dev.to 分发稿。