docs(safety): define one-shot sku reveal evidence
This commit is contained in:
+13
-4
@@ -17,13 +17,15 @@ write_paths:
|
||||
- client/tests/pdd/**
|
||||
- client/tests/device/**
|
||||
- client/scripts/capture_sku_panel_spike.py
|
||||
- client/scripts/capture_sku_reveal_spike.py
|
||||
- client/scripts/run_t103_sku_selection.py
|
||||
- client/scripts/sanitize_sku_panel_evidence.py
|
||||
- docs/03-tech-stack.md
|
||||
- docs/04-architecture.md
|
||||
- docs/current-state.md
|
||||
---
|
||||
|
||||
<!-- BEGIN VIKUNJA EXPORT id=23 synced=2026-08-05T03:36:59Z sha256=2e1f4ffa9d2a3f4bb1233db117c72afc98f9880ec973280512d04c1f8c3c0484 -->
|
||||
<!-- BEGIN VIKUNJA EXPORT id=23 synced=2026-08-05T03:44:41Z sha256=cd788a2ff47d4c0c68c8119539f358d4ec03002ddce9f188dcab4de8320c0b4e -->
|
||||
## 问题 / 背景
|
||||
|
||||
T-102 已证明 canonical 链接可进入目标商品。T-103 在 PKG110 / Android 16 / 拼多多 8.17.0、goods_id `937122477375` 上确认:详情页底部购买区第一行“快要抢光 + 金额”是唯一获准的受控规格入口;商品内容区同名小字和第二行“免拼购买”都不得点击。
|
||||
@@ -44,7 +46,7 @@ T-102 已证明 canonical 链接可进入目标商品。T-103 在 PKG110 / Andro
|
||||
2. 把面板状态拆为整体 profile,禁止跨 profile 拼装:`PANEL_OPEN_EMPTY`(两维未选、尺码隐藏)、`COLOR_SELECTED_SIZE_HIDDEN`(仅目标颜色已选)、`SIZE_VISIBLE_NON_TARGET`(目标颜色 + S)、`TARGETS_SELECTED`(目标颜色 + M)。摘要、容器、节点类型、选中态和相对结构任一漂移均 fail closed。
|
||||
3. `open_sku_panel()` 沿用已审底部入口链,只点击第一行文本中心一次且不重试;打开后的初态判据不得要求尺码 option 已在视口或已有 selected。
|
||||
4. 目标颜色只在颜色容器内按 exact content-desc 唯一匹配;从未选到选中只点击一次,并以目标颜色 selected=true、摘要 exact“请选择:尺码”双重读回。
|
||||
5. 尺码显示只允许私有、命名的 `reveal_size_options()` 窄能力:仅可从“目标颜色已选、尺码隐藏且未选”状态调用,绑定外层维度 RecyclerView 的安全内部区域,最多一次、不重试,不暴露通用 swipe/scroll/任意坐标。只有取得“动作前后 M 均未选且提交区未触发”的真机动作证据后才能实现生产动作。
|
||||
5. 尺码显示只允许私有、命名的 `reveal_size_options()` 窄能力:仅可从“目标颜色已选、尺码隐藏且未选”状态调用,绑定已取证的嵌套滚动容器与列间安全通道,最多一次、不重试,不暴露通用 swipe/scroll/任意坐标。生产动作落地前,只允许独立 `capture_sku_reveal_spike.py` 在严格前置成立后执行一次固定无参手势并采集 before/after;生产 Flow 不得调用该 spike。只有人确认动作前后 M 均未选、尺码已显示且提交区未触发后,才能把后置固化为生产判据。
|
||||
6. 尺码可见时,S/M 必须是证据绑定的 exact clickable TextView;恢复流程只允许 S=true/M=false → 点击 M 一次 → S=false/M=true,并用 exact 已选摘要双重读回。生产未选态也必须证明 M=false 后才点击。
|
||||
7. 闸门一单价只在目标颜色和目标 M 都精确选中后读取。只接受已取证滚动态面板价格行中、PDD package、只读、无可点击祖先、唯一的当前价;严格返回十进制字符串 `12.88`,明确区分原价 `29.88` 和硬拒绝区“提交订单 ¥12.88”。未知前缀、候选重复、节点拆分或结构漂移均 unreadable,不从初态、详情页或按钮补值。
|
||||
8. 一次 Back 在发送前封存且不重试;“面板消失”不得自动升级为生产安全退出结论。精确同商品退出判据由依赖任务 T-104 另行真机取证并收紧。
|
||||
@@ -55,7 +57,7 @@ T-102 已证明 canonical 链接可进入目标商品。T-103 在 PKG110 / Andro
|
||||
- fixture 分别来自本项目 8.17.0 的未选初态、仅目标颜色态、S 态和恢复 M 态;旧 v5 全选 fixture 不得冒充初态,fixture 不含地址、手机号或支付凭据。
|
||||
- 四态 classifier 正例通过;package、profile、父子关系、节点类型、摘要、选中态、坐标/相对结构任一漂移和跨 profile 拼装全部拒绝。
|
||||
- 颜色 exact 唯一点击一次;缺失、重复、禁用、近似文本、读回不一致均零后续动作。
|
||||
- 在生产 reveal 落地前,必须补齐“请选择尺码 / M=false / 隐藏 → 单次受控 reveal → 请选择尺码 / M=false / 可见”的真机动作证据;reveal 只能调用一次,RPC 不明、页面不变、颜色/摘要漂移、M 意外选中、尺码仍隐藏或提交区风险均不重试、不点规格。
|
||||
- 在生产 reveal 落地前,独立 spike 必须补齐“请选择尺码 / M=false / 隐藏 → 单次受控 reveal → 请选择尺码 / M=false / 可见”的真机动作证据;CLI 不接受颜色、尺码、坐标或手势参数。RPC 正常或不明后都只读调和,页面不变、颜色/摘要漂移、M 意外选中、尺码仍隐藏或提交区风险均不重试、不发布;成功后不 Back,等待人核对。
|
||||
- S=true/M=false → 仅点击 exact M 一次 → S=false/M=true 且摘要 exact;任何歧义零点击。
|
||||
- 价格测试能区分当前价 12.88、原价 29.88、初态价格与底部提交按钮价;未知前缀、可点击祖先、多个候选、拆分货币全部 unreadable。
|
||||
- 静态 API/AST/导入测试证明 Flow/Protocol/runner 无公开通用 swipe/scroll/click、数量、确认页、授权、围栏、提交或支付能力,T-103 调用链不可达下单函数。
|
||||
@@ -264,6 +266,10 @@ T-103 sanitizer v2 坐标修正与主审:提交 44c027a 将 screenshot space
|
||||
- C:\Users\ila20\AppData\Local\cmbuyer\artifacts\T-103\sku-size-s-selected-20260805-112602
|
||||
- C:\Users\ila20\AppData\Local\cmbuyer\artifacts\T-103\sku-size-m-restored-20260805-112704
|
||||
其余环境、哈希、人工 M 恢复结论与 comment 111 一致。
|
||||
|
||||
### 2026-08-05T03:44:34Z · ila
|
||||
|
||||
2026-08-05 reveal 取证方案收口:不改造只读 capture_sku_panel_spike.py,也不把未经验证的滑动放进生产 SkuSelectionFlow。新增独立 capture_sku_reveal_spike.py:无颜色/尺码/坐标/手势参数,只在精确 COLOR_SELECTED_SIZE_HIDDEN 前置成立后沿已取证列间安全通道发出一次固定手势;发出前封存,RPC 正常/超时/异常后均只读调和且绝不重试。后置必须颜色仍选中、摘要仍请选择尺码、S/M 可见且全部 selected=false、未触发提交区;成功后不 Back,由人核对 before/after 后才允许固化生产 reveal 判据。T-103 继续 Doing。
|
||||
<!-- END VIKUNJA EXPORT -->
|
||||
|
||||
## 边界
|
||||
@@ -288,9 +294,12 @@ T-103 sanitizer v2 坐标修正与主审:提交 44c027a 将 screenshot space
|
||||
禁用、维度不明、选中态无法唯一读回或页面版本不符均 fail closed。不得前缀、包含、模糊、相似、
|
||||
跨维度或 OCR 匹配,也不得用裸坐标猜选项。
|
||||
- 显示尺码只允许私有命名的 `reveal_size_options()`:仅从目标颜色已选、尺码未选且隐藏的已证明状态
|
||||
执行,绑定外层维度 RecyclerView 的安全内部区域,最多一次且不重试。生产动作落地前必须先取得
|
||||
执行,绑定已取证的嵌套滚动容器与列间安全通道,最多一次且不重试。生产动作落地前必须先取得
|
||||
“reveal 前后 M 均未选、尺码由隐藏变为可见、提交区未触发”的真机证据;不得暴露通用
|
||||
`swipe` / `scroll` / 任意坐标能力。
|
||||
- 生产 reveal 落地前只允许独立的 `capture_sku_reveal_spike.py` 证据脚本执行该固定无参动作:脚本必须
|
||||
自动走受控商品/面板/目标颜色前置,严格命中仅颜色态后才发出一次固定手势;RPC 正常或不明后都只读
|
||||
调和,M 已选、尺码仍隐藏、摘要/颜色/版本漂移或提交区风险均不得发布。成功后不 Back,等待人核对。
|
||||
- 单价只允许在目标颜色与目标 M 均精确读回后,从滚动态规格面板证据确认的只读当前价节点读取,
|
||||
并以十进制字符串表达;不得使用浮点,不得从未选初态、详情页、搜索卡片、底部购买/提交按钮或
|
||||
其他页面的数字补值。未知促销前缀、券后价、原价、区间价、货币符号拆分、可点击祖先或多个候选
|
||||
|
||||
Reference in New Issue
Block a user