Files
contentm_agent/执行会话/目标-根据1a需求文档生成MCN短视频整合营销-d85687/ui/3d-审查报告.md
T
WorkBuddy df56c2c137 初始化提交:contentm_agent 工作区全量快照
内容分四块:
1、产品规划产出 —— MCN 短视频整合营销工作台的①段五份(1a 需求/1b 竞品/1c 画像/1d 策略/1e 场景)、②段两份(2a 功能/2b 布局)、③段界面(DESIGN.md 契约与令牌表 + mcn-workbench.html 原型 + 实测/会诊/审查三份 + 23 张闸门截图)。
2、开源竞品调研 —— 5 个内容工作台项目的取证原始件与 1b 系列分析文档。
3、参考资料 —— 竞品视频抽帧 1145 张 + 2 个源视频 + 功能点截图。
4、机制侧 —— 协作脚本与状态台账、工作区记忆日志、抽帧/OCR 脚本。

.gitignore 只排运行时日志、脚本备份副本与一次性探针输出,其余按原样入库。
2026-10-08 08:13:02 +08:00

24 KiB
Raw Blame History

3d · 审查报告(③段界面交互收口)

落点:执行会话/目标-根据1a需求文档生成MCN短视频整合营销-d85687/ui/3d-审查报告.md 模板:SKILL.md §3d + references/execution-runbook.md §5.4/§5.5、§七(固定七节) 交付物:ui/mcn-workbench.html(原型)+ ui/DESIGN.md(规范)+ ui/3b-实测记录.md(实测)+ ui/3c-GPT会诊.md(会诊)


一、范围

项 内容
段与子步 ③段界面交互 · 3d(D3 收口 + D4 动效 + D5 终检 + Gate-2 / Gate-3)
被审对象 ui/mcn-workbench.html(单文件自包含原型,八页 + 七浮层)+ ui/DESIGN.md(设计契约与令牌)
覆盖页 P1 矩阵总览 / P2 选题雷达 / P3 资产库 / P4 创作台 / P5 发布中心 / P6 账号画像 / P7 复盘台 / P8 记录与对账(八页全审,无抽样)
覆盖状态 正常 / 加载 / 空 / 出错 / 禁用 / 无权限 —— 逐页 × 逐态 = 48 组合
不在范围 ④段(原型说明区与演示引导);②段的板块清单与信息档位(已冻结,本段不动);暗色主题(见 DESIGN.md §五 第 2 条)
证据留档 _gate_shots/ 23 张视口帧(全部经 PNG 像素尺寸校验);ui/_tools/ 三个可复跑脚本

本轮是否跑了脚本:跑了。三条,全部可复跑,命令见 3b-实测记录.md §一:

自检(#/selftest 路由,原型自带)      → PASS 81 / FAIL 0   @1440×900
变异对照(_tools/mutate_test.py)      → 13 / 13 通过
骨架冻结闸门(_tools/check_skeleton.py)→ PASS  八页 37 个板块与②段逐页逐位一致

结构核对表的每一个数,都来自上面这三条脚本的输出或 DOM 取值,⛔ 无一处是目测截图。


二、挡位

标准档(本段未升未降)。理由:这是新产品的第一版原型,不是发版前的精修;SKILL.md §供给·方法主线 给的默认主线就是 oil-ui-pro,挡位按 runbook 默认的标准执行 —— 三条门(Gate-1 / 2 / 3)全过,但不上「多方向比选」与「严格档」的额外轮次。


三、阻断项表

口径:阻断 = 不清零就不能交。本轮共 15 条,14 条已清零,1 条未清零并留档。

# 阻断项 观察(现象) 根因 处置 现状
B-01 整份设计系统在屏幕上失效 原型打开后令牌全不生效 样式表顶部注释里 --t-*/--raw-* 的 */ 提前闭掉注释,吞掉整个 :root 令牌块 改写注释文字 ✅ 清零
B-02 全表行分隔线一直没画出来 列表行之间没有任何分隔线 .list-row:first-child{border-top:0} —— 每行都包在 <li> 里,于是每行都是自己 <li> 的 first-child 改为 li:first-child > .list-row ✅ 清零(+变异 M10)
B-03 判据除数为 0 时恒 PASS 上面那条真缺陷没有任何门禁报它 gap>=2*bw 在 bw=0 时恒成立、比值算成 Infinity 除数为 0 一律判红 ✅ 清零
B-04 浮层不浮 浮层渲染在文档流末尾,得滚到页尾才看得见 #layer-root 与 .layer 都没有定位样式 遮罩 fixed inset:0 + 层本体 fixed 居中 ✅ 清零
B-05 行高随文字长短乱跳 同一张表量出 66 / 82 / 100px 三种行高 状态标放在操作列把 auto 列撑宽,只有那一行折行 状态标移到名称旁 + 行内每段不许换行 + 新增「行高齐」判据 ✅ 清零(+变异 M7)
B-06 自检在窄视口给出假 PASS 报「一屏装得下 10 行」,实际 5 行 驱动几百次点击后浏览器自动滚动,rect.top 变负,容量公式虚高 加「量尺寸前页面在滚动零点」守卫 ✅ 清零(+变异 M9)
B-07 手机导航「既不是一条、也没滚动」 导航条占 161px 高,4 个分组竖着堆 导航分组挂在 <nav id="nav"> 里,而 #nav 一条样式都没有 ⇒ 仍是块级容器 补 #nav{display:flex;flex-flow:row nowrap} + 整条链 flex:0 0 auto ✅ 清零(161px → 53px)
B-08 顶栏标签折行 「演示 · 账号」折成两行,顶栏被顶到 70px .topbar-label 没有 white-space:nowrap 补 nowrap ✅ 清零(→ 69px)
B-09 两个二次确认浮层其实有两个可见关闭控件,判据却报「出口 = 1」 核销层与发布层各有一颗「取消」 判据只数 .layer-close 这个类名,把可见的「取消」从眼皮底下藏掉了;核销层的「取消」还复用了 X-close 判据改成「中性出口只认 X-close」+「决策型关闭单列报数」;核销取消拆出 CHECKOUT-CANCEL ✅ 清零(+变异 M13)
B-10 截图尺寸全部比标称大 16×95 「1440×900」的帧实际是 1456×995,同一份报告里 dump-dom 又按 640 说话 Chrome 两条通道对 --window-size 的解释不同(截图=视口,dump-dom=视口+16/95),而脚本对两者用了同一个偏移量 按模式分开算 + 每次截图后从 PNG 的 IHDR 读真实像素比对目标视口 ✅ 清零(23 张帧全部 ✓)
B-11 制作黑话写在界面上 状态面板上贴着「这里是 X 的 empty 态。」 给做原型的人看的说明被写进了界面,而 STATE_COPY 已经铺好用户向文案 删掉那句话;按钮改「回到正常内容」 ✅ 清零
B-12 主列表可读性 「今日该发:待发:3 分钟快手菜」冒号连用,独立评审读成错字 示意数据 today 字段的值里自带冒号,被拼进「今日该发:…」 5 行数据改为空格分隔 ✅ 清零
B-13 窄屏看不出当前在哪一页 横滚标签栏里当前项滚在视野之外 没有把当前项带进视野的逻辑 只调 .sidebar 自己的 scrollLeft(⛔ 不碰 window,否则误触 B-06 的守卫) ✅ 清零
B-14 --full(整页长图)静默失效 带该参数产出的还是视口帧 无头 CLI 这条通道只能截视口 删掉该参数与 _full/ 目录,不留撒谎的开关 ✅ 清零
B-15 ≤767px 宽时一屏装不满 6 行 641×900 与 640×900 实测 5 行;500×844 实测 4 行 / 5 行 页面外壳吃掉首屏:≤767px 顶栏折成两行(641px 实测 109px)、≤640px 导航变标签栏。行本身没变肥 —— 行高 67px、行高差 ≤2px、块内分隔 1px 在任何视口都 PASS 未在本段修 ❌ 未清零,留档待裁定

B-15 为什么没在本段修,以及留给用户的两条路

判据原文(layouts-tooling.md §1)是「一屏可见行数 ≥ 6(900px 高时)」,不带宽度条件。实测出来的边界是 768px 宽:≥768px 时顶栏单行、导航竖排,容量 6–10 行;≤767px 时页面外壳折行,容量掉到 4–5 行。三条路,两件事必须挑一件:

选择 代价
A. 把支持宽度下限写成 ≥768px,手机形态只承诺「可用」(布局折行、零横向溢出、全路径可点通),不承诺 6 行密度 要在契约里明文加一条本段自定的宽度条件;依据是 1a §七 已明确第一版不做移动端 App
B. 压掉每行的次级信息,把行高从 67px 压到 40px 上下,让窄屏也装得下 6 行 那 3 条次级信息是②段《界面布局》定的档位,③段不许改 ⇒ 得回②段改档
C. 动页面外壳(顶栏控件精简、导航折叠) 顶栏那几个控件都登记在交互清单里(G-06/G-08/G-10),删或搬家等于改交互清单

⛔ 本段没有选任何一条就宣布通过:判据一个字没改,needRows=6 写死,三个窄视口的 FAIL 原样留在自检输出里。


四、建议项表

口径:每条要么修掉,要么显式写「已知不修 + 原因」。⛔ 不接受「基本没问题」。

# 建议项 结论
S-01 密度只有同类工具的 40–50%(评审:Linear 行高 32px,本原型 67px) 已知不修:判据是「≥6 行 @900px 高」,1440/1280 实测 10 行、1024/768 实测 6 行,达标。再压只有砍次级信息一条路 ⇒ 属②段档位,见 B-15 选择 B
S-02 处处 24px 圆角大卡,列表本该是「表格行 + 发丝线」 部分已修:列表行本来就是无框行 + border-top 发丝线(B-02 修的就是它真的画出来);剩的是承载列表那层面板仍是圆角卡,改为无框会让 37 个板块散在底纸上失去分层。已知不修
S-03 「左标题右说明」分栏里,右侧小字像给评审看的注释 已修:逐条过了一遍板块头右侧的小字 —— 读出「这是在解释口径」的那几条已改写或删除(B-11、P4 输入提示、空引用文案)。剩下的多是②段要求的计数与口径(「5 项 · 按截止时间排」),保留
S-04 P2 KPI 标签下有下划线,像链接却不可点 未能复核:代码里 .stat / .stat-label 都没有 border-bottom / text-decoration;4 个 KPI 里 2 个是真按钮(P2-01/P2-02)。⛔ 不做无依据的改动,如实记为未复核
S-05 每个分组标题下都压一条通栏线(重复线框) 不采纳:layouts-tooling.md §1 原文「边框只上不围 —— 行间用 border-top」;visual-review.md 自己也写「承担风格和结构的线不算问题」。删掉它板块头与内容就分不开
S-06 同一状态两种画法(当前导航项,P4 看着是深色实心) 不采纳(评审判读):侧栏当前项八页同一套样式(--surface-soft + 左 3px --accent)。自检逐页核过:8 项导航里 is-active 只有一个。评审把侧栏当前项与步骤条里的当前步看混了 —— 后者按设计就该更重
S-07 侧栏 账号画像(跑图) 与 账号画像 重复 不采纳(评审判读):那三个字是「跨组」不是「跑图」;字样直接来自②段 2b §一 的一级导航表「(跨组)账号画像」,③段不许改②段定的导航名。由此暴露的「括号夹在词中间不好读」记为已知取舍
S-08 导航计数只给了一半(创作台 / 账号画像 无数字) 已采纳·本段不改:计数=「这页有几件事等你做」,没数字的两页当前确实没有待办。但「一半有半数无」读起来像掉数据,这条提得对 —— 改动落点在交互清单 G-05 的反馈列,本轮不动
S-09 窄屏正文被省略号硬截断 已知不修:这是上一轮为「行高齐」付的代价 —— 行内每段不许换行 + 省略号,是行高能恒为 67px 的唯一办法(放开换行行高跳到 66/82/100px,变异 M7 盯着)。完整原文挂在行上的 title 里
S-10 每行右侧指标左边缘没对齐成列 已知不修:右栏是「标签 + 值」两行、整块右对齐到块右内衬;改成逐字对齐会把长短差异大的值拉成锯齿
S-11 浮层右上「×」套着淡紫圆圈,像常驻焦点环 不采纳:那是 :focus-visible 焦点环(--accent),出现是因为浮层打开后焦点按设计落在层内第一个可聚焦件上,而它正好是 ×。⛔ 不能改成 hover 才出现 —— 改掉就把键盘用户的定位点弄丢了。已记为「截图里带焦点环」的已知现象
S-12 顶栏演示控件、假设 2 项、页面编号 P1…P8 可以删 不采纳:都是原型自带件 —— 演示控件(G-07/G-09)用来把页面掰到六态给评审看,编号用来定位页面。删了评审就看不到六态
S-13 「空面板」(P2 评论区洞察、P4 资产引用区、P5 检查结果)稀释首屏 已知不修:三块都是②段冻结的板块,⛔ 不许折叠或删除。看着空是因为示意数据只填了主路径;每块的空态文案都在(STATE_COPY 逐页不同)
S-14 动作甩到最右边、离对象半屏远 不采纳:操作列右对齐成列是刻意的(layouts-tooling.md §5.5 要求同类动作在同一轴上对齐);两栏也不是等宽(minmax(0,400px) minmax(0,1fr))
S-15 P1 两栏平权、没有主次 不采纳:并排是密度判据逼出来的,有反事实实测 —— 落回单列时账号矩阵首行顶 530px、一屏只装得下 5 行(<6)。见 B-15 选择 A
S-16 记不住 —— 建议把 P1「账号矩阵列表」做成真正的矩阵 + 异常分布 已知不修·往上提:块名与位置受②段冻结,「矩阵视图」是信息呈现变更,超出③段权限。本轮最值得往上提的一条,交主会话转用户
S-17 评审看不到的:点击/悬停/焦点行为、动效、检索结果、遮罩键盘可达性、另外四页 已补:这些正是 3b 自检覆盖的 —— 71 个 ID 逐个真驱动(0 死控件)、六态 × 八页 48 组合、7 浮层 × 6 项。P3/P6/P7/P8 截图已补拍,本轮交接已改为八页全给

五、状态覆盖核对表(六项逐页)

判据源:SKILL.md 铁律 2 的六态清单。⚠️ 逐项数值判据出自供给可选档的 craft/state-coverage.md,本轮未动用可选档 ⇒ 该项无供给来源(DESIGN.md §五 第 1 条),故只核「有没有、长什么样」,不编阈值。

机检结论:六态 × 八页 = 48 个组合,全部渲染出内容(自检第 10 行)。

页 loading empty error success disabled 无权限
P1 矩阵总览 ✅ 骨架行 +「正在取矩阵数据」 ✅「还没接入账号」+ 去处按钮(→P6) ✅ 显时间戳 + 重试 ✅ 默认态 ✅ 无待办时待办区禁用并说明 ✅ 非管理员看利润列的遮罩说明
P2 选题雷达 ✅「正在拉对标更新」 ✅「监控名单是空的」+ 录对标号 ✅ 拉取失败(退路=手工录入) ✅ 默认态 ✅ 未选账号时「转入创作」禁用 — 不适用(本页对所有角色开放)
P3 资产库 ✅「条目加载中」 ✅「这个分区还没有条目」+ 去处(→P2) ✅ 读取失败(重试) ✅ 默认态 ✅ 无出处的条目「入库」禁用(门禁) — 不适用
P4 创作台 ✅「正在跑这一步」(带已跑秒数) ✅「这一步还没有产出」 ✅ 本步失败(保留已产出 + 重试该步) ✅ 默认态 ✅ 文案与封面缺一,进检查态禁用 — 不适用
P5 发布中心 ✅「检查中」 ✅「还没有可发布的版本」+ 回 P4 ✅ 检查自身失败 ⇒ 按不过处理(fail-closed) ✅ 无硬拦、可发 ✅ 有硬拦项时「确认发布」禁用 ✅ 未授权账号的版本标「无发布权限」并禁用该版
P6 账号画像 ✅「画像加载中」 ✅「还没有画像」+ 建画像 ✅ 保存失败(保留编辑内容) ✅ 保存成功提示 ✅ 只读角色时字段禁用 ✅ 非本人负责账号:可看不可改
P7 复盘台 ✅「正在读这条的数据」 ✅「还没有能复盘的内容」 ✅ 数据读不到 ⇒ 转手工录入 ✅ 回写成功提示 ✅ 未写归因时「回写」禁用 — 不适用
P8 记录与对账 ✅「记录加载中」 ✅「还没有发布记录」 ✅ 读取失败(重试) ✅ 核销成功 ✅ 未选中记录时「核销」禁用 ✅ 利润列对非管理员隐藏(列级遮罩)

口径:disabled 与 无权限 是两件事 —— 前者「当前条件不满足」(自己能解开),后者「角色不允许」(自己解不开)。界面文案分开写,⛔ 不拿「不可用」一句话糊过去。 留档截图:p1-empty-1440.png、p4-noperm-1440.png、p5-error-1440.png;其余 45 组由自检逐组渲染核过。


六、结构核对表(契约值 / 实测值 并排,数字抄自脚本输出)

6.1 契约里写了数字的项

项 契约值 实测值 取法
强调色填充面积占比 ≤5% 0.52%(八页最高:创作台,1 个填充块) DOM:逐个元素比 backgroundColor ≡ --accent,与视口求交累加 ÷ 视口面积
--warn 对 --surface 对比度 ≥4.5:1 5.93:1 真实像素计算(WCAG 相对亮度)
--accent-text 对 --surface 对比度 ≥4.5:1 4.76:1 同上
--ink-faint 对 --surface 对比度 ≥3:1(仅非正文) 3.55:1 同上
一屏可容纳记录行数(P1 账号矩阵) ≥6 @900px 高 10 行 @1440×900(首行顶 214px、行距 67px) DOM:首屏可用高度 ÷ 行距。⚠️ 是「装得下几行」不是「画了几行」—— 示意数据 5 条,实际永远 ≤5 行(数据用尽,非被截断)
一屏可容纳记录行数(P2 对标列表) ≥6 @900px 高 7 行 @1440×900(首行顶 402px) 同上
页内行高齐 ≤2px 差(本段追加判据) 67–68px,差 1px DOM:逐行 getBoundingClientRect().height
视觉层间距 / 块内相邻行分隔 ≥2 32px / 1px = 32(4 个视觉层) DOM:按 .band 归并视觉层后相减;分隔取各行 borderTopWidth 最大值
实际在用字号档数(P1) ≥3 5 档:12 / 14 / 16 / 18 / 24px,相邻差 2/2/2/6 DOM:叶子节点 fontSize 去重
块间距 / 块内间距 ≥2 32 / 8–16 ⇒ 2.0–4.0 令牌登记值 + DOM 复核(gap 全部落在登记刻度内,9 个刻度)
横向溢出 0 0(1440 / 1280 / 1024 / 768 / 641 / 640 / 500,八页逐页亦 0) DOM:scrollWidth − clientWidth
浮层中性关闭出口 恰好 1 7 / 7 个浮层均为 1(另有决策型关闭 0–1 个,已单列报数) DOM:可见的 [data-act="X-close"] 计数
同屏主档按钮 ≤1 逐页 1 个(P1 无主档:本页只用弱档,按钮高度集合 {32px}) DOM:逐页统计实底按钮
顶栏高度 未写死(只看有没有折行) 69px(单行;补 nowrap 前是 70px,标签在中间折行) DOM:.topbar 高度 + 诊断行

6.2 契约未写数字、本轮补登记的证据(⛔ 不留「无法判定」)

项 实测值 说明
P1 各块落位(顶 / 高) 今日待处理 @149+360 · 账号矩阵列表 @149+417 · 异常值提示 @599+215 · 本月表现最好的一条 @845+122 · 全局检索与随手记 @1000+113 前两块并排同顶(视口高 900)
P2 各块落位(顶 / 高) 对标监控概览 @165+139 · 对标内容列表 @336+417 · 评论区洞察 @785+108 · 选题库 @925+330 · 灵感速记 @1287+113 —
反事实:P1 前两块落回单列 账号矩阵列表 @530+413 ⇒ 首行顶 530px、容量 5 行(<6) 证明并排是密度判据逼出来的
控制台报错 0 条 自检全程监听 console.error
量尺寸时的滚动零点 scrollY = 0(P1 / P2 两处均核) rect 取到的是相对视口的真值

6.3 Gate-3 八项肉眼过(真实渲染,非只看代码)

# 项 结论
1 裁切 ✅ 无一页出现被裁掉的内容(23 张视口帧逐张看过)
2 重叠 ✅ 无元素互相压盖
3 失真 ✅ 无变形拉伸;字体走系统栈,无回退异常
4 失效控件 ✅ 0 个死控件(71 个 ID 在 22 个场景里逐个真驱动过)
5 缺状态 ✅ 48 组(六态 × 八页)全部渲染出内容
6 响应式破损 ✅ 七视口横向溢出全 0;≤640px 导航变横滚标签栏、两栏带落回单列(B-15 的密度缺口另计)
7 控制台报错 ✅ 0 条
8 字体回退异常 ✅ 字体栈全部命中系统字体;@font-face 数量 0(选定套实测同此)

七、Gate 结论

Gate-2(原型门)

通过。 依据:DESIGN.md 的十二字段契约与令牌表落盘(Gate-1 十项全过,见 DESIGN.md §四);八页 37 个板块与②段 2b 逐页逐位一致(骨架闸门正向 PASS + 反向变异两条都报红);六态 × 八页 48 组合全渲染;71 个 ID 逐个真驱动、0 死控件;对 §二 的令牌与 §二 表 2.4 交互清单做双向差集,表外可点元素为 0。

Gate-3(交付门)

桌面 / 平板档通过;手机档不通过,且已逐条留痕 —— 总判:有条件通过。

  • 通过的部分:契约视口 1440×900 自检 PASS 81 / FAIL 0;1280 / 1024 / 768 亦为 PASS 81 / FAIL 0;§六 里契约写了数字的 15 项全部实测回填、无一项越界;Gate-3 八项肉眼检查全过;控制台报错 0。
  • 不通过的部分:B-15 —— ≤767px 宽一屏装不满 6 行(641×900 / 640×900 实测 5 行、500×844 实测 4 行 / 5 行)。自检在这三个视口上就是红的(PASS 80/1 与 PASS 79/2),⛔ 没有靠改判据把它变绿。
  • 条件:B-15 的三条路(见 §三)得由用户挑一条;挑之前这一项挂在账上。
  • 另需明示:3c 那次独立评审不是 SKILL.md §3c 要求的「外部 GPT 会诊」(本会话没有对外模型通道,见 3c-GPT会诊.md §〇)。未取得外部审查 ≠ 已通过。

八、偏离单(本段收尾必附)

# 原要求(文件:小节) 实际做法 原因 影响 处置
D1 3b 实测走 browser-harness(SKILL.md §3b) 原型自带自检 81 项 + 变异对照 13/13 + 无头 Chrome 23 张视口帧 + 逐条 DOM 取值 该通道绑定实时浏览器入口,本会话驱动不了 证据链全部可复跑;⛔ 但没有「真人真点」这一层 持续偏离,待裁定是否补一次人工走查
D2 D5 终检要 1440x900 与 390x844 两帧(runbook §5.3、§七) 实测到 500×844 为止 Chrome 窗口宽下限 516 ⇒ 视口最小 500;要 390 得走 CDP setDeviceMetricsOverride 手机帧比要求宽 110px 持续偏离;⛔ 报告一律写「500×844」
D3 对外只留视口帧,长图仅自检(runbook §七) 未产出长图 --full 在本机通道做不到,只能截视口 无 ✅ 已修(参数与目录一并删掉)
D4 3c 要「外部 GPT 会诊」(SKILL.md §3c) 隔离上下文的独立评审执行者 无对外模型通道 与「异厂商外部审查」不是同一条通道 持续偏离,已明示
D5 逐页截图应八页齐备 首次交接只给了评审 4 页 + 2 个状态 + 2 个浮层 交接时按「主路径优先」挑了 8 张 评审自己指出 P3/P6/P7/P8 未覆盖 ✅ 已补(_gate_shots/p3-1440.png … p8-1440.png 已存在)

九、收口清单(对照 runbook §七 逐条)

检查项 结论
声明制走完(开工 / 每子步 / 每处偏离) ✅
供给核对做过(三处在位、选定套与记录一致) ✅ DESIGN.md §〇
DESIGN.md 含十二字段 + 三层令牌 + 组件规格 + 字阶定值表 + 高度层级 + 布局脚手架 + 浮层单出口 ✅
骨架未漂(与②段逐页逐位对得上) ✅ 机检 PASS + 双向变异报红
分档已兑现、档位未被本段改动 ✅ DESIGN.md §1.2
页型已判;工具型三零 + §5.5 五条逐条过完 ✅ 自检机核
Gate-1 自检项结果写在 DESIGN.md 末尾,无一项不过 ✅
原型单文件自包含、双击可开 ✅ 无外链、无 unpkg、无外部 jsx
状态穷举六项逐条有结论 ✅ §五
每个按钮每个跳转真点过(含四态) ✅ 自检 71 个 ID × 22 场景;⚠️ 通道换成自检而非 browser-harness(D1)
3c-GPT会诊.md 含提问原文 / 回答原文 / 四列处置表,未取到已明示 ✅ ⚠️ 通道为独立评审执行者(D4)
D3 收口按三处判据人工过完,阻断项清零 ⚠️ 15 条中 14 条清零,B-15 未清零且留痕
D5 终检真渲染,两视口各截一张,无「无法判定」项 ⚠️ 1440×900 ✅;390×844 实测到 500×844(D2)
每个浮层手工数过出口 + Esc / 遮罩 / 焦点锁 / 焦点归还,结论落报告 ✅ 7 浮层 × 6 项,含触发路径;另修掉「出口计数把取消藏起来」的真缺陷(B-09)
对外截图只用视口帧,长图未作评审输入 ✅(长图通道本机做不到,已删)
契约里每个数字实测回填,「契约值 / 实测值」并排 ✅ §六
Gate-2 与 Gate-3 均有书面结论 ✅ §七
重大改版:旧版在磁盘上 + 给出新旧差异 不适用(本段首次交付,无旧版)
偏离单已附,且无静默偏离 ✅ §八 共 5 条