This commit is contained in:
2026-08-11 19:35:21 +08:00
parent 2efcf8c959
commit 5d39ba70c1
3 changed files with 68 additions and 43 deletions
+1 -1
View File
@@ -7,7 +7,7 @@
- [一期文档](一期/README.md):一期范围、开发进度和头程订单最小闭环。 - [一期文档](一期/README.md):一期范围、开发进度和头程订单最小闭环。
- [二期文档](二期/README.md):预约取货、到仓收货、实测差异和指定库位闭环。 - [二期文档](二期/README.md):预约取货、到仓收货、实测差异和指定库位闭环。
- [三期文档](三期/README.md):智能排柜、订舱、拖车、PDA 拣货、报关协同和国内出仓闭环。 - [三期文档](三期/README.md):智能排柜、订舱、拖车、PDA 拣货、报关协同和国内出仓闭环。
- [独立任务协作登记](独立任务协作登记.md):以稳定 `routing_key + task_id` 维护长期复用通道,并临时登记尚未结束的一次性任务。 - [独立任务协作登记](独立任务协作登记.md):以稳定 `parent_routing_key → routing_key + task_id` 维护总控、可复用下属独立任务及其回传关系。
## 跨阶段参考 ## 跨阶段参考
+56 -31
View File
@@ -1,60 +1,85 @@
# 独立任务协作登记 # 独立任务协作登记
> 本文件登记用户可独立打开和查看的 Codex 任务/对话,不登记子代理。长期复用通道负责创建前路由,当前执行任务只保留未结束工作;任务名称始终只是展示标签。 > 本文件登记用户可独立打开和查看的 Codex 总控与下属独立任务,不登记子代理。总控负责计划和调度,下属任务保留业务上下文并可自行使用子代理;任务名称始终只是展示标签。
## 长期复用通道 ## 启用门禁
总控下发独立工作前必须先查本表。`idle`、`active`、`blocked` 都表示通道可复用;只有 `archived` 表示不可继续下发。同一 `routing_key` 只能保留一个未归档任务。 默认对话是普通任务,不进入本登记流程。小任务直接在当前对话完成,不登记、不创建下属独立任务,也不因为任务看起来复杂就自行切换为总控。
只有以下任一条件成立时启用总控模式:
- 当前稳定 `task_id` 已登记在下方“总控通道”。
- 用户或任务启动指令明确声明当前任务是总控,并授权其规划、拆分和调度;尚未登记时必须先核对稳定 ID 并补充总控记录。
“总控下属独立任务”中的任务默认只是执行任务,可以使用自己的子代理,但不能继续创建用户可见的下属独立任务或自行升级为总控。需要升级时必须由用户明确指定并登记。只有已登记总控创建或明确接管的独立任务才进入本表,其他普通对话不登记。普通任务认为需要长期编排时只能先建议切换,用户确认前不得启动本流程。
## 总控通道
总控通道持有整体计划、任务拆分、共享契约、结果汇总和后续调度。`idle`、`active`、`blocked` 都表示通道可复用;只有 `archived` 表示不可继续下发。同一 `routing_key` 只能保留一个未归档任务。
| routing_key | task_id | display_name | durable_scope | owner | status | last_update | notes | | routing_key | task_id | display_name | durable_scope | owner | status | last_update | notes |
|---|---|---|---|---|---|---|---| |---|---|---|---|---|---|---|---|
| `phase3.control.release-acceptance` | `019fdf57-2f16-7cf1-88f0-a75854ed7629` | 三期总控|发布与验收 | 三期发布、测试环境验收、阻断分类与最终汇总 | 三期总控 | idle | 2026-08-11 | 后续三期发布与验收优先向此 ID 续发;一次性复验或部署默认使用子代理 | | `admin-ui.control` | `019fea7a-979f-7252-8963-70687563385f` | Admin UI 总控 | Admin 页面规范、公共组件、交互一致性和跨模块 UI 治理 | Admin UI 总控 | active | 2026-08-11 | 后续 Admin UI 规划、拆分与汇总统一复用此 ID |
| `finance.control` | `019feaa3-9f10-7ab0-8023-4b121ff9662c` | 财务模块-总控 | 财务范围、跨端契约、后端/Admin/Client 协调与汇总 | 财务总控 | active | 2026-08-11 | Finance一期最终验收FAIL;正在协调11个一期P0 operation返工与独立复验 | | `phase3.control.release-acceptance` | `019fdf57-2f16-7cf1-88f0-a75854ed7629` | 三期总控|发布与验收 | 三期发布、测试环境验收、阻断分类与最终汇总 | 三期总控 | idle | 2026-08-11 | 后续三期发布与验收规划、拆分和汇总统一复用此 ID |
| `database-comments.control` | `019fef70-b644-7071-8b76-975b8940985c` | 数据库注释治理 | 数据库中文注释规范、模块分派、统一 SQL 集成与总体验收 | 数据库注释总控 | idle | 2026-08-11 | 本地 MySQL 8.4 全场景验收 PASS;开发 MySQL 8.0.45 已执行统一 SQL 并取得唯一 PASS,九库表/字段中文注释缺口均为0;后续工作继续复用此 ID | | `finance.control` | `019feaa3-9f10-7ab0-8023-4b121ff9662c` | 财务总控 | 财务范围、跨端契约、后端/Admin/Client 协调与汇总 | 财务总控 | active | 2026-08-11 | 后续财务规划、拆分与跨端汇总统一复用此 ID |
| `phase3.acceptance.real-full.control` | `019fdf0a-4933-7903-8a0c-10018c379f6f` | 三期真实全量验收总控 | 三期测试环境真实 HTTP 全量验收、返工复验、结果汇总和后续调度 | 三期真实验收总控 | active | 2026-08-11 | 后续同范围验收规划、拆分和汇总统一复用此 ID |
### 通道路由规则 ### 总控编排规则
- `routing_key` 按长期职责确定,格式为 `<domain>.<unit>.<responsibility>`;不包含序号、日期、批次、提交号或本轮动作。 - `routing_key` 按长期职责确定,格式为 `<domain>.<unit>.<responsibility>`;不包含序号、日期、批次、提交号或本轮动作。
- 命中未归档通道后直接使用其 `task_id` 通信;标题相同或不同均不影响寻址。通道开始新一轮工作时改为 `active`,一轮工作结束后回到 `idle`。 - 命中未归档总控后直接使用其 `task_id` 通信;标题相同或不同均不影响寻址。总控开始新一轮工作时改为 `active`,整体计划暂时没有待调度工作时回到 `idle`。
- 长期通道不得使用 `completed`;一轮工作完成后回到 `idle`,继续保留复用资格。 - 总控通道不得使用 `completed`;一轮工作完成后回到 `idle`,继续保留复用资格。
- 用户未明确要求新增独立对话时,未命中通道也不自动创建;使用当前任务或子代理完成工作。 - 用户将任务指定为总控并授权其规划、拆分和执行后,总控可在已确认目标与范围内创建必要的下属独立任务,无需逐项再次确认;超出授权范围仍须用户确认。
- 永久停用才标记 `archived`。创建替代通道时,在新旧记录备注中互相写明 ID,不覆盖或复用旧 ID。 - 永久停用才标记 `archived`。创建替代通道时,在新旧记录备注中互相写明 ID,不覆盖或复用旧 ID。
## 总控下属独立任务
下属独立任务负责稳定、可再次进入的业务边界。它可以自行创建和归档内部子代理,但必须由所属总控通过稳定 ID 下发,并将结果回传总控。任务一轮完成后改为 `idle` 并保留,不自动归档;旧功能修改、返工或补验重新激活原任务。
| routing_key | task_id | parent_routing_key | display_name | durable_scope | status | worktree/branch | last_update | notes |
|---|---|---|---|---|---|---|---|---|
当前暂无已登记的总控下属独立任务;后续只登记上述总控创建或明确接管的独立对话及其稳定职责。
### 下属任务生命周期
- `planned`:已经规划和登记,尚未开始;`active`:正在执行或等待内部子代理;`blocked`:存在明确阻断;`idle`:本轮已回传并等待总控再次下发。
- 独立任务回传后由总控验收并更新计划。验收通过只把该任务改为 `idle`,不删除登记、不归档聊天、不改写 `task_id`。
- 总控发现旧任务需要修改时,直接向原 `task_id` 下发并改为 `active`;独立任务沿用已有上下文理解需求,内部子代理可根据本轮工作重新创建。
- 只有职责永久撤销、任务损坏、任务被明确替代或用户要求停用时才归档;归档前在备注中说明原因和替代 ID(如有)。
## 已归档任务恢复门禁
归档用于收起明确停用的对话,不等于删除任务或废弃其稳定 ID。准备创建独立任务时,在查询总控通道和下属任务之后、实际创建之前,必须先用本机 `~/.codex/session_index.jsonl`、`~/.codex/state_5.sqlite` 和 `~/.codex/sessions/` 检查是否存在可恢复的已归档用户任务。
- 用户明确要求继续、返工或补验原任务,并且前序目标、交付物与上下文属于同一项工作时,取消归档原 `task_id`,把它重新加入“总控下属独立任务”并标记为 `active`,再向原 ID 下发。
- 只是业务域相同但职责边界不同的新事项时,不占用历史任务;由总控复用其他匹配任务或在授权范围内创建新的下属独立任务。标题、关键词或模块相同不能单独作为恢复依据。
- `thread_source=subagent`、已确认中止的子代理、已经被新任务明确替代的任务,以及损坏或无法读取的任务不得恢复为独立任务。
- 恢复动作不得生成新 ID,也不得把旧 ID 转给另一项工作。恢复后仍沿用原任务的范围和上下文,本轮结束后回到 `idle`;只有满足明确停用条件时才再次归档。
创建前判定顺序固定为:确定总控与子任务 `routing_key` → 查询未归档总控和下属任务 → 本地检查已归档同任务 → 复用原任务、恢复原任务或判定无匹配 → 核对总控的范围内拆分授权 → 创建并登记 → 下发。
## 登记规则 ## 登记规则
- 下表只临时保存 `planned`、`active`、`blocked` 的一次性独立任务,不作为新任务的复用路由;可长期复用的职责必须登记到上方“长期复用通道”。 - 总控和下属独立任务都必须登记稳定 `routing_key`;下属任务还必须登记 `parent_routing_key` 和可长期识别的 `durable_scope`,并作为后续复用的强制路由。未由已登记总控创建或明确接管的普通对话不得登记。
- 本表只登记本机元数据为用户独立任务的线程;`thread_source=subagent` 不得登记,完成或中止后由父线程归档。
- 独立任务创建成功并获得平台返回的稳定 ID 后立即登记;没有稳定 ID 不得写入临时名称或自行生成替代 ID。 - 独立任务创建成功并获得平台返回的稳定 ID 后立即登记;没有稳定 ID 不得写入临时名称或自行生成替代 ID。
- 任务名称可以修改,`task_id` 不得复用、改写或转给另一项工作。一次性任务完成或被替代后,先归档聊天,再删除本表记录;重要业务结论必须已写入对应业务、验收或进度文档。 - 任务名称可以修改,`task_id` 不得复用、改写或转给另一项工作。独立任务本轮完成后保留登记并改为 `idle`;后续原范围返工继续使用原 ID。重要业务结论必须写入对应业务、验收或进度文档。
- 跨任务共享契约由总控记录在备注中;独立任务回复必须带回自身 `task_id`、状态、变更文件、验证结果和阻断项。 - 跨任务共享契约由总控记录;独立任务回复必须带回自身 `routing_key`、`task_id`、`parent_routing_key`、状态、变更文件、验证结果、阻断项和建议下一步。
## 当前执行状态值
`planned`、`active`、`blocked`。完成和归档不是表内常驻状态。
## 当前执行任务
以下仅保留当前仍在执行或受阻的任务;已完成或已替代的一次性任务从本表移除,对应聊天可在 Codex 归档中恢复。
| task_id | display_name | scope | owner | status | worktree/branch | last_update | notes |
|---|---|---|---|---|---|---|---|
| 019ff034-87cb-7d32-8c93-3e8aa992b082 | 三期最终脚本与全量收口 | `baiyue-firstleg/scripts/admin-test-env-*` 状态断言、finalize实际柜次关联、定向与默认全量 | 三期总控 | completed | 后端 `test` | 2026-08-11 | `8a65f18`已推送;完整三期生产者链398/398 PASS、契约8/8、deploymentBlockers=0,已回收到三期长期通道 |
| 019fdf0a-4933-7903-8a0c-10018c379f6f | 后台真实全量测试 | `baiyue-firstleg/scripts/admin-test-env-*` 与测试环境真实 HTTP 验收 | 三期总控 | active | 后端 `test` | 2026-08-11 | 当前基线复跑与下一批 PDA batch/Admin 终验分两轮执行;禁止 mock、放宽断言或 gap 伪装 PASS |
| 019febc3-704f-7c72-8e82-dc317f69dc9b | Finance 后端与数据库 | `baiyue-firstleg/finance`、Finance 依赖的 `file/firstleg/gateway/iam` 契约、模块 SQL 与统一 SQL | 财务总控 | active | 共享工作区 | 2026-08-11 | 一期财务后端与数据库实现及专项门禁 |
| 019febc3-7c39-7ec2-8051-a4cce8d5f104 | Finance F1 接口契约 | `docs/财务管理/` 的 OpenAPI、接口契约、门禁和状态文档 | 财务总控 | active | 共享工作区 | 2026-08-11 | 一期财务接口与验收契约 |
| 019febc3-89f3-7991-b7eb-6c697fd9f032 | Admin 人工财务模块 | `apps/admin-web/src/modules/finance/` 及其路由、权限和测试 | 财务总控 | active | Admin 当前工作区 | 2026-08-11 | 一期 Admin 财务页面与真实接口交互 |
| 019febc3-9519-7982-81dd-bc048819bf48 | Client 财务只读模块 | `apps/client-web/src/modules/finance/` 及财务权限映射和测试 | 财务总控 | active | Client 当前工作区 | 2026-08-11 | 一期 Client 财务只读专项,禁止修改范围外文件 |
## 通信与汇总格式 ## 通信与汇总格式
总控下发消息至少包含: 总控下发消息至少包含:
```text ```text
role: controller | independent_task
routing_key: <长期职责键> routing_key: <长期职责键>
task_id: <已登记 ID> task_id: <已登记 ID>
parent_routing_key: <所属总控键;总控自身填 self>
目标: <单一交付目标> 目标: <单一交付目标>
范围: <目录/模块> 范围: <目录/模块>
共享契约: <依赖的接口、模型或文件> 共享契约: <依赖的接口、模型或文件>
回传: <状态、变更文件、验证命令/结果、阻断项> 回传: <状态、变更文件、验证命令/结果、阻断项>
``` ```
汇总时按 `routing_key + task_id` 聚合,不按 display_name 聚合;同一 ID 的最新状态覆盖旧状态,但保留重要阻断和验证记录。 汇总时按 `parent_routing_key → routing_key + task_id` 聚合,不按 display_name 聚合;同一 ID 的最新状态覆盖旧状态,但保留重要阻断和验证记录。总控验收回传、更新整体计划后,再决定向原任务返工或安排下一项工作。
@@ -17,8 +17,8 @@
| 分组 | 一期 P0 operation | 后端行为测试放行条件 | Admin 真实接入放行条件 | 当前可复核证据 | 结论 | | 分组 | 一期 P0 operation | 后端行为测试放行条件 | Admin 真实接入放行条件 | 当前可复核证据 | 结论 |
|---|---|---|---|---|---| |---|---|---|---|---|---|
| G1 客户账户 | `listDerivedCustomerAccounts`、`listDerivedCustomerAccountLedger` | 派生金额、分页筛选、日期边界、停用客户历史、跨客户隔离、固定 DTO/追踪字段测试全部通过 | 客户账户列表、筛选、详情入口、流水筛选均调用真实接口;无钱包、充值、预收或余额写入口 | 后端 G1 专项 4/4、Admin G1 专项 15/15、Finance 专项 21/21 和 Admin typecheck 已通过;`platform:finance:account:view` 尚未进入 IAM 初始化、权限目录和统一 SQL,IAM 测试证据缺失 | `FAIL` | | G1 客户账户 | `listDerivedCustomerAccounts`、`listDerivedCustomerAccountLedger` | 派生金额、分页筛选、日期边界、停用客户历史、跨客户隔离、固定 DTO/追踪字段测试全部通过 | 客户账户列表、筛选、详情入口、流水筛选均调用真实接口;无钱包、充值、预收或余额写入口 | 后端 G1 专项 4/4、Admin G1 专项 15/15、Finance 专项 21/21、Admin typecheck、IAM 166/166、IAM 权限契约 3/3、Finance 权限契约 2/2 通过;统一 SQL 已同步权限目录且未默认授予角色 | `PASS` |
| G2 费用来源 | `getFinanceFeeSource`、`reviewFinanceFeeSource`、`updateFeeSourceSettlementInclusion` | 详情、PENDING 审核、非法状态、expectedVersion、占用冻结、完整幂等、跨客户隐藏和 CNY 条件全部通过 | 客户应收应付页详情、审核、参与/禁止结算使用真实接口;权限和服务端错误态可见,不存在假成功 | 后端 G2 专项 9/9 已通过;`platform:finance:fee-source:view/review/settlement` 尚未进入 IAM 初始化、权限目录和统一 SQL,IAM 测试证据缺失;Admin G2 真实接入验收尚待提供 | `FAIL` | | G2 费用来源 | `getFinanceFeeSource`、`reviewFinanceFeeSource`、`updateFeeSourceSettlementInclusion` | 详情、PENDING 审核、非法状态、expectedVersion、占用冻结、完整幂等、跨客户隐藏和 CNY 条件全部通过 | 客户应收应付页详情、审核、参与/禁止结算使用真实接口;权限和服务端错误态可见,不存在假成功 | 后端 G2 专项 9/9、IAM 166/166、IAM 权限契约 3/3、Finance 权限契约 2/2 通过;Admin G2 真实接入验收尚待提供 | `FAIL` |
| G3 客户对账单 | `createReconciliationStatement`、`actionReconciliationStatement` | BY_CUTOFF/SELECTED、同客户来源、重复占用、提交/审核/出账/调整/作废/重开、revision、乐观锁和完整幂等全部通过 | 客户对账单生成及所有动作使用真实接口;出账冻结、调整历史和错误态在页面可核对 | 已观察到 Controller/Service/DTO 和同路径映射;审计时点编译失败,未发现直接行为测试或 Admin 真实接入验收 | `FAIL` | | G3 客户对账单 | `createReconciliationStatement`、`actionReconciliationStatement` | BY_CUTOFF/SELECTED、同客户来源、重复占用、提交/审核/出账/调整/作废/重开、revision、乐观锁和完整幂等全部通过 | 客户对账单生成及所有动作使用真实接口;出账冻结、调整历史和错误态在页面可核对 | 已观察到 Controller/Service/DTO 和同路径映射;审计时点编译失败,未发现直接行为测试或 Admin 真实接入验收 | `FAIL` |
| G4 结算与人工收付款 | `createReceivableSettlement`、`createPayableSettlement`、`getSettlement`、`createSettlementPayment`;并回归已实现 `createReceiptWithAllocations` | AR/AP 生成唯一性、方向权限、详情/revision、部分付/付清、File fail-closed、跨客户/供应商、超额、CNY、完整幂等全部通过;收款 300 元分配 3 张 100 元账单通过 | 应收/应付结算页生成、详情、人工收款/付款、凭证和状态刷新均调用真实接口;客户只读脱敏与状态过滤通过 | 已观察到四个 Controller 映射和 DTO;审计时点所引用 Service 不存在且无直接行为测试;未提供 Admin 真实接入验收 | `FAIL` | | G4 结算与人工收付款 | `createReceivableSettlement`、`createPayableSettlement`、`getSettlement`、`createSettlementPayment`;并回归已实现 `createReceiptWithAllocations` | AR/AP 生成唯一性、方向权限、详情/revision、部分付/付清、File fail-closed、跨客户/供应商、超额、CNY、完整幂等全部通过;收款 300 元分配 3 张 100 元账单通过 | 应收/应付结算页生成、详情、人工收款/付款、凭证和状态刷新均调用真实接口;客户只读脱敏与状态过滤通过 | 已观察到四个 Controller 映射和 DTO;审计时点所引用 Service 不存在且无直接行为测试;未提供 Admin 真实接入验收 | `FAIL` |
@@ -26,11 +26,11 @@
| P0 | operationId | 后端测试证据 | Admin 验收证据 | 最终状态 | | P0 | operationId | 后端测试证据 | Admin 验收证据 | 最终状态 |
|---|---|---|---|---| |---|---|---|---|---|
| P0-01 | `listDerivedCustomerAccounts` | G1 后端 4/4、Finance 专项 21/21 通过 | G1 专项 15/15、typecheck 通过;IAM `account:view` 待初始化和测试 | `FAIL` | | P0-01 | `listDerivedCustomerAccounts` | G1 后端 4/4、Finance 专项 21/21 通过 | G1 专项 15/15、typecheck、IAM 目录/统一 SQL/权限契约通过 | `PASS` |
| P0-02 | `listDerivedCustomerAccountLedger` | G1 后端 4/4、Finance 专项 21/21 通过 | G1 专项 15/15、typecheck 通过;IAM `account:view` 待初始化和测试 | `FAIL` | | P0-02 | `listDerivedCustomerAccountLedger` | G1 后端 4/4、Finance 专项 21/21 通过 | G1 专项 15/15、typecheck、IAM 目录/统一 SQL/权限契约通过 | `PASS` |
| P0-03 | `getFinanceFeeSource` | G2 后端 9/9 通过 | Admin G2 待提供;IAM `fee-source:view` 待初始化和测试 | `FAIL` | | P0-03 | `getFinanceFeeSource` | G2 后端 9/9 通过 | IAM 权限门禁通过;Admin G2 待提供 | `FAIL` |
| P0-04 | `reviewFinanceFeeSource` | G2 后端 9/9 通过 | Admin G2 待提供;IAM `fee-source:review` 待初始化和测试 | `FAIL` | | P0-04 | `reviewFinanceFeeSource` | G2 后端 9/9 通过 | IAM 权限门禁通过;Admin G2 待提供 | `FAIL` |
| P0-05 | `updateFeeSourceSettlementInclusion` | G2 后端 9/9 通过 | Admin G2 待提供;IAM `fee-source:settlement` 待初始化和测试 | `FAIL` | | P0-05 | `updateFeeSourceSettlementInclusion` | G2 后端 9/9 通过 | IAM 权限门禁通过;Admin G2 待提供 | `FAIL` |
| P0-06 | `createReconciliationStatement` | 待提供 | 待提供 | `FAIL` | | P0-06 | `createReconciliationStatement` | 待提供 | 待提供 | `FAIL` |
| P0-07 | `actionReconciliationStatement` | 待提供 | 待提供 | `FAIL` | | P0-07 | `actionReconciliationStatement` | 待提供 | 待提供 | `FAIL` |
| P0-08 | `createReceivableSettlement` | 待提供 | 待提供 | `FAIL` | | P0-08 | `createReceivableSettlement` | 待提供 | 待提供 | `FAIL` |
@@ -44,9 +44,9 @@
| 分组 | 权限码 | 当前状态 | 关闭证据 | | 分组 | 权限码 | 当前状态 | 关闭证据 |
|---|---|---|---| |---|---|---|---|
| G1 | `platform:finance:account:view` | 未进入 IAM 初始化,G1 保持 `FAIL` | IAM 权限目录和初始化 SQL包含该权限;统一 SQL同步;IAM 权限初始化/查询/可分配测试通过 | | G1 | `platform:finance:account:view` | 已进入 IAM 初始化与统一 SQL,未默认授予角色 | IAM 166/166、IAM 权限契约 3/3、Finance 权限契约 2/2 通过 |
| G2 | `platform:finance:fee-source:view` | 未进入 IAM 初始化,G2 保持 `FAIL` | 同上 | | G2 | `platform:finance:fee-source:view` | 已进入 IAM 初始化与统一 SQL,未默认授予角色;G2 等待 Admin 接入 | 同上 |
| G2 | `platform:finance:fee-source:review` | 未进入 IAM 初始化,G2 保持 `FAIL` | 同上 | | G2 | `platform:finance:fee-source:review` | 已进入 IAM 初始化与统一 SQL,未默认授予角色;G2 等待 Admin 接入 | 同上 |
| G2 | `platform:finance:fee-source:settlement` | 未进入 IAM 初始化,G2 保持 `FAIL` | 同上 | | G2 | `platform:finance:fee-source:settlement` | 已进入 IAM 初始化与统一 SQL,未默认授予角色;G2 等待 Admin 接入 | 同上 |
在 IAM 模块权限目录、IAM 初始化 SQL、统一 SQL和对应 IAM 测试证据全部完成前,不因 Finance/Admin 专项测试通过而更新 G1/G2 结论。主契约保持冻结,不写入本门禁的中间状态。 在 IAM 模块权限目录、IAM 初始化 SQL、统一 SQL和对应 IAM 测试证据全部完成前,不因 Finance/Admin 专项测试通过而更新 G1/G2 结论。主契约保持冻结,不写入本门禁的中间状态。