完善借款、编号、付款与预算并发及验收(09-06-release-gate-integrity)

汇总已落盘的借款本金与还款、兼容历史编号的周期化编号、付款责任与回单核验、报销进度和排序、PWA/采购事务、错误原因与日期校验及ERP退役。
统一共享预算池锁序和锁后判断,恢复差旅原预算选择,补原因码固定夹具及反向完整性检查。
纳入配套迁移、测试、受管QA、分层验收合同、规约及任务记录;原始证据留在ignored artifacts。

关联任务:09-17-company-loan-principal-repayment、09-17-erp-exclusive-retirement、09-18-reimbursement-periodic-numbering、09-08-reimbursement-payment-closeout、09-18-local-concurrency-product-fixes、09-19-budget-pool-concurrency、09-05-error-explainability-payment-readiness。
预算补审由Claude定向验证2文件928项通过,原4446/28及r6结果仍仅对应各自历史输入;本轮未重跑测试。
完整新候选门禁、R1真实入口接入与12项公网义务仍开放。生产编号未启用、差旅仍冻结;不推送、不部署,不宣称发布资格。
这个提交包含在:
2026-09-19 13:11:04 +08:00
父节点 729d90576f
当前提交 1f8d5b658a
共修改 367 个文件,包含 21079 行新增和 12287 行删除
@@ -1,5 +1,180 @@
## 2026-09-19 r5-fixed-r1登录复用边界
四完整文件31项30通过/1失败,采购整链、R75及视觉25项全部通过;付款在经理复核登录后按已有redirect参数返回付款页,而共享login仍应验portal。最小修正仅允许显式reuseLoginPage且当前为无search/hash的规范/login时省略goto;带redirect的登录页必须走原goto('/login')清除返回目标。保留真实表单和portal/profile断言、全部付款下游及300秒;不修改认证产品或接受任意登录落点。原失败保留,类型检查后相同四完整文件复验,再从static完整候选。
## 2026-09-19 G20 r5三项续修(原预算/并发/断言)
g20-full-r5历时5916.547秒;static/后端4428+1原条件跳过/8组启用服务回归均通过。浏览器372=367通过、采购保存失败1、视觉admin与付款链超时2、视觉手机后继未执行2,零重试。环境/source/repository/owner清理PASS。R75整文件与新旧BX/PB消费者通过,不据局部绿关闭N5/G20。
1. 采购PATCH保存P2028归09-18-local-concurrency-product-fixes P10,锁/校验/写入审计/5000ms不变,只移出非判定用途的响应关系读取。
2. 视觉admin14/15完成,最后audit页耗尽180秒;管理员页累计导航56.768s、到达20.062s、quiet12.177s、截图95.145s、metrics2.838s(含超时附近结束的阶段日志,不当作独占CPU计量)。保留7组、33页、每组180秒、全部PNG/原断言/原workers/零重试;visibleRouteLink用Playwright同语义:visible+first一次查询;目标文档HTTP读取和已确定的真实链接点击并行并全部await;准确URL仍先验,之后独立到达断言Promise.allSettled并按原顺序抛首个失败,确保原5条正反例不弱化。不跳过字体/动画,不降画质,不用DOM伪导航。
3. 付款链在299556ms才到执行:已完成提交、双审批、组批、独立复核、回单人工核验。原300秒保持;保留所有角色转换的真实表单登录/登出和全部业务断言,只消除财务审批结束后立即以同一财务身份登出再登录。共享login默认行为不改,允许本helper显式复用登出后已到达的/login页,仍逐项填表、提交、验证portal和身份入口。审批进度及最终只读DOM检查可并行全部await;3种审计只读查询并行仍逐项校验原字段。保留财务原地进度不reload、不得制单人复核/无回单执行、付款/核销/AP/归档与ERP拒绝全部断言。
先专用类型/原18条视觉守卫与原四完整文件procurement-flow、project-wide-visual、R75、payment-flow同配置定向,再冻结完整输入从static新候选。当前只是最小续修设计,未改预算、分母分类或验收范围,属于已批准在用修复/重复前置优化;不需要再次确认同一授权。
浏览器保护例外:旧GStreamer自动生成registry字节变化,旧baseline保留且不得改写为PASS;改写文件已复制留证,其余旧12137文件/HEAD/index不变。后续运行用本轮物理独占浏览器副本(非硬链接),不安装/下载。原字节恢复仅在找到校验匹配源时执行,不能猜造恢复。
## 2026-09-18 真实会话前置与冻结入口修正
直连正例必须等待目标路径和真实页面标题,排除错误页/登录后才导航下一文档。仅not.toHaveURL(/403/)会在认证bootstrap之前通过,并可能中断refresh;本轮观测旧有REFRESH_REUSE_DETECTED,补就绪后未再出现且付款整链通过。差旅沿已批准冻结合同改验拒绝,不能放行产品来满足原假阳性测试。
全页面视觉只审页面矩阵,匿名/login继续UI观测;已有createAuthenticatedBrowserStorageState走正式服务端登录,为每个独立角色+视口单独建立真实session,状态仅在内存传递给该context。目标页仍需浏览器真实bootstrap及全部原到达/HTTP/权限/视觉检查,不在两个context复制同一refresh凭证,不伪造令牌、mock认证、删页面或增预算。这样减少矩阵外重复portal登录装载,非修改认证行为。
## 2026-09-18 浏览器四未过最小修正
编号本地服务验收完成后回本task承接浏览器。DG7宽度矩阵是同一角色、同一不变合成数据的视口验收,复用一次登录但每个宽度仍从首页执行全部断言和截图;不同角色不共享。R3相同角色的拒绝、允许及退役404可在该角色独立context内顺序验证,保持五角色和所有路径,减少重复登录。目标文档HTTP探测需Accept: text/html,与浏览器文档请求一致;不能删除探测或放宽404。付款链只记录受控code/status及合成审计事件种类以确定AUTH_004原因,token、cookie、原始payload不进入输出;无证据不修改认证产品或补自动重登。
## G20 生命周期测试启动开销修正(2026-09-18)
原36命令完整链交错对照:默认Node为2.295–2.520秒,single-threaded为2.998–3.572秒,trace完全相同;其他启动参数同样无收益,均不采用。每次冷启动约63ms,重复启动是已测量开销,但不声称完整运行的宿主调度波动已消失。
最小改为每例一个仅本地Unix socket假命令服务,运行在现有Vitest进程;轻量Python标准库shim传递原argv/按需stdin/退出码,复用原CJS解析器、Compose依赖分析和命令语义。临时目录及socket独占,无TCP监听,private PATH/白名单与未知命令97保留。timeout记录后由shim直接exec原GNU timeout,hung inspect等待随socket断开取消;不得在服务端阻塞后续deadline。每例结束先关闭服务和连接,再删除自己的临时目录。生产部署源码、测试workers/预算/重试和全部断言不变。原完整链、独立四类源码变异、真实deadline、unknown command与部署安全回归必须全过,再验一次完整门禁。
## G20 WebKit 原生在线环境修正(2026-09-18)
实测官方 WebKit 26.0 在原无默认路由命名空间中 navigator.onLine=false;setOffline(false)也不改变原生值。只含本轮同命名空间veth对的 default dev qaonline scope link 则原生true,主动setOffline(true)后false。此为Linux WebKit网络发现差异,不修改navigator、不改业务离线保护,不增加公网/生产连接。
最小环境实现:仍只允许lo/qaonline/qapeer;新增恰好一条无gateway/via/multipath的链路默认路由,仅指向本轮qaonline。加强核验veth类型、两个ifindex独立且link或link_index互为对端且无跨namespace对端,拒绝其他接口/外部网关/IPv6默认路由。唯一链路两端都在独占namespace,无法通向宿主或公网。原“禁止全部默认路由”实现细节替换为“只允许已证明封闭内部对端的链路默认路由”;隔离边界和无外联要求保持。
原生空白页探针同时检查Chromium/WebKit及浏览器进程namespace;任一离线在昂贵业务验收前失败。增加拓扑反例与独占namespace合成不可达地址检查;不连接真实公网。原生在线证据和测试context中的主动离线仿真分别记录。旧结果绑定旧策略,不改写。
## G20 共享回执最小落地设计(本地机制,2026-09-18)
复用原 stage_static / stage_full_local,新增 run-release-gate.sh verify-candidate 无部署分支,现有 ci-release/all/deploy/生产 bootstrap 不接新强制消费(R1启用另批)。共享模块 release-gate-result.mjs 负责当前源码/策略/工具链、独占记录、阶段开始结束与失败、结果引用及重新推导资格;run-release-gate.sh 的两阶段仍是唯一执行定义。
1. 运行目录必须为空且在 artifacts/release-gate 内,先持久 INCOMPLETE;stage记录固定 static/full-local 顺序、开始/结束/退出;full-local内部固定inputs/database/prisma/server-unit/typecheck/client-build/server-start/accounts/workflow-actions/server-regressions/browser-server/browser阶段通过同一记录器写 full-local-stages.json。失败退出/中断保留未完成,不将结束收集错误转为通过。
2. sourceSnapshot 复用全仓已跟踪/index及产品/测试/规约摘要,补完整未跟踪输入与QA/部署/包锁/config工具链策略摘要;阶段前后、最终验证当前快照一致。dirty允许本地诊断结果,但deploymentEligible=false。来源不接受只比commit而忽略dirty内容。
3. 成功判定依赖真实 static/full-local阶段结束及原退出,full-local环境result(mode full-local、当前policy、原生/guest namespace事实、cleanups、sourceBeforeAfter),G19完整发现重算与全部本地逐项执行、预先witness/acceptance归属。复用G19验证,不从候选回执自报expected。原live/frozen12+2按G19处理,公网仍NOT_RUN_LOCAL/交付INCOMPLETE。
4. 记录只保留相对路径、hash、工具版本、筛选参数与逐项安全身份/状态;不复制业务原文或敏感env。读取仅本轮已验证独占文件;symlink/越界/截断/旧schema拒绝,引用绑定实际摘要。报告仍不是防伪签名,首次部署须独立重跑。
5. 离线verify以同候选clean状态及完整阶段/环境/覆盖重新推导发布前资格;普通dirty本地运行的验证可证明localChecksPassed,但以PARTIAL/非零结束且不发布。不创建绕过开关,不改local-candidate的严格判定。INCOMPLETE/FAIL/PARTIAL/PASS明确区分。
6. project-wide既有两个skip开关前置验证精确值、非空reason/operator/approvalRef;获批诊断记PARTIAL/退出2/未跑阶段,普通verify-candidate拒绝。批准引用结构不替代真实授权。只在fake工具验证project-wide,不运行其live readiness。
7. 验证:缺/旧/错profile、阶段缺失/跳过/错误顺序、工具/输入变化、dirty、missing/unknown/duplicate/retry/xfail、原生/guest/清理漂移、伪通过均拒绝;源码变异移除验证/放宽阶段或skip必须使反例变红。执行既有部署生命周期/安全回归,真实部署命令计数0。
本地完整运行不据已有定向结果拼接;若为记录器引入源码变化,最终完整验证必须绑定最终代码。WebKit v2105是当前Debian11可用的官方冻结运行时,只证明该版本,不能宣称最新版Safari/真机企微兼容。
## G18 验证后归属
票据URL修复及当前OCR/R108/33路由矩阵已验;PWA原生控制器生命周期和采购最小写事务详见09-18-local-concurrency-product-fixes的PRD/design。原四文件并发4/4、完整认证/OCR18/18通过,不能推成旧full-r2全绿。12 live/2 frozen分层已批准并按G19实现;WebKit、R1、独立与真实业务/发布保持原边界。证据只归相应输入,诊断预载与无预载验证分列。
当前受管合成 runner 为既有底层回归设置 TRAVEL_SYNC_ENABLED=true;因此 G19 不把“所有入站同步关闭”冒称本地实测冻结。新增整例验证现行员工/财务权限拒绝及付款 blocker,不改变该合成配置。关闭开关的 409 属既有路由单测合同,与实际环境分列。
### G19 实现细节
保留 6 个旧 spec 原字节,新增 travel-freeze-protection.spec.ts 两项。受控 JSON 清单按 file/id/title/project/repeat 标识 14 个保留旧身份,并核源码 SHA;新同文件用例没有登记即失败。其他发现默认为本地必须执行。完整发现的文件集合仍来自源码扫描,执行集合从核验结果导出精确文件正则,不使用调用者 grep/清单;当前例外文件中不能混入本地用例而被整文件漏掉。普通 runner 执行后检查每项结果,失败退出同时保留结果。定向模式保持无资格。
本地覆盖计划记录 sourceSnapshot 的 commit/digest 与合同摘要;结束核输入不变。公网回执验证以原始 Playwright 逐项结果和 live profile/同候选绑定为条件,预先不得标 PASS;验收工具无外联能力,不接入部署入口。这里只解决分层覆盖,R1 的完整阶段、环境、干净候选与发布入口强制消费仍单列。
## 2026-09-18 G19 分层验收(用户已明确批准,实施中)
用户批准:12 条公网用例作为同一候选发布后必跑项;2 条冻结差旅保留原源码与历史结果,改验冻结保护。本地通过不代表公网/完整交付通过,不授权部署、恢复差旅或真实操作。此增量替代 R2 的“排除集合为空”,不重写旧 full-r2 失败。
- [x] G19a:全体非 manual 用例继续真实发现,固定 12 live+2 frozen 的用例身份、原因、责任角色、必跑入口和原源码摘要;未指派实际负责人明确待定。
- [x] G19b:由完整发现与受控合同生成本地执行文件集合,登记用例级覆盖;拒绝遗漏、身份漂移、未知/重复、跳过、重试与 expected-failure。禁止调用者筛选普通本地集合。
- [x] G19c:新增两条冻结保护整例,验证现行合成角色入口/正式 API 拒绝、共享付款差旅 blocker 与入站导入权限拒绝;不改权限,不执行旧差旅链。
- [x] G19d:公网义务在本地保持 NOT_RUN_LOCAL,绑定候选提交与源码摘要;公网用例结果只能由同候选、live profile、完整逐项通过报告兑现。验收回执不自授部署或发布资格。
- [x] G19e:增加漏例/新增未知归属/漂移/伪通过/候选不匹配/真实 runner 选择等反例,运行本地冻结保护,更新 spec/协调 task 与新候选;独立仍 PENDING。
WebKit 下载问题仍待答复,完整普通门禁未通过;R1 机制后续与真实强制消费启用分开,不启用发布入口。所有旧差异、失败材料与冻结包保持。
## G18 OCR 实测暴露的最小产品修复(2026-09-18)
g18-corrected-visual-r1:R108 整例通过(8 个移动观测、无发现),OCR 缺字段识别及横幅已通过,但人工修正按钮在180秒内反复被卸载;执行记录有56次 DOM detached,终态回到列表。源码两组 effect 分别 local state→URL、URL→local state,并同时依赖双方;上传选中票据时会交叉回写。此为在用票据详情状态同步缺陷,不是缺权限或OCR规则错误。
在已批准 G18 现行修正流程验收内,最小修复只涉及 InvoicePoolPage:从 URL 读取 detailInvoiceId,所有选择/返回动作只更新 URL 且保留其他查询参数,删除双向 effect 与重复返回写入。保留 replace 导航语义、全部查询/编辑/权限合同,不调整OCR、状态机或产品视觉。原 E2E 红例保留,修后必须不刷新/force-click 完成缺字段拒绝→补齐可用,增加URL选中与返回列表再进入验证;运行前端typecheck/build及受影响浏览器检查。相同模式只定位记录,不顺手改其他页面。
视觉首轮目标到达还需纠正:portal使用既有portal-work-summary锚点,动态报销使用各自workspace;其余已知页面标题不降级。4xx错误页模拟响应显式UTF-8,确保反例精确击中原到达断言;增加同源API403/404观测为失败发现,避免仅页头可见冒充有效页面。
## G18 最小落地合同(2026-09-18)
沿 implement 顶部 G18a–e 执行。OCR 能力必须由启动同一服务的 runner 派生并用行为验证,外部标志不得伪造;R108 使用在用报销审批,初始化失败不转 skip;视觉矩阵明确列出真实系统路由,检查授权角色与目标到达,错误页不算页面覆盖。保留原并发、预算、零重试和完整发现。只更新测试/QA/现有矩阵,不修改业务权限或视觉样式;可靠性先取得可归属观测再修复。外部与独立复核边界不变。
## G17 落地与 G18 后续边界(2026-09-18 最新入口)
G16 前置已实施并执行普通完整门禁;下方“以上未执行”属于当时计划。本轮 G17 按 implement 完成当前测试合同修复和限定实测:合同列表链接反例、当前删除/明确关联、mock API/SW 边界、通知非差旅夹具、采购保存/预检/提交、管理范围查询、重复付款整例归并。原 full-r2 失败和后续定向成功分别绑定来源;普通全量资格未取得。
主会话反例不是独立审阅。PWA/资产/采购/视觉定向通过不能证明完整并发失败的唯一根因;原事务、审计、预算、并发和重试合同保持。项目视觉矩阵中的 `/system/*` 当前为字面地址,报告只支持实际 20 路由项;进一步展开/授权到达检查归 G18,不能拿该结果宣称全部系统页覆盖。完整发现的 wrapper 末尾临时 SHA 采集失败按告警原样保留,枚举及覆盖校验有效,但不是完整门禁回执。
G18 的 OCR 能力绑定、R108 当前移动夹具/输出隔离、矩阵真路由与角色到达,以及并发时序诊断先以最小合同细化;不恢复冻结业务或制定新产品视觉方案。WebKit 下载申请仍待答复,原“不联网安装”边界继续;12 live、冻结差旅、R1 启用和所有外部事实/操作分别处理。精确退出条件及六组余项见 implement 顶部。
## G16 后续完整门禁准备(2026-09-18 已批准执行,进度见 implement)
在本轮定向结果冻结后,先补WebKit运行环境;将已验证的单所有者合成改密前置接入普通full-local须保持其fail-fast、全部非manual发现、零重试、PWA输入和完整回执,不把retained-local改名作为完整门禁。四条当前排除观测须逐项登记旧流程退役或冻结处置及替代合同;冻结差旅不能当废弃代码擅删。原服务端场景8与经理缺口先查现行合同和可达性再确定最小修复,不默认放宽组织或审批规则。原AC7补同合成状态的管理身份正向对照与独立反例完整门禁。以上未执行,不据定向通过启用R1或取得发布资格。
G16 首次完整运行在旧直接付款成功预期处失败。最小补充为共享受管的 retained-server-local 固定套件选择、普通回归前 guest probe、forbid-only,以及直接付款按实际 batch-required 合同验拒绝与零写入;完整资格不接受该定向结果。具体失败和分支边界见 implement 顶部。
独立审阅与外部事实按本轮independent-and-external-readiness.json办理:当前QA和上批产品分别审阅;指定真实批次身份/企微结果仅在另批生产只读范围核;真实银行接受性另验;K1只有非秘密角色/渠道陈述时记REPORTED,K2须新的源/制品/字段/资源/注入清理绑定与独立批准。旧恢复不再运行。
real-cases-r6 两条付款主链与进度3/3通过,角色入口矩阵1失败:当前前后端hasFinanceRole均保留admin兼容入口。最后只将admin的AP/付款入口改为可见,补正式API批次复核403(显式经理/负责人角色守卫),继续保留admin非业务审批人和管理聚合审计入口验收。非本轮新权限决定。
## G13 第五轮与最终验收补件(2026-09-18)
real-cases-r5 为1通过/4失败,手机交互整例通过。财务审批实际同页已显示“通过”,测试误定位申请详情标识;应定位reimbursement-approval-processing-progress并检查completed/处理人/通过/无处理中。管理员审计入口位于管理聚合页;管理员正向入口与经理/财务负向权限必须分别检查。旧“非审批环节”视觉标签已无,改验正式workflow恰有2步与3个独立付款阶段,不删业务区分。
共享付款流程对照原例补回付款后字段只读、回单不可上传/作废、可下载、正式paid状态和付款/上传审计元数据。两条主链受共享辅助文件影响均需重验。r4在浏览器前为纠正文案主动中止:内层dropdb因代理退出失败,外层owner核验后容器/临时目录均移除,环境按INVALID/中断保留,无业务结果。
## G13 第三轮实测纠正(2026-09-18)
real-cases-r3 完整13条为8通过/5失败,零重试/跳过,环境清理和输入完整性PASS;PWA真实A/B同profile升级已通过。继续只补5个实际失败及共享辅助流程触达项。
正式小额报销由approval_rules的manager→finance动态投影,不采用seed日志中的通用workflow_definition一步CEO链。测试读取真实task/步骤ID,经理和财务依次UI审批,并检查财务通过后的同页进度,不改产品或seed。以下较早“一步审批”描述是已纠正的测试假设。
经理只有组织只读管理项,无主数据/银行账户;财务有组织、主数据、银行账户。两者管理写权限拒绝保留。手机发票添加成功后页面保留成功消息,须点“返回报销单”;不要求自动关闭。预览使用有效合成PDF,验证UI签名请求、弹窗和正式签名文件200/inline/PDF/原字节一致;headless原生PDF渲染不据about:blank判断通过或失败,也不宣称已验原生阅读器。
## G13 第二轮停点与定向补验(2026-09-18)
real-cases-r2 被信号中断,未生成完整 Playwright JSON;环境清理和源码/仓库完整性 PASS,不从过程日志补造用例 PASS。下一轮仍覆盖其全部 13 条选择,不把日志中的局部通过抵扣完整结果。
- PC/手机 OCR 完成后仅默认勾选,测试必须选择唯一既有合成明细,再明确点击添加;继续检查票据关联和明细数量,不能为旧“自动添加”标题恢复旧产品行为。
- 管理聚合入口按当前子权限展示;经理/财务验证组织、主数据等只读入口,并验证账号、审批规则、流程定义、审计不可见,保留后端拒绝检查。
- 项目 Portal 使用应用 Asia/Shanghai 日历日;合成跟进日期对齐该口径,增加正式保存请求和首页汇总检查,不删除跟进卡验收。
- 手机请假使用现行完整企微说明,继续断言日常 OA 表单不存在。
两条保留报销付款主链路复用同一测试辅助流程,集中维护现行详情、一步审批和回单核销;各自保留原测试身份,主链路额外验证票据预览。合成企业/员工银行信息由正式API写入当前独占库,固定公开虚构账号,仅限受管loopback;不得读取真实资料。回单使用有效合成PDF及正式人工更正→独立复核,不注入paid状态、不关闭核验。
# G13/G15 首轮真实认证重验后的测试对齐方案
在 real-cases-r1 完成并核 sourceSnapshot 之前不修改输入。仅改已证实漂移的在用测试/共享页面对象,不改产品、种子审批定义或权限。
1. 公告:h1+exact 避免与真实创建的公告标题歧义;保持创建、团队状态和角色首页断言。
2. 权限直连:退役 ERP 前端应显示404,后端各角色均404,不能继续验证ERP管理成功;经理付款读取/复核入口按当前权限保留,AP列表/台账/导出拒绝仍检查。移动审批退回按钮按当前标识断言无权角色不可见。
3. 报销页面对象:使用当前独占详情workspace、明细/票据证据与操作面板,不恢复旧overview/summary组件。上传后验证明确票据ID出现在证据区及关联明细;草稿明细由测试显式填写,不能依赖已替代的空单自动建明细。
4. 主链路:沿合成seed现有总经理一步审批、财务制单、非制单人独立复核、回单验证与核销;不更改seed为旧经理/财务链。保留发票预览、关联、付款状态、回单/付款审计、AP与票据归档,移除ERP成功分支与ERP开关。
5. 其余首轮失败按实际停点区分定位漂移、无效历史合同、环境不足和产品问题;没有证据不提前改预期。原58身份和失败事实不可回写;当前替代验收逐条记录,不能以删断言/skip减少分母。
只重跑受影响失败用例和必要依赖;已经通过且输入未变的结果复用。WebKit缺失仍单列未验证;普通full-local、R1与独立review不据此关闭。
PWA首轮停在serviceWorker.ready:进一步核实际构建常量,若受管NODE_ENV=test让Vite输出DEV=true,则仅在构建子进程固定production,并保留应用服务test模式。必须以双构建真实SW升级重新验证,不注入手动注册或放宽超时。
# 部署门禁完整性设计草案
### G12执行细化:一次性合成账号与限定受管重验
复用`full-local-environment`的namespace、无外部路由、独占PG及owner清理,给`run-web-gates.sh`增加明确的`retained-local`诊断模式。必须显式提供本地spec清单;报告标注focused、normalReleaseEligible=false,不改变普通full-local的无筛选分母。限定模式不读取共享真实环境配置、不联网安装,不运行旧恢复。
本轮空库seed为8个现有合成角色注入运行内随机初始密码,仍must_change_password=true;由单一预置进程通过正式登录→验证改密要求→change-password→旧密码拒绝→新密码登录完成初始化。新密码沿当前用例已有公开合成fixture值,必须不同于本轮初始值;不是把已修改账号回改种子初始密码,也不通过SQL清标记。运行后销毁独占库,不把会话凭据写入证据。所有业务测试启动前初始化一次,不在并发login helper里写密码。
首次浏览器登录/改密页面另用合成用例验证;管理入口/业务前置差异逐项登记。页面mock与真实认证分开出具回执,历史观测身份映射保持。两个旧截图输出改为运行独占目录,旧冻结截图不动。
## 2026-09-17 历史观测到当前合同的分类方法
### 下一批环境前置与验收方案
58条分类后,本轮重验15条原观测;4条旧日常OA请假/冻结差旅不修,39条保留项尚未整例重验。39条按依赖排程:25登录前置、10页面/fixture、1合同详情只读、1已修AP整例、1WebKit报销离线、1PWA升级。是观测处置数,不是独立缺陷或开发工作量。
1. 登录合成生命周期:先核受管一次性DB的seed→首次登录→强制改密→再登录合同,保留must_change_password=true与生产禁止seed的守卫。设计运行独占的已改密合成账号集,集中向测试提供凭据;不得并发套件修改同一账号、回改初始密码、直接SQL清除改密标记或给业务测试注入生产会话。只在零外联、独占合成DB/服务来源核验通过后运行,失败时保留/change-password或/login的原因,不放宽/portal断言掩盖前置。
2. 页面/fixture:当前待重验观测为6、14–16、22–24、38–39、51。先核witness合同与当前页面层级、付款默认视图、审批详情动作和固定安全提示;混合旧视觉样本不得恢复待精简模块或旧布局。每个保留业务断言先对应现合同,再用合成输入恢复;截图必须另根,不覆盖旧归档。涉及新视觉判断时遵照现行设计技能边界,不擅自改产品样式。
3. 合同只读阶段B:在保留当前权限前提下从列表进入详情,继续证明新增/编辑/续约/归档不可用,并以隔离反例证明断言能发现泄露;不因旧“更多”定位移除后两项断言。原主合同阶段B完整反例门禁仍未完成。
4. AP整例:已有09-07发布与路由/导出73项证据仅支持特定修复。登录前置就绪后原权限直连整例重验,经理仅付款复核职责仍拒绝AP全量读取,不把200作为新预期。
5. WebKit与PWA:本地Chromium可用、WebKit执行文件缺失;不联网安装或用Chromium模拟通过代替WebKit结果。PWA保留真实生产构建与旧新版本/同profile/SW升级验收,当前只读静态mock服务器明确block SW,不能用其PASS抵扣PWA。先补环境合同,独立记录升级与清理结果。
本节为已批准后续工作的细化计划,尚未实施上述账号生命周期/未运行项;R1、完整发布资格和独立结论不随本地子集通过解禁。真实环境/凭据、生产/ARM、恢复、提交部署及借款保持原边界。
只读接回主checkout的managed-diagnostic-20260907-04/results/browser-failure-inventory.json及同次本地合成Playwright报告,核54失败/4超时、58条身份与原SHA。仅输出相对源码位置、失败层次、当前合同依据、在用性、最小下一步;不复制原始DOM/payload或完整机器路径,不读生产日志。逐例检查当前源码,前置失败不能证明后续业务断言有错;源码已有修复不能把旧结果直接改PASS。
R12当前断言要求未知VALID_001回显原message,与09-05安全错误合同冲突。保留共享resolver与禁止普通页面直接拼内部码/原异常的检查,将该例改为未知原因的固定安全兜底、合法requestId、已注册导入原因提示及未知原因不回显。无新增UI或权限行为;直接运行Playwright中的纯源码/函数用例,不启动浏览器、服务或DB。先保留当前失败,再验修后结果,输出目录独立、retries=0,不覆盖旧报告。
其他分组须先落实施边界,不能因有旧测试就恢复企微主办/待精简的OA业务,不能为变绿删掉权限或付款断言;涉及真实DB流程或环境前提的项先区分必要环境与业务证据,R1和公网发布资格保持未完成。
## 11. 归档截图保护与全仓回执增量(已批准)
- 先以独立副本和 SHA 保全四张本次运行截图,再仅恢复这四个 worktree 文件;保留全部 14 个已跟踪历史证据及其原登记摘要,不改 index。
@@ -265,3 +440,27 @@ Correct:当前候选策略定义环境 → 受管 runner 创建并实测 →
按 implement.md 的追加阶段,用 status_matches 集中四处状态判断;grep 直接读取 here-string,不使用 printf 生产者或提前退出模式。退出 0/1 分别代表匹配/不匹配,其余退出码立即停止。保留日志、SQL 查询、候选 allowlist、迁移和回滚判定顺序。
回归直接提取现有源码状态解析与未知迁移拒绝分支;注入真实观察到的 producer=141,并恢复旧谓词做负向变异。长输出与四处 matcher 工具错误单列;原多子进程远端 fixture 使用有界 15 秒测试预算,非生产超时修改。产品差异单独保存在 preflight-fix 工作树;与 seed 的组合验证只用一次性本地测试副本,不能称为已集成或新发布候选。
## 2026-09-18 G20 第四轮终态与续修
g20-full-r4 FAIL,5768.636秒;static239.024秒PASS,内部11阶段PASS;后端4367通过/1原条件跳过,8组启用服务回归通过/7组原关闭不计通过;浏览器351项=342通过/5失败/3超时/1串行后继未执行,零重试。环境、source/repository未变和owner清理PASS。资产及账号创建两处P2028由09-18-local-concurrency-product-fixes接最小修复;当前不是全量通过。
QA续修保持原分母、预算、并发和断言:DG7确认停在登录输入框,改为自动等待既定账号入口;R92导航后回登录,user-onboarding提交改密后失去会话,核路由mock与SW/refresh会话边界;PA6确认第7次角色登录耗尽180秒,同角色PC/移动复用一次独立会话,保留全部角色/入口/管理菜单/API403;全页面180秒只到9/33页,利用真实应用导航减少重复装载,保留25PC+8移动/14系统页、目标文档HTTP、实际URL/标题及全部视觉/错误断言。报销付款整链300秒超时但无精确动作栈,先增加安全阶段诊断和查实际停点,不先猜产品根因或放宽预算。R75后继跳过随原整文件重验,不能当通过。
顺序:产品边界红/绿与相关回归→各在用QA夹具/冗余前置修复→原完整文件定向验证→冻结输入、从static开始新完整候选。定向通过不拼接旧完整结果,主会话检查不抵扣独立PENDING。原失败、322项旧差异及29目录9762旧文件保护不变。
## 2026-09-18 两项阻塞接续:阶段诊断
诊断原33路由180秒用例已走完PC,进入移动报销列表时耗尽预算;阶段合计导航34.355秒、到达29.535秒、安静窗口26.177秒、固定额外等待8.327秒、截图45.074秒。原expect.poll默认间隔使已满足500ms安静窗口的普通页约858—894ms后才继续,其后还固定再等300ms。最小QA调整:安静条件仍是全部本次HTTP请求settled且连续500ms,poll间隔改50/100ms精确采样;删除该条件之后重复的300ms固定等待,截图仍用原Playwright字体/布局就绪与完整截图,不改动画、画面、HTTP/权限/视觉断言或33页/180秒/并发。保留阶段日志检查实际耗时,正式运行无诊断预载。该优化本身不宣称全部负载都能在预算内完成。
用户同意按报销提交→全页面→新完整验收推进。本轮在原全页面auditPage增加安全阶段耗时:导航(含目标文档)、到达、请求安静窗口、原等待、截图、DOM指标,另在navigateForAudit细分链接查找/管理页转场/文档请求/点击。仅记录已脱敏路由、阶段和耗时,不改变任何页面、断言、预算或并发。与P9的原R75整文件在同一受管合成环境诊断一次;产品源码保持原输入。诊断预载仅归本轮ignored artifacts,独占owner/namespace/无外联核验后才启用,之后正式验证不带预载。
## 已批准:全页面巡检按角色与终端分组(2026-09-18 实施)
p9-fixed-r3的三个完整文件11项10通过/1视觉超时,607.746秒;环境/输入/owner清理PASS、零重试、服务端1347响应/0未处理异常。R75四项和付款主链281.132秒均通过;视觉180秒仅完成15页,其导航38.002秒、到达34.353秒、安静窗口16.069秒、截图45.634秒。前轮较少并行工作下走完PC进入移动仍超时,说明已移除的重复等待不足以解决这个把33页面串在单一用例中的累计预算问题;不能把它归为某个产品链接错误。
建议将现有矩阵按既有角色与终端拆为7组(PC匿名/员工/财务/经理/管理员,移动员工/经理),每组仍180秒及原expect预算/零重试,浏览器配置workers不变。共用本文件的合成动态路由准备并单列耗时;每组独立真实会话、不共享refresh令牌,保持原逐页HTTP/准确到达/无403或404/请求安静500ms/截图/DOM视觉与文案检查。没有删页面、降低图像质量、禁用动画或修改产品样式。
全套报告必须校验计划25PC+8移动与实际33条唯一路由/终端/角色完全对应,重复、缺失、未到达、失败或跳过任一组都不能放行;保留现有5条到达正反例。普通门禁重新发现这组用例身份,仍将所有分组作为同一固定候选、同一完整运行的必跑项,不合并历史定向结果。另加本地覆盖漏项/重复/失败反例,防止拆组后局部绿。
用户已明确批准本节分层预算:全部33页按7组、每组180秒,同一完整运行全部必过。该批准覆盖旧累计180秒约束,不改变其他测试预算、workers、零重试或页面断言。
实现约束:7个原生测试放在同一serial组,仅本文件保持原逐页顺序,不改变全局并发;beforeAll一次准备动态路由并独立记录耗时。每组页数分别1/7/1/1/15/7/1,启动时对照矩阵校验;每页完成截图与全部DOM检查后才登记完成。afterEach记录真实测试终态,afterAll校验计划/完成精确集合及全部组passed;失败的后继组保留pending,不由后续到达反例写回PASS。新增纯覆盖正反例随原5条到达测试一起运行。整体门禁重新发现真实身份/分母,不合并历史轮次。