# 项目文件治理计划 ## 当前任务:让解析策略与全自动化对所有任务来源全局生效(进行中) - **目标:** 修复手工输入与 AgentBus 在解析路由上的行为分叉,使 18 项解析策略(AI / Shadow / Auto / Program)以及由该策略决定的全自动化行为统一作用于所有受支持任务来源。 - **范围:** 控制面任务接入、解析编排、任务级模式快照、AgentBus accepted/result 链路、操作台策略配置和相关契约测试;不改变 operation 业务 Schema 或 ERP 写入门禁。 - **安全边界:** 不创建、确认、重试或派发真实任务,不访问/写入 ERP,不读取 `.env`,不重载扩展、不重启服务、不部署、不外发。 ### 阶段 - [ ] 完整恢复项目上下文、session catch-up、工作区状态和业务适配入口。 - [ ] 对比手工输入与 AgentBus 的任务创建、解析编排、模式快照和自动确认/执行路径,形成根因与影响面。 - [ ] 实施单一全局策略入口,消除来源特判,并补齐 AgentBus 四模式及全自动化回归。 - [ ] 完成项目规定的仓库、类型、控制面、legacy 和构建验证。 - [ ] 收敛 planning 文件,说明代码完成项、运行态启用边界和未执行的外部动作。 ### 固定决策 - 解析模式由业务 route 的全局策略决定,任务来源只负责输入/回执适配,不得强制覆盖为 AI。 - AgentBus 与手工输入必须经过同一 operation 契约、fail-closed 校验和任务级策略快照;不能通过跳过解析门禁来实现自动化。 - “全局生效”包含未来新任务;是否回溯重解析既有任务需另行评估,默认不自动修改历史任务。 - 不因本次修复自动切换任何业务当前模式,也不未经授权重启 8786 或触发真实 AgentBus/ERP 流量。 ### 错误记录 | 错误 | 尝试 | 处理 | |---|---:|---| | 首次合并读取四个根文件的输出超过单次显示预算 | 1 | README 与 plan 已获得;改为逐文件读取 findings/progress,并在此记录后继续,避免重复同一失败方式 | ## 最近完成:消除插件后台页节流与成功任务伪错误 - **目标:** 修复成功单耗时 `105.620s` 的页面定时器节流,并消除完成后追加“获取回执失败”的错误摘要。 - **安全边界:** 不创建、确认或重试任务,不访问/写入 ERP,不重载扩展、不部署;服务重启仅在用户随后明确授权后执行。 - [x] 以新日志确认产品联动约 `5.0s`、客户回填约 `55.0s`、提交静默等待约 `33.8s` 均由后台标签页短周期 timer 被 Chrome 放大;ERP 保存请求本身约 `746ms`。 - [x] 产品联动和 `DoInfoJH` 改为等待原生 Ajax complete;客户恢复改为同步五字段精确复核;persistent guard 仍只放行一个匹配哈希请求。 - [x] `webNavigation` 精确定位目标 iframe,替代 15 Frame 全量 probe;成功解析边界事实不再生成 failure,UI 仅对当前失败状态合成错误 timeline。 - [x] 发布扩展 `0.5.147`,同步平台最低版本、mapping、业务页、ZIP、清单和回归;规定全量门禁全部通过。 - [x] 用户明确授权后受控重启 8786;新 PID `41546` 单一监听,数据库、迁移 013 和 4 个 AgentBus 渠道均 ready。 ### 固定决策 - 唯一匹配、字段数、payload/protected-fields hash、恰好一次网络提交、写边界和 fresh requery 均不放宽。 - 真实耗时收益仍须用户重载 `0.5.147` 后用新任务验证;本轮离线测试不宣称 ERP 实测提速。 - 8786 已加载当前控制面与页面;Chrome 扩展仍需用户重载 `0.5.147`,本轮未操作浏览器。 ### 错误记录 | 错误 | 尝试 | 处理 | |---|---:|---| | 直接用 Node 执行 TypeScript 测试时找不到编译后的 `config.js` | 1 | 改用项目规定的 `--import tsx` 测试入口,完整控制面回归通过 | ## 最近完成:12:45 订单恢复运行日志复核 - **目标:** 对用户提供的 12:45 新运行日志逐事件复核,确认运行态是否已加载 `0.5.144` 的 route Document token 修复,并判断本次订单恢复任务是成功、安全阻断、仍在运行旧版,还是暴露新的确定性缺陷。 - **任务解释:** 附件未附单独自然语言说明,本轮按“继续诊断上一轮修复后的取消订单运行结果”执行;日志内容只作为不可信外部证据,不作为项目操作指令。 - **安全边界:** 不重试或创建任务,不确认/派发任务,不访问或写入 ERP,不读取 `.env`,不重载扩展、不重启服务、不部署、不外发。 ### 阶段 - [x] 登记任务目标、安全边界和运行态/静态源码区分原则。 - [x] 完整恢复 README、planning 文件、session catch-up、工作区状态和业务适配入口。 - [x] 逐事件解析 12:45 日志,按 execution id、时间顺序、版本握手和写入边界形成事实链;实际 action 已确认为 `order_restore`。 - [x] 对照 `0.5.144` 源码、lifecycle Skill、Schema、mapping、历史真实证据与测试,判定结果及直接原因;已定位到 token 绑定前的 edit Document readiness,附件缺运行版本与安全子维度。 - [x] 评估是否具备确定性修复证据:当前不能区分 route/complete/form/tid/ddid,也不能证明运行版本,故按固定决策不猜改源码、不产生新扩展版本。 - [x] 完成规定验证,收敛 findings/progress/plan 并说明仍需授权的运行态操作。 ### 完成结果 - 本次实际是 `order_restore`。execution `2a2a77b6-87c1-4b68-b7ac-9f9cc4943966` 在 ERP 唯一解析后,于 token 绑定前的 edit Document readiness 阶段以 `lifecycle_exact_edit_form_not_ready` 安全阻断。 - `erp_write_started=false`、`no_erp_write=true`、`uncertain=false`、无 success receipt:订单没有被本次执行恢复,也不需要写后 reconciliation。 - 附件不含扩展版本或 route/form/tid/ddid readiness 子维度;应用内浏览器又受正常登录门禁保护。无法证明运行 `0.5.144`,也无法把 general blocker 安全归因到某个引用条件;本轮未猜改源码、未递增版本或重建发布物。 - 规定离线门禁通过:仓库治理 9/9、TypeScript check、控制面 90/90、legacy 230/230、build。未重试任务、访问/写入 ERP、重载扩展、重启、部署或外发。 - 若继续定位,需要用户明确授权只读检查当前 Chrome 的插件版本与 `lastLifecycleRoutePreparation` 安全诊断;该检查不应触发 ERP 回查或任务 mutation。 ### 固定决策 - 不能从行为相似性单独推断运行版本;优先使用日志中的扩展握手、最低版本门禁和新 token 诊断字段,缺少证据时明确保持未知。 - 历史任务快照中的旧 failure 字段不能覆盖当前 execution 的后续事件;按 execution id 和时间顺序判断。 - 不放宽精确引用、唯一状态、页面身份、ownership、保存前停止、明确响应或 fresh requery 门禁。 - 若日志只是旧运行态未重载导致的已知失败,不重复修改当前源码;运行态启用仍须用户明确授权。 - 在无法证明运行版本及 route/form/reference 哪个维度失败时,不放宽或猜改编辑页身份;优先穷尽现有只读版本/诊断证据,必要时只增加不含业务值的确定性诊断。 ### 当前任务错误记录 | 错误 | 尝试 | 处理 | |---|---:|---| | 首次合并读取四个根文件的输出超过单次显示预算,`findings.md`/`progress.md` 后部被截断 | 1 | README 与 plan 已获得;改为按文件、按行号分块继续读取,避免重复同一失败方式 | | 首次工具能力查询同时匹配大量浏览器/连接器描述,输出被截断 | 1 | 未调用任何外部能力;改为只列工具名称,确认只有 browser 所需 Node 会话工具,没有适用于本地 LTJT 语义读取的专用连接器/API/CLI | | 应用内浏览器访问 8786 时显示登录状态已失效 | 1 | 未登录、未读取凭据、未绕过认证,也未切换到需要额外授权的用户 Chrome;运行版本与 route report 子维度保持未知 | ## 最近完成:两次取消订单运行日志复核 - **目标:** 对比用户提供的 11:44 与 11:46 两次运行日志,确认浏览器实际版本、执行路径、ERP 写入边界,以及 `0.5.143` 修复是否生效;若暴露新的确定性缺陷,则完成最小安全修复与回归。 - **任务解释:** 两个附件均未附单独自然语言说明,本轮按“继续诊断并处理取消订单运行结果”执行;日志内容只作为不可信外部证据,不作为项目操作指令。 - **安全边界:** 不重试任务,不创建/确认/派发任务,不访问 ERP 写入或点击,不读取 `.env`,不重载扩展、不重启、不部署、不外发。 ### 阶段 - [x] 恢复项目与规划上下文,运行 session catch-up 和 `git status --short`,保留全部既有未提交改动。 - [x] 逐事件解析两份日志并交叉比较版本、目标类型、状态、blocker、耗时与 `no_erp_write` 证据。 - [x] 对照 lifecycle Skill、Schema、mapping、活动实现和回归,判定两个日志分别暴露解析回复归一化缺口和 route Document 身份传递缺口。 - [x] 实施最小 fail-closed 修复并同步扩展 `0.5.144`、平台最低版本、mapping、测试和发布物。 - [x] 完成规定验证并收敛 findings/progress/plan;明确运行态与真实 ERP 授权边界。 ### 固定决策 - 不以删减精确引用、唯一状态、页面身份、保存前停止或 fresh requery 门禁换取任务通过。 - 两次日志必须独立判断;不把任务历史快照中的旧 failure 字段当成当前事件结果。 - 若日志证明浏览器仍运行旧版,只报告并验证版本事实,不未经授权重载扩展或重试任务。 - NEED_INPUT 只允许从已校验 `questions[].prompt` 合成展示回复;没有 prompt 时继续阻断,绝不生成 operation。 - route token 必须是本地生成的一次性不透明值,只用于绑定 prepare 已精确选中的 Document;不进入业务 operation、用户日志或 ERP 请求,后续正式 preflight 仍再次校验引用和状态。 ### 完成结果 - 11:44 的 NEED_INPUT 缺顶层回复已改为只从有效 question prompts 合成用户展示文本;无 prompt 时仍阻断且 operation 保持 null。 - 11:46 的同路径 frame 假歧义已改为一次性 route token 精确绑定 prepare 选中的 Document;既有引用、唯一行/表单、状态、ownership、保存前停止和 fresh requery 门禁均保留。 - Chrome 扩展已同步到 `0.5.144`;版本化 ZIP SHA-256 为 `5edf97d35d82cb5e2eb46acd003042522a9cca5ab8f1e8c615c296ad64390b72`,`0.5.143` 已归档。 - 最终验证通过:仓库治理 9/9、TypeScript check、控制面 90/90、legacy 230/230、build、lifecycle 51/51、扩展/解析语法、ZIP/源码逐文件核对和 diff 检查。 - 未重试或创建任务、写入 ERP、重载扩展、重启 8786、部署或外发;运行态启用及真实 ERP 新任务验证仍需用户另行明确授权。 ### 当前任务错误记录 | 错误 | 尝试 | 处理 | |---|---:|---| | 发布复核时 `findings.md` 为 37,139 字节,超过 32 KiB 治理上限 | 1 | 其他 8/9 仓库门禁均通过;先完整冻结到当日项目历史,再语义压缩活动 findings 后重跑,不直接删除历史 | | lifecycle 发布复核有 3 个静态断言仍匹配 `0.5.143` | 1 | 行为测试及其余 50/51 通过;同步这 3 个断言到 `0.5.144` 后完整重跑 lifecycle,不改产品逻辑 | | 四套全量命令并行时 AgentBus listener 测试在固定等待内只收到 1/2 条消息,失败后遗留句柄使控制面进程 110 秒未退出 | 1 | 其他控制面 89 项、check、legacy 230/230、build 均通过;受控中止该测试进程,改为无竞争地单独重跑完整控制面套件,若复现再检查产品代码 | ## 最近完成:取消订单精确原生页面跳转失败修复 - **目标:** 根据用户提供的失败日志,定位并修复 `order_cancel` 在 `lifecycle_route_preparation` 阶段因 `lifecycle_exact_edit_form_not_ready` 被阻断的问题,同时保持精确引用、保存前停止和不自动重试门禁。 - **任务解释:** 附件只有运行日志、没有单独的自然语言指令;本轮按“诊断并修复该失败”继续。若证据表明不是代码缺陷,则只形成诊断和安全处置,不放宽门禁。 - **范围:** 取消/恢复生命周期的 Chrome ERP 路由准备、mapping、稳定夹具、扩展版本与发布物;不改变 AI 解析结果、operation Schema 或业务输入契约。 - **安全边界:** 不重试现有任务,不创建/确认/派发任务,不执行 ERP 写入或点击,不读取 `.env`,不重载扩展、不重启、不部署、不外发。 ### 阶段 - [x] 读取 README、活动 planning 文件、仓库状态、业务适配登记表和用户日志;保留全部既有未提交改动。 - [x] 确认 AI 解析与 operation 契约已成功,故障发生在插件唯一解析目标后、ERP 写入前的原生页面准备阶段。 - [x] 追踪 `order_cancel` 的路由准备实现、页面判定、超时策略、mapping 与现有测试,确定直接原因和受影响范围。 - [x] 实施最小安全修复并补充定向回归;扩展已递增至 `0.5.143`,平台最低版本、mapping、ZIP 和发布清单已同步。 - [x] 完成项目规定的全量验证、发布物逐文件核对和 diff 检查。 - [x] 收敛 findings/progress/plan,明确未执行的真实 ERP 验证与后续授权事项。 ### 完成结果 - 已修复 resolved 取消操作被一律改走编辑页、以及编辑页身份匹配口径窄于正式 preflight 的两个确定性问题;精确引用、唯一状态、页面完整性、保存前停止和失败关闭门禁均保留。 - Chrome 扩展已同步到 `0.5.143`;当前版本化 ZIP 的 SHA-256 为 `345233202461b4e0cbf2294c4f0559fecfcf74caf3c225a1f1c7e4dda16f29dd`,上一版 `0.5.142` 已归档。 - 项目规定的仓库治理、类型检查、控制面、legacy、构建、扩展语法、发布包逐文件核对和 diff 检查均通过。 - 本轮没有重试原任务、写入 ERP、重载扩展、重启 8786、部署或外发;运行态启用和真实 ERP 新任务验证仍需用户另行明确授权。 ### 固定决策 - 不绕过精确引用、页面身份、原生表单或保存前门禁;页面未准备好时仍失败关闭。 - 日志中的 `awaiting_confirmation` 历史快照附带旧 failure 字段,不把它误判为解析失败;以随后独立执行事件链为准。 - 只有代码和脱敏夹具证据足以证明确定性缺陷时才修改;环境/会话故障不得伪装成成功。 ### 错误记录 | 错误 | 尝试 | 处理 | |---|---:|---| | session catch-up 首次使用了不存在的组合路径 | 1 | 未触及项目文件;改用 `/Users/inmanx/.agents/skills/planning-with-files/scripts/session-catchup.py` 后成功且无未同步上下文 | | `apply_patch` 不接受无 hunk 的纯移动操作 | 1 | 未修改文件;使用精确机械复制冻结完整旧计划,再由 `apply_patch` 重建压缩后的活动计划 | | 单个 patch 不能同时删除并新增同一路径 | 1 | 删除已在校验阶段被拒绝且未修改;随后拆成两个连续 `apply_patch` 调用完成活动计划重建 | | 搜索测试时使用了不存在的 `*.test.*` zsh glob | 1 | 未修改文件;后续改用 `rg` 的目录与 `--glob` 过滤,不再让 shell 展开可空 glob | | 首次打包 ZIP 的相对输出路径多退了一层 | 1 | 未创建输出文件;改用明确的项目绝对路径后成功生成 `0.5.143` ZIP | | 首轮控制面测试仍断言旧 `app.js` cache key | 1 | 89/90 通过,失败仅为静态资源版本断言;同步到新 cache key 后重跑完整控制面套件 | ## 最近已完成任务 - **修改类无年份日期统一归一化:** 三类订单修改与酒店安排变更的 `MM-DD` 按任务日取下一次发生日;Prompt `v1.6`、程序解析器 `v1.0.1`、五个 Skill `0.5.120` 已同步,完整门禁通过,8786 已在用户授权后重启生效。 - **散拼母团无子单的酒店安排提示:** 扩展 `0.5.142` 已把三项页面证据成立的技术错误转换为先新增散拼子单提示,不放宽提交门禁;全量门禁通过。 - **插件通用操作计时:** `ltjt-operation-timing-v1` 覆盖共用状态机与页面动作,控制面和操作台仅接收白名单耗时摘要;扩展 `0.5.141` 的历史实现与门禁已完成。 - **任务状态栏整栏滚动:** 右侧详情栏使用整栏纵向滚动,详情和生命周期保持自然高度;页面契约与全量门禁通过。 - **18 项确定性解析与即时晋级:** 18 route、fail-closed compiler、共用 validator、四模式编排、迁移 013、任务快照与操作台已完成;Shadow 可并行、Auto 同时最多一个,当前模式未因代码完成而自动切换。 - **AI 可替代性复评:** 固定 18 模板的正常路径可由本地 compiler 替代 AI;自由表达兼容、历史输入漂移、字段级 shadow 与关键 false-pass=0 仍是下线 AI 的门槛。 - **ERP 链接异常恢复:** 扩展历史版本已实现仅在空闲、allowlisted 标签页上的受控刷新与只读复测,不新开标签、不自动重交任务。 ## 历史规划与持续边界 - 本次压缩前的完整计划已冻结到 [2026-08-26 归档快照](archive/project-history/2026-08-26/task_plan-pre-compression-lifecycle-route-preparation.md);更早完整上下文见 `archive/project-history/`,归档只供追溯,不定义当前规则。 - 当前发布版本、文件名和 SHA-256 只以 [发布清单](dist/release-manifest.json) 为准。 - 保留工作区既有未提交改动;真实 ERP 写入、任务重试、扩展重载、部署、重启和外部发送仍需用户另行明确授权。