完善借款、编号、付款与预算并发及验收(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,57 @@
## 2026-09-19 最新本地验收
g20-full-r6同一冻结候选完成static及12个full-local阶段,4437后端通过/1原条件跳过、372本地浏览器全过,零失败/跳过/重试。7组33页完整;PARTIAL仅dirty_candidate,localChecksPassed=true,无部署资格。R1真实入口启用及独立、公网12义务、旧registry保护例外仍开放;完整阶段/计时/来源边界与余额见implement顶部。历史FAIL原样保留,不能把本地通过写为所有交付完成。
## 2026-09-18 已批准视觉分组验收
33页矩阵改为7组、各180秒,共用一次计时合成准备;全部页面/断言/截图、全局并发和零重试保留。同一完整运行必须7组全过并精确覆盖33页,缺页/重复/未审完/失败或跳过组拒绝。设计与implement当前入口已同步;此批准仅替代全页面原累计180秒,不放宽其他门禁,不授权部署。
## 2026-09-18 G20 接续执行(最新用户批准)
用户在解释 WebKit 用途及五组余项后明确“按照这个规划开始执行,非必要不暂停,尽量做完”。本轮据此批准官方 Playwright WebKit 运行包下载到本轮独占缓存,及既定本地完整验收和共享候选回执机制实施;不再列下载授权待答复。仅运行包,不隐式安装系统包或修改共享缓存;业务测试继续无外联合成环境。
沿用 G19 分层合同。先补 WebKit 真实启动/报销离线敏感证据单例,再普通 full-local。受管运行期间源码/测试/task/spec/docs冻结,只写本轮 ignored artifacts。旧失败/旧候选不覆盖。
## 2026-09-18 G19 最新验收状态
分层验收已获明确批准并本地实施验证:完整发现65/365,351本地、12同候选公网义务、2冻结旧链。74项覆盖/runner、7项诊断检查和2条本地冻结保护通过;原完整full-r2仍失败,公网NOT_RUN_LOCAL、独立PENDING,R1未启用。具体合同、证据、失败保留及后续顺序见implement顶部;未提交部署或执行真实操作。
## 2026-09-18 G18 最新状态
OCR/R108/33路由项覆盖及三处限定产品修复已完成本地验证;最终18项共享入口、原四文件并发4/4及131定向unit通过。G18时点完整发现64/363,仅枚举;原full-r2仍失败,全部AC/R1不因局部绿自动补勾。产品PWA/采购归09-18-local-concurrency-product-fixes,当前结果/失败保留/分组余项详见implement顶部与local-coverage-g18-20260918。独立PENDING,无提交发布或真实操作。
## 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 机制后续与真实强制消费启用分开,不启用发布入口。所有旧差异、失败材料与冻结包保持。
# 部署门禁完整性与候选验收回执
## 2026-09-18 G18 在用OCR修正缺陷
恢复本地OCR条件覆盖后,实测暴露票据详情URL/本地状态双向回写导致无法点击人工修正。依当前范围只消除重复状态源,维持既有URL导航/权限/OCR业务合同;具体红例、修复与验收见implement顶部。G18其余覆盖和普通全量/R1/独立/外部余额继续分列。
## 2026-09-18 G16/G17 最新验收状态
普通 full-r2 已完整执行但失败:65/359,326 通过/12 失败/5 超时/16 跳过。后续 14 条原失败观测及 2 条串行未执行项已有定向通过;WebKit 1 条未验、冻结差旅 2 条保留。当前发现 64/358,无缺失/未知;发现包装器末尾临时 SHA 采集告警保留。原结果不改写、不拼接普通全绿,完整集合/运行可靠性、条件用例归属、R1 和独立审阅仍开放。最新执行与六组余额以 implement 顶部及 full-gates-followup-20260918 证据为准。原 AC 未以局部结果自动补勾。
## 2026-09-18 本地限定验收状态
G12/G13在本地受管合成环境完成;原58逐项为53已重验(52浏览器+1静态)、4旧/冻结排除、1WebKit未验。真实PWA双构建升级及报销两步审批/独立付款/回单/下游整例通过,所有结果只归对应定向候选,不修改原54失败/4超时的历史分母。G15复核与外部事实清单已备;独立PENDING,普通full-local账号前置/完整发现处置、原AC7及R1未完成。具体证据、失败轮次和后续顺序见implement顶部;未部署或执行真实操作。
## 2026-09-17 在用门禁分类与限定修复(用户已批准)
用户批准按最新余项建议实施。本轮先把原54失败/4超时的58条观测逐项接回当前源码与产品边界,区分现行合同、已被替代断言、旧/待精简路径、环境/登录前置和已由后续任务处理但尚缺整例重验的项。旧结果保持,不改分母、不批量skip,不把分类或定向通过冒充全量发布资格。
对已明确属于现行合同且能用本地合成输入验证的测试漂移,按implement先落最小批次再修复;新权限/业务/视觉规则不在本轮制定。当前首批为R12共享错误提示断言接回09-05已批准的安全兜底/原因码合同。生产/ARM、真实配置密钥备份、旧恢复、提交部署与借款不执行;R1启用仍未批准,独立复核不由inline自检代替。
2026-09-07 后续最小增量已批准:保全本轮四张截图、恢复已归档证据;两个 spec 仅调整输出路径,默认和受管调用均不得覆盖归档目录;回执增加完整 Git 状态、全仓已跟踪内容与 index 语义状态,限定源码不变与全仓不变分开判断。并入可定位的 14 张归档截图摘要校验,不读取恢复演练私有候选或生产文件,不宣称任意历史 SHA 均可本地重验。58 条环境有效观测保留,不重跑全套诊断,不启动合同阶段 B、认证迁移或 R1。
## Goal
@@ -40,7 +92,7 @@
### R2. 回执绑定来源和实际覆盖,不能由定向结果冒充
- 标准发布的 Playwright 执行必须显式传 --retries=0,覆盖 CI 环境下配置默认重试一次的行为;这是 R2 独立要求,不依附 PWA 是否存在。PWA 不要求全局 --workers=1,保留既有本地 4 / CI 2 workers 默认及文件内 serial。
- 预期集合必须解释当前候选下每个非 manual spec 的归属:要么进入完整验收集合,要么进入显式登记且带原因、必跑入口、责任归属和验收证据的例外集合;不得两边都没有,也不能从回执自报 expected 或既有 acceptanceSpecs 子集反推全量。遗漏、未知归属或有登记却没有兑现执行义务均不能成为完整通过。本轮已批准采用 (a),排除集合为空,具体实现见设计第 8 节。
- 预期集合必须解释当前候选下每个非 manual spec 的归属:要么进入完整验收集合,要么进入显式登记且带原因、必跑入口、责任归属和验收证据的例外集合;不得两边都没有,也不能从回执自报 expected 或既有 acceptanceSpecs 子集反推全量。遗漏、未知归属或有登记却没有兑现执行义务均不能成为完整通过。2026-09-18 已批准 G19:12 条公网义务在同候选发布后兑现,2 条冻结整链保留原源码/历史结果并由冻结保护替代当前执行;其余本地用例必须完整执行。完整交付须另核公网义务,不能把 NOT_RUN_LOCAL 计为通过。PWA 仍无例外,具体实现见 G19 及设计第 8 节。
- 持久回执至少记录:完整候选提交、来源及校验策略摘要、执行 profile/模式、阶段状态与退出码、真实起止时间、工具链、实际筛选参数、预期和实际 spec 集合、用例集合及逐项结果、异常/跳过记录。
- 环境事实属于同级必需输入:受管环境策略/runner/观测器摘要、运行平台、命名空间创建归属及可核验关系、原生在线探针和候选登录入口黑盒观测、观测作用域、环境检查/清理状态。缺失、未知或与当前受管 profile 不一致时不得获得完整验收或发布资格;不能只信调用者的 ONLINE=1、GATE_PASSED=1 或回执自报 environmentPassed=true。具体字段与判据见已批准的设计 §10;本轮实施验证状态见 implement.md。
- spec 使用仓库相对路径;集合来源是当前候选下的真实发现与执行报告,不是人工声明“跑了全套”。同一 spec 内的 --grep 仍可能漏测,所以还必须核对用例级覆盖,并记录 grep、project、shard、only 等影响范围的条件。
@@ -90,8 +142,8 @@
- [ ] AC4:旧提交、脏树、输入变化、缺失/截断/中断回执、同文件漏用例、受管用例跳过/重试/expected-failure、伪布尔“已通过”均使发布验证非零退出。(R2)
- [ ] AC5:两个 skip 开关各自及组合都验证:缺理由/批准引用失败;获批诊断为有留痕的 PARTIAL/非零;均不能进入普通发布。(R3)
- [ ] AC6:真实源码变异移除入口验证、放宽 profile/来源/覆盖判定、恢复无记录 skip 时,对应隔离回归必须变红;断言按执行事件和集合语义,不 grep 某个 flag 字符串。(R1/R2/R3)
- [ ] AC7:修复后的合同只读用例实际进入详情,续约/归档负向断言与管理身份对照均执行;人为暴露任一禁止动作时测试失败,不增加 timeout、不删断言。(R4)
- [ ] AC8:既有部署安全、来源和 49 项 db 生命周期回归保持有效;夹具升级不得引入测试专用发布绕过口或削弱 fake 工具防泄漏检查。(R5)
- [x] AC7:修复后的合同只读用例实际进入详情,续约/归档负向断言与管理身份对照均执行;人为暴露任一禁止动作时测试失败,不增加 timeout、不删断言。(R4)
- [x] AC8:既有部署安全、来源和 49 项 db 生命周期回归保持有效;夹具升级不得引入测试专用发布绕过口或削弱 fake 工具防泄漏检查。(R5)
- [ ] AC9:本 task 的覆盖核对、回执反例及已批准用例修复通过;原样完整本地运行及全部未通过、未覆盖部分如实留痕,dirty 诊断不具备发布资格。额外红项阻断完整候选资格与 R1 生效,不用聚焦绿抵扣;本地机制 diff 可单独交只读独立复核,但不得宣称完整门禁已绿。相关 spec/docs 及治理检查完成,不要求先偷偷提交来取得发布回执。(R1–R5)
## Post-task Authorization Gates