文件
hyb-oa/.trellis/tasks/09-06-release-gate-integrity/implement.md
T

176 KiB
原始文件 Blame 文件历史

2026-09-19 观测补丁定向通过:本地提交,Claude固定三组定位WebKit(当前)

已实核34条输入无漂移。环境文件短TMPDIR补验7/7,原探针文件30项通过、源码未改;独立审查与治理/格式通过。原37项FAIL保留,不说同轮37通过。真实诊断约12.6秒、exit1:Chromium145.0.7632.6在线通过;WebKit26.0在page阶段报browser_process_closed,trace_stop追加同类;拓扑/namespace/清理及源缓存完整性通过。未采集真实父进程退出事件,根因仍UNKNOWN。

  • 接收补验/独立复核与诊断证据,旧失败/marker/缓存保持。
  • 确定三组有界对照方案(见design顶部),不改受测代码/预算/验收要求。
  • 按既有明确授权本地提交已验证的8路径观测修正;SHA/范围以本轮local-commit.json为准,无推送部署。
  • Claude只审新ignored封装器、核输入,运行A/B/C空白页对照;不重复30/7单测、已通过静态检查或完整门禁。
  • 根据各组stderr安全分类/真实退出事件与副本对照结果决定具体根因修复和后续完整候选;不预判已修好。

证据/后续请求:artifacts/qa-governance/r1-enforcement-20260919/native-probe-20260919/webkit-comparison-20260919/。本次主会话仅语法/治理/格式静态检查和本地提交;无测试启动、生产ARM/真实配置密钥备份访问或下载。旧整轮FAIL、registry FAIL、CSV NOT_RUN、docs22提示、12公网义务保持,deploymentEligible=false。

2026-09-19 探针补丁复核通过;修正定向执行的临时路径(当前)

Claude两文件37项36通过/1失败、零跳过;治理/格式与补丁独立复核通过。主会话接收时核8份增量和27条输入零漂移。唯一失败在原IPC用例第80行missing/supervisor.sock应拒绝,非报告所称字段校验循环(实际第77行)。正向与四个错字段校验已通过;原报告与FAIL保留,更正只追加。

长TMPDIR让socket路径超过Linux AF_UNIX长度限制,与missing后缀被截断造成同地址别名相符,尚未运行补充实验。决策只调整执行器:短的独占临时目录不与隐私隔离冲突;不改生产helper/测试断言、不skip、不增加预算。旧WebKit根因继续UNKNOWN,不将本轮IPC线索移作旧根因。

  • 核原始日志并追加接收/行号更正;原证据不改。
  • 写定向续行方案:短TMPDIR只补验full-local-environment.test.mjs一文件;复用原browser-environment-probe.test.mjs已通过且字节未变的结果,不拼成同次37全绿。
  • Claude一文件补验、三份记录的治理/格式检查;全部通过后继续尚未启动的一次双引擎诊断。
  • 接回结果再决定必要根因修复和本地提交,完整门禁不自动重跑。

续行入口:artifacts/qa-governance/r1-enforcement-20260919/native-probe-20260919/short-runtime-20260919/claude-request.md。新诊断wrapper仅换短独占TMPDIR和当前输入清单,旧wrapper/manifest/validation-inputs/报告/缓存/marker全部原样保留;新wrapper共享原诊断marker,不能获得额外一次运行。主会话只做语法/格式检查,不启动测试。deploymentEligible=false。

2026-09-19 最终候选FAIL:先修观测,Claude做最小诊断(当前)

16b9cad9已本地提交且本次运行前后clean。完整尝试2026-09-19T06:33:39Z至06:38:33Z,exit1;static PASS(定向74项/前端构建),full-local环境校验失败,12子阶段未开始。失败回执与接收摘要见artifacts/qa-governance/r1-enforcement-20260919/native-probe-20260919/failure-reception.json。WebKit观测抛错已证实,实际抛错阶段/根因未知;现有trace无WebKit错误。历史5轮通过不证明当前副本必为原因。

  • 接收并核对原报告/回执/native JSON/trace;不改旧失败、marker、浏览器缓存。
  • 在现有task记录限定方案,维持发布与真实数据边界。
  • 修native观测与失败清理;增加假引擎故障/隐私/回执拒绝测试。
  • 主会话仅语法/差异自查通过,冻结本批增量和Claude执行说明。
  • Claude执行两份定向Node测试、治理检查和一次隔离双引擎空白页诊断并只读复核。
  • 接回实际失败阶段及安全分类后决定必要根因修复;测试通过前不提交本批、不启动完整门禁。

交接:artifacts/qa-governance/r1-enforcement-20260919/native-probe-20260919/claude-request.md。诊断有独占HOME/XDG/TMPDIR,与旧门禁未传HOME不完全相同;即使通过也只表明该隔离条件下可启动,不能据此宣布旧故障已定位。主会话未执行测试/浏览器,没有第二轮完整门禁。

保留原F1时序超时、WebKit registry baseline FAIL、CSV NOT_RUN、docs22提示和12公网义务。deploymentEligible=false;无推送部署/生产ARM/真实配置密钥备份/旧恢复/编号启用/差旅解冻。用户分工不变:Codex决策与实施,Claude测试。

2026-09-19 R1定向验收完成,保存本地候选后进入一次完整门禁(最新)

Claude单次诊断52/52通过、exit0、57.515秒,原三例2.027/1.837/1.940秒,5秒预算不变;27条执行输入前后零漂移。主会话实算与原125项及另两份46项所依赖代码一致,六项独立代码review均PASS。F1原“三次require导致这52项超时”的归因被独立更正;原exit1/3次超时保留,实际成因仍未确定,不宣称已根治或整组98曾一次全绿。

决策:不修改无证据的生产/测试逻辑,不合并三处校验,不提高预算。F1不作为已知R1产品缺陷阻止本地提交,保留时序观察;最终完整门禁仍必须独立通过。证据见r1-enforcement-20260919/f1-triage-20260919/diagnostic-reception.json。

  • 五执行文件接入、跨入口保护及源码变异测试、部署规约完成。
  • 125项定向通过、六项独立代码复核通过;原失败文件52项补充验证通过,历史失败保留。
  • 主会话决定按用户既有明确授权提交本轮15路径,不含ignored证据。
  • 本地提交执行/候选SHA及clean核验以artifacts/qa-governance/r1-enforcement-20260919/local-commit/result.json为准。
  • 提交后冻结整树(含任务记录),Claude一次verify-candidate;不重复前置定向测试,不拼接旧结果。结果只写ignored路径,避免记录变更使候选dirty。
  • 推送/部署另行授权;12项同候选公网验收、生产编号/银行真实接受性及差旅冻结等外部边界保持。

本轮受测执行/测试/spec代码未在独立验证后改变,仅本任务四份接收/决策记录变化。本提交用于固定最终待验输入,不能宣称新SHA已有完整通过。完整门禁具体执行说明在artifacts/qa-governance/r1-enforcement-20260919/final-gate-claude-request.md;主会话不启动测试或部署。

2026-09-19 R1独立结果接回;F1归因更正与单文件诊断(最新)

Claude组1为125/125通过、无跳过;组2为98项中95通过/3个5000ms超时,exit1;组3治理及diff检查通过。六项只读代码复核均PASS。接收前实算原15份after及28条输入全部匹配;报告/日志原样保存,reception登记其SHA及四份后续任务记录变更。

主会话静态核实:生命周期测试只提取deploy.sh的REMOTE heredoc执行;before/HEAD/current片段均8419字节、SHA=d47bdba0ae64f6ca31e5af7d08b067671434fc1c42090d04050296d3a88baff1。三处新增require都在片段外、在该套件中不执行;测试及Python/CJS夹具、Vitest/Compose输入亦未变。因此原F1“新增三次node校验导致这52项超时”的归因不成立,不能据此合并保护;三项超时事实与原因未定状态保留。

  • 接收125通过、六项独立静态PASS及原组2失败;旧证据不覆盖。
  • 排除F1指称的直接执行路径,保留三处发布重验和原5秒预算。
  • Claude仅对未改的deployment-db-lifecycle.test.js 52项执行一次带本地资源采样的定向诊断;不重跑另外已通过125/46项或全量。
  • 接回诊断后决定必要修复/提交;本批仍未提交,deploymentEligible=false。

本轮只改这四份任务记录并追加ignored证据/诊断封装器;执行/测试/spec源码均保持Claude审查后的字节。主会话不运行测试,不凭当前压力猜测前次原因,不以一次补充通过改写原失败。执行边界、精确命令及输入摘要见artifacts/qa-governance/r1-enforcement-20260919/f1-triage-20260919/claude-request.md。

2026-09-19 R1本地实现完成,待Claude定向验证(最新)

已完成五个执行文件接入:共享require断言重算资格并绑定HEAD/回执/来源提交;正常发布入口缺回执立即拒绝;ci-release/all无显式回执时只调用一次verify-candidate,有回执则重验;all仍保留额外smoke-local。bootstrap→deploy-existing→deploy.sh各层独立复验,最后复验在远端mkdir之前。只读标记严格0/1,空值无豁免,只读分支保留并终止。拒绝发布时不调用可能读真实配置的失败收集器。回执路径统一相对仓库解析。

原shell测试共用fixture已抽出,新增跨入口行为/源码变异测试;fake环境只用合成HOME/SSH配置、私有PATH和受控命令,不执行真实远端脚本。生命周期仍由既有独立测试验证。没有放宽断言、重试、业务范围或全量门禁。部署规约首节同步稳定接口与时序。

主会话仅执行node --check、bash -n和git diff --check,结果见syntax-checks.json;未执行任何unit/browser/full-local/PG测试,未运行真实发布入口。测试结果及独立复核仍PENDING,当前候选deploymentEligible=false。本批未提交,待Claude通过后按已有授权本地提交;之后才冻结最终候选,安排一次完整门禁。旧budget-full-r1 FAIL/130、各历史通过及三条例外均保持原归属。

交接:artifacts/qa-governance/r1-enforcement-20260919/claude-request.md。包含before快照、15路径增量清单/SHA、incremental-review.diff与受测输入摘要。Claude仅执行六份指定测试及治理检查、只读审增量,不改代码/任务/原始证据、不接触线上。独立报告回收后再登记真实计数,不预填PASS。

2026-09-19 R1本地实施已获批准(最新)

用户明确回复“是”,批准design顶部五文件接入、Claude定向测试/只读复核及最终clean候选一次完整门禁顺序。主会话实施与自查,测试执行交Claude。无推送/生产部署授权。底层首个远端写入实际是mkdir,最后复验必须位于它之前,不能只放在rsync前。

  • 具体方案及执行顺序获批。
  • 五入口文件与直接配套测试落地;仅语法/格式检查通过,运行验证交Claude。
  • Claude定向验证和独立复核。
  • 验证通过后本地提交最终候选。
  • 冻结候选一次完整门禁;外部义务独立保留。

2026-09-19 R1具体方案已完成(最新)

用户同意先准备R1接入方案。已只读核对统一runner、共享回执、bootstrap、deploy-existing、底层deploy.sh与现有fake测试。方案落design顶部:5个执行文件复用一个断言,显式回执目录/commit绑定,正常写入多层重验;保留只读分支、既有生产安全合同及零豁免。直接包装器缺回执拒绝,不偷偷启动全量;ci-release/all只进行一次明确的完整验证或复用有效回执。

  • 具体入口、变更范围、输入/拒绝/只读行为与回退方案已落盘。
  • Claude定向测试矩阵及预计两条命令已列明;不提前执行不存在的新测试,不重跑浏览器/业务全量。
  • 单独批准R1本地接入与新版执行顺序;目前没有修改执行代码或实际启用。
  • 主会话实施,Claude定向验证与独立复核,然后保存最终候选。
  • 最终clean SHA一次完整门禁;推送/部署及12项公网验收按原独立授权边界执行。

本次只更新本任务PRD/design/implement/task.json,不提交、不测试、不连接生产/ARM,不读取真实配置密钥备份。此前本地提交、原回执和冻结包保持。

2026-09-19 用户已授权主会话执行两笔本地提交(已完成)

用户明确要求“提交就你来提交吧,不用发给claude了”。主会话接管最终分组及本地提交,之前Claude打包请求不再等待执行;授权限本地提交,不含推送、R1启用、部署、生产编号或真实业务动作。

提交前核对当前392个路径与只读盘点清单一致、暂存区空;建立本地分支codex/20260919-reviewed-candidate保存原detached工作树候选。按两组提交:纯Trellis升级/知识精简及其任务记录;其余关联业务、测试/QA、业务规约及任务记录。两份有效JSONL与Python测试夹具纳入,22项原删除保留;artifacts及个人日志不纳入。完整路径/摘要、实际提交SHA和收尾状态记入artifacts/qa-governance/local-commits-20260919,不覆盖旧回执。

首笔治理提交已完成:729d9057(25文件);其余367个文件由本次集成提交保存。提交完整SHA和最终干净状态以本轮result.json为准。

本轮不重跑测试,只核对提交范围、内容摘要及差异格式。928项独立验证与历史4446/28等结果保持各自输入归属;提交不会把原FAIL/130变成PASS。B1完整新候选门禁、B2 R1接入及B3部署后公网义务仍开放,提交完成不代表发布资格或整个发布任务完成。

2026-09-19 发布准备盘点已接回:提交分组决策(已确定)

已核Claude的release-preparation-claude-20260919T050016Z报告与清单。392条为该盘点时点;B1当前候选完整门禁未通过、B2真实发布R1未接入、B3部署后12项公网未验,分别保留对应边界;预算补丁不再是阻塞。当前未授权提交/推送、R1启用或部署。

主会话决定:两份JSONL都有真实有效引用(implement2条/check1条),随所属任务纳入;deployment-command-client.py为现有生命周期测试直接依赖的Python3标准库夹具,跟测试纳入,不作为生产/BIFF8依赖;提交计划从10笔改为2笔(纯Trellis治理及记录;其余关联业务/测试/QA/规约及记录),混合文件整体归后者,不拆共享文件hunk。原删除分项应为7源码+14ERP测试+1旧e2e=22,原证据不改写。

Claude下一步只生成最终两组精确路径/SHA/中文说明与唯一覆盖核对,不执行提交或测试。交接:artifacts/qa-governance/release-commit-packaging-claude-request-20260919.md。待范围明确且相应授权到位后安排执行;R1源码变更先于最终候选完整验收,避免先全量再改候选。用户要求机械执行/测试交Claude,主会话负责取舍与接收。

2026-09-19 下一步分工:Claude整理发布准备包(交接记录)

用户要求机械执行交Claude,主会话负责范围/风险/验收决策。预算本地修复及独立复核已完成;先让Claude限定只读整理拟提交文件与任务归属、当前候选证据关联、R1接入及12公网/编号启用的既有前置项,不重新审已通过的预算补丁,不运行测试。

交接:artifacts/qa-governance/release-preparation-claude-request-20260919.md。此时为HANDOFF_READY,尚未收到执行结果。产出具体提交/发布准备清单后再处理决策和已有授权边界;不提前跑另一轮全量,不视本计划为提交/推送/部署/生产编号启用授权。只新增ignored报告与机器文件清单,Claude不改源码、任务或原证据。

2026-09-19 预算补丁独立复核与定向测试完成(已完成阶段)

Claude已执行两份限定测试:2文件928项通过、0跳过、exit0;主会话核对报告、原始日志及补丁before/after各10份SHA一致。差旅选择口径与原因码夹具两项必修均关闭,预算补丁状态LOCAL_VERIFIED_INDEPENDENT_REVIEWED,无需重复相同测试或补审。

预算任务B7完成,B6发布完整门禁延期不补勾;累计其他业务未读范围与外部义务不因此变成整体PASS。旧预算候选原始FAIL/exit130、旧4446/28及中止浏览器日志保持原输入归属;deploymentEligible=false,无提交推送部署。证据:artifacts/qa-governance/budget-pool-concurrency-20260919/review-fixes-20260919/claude-result-reception.json。本次仅回填任务记录。

2026-09-19 预算独立补审两项修正已落地,测试交 Claude(交接时点)

budget-pool-claude-review-20260919T043257Z.txt 已接回:锁/事务/完整性等分项PASS,两项必修。主会话已恢复差旅submit原预算上下文(移除新增departmentId),加强精确上下文及部门/全局并存测试;新增budget.pool_changed固定夹具,并补全部用户原因码的注册→夹具完整性断言。不是预算政策调整,不碰历史数据。

按用户明确分工,修复后仅两份定向测试交Claude执行;主会话不继续测试、不重跑全量/浏览器。修正前新增断言红例4失败/923通过,修正后尚未运行,独立通过待确认。证据与精确命令:artifacts/qa-governance/budget-pool-concurrency-20260919/review-fixes-20260919/claude-test-request.md。原4446及原30文件审查对应修正前输入,原包/回执不改写;当前整树无发布资格。

2026-09-19 预算修复本地验证完成;重复全量浏览器已中止(首批本地验证记录)

用户明确指出本轮后端预算修复后重复全量浏览器过于浪费,主会话据此停止 budget-full-r1 剩余浏览器并清理受管环境。已完成的后端225文件4446项通过/1原条件跳过、8个启用服务回归组、审批动作、Prisma及前端typecheck/build保留;针对性真实PG28项与单测526项结果保留,不再重复。实际接口/事务覆盖已足够支持本补丁本地结论,没有追加浏览器运行。

浏览器29通过/4中断/339未运行,零重试;原始整轮FAIL/exit130,localChecksPassed=false,不能称完整本地通过。环境PASS、source/repository不变、owner容器/scratch清理完成。发布前完整门禁、33页/7组及12公网义务仍保留,待准备发布时集中执行,不以旧r6抵扣。

修复状态LOCAL_VERIFIED_REVIEW_PENDING,实际补丁Claude只读复核待回。新增证据及交审请求:artifacts/qa-governance/budget-pool-concurrency-20260919。后续任务记录/证据变化不触发业务全量重跑。无提交推送部署或真实外部动作。

2026-09-19 预算并发补丁定向验证完成,待新完整候选(运行前记录)

用户明确批准 09-19-budget-pool-concurrency 方案。已统一报销/采购/冻结差旅的池锁与锁后预算判断,处理授权→预算锁序及 Decimal 额度边界;真实隔离 PG 28/28、受影响单测 33 文件 526 项通过。证据:artifacts/qa-governance/budget-pool-concurrency-20260919。独立发现仍保留原 FAIL,修复状态为 TARGETED_LOCAL_VERIFIED_FULL_GATE_PENDING,实际补丁的独立审查未通过前不关闭 finding。

现冻结新候选,从 static 完整重验;旧 g20-full-r6 的 4437/372 仅代表历史输入,不能抵扣当前代码。保留全部分层验收、33页/7组、并发、预算和零重试。浏览器用已有缓存的独占物理副本,无下载。旧 registry 保护例外与 CSV NOT_RUN 不改写;无提交推送部署或公网/生产/真实业务动作。

2026-09-19 业务定向补审已接回:预算并发缺陷待修(接收时点,历史)

已读取 artifacts/qa-governance/business-followup-claude-review-20260919T023537Z.txt 全文(9566字节)。b1rubx7qf 已完成,不再记为“审阅仍在跑”;本报告是只读源码/既有测试文件核对,没有新运行时测试。

  • P9 feeControl 合并读取:PASS;报销已审写路径锁序及 submit 事务内重验:PASS;不据此宣称 workflow snapshot 内部及所有撤回/付款/关联分支均已逐行覆盖。
  • 预算池并发:FAIL,主会话源码核对确认。报销提交、purchaseBudget 占用/释放及 travelPayments 增减共四处先无锁读、后写绝对 used_amount;这些计数片段与 HEAD 旧实现相同,不归因为 P9 新增。独立任务 .trellis/tasks/09-19-budget-pool-concurrency/ 已落 PRD/design/implement,仅 planning,实施待批准;问题尚未修复。采购权威预检当前在事务外,是同一修复必须覆盖的陈旧判断路径。
  • K0 加解密合成合同:独立静态 PASS。主会话另核冻结 manifest、6件文件以及当前3个代码/测试输入一致;不归为 reviewer 重算或真实恢复验证。脱敏不在合同内、通知密钥迁移脚本不在 K0/K1/K2 默认执行范围,澄清见 08-23 最新三份任务文档。
  • 累计业务独立复核为 PARTIAL_WITH_BLOCKING_FINDING;不是整体 PASS。未读的 workflow snapshot、部分路由业务分支及其余 crypto 消费者仍按实际风险列项,不要求无目的重审整个仓库。

本轮只完成报告接收、原有任务回填、K0 范围澄清和新修复规划;不改产品/测试,不重跑旧4437/372或恢复,不改旧失败/冻结包。旧 r6 的历史通过记录保留,但当前已知预算缺陷单列为发布前待修;deploymentEligible=false,12项公网、生产编号、真实银行接受性和K1/K2仍保持原边界。新增证据:artifacts/qa-governance/business-followup-reception-20260919。

2026-09-19 Claude 累计业务审阅接收(部分覆盖,历史)

用户提供 Claude 独立只读报告,称借款核心资金路径、编号关键路径、付款责任/通知事实投影和 ERP 删除引用检查无阻断发现;PWA/采购仅部分覆盖。借款页面为抽读,费用控制与报销并发段未逐段审完,K0 合同未补读。因此累计业务独立复核记 PARTIAL,不把“有条件通过”当作完整 PASS;原 4437/372 验收不重复运行。

主会话核对意见后的处置:

  1. 银行客户序号形态改变属生产编号启用前的外部接受性待验项,保留明确确认义务;本地长度/字符集通过不证明银行接受,不因此改旧编号或材料。
  2. eligibleLoanReviewers 返回单人用于新申请通知接收人,不是唯一审批人绑定。paymentResponsibility 读取时按当前资格列全部可复核人;review 路由重验当前操作者,不要求其在旧通知名单中。故“离职后被指派而无法改由其他人复核”的缺陷未成立;人员变化后的主动补提醒未验证,不擅自增加全员通知或新转派机制。
  3. PURCHASE_REQUEST_SUBMITTED 的事务外 audit 与当前 HEAD 原代码逐字一致;有 catch + fastify.log.error,不能称静默丢失。审计失败不回滚业务是既有风险,本轮不扩大为事务语义变更或旧代码修复。
  4. 1076 个业务输入与 r6 相同表示该快照之后代码未漂移,不代表它们相对 HEAD 干净;整树 dirty 包括已存在于 r6 的未提交业务改动,不能归因于仅任务/文档/artifacts。

下一轮 Claude 定向补审:feeControl.js 预算/标准口径;reimbursements.js 并发、锁序、事务内判定/审计;08-23 K0 合同与本地检查覆盖。先补这三项明确缺口,再按实际覆盖确认是否还有未读消费者/页面/迁移。主会话核对不抵扣独立复核;发布 R1、12 项公网、编号启用和真实业务证据继续保持原授权边界。

Trellis 0.6.17 的独立 PASS 单列于 09-05 任务,不移用为业务 PASS。反馈核对证据见 artifacts/qa-governance/trellis-0617-review-followup-20260919;未改业务代码或原始交审包。

2026-09-19 独立核实反馈已确认(限数量与证据归属)

用户后续独立核实并确认:r6后端4437通过/1原条件跳过,旧4428来自P10之前;UTC/北京时间换算、阶段先后和累计diff基线争议已闭合。用户另报告当前purchase-request.errors.test.js复跑75 passed、EXIT=0、SHA为2b9ec41d…;此项按用户提供的复核结果登记,不冒称主会话新跑或已取得该次原始日志。

用户同时确认33页/7组、372/372浏览器零跳过/零重试,以及386=372本地+12公网+2冻结与证据一致。此次独立核实范围为测试数量、时序和证据归属;当前累计业务实现的完整独立只读review仍PENDING。

发布边界保持:dirty、运行后task记录变动,deploymentEligible=false、currentTreeCoveredByOldReceipt=false、productionNumberingActivated=false。旧WebKit派生registry baseline FAIL与历史CSV校验工具NOT_RUN两条例外保留,无新增漂移。原始回执及增量包不改写,详细SHA核对仍见review-provenance-20260919.json。本次仅更新任务记录。

2026-09-19 外部审查反馈:运行归属与差分基线核对

用户提供的审查正确指出历史backend-full-result.json记4428、r6记4437及当前整树无发布资格;但“同一候选、r6后又改产品测试”的推断不成立。以下统一北京时间(UTC+08:00),以原始阶段时间和内容SHA为依据,不以dirty/untracked或diff生成mtime推断改动时点。

  1. 旧独立全量日志Start at为23:52:35,结束文件mtime为09-19 00:01:32,537.01秒,4428通过/1原跳过,采购错误测试66项。旧644输入摘要与r6相比恰好两处变化:purchaseRequests.js和purchase-request.errors.test.js,属于之后的P10修复,不能当作同一候选。
  2. 采购测试最后修改为09-19 01:55:08;r6回执startedAt为09-18T18:25:05.724Z,即09-19 02:25:05。其server-unit阶段为09-19 02:32:17—02:40:55,晚于该修改,4437通过/1原跳过、采购错误测试75项。9项差值是P10新增边界用例。
  3. 争议测试的旧SHA为c681dc09…;r6环境回执sourceBefore、sourceAfter、r6收口输入清单和当前均为2b9ec41d…(完整SHA见机器回执)。环境证据SHA与原release-result引用一致。当前1162条产品/测试/QA/spec快照(含22条原删除项)与r6前后摘要相同,新增/缺失/改变均0;1076个收口代码输入也无变化。untracked已被正式快照的--others覆盖。
  4. final-incremental-review.diff在03:58生成,但其基线由build-final-review.py明确为本轮开始prior-files快照,未在其中的文件使用HEAD/新文件基线;不是r6结束后的差异。25文件中10个产品/测试文件及2个spec的最终SHA全部已包含于r6开始前。当前已跟踪的运行后差异仅5个task记录,原“task-only closeout records”与产品摘要不矛盾;新增task记录与完整工作树发布资格仍须分列。

对外准确口径:r6冻结代码后端4437项通过、浏览器372/372;当前相关代码输入与该运行一致。当前整树含后续task记录且仍dirty,不具有发布资格。 不用旧4428覆盖较新的4437,也不将dirty等同于受测代码漂移。此前摘要应更明确标注r6身份、时区与差分基线;本次补充说明,不重跑未变化的全套、不改产品/测试或任何原始证据。

独占核对回执:artifacts/qa-layout/submit-visual-closeout-20260918/review-provenance-20260919.json,保存UTC/北京时间、输入对照、12项非task增量与r6摘要、原证据SHA。原final-review-candidate、final-incremental-review.diff和两轮后端结果全部保留。已收到用户转述的局部独立审查,完整独立review仍PENDING;本次只更新本task核对记录,无提交推送部署或生产读取。

2026-09-19 本地完整验收通过(当前入口)

g20-full-r6从static开始完成同一冻结候选的普通完整运行:总5128.987秒,static226.728秒PASS、full-local4895.264秒PASS,内部12阶段全部PASS。后端224文件4437通过/1原条件跳过;8启用服务组通过,7原关闭组不计通过。发现386=372本地+12公网+2冻结,372浏览器全部通过,零失败/跳过/重试。环境/source/repository/owner容器与scratch清理PASS。

33页与33PNG完整,7组全过、覆盖问题/findings为空;管理员组177.291秒,接近原180秒上限,只证明本轮实测。采购主链125.161秒;付款helper业务步骤264.491秒,原始Playwright整例记录373.383秒(含前后开销;未独立拆分该差额),保留原300秒用例设置与全部断言,不将两种计时混写。R75四项、新旧BX/PB消费者、PWA更新、WebKit离线与冻结保护都纳入本轮372项。

回执PARTIAL/exit2,localChecksPassed=true、deploymentEligible=false,唯一资格问题dirty_candidate;不是公网或完整发布通过。同环境离线verify仍PARTIAL且372项/10个witness通过;首次误用CI=1的检查wrapper被正确拒绝(候选CI未设置、4 workers),原拒绝保留,未修改验证器或候选来掩盖。

旧材料仍有已披露的一处WebKit派生registry字节变化,原保护FAIL保留,原baseline未改;r6没有新增漂移,其余12137旧文件、HEAD/index和352旧差异快照保持。后续WebKit用本轮物理独占副本。原字节尚未找到,不伪造恢复或将保护写为全PASS。

本次完整回执绑定运行时冻结输入;结束后只补task的状态、验收与后续规划记录,不改已验产品/测试代码。后续文档摘要与运行时不同,旧回执不冒充更新后整树的发布证明。独立只读review受inline限制保持PENDING,无提交推送部署/归档、生产编号启用或真实操作。证据根:artifacts/qa-layout/submit-visual-closeout-20260918,入口g20-full-r6.summary.json、g20-full-r6-highlights.json及r6-offline-verification-matching-env.json。

G20a/b/c/d本地实现和验证完成;G20e的本地记录/交审包完成,独立复核、R1真实强制消费及外部授权仍开放。最终增量入口final-review-candidate.json、final-incremental-review.diff、final-checks.json。

已完成与剩余

  • 本地在用修复、7组视觉实现、定向31/31及新完整候选372/372;编号N5的本地兼容验收完成。
  • P6/P7/P9/P10产品边界与各原整链、P8完整负载验证完成;保护异常和独立复核单列,不将二者勾选为通过。
  • 本轮状态/增量只读交审包与治理收口;现行process/docs/Trellis/sensitive及task/diff检查通过,22个原未登记文档提示保留。历史CSV校验脚本缺失,替代路径检索无结果,本轮未改CSV,该项记NOT_RUN而非PASS;不扩大为旧工具修复、提交或归档。
  • 独立只读复核:覆盖当前累计候选及本轮增量,主会话检查不得抵扣。
  • R1真实发布入口强制消费、干净候选提交/完整重验及部署:按现有design另获明确授权;部署后同候选12项公网义务全部完成才可宣布公网可测。
  • 编号生产只读摘要、启用日期及启用:另获批准,旧号/旧草稿/银行引用保持;线上策略仍未开启。
  • 真实银行接受性、指定范围外的当前处理人/企微个人送达事实、K1保管/K2新绑定及自然业务证据:按各原task分别授权;旧恢复不重跑。
  • 旧WebKit派生索引保护异常:只可用SHA匹配的原字节恢复,或保留明确例外;不扩读真实备份、不重签原冻结包。

下方均为历史阶段记录,未勾选的旧阶段条目不覆盖本段实测状态;任务整体保持in_progress。

2026-09-19 四文件定向通过,接完整候选r6(当前入口)

r5-fixed-r2四完整文件31/31通过,浏览器约5.5分钟、受管总571.747秒,零跳过/重试;采购整链、R75四项、付款提交至归档全链及视觉25项通过。付款约244.773秒,保持300秒;视觉7组各180秒、25PC+8手机/33PNG全部完成、覆盖问题与findings为空。环境/source/repository/owner清理PASS。原r5完整FAIL与r5-fixed-r1登录跳转失败均保留,不拼接为完整通过。

P10采购提交后读取边界167/167及QA专用类型已通过;登录仅在无query/hash的规范/login复用,保留原表单/portal/profile断言。下一g20-full-r6从static开始普通完整候选,全部源码/测试/task/spec/docs冻结,只写本轮ignored证据;N5/G20及产品完整负载验收仍待终态,独立PENDING、生产编号未启用。

旧WebKit派生registry保护异常保留,原baseline不改;后续运行使用本轮独立WebKit副本,不下载或安装。禁止将一处已知漂移描述为全部旧材料零变化;无提交推送部署或真实操作。

2026-09-19 r5-fixed-r1结果及最小边界修正

四完整文件31项30通过/1失败,585.544秒;采购主链、R75四项、视觉25项通过,零重试/跳过,环境/输入/owner清理PASS。付款新复用逻辑保留了/login?redirect的返回目标,与原portal断言冲突;按design仅复用无query/hash的规范登录页,带返回目标仍用原goto清除。边界修正后的专用类型检查及diff检查通过;下一r5-fixed-r2相同四文件复验,全部受管输入冻结;未开始新的完整候选,不拼接定向结果。

2026-09-19 当前入口:r5终态与三项续修

完整候选FAIL:5916.547秒,static247.910秒PASS,内部11前置阶段通过;后端4428通过/1原跳过,8启用服务回归通过。发现386=372本地+12公网+2冻结;浏览器367通过/1失败/2超时/2串行未执行,零重试。环境/source/repository/owner清理PASS。

  • 09-18产品P10采购PATCH响应读取最小修复与边界回归;五文件167/167通过,原实现4条红例保留。
  • 视觉独立检查/RPC冗余、付款同角色重复登录与独立只读检查优化已实施;专用tsc通过,原7组及所有预算/断言/worker保持,浏览器尚待验证。
  • r5-fixed-r1执行采购、视觉、R75和付款四个原完整文件定向;通过后从static完整新候选,不拼接r5通过结果。运行期间全部受管输入冻结。
  • 治理、保护异常、最新候选和独立PENDING交接;生产未启用。

R75四项、新旧BX/PB和合同只读实际页面正反例已在本轮完整负载通过。全页面仍INCOMPLETE:24/33、管理员14/15,手机后继未执行;付款执行及下游未在300秒内完成。保护检查只有旧WebKit派生registry自动改写,原FAIL与字节副本留存,原baseline不改;业务冻结材料与HEAD/index保持。详情及不变量见design顶部。

2026-09-19 当前执行入口:7组定向通过,进入完整候选

用户明确批准:33页拆为7组、各180秒,保留原断言/截图/并发/零重试,同一完整运行全部必过,增加缺页/重复/失败组拒绝。后续按本段执行,下面旧180秒累计约束为历史记录。

  • 实施7组原生测试、一次合成准备、完整审完记录及精确覆盖校验,保留5条到达正反例。
  • 专用类型检查、覆盖13/13及视觉整文件25/25通过,33页/33截图精确齐全。
  • 冻结输入,从static开始执行普通完整候选;真实发现分母,不拼接定向结果。
  • 协调P9/N5/G20、治理/旧材料保护与候选交接;独立PENDING,生产未启用。

本轮完整后端回归已通过:224文件4428项通过、1原条件跳过,537.01秒;server/src、server/tests、server/prisma及scripts/qa共644输入结束后校验零变化;P9原R75及报销付款整链已在p9-fixed-r3通过,原视觉超时仍保留。

grouped-visual-r1完整文件25/25通过(7真实组+13覆盖正反例+5原到达用例),浏览器91.788秒、受管总352.799秒;25PC+8移动全部审完,33PNG、findings为空、覆盖问题为空,环境/输入/owner清理PASS,零跳过/重试。旧34目录12138文件零增删改,HEAD/index未变。接下来g20-full-r5从static执行普通完整候选,源码/测试/task/spec/docs全冻结,只写本轮ignored证据;本地结果不抵扣独立或公网义务。

2026-09-18 编号消费者最终回执与G20余额

numbering-consumer-final已结束:报销新旧号PC/手机列表、搜索、详情1/1通过(17.756秒),受管总耗时268.462秒;source/repository/candidate不变、owner容器及scratch清理PASS,零重试。付款新旧号消费者最终版本保留browser-r3通过(18.517秒)。付款列表/详情自然排序完整单测129/129通过(15.66秒);五个相关浏览器文件专用类型检查通过。最终六个测试源码摘要在final-code-inputs.json,后续文档收口不变更测试输入。

本轮已解决DG7/R3重复登录前置、直连正例未等认证页面就绪、视觉文档缺Accept:text/html、旧员工差旅允许预期及新增编号测试定位/枚举问题。DG7七宽度、五角色权限整文件、编号消费者和真实合成付款链分别取得通过证据;这些结果属于各自输入和选择集合,不能相加成普通完整通过。此前AUTH_004及全部失败记录保留,browser-r2五角色观测无重放事件不等于排除全部认证风险。

剩余本地工作按以下顺序,方案已有部分沿用,新增部分先补design再改代码:

  1. 全页面巡检:按已落盘阶段采样继续分离实际导航/装载/API/截图耗时;33路由、原180秒及原并发/零重试保持。当前13/33仅是到达进度,findings为空不代表矩阵通过。
  2. P9报销提交:在09-18-local-concurrency-product-fixes核清P2028边界,先定稿最小方案与确定性回归,再优化;不将出现时点当作编号根因,不直接提高事务超时。之后重验R75原整文件及两个后继。
  3. 两项定向通过后冻结完整输入,从static开始执行普通full-local,发现集合须纳入两条新增编号用例;不能沿用旧351分母或拼接本轮绿灯。
  4. 完整结果和独立只读复核分列;生产摘要/启用、真实R1、提交推送部署及同候选12条公网义务按原授权边界办理。

本次增量审阅包保持normalReleaseEligible=false、独立PENDING;旧候选、失败和冻结证据不覆盖。不因编号专项通过关闭N5、G20或归档task。

2026-09-18 browser-r3 收口与编号最终小修

四文件51项49通过、1失败、1超时,673.807秒,零重试/零skip;环境、输入、owner清理PASS。R3五角色与员工可用页面/冻结差旅拒绝整文件通过;付款编号混合来源整例再次通过。新BX消费者已通过PC两种号码及移动旧号可见,最后错误为测试把移动标题div当heading;合成失败截图清楚保留原号,产品没有丢编号。按实际组件将移动号定位到既有header内精确文本,PC仍验证精确h1,再仅重验此变动用例。

全页面仍180秒超时,13/33到达,停在管理首页转主数据链接;逐截图时间保留(首PC登录页后到门户22.43秒、普通页面约6—11秒、角色首屏约16—24秒)。没有证据将其写成单个链接缺陷或提升预算。后续需逐阶段采样区分真实点击/装载/API/截图成本并保留全部33页;普通完整G20仍待该项及P9报销提交事务修复,不盲重跑。

编号服务端列表/详情原自然排序回归保留原3条旧号与同号ID次序,增加月号0002/0010/10000,验证混排精确ID/号码/金额对应及原数组零改写、读取零写入/审计。只扩测试,无产品源码变化;运行完整付款路由单测。此前编号完整后端/PG及browser-r2付款整链按原输入记录,不改写成此时的新完整候选。

2026-09-18 browser-r2 终态与分组续修

64项为58通过、3失败、1超时、2串行后继跳过,1004.412秒;环境/source/repository/owner清理PASS,零重试。报销审批→财务原地进度→付款复核/执行→回单→核销/AP整链通过(254.846秒);付款新旧编号/混合来源浏览器消费者通过(60.191秒)。整个观测窗口五合成角色tokenVersion均保持1,未记录REFRESH_REUSE_DETECTED;不声称已排除所有认证风险。

最小QA续修已规划:员工旧允许列表里的差旅与已批准冻结合同冲突,改明确拒绝该原路径,保留票据/合同可用正例;新BX详情断言接实际PC标题“报销单 <编号>”与移动标题原号;付款合成fixture nextStep改为真实first_review枚举。全页面已超越原9页但仍180秒超时;改用已有正式认证storage-state helper为每个角色/视口分别取得独立真实会话,直接到首个矩阵页面,保留匿名登录页UI与全部33路由、文档HTTP/到达/403/404/截图/视觉断言,不共享refresh cookie、不伪造登录或放宽预算。先类型检查,再四受影响整文件定向复验;付款整链源码未变可保留本轮结果,定向仍不冒充新完整候选。

另发现R75通知的报销提交500:真实server输出为P2028,原5000ms事务在5412ms后的workflowHistory.create失败(reimbursements提交事务),不是AUTH_004。只读提取安全code/时间/源码位置,不复制原payload。本轮编号客户端验收不扩大为调整审批事务/预算;按既有09-18-local-concurrency-product-fixes接独立最小方案:确认新取号是否参与此已编号提交、锁等待与事务内重复查询/CPU边界,保留失败,用确定性回归证明再优化,并保持原权限/审批/审计/预算。新完整G20必须等其修复及R75整文件通过后,从static重跑,不能盲重跑或用付款整链绿抵扣。

2026-09-18 本轮 browser-r1 结果及证据续修

八文件34项:29通过、1超时、2失败、2串行后继跳过,零重试,698.271秒。DG7七宽度、R3五角色原失败整例通过;全页面文档404已消失但仍超时,9/33已到达且最后在登录页。R75通知和付款主链均AUTH_004,旧失败保留。环境、输入不变、owner清理PASS。

已在本轮拥有的无网络合成库只读取证,经理出现REFRESH_REUSE_DETECTED且tokenVersion从1变2;对应直连允许路径仅not.toHaveURL(/403/)立即进入下一文档,未等待认证恢复和页面加载完成。修为目标路径、真实h1、非403/404/登录共同就绪后再走下一项;加强断言,不改产品认证。下一轮验证是否消除该干扰,不能先写已证明唯一根因。付款后置诊断未到达,失败提前到提交后读取;后续API错误继续保留。

编号N5补两条浏览器消费者检查:PC/手机旧新BX列表详情/完整搜索,以及付款候选原样query/组批entityId、新旧PB详情、混合明细原顺序与UUID链接。响应为明确合成fixture,不冒充真实PG分配或审批付款;真实链仍由原完整付款用例及隔离PG分别证明。新增用例进入普通完整发现,不替换原分母。运行前先补类型检查,之后原九文件整例定向复验。

2026-09-18 编号完成后的浏览器验收接续

官方current回到本task。已保全352项旧差异、31目录11427份历史证据(含编号本地审阅包),本轮独占根为numbering-browser-closeout-20260918。原g20-affected-r1四未过保留,编号N5未勾选;先最小修复后原整文件定向,随后从static重新完整候选。

  • DG7七种宽度共用同一合成员工会话,仍逐宽度完整验证全部原页面、截图及断言;减少七次登录重复前置,不缩宽度或放宽预算。
  • R3按五个独立角色各一次登录,同角色复用页面完成全部原403/404及经理付款入口断言,不减少角色和路径。
  • 全页面目标文档请求明确Accept: text/html,保留真实文档状态及当前路由/页面/错误/视觉检查。
  • 付款失败已提取安全错误码AUTH_004;先以阶段内401诊断和合成审计确认,不将猜测写成logout根因,不自动刷新API令牌掩盖失效。
  • 编号混合格式浏览器验收;原G20完整重跑及独立复核另列。本轮不改权限/认证产品、生产规则、并发/重试/预算,不连接生产或发布。

2026-09-18 编号实施接续(本轮最新)

用户已明确授权复核编号矩阵适合后实施。官方current进入09-18-reimbursement-periodic-numbering;新计数/策略及创建入口本地已实现;完整后端4412通过/1原跳过,之后策略边界补验456/456及隔离PG复验通过;迁移默认不启用、旧编号/未编号草稿归属及银行引用保留。该任务证据单独存business-numbering-20260918,未覆盖本task的任何失败/冻结包。原G20四未过、后续完整门禁、独立PENDING与公网义务保持,不把编号单测/PG通过折算为G20通过。未提交推送部署、未读取生产编号分布或启用线上策略。

G20 八文件定向结果与编号调研续项

g20-affected-r1结束FAIL,806.364秒;34项30通过、2超时、2失败,零重试。环境/source/repository/owner清理PASS。资产、R75原整文件、PA6角色矩阵、R92与onboarding通过;DG7首页整例和R3直连整例超时,全页面文档请求缺text/html Accept触发404,付款整链在财务通过后的API会话读取失败。阶段日志已证明发票popup完成,不再猜该处卡住。原失败保留;后续需逐项证据修复,再从static完整候选,当前不能全量结案。

用户已选报销按月,随后新增要求调研全部在用编号及国内财务/OA/ERP惯例,结合不足10人科技初创公司。归属09-18-reimbursement-periodic-numbering,当前只读调研/更新规划,尚未改编号代码;其他编号实施范围待定,不将调研视为生产改号授权。

G20 QA前置修正完成,开始原整文件定向验证

DG7固定企微优先夹具的账号入口改为自动等待;R92/onboarding路由mock显式阻断SW绕过,R92会话仅在登录后refresh成功。PA6同角色PC/移动复用单次登录,四角色隔离、所有入口数组逐字保留、原管理员复核403保持。全页面优先真实可见链接/管理首页,SPA仍单独验证目标文档HTTP及原URL/标题/403/404/视觉合同;逐导航请求完成并稳定500ms才截图,不用旧document网络状态代表新页面就绪。核心付款整链仅增加固定阶段/耗时日志,断言与300秒预算未改,先确认实际停点。

浏览器六文件专用tsc通过,产品267项相关回归通过。下一g20-affected-r1八文件原配置定向验证:资产、R75、DG7、PA6、R92、onboarding、全页面、报销付款整链;默认4workers/零重试/原预算。运行期间所有输入冻结;只是定向,不抵扣新完整候选。

G20 产品续修单测已通过

两个接口最小修复已完成,原实现红灯7项/112通过,修复后两文件119/119通过(17.54秒);资产操作/搜索/校验与账号导入/敏感权限五文件148/148通过(23.71秒),受影响源码Node语法通过。合计267项包含13项新增边界,真实cost12未改;原事务预算、角色、审计语义与批量导入位置保持。下一步由09-06修QA前置及定向整例,再从static全量;P6/P7整体及P8仍待真实整例/全量,独立PENDING。

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旧文件保护不变。

用户另行明确批准仅查看线上指定PB-20260917-001审批人;北京时间12:14只读确认draft/3项pending、无复核/执行,真实业务提醒对象为负责人,个人应用消息已有发送成功记录(不证明已读),另两名称为测试的在职经理账号符合现有资格。仅查询,没有业务/配置/企微写入;核实其用途和待办引用后才可提出权限收回,不自动停用。此授权不扩展到ARM、备份、恢复、生产改动或部署。

2026-09-18 G20 接续执行(最新用户批准)

生命周期夹具续修已验证:原36命令链三组交错对照,旧2.271–2.481秒、新1.665–1.748秒,完整trace逐字相同;仅测试中复用CJS假命令服务,Python -IS传输,不改生产部署或测试预算/并发。最终52生命周期+22初始化+39部署安全=113/113通过(63.57秒),含新增参数/输入/传输失效保护;此前两项超时当前1746/1648ms,四种真实源码变异及真实timeout均保留。g20-full-r4接下来从static完整重跑,运行期间输入冻结;定向通过仍不抵扣整套验收。

g20-full-r3已结束FAIL:1208.815秒,static PASS 308.880秒;后端4362通过/2超时/1原条件跳过。超时为生命周期真实源码init/server变异,均超过原5000ms;浏览器等后续阶段未运行。输入/仓库不变、归属清理PASS,guest尚未运行故环境INVALID。原回执保留。

G20d最小续修计划:先在本轮ignored证据目录交错测量原假命令与仅假命令Node启动优化,复用真实remote脚本/Compose依赖/相同配置,比较完整argv和生命周期trace、退出状态及耗时。若证实可减少重复启动开销,只改测试夹具启动,不改部署脚本、Vitest/浏览器并发、原预算、重试或断言;保留完整到达init/server/worker、真实timeout及未知命令拒绝。修后运行原71项和39项安全回归,再从头普通完整候选,不靠盲目重跑求绿。

清理接线最小修正已验证:auth-postgres-concurrency 10/10,原runner成功/失败/清理与账号前置6/6,原预算/并发/零重试保持。原1项跳过为deploy-init.integration未注入专用独占数据库,未计通过。下一g20-full-r3从static重新执行;运行期间输入冻结。

g20-full-r2已结束FAIL:1157.785秒,static PASS 310.928秒;完整发现365/351/12+2正确,后端223文件共4365项:4363通过、1失败、1原有条件跳过。唯一失败是auth-postgres-concurrency检查原qa_cleanup退出结构(exit cleanup_status);本轮记录器改写了结构。最小修正为在既有original_status优先/cleanup_status退出前收集阶段终态,不改原合同或测试。环境因尚未到guest阶段记INVALID,原生双引擎探针通过、源码/仓库不变、归属清理通过;后续阶段及浏览器NOT_RUN。修后针对性验证再从头完整重跑,不拼接前轮。

生命周期原配置复核71/71通过,82.64秒;首轮五项本次2226/2240/1936/2397/2628ms,无代码/预算变化。仅证明耗时差异,未确定唯一根因;不以定向绿补首轮完整结果,下一g20-full-r2从static重新执行并冻结输入。

普通候选g20-full-r1在static失败:生命周期49项中5项超过既有5000ms,合计71项为66通过/5超时;full-local未运行,120.980秒、static109.595秒,回执FAIL/无发布资格。原件保留。先原配置复核当前生命周期夹具,不提高预算或削弱fake命令审计。最终回执62项纯验证通过,shell补充19/19通过(原组合测试假工具把visual误作full的夹具失败已保留并修正),旧168项QA结果按输入适用性保留。

G20机制已完成本地实现:新增verify-candidate(static/full-local复用)、固定12个内部阶段与实际筛选记录、来源/策略/工具链/双引擎原生环境/逐项覆盖共验、dirty PARTIAL和离线verify、精确skip及批准元数据。QA整组168/168通过;补充原生浏览器版本绑定与三个skip组合、真实profile/source/coverage源码变异,最终结果以本轮command回执为准。部署安全39/39通过,流程/文档/敏感/task/diff检查通过。普通全量接下来在冻结输入上执行,原失败不改写。

G20a已完成:官方WebKit v2105/26.0、第三轮报销离线1/1通过(325.915秒),环境/源码/仓库/归属清理PASS;前两轮原失败保留。旧差异322项快照及29目录/9762文件保护基线已建立。G20c共享回执与逐阶段/实际筛选记录已接本地verify-candidate;首轮13项实际shell/fake工具检查通过,完整QA回归进行中。未接真实R1入口,无部署调用。

G20a 第二轮登录已过,停于WebKit原生离线。独占namespace对照证明无默认路由false,只有内部veth对的链路默认路由true,主动离线false;修正设计已补,保持无外联并加强同namespace对端核验。阶段回执58项合成检查通过,runner接线检查进行中。

G20a 首轮 WebKit 原单例超时:合成 refresh 在未登录时无条件返回成功,页面已进入移动工作台,登录 helper 等待不存在的输入框。仅修测试会话为登录前401、登录后成功;不改认证产品或离线断言。原失败保留,环境/source/cleanup通过。WebKit复验后先接阶段记录器,再跑绑定最终runner的完整门禁,避免代码变化后重复全量。

用户在解释 WebKit 用途及五组余项后明确“按照这个规划开始执行,非必要不暂停,尽量做完”。本轮据此批准官方 Playwright WebKit 运行包下载到本轮独占缓存,及既定本地完整验收和共享候选回执机制实施;不再列下载授权待答复。仅运行包,不隐式安装系统包或修改共享缓存;业务测试继续无外联合成环境。

沿用 G19 分层合同。先补 WebKit 真实启动/报销离线敏感证据单例,再普通 full-local。受管运行期间源码/测试/task/spec/docs冻结,只写本轮 ignored artifacts。旧失败/旧候选不覆盖。

  • G20a:建立旧差异/冻结材料保护基线,官方包独占下载、运行时依赖/启动探针,WebKit原单例重验。
  • G20b:普通完整 full-local(351本地用例+配套后端阶段),零重试/默认并发/原预算,保留所有失败及真实阶段耗时;只修在用缺陷/已批准合同漂移。
  • G20c:实现来源/策略/环境/阶段/实际覆盖共同绑定的共享候选回执与离线验证入口,复用现有G19/sourceSnapshot/environment,不新增发布平台。设计细节补在design后再编码。
  • G20d:逐项反例、fake命令捕获、源码变异和既有部署生命周期回归;只验证机制,不连接真实发布入口强制消费。
  • G20e:本地检查、规约/协调状态、独立复核交接与新候选冻结;外部事实/12公网义务/真实R1启用/提交推送部署保持分别授权。

新证据:artifacts/qa-layout/release-receipt-g20-20260918。主会话inline,独立PENDING;无生产ARM、真实配置密钥备份、真实企微付款/恢复或旧恢复重跑。WebKit与后续本地实施连续推进,不以范围内常规决定反复暂停。

2026-09-18 G19 分层验收已实施并完成本地针对性验证(最新状态)

用户已明确批准分层方案,已正式更新 R2 并落门禁:全部非 manual 仍发现;12 公网逐项保留为同候选发布后必跑;2 条冻结差旅原源码/历史结果保持,当前改验两条冻结保护。没有恢复权限或旧整链,没有公网/企微/真实付款操作。

  • 最终发现 65 文件/365 用例:351 本地用例(59 文件)、12 公网义务、2 冻结旧链,0 遗漏/未知/重复。351 已包含两条新保护,分母不重复加数;发现不等于执行。
  • 受控清单绑定用例身份/原源码摘要/原因/入口/责任角色。普通 runner 从完整发现派生执行集合,并校逐项结果;漏例、漂移、未知、重复、跳过、重试、expected-failure、伪通过和候选不一致拒绝。定向仍无发布资格。
  • 门禁 74/74 与诊断结果 7/7 合成检查通过,含真实 runner 调用及删除覆盖消费的源码变异。首轮夹具独占文件问题、第二轮五项30秒超时均保留;最终单独运行使用原预算,没有增加超时或降低断言。
  • g19-freeze-r2 2/2 真实本地浏览器通过:合成员工创建403/无差旅导航,普通财务对账和三类导入403/无差旅导航,财务主管共享付款就绪检查包含差旅冻结 blocker。环境/输入/清理 PASS。首轮测试读取不存在的 me.permissions 失败已保留,改验正式 roleCodes 与接口行为。
  • 当前财务主管仍有 integration.manage,受管合成 runner 仍为既有底层回归启用 travel sync;没有声称所有差旅接口关闭。旧整链未通过/未执行,不因保护通过改写历史。
  • 本地回执明确公网 NOT_RUN_LOCAL、完整交付 INCOMPLETE、normalReleaseEligible=false。离线公网结果验证器要求 live profile、同源码/部署候选及原始逐项结果;未接真实部署入口,不能独立证明远端身份。实际公网责任人尚未指派,证据仍缺。

本地证据、新候选及余项:artifacts/qa-layout/local-coverage-g18-20260918。最终验证/保护/候选摘要分别为 final-check-summary.json、protection-result.json、candidate-integrity.json;旧完整 full-r2 保持失败,未重跑普通全量。主会话检查不是独立审阅,独立 PENDING。

接续顺序与余额

  1. WebKit 官方独占缓存下载问题仍待答复;其真实离线用例未验。条件齐备后跑 普通完整门禁,不拼接定向绿;不得恢复旧差旅或放宽并发/预算求绿。
  2. G20:基于 G19 最终归属合同继续共享候选回执/逐阶段验证/skip和变异反例;真实 R1 强制消费启用另行批准。先完整阶段与 source/environment 绑定,再 fake 工具验证零发布写入,最后独立复核;当前未启用真实入口。
  3. 独立只读复核现有 K0/报销付款/借款/QA 与本次产品候选;inline 自检不抵扣。
  4. 经另批范围补真实付款复核人及企微个人发送事实、银行接受性、K1 保管/K2 新绑定、事件/自然业务证据;旧恢复不重跑。
  5. 经明确授权后提交推送、干净候选完整门禁/独立重跑、部署,再兑现 同候选12条公网义务。未部署前不能告知可公网测试。

借款 T1–T4、报销同页进度/付款排序/候选人通知事实展示、ERP 专属精简与 strict 遗留0保持此前本地成果;本轮无提交/推送/部署/归档,不把本阶段完成说成所有任务结束。

2026-09-18 G18 本地实施与针对性验证完成(最新入口)

本轮完成OCR能力接线、R108现行报销/离线队列覆盖、14系统页展开及真实路由到达验收;修复票据详情URL双写导致的人工修正失效。另由09-18-local-concurrency-product-fixes拥有PWA更新事件缺口及采购创建事务缩短:不改权限/审批/审计、事务或浏览器预算、并发/重试。

  • 最终共享入口回归 g18-final-ux-ocr-r4:18/18通过,含完整认证/门户16项与OCR2项;新PWA生命周期13项连同采购回归共131项Vitest通过,QA接线39项按未变输入复用。
  • 不带预载的 g18-concurrency-fixed-r3:原资产/采购/付款/PWA四文件4/4通过,583.240秒;4 workers/零重试/原预算,995服务响应、0未处理异常。PWA文档B/active controller/worker摘要、68新缓存和2实际加载资源、旧独有缓存0,零登录回退/静态404。
  • R108已完整通过:8移动观测/0发现,员工审批403、经理正式通过,当前approve/return/no-reject及离线队列;路由验收25PC+8移动、14系统页、0发现,另5个正反对照通过。只证明矩阵内覆盖。
  • G18时点完整发现64文件/363用例,缺失/未知/重复0;枚举与临时构建摘要采集成功,仅枚举不等于执行。所有完整受管轮均核环境/source/repository/owner清理,失败原件保留。

此前两次并发采购P2028和PWA未收敛均保留。诊断区分了事件循环拥堵/池排队与PG等待(729采样未见Lock);这不是全仓CPU根因证明。原full-r2 65/359、326 passed/12 failed/5 timedOut/16 skipped保持失败,最新候选未再跑普通整套,局部结果不能拼接全量通过。

证据/新复核包入口:artifacts/qa-layout/local-coverage-g18-20260918。最终治理、敏感/diff、保护与冻结以final-check-summary/protection-result/candidate-integrity为准;主会话检查不代替独立PENDING。保留304项原差异快照、27旧目录/9004文件以及HEAD/index,不覆盖旧冻结包。

尚需推进

  1. 12条公网用例和2条冻结差旅的验收归属:入口/责任角色/证据缺口已列g18-gate-ownership.json;G19分层验收已获用户明确批准并完成本地实现/验证,12项公网仍须同候选发布后执行,未运行公网。
  2. WebKit真实运行条件及现有离线用例未验;此前官方独占缓存下载问题仍待答复,不联网安装。
  3. 条件齐备后完整普通门禁及R1共享回执/拒绝反例;独立只读复核与R1真实强制消费启用单列,不能用本轮定向绿抵扣。
  4. 真实付款处理人/企微个人发送、银行/OCR样本、K1保管事实/K2新绑定、事件和自然业务证据仍未执行;旧恢复不重跑。
  5. 提交/推送、干净候选完整验证、部署/公网验收仍需原明确授权。借款T1–T4、ERP退役、strict遗留0保持此前本地完成,未据此上线。

后续具体状态与最小步骤见remaining-work.json;当前task及协调task保持in_progress。

G19 首轮验证发现与修正

  • 全量发现 65/365;351 本地、12 公网义务、2 冻结旧链,0 归属问题。只是发现,不是全量执行。
  • QA r1 71/73:两条源码变异测试被上次独占报告文件提前阻断;已将每次夹具调用的报告/命令日志隔离,不削弱保护。r2 69/74,五条诊断夹具在并行构建负载下30秒超时;下一单独重跑整组,不改预算。
  • g19-freeze-r1 两条失败,环境/输入/清理 PASS。新测试误用旧 helper 类型中的 me.permissions,正式 /api/me 只返回 roleCodes;修正为实际角色确认+原接口403/付款冻结blocker/导航检查。原类型不据此声称产品权限故障,不扩修旧 helper。
  • 六个原 live/frozen spec 字节不变;冻结义务的当前入口明确指向普通 full-local 内的新保护文件,旧业务域入口仅作 historicalEntry 保留。

2026-09-18 G19 分层验收(用户已明确批准,实施中)

用户批准:12 条公网用例作为同一候选发布后必跑项;2 条冻结差旅保留原源码与历史结果,改验冻结保护。本地通过不代表公网/完整交付通过,不授权部署、恢复差旅或真实操作。此增量替代 R2 的“排除集合为空”,不重写旧 full-r2 失败。

  • G19a:全体非 manual 用例继续真实发现,固定 12 live+2 frozen 的用例身份、原因、责任角色、必跑入口和原源码摘要;未指派实际负责人明确待定。
  • G19b:由完整发现与受控合同生成本地执行文件集合,登记用例级覆盖;拒绝遗漏、身份漂移、未知/重复、跳过、重试与 expected-failure。禁止调用者筛选普通本地集合。
  • G19c:新增两条冻结保护整例,验证现行合成角色入口/正式 API 拒绝、共享付款差旅 blocker 与入站导入权限拒绝;不改权限,不执行旧差旅链。
  • G19d:公网义务在本地保持 NOT_RUN_LOCAL,绑定候选提交与源码摘要;公网用例结果只能由同候选、live profile、完整逐项通过报告兑现。验收回执不自授部署或发布资格。
  • G19e:增加漏例/新增未知归属/漂移/伪通过/候选不匹配/真实 runner 选择等反例,运行本地冻结保护,更新 spec/协调 task 与新候选;独立仍 PENDING。

WebKit 下载问题仍待答复,完整普通门禁未通过;R1 机制后续与真实强制消费启用分开,不启用发布入口。所有旧差异、失败材料与冻结包保持。

G18 诊断终态与产品修复归属(2026-09-18)

诊断r2 531.599秒,2通过/2失败;环境/source/repository/cleanup全部PASS。采购仍P2028(6839/5000ms),PWA现已实测B控制器active/activated、B首页缓存和68新资源、worker摘要匹配,却文档仍A。729次PG采样无Lock等待,存在应用事件循环延迟/池排队,不声称全局唯一根因。

按用户连续实施及先补规划授权,新增09-18-local-concurrency-product-fixes接最小PWA事件监听和采购创建事务修复,具体PRD/design已落;四文件不带观察器重验后再接回本task收口。R2 live/frozen归属变更仍仅提案,不影响既有边界。

G18 并发失败与诊断细化(2026-09-18)

g18-concurrency-r1 505.214秒,资产/付款2通过,采购/PWA2失败;环境/源码/仓库/owner清理PASS,零重试。采购POST为P2028(5000ms预算、5952ms后使用过期事务),响应8086ms;同窗口多登录约15秒,仅据此不能区分事件循环、池等待与PG锁。PWA文档仍A、B独有缓存68、A独有缓存0;原catch中controllerIsActive=false、fetched摘要空值和bOnlyLoaded=0是默认占位,不是实测,禁止据此推因。

继续已批准本地可靠性诊断:四文件保持4 workers/零重试/原预算,先修PWA安全失败记录为真实快照或null,并采被动worker状态/控制器/导航时序与缓存index摘要;不额外导航/更新/清缓存。仅本轮ignored观察器通过NODE_OPTIONS预载采服务事件循环与池计数,限定受管retained-local合成server、已核namespace及独占输出;外部观察器只查询已验证本轮容器的pg_stat_activity等待类别/数量/时长,不读取SQL正文或业务表。时间统一epoch便于对照。观察器存在的运行单独标诊断,不替代无观察器最终验收。

依据证据再落产品最小修复;PWA若需运行时代码变更,先建独立产品task关联本task,遵守原spec。不增加事务/浏览器预算,不改审计、权限或并发,不把一次定向通过当完整可靠性通过。

G18 已通过本地覆盖,接续并发观测(2026-09-18)

受管 g18-ocr-visual-r2 7/7 通过,332.441秒(浏览器约2.2分钟),环境/source/repository/cleanup均PASS。原页修正→缺字段阻断→补齐可用→返回再进入已经验证;25PC+8移动(其中14系统页)全部准确到达,0发现;另5个合成目标到达正反对照通过。R108在前轮完整通过,8移动观测/0发现,员工403、经理正式批准、离线上传队列保留。观察器试采该次归属服务655个响应、0未处理异常;不以此抵扣旧full-r2的P2028。

下一步 g18-concurrency-r1:资产/采购/保留付款整链/PWA,默认4 workers、原预算/零重试,受管本地合成。观察器通过本次runner后代及其唯一PID文件绑定孤儿server,再核cwd/入口/fd1/namespace;不依赖server一定仍为后代,也不读历史共享日志。输出仅请求类别/状态/耗时/P2028数字和CPU/RSS。PWA输入存在时完整枚举并提前缓存摘要,原发现采集告警不覆盖。

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)

受管 g18-ocr-mobile-r1:338.629 秒,1 passed/2 failed,无 skip/重试,环境/输入/清理 PASS。首例报销上传提交通过;OCR 修正到达前停在员工无票据管理导航,R108 已完成 7 个移动观测和离线队列后停在旧通用审批详情标识。

当前票据管理要求 invoice.manage,修正用例改用财务合成角色;普通员工仍通过报销详情提交。当前报销审批规约只提供 approve/return(及有权 transfer),没有 reject;R108 接专用 reimbursement-mobile-workspace,验证退回修改可用、驳回不存在、通过确认和正式 completed/approved,保留员工审批403、离线队列与全部布局验收。原计划“批准/拒绝”是选用旧差旅夹具时的动作,不为本次测试恢复已替换的报销驳回。R108 报告新增完整执行状态,异常退出的无视觉发现不得打印整例 PASS。

并发诊断落具体方案:维持4个文件的默认4 workers、原预算和零重试,资产/采购/付款/PWA一组受管对照;观察器仅按本次进程后代链、cwd/entry/fd1核归属读取本次合成服务日志,输出请求类别/状态/耗时/P2028数字和CPU/RSS,不复制payload或凭据。无事件循环/锁证据不下唯一根因结论;定向通过仍不代替完整负载。

2026-09-18 G18 执行细化(用户已批准按余项连续推进)

官方 current 已回读本 task,inline 实施/检查;独立审阅 PENDING。新证据根 artifacts/qa-layout/local-coverage-g18-20260918,已保全 304 项旧差异、27 个旧目录/9004 个文件;新增本轮候选,不覆盖 G17 冻结包。受管运行期间不修改源码、测试或任务输入。

  • G18a OCR:在受管 runner 启动真实本地 server 后,根据该次启动的 mock provider 与 jobs=true 派生测试能力标志,覆盖调用者置位;保留非 mock/停 job 的反例。修正用例实际验证缺字段→拒绝提前可用→补齐→可用,不仅置位求绿。先检查接线,再受管执行整个 OCR 文件,旧标题与原结果映射保留。
  • G18b R108:用当前小额报销(上海当天、office_postal、有效合成 PDF、显式关联明细、正式提交)产生经理待办,替代冻结差旅。初始化异常直接失败;保留 390/414 布局、离线上传两项/移除/恢复、经理批准/拒绝操作及确认,补员工无审批权限和正式任务完成断言。输出改为运行独占目录,移除允许忽略发现的开关;原预算与零重试保持。仅对已证实的现行 UI 漂移纠正定位,不改产品样式。
  • G18c 路由:在已有矩阵将 /system/* 显式展开为当前 router 的 14 个系统页;AP 选财务,管理页选管理员,审批选经理。每次验收须实际 URL 与预期一致、目标页标题/稳定锚点存在、无 403/404/登录回落;匿名登录页用匿名 context。未知路由或未解析参数直接失败。保留原视觉断言与 180 秒预算;不宣称矩阵外全产品覆盖。既有矩阵业务边界文字同时纠正企微考勤与 ERP 退役事实。
  • G18d 必跑归属与可靠性:只读梳理 12 live、2 冻结差旅的实际入口/责任/证据缺口,保持 full-local 完整集合不增例外。并发诊断先规划可归属服务时序/资源/浏览器事件采集,不改事务超时、并发、重试、审批和审计;按精确停点决定是否需要修复,不盲跑整套。
  • G18e 类型/接线/受管定向检查,精确结果与余项、主会话 review、治理/敏感/diff/保护校验和新增量冻结;09-08 协调状态同步。完整发现须使用运行仍有效的 PWA 输入并在清理前保存所需摘要。

WebKit 未获官方独占缓存下载答复,不联网安装;R1 启用、独立 review、真实批次/企微个人通知、银行样本、K1/K2/事件和自然业务证据、提交/推送/部署/归档继续分别保留边界。不重跑旧恢复。

2026-09-18 G16/G17 本地执行收口(最新入口)

普通 full-r2 的原始结果保持:65 文件/359 用例,326 passed、12 failed、5 timedOut、16 skipped,总计 4879.543 秒。72 迁移、Prisma、4347 服务端单测(另 1 原跳过)、前端 typecheck/build、8 角色正式改密、审批及 8 组默认启用服务端回归通过;完整门禁仍失败,无发布资格。

本轮将其 17 条失败/超时逐项处理:14 条在用观测已有本地定向通过证据,1 条缺 WebKit,2 条冻结差旅原样保留;另外补验原 R75 串行未执行的生命周期与开关备注恢复 2 条。是跨轮、不同测试修订下的身份映射,不是 14 个产品缺陷,也不是最新候选一次全量通过。证据总入口为 artifacts/qa-layout/full-gates-followup-20260918,逐项见 current-disposition.json,所有失败轮次保留。

工作 最终本地证据 边界
G16 账号/服务回归前置 普通 full-local 已接串行强制改密、guest probe、完整发现/forbid-only;聚合 r4 八组通过 七个默认关闭服务套件未执行,不启用 R1
G17a 合同验收 同状态管理对照、只读原整例;r3 前后 2 次正常通过、4 类动作注入均精确非零 新增合同用列表链接;独立复核仍 PENDING
G17b/c 模拟页面 mock-r1 15 passed/2 timedOut;修已定位按钮后 r2 2/2 通过 不加预算、不 force-click;模拟 API 局部阻止 SW,真实 PWA 保留
G17d 在用业务 business-r1 资产/付款/考勤通过;r2 采购/通知/考勤通过;r3 生命周期与备注恢复 2/2 通过 本地合成;r1/r2 失败和串行缺失仍保留
G17c PWA 单独 1/1,通过用时 18.116 秒;A 受控→B 收敛、旧独有缓存 0、新资源加载、无登录回退/静态 404 原 full-r2 的 45 秒未收敛事实不回写,不据单独通过认定并发稳定性已修
G17c 视觉 原矩阵单独 1/1、60.890 秒,12 个 PC 路由项/8 个移动路由项,0 发现 含字面 /system/*,未展开全部系统页,不称全产品视觉覆盖
G17e 精简 删除严格重复 main-flow 入口,保留被业务组/manifest 引用的付款整例,固定保留 PDF 和全部下游断言 冻结差旅不是废弃;旧报销/借款/ERP产品候选和旧冻结包均保留
G17f 当前发现 64 文件/358 用例,缺失/未知均 0,覆盖校验与复核一致 只枚举;临时构建清理使末尾 SHA 再采集失败,原 wrapper exit 1/采集告警保留,不冒充完整回执

全部完整受管轮均 sourceUnchanged/repositoryUnchanged=true、环境 PASS、owner 清理 PASS。局部通过不证明 full-r2 中资产/采购/leave-balances 的 P2028 根因已解决;本轮未调事务超时、删审计、降低并发、加重试或更改产品权限/状态。主会话完整 diff 自检及最终治理/保护/候选以 final-check-summary.json、protection-result.json、candidate-integrity.json 为准;独立仍 PENDING。

剩余工作与下一批执行顺序

  1. G18 本地覆盖合同补齐(先按具体修改面细化实施,尚未执行):OCR 条件明确绑定受管 mock provider 和 job 的真实能力,再验当前修正流程;R108 把冻结差旅初始化替换为当前在用的移动审批夹具,保留离线队列/手机布局/权限断言并隔离旧截图;路由矩阵把通配项展开为经角色授权的真实路由,验证实际到达,404/403 不能充当该页面视觉验收。三项各自小批,不恢复日常 OA 考勤或差旅,不删除缺覆盖证据来求绿。
  2. 运行可靠性与完整集合:对 full-r2 的事务超时、长链及 PWA 并发收敛分别设计受管时序/资源对照,先取得精确阶段证据再决定修复;原并发、零重试和预算不暗改。12 条 live、2 条冻结差旅及上述条件项须明确必跑入口/例外归属/责任/证据;完整集合未闭合前不反复跑全套求绿。
  3. WebKit 1 条:现行设计“不联网安装”;本轮已提仅官方 v2105 到独占缓存的申请,尚无答复,未下载。具备运行时后按原 WebKit 离线敏感证据整例重验,不用 Chromium 抵扣。
  4. R1 与独立审阅:入口收敛/回执消费机制的未完成 AC 保持;完整普通门禁绿、实测成本、干净候选及单独启用批准仍必需。当前 QA、上批产品与 K0 的独立只读审查分别 PENDING,不由本地反例或主会话自检代替。
  5. 外部事实:指定真实付款批次候选处理人与企微个人发送事实、银行样本接受性、K1 保管事实/K2 新绑定、恢复/事件缺口和自然业务验收按既有清单分别补事实与授权。不得重跑已消费旧恢复。
  6. 交付操作:提交、推送、部署、归档仍未授权;没有公网更新结论。借款 T1–T4、报销进度/排序及付款姓名/通知事实展示保持此前本地完成,真实使用验收不由本轮门禁抵扣。

以上是当前余额,不把旧文档中的“场景8尚未处理”“普通门禁尚未接改密”“借款未实施”继续作为现状。整体 task 仍 in_progress;未连接生产/ARM、读取真实密钥配置备份、重跑旧恢复、发送真实通知或付款。

2026-09-18 G16 完整运行与 G17 本地后续(当前入口)

普通 full-r2 已完整结束:4879.543 秒;浏览器 3554.893 秒。65 文件/359 用例发现与最终身份一一对应,326 passed、12 failed、5 timedOut、16 skipped;零重试/重复/未知/缺失,框架总计 17 unexpected。72 迁移、Prisma、4347 服务端单测(另 1 原跳过)、前端 typecheck/build、8 角色正式改密、审批和 8 个启用服务端套件通过。环境 PASS,sourceUnchanged/repositoryUnchanged=true,owner 容器/scratch 清理通过。该失败运行与先前定向回执分别保留,无普通发布资格。

本轮新失败中,2 条冻结差旅原样保留,1 条 WebKit 缺运行时(下载问题仍待答复);14 条在用观测逐项处理,不能称 14 个产品缺陷。16 条跳过为 12 条 live 专属、1 条 OCR 条件、1 条旧初始化不兼容的 R108、2 条 R75 前序失败后的串行未运行;后两条 expectedStatus=passed,不能计为正常条件跳过或通过。

用户连续实施与精简授权下,G17 先按下列最小方案执行,仍不改产品权限/状态/超时或视觉方案,不增加浏览器重试与全局超时,不运行真实操作:

  • G17a:合同原只读整例在已加载列表补共享禁止动作断言;创建反例使用列表链接,编辑/续约/归档用详情按钮。已有独立副本 4 个详情注入非零+前后 2 次正向结果只支持详情场景;补足列表链接缺口后重新核精确失败。主会话反例不抵扣独立 review。
  • G17b:R102 删除动作文字接当前“删除报销单”;关闭已验证的更多菜单再点添加发票,按当前明确关联方式验证,不 force-click 穿透菜单。R125 保留解绑/归档后同文件重传合同,显式选择既有明细和当前上传反馈,不恢复旧自动绑整单。Wave3 按现有 spec 的 lg:static 与侧栏进度次序替代旧 sticky 断言,保留多视口/宽度/溢出和审批内容。R124 先核具体停点;已过时的角色/删除定位按当前合同改,保留移动全链。
  • G17c:公告及 visual-shell 的模拟 API 与生产 SW 路由边界作限定对照;确认 mock-only 场景需阻止 SW 后局部设置,真实 PWA 仍启用。visual-shell 截图另根以保护历史材料,不改布局产品。全页视觉与 PWA 各保留原失败,定向运行带诊断观测,先核是否预算/环境或具体行为问题,不改超时求绿。
  • G17d:R75 通知前置按实际提交拒绝核现行日期/金额/指定明细合同,合成发票使用有效 PDF;保持通知未读/已读/跳转以及后续生命周期、功能备注恢复验收。资产与采购先用原断言在独占库定向重验;本轮服务日志已由运行时间+活动子进程 PID 确认,POST assets/POST purchase-requests 为 P2028 事务超时,GET leave-balances 另列,不放宽事务或移除审计。
  • G17e:按用户精简取舍核两条报销付款整例的重复:两入口目前均调用同一 helper,main-flow 的 preview=true 包含另一入口的全部业务动作及额外 PDF 验证。确认包含关系后收敛为一个完整主链,移除无调用的可选 preview 分支及重复入口;保留审批/付款/回单/审计/AP/票据归档全部断言和原 300 秒预算。原另一入口本轮超时保留,不以退役重复用例改写历史或取得完整门禁资格。
  • G17f:相关定向验证、当前完整发现、逐失败及跳过处置、主会话检查、治理/敏感/diff、旧差异和冻结目录保护、新增量候选及 09-08 状态同步。若仍有性能/环境或未决合同,落具体下一步;不反复全量重跑至绿,R1 实现/启用、独立审查和外部事实继续分列。

证据入口 full-gates-followup-20260918/full-r2.summary.json、full-r2.cases.json 与原受管完整报告。后续测试源码有变化时,本次全量结果只绑定本次冻结输入,不借用为更新后完整候选全绿。

G17e 入口核对:保留被 business-flow 组与 AP/付款 route-manifest 引用的 reimbursement-payment-batch-flow.spec.ts,把已有完整 PDF 检查固定为必跑;退役未被执行入口引用的重复 main-flow.spec.ts。这样现有专用门禁及旧 P2 排除配置仍指向同一完整链,不产生悬空引用或顺便改变安全分组策略;历史文档引用保留追溯。

G17b 接续:mock-r1 为 15 passed/2 timedOut;trace 的动作记录已证 R124 走到末尾旧“删除草稿”确认,R125 PC 停在旧“移除”。分别接当前 dialog 内精确“删除报销单”和行内“移除对应关系”后,mock-r2 仅这两条 2/2 通过(45.3 秒),相关类型检查通过。旧失败保留,不扩预算。

G17c/d 验证顺序:资产/采购原整例、R75 全文件和合并后的付款主链先在同一独占库执行;PWA 与项目全页视觉随后各自单独受管执行,避免把并发压力混成已证明的产品根因。全页视觉仅加逐路由 test.step(脱敏路由标签)以保留超时具体停点,不改路由集合、角色、断言或 180 秒预算;PWA 已有 A/B 失败观测,不额外改动。受管运行期间源码与任务输入冻结,只在本轮 ignored 证据根整理。

2026-09-18 G16 执行中(原本轮计划,结果以上节为准)

G17d 第一轮受管结果:g17-business-r1 共 7 条,3 passed/1 timedOut/1 failed/2 串行未执行,496.44 秒;资产整链、含 PDF 的保留付款整链和企微考勤边界通过。采购已越过建卡,提交前当前页报服务错误;R75 仍在合成提交处 VALID_001,不能把旧 P2028 或日期/金额推断当已证根因。环境/源码/仓库不变/owner 清理均 PASS。

限定接续方案:R75 不再选择费用接口首行(seed 首行为差旅机票,会要求完整差旅摘要),显式选择既有 office_postal 快递费用,与合成通知业务及已过付款主链一致;提交失败仅记录状态/原因码/字段名,不输出 payload。采购原提交动作确实先 PATCH 保存、再 precheck、最后 submit;补三个正式阶段的状态断言并处理现行预检确认,不把保存失败等成最终 submit 超时,不放宽审批权限或预算阻断。下轮仅采购及 R75 全文件。

G17d 第二轮 g17-business-r2:365.142 秒,采购完整链/考勤边界/通知完整场景通过;生命周期页面入职及转正已通过,最终 API 断言却因默认 directory scope 不返回 employmentStatus 而失败,治理备注仍串行未运行。对齐 PeoplePage 已有管理查询,加 scope=management,保留 admin 正式权限与 active 断言;下一仅重验生命周期和备注恢复。环境/源码/仓库不变/owner 清理均 PASS。曾在本轮 artifact 调用者指定独占日志路径,但受管 env 白名单未转发,未产生该日志;不扩大白名单、不借此宣称取得服务日志或 P2028 根因,原日志不重写。

用户已批准按后续规划连续执行;官方 current 回读为本 task。新证据根 artifacts/qa-layout/full-gates-followup-20260918,基线保全 290 项既有差异、25 个保护目录及 7656 个历史文件,旧冻结包不覆盖。仅本地合成;inline 自检不抵扣独立复核,R1 启用、真实环境与发布边界保持。

  • 核 current、G16 与既有差异,创建增量基线。
  • G16a:核 WebKit 缓存和运行条件;缺失时保留 NOT_RUN,不下载或用 Chromium 替代。
  • G16b:共享串行合成改密前置接入普通 full-local,在回归/浏览器前完成;完整发现、PWA、fail-fast、零重试和原并发保持。增加初始化失败阻断与顺序反例。
  • G16c:同一个 active 合同增加管理身份正向对照;在真实加载后的列表/详情注入四类动作逐一证明负向断言失败;保留原只读整例。完整门禁及独立复核结论分别记录。
  • G16d:场景 8 对齐现行强制经理解析的 409/no_manager_found 合同,证明草稿且无工作流;不修改人员关系规则/产品权限。后续原 9–23 按实际结果检查,不提前计通过。
  • G16e:旧日常 OA 请假离线重放/冲突两个用例及专属辅助移除,替代合同引用现有企微只读边界测试;报销离线敏感证据用例保留 WebKit。冻结差旅原两条完整保留、继续归 full-local,记录其当前角色不可达与缺少重启验收,不以删/skip消除完整门禁阻塞。
  • G16f:定向必要验证后执行普通 full-local;前置失败即停止,保留完整发现与真实未运行分母,不据局部通过取得资格。整理增量候选、保护校验、治理及余项。

WebKit 当前缓存只有 Chromium/ffmpeg,运行条件缺失,NOT_RUN 不抵扣验收。合同定向 7/7 通过(原只读/静态反例、管理正向、4 个真实页面注入反例),浏览器测试专用类型检查通过;完整反例门禁/独立复核仍未闭合。场景 8 当前源码仍期待缺经理跳过,但 workflow 单测和实现要求必需经理缺失时失败关闭;以现行合同修测试,不恢复旧规则。真实经理缺口、指定真实批次处理人/企微结果、银行样本、K1/K2、独立复核与发布继续分列。

G16 聚合第四轮通过与普通完整门禁接续

server-regressions-r4 477.318 秒,exit 0;八个默认启用套件全部通过,七个默认关闭可选套件未执行、不计通过。通知 1–10 步完整通过,包括新 webhook 合成密钥的加密存储/脱敏读取/本机失败 provider、旧合成字段 encrypt/decrypt 迁移。环境 PASS,sourceUnchanged/repositoryUnchanged=true,归属核验及容器/scratch 清理通过;限定回执 normalReleaseEligible=false。

下一执行普通 full-r2:保持完整发现、全部非 manual 浏览器集合、零重试、原并发及内部 fail-fast;WebKit 官方运行包下载问题仍待答复,未下载,缺运行时按实际失败/未覆盖留痕。冻结差旅用例继续保留,不开旧业务权限求绿。运行中源码/测试/task/spec 输入冻结,只读检查与本轮 ignored 证据整理可继续。完整结果产生后按真实用例身份归类,不以本次八组成功或此前定向结果替代整道门禁。

G16 聚合第三轮与通知密钥合成夹具

server-regressions-r3 457.215 秒,exit 1;环境、源码/仓库不变和 owner 清理 PASS。前七个启用套件通过,通知步骤 1–7 通过,第 8 步失败:旧夹具给 mock 渠道传 secret,却期待 secretConfigured=true。现行 normalizeConfigJson 只为 wecom_webhook 保存加密配置,mock 返回 false 是正确合同,不修改产品使 mock 保存密钥。

最小修复方案:第 8 步改为 wecom_webhook 与固定 loopback :9 地址,仍使用本轮合成 secret;保留脱敏和无明文返回断言,增加数据库 hasSecret=false/hasSecretEncrypted=true。渠道测试 API 保持 HTTP 200,provider 必须为 ok=false/wecom_network_error/retryable=true,证明读取加密配置后进入本机失败路径。1–7 的模拟投递和 9–10 的合成旧字段迁移保留,仅操作独占合成库,不读取真实密钥、不发送外部通知、不重跑恢复。语法检查后执行 server-regressions-r4,再按实际终态继续普通 full-local。

G16 聚合第二轮与本地模拟通知前置

server-regressions-r2 439.002 秒:smoke、去重、审批、采购、资产、审计、OCR 七个启用套件通过,通知套件失败。已核原因是本轮 QA 统一设置 IM_NOTIFIER_ENABLED=false,导致原通知合同的模拟投递为空;不是企微真实发送失败。原脚本只创建 mock 及 loopback :9 失败渠道,空库seed不带真实通知配置,网络namespace零外部路由,WECOM_ENABLED/EMAIL_ENABLED仍false。

最小修复:普通 full-local 恢复 qa_export_app_env 原有的 IM_NOTIFIER_ENABLED=true 供聚合回归;retained-server-local 仅 server-regressions 使用 true,workflow-actions 和限定浏览器继续false。保持 mock_sent、本机失败重试、disabled 明确跳过、合成秘密加密迁移等原断言,不连接真实企微/不读真实密钥。fixture 接线测试捕获实际子进程布尔配置,随后重跑同一聚合套件。七个默认关闭可选套件不计通过。环境/源码/仓库/清理 PASS。

G16 聚合回归首轮

server-regressions-r1 350.969 秒:smoke、去重、严格预设模式的 workflow-actions 和采购整组通过,资产组停在最终断言。根因已核为编号旧前缀 ZC 预期,当前资产规约和实现使用 FA;状态 in_use、责任人与位置符合当前流转。仅把编号断言改为 FA 年份序号合同,其余领用/归还/调拨/盘点/审计检查保留。后续审计/OCR/通知未运行,disabled 的可选组也不能计通过。环境/源码/仓库/清理 PASS。

付款模式源码反例 2/2 已验证:预设批次模式只接受精确 409,返回 200 不能切去 legacy 成功;恢复响应驱动分支的实际源码变异会被抓到。登记到稳定 QA 测试后再次执行。WebKit 官方 dry-run 已核 v2105,因原方案“不联网安装”约束已异步询问是否只准官方包到独占目录,尚未得到回答前不下载、不改系统依赖或旧缓存。

G16 定向审批回归

workflow-r1 整脚本通过,386.224 秒;原场景 8、付款批次拒绝直接付款、不同状态拒绝、非财务拒绝、并发拒绝、票据解绑重绑及经理恢复均执行。环境 PASS、源码/仓库 unchanged、owner 清理 PASS。工具完整回归 45/45,另环境 13/13、先行接线 12/12,不累加成不同业务用例。随后自检把付款分支选择收紧为测试开始时 PAYMENT_BATCH_ENABLED 的预设模式,禁止根据响应状态选择宽松分支;下一次聚合回归会再次覆盖该更严格版本。

聚合回归前将 smoke SAMPLE_FILE 固定到本轮 scratch 的不存在路径,使原脚本只生成自己的合成 fallback,不读取共享临时样本。旧成功/失败回执保留。未完成普通 full-local、WebKit、冻结差旅与独立复核。

G16 首次普通运行与补充实施边界

full-r1 999.419 秒,65 spec/359 用例完整发现;72 迁移、Prisma、服务端 4347 passed/1 原有 deploy-init integration skipped、前端 typecheck/build、8 角色正式改密通过。workflow-actions 越过场景 8,于场景 19 旧直接付款 200 预期失败,实际 409/payment_batch_v1_required。后续 server-regressions 和全部浏览器未运行。环境终态 ENVIRONMENT_INVALID 是 guest probe 尚未到达、bootstrapObservation=null;原生 online/namespace、源码/仓库不变和 owner 清理证据均保留,不改写终态。

继续在同一本地范围实施:

  • 普通 full-local 在启动 server 后、业务回归前执行 guest probe(浏览器重启后仍再测);让环境前置失败先阻断回归,保留普通 fail-fast。完整发现和浏览器显式 forbid-only。
  • 给原受管执行器增 retained-server-local,仅允许枚举的 workflow-actions/server-regressions,复用一次性库、构建、合成改密、guest probe及清理,单独选择回执且 normalReleaseEligible=false。不是完整门禁的替代,不新增真实写入或跳过开关。
  • 场景 19–22 按正式响应区分现行 batch-required 边界与仍保留的 legacy-disabled 合同。batch-required 分支检查批准/草稿/审批中/驳回/取消状态直接付款均拒绝、非财务 403、重复及并发请求拒绝、支付字段和发票均未变;不关闭付款批次开关求旧成功。原 legacy 分支保留,未执行就不宣称其成功路径通过。修正已改名负金额夹具引用,删除已无调用的旧经理任务/skip 辅助。
  • 定向真实回归先跑,按实际后续停点修当前在用断言;本轮不能把新定向通过拼接为普通 full-local 全绿。独立、WebKit、冻结差旅、R1 与外部批准仍开放。

2026-09-18 G12–G15 本地收口回执(当前入口)

官方current为本task,会话来源有效,状态仍in_progress。证据入口artifacts/qa-layout/retained-gates-closeout-20260917,受管运行入口artifacts/qa-flow/retained-gates-closeout-20260917;沿开始日期保留目录,不覆盖旧候选。用户连续执行批准限定本地合成/在用验收,未扩到真实操作或发布。

本轮结果

原58身份及54失败/4超时历史不回写。现53条已有当前合同重验证据(52浏览器、1静态函数),4条明确旧/冻结流程排除,1条WebKit报销离线证据因本机运行时缺失仍NOT_RUN,当前定向重验失败余额0。这里是跨轮逐项覆盖,不是一次53项全量运行,更不是53个已修产品bug;原排除项未批量skip或删除。

  • G12:新增受管retained-local显式选择模式及一次性8角色合成改密前置,保留真实must-change约束。先验证管理员初始浏览器进入改密页,再由正式API串行验证8角色改密、旧密码401及新密码登录;业务并发阶段不改密码。普通full-local尚未接入该前置,normalReleaseEligible=false。
  • G13:页面定位、角色入口、明确绑定明细、企微只读边界与上海日历日合成输入已对齐。两条主链复用辅助流程;正式小额manager→finance审批、财务审批当前页completed、制单人403、无回单409、合成有效回单的worker失败留痕→人工更正→独立复核→付款登记、付款后只读/回单不可作废、审计/AP/票据归档/登出均在r6整例通过。预览只验UI签名/弹窗/正式PDF字节,不冒充headless原生阅读器渲染。
  • G14:r3的真实PWA A受控→同profile切B自动收敛通过,旧独有缓存0、新资源实际加载、worker摘要对应、无登录回退/静态404;根因是构建继承NODE_ENV=test,已仅固定Vite构建子进程production,服务仍test。WebKit保持未验。
  • G15:原58逐项结果映射、断言替代合同、当前QA和上批产品独立复核问题、4类外部事实清单已整理。独立review仍PENDING;最终治理/保护与候选摘要以同目录final-check-summary.json和candidate-integrity.json为准。

执行与失败过程

运行 完整结果 边界
auth-r2 1/1管理整例与8角色前置通过 非全量认证套件
mock-green-r1 11/11通过 10条历史映射+1合同DOM反例;DG7、leave另在先前轮有通过
real-cases-r1 11通过/13失败 初轮24条,不改旧报告
real-cases-r2 中断,无最终JSON 环境/输入/清理有回执,过程日志不补造PASS
real-cases-r3 8通过/5失败 包含真实PWA通过,零重试/跳过
real-cases-r4 浏览器前主动中断 内层dropdb因代理退出失败;外层owner校验删除容器/临时目录,ENVIRONMENT_INVALID,不计业务通过
real-cases-r5 1通过/4失败 手机报销整例通过
real-cases-r6 3通过/1失败 两条付款主链、进度通过;管理员旧入口预期失败
real-cases-r7 1/1通过 完整PC/移动角色矩阵及admin批次复核403

所有完整受管轮均核sourceUnchanged/repositoryUnchanged与归属清理。类型检查r3/r4/r6/r7通过;较早browser-types-r2因Node类型入口选择不对退出2,后续使用既有server类型目录,无安装。QA账号9、环境回归46、PWA工具26各自通过且分列,不累加为业务覆盖。r6/r7的72迁移与前端typecheck/production构建通过。未改产品逻辑/UI/schema;旧文档登记与Browserslist告警保留。

治理/process、四task validate、CURRENT敏感扫描、shell语法和diff检查通过;docs为0错误/既有22未登记文件告警。23个旧目录6946文件的精确集合/SHA、旧差异快照、HEAD/index均保持;本轮只在8个原脏文档/spec路径上追加计划与回执,其余旧差异内容不变。新增复核包另根冻结,独立仍PENDING。

后续余额与顺序

  1. G14剩1条WebKit:补具备该运行时的受管本地环境后重验,不用Chromium冒充。
  2. 普通发布门禁另行接入串行合成账号初始化;明确4项旧/冻结观测在完整发现集合中的归属,旧日常OA流程与冻结差旅分别处置,不暗中skip/删冻结测试。现有服务端场景8/经理缺口仍按原记录核验,未被本轮浏览器结果抵扣。
  3. 原AC7的同状态管理权限正向对照和完整独立反例门禁尚未闭合;本轮合同只读+DOM泄露反例只支持其部分条件。R1仍需普通full-local全绿、完整耗时/覆盖和单独启用批准。
  4. 当前QA、上批报销/借款/ERP及K0等候选接独立只读复核;真实批次处理人/企微个人发送、银行样本、K1保管事实及K2新绑定按清单分别取得事实与授权。K0合成、历史恢复及新借款本地通过互不替代。

不连接生产/ARM,不读取真实配置密钥备份,不重跑旧恢复;未提交、推送、部署、归档、发送真实通知或付款。公网未据此更新,task原R1/完整验收未补勾。

2026-09-17 G12–G15接续执行(当前入口)

用户批准继续推进,官方current已切回本task。只做本地合成环境及在用验收;基线与独立输出为artifacts/qa-layout/retained-gates-closeout-20260917,包含上一批借款/ERP候选的保护。原58观测及此前15重验/4排除不回写。

  • G12:真实隔离DB的首次登录→强制改密→新凭据重登录,预置仅由运行所有者串行完成;测试并发阶段不改密码。运行随机初始密码经正式改密成为既有公开合成fixture值;不改共享helper或产品强制改密。
  • G13:逐例重验10个页面/fixture观测与合同详情/AP权限;先复现,沿当前合同修测试,不降低权限或恢复旧布局。
  • G14:PWA双生产构建/同profile/真实SW已通过;本机WebKit缺失,1条仍NOT_RUN,不下载、不以Chromium或mock抵扣。
  • G15:完成在用观测结果映射、独立复核问题清单、真实批次/银行样本/恢复事实核查清单及最终保护/治理回执。

复用现有测试入口和隔离机制,不启用R1或宣称全量发布门禁通过。inline独立复核PENDING;不连接生产/ARM、不读真实配置密钥备份、不重跑旧恢复、不提交推送部署或发送真实通知。

执行计划与阶段 0 基线记录

2026-09-17 G9–G11 本地执行回执(当前入口)

本轮最终交接合并到 import-parser-fix-20260917/review-candidate-r2,门禁分类/运行日志与浏览器材料的相对路径SHA另列;原报告和旧包不覆盖。重跑移动10项时显式选择 r101-mobile-wip-closeout.spec.ts r6-mobile-unified-design-rollout.spec.ts 并使用新运行名:当前临时config已加入G11文件,不能把无筛选重跑范围当作原10项范围。候选检查和主会话结论分别有记录,独立复核仍PENDING。

58条原观测身份/原报告SHA已逐一核对并分类:26登录前置、24页面/fixture、2已替代断言、3缺浏览器、1后续AP修复待整例、1PWA待定、1冻结差旅权限。按当前范围为40保留合同、14企微摘要/只读边界、4旧或冻结流程排除;企微主办不等于删除摘要/审计验收。原199/54/4/18和58分母不改。

本轮15条历史观测对应的当前用例已取得本地重验,4条明确排除,另39条保留项未整例重验;不是39个产品bug。历史原状态仍保留,新结果单独列于release-gate-triage-20260917/historical-failure-triage.json/md。无新增全量skip、无删用例、无产品UI/权限变化。

  • R12:旧断言要求未知VALID_001原message回显,与09-05安全合同冲突。先红后修,固定安全兜底、合法/非法requestId、注册导入原因断言通过;同文件7项纯源码/函数回归通过,无浏览器/DB。
  • G10:R101三项+R6七视口10/10通过,修复旧首页标题、模糊报销heading和企微文案重复匹配。原导航、卡片、横向溢出、触控、无OA日常表单及截图检查保留。首轮mobile-red因本轮代理误拒loopback而3失败/1中断,未到业务,保留为环境失败;修正仅转发本轮静态源后mobile-red-r2四项分别到达目标红例,再修测试定位。未修改业务页面。
  • G11:R100首页、AP台账切tab、公告截止时钟漂移三项先红后修;公告固定浏览器与合成API共同场景时钟,并增加逾期补签分支。高敏附件删除旧例当前已通过,只补重验、不重复修改。最终retained-green 5/5通过;它与G10 10项覆盖不同用例,7项静态回归另列。
  • 本地仅client/dist只读静态源、合成API和Chromium。新runner前置证明静态200、API404、写405、外部代理403、仅当前loopback转发200;无后端/DB或外部上游,结束后两本地监听关闭。早期network摘要的upstreamConnections=0指外部上游,后续明确分为externalUpstreamConnections与loopbackProxyForwards。WebKit当前缺失,无下载;此环境block SW,不冒充PWA或完整受管诊断。

精确命令见同目录command.json;主要命令为node artifacts/qa-layout/release-gate-triage-20260917/run-mock-browser.cjs mobile-green(当时限定R101/R6)与... retained-green --grep '手机首页和我的页可生成视觉诊断|BIZ8 AP|制度签收公告|高敏附件删除要求'。纯函数回归为cd client && node node_modules/@playwright/test/cli.js test tests/e2e/interaction-pattern-unification.spec.ts --workers=1 --retries=0 --reporter=line --output=../artifacts/qa-layout/release-gate-triage-20260917/static-contract-output。直接筛选重验不是普通发布门禁。

后续39条细化设计已写design顶部:25登录前置、10页面/fixture、合同只读1、AP整例1、WebKit报销离线1、PWA1。保护初始密码必须修改的合同,先规划一次性合成账号生命周期;不改seed为免改密、不并发回写同一账号、不恢复旧日常OA请假/差旅。独立仍PENDING,R1/完整发布门禁未完成,未提交/推送/部署或真实业务/恢复操作。

2026-09-17 58条历史观测分类与在用测试修复

G10 在用移动页定位修复(分类后的限定批次)

后续 G11 限定四个现行合成用例:R100移动首页同类旧标题、BIZ8财务台账需显式切当前tab、公告签收固定截止日期过期引起的时间漂移,以及高敏附件删除原例的当前重验。前三项只修已复现的测试入口/时钟,不更改产品标题、默认tab、签收规则或付款/附件权限;高敏附件例先重跑,若当前已通过则只登记后续修复证据,不重复开发。截图仍新目录、外部网络拒绝、零重试。未知产品行为差异继续保留,不以宽匹配/去断言替代修复。

R101三例及R6七视口仍验证移动首页、报销和企微只读请假说明,不是恢复OA日常考勤。历史停点为“今天”旧标题、模糊“报销”标题和两处企微文案的strict匹配。先在当前构建+原合成API下重现,只更新已证实漂移的定位,采用唯一一级标题/完整固定说明;保留无OA表单、布局/横向溢出/导航/截图等原行为断言,不加first/skip、不改产品样式。

使用现有Playwright测试及本轮只读静态服务器:绑定随机loopback端口,仅服务client/dist,拒绝API和写方法,无上游代理;浏览器其他网络走本地拒绝代理。每轮新输出根,R6截图显式指向本轮新目录,原output/归档截图不覆盖。已有构建可复用,若缺浏览器不下载、不把未运行记PASS。26条登录前置中20条明确落/change-password、2条/login、4条原waitForURL未提供最终URL;当前seed-dev强制改初始密码是安全合同,不修改为false或在共享helper里绕过。其修复需先设计独立合成账号改密生命周期,避免并发套件互改密码。

按用户最新批准接续,官方current已切本task并回读;09-05 B34产品定向回归922/922与前端构建已通过,本task接管门禁分类及限定测试修复。旧“58条不修”是原阶段授权时点,当前允许按在用性先规划后修;不解禁R1,不实施新权限规则、真实数据/外联/提交发布或借款。

  • G9-1:核原58条身份、失败层次、当前源码/合同与是否旧或待精简,形成逐项分类及后续最小验证,不把登录/环境错误混算产品缺陷。
  • G9-2:先修R12当前安全提示断言漂移;保留红例和核心保护断言,补固定兜底/注册原因/排障编号的函数行为,纯本地测试。
  • G9-3:分类后为仍在用组写限定实施顺序、环境前提和验收,不以已过定向测试扣减原58或称全量门禁已绿。
  • G9-4:完成受影响检查、来源SHA和旧差异/冻结材料保护,更新09-08协调入口及独立复核交接。

本轮证据 release-gate-triage-20260917;产品输入与B34增量分开记录。历史原报告来自限定主checkout本地合成诊断,只读,不访问其真实环境配置或运行服务。

2026-09-17 历史发布回执接回(仅本地文档对账)

09-08本轮W8逐条件对账从主checkout同名task implement的“已按本候选例外完成部署(2026-09-09)”接回原文档引用,并核现有脱敏postcheck-result.json;不复制整份旧文档覆盖本副本,也不读取原始发布日志/环境或连接远端。准确来源/行号/摘要与布尔事实见acceptance-boundaries-20260917的historical-acceptance-review.json及historical-report-facts.json。

四处迁移状态谓词修复已随b87cc55发布;该事实仅闭合追加预检阶段,不代表R1普通完整门禁、阶段B合同用例或58条诊断观测已通过。R1/阶段B继续原冻结,先按保留在用场景分类再另定限定批次,不盲修待精简旧测试。

本次未执行新的发布、真实查询或业务写入;旧“未部署”段落是当时记录,不再代表追加阶段当前余额。原PRD未满足项不补勾,status/completedAt/历史commit不改,不归档。当前G8未提交产品增量仍待独立复核和新的交付授权。

2026-09-08 独立复核与提交授权

  • 用户已独立复核通过归档恢复、输出隔离、全仓回执与摘要校验的 33 文件包;本轮只补记复核结论,不更改获批实现。
  • 用户本轮授权将门禁包与 AP 修复分别提交,并连同已有两个 Trellis 提交一起推送。此授权不包含部署、归档、R1 启用、合同阶段 B 或继续修复 58 条失败。
  • 门禁任务只收口已完成子项,完整入口收敛与 R1 等未完成要求保持挂起;提交不表示整个 task 已完成。
  • 两个其他未跟踪 task(业务观察准备、认证前置)不纳入本次提交;不把业务消息或交接记为完成。

本轮后续增量:归档截图与全仓状态

  • 已保全新截图到 managed-diagnostic-20260907-04/preserved-tracked-screenshots,并仅恢复四张历史截图,登记摘要 14/14 匹配;未改 index。
  • 两个 spec 的截图输出独立隔离,受管入口传入本轮目录,认证/断言不变。
  • 全仓状态/已跟踪内容/index 快照及独立比较;所有退出路径保留后快照。
  • 治理校验 14 张可定位归档证据及反例测试,恢复演练历史私有候选不冒充可本地验证。
  • 针对性验证、全仓差异交审;独立复核待用户。不重跑全套、不推进 B/场景 8/经理缺口/R1,不提交/push/部署。

本轮写入范围:两个 spec 的输出声明;run-web-gates.sh、full-local-diagnostic.mjs、full-local-environment.mjs、check-trellis-governance.mjs;对应 QA 测试及当前 task/既有 spec。旧“27 文件”仅是上一轮计划内交付范围,不是全仓状态;新增污染四张 PNG 已单列保全与恢复证据,旧运行 sourceUnchanged 不再被解释为全仓未变。

本轮结果与回执

  • 新截图保全:artifacts/qa-flow/release-gate-integrity/managed-diagnostic-20260907-04/preserved-tracked-screenshots/,包含四张新 PNG、原/HEAD 摘要及恢复核验。先复制并逐字节摘要核对,再执行仅 worktree 的四路径恢复;未移除 index 条目。最后治理校验仍为 14/14,Git 中 output 的改动为 0。
  • 增量验证/交审:artifacts/qa-flow/release-gate-integrity/archive-output-protection-20260907-01/。两个 spec 除 fs 导入和输出目录声明外,认证/业务断言正文与 HEAD 逐字节一致,见 spec-body-boundary.json;默认和显式输出根均经真实目录创建 fixture 核验,重复加载/spec 之间不共用输出目录。
  • 新回执保留完整 Git 状态和 2906 个 tracked 文件的摘要、类型、模式,以及 index stage entries/flags。验证前后 sourceUnchanged=true、repositoryComparable=true、repositoryUnchanged=true,cleanAtStart=false / cleanAtEnd=false:只说明本轮测试未再污染已记录状态,不宣称当前树干净。未跟踪文件的状态保留,限定源码之外的未跟踪内容不冒充全量字节冻结。
  • 故障回归证明:tracked output 即使命中 ignore 仍被检测;dirty→dirty 同路径二次覆盖可见;index-only/assume-unchanged flags 可见;删除、symlink 及缺少快照不会假 PASS。诊断遇模拟 tracked PNG 覆盖时同时保留 environmentQualified=true 与 candidateIntegrityStatus=CHANGED,固定 PARTIAL/2,不将环境和工作树混为一谈。
  • 最终 QA:下列 node:test 命令 64/64 PASS,0 failed/skipped;另 cd client && npm run typecheck PASS,cd server && npm test -- tests/unit/scripts/check-trellis-governance.test.js 为 3/3 PASS。语法、git diff --check、治理门禁通过,证据校验 14/14。docs registry 仍为 0 errors / 1 warning(既有 22 个未注册 docs),未扩大修复。
node --test scripts/qa/tests/{browser-environment-probe,full-local-environment,pwa-full-local-inputs,full-local-diagnostic-results,verify-full-local-discovery,registered-evidence,visual-output-isolation}.test.mjs
  • 治理覆盖不是“17 条全部验证”:只对归档截图表中 14 个明确仓库文件做机械摘要核对。恢复演练文档的历史私有候选 SHA 缺少可公开定位的仓库文件映射,本轮未取私有参数/产物、未连接生产,不把历史摘要文字计作本地 PASS。
  • 未重跑完整诊断或两个业务 spec;新路径与回执字段由针对性测试/typecheck验证。旧 58 条环境有效观测保留其原候选/原始回执,不回填新版全仓字段、不从 58 扣数;合同续约/归档仍未执行。后续仍按只读归因→阶段 B 原范围推进,R1/场景 8/经理缺口不变。整体 task 未完成,当前增量待独立复核。

1. 授权与独立范围

2026-09-07 最新授权覆盖此前“仅规划”状态:§10 实施及一次完整诊断获批;黑盒探针必须无 route mock、零 refresh、表单可见、原生在线独立采样。产品/业务 spec 不写,R1、阶段 B、31+2 不启动。

本轮冻结写入面:run-web-gates.sh、full-local-diagnostic.mjs;新增 full-local-environment.mjs、full-local-environment-inner.sh、local-postgres-proxy.py、browser-environment-probe.mjs;对应两个新增 QA 测试及 pwa-full-local-inputs.test.mjs 夹具接线;当前任务文档及现有部署/前端验收规约。不得扩到应用源码、业务 spec、发布入口或数据库业务规则。

  • 实施受管环境创建/归属/前置与后置校验,内部 PostgreSQL/socket/代理生命周期归 runner。
  • 实施无 mock 黑盒探针及环境回执消费,拒绝伪标记、缺项、环境漂移和表单可见但 refresh 已发生。
  • 针对性单测、命令捕获及源码变异通过;原集合/并发/零重试/诊断 PARTIAL 语义不变。
  • 最终来源冻结后,完成一次获批完整诊断;此前三次环境前置拒绝单列,新红项只记不修,清理按归属核验。
  • 更新事实与回执并交审;独立复核仍待用户,不以主会话自检抵扣。不提交、push、归档、部署或启用 R1。

§10 本轮实施实测流水(已取得环境有效的新观测,待独立复核)

  • 受管实现和验证证据:artifacts/qa-flow/release-gate-integrity/environment-implementation-20260907-01/。最终对交审版本完整运行下列命令:51/51 passed、0 failed/skipped,见 final-targeted-51.tap。此前 48 项、13 项 IPC 等过程回执各自保留,不累加成新的用例总数。语法检查、git diff --check、Trellis governance 通过;docs registry 为 0 errors / 1 warning(既有 22 个未注册 docs),未顺手修复。
node --test scripts/qa/tests/{browser-environment-probe,full-local-environment,pwa-full-local-inputs,full-local-diagnostic-results,verify-full-local-discovery}.test.mjs
  • 交审包 review-files.json / full-review.diff 共 27 文件(原获准 21 文件中 9 份发生增量变化,另加 6 个 QA 环境/测试文件)。来源层面与实际诊断冻结稿一致;仅任务文档在运行结束后补入结果,不把独立复核状态写成已通过。
  • 三次环境前置尝试(managed-diagnostic-20260907-01/02/03)均在 initialize 停止,原生/browser/业务阶段均未启动,固定非零;独占容器 owner 匹配、已删除,scratch 已删除。原件保留,不冒充三次完整诊断,也不计业务失败。
  • 实测错误为子 user namespace 读取父 namespace 的 EACCES。修复不是忽略权限:由父 runner 经本轮独占 Unix socket 即时直接采样自己的 namespace,子进程核对本轮 ID/PID/当前策略、真实祖先关系及自身/浏览器 namespace;IPC 缺失/错轮/错 PID/错策略拒绝。新增 IPC 反例通过,fake Docker 命令捕获证明 namespace 失败无降级,owner 不符不删除容器。
  • 第四次启动已完成完整诊断:artifacts/qa-flow/release-gate-integrity/managed-diagnostic-20260907-04/。来源冻结于 source-before-diagnostic-04.json,1058 来源文件;诊断及外层环境回执均确认前后 commit/digest 未变。与在线实验的来源比对,646 份应用源码/业务 spec 文件均未变化;新增源只在 QA 环境合同范围。
  • 外层环境 PASS,诊断 environmentQualified=true,整个诊断仍固定 PARTIAL / exit 2 / 无发布资格。原生空白页 online=true;候选探针 freshContext=true、initialSessionHint=false、导航前监听、无 route mock、表单可见、refresh=0、login=0,beforeNavigation/documentStart/afterForm 三个独立原生样本均 true。没有产品内部 bootstrap 观测字段或 AuthContext 改动。

§10 新诊断清单与证据边界

阶段 实际结果 阶段耗时
PWA A/B 与完整发现 PASS,65 文件 / 275 用例 99.742 秒
Prisma 工具链 PASS 16.880 秒
服务端单测 PASS,193 文件 / 1692 项 370.733 秒
前端 typecheck PASS 60.971 秒
候选构建 PASS 103.444 秒
workflow-actions FAIL,场景 8 73.540 秒
server-regressions FAIL,内部 workflow-actions 同一场景 8 113.271 秒
浏览器 199 passed / 54 failed / 4 timedOut / 18 skipped 3179.951 秒
  • 浏览器 275 条均有实际结果,NOT_RUN=0;集合对拍 issues=[],执行全局错误数 0,4 workers、retries=0、flaky=0。58 条失败/超时来自 36 个文件,是本次环境有效的失败观测,不是 58 个独立产品缺陷。旧 207 不恢复决策资格,也不能用 207−58 声称修复了某个确定数量。

  • 18 skipped 保留原字段,其中 expectedStatus/reportedStatus 为 skipped/skipped 的 14 条、passed/skipped 的 4 条。没有开启 live/公网补覆盖,没有把跳过计作通过,也不把这 4 条未归类跳过全部预判成同一原因。

  • 关键样本:payment-reviewer-permissions 为 16 passed / 1 timedOut;唯一超时回到 :397 的旧“更多”点击,:399/:400 的续约/归档仍未执行。R102 为 6/6 passed;contract-detail-workspace 为 3/3 passed;login-portal-ux 为 16/16 passed。这些通过不证明全部条件性风险候选已完成迁移评估。

  • PWA 已越过旧 build 校验和 /portal URL,实际在 :519 等待 navigator.serviceWorker.ready 超时;新 build 升级意图尚未被完整验证。本轮只记录,不修、不推断其根因。该失败有 error-context,但未附带 trace;虽然全套命令显式 trace=on,仍不能宣称每个自建 context 都有 trace。58 条失败中 57 条有可读 trace 附件,PWA 是唯一例外;全体实际结果中有 258 条带 trace,探针 trace 另列,不混入用例数。

  • 两个服务端失败来源均停在 8/23(409 / no_manager_found),不得计成两个独立缺陷;各自 9–23 组仍 NOT_RUN,regression-all 中未到达的后续套件也不补造结果。场景 8 保持未修改。

  • 聚合诊断耗时 4023.446 秒(67 分 03 秒);浏览器阶段含独占库/服务准备与清理为 3179.951 秒,Playwright 原生计时为 3129.611 秒。三者分开记录,均不是普通 full-local 全绿耗时,不用于 R1 成本判定。

  • 原始 Playwright JSON/HTML、截图、视频、trace 保留在 results/full-local-report/。派生 results/browser-cases.json 保留全部 275 条,results/browser-failure-inventory.json 提供 58 条逐项失败与 65 文件分组、源码/策略摘要及原件哈希,results/browser-artifact-coverage.json 单列 trace 和错误行号;派生件没有覆盖原件。

  • environment/result.json 与 cleanup-verification.json 确认四次启动的独占容器均按 owner 核对后删除、scratch 均删除;完整诊断各阶段 cleanupExit=0。源码前后不变,末尾环境复验通过。没有提交、push、归档、部署、生产配置或数据操作。

  • 本次交付只完成 §10 增量及获批新诊断;独立复核待用户。31+2 阶段 1 仍暂缓,合同阶段 B 仍保留原范围但未执行,经理缺口/场景 8/R1 继续挂起。R1 仍需清单清空、普通全绿实测和单独授权。

  • 2026-09-07 最新处置:207 清单撤销真实浏览器红项/工作量/R1 决策资格,原件保留。以下历史运行数字仍是历史观测,不能继续作为当前待修清单。§10 已批准实施与一次诊断,替代此前仅规划状态。

  • 顺序:环境合同审定 → 获批后实施及针对性反例验证 → 独立复核后按明确运行授权重跑一次诊断 → 按真实清单处理;阶段 B 仅恢复原合同详情及续约/归档范围,不扩成 31 文件迁移。场景 8、经理缺口、R1 保持挂起。

  • 外层包装在本地 artifacts 有脚本、摘要和运行记录,问题是未进入受管执行合同,不是完全没有留痕。撤销旧清单资格不删除这些调查证据,也不宣称全部失败同根因或已修复。

  • 用户已批准方案和两个边界,附先摸清 full-local 红项的前置条件。已 task start;初始阶段 0 及补充准备已完成,当前只交付另获批准的阶段 A §9 诊断子项,R1、其他阶段 A 与真实发布未开始。

  • HEAD=66f25b1、本地 origin/main=492920c;原 .trellis/tasks/09-06-payment-observation-readonly-preparation/ 全量保留,本轮不修改或归档其文件。

  • 当前 inline,implement/check manifest 保持合法空文件;实施由主会话直接完成,不派 implement/check sub-agent。

  • 不调查更多历史候选;已经独立复核的只读追溯是输入,不重新把“未找到回执”升级为“从未执行”。

2. 影响范围与复用入口

责任 拟涉及文件 约束
验证阶段与 skip scripts/qa/run-release-gate.sh 复用原 static/full-local,不复制第三套执行器
全套结果采集 scripts/qa/run-web-gates.sh 保留本地隔离 DB、服务端全量回归及 E2E,不误接生产环境
候选结果与持久化 scripts/qa/run-local-candidate.sh、verify-local-candidate-results.mjs、一个共享回执模块 full/focused/list 原有含义不变;不缩减 manifest
写入前准入 deploy/trialrun/production-identity-bootstrap.mjs、deploy-existing.sh、deploy.sh 同一验证器、无循环、无纯布尔放行;生产前后置合同不退化
原用例恢复 client/tests/e2e/payment-reviewer-permissions.spec.ts 只改合成 fixture 和当前详情验收,不扩大到权限产品代码
回归 scripts/qa/tests/ 与 server/tests/unit/scripts/ 相关用例 按真实调用事件及集合判定;旧 fixture 只能补真实依赖,不能加 bypass
稳定合同 现有 deployment-trialrun、frontend-react-vite-design spec 及必要的现有操作手册 独立复核规则新增与兼容性收紧,不顺带改 Trellis workflow/hooks

最终文件清单随已批准方案内的最小实现核对;若需改变业务权限、状态机、schema、migration、seed、flag、通知 routing 或真实数据,停止并另行请求批准。

3. 实施顺序

阶段 0:原样基线,完成后停下交审

  • 读取现有 runner、环境、Prisma/seed、外联及清理路径,确认 full-local 会写本地合成测试数据,不能冒称 SQL 层只读。
  • 使用独占 network=none 临时 PostgreSQL、无外网网络命名空间和仅 loopback 的本地服务;清空继承环境,仅保留明确测试参数。既有生产/业务容器不操作,数据库不借用共享业务库。
  • 原样执行 bash scripts/qa/run-web-gates.sh full-local 一次;Playwright 配置零重试,无 grep/shard/only 参数,额外 reporter 仅采集结果,不替换 runner 或改变选择。结果 exit 1,见第 7 节。
  • 保存发现错误、实际执行及未运行阶段、退出码、原始日志和脱敏红项清单;未形成完整浏览器集合,分母仍未知,不绕过前置冒充 full-local。
  • 清理本次独占资源,确认已跟踪源码和旧业务包不变;本轮交用户审阅,等待新增阻塞处理范围及 R1 启用时机决策,不自动进入阶段 A。

阶段 A:先建立入口与回执故障检测

  • 前置更新:用户已批准阶段 0 补充三项范围,但 PWA 选择及负金额诊断冲突仍按第 8 节交审,尚未进入阶段 A。
  • 审阅批准后加载 trellis-before-dev;核对当前源文件仍与规划事实一致,冻结模式/覆盖/跳过合同。
  • 先写纯验证器和隔离命令捕获反例;证明现有无回执部署与仅计数记录不能满足新合同,不先修合同用例掩盖缺口。
  • 实现共享回执采集/验证与原子持久化,绑定真实候选、预期/实际 spec 和用例、筛选条件及逐项结果。
  • 复用既有 ci-release 发布前阶段为无部署副作用的 verify-candidate 路径;保持真实发布身份/迁移链,无重复构建/部署或调用循环。
  • 为所有普通写入入口建立同一验证器的集成与远端写动作零计数测试;真实强制点的接入/启用交付边界在阶段 0 审阅后单独批准,不能用本 task 完成自动开启,也不引入永久 bypass。纯只读 preflight 保持独立。
  • 收紧两个 project-wide skip,缺记录拒绝,有明确批准引用也只得 PARTIAL/非零;不得生成发布资格。
  • 保留 local-candidate full/focused/list 判定并持久化各自回执;不以一张定向回执替另一 profile。

阶段 B:再恢复合同只读详情用例

  • 用当前详情入口和完整合成 fixture 替换旧菜单操作;先断言详情与生效状态加载。
  • 真正执行新增/编辑/续约/归档负向断言,并以同一业务状态下的管理身份作对照。
  • 在隔离副本中分别暴露续约和归档动作,证明对应断言非零失败;还原后回归通过。不得把试探改动留在工作区。
  • 若发现真实产品权限缺口,停止该分支、保留失败并请求额外范围批准;R1 不启用、普通发布资格不成立,不放宽测试或权限。机制交付评审与新权限修复决定分开。

阶段 C:整体验证、只读复核与交付

  • 核对原部署安全、来源和 49 项 db 生命周期测试仍有效;变更 fixture 不减覆盖、不削弱 fake 工具目录与身份约束。
  • 运行全部回执/入口/skip 变异;移除真实源码中的一处保护必须使相应反例变红,不以 grep 某段源码存在性验收。
  • 在本地隔离前提具备时执行完整非部署验证,核对真实结构化回执;任何其它失败继续阻断,逐项报告,不修未获批的旁支。
  • 更新相关现有 spec/docs;涉及治理/发布控制的变化交只读独立 review,reviewer 不改代码。不得用本轮主会话自检冒充独立复核,不派 implement/check 代理。
  • 运行 task validate、治理、敏感扫描、git diff --check;提交当前 task 的完整 diff 给用户审阅,不自动 commit/push/部署/归档。

4. 必需反例矩阵

类别 注入/输入 预期
入口绕行 ci-release/all/deploy、bootstrap、deploy-existing、底层 deploy 直接运行,无有效回执 发布写动作 0;不依赖调用者名称相信“已检查”
正常链 同一冻结候选的完整有效回执 原验收/部署顺序正确;发布只触发一次;已有生产前后置仍被调用
模式冒充 focused/list/直接 grep/project-wide 回执改名,或置 GATE_PASSED=1 拒绝发布
来源漂移 换 commit、dirty tracked/untracked、策略/config/依赖输入变化 拒绝旧回执
范围漂移 缺一个 spec、同 spec 少合同用例、错源/重复/未知用例、shard/grep/only 拒绝;计数相同也不能通过
结果漂移 exit=0 但受管用例 failed/skipped/timedOut/interrupted、重试绿或 expected-failure 拒绝
留痕失败 回执缺失、截断、写入失败、没有结束标记、运行中断后残留 INCOMPLETE/FAIL,不能发布;不删除唯一证据
skip 纪律 两个开关分别与组合,缺理由/批准引用/阶段范围 非零,禁止无记录跳过
获批诊断 真实引用的局部诊断,记录齐全 PARTIAL/非零、明确未覆盖,不给普通发布资格
只读前置 PRODUCTION_READ_ONLY_PREFLIGHT=1 仍只读退出,无发布回执、无后续写动作
合同边界 生效详情加载,reader 与 manager 对照;分别暴露续约/归档 reader 反例红;正常 fixture 绿,断言确实到达
部署数据安全 原 existing/initialize、健康漂移和无 --no-deps 等反例 原有隔离门禁仍红;本轮不实际 initialize

变异覆盖入口、profile、来源、集合、skip 五类保护;每类验证真实执行行为,而不是确认脚本出现某个字符串。测试只修改隔离副本或受控 fixture,清理自身临时进程,不读/改真实 Docker、SSH 或生产环境。

5. 拟执行验证命令与条件

以下命令用于实施阶段,本轮没有执行;新测试文件名以批准后新增的实际资产为准。

node --test scripts/qa/tests/verify-local-candidate-results.test.mjs
node --test scripts/qa/tests/check-flow-coverage.test.mjs scripts/qa/tests/check-minimal-profile.test.mjs
cd server && npm test -- tests/unit/scripts/deployment-db-lifecycle.test.js tests/unit/scripts/deployment-safety-contract.test.js tests/unit/scripts/check-source-provenance.test.js

新增回执/入口单测按仓库现有 Node test 方式运行;触及 Shell/Node 文件各做 bash -n/node --check。合同精确 Playwright 用例使用本地 Vite、合成 API mock、--retries=0,不读取生产合同。

完整验证只调用新验证专用模式,不能为了测试门禁执行带真实 deploy 阶段的 ci-release/all/deploy。发布入口集成与变异一律使用隔离命令捕获 fixture。真实 full-local 涉及本地数据库准备/回归,必须先满足原隔离目标与无外联要求,不能向生产 env 借配置。

开发中 dirty tree 的测试可作为诊断,不作为后续提交的发布凭证。只有另获提交授权并冻结干净候选后,才生成该 SHA 的可发布回执;如果当时仍有其它全量失败,保持阻塞,不能先部署再补证明。

6. 规划验收与当前状态

  • 用户批准立项;创建独立 planning task,未启动实施、未更改原业务包。
  • 按已有调用链与用户确认事实收敛 PRD;不重复历史取证。
  • 复杂任务配齐 PRD/design/implement;默认 inline,不伪造未来 sub-agent 上下文。
  • 用户审阅通过普通发布无豁免、skip 获批诊断及回执集合合同;附阶段 A 开工前先提交 full-local 红项清单的条件。
  • 阶段 0 完整运行结果及未覆盖边界交审;R1 强制点生效与首次部署独立重跑要求见 PRD 后续授权关口,不计入 task 完成标准。
  • 产品实现、独立复核、提交和真实部署:均未开始。

7. 阶段 0 原始 full-local 基线(2026-09-06)

7.1 运行事实与来源

  • 实际命令:bash scripts/qa/run-web-gates.sh full-local,原始入口完整运行一次,没有编辑 runner、测试或产品源码。
  • 时间:2026-09-06 17:06:55–17:16:53,Asia/Shanghai;耗时 598 秒,full-local 与隔离包装器均 exit 1。
  • 候选完整 SHA:66f25b1fa81d4acd27929c2900d8d5b531277268;本地 origin/main=492920c。两个未跟踪 task 目录仍在,因此这是 dirty 本地诊断,绝非该 SHA 的可发布回执。
  • 持久证据:artifacts/qa-flow/release-gate-integrity/baseline-20260906-02/ 下的 baseline-summary.json、full-local.log、discovery.json、discovery.log、起止/退出标记、源码摘要和清理复核。baseline-summary.json 是本轮诊断汇总,不是阶段 A 的回执模块实现。
  • 前一次准备记录单独留在 baseline-20260906-01:预枚举因 PWA 构建输入缺失退出,没有进入 full-local。第二次包装器保留同样的预枚举错误后继续原始 full-local;所以是两次只枚举、一次完整入口运行,不是失败后重试至绿。没有覆盖第一份失败记录。

7.2 隔离与输出边界

  • PostgreSQL 使用本轮独占的 postgres:15-alpine 容器,network=none、临时 PGDATA,不借用已有业务库或操作其容器。应用、Prisma、回归及枚举运行于独立网络命名空间,仅 loopback,无外网路由;TCP 代理只连接本轮 PostgreSQL Unix socket。
  • 清空继承环境,仅传入必要工具路径和明确本地测试配置;真实服务凭据不透传。存储指向本轮临时目录;复用已有隔离 Python 的 xlwt/xlrd 依赖,未安装或修改依赖。
  • 原始 full-local 包含建库、迁移、seed 和业务写回归,因此本轮“只读”指产品与生产不改,并非测试数据库只读。所有业务请求只进入本地合成库。
  • 额外 PW_TEST_REPORTER 使用已安装 Playwright 的 JSON reporter,只增加结果输出。E2E_MODE=local、CI 未设置、retries=0、workers=4,manual 目录仍按原配置排除;未加 spec、grep、shard 筛选,未使用两个 project-wide skip。
  • 原有 client/test-results 与 client/playwright-report 先保全,结束后已恢复;本轮报告单独保存。临时数据库剩余计数=0;自建容器、代理、服务、网络命名空间与临时存储均已清理。
  • 所有已跟踪文件前后 SHA-256 校验通过;原业务准备包全部文件摘要未变。工作区仍只有原先两个未跟踪 task 目录;未提交、push、归档、部署或碰生产。

7.3 实际结果和未覆盖

阶段 本轮结果 范围限制
Prisma generate/check-generated、临时建库/migrate/seed、Prisma validate PASS 只证明本地准备完成
server npm test 192 文件 / 1680 tests PASS 不替代后续真实 DB 回归与浏览器
client typecheck 与 build PASS 不替代页面验收
本地 server readiness PASS 不是生产 /ready
regression-workflow-actions 第 6/23 场景组 FAIL;预期 HTTP 400,实际 200 1–5 组完成;6 组未完成;7–23 组未运行,场景组不冒称单条用例
server regression-all NOT_RUN 原入口 fail-fast,未到达
E2E 后台 job 模式切换及 Playwright full NOT_RUN 实际浏览器用例执行 0;总用例分母未知
独立 Playwright --list 预枚举 exit 1:PWA_BUILD_A_DIR_missing 发现流程未完成,报告 suites=0 不代表仓库没有测试

结论:取得了原始入口的失败基线,尚未取得“整套当前红几项”的完整分母。 一个 full-local 实际停止点和一个独立发现阻塞,不能相加写成“全套只红两项”,更不能以 1680 项单元测试绿声称候选合格。

7.4 新增阻塞及源码解释

  1. workflow-actions 的负金额夹具与提交重算不一致。 server/scripts/regression-workflow-actions.sh:991 的 negative_not_allowed 场景绑定合成发票后,仅通过 :266 的 setter 把报销表头 total_amount 改成负数;:997 要求提交返回 400,本轮实际 200,因此 error code/detail 与无 workflow instance 的后续断言均未到达。当前 server/src/routes/reimbursements.js:4021 在提交时先按明细重算,再 :4026 调用负金额校验;:1299 的重算会覆盖表头。源码支持“表头注入被重算覆盖”的夹具漂移解释,不能据此说真实负金额被批准或付款。本轮不改夹具、不放宽断言、不绕过重算;新的有效负金额测试及应覆盖哪个入口仍待最小修复范围批准。
  2. 无参数 Playwright 全套连发现阶段都缺 PWA 双构建前提。 client/tests/e2e/pwa-cross-version-upgrade.spec.ts:40 在模块加载时就要求 PWA_BUILD_A_DIR,随后还要求 B 目录和两份 SHA;缺失会在 :66 抛错。现有 scripts/qa/run-pwa-cross-version-upgrade.sh:51/:52 先准备两份构建,并在 :56 起传给该专用测试;当前 full-local 不准备或传递这些输入。本轮两次 --list 均独立复现首个缺失错误。这不是合同用例超时,也不能通过排除 PWA、填假路径或声称只需修合同来消掉;本轮未修。

以上只补当前源码解释,不追查这些阻塞持续了多久,也不调查更多历史候选。

7.5 保持未知的两项与下一步

  • 合同只读用例:旧入口漂移已有上轮独立复现,但本轮 Playwright 没运行,不能记成“本轮又失败 1 项”;续约/归档边界仍未获得本轮验证。
  • R102 主链路:本轮未运行,历史“编辑”按钮问题在当前候选是否仍存在仍未知,不靠源码猜测或单元测试绿抵扣。
  • 不进入阶段 A,不修产品、不调整权限、不排除红项,不启用 R1。先请用户审阅新增两个阻塞,明确最小测试前提/夹具修复与补测范围;完整浏览器分母补足前,不建议决定 R1 随本 task 强制生效。
  • 普通发布无豁免、获批 skip 仅 PARTIAL/非零、R1 独立启用、首次真实部署独立重跑的批准边界不变。本轮只有主会话自检,没有冒充独立复核;业务包仍可独立交付,未代发真实消息。

8. 阶段 0 补充范围与决策待审(2026-09-06)

最新批准:PWA (a) 已通过,保留文件间并发,--retries=0 属于 R2;负金额按用户指定的“场景改名归位 + 原函数直接单测 + 不可达性规约”三件事实施,不沿用本节旧的待审替代方案。执行顺序:PWA helper/归属回归 → 金额分层测试 → full-local。阶段 A、合同用例、其他新红项、R1 启用及提交/push/部署仍未授权。

  • 用户批准 PWA 输入归属决策及实现、负金额夹具恢复意图、重跑 full-local 三项前置范围;明确 PWA 方案先审。不修合同或其他清单红项,不放宽断言、不缩集合、不进入 A、不启用 R1。
  • 只读核对 PWA 专用供给方、顶层输入读取、Playwright 全量/候选子集区别和现有单 worker 规约;建议 (a),具体拆分与成本见 design.md 第 8 节。
  • 将“每个非 manual spec 都须有覆盖归属”的要求补进 R2;(a) 的排除集合为空,不为 PWA 创建豁免。
  • 只读发现负金额的前置正明细守卫,现有 spec 与单测均支持。指出“负明细 + 原 total_amount 诊断断言不变”的冲突,不自行将更早的正确拒绝定性成产品缺陷。
  • 用户审定 PWA (a),只增加双构建;明确拒绝默认全局单 worker,保留文件间并发,固定零重试属于 R2。
  • 用户批准金额分层:黑盒场景改名归位、精确明细诊断与 itemIds/无 workflow;原总额函数直接单测及不可达性规约。
  • 实施共享 helper/两个入口/源码归属验证,17 项 Node fixture 回归通过;PWA spec、route-manifest 和 Playwright 全局配置未动。
  • 金额代码及针对性验证:原函数仅新增既有 __testables 导出,12 条直接单测通过;连同前置明细/提交副作用测试共 43 条通过。随后 full-local 第 6/23 组真实 DB 黑盒验证通过,进入第 7/23 和第 8/23 组;不是以单测抵扣黑盒。
  • 独立本地环境 full-local 补跑一次,保存发现/执行/未运行结果:第 8/23 组新增失败后按原 fail-fast 退出,未修该项或跳过前置。275 条浏览器用例仅枚举、执行为 0,完整红项执行分布未取得。

本节最初提案预计涉及两个 runner、共享 PWA fixture helper、相关 QA 测试和负金额回归场景;当时只更新 task 规划,未改已跟踪文件或跑业务测试。后续获批范围补入总额原函数单测及规约;实际实施、验证与未覆盖边界以第 9 节为准。

证据口径补充:默认 full-local 缺 PWA 输入时确实无法收集,但不据此推断过去每个浏览器用例都未通过其他入口执行;不继续逐次查历史。1680 单测 PASS 保留既有隔离 BIFF8 Python 的环境前提,不声明任意全新环境都已自动具备依赖,也不抵扣真实 DB 或浏览器覆盖。

9. 本轮实施验证记录

  • 证据目录:artifacts/qa-flow/release-gate-integrity/full-local-after-input-fixes-20260906-01/;独占本地 PostgreSQL、无外网命名空间、合成账号与数据,隔离前提沿用第 7 节。代码为 dirty 候选,保存 HEAD、diff、包含新增代码的逐文件摘要,不具备发布资格。
  • node --test scripts/qa/tests/verify-full-local-discovery.test.mjs scripts/qa/tests/pwa-full-local-inputs.test.mjs:17/17 PASS,含真实入口调用捕获、CI/本地零重试与并发边界、双构建/输入/收集失败和省略 PWA 的隔离源码变异。
  • cd server && npm test -- tests/unit/routes/reimbursements.amount-guard.test.js tests/unit/routes/reimbursements.expense-standards.test.js tests/unit/routes/reimbursement.submit-side-effects.test.js:3 文件 / 43 tests PASS,其中原总额函数直接单测 12 项。
  • Shell/Node 相关语法检查 PASS。未修改合同用例、PWA spec、Playwright 全局配置、route-manifest 或任何部署入口。
  • full-local 双构建 PASS,完整发现及源码归属校验 PASS:65 文件 / 275 条用例;实际配置 workers=4、retries=0、收集 errors=0。发现清单不是执行通过回执。
  • 本轮主会话自检,独立复核待用户进行;不派 implement/check 代理、不提交/push/归档/部署,不修执行中新冒出的红项。

9.1 补跑结果与新增红项

实际命令仍为 bash scripts/qa/run-web-gates.sh full-local,2026-09-06 19:26:33–19:38:24(Asia/Shanghai),711 秒,exit 1。本轮没有重试该入口;原始第 7 节的失败基线也未覆盖。

阶段 实际结果 解释
PWA A/B 构建、非 manual 发现与归属 PASS,65 文件 / 275 用例 PWA 纳入同一集合,没有排除
Prisma/本地库迁移种子 PASS 仅本轮独占合成库
服务端单测 193 文件 / 1692 tests PASS 比首次基线多 12 条原总额函数单测
前端 typecheck/build、本地 readiness PASS 不代表公网或浏览器业务通过
workflow-actions 第 1–7 场景组 完成 第 6 组负明细实写、合计核验、精确 400/VALID_001、reasonCode、itemIds 与无 workflow 断言均通过;第 7 组是后续场景准备
workflow-actions 第 8 组 manager skip FAIL:预期提交 200,实际 409 VALID_001;workflow=no_actionable_approver;reason=no_manager_found;stepId=approval_1_manager
workflow-actions 第 9–23 组 NOT_RUN 原 fail-fast 未到达
server regression-all、E2E 模式切换 NOT_RUN 未绕过前置失败继续冒充 full-local
Playwright full E2E 0 executed / 275 discovered 所有用例标 NOT_RUN,不是 skipped/pass;合同、R102、PWA 升级行为本轮均未实际重验

新增红项定位:server/scripts/regression-workflow-actions.sh:1052 的 manager skip 场景设置经理缺失后,期望自动跳过经理并产生财务任务;在 :1055 的提交动作就收到上述 409,财务任务/跳过历史等后续断言未到达。只记录实际响应和原期望,不在本 task 修测试、改审批规则,亦不先定性为产品缺陷。 原总额 setter 在其他场景的使用未顺手变更。

精确区分:分母现在可枚举为 275,但浏览器实际失败清单还没有形成。不能写成“只红经理缺失这一项”,也不能把合同或 R102 的历史失败计入本次执行数。R1 生效继续挂起,整个门禁完整性 task 未完成。

9.2 留痕、资源与边界

  • full-local-result.json 汇总真实阶段与 275 条逐用例 NOT_RUN 状态;它标明 FULL_LOCAL_DIAGNOSTIC_NOT_RELEASE_RECEIPT。原始 full-local.log、发现 JSON、source ownership、构建日志与起止/退出标记均保留。
  • amount-guard-mutations.json 记录仅在内存中编译的两类反例:移除负数拒绝或非有限值拒绝都会被对应断言发现。没有写回源码、没有数据库操作,不冒充真实 DB 回归或独立复核。
  • 自有临时库剩余计数=0;容器、服务与代理均已停止,PWA 构建目录与本轮临时存储已移除。报告目录保留,原有 Playwright 目录不被 full-local 删除或覆盖。
  • 运行前后候选代码(包括新增文件)SHA-256 校验一致;原业务准备包摘要未变。HEAD=66f25b1,本地 origin/main=492920c;只有本任务实现、规约和 task 文件的工作区改动,未提交、push、归档、部署或触碰生产。
  • task validate、Trellis 治理(0 errors / 0 warnings)、敏感扫描(0 findings)、错误原因码 strict 与差异空白检查通过。运行代码除 QA/回归工具外,应用侧仅增加已有 __testables 中的函数导出,金额函数和业务守卫逻辑未改。

10. 用户复核通过及第 8 组只读归因(2026-09-06)

  • 用户独立复核并批准上轮 18 文件 diff;本轮只读核对前逐文件对照 review-files.json,18/18 摘要一致。原 review.diff/review-files.json 保留不覆盖,业务包未动。
  • 从既有 full-local.log 的第 857 行只提取错误码和指定 details 字段:VALID_001,workflow=no_actionable_approver,reason=no_manager_found,stepId=approval_1_manager。details 键集合仅有 workflow/reason/stepId,响应不存在 skipped 数组;不能将“没有字段”当作空数组或仅有 manager 的数组。
  • reimbursements.js:4192 显式传 blockOnUnresolvedAssignee: true;utils/workflow.js:5 把 no_manager_found 列入阻断原因,:512 的严格分支先抛 409,:525 的 skipped.push 尚未执行。故本次并非 manager 已跳过、finance 无法接续,而是提交被经理解析失败直接阻断,finance 未到达。
  • reimbursements.js:4256 的 step_id/reason/depth_checked 是成功创建 workflow instance 后写入 workflowHistory 的 payload,不是 409 响应。无 actionable 的路由分支 :4196 仅返回 workflow 字段;本次带 reason/stepId 的错误来自 resolver 内部严格分支。
  • 用 node stdin 调用当前导出的原 resolveActionableStep,合成 owner 无经理、steps 明确包含 manager + finance;tx 仅为内存只读 fake,finance 的 assignee_rule getter 记录访问次数。严格参数 true:抛出与日志相同的 409/details,finance 访问 0 次;仅对照参数 false:finance 访问 1 次并成为 actionable,skipped 为 manager/no_manager_found/depth 1。两个断言组 PASS;未改函数、未连数据库,false 只用于内存对照,不改真实提交开关。
  • 既有 workflow.test.js:226、:355、:382 已分别规定无兜底时缺经理阻断、strict-submit 阻断和非 strict 兼容跳过。源码追溯显示严格分支及提交调用参数来自 8da16f5(2026-05-10),不是本轮引入;此处未重新跑整套单测,也不将阅读旧单测冒充本轮执行。
  • 已可确认场景 8 的“严格提交缺经理仍应 200”预期与当前严格提交合同冲突;没有依据归成 finance 节点缺失、finance 身份失败或续接回归。未恢复已清理临时库的完整规则快照,不声称生产配置或财务身份已验证。场景 9 的造数意图不能推翻实际 strict 分支;任何场景改名/断言或规则变更仍另待范围批准。

11. 诊断模式决策与下一步

采纳用户提出的阶段级诊断方向,不另建 task;设计第 9 节是增量交审稿,当前未改 runner 或启动阶段 A 实现。它将失败套件与后续浏览器解耦,但不承诺穿透每个套件内部的 fail-fast。R1 除红项清单外,新增普通 full-local 完整绿路径实测耗时作为启用决策输入,不计入本 task 完成标准。

  • 提取既有 409 的指定字段并核对严格分支,不造 skipped 响应、不读生产。
  • 原函数双节点内存对照,明确 finance 未访问及非 strict 对照结果。
  • 更新 PRD/设计/当前记录,保存原获批 diff;只采纳诊断方向,不倒写实现授权。
  • 用户审阅并批准 §9:继续边界、隔离方式及 PARTIAL/2 合同;只启动此诊断子项,不等待或修复场景 8。
  • 获批后仅实现该子项与命令捕获/模式反例回归;普通 gate fail-fast 不变。
  • 一次隔离诊断,交真实失败、未覆盖、环境阻断及耗时;不修新红项,不启用 R1。原始结果与执行器收尾定向验证分开,见 §12.3–12.4;独立复核仍待用户完成。

12. §9 获批实施(2026-09-06)

  • 当前执行顺序:复用 runner helpers 实现诊断阶段与持久结果 → 命令捕获/模式变异 → 一次隔离诊断。其间只读核对经理解析盘点的既有通道,不修改生产组织数据、账号或审批配置。
  • 场景 8 保持原失败;经理数据没有答案前不改,盘点本身也不自动批准测试或产品修复。场景 8 后续若另获批准修复,再单独补一次诊断,不能把首次结果冒充 9–23 组已覆盖。
  • 本轮明确授权引用:用户本轮“§9 诊断设计:批准”;不替代 R1、其他阶段 A、提交/push/部署的批准。

12.1 实施与首次诊断过程留痕(已结束)

以下保留运行中的发现和当时的收尾计划;最终结果见 §12.3,修正验证见 §12.4,不将后来定向通过倒写为首次整套通过。

  • 复用普通 full-local 的输入准备与浏览器命令,新诊断协调器只捕获独立严格 shell 阶段;普通 fail-fast 入口未放宽。32 项 QA 验证通过,含全绿也 PARTIAL/2、缺批准记录拒绝、原普通失败短路、独立新库、准备失败依赖阻断、清理失败、浏览器结果及非零保护源码变异。
  • 首次诊断证据:artifacts/qa-flow/release-gate-integrity/diagnostic-run-20260906-01/。候选代码冻结后只改 task 文档或忽略证据,不修改运行代码;诊断已实际越过 workflow-actions 失败并进入浏览器,尚未完成时不预报通过数。
  • 发现本轮执行器自身的环境冲突:传给子进程的 TMPDIR 含 hyb-full-local-diagnostic-,导致 deployment-safety-contract.test.js 的合成 remoteDir 含禁止的 local token。服务端 6 项由此在实际 SSH fixture 前被 REMOTE_DIR_NON_PRODUCTION_IDENTITY 拒绝,原始结果为 1686 passed / 6 failed,不将它们归成业务回归。当前候选冻结收集完毕后只调整执行器临时根命名,定向重跑原部署身份测试;不放宽生产身份守卫或测试断言,不覆盖首次失败回执。
  • 原 validateExactProductionIdentity 的纯内存路径对照已确认:旧前缀拒绝,中性 hyb-qa-inventory 前缀通过;无网络或数据操作。报告在 diagnostic-implementation-20260906-01/temp-path-guard-probe.json。
  • 进一步自检发现隔离边界:首次版本仅在外层 workflow-actions、regression-all、browser 之间换库,regression-all 的 --json-report 会在内部共享库上越过 workflow-actions 失败。后面的资产状态和 IM secretConfigured 断言虽实际失败,但不作为净库独立产品结论。收集结束后移除该聚合器的继续参数,保留其原内部 fail-fast;外层诊断仍继续到新库浏览器,不绕过失败后的数据前置、不扩写新的子套件执行框架。原聚合输出及潜在污染边界保留,不倒写成从未执行;新版内层首个失败后的其他子套件如实 NOT_RUN。

12.2 经理只读盘点

  • 正式快照:2026-09-06 20:49:02(Asia/Shanghai)。通过唯一非 root 数字 UID 归属身份,核对冻结 systemd 合同、env/runtime origin、运行中 server/db、应用数据库 DNS 指向与查询库名摘要一致后,只读执行计数。生产 build 仍为 f223bfb72fb2。
  • 连接 default_transaction_read_only=on;事务 REPEATABLE READ READ ONLY,实际 read_only=on,statement timeout 10 秒、lock timeout 1 秒,最后 ROLLBACK。仅输出计数和角色布尔分组,不读人员姓名/编号、卡号、合同或业务正文,不登录或修改生产业务账号。
  • 范围为未归档、登录 status=active 且 employment_status 为 probation/active/offboarding 的记录:7 条中 4 条 direct_manager_id 为空,0 自环;另外 3 条返回经理 ID,所引用经理不存在/停用/归档/inactive 的计数均为 0。
  • 无经理的 4 条中,3 条不含 CEO 角色(其中 1 条含 manager 角色),1 条含 CEO 角色。没有拆 smoke 与真人,也未读取/匹配六条路径的实际规则快照,不能说成“4 位真人六路全部锁死”。buildApprovalWorkflowSnapshot 对配置了 owner_self_fallback_role 的 CEO 可能作显式兜底;manager 缺失是已证实的组织缺口,实际路径影响仍需核对适用规则与身份。
  • 该业务风险单独优先交负责人,不因此改经理关系、规则或场景 8;场景 8 继续保留失败。身份与事务证据、SQL、可复验只读探针位于 artifacts/qa-flow/release-gate-integrity/manager-readonly-20260906-01/。
  • 前两次探针未形成可信计数结论,保留 attempt-1/2;第二次明确定位到本地按行解析多行 JSON 汇总失败。修正的是本地 JSON 流解析,不改变 SQL 范围或只读保护;第三次完整解析结果单独留痕,不补造前两次通过。

12.3 首次完整诊断结果

  • 时间:2026-09-06 20:41:03–23:58:26(Asia/Shanghai),11843.619 秒,约 197 分 24 秒。浏览器框架自身 10827.400 秒,外层 browser 阶段含独占建库/服务/清理为 10873.879 秒;两种计时口径分列。这是包含失败等待的 PARTIAL 诊断成本,不是普通门禁全绿耗时。
  • 完整发现及结果对齐 65 文件 / 275 用例,4 workers、0 重试、0 flaky、0 缺失结果、0 未知/重复用例;结果为 50 passed、76 failed、131 timedOut、18 skipped。共 257 条非 skipped 结果;“275 条都有结果”不等于全部实际执行。54 文件含失败,6 文件全通过,另 5 文件全部 skipped。
  • 207 条失败仅是框架结果数,不是独立产品缺陷数。原始错误粗分有 128 条 locator.fill 等待、69 条 expect、10 条其他错误;这只是错误操作分组,不是根因判定。完整逐文件及逐用例清单均留在证据目录,不在 task 中复制原始 payload。
  • 合同/付款权限文件 17 条均 timedOut;合同只读场景本轮先停在 login-identifier 的登录 helper(:343),没有重新执行到旧“更多”及续约/归档断言。R102 6 条均 timedOut,报销日期场景本轮先停在登录 beforeEach/helper(:355/:348),不能据此确认或否定原按钮名漂移。PWA 1 条 timedOut,停在旧 build 首次页面 URL 断言(:519),尚未完成 A→B 升级链;输入与发现 PASS 不抵扣行为验收。
  • 18 个 skipped 中 14 个 expectedStatus=skipped,4 个 expectedStatus=passed。保留原 expectedStatus、reportedStatus、annotation 类型及逐次结果;不把全部跳过归成 serial,也不把条件跳过计为通过。即使清完失败,14 个当前条件跳过仍需独立确定如何满足原完整集合合同,不能静默排除、更不能未经授权开启 live/公网测试来凑绿。
阶段 首轮结果 秒(四舍五入) 解释与未覆盖
inputs PASS 99 临时 PWA 双构建与独立文件枚举;不等于行为通过
tools PASS 17 Prisma generate/check-generated/validate
server-unit FAIL 376 193 文件,1686 passed / 6 failed;6 条 TMPDIR 污染见 §12.4
typecheck PASS 61 未改前端源码
client-build PASS 103 与 PWA 临时 A/B 构建分开
workflow-actions FAIL 77 第 8/23 组 200→409;9–23 组 NOT_RUN
server-regressions FAIL 236 原聚合回执 5 passed / 3 failed / 7 skipped;workflow 重复来源,资产/IM 附同库继续污染风险
browser FAIL 10874 原始 50 通过 / 207 失败 / 18 跳过
  • 诊断与外层 harness 均 exit 2,状态始终 PARTIAL。所有阶段 cleanupExit=0;库剩余计数 0、独占容器/临时根/PWA scratch 已消失,前后源码摘要一致,旧业务包逐文件 SHA 校验不变。没有重试本轮浏览器、没有在运行中改候选、没有生产写入。
  • 原始证据:artifacts/qa-flow/release-gate-integrity/diagnostic-run-20260906-01/ 下的 diagnostic-report/diagnostic-results.json、full-local-report 中的发现与 Playwright JSON;派生 inventory-summary.md/json、browser-cases.json、browser-failures.json、browser-not-executed.json 及 inventory-sha256.json。原始文件保留,不用派生清单覆盖它们。

12.4 运行结束后的两项执行器修正与验证

  • 中性 scratch:createDiagnosticScratch 使用 hyb-qa-inventory 前缀,避免 TMPDIR 把 local token 带进原部署身份测试的合成 remoteDir。新增测试直接调用实际创建函数和原 validateExactProductionIdentity,同时保留旧前缀被拒的对照;生产身份规则与既有测试断言均未改。
  • 内层 fail-fast:移除诊断 server-regressions 对原聚合器的 --json-report 参数。新增回归运行原聚合器和合成子套件,证明普通调用在 workflow 失败后不执行后续套件,而恢复继续参数会跑到后续写库步骤;不是仅搜索 flag 字符串。外层独立新库浏览器仍可继续。
  • QA:node --test scripts/qa/tests/full-local-diagnostic-results.test.mjs scripts/qa/tests/pwa-full-local-inputs.test.mjs scripts/qa/tests/verify-full-local-discovery.test.mjs → 34/34 PASS(51.727 秒)。保留首次冻结版 32/32 回执,不覆盖为 34。
  • 原身份/金额定向:在无外网命名空间、中性 TMPDIR 执行 cd server && npm test -- tests/unit/scripts/deployment-safety-contract.test.js tests/unit/routes/reimbursements.amount-guard.test.js → 2 文件 / 36 PASS,其中身份 24、金额 12,5.27 秒。它证明六条执行器假红的定向修正,不冒充首轮服务端 1692 全绿。
  • 真实净库 helper 定向:独占 network=none PostgreSQL、原迁移/种子/服务、新库执行私有 server-regressions 阶段;Smoke、Dedup 通过,workflow-actions 第 8 组仍返回 409/no_manager_found/approval_1_manager,阶段 exit 1。聚合器只到 3/15,4–15 没有执行;cleanupExit=0、库剩余 0,测试 harness exit 0 表示预期失败与清理检查成立,不是聚合器 PASS。没有第二次运行全套浏览器。
  • 收尾相对首次冻结源码只变 5 文件:两个诊断执行文件、两份 QA 测试及 deployment-trialrun 规约。运行原始结果绑定旧摘要,交审代码绑定收尾后摘要;金额、PWA helper、合同/R102/场景 8 及业务逻辑未再改。
  • 定向证据:artifacts/qa-flow/release-gate-integrity/diagnostic-implementation-20260906-01/qa-tests-postrun.log 及 postrun/。只由主会话验证,用户独立复核尚未发生。

12.5 当前交付边界

  • 本轮整体候选 21 文件(前轮 18 文件 + 3 个诊断文件),不含旧业务准备包或忽略 artifacts。交审 diff 与文件摘要单独生成,不覆盖之前已审快照。
  • 最终本地核验:Shell/Node 语法、task validate(inline 两份清单各 0 entries)、Trellis governance(0 errors / 0 warnings,1276 文件)、敏感扫描(0 findings)及 tracked/untracked whitespace 检查通过。回执在 diagnostic-implementation-20260906-01;完整交审包在 artifacts/qa-flow/release-gate-integrity/diagnostic-review-20260906-01/review.diff 与 review-files.json,检查不冒充用户独立复核。
  • 经理缺口先交负责人核对真实身份与适用规则;场景 8 不因本次盘点自动获得修改授权。业务风险、过时用例、浏览器失败三条事实分开,不预设因果。
  • R1 继续等待红项及未覆盖清单处置、普通 full-local 全绿及实测总/分阶段耗时、单独启用批准。其他阶段 A、合同阶段 B、本 task 整体 AC 均未完成;没有 commit、push、归档、部署或任何生产数据/配置/账号写入。

13. 获批带 trace 对照实验与诊断补强(2026-09-07)

  • 用户已独立复核通过 §12 的 21 文件。随后只读核对:当前三张 rejected 的 CEO owner 有 finance 显式兜底;通过集中至少五条确实执行浏览器登录;代表性合同失败截图已显示工作台而非登录页。上述事实不等于提交全链成功,也不能把 207 个原始失败归为同一个根因。只读证据仍保留在 readonly-followup-01 及两份 rejected-owner 查询目录。
  • 本轮新增授权仅为两次本地合成浏览器实验(单条 1 worker / 全套 4 workers,均零重试且 trace=on),然后为 §9 诊断入口强制 trace。普通门禁的零重试和 worker 配置不变;普通模式 trace 策略本轮仅评估、不顺手修改;不修浏览器用例、场景 8、产品或数据。
  • 对照使用获准收尾后的运行代码与相同本轮构建;按现有诊断 helper 的本地数据库、种子、应用环境和服务清理方式分别新建隔离库/存储。实验 wrapper 只在忽略证据目录提取现有 runner 定义、调整导入根路径及浏览器选择/trace 参数,不修改候选脚本;记录转换与实际命令,不冒称普通 full-local 完整验收。
  • 单条先完成并清理,再启动全套,避免两实验并发改变负载。两轮均保留原超时、不重试、不改断言;全套仍含全部非 manual 用例和 PWA 输入,不缩集合或开启 live。原 197 分钟不用于绿路径成本估算。
  • 合同旧“更多”断言是已知红点,因此比较登录前置的导航、认证请求、填写状态及真正失败位置,不能要求单条整个用例必须绿才证明它完成了登录;单次不同结果只说明条件相关,不能凭一对实验断言已证明稳定性或排除了所有竞态。
  • 冻结候选与工具/构建条件,执行单条实验并读取 trace。
  • 同候选启动全套 4 workers;目标用例失败并落盘完整 trace,完成针对该用例的比较。全套在后续 263 条结果行处以 143 中断,不能将此勾解释为整套完成。
  • 全套完整终态:本次未取得,保留中断证据,不重试至绿,也不伪造 Playwright JSON。
  • 实验停止且孤立资源清理后,只补诊断 trace 参数、命令捕获回归和规约;35 项针对性验证通过,零重试、默认并发、PARTIAL/2 和普通门禁行为不变。
  • 交代表性实验结论、中断边界和增量 diff;去重归因清单仍待证据,R1/提交/push/部署保持未授权。用户独立复核待进行。

13.1 对照现场与结论

证据根:artifacts/qa-flow/release-gate-integrity/trace-comparison-20260907-01/。source-before.json 绑定获准收尾后的候选、完整源文件集合/摘要及 wrapper 转换;运行前后源码一致,没有在实验中修改测试或应用。inputs/tools/client-build 均完成且 cleanupExit=0,两实验共用该次构建,各自新建数据库与服务。浏览器执行前准备未重跑服务端单测或 workflow-actions,不冒充完整诊断流水线。

对照 实际选择与条件 代表性合同用例结果
single 单文件精确 grep 合同只读标题,1 worker,trace=on,retries=0 timedOut;215143ms;停在 :343 的 login-identifier.fill,未到旧“更多”
full 发现 65 文件 / 275 用例,无 spec/grep/shard 筛选,4 workers,trace=on,retries=0 同一用例在 :343 失败,完整 trace.zip 包含 180000ms 超时事件;该结果先于整套后续中断落盘
  • 两份当前 trace 中都没有 POST /api/auth/login。single 在 goto 起点后约 1129ms 发出 refresh,约 1221ms 开始 fill;full 对应约 2180ms 和 2295ms。refresh 均在没有 has_session 请求标记的情况下得到 200 和非空令牌,随后 /api/me 得到 200 和身份。两次最终截图均为已渲染工作台。时间是 trace 起点偏移,响应耗时另列,不把请求起始时间冒充响应完成时刻。
  • 结论仅为:本用例的登录前置失配在单 worker 也可复现,不支持“只有全套并发才失败”的分支;不是隔离绿、满载红。单次配对不能证明绝对确定性、排除所有竞态或保证门禁可复现,也不能把 207 个原始失败合并为一个已确认根因。
  • 已保存旧 trace 的实际时间为 2026-09-06 12:33:18(Asia/Shanghai),不是用户提及的 09-04 留痕,不能混记。旧 trace 先完成标识/密码填写和提交,进入合同页,才等待“更多”;当时登录前没有 refresh,请求 refresh 发生在登录后。
  • 旧 trace 实际请求 /@vite/client、/@react-refresh、/src/main.tsx;当前两次实际请求 /assets/ 构建产物。旧与当前 trace 内嵌的本用例源码均与冻结文件逐字节一致。这证明运行条件不止并发有差异,不证明“开发/构建模式”已经被单变量实验确认为根因。其余网络/会话初始化条件尚未逐项隔离,未修任何下游红项。
  • 两份当前 trace 的资产请求集合一致;其中可从 archive 取到响应体的两个资源 SHA-256 一致。不将两个可核对响应体冒称所有 bundle 内容都在 trace 内逐字节核验。其余同次构建依据是 wrapper 只构建一次以及候选冻结,证据口径分列。

13.2 全套中断与清理

  • 单条完整报告存在;全套目标用例完整 trace 存在且可读。然而整套在已输出 263 条结果后工具会话返回 143,没有 full/exit、full/outcome.json 或全套 Playwright JSON。终止信号来源未确认;不是已知断言正常收尾,也不能编造剩余 12 条的状态或整套失败/通过统计。
  • 终止后核对本轮进程已不存在,独占容器和一个本轮数据库仍在。依据冻结容器 ID、owner label、network=none 与 socket 挂载归属,只清理本轮孤立库/容器/临时根;库剩余由 1 降为 0,容器与临时根均消失。interruption-observation.json 与 interruption-cleanup.json 留痕;自动 cleanup 标为未完成,人工补清理不倒写自动通过。
  • 本轮结果类型为 CONTROLLED_TRACE_COMPARISON_NOT_RELEASE_RECEIPT / PARTIAL_INTERRUPTED。代表性比较可用,全套终态未取得,没有第二次全套重跑;未运行 finalize.mjs 的完整成功归集分支。results.json、receipts-sha256.json、single/trace-summary.json、full/trace-summary.json、full/representative-status.json 为独立派生索引,原始 trace 与日志均保留。

13.3 trace 策略增量

  • 运行时代码只改两处:qa_run_full_browser 转发其内部调用参数;诊断 stage 调用时明确传 --trace=on。普通 full-local 调用不带额外参数,client/playwright.config.ts 未改;固定零重试、默认 worker、完整集合、PARTIAL/2 和无发布资格保持不变。
  • QA 命令:node --test scripts/qa/tests/full-local-diagnostic-results.test.mjs scripts/qa/tests/pwa-full-local-inputs.test.mjs scripts/qa/tests/verify-full-local-discovery.test.mjs → 35/35 PASS,51.429 秒。断言检查实际捕获命令:诊断恰有 --trace=on,普通模式不被顺带改;移除诊断 stage 参数的源码变异可被捕获。原 34 项回执未覆盖。
  • 实验实际 argv 已显式带 trace,并成功产生真实目标 trace;实验后正式诊断入口的参数传递由上述捕获回归验证。没有声称正式诊断新源码完成过额外整套运行。新策略与实验冻结源码的两处差异单列,后续运行必须重新绑定届时获准候选。
  • 普通门禁 retain-on-failure 值得独立审阅,但用户本轮只明确要求诊断 trace;不将“考虑”扩成修改普通门禁策略的授权。任何真实发布或 trace 对外分享仍各自授权。
  • 本轮交审包:artifacts/qa-flow/release-gate-integrity/trace-policy-review-20260907-01/。review.diff 为当前完整 21 文件;incremental.diff 相对获准 diagnostic-review-20260906-01 冻结快照仅变 8 文件,13 文件未变,无增减文件。旧快照在独立临时目录由 HEAD 与旧 diff 重建并逐项核对旧 SHA-256,不向真实工作树应用补丁。review-files.json 保存当前摘要、范围及两份 diff 摘要;未跟踪文件另做 whitespace 核对。实验原始摘要及中断回执不覆盖;快速 task/governance/sensitive/syntax/whitespace 复验放在新交审目录,35 项测试沿用未再改动源码对应的原日志。本轮只有主会话验证,不冒充独立复核。

追加阶段:迁移状态误判修复(归属确认,尚未实施)

用户同意将较小修复归入已有合适 task,不为本 finding 新建任务。此阶段承接 seed 分离回归发现的预检问题,原冻结交审包、33 文件门禁诊断包及历史验收保持原状;不将新增阶段倒填为旧包已通过。

事实证据入口:09-09-existing-deploy-seed-separation/implement.md 的继续核查记录。原 printf | grep -q 管道在 pipefail 下实际出现 producer=141/consumer=0;合成分支复现未知迁移被 ACCEPTED,直接输入候选正确拒绝。2000 次候选匹配无误判仅为本地实验,不表示生产修复。

最小拟修范围:production-preflight-remote.sh 状态解析区四处谓词、原部署安全回归和部署规约。消除提前退出消费者的生产者管道;匹配工具非 0/1 错误失败关闭。验证合法/未知待执行迁移、无待执行、失败状态、长输出和工具错误;保持候选与已应用集合核对及 allowlist,不全库改 grep、不扩成完整门禁重建。

  • 复用本 task 承接,关联已复现证据,撤回必须新建 task 的建议。
  • 在本 task 收敛并审阅具体修复增量;新增风险/范围按实际授权确认,不为相同已批准动作反复索权。
  • 与 seed 产品差异物理隔离,实施最小修复并做确定性回归。
  • 记录最新候选/回归结果与独立复核缺口,不继承旧冻结回执。

本轮仅更新归属与方案记录,未修改该预检脚本或测试;未新建 task、未提交/推送/部署。seed 的发布前置仍未解除。

后续实施授权与最小方案

用户在确认归入本 task 后要求“继续推进主要工作”,本次按上述已明确的小范围方案继续本地修复,不再新建 task 或重复索取相同范围授权。执行副本为 artifacts/isolated-worktrees/20260909-preflight-fix,detached b918530;原 seed 产品工作树不改,主工作树只同步任务状态。提交/推送/部署仍未授权。

实现同一 status_matches 谓词:grep 直接读取 here-string,取消 printf 生产者管道;0 为匹配、1 为不匹配、其他码立即 PROD_MIGRATION_STATUS_UNREADABLE。四处谓词共用,候选迁移集合及 DB 对照不变。定向测试提取实际状态解析与未知迁移拒绝分支,注入已观测的 producer=141;恢复旧写法的源码变异必须失去拒绝能力。另验长输出、合法 pending、unsafe 和工具错误,最后跑原完整部署安全回归与 seed 组合验证。独立 reviewer 受 inline 限制时明确留待交审。

当前结果:迁移状态修复本地闭合

  • 实际预检改动仅四处谓词及共享 status_matches:直接输入、完整读取,0/1/其他码分别匹配/不匹配/停止;保留 SQL、候选 allowlist 和应用发布顺序。旧谓词变异在 producer=141 注入下仍会误放行,新逻辑明确拒绝,未删改原未知迁移断言。
  • 最新预检测试 39 项通过,包括四处匹配器错误、96 KiB 输出和源码变异。首次单独运行的旧多子进程 fixture 超过默认 5 秒;仅将该用例预算设为有界 15 秒,未改变生产超时或任何断言。随后完整场景通过,不用重试屏蔽失败。
  • 从 b918530 创建一次性验证副本,只覆盖 seed 的 9 个代码/测试文件及本修复 2 个文件,共 11 个;联合执行 deploy-init、deployment-db-lifecycle、deployment-safety-contract 三文件,109/109 PASS,81.10 秒。覆盖集合未缩减,没有 skip 或重试。覆盖输入 SHA-256:087d5004337ba631d152bd099c6f19bfad34f16cd00de29fc00e14e891b8dfac。
  • 该临时组合仅用于测试,未合入主工作树或任一原执行副本,结束后精确删除验证 worktree。第一次准备因整包补丁参数过长停止于测试前,改为逐文件 apply_patch;第一次与最终临时副本均已清理,不把准备失败计为测试结果。
  • 沿用 seed 已完成的真实合成 PG 数据库测试(该运行时代码未改);本轮不再次操作数据库或 ARM。组合测试不等于镜像构建、完整候选门禁或真人业务验收。
  • Bash syntax、环境契约、task validate、Trellis governance、process contract、git diff --check 通过;docs registry errors=0、warnings=1,22 个未注册文档未扩范围处理。
  • 主会话完成只读差异复核;inline 下未派 reviewer,独立复核待交审。未提交、未推送、未部署。产品增量位于 artifacts/isolated-worktrees/20260909-preflight-fix;seed 产品增量保留在原独立副本。主工作树只同步本 task 状态和证据。

本追加修复阶段本地验收通过;原门禁 task 整体、旧冻结包及完整候选发布资格不因此完成或改变。上一阶段 seed 的那一次 93/94 失败保留,当前由确定性复现、根因修复和同基线组合回归闭合。

分包交审(2026-09-09)

seed 交审前补正 Compose init 参数数组并新增执行测试后,再次临时组合验证:deploy-init、deployment-db-lifecycle、deployment-safety-contract 三文件 110/110 通过(22 + 49 + 39)。共同基线 b918530,11 个输入文件摘要 a3f91e3d1fcdbc522347725659e3b8b5a0438df62a7eea52b03f05fb3ba6d70a;临时 worktree 已删除。本预检运行时没有追加变化,旧 109/109 证据只对应旧组合。

交审包:artifacts/qa-flow/20260909-seed-preflight-review-v1/preflight/。只冻结本追加阶段的六文件增量,不覆盖原 33 文件证据包。与 seed 包共享部署 spec 文件,后续集成须合并各自段落,不可互相覆盖。

当前追加阶段:本地实施、主会话复核和回归完成,待独立复核与提交授权;未提交、推送、部署。原门禁任务整体仍未完成,不因此取得完整候选发布资格。

2026-09-09 独立复核接受与集成准备

用户回传独立审查:seed 通过(3 条非阻断备注),preflight 通过(无 finding)。审查者核验冻结 diff 并阅读合同与代码,另做本地 bash SIGPIPE 合成复现;未重跑项目测试、未审完整历史叙述、未构建镜像或访问生产/ARM,未验证后续集成。不得把该结论扩大为独立执行了 110 项测试或批准部署。

集成副本:artifacts/isolated-worktrees/20260909-seed-preflight-integration,基线 b918530,归当前门禁 task 协调整合;两个原 task 归属不变。按共同祖先合并部署 spec,零冲突,不用整文件覆盖。原两份冻结包和执行副本保留未改,主工作树不混入产品实现。

备注处理:

  • F1:集成副本的既有运维手册明确补充,有意停用全部费用类型、审批规则或报销流程也会挡住下次发布;不得自动补齐或改用 initialize 绕过。
  • F2:保留并强化“迁移先执行,配置检查失败时迁移可能已经落库”,不简化成零写入。
  • F3:deploy.sh 的 sh -lc 与 Compose 的 sh -c 环境加载不同,记录为待环境验收关注项;本轮不改 shell 行为。
  • Compose folded scalar 是基线已有问题,本 task 因承诺两入口真实到达而一并修复,不是本次引入。
  • 预检缺陷定性是“该拦时可能拦不住”,未证明生产曾误放行。独立审查在其环境较大输出触发 141,但约 64KB 不是通用安全阈值;此前已有短输出捕获 producer=141/consumer=0 的记录,调度和管道实现都会影响触发,不采纳“日常绝不会触发”的推断。

两笔提交准备顺序:先 preflight(门禁 task 三文档、预检脚本、测试及 spec 对应增量),再 seed(原 17 文件范围,包含 F1/F2 手册补充和 seed task 最新状态;spec 只取 seed 增量)。共享 spec 第二笔以第一笔结果为基线。提交、推送、完整候选门禁与部署均未因此授权;当前只做隔离集成和定向验证。

2026-09-18 用户批准后续六组工作的本地接续

新证据根submit-visual-closeout-20260918已保全352项旧差异、34目录12138份旧材料。先给全页面巡检补精确阶段计时,再由09-18-local-concurrency-product-fixes承接P9原提交事务诊断、定稿和修复;两项原整文件通过后,回本task从static执行新完整候选。保持原预算/并发/零重试,不复用旧完整绿灯;受管运行期间源码/测试/task/spec/docs冻结。

2026-09-18 P9/全页面最小修复后验证

P9由09-18-local-concurrency-product-fixes完成单次预检实体读取与条件查询,原aggregate/事务/校验保持,相关unit已过;本task接续。全页面诊断9过/1超时,已按design去除500ms安静窗口之后的300ms重复等待,改精确poll间隔而非缩短500ms门槛。先专用类型与语法,再无预载R75原四项、完整报销付款链、视觉原六项,共三个完整文件重验;之后才从static跑新完整候选。预算/并发/零重试、独立及生产边界不变。

p9-fixed-r3终态及下一验收决策

三个完整文件11项10通过/1视觉超时,607.746秒,零skip/重试。R75四项与付款主链281.132秒通过;环境/输入/owner清理PASS、1347服务响应/0未处理异常。预检最小修复的原合成链验证已完成;全量可靠性仍未证明。视觉在同轮负载下只完成15页,未据局部通过关闭P9/P8/G20。

design已给出按既有角色+终端拆7组、保留33页面及强制完整覆盖的具体方案,改变累计预算边界,待用户批准;未实施拆分。其余已授权的本地静态/治理检查继续;没有直接盲重跑已知失败的完整浏览器候选,也不新增生产操作。