docs: align Gate3 with combined submit panel

This commit is contained in:
QiuSW
2026-08-06 11:02:41 +08:00
parent 3abbe1040d
commit 23445d0c4b
23 changed files with 205 additions and 119 deletions
+9 -1
View File
@@ -11,13 +11,16 @@ work_branch: task/t-106-confirm-evidence
needs_device: true
needs_human_review: true
write_paths:
- README.md
- docs/00-ai-start-here.md
- docs/02-requirements.md
- docs/03-tech-stack.md
- docs/04-architecture.md
- docs/05-coding-rules.md
- docs/06-tasks.md
- docs/07-user-stories.md
- docs/08-interaction-checklist.md
- docs/README.md
- docs/api.md
- docs/routes.md
- docs/tasks/T-106.md
@@ -34,7 +37,7 @@ write_paths:
- docs/current-state.md
---
<!-- BEGIN VIKUNJA EXPORT id=41 synced=2026-08-06T02:53:09Z sha256=bff470cca464a8d04278a11ce39b57455a6b54a13d11b3b7ff63113f884bb911 -->
<!-- BEGIN VIKUNJA EXPORT id=41 synced=2026-08-06T03:01:51Z sha256=d4d654debf47bb54791d294e9ea2ca5b88363388febed16af254a005beed159c -->
## 问题 / 背景
2026-08-06 真机证据证明:拼多多 8.17.0 的当前采购界面不存在“规格面板 → 独立订单确认页”导航。目标规格与数量设置后,同一合并式最终提交面板已经显示地址、支付方式、顶部 Gate2 总额和红色“提交订单 ¥金额”;点击该红色控件会立即创建待付款订单并进入付款界面。原四态方案已安全停止。
@@ -95,6 +98,11 @@ T-106 第一态真机事实(拼多多 8.17.0、PKG110/Android 16、goods_id 93
2026-08-06T02:53:00.755Z · Codex
项目所有者明确同意“同一最终面板、两个独立金额位置”的 Gate3 方案。T-106/T-107 已重规划:取消确认页导航;Gate2 只读顶部总额,Gate3 只读最终控件结构化金额,两者必须分别唯一、严格相等且不超上限。T-106/T-107 不点击红色控件;只补一次人工 Back 返回证据。旧 confirm_page_amount/confirm_amount 语义将在 T-210/T-208 消费前迁移为 gate3_submit_amount,迁移前禁止提交围栏。
### 2026-08-06T03:01:42Z · ila
2026-08-06T03:01:42.237Z · Codex
合并式最终提交面板 Gate3 契约已同步到架构、需求、API、编码规则、路线图、用户故事/交互/路由及下游 T-107/T-210/T-208/T-305/T-400/T-401/T-403。T-106 只读 CLI 现仅接受既有最终面板态与人工一次 Back 返回态;确认页导航与红色控件点击均不可达。专项 16 tests、client 全量 346 tests、compileall、validate_agent_context 与完整 init.ps1 均通过。尚待项目所有者只按一次 Back、运行 returned-safe-page 取证并确认安全返回;T-106 保持 DOING。
<!-- END VIKUNJA EXPORT -->
## 边界
+9 -3
View File
@@ -32,7 +32,7 @@ write_paths:
- docs/current-state.md
---
<!-- BEGIN VIKUNJA EXPORT id=47 synced=2026-08-04T14:41:55Z sha256=a1109c837b096ecebfbda2200aa3c95c84b31ac2ff8e52404acb95060f148b3b -->
<!-- BEGIN VIKUNJA EXPORT id=47 synced=2026-08-06T02:59:05Z sha256=87afa6087dff4263ac10766eb18682ad596f9ca845fee4706f80838d0843a33c -->
## 问题 / 背景
T-205 将保存同一 attempt 的 append-only 三闸门事件和执行摘要,T-210 将开放 Gate1/Gate2/Gate3 三种固定证据资产,T-207 只允许围栏前人工恢复。真实点击“提交订单”前仍缺少服务端唯一提交围栏、首次一次性许可、围栏响应不明处理、点击后一次性结果以及同一 submission 的人工调和。T-208 只实现采购服务端围栏与调和;不连接真机、不点击提交订单、更不付款。
@@ -77,11 +77,18 @@ T-205 将保存同一 attempt 的 append-only 三闸门事件和执行摘要,T
## 执行记录
(暂无)
### 2026-08-06T02:58:55Z · ila
2026-08-06T02:58:54.857Z · Codex
2026-08-06 合并式最终提交面板契约:submission-fence 请求使用 gate3_submit_amount、完整 submit_control_text、match_count 与 nearest_clickable_ancestor_unique;不得继续使用 confirm_page_amount/confirm_amount。服务端要求 Gate3 严格等于 Gate2 且不超上限。
<!-- END VIKUNJA EXPORT -->
## 边界
- 2026-08-06 起 Gate3 是合并式最终提交面板唯一结构化最终控件金额;围栏请求/存储必须使用
`gate3_submit_amount`、完整控件文本、匹配数和最近可点击祖先唯一布尔值。旧
`confirm_page_amount` / `confirm_amount` 不得继续消费;T-210 迁移未完成时禁止建立围栏。
- `CREATE_ONCE` 建立围栏时必须复用 T-302 的 **current claim validator**,严格要求当前设备、session、
task、authorization、attempt、generation、claim token、未过期 lease/authorization 与当前状态
全部一致。不得为了让围栏或结果流程跑通而放宽、复活或绕过该 validator。
@@ -104,4 +111,3 @@ T-205 将保存同一 attempt 的 append-only 三闸门事件和执行摘要,T
`RECONCILIATION_REQUIRED`,绝不能回到围栏前状态。
- 本任务只实现服务端围栏、一次性结果和同一 submission 调和;不修改 client/PDD 页面判据,不连接
真机,不实现 `submit_order_once()`,不点击“提交订单”,不编写支付、免密支付、先用后付或扣款能力。
+10 -1
View File
@@ -22,7 +22,7 @@ write_paths:
- docs/06-tasks.md
---
<!-- BEGIN VIKUNJA EXPORT id=43 synced=2026-08-04T14:39:13Z sha256=db95cfcdb109c264b188336cbf1625411d3457baf8525532613aac7e7487c3fd -->
<!-- BEGIN VIKUNJA EXPORT id=43 synced=2026-08-06T02:59:09Z sha256=091bf2685c5caa42d62bc9229f55787e6418d7f67b8c237c32b640c8b4891d06 -->
## 问题 / 背景
T-204 当前数据库和 API 只允许 SKU_PANEL_GATE_1;T-107 将以真机证据批准闸门二规格面板和闸门三确认页截图。T-210 在不改变上传身份、大小、隐私或幂等边界的前提下,安全扩展两个固定证据类型,为 T-305 提供完整三闸门审计。
@@ -61,10 +61,19 @@ T-204 当前数据库和 API 只允许 SKU_PANEL_GATE_1;T-107 将以真机证
### 2026-08-04T14:39:05Z · ila
2026-08-04 依赖审计反转 T-210/T-205:三种 evidence kind 必须先进入真实 SQLite schema,T-205 才能对 Gate1/2/3 成功事件做真实正向与错 kind/跨归属测试。T-210 改为 00006,依赖 T-107/T-204/T-302。
### 2026-08-06T02:58:55Z · ila
2026-08-06T02:58:54.857Z · Codex
2026-08-06 T-106 真机结论覆盖旧“Gate3=独立订单确认页”前提。T-210 必须把 Gate3 evidence kind 固定为合并式最终提交面板,并用受保护 migration 把历史 confirm_amount/confirm_page_amount 迁移为 gate3_submit_amount;Gate3 资产记录最终控件结构化金额,必须与 Gate2 顶部总额严格相等。迁移未完成不得让 T-205/T-208 消费或建立围栏。
<!-- END VIKUNJA EXPORT -->
## 边界
- 2026-08-06 起 Gate3 kind 固定映射到合并式最终提交面板,不再映射独立订单确认页;本任务必须用
受保护 migration 把旧 `confirm_amount` / `confirm_page_amount` 迁移为 `gate3_submit_amount`。
Gate3 金额只来自结构化最终控件,必须严格等于 Gate2 顶部总额且不得回流 Gate1/Gate2。
- 证据类型只允许精确的 `SKU_PANEL_GATE_1`、`SKU_PANEL_GATE_2`、
`ORDER_CONFIRM_GATE_3`;不得接受自由 kind、别名、大小写变体或客户端自定义值。
- 升级必须保留既有闸门一 asset、哈希、attempt/task/authorization/generation 归属、append-only
+9 -1
View File
@@ -32,7 +32,7 @@ write_paths:
- docs/current-state.md
---
<!-- BEGIN VIKUNJA EXPORT id=44 synced=2026-08-04T14:13:33Z sha256=01cdc47330b88791356618a90caed5e884666ad1b153ed136e6d3aacf51d8faf -->
<!-- BEGIN VIKUNJA EXPORT id=44 synced=2026-08-06T02:59:04Z sha256=3ed2370d6d82623384b4ea5ecdbadf9aa9e8a82f89aeb2e32a153c5888c9ec86 -->
## 问题 / 背景
T-103~T-107 分段固化真机页面能力,T-303/T-304 提供本地恢复与桌面执行壳,T-306/T-307 提供三闸门证据上传和 attempt 事件/失败 sink,T-210 扩展完整三闸门证据类型。T-305 只把这些已完成能力组合为围栏前 dry-run,验证领取后同一趟执行可以安全到达最终提交控件观察点,并在任何不可逆动作前停止。
@@ -71,10 +71,18 @@ T-103~T-107 分段固化真机页面能力,T-303/T-304 提供本地恢复与
### 2026-08-04T14:11:20Z · ila
2026-08-04 任务定值:T-305 只做围栏前单趟 dry-run,总装已验收的 T-107/T-304/T-306/T-307/T-210 能力;正常路径最终写 DRY_RUN_COMPLETED_BEFORE_FENCE 并安全返回,不请求围栏、不创建 order_submission、不点击提交订单、不涉及付款。
### 2026-08-06T02:58:55Z · ila
2026-08-06T02:58:54.857Z · Codex
2026-08-06 T-305 顺序改为 Gate1 → 数量/Gate2 → 保持同一合并式最终提交面板零页面点击观察 Gate3/最终控件 → 一次安全 Back。删除确认页导航动作;Gate3 最终控件金额不得用于 Gate1/Gate2。
<!-- END VIKUNJA EXPORT -->
## 边界
- 2026-08-06 起删除确认页导航步骤:Gate2 后保持同一合并式最终提交面板,以零页面点击观察 Gate3
最终控件金额和最近可点击祖先唯一性,然后只执行一次安全 Back。任何旧导航判据都不得实现或调用。
- 只实现 `PreFenceDryRunOrchestrator` 与围栏前 UI 组合;不得在本任务的构造、import 闭包或运行时
引入 submission fence/result client、`SubmissionPermit`、`click_permitted`、submitter、
`submit_order_once()`、`order_submission` 或任何付款能力。
+8 -2
View File
@@ -16,7 +16,7 @@ write_paths:
- client/tests/execution/test_submission_orchestrator.py
---
<!-- BEGIN VIKUNJA EXPORT id=50 synced=2026-08-04T15:04:36Z sha256=4f27bf3ca322f467cb742da1b9159cbb976f6939c0cd804021323a24fa4cc735 -->
<!-- BEGIN VIKUNJA EXPORT id=50 synced=2026-08-06T02:59:09Z sha256=06eb0eef25f8c77b7b3a97f1fc0d0b018aa2e3c912ed329aa18fef9c57ce125f -->
## 问题 / 背景
T-305 的正常 dry-run 会在同一设备会话完成三闸门与最终控件只读观察,随后执行一次安全 Back,并以固定 reason DRY_RUN_COMPLETED_BEFORE_FENCE 终止 attempt。它只证明围栏前代码和判据契约已验收,绝不产生可供真实提交复用的运行时 ReadyForSubmission。T-308 将提供严格 fence/result sink、当前进程唯一 permit 和不可恢复的点击意图能力。T-400 只用测试 fixture 验证纯 SinglePassSubmissionOrchestrator、四条件、一次性调用和崩溃闭包;不读取或复用 T-305 的对象、截图、证据、journal、缓存或旧 proof,不提供生产 ReadyForSubmission 构造入口,也不接入 app/UI/PDD/真机。
@@ -58,11 +58,17 @@ T-305 的正常 dry-run 会在同一设备会话完成三闸门与最终控件
## 执行记录
(暂无)
### 2026-08-06T02:58:55Z · ila
2026-08-06T02:58:54.857Z · Codex
2026-08-06 离线 fixture/编排中的 Gate3 字段改为 gate3_submit_amount,提交控件必须是唯一结构化完整文本“提交订单 ¥{金额}”且最近可点击祖先唯一。Gate3 必须严格等于 Gate2;不再表达独立确认页。
<!-- END VIKUNJA EXPORT -->
## 边界
- 2026-08-06 起离线事实使用 `gate3_submit_amount` 和结构化完整控件文本,不再使用确认页金额语义。
Gate3 必须严格等于 Gate2,最近可点击祖先必须唯一;fixture 不表达独立确认页或导航动作。
- T-305 正常 dry-run 已执行一次安全 Back,并以 `DRY_RUN_COMPLETED_BEFORE_FENCE` 终止 attempt。
本任务只能复用其已验收的代码/判据契约;不得接收或复用该次/任何 dry-run 的结果对象、attempt、
screenshot、AssetRef、action journal、缓存、页面对象、本地快照或旧 proof 来申请围栏或提交。
+9 -2
View File
@@ -22,7 +22,7 @@ write_paths:
- client/tests/test_app.py
---
<!-- BEGIN VIKUNJA EXPORT id=52 synced=2026-08-04T15:06:03Z sha256=4ec2adedf5a6ab06ece40e32e6619992fbf8cc071a95977a80a796b6b1cd9d98 -->
<!-- BEGIN VIKUNJA EXPORT id=52 synced=2026-08-06T02:59:12Z sha256=e388ed4e91052ce9d8a0a7b5ac0aa55f7721a3133c17cc5eff948dae4167ce21 -->
## 问题 / 背景
T-107 已把订单确认页、闸门三与精确唯一“提交订单”控件限制为证据/App 版本绑定的只读能力,T-308 将只在当前进程首次明确围栏许可后产生不可恢复 permit,T-400 只用测试 fixture 证明四条件与一次性编排。T-305 的真实 dry-run 已安全 Back 并以 DRY_RUN_COMPLETED_BEFORE_FENCE 终止 attempt,只能提供已验收代码/判据契约,任何运行对象、截图、缓存或 proof 都不能提交。T-401 必须领取一条新的已授权真实任务,在全新 attempt 的同一设备会话中从打开商品开始实时重跑 Gate1、数量/Gate2、确认页/Gate3,并在仍停留于当前确认页时即时构造生产 ReadyForSubmission,随后才可申请围栏和精确点击一次。系统只创建可能的待付款订单,绝不付款;首次提交后页面无本项目证据,因此点击后无条件上报 UNKNOWN 并由 T-403 调和。
@@ -67,11 +67,18 @@ T-107 已把订单确认页、闸门三与精确唯一“提交订单”控件
## 执行记录
(暂无)
### 2026-08-06T02:58:55Z · ila
2026-08-06T02:58:54.857Z · Codex
2026-08-06 生产单趟删除“进入确认页”步骤:数量/Gate2 后保持同一最终面板,实时读取结构化最终控件金额作为 Gate3,再申请围栏。真实点击仍必须四条件全过且只一次;点击会直接创建待付款订单并进入付款界面,随后立即停止、绝不付款。
<!-- END VIKUNJA EXPORT -->
## 边界
- 2026-08-06 起生产单趟在数量/Gate2 后保持同一合并式最终提交面板,读取结构化最终控件金额作为
Gate3;不存在确认页导航。最终点击会直接创建待付款订单并进入付款界面,仍须四条件全过、只点
一次,点击后立即停止并调和,绝不执行付款。
- 本任务只把 T-107 已取证且绑定拼多多 App 版本的精确唯一最终控件、T-308 当前进程首次明确
`SubmissionPermit` / 一次性 `ArmedSubmission` 和 T-400 离线编排接入生产。不得接收服务端
selector/坐标/动作脚本,不得使用相似文案、OCR、通用 click、旧项目常量或未取证页面能力。
+8 -2
View File
@@ -24,7 +24,7 @@ write_paths:
- docs/current-state.md
---
<!-- BEGIN VIKUNJA EXPORT id=48 synced=2026-08-04T14:51:01Z sha256=f3ddd60f4b212c01b488f92a91148bfcb299c20cc8f8084f198971c18b3a4b49 -->
<!-- BEGIN VIKUNJA EXPORT id=48 synced=2026-08-06T02:59:07Z sha256=9a6d7f96c42df181cf6204acdd1d5d179136df36221c1a40517f0d8906a562b9 -->
## 问题 / 背景
T-208 将冻结三闸门、submission fence、一次性 result 和管理员调和事务,T-206 提供状态详情底座。采购管理员仍需要在同一任务详情中看懂围栏前固定失败、围栏后结果不明、已有证据和人工调和历史,并只调用 T-208 已有的同一 submission 调和接口。T-403 只完成失败分类/证据归档事实的展示和调和 UI,不新增失败码、数据库事实或第二套调和事务。
@@ -62,11 +62,17 @@ T-208 将冻结三闸门、submission fence、一次性 result 和管理员调
## 执行记录
(暂无)
### 2026-08-06T02:58:55Z · ila
2026-08-06T02:58:54.857Z · Codex
2026-08-06 管理视图/证据文案把 Gate3 解释为合并式最终提交面板的最终控件金额,不再称确认页金额;历史数据库字段在 T-210 迁移为 gate3_submit_amount 后再消费。外部付款页仍不保存、不上传。
<!-- END VIKUNJA EXPORT -->
## 边界
- 2026-08-06 起管理视图把 Gate3 展示为合并式最终提交面板的最终控件金额,不再称确认页金额;
只消费 T-210 迁移后的 `gate3_submit_amount`,不读取旧 `confirm_amount` / `confirm_page_amount`。
- 本任务只展示 T-205/T-208 已有失败、事件、三闸门 evidence、submission 与 reconciliation 事实,
并把管理员表单提交到 T-208 既有 reconcile handler/store;不得新增或改写 failure/reason code、
migration、状态机、调和事务或直接数据库写入。