提交图
1197 次代码提交
作者 SHA1 备注 提交日期
wangsli和Claude Sonnet 5 89fad4857f 归档既有环境应用发布数据库生命周期隔离任务 [09-05-existing-deploy-db-lifecycle-isolation]
AC1-8 全部完成:existing 路径不再隐式触碰数据库生命周期,四类源码变异回归
锁定,独立只读复核通过,2026-09-05 已完成真实发布验证(f223bfb72fb2),
容器身份五项未变、公网 ready/bundle marker 通过。此前保留 in_progress 仅
因未获明确归档授权,现予归档。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 20:51:59 +08:00
wangsli和Claude Sonnet 5 096576d882 新增E2E认证前置统一任务记录 [09-07-e2e-auth-preconditions]
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
从主工作区未跟踪目录合并提交。P1、in_progress,独立于 release-gate-integrity,
调查合成浏览器验收的认证起点(登录/会话恢复/注销边界),已完成阶段 0 本地
观测:bootstrap 在线/离线信号、refresh 触发路径、24 文件字面交集与矛盾路径
静态盘点;不预设批量迁移 spec,未获批量修改授权。

未改运行时代码,未运行产品测试或部署。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 20:41:00 +08:00
wangsli和Claude Sonnet 5 efe2df4da3 新增付款观察与运营现状只读准备任务记录 [09-06-payment-observation-readonly-preparation]
从主工作区未跟踪目录合并提交。P2、status=review,产出 0014 付款观察清单
草稿、三张 rejected 单据收口规则草稿、三项只读检查(唯一付款主体存量、
合同只读用例超时归因、IM routing 三层现状)及 G1-G10 备份可用性预检。

未实施新运营动作、未改产品代码、未操作生产数据或外部通知。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 20:41:00 +08:00
wangsli和Claude Sonnet 5 bbe4d9acbf 回填b87cc55发布准备与执行完整记录 [09-09-existing-deploy-seed-separation]
从主工作区未提交改动合并回填 2026-09-09 从未提交的完整发布记录(origin/main
此前只有骨架,缺这部分细节):

- 新候选发布准备草案:固定 b87cc55、只读预检清单、回滚目标确认(以当前
  生产运行版本为准,不默认仍是历史 f223bfb)。
- 两笔提交推送回执:81102c2(迁移预检修复,归 09-06-release-gate-integrity)
  与 b87cc55(本任务,17 文件)分别提交推送。
- 生产只读预检:迁移对账 PASS 无 pending,39/3/1 最低配置齐全,磁盘可用
  8.32 GiB/使用率 85.9%。
- 获准 root 通道备份验真:备份 PASS_INTEGRITY_ONLY;生成 845 个可清理镜像
  候选清单(7 天以上、无 tag/digest、无容器引用、排除生产回滚镜像)。
- 镜像清理执行:845 项逐一核验后删除 811 项、34 项 Docker 拒绝跳过,磁盘
  从 8.32G 净增至 46.43 GiB(实测净变化,不是镜像虚拟大小相加)。
- 部署执行与复核:14:07 CST deploy-existing.sh 返回 0,运行 build 切换为
  b87cc55aca0003130cf8a5bbe38d0dd15528389c,/ready 200,无 seed 阶段、
  迁移无 pending,权限解析器逐项核对与候选一致。

无产品代码改动,这批全是已实际发生的生产操作(备份验真、镜像清理、发布)
留下的审计记录补齐。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 20:40:49 +08:00
wangsli和Claude Sonnet 5 c25d2de87e 回填b87cc55发布后AP权限收紧验证记录 [09-07-manager-ap-access-scope]
从主工作区未提交改动合并回填 2026-09-09 从未提交的发布后验证记录:候选
b87cc55 例外发布完成后,直接调用运行镜像内权限解析器核对 manager/ceo
不再获得 finance.ledger.view、finance/finance_mgr 及兼财务角色仍可读、
expense.approve 和 payment.batch.review 保留;明确这是制品字节核验和
运行时策略执行,不是真人会话请求验收(authenticated account route test /
real-user page acceptance 均 NOT_RUN)。

无产品代码改动。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 20:40:36 +08:00
wangsli和Claude Sonnet 5 c4025083af 落地任务复用治理规则与 worktree 对齐检查 [09-09-trellis-workflow-alignment]
2026-09-09 本地已验证完成、待交审的治理修复,一直未提交:

- 6 个 skill(trellis-before-dev/brainstorm/check/continue/finish-work/start)
  统一改为"先检查当前和直接相关既有任务,复用优先于新建",取代原来"复杂任务
  先请求新建 task"的默认动作;新增 worktree/active-task 一致性校验步骤。
- project-governance.md 新增两节:Task Reuse(任务复用判据)、Active Task And
  Worktree Alignment(激活任务与实际执行 worktree 一致性检查,防止跨 worktree
  会话把上一个任务的 workflow-state 当成当前任务)。
- workflow.md 的 Request Triage / Parent-Child 章节、no_task 面包屑同步改写。

本地已过 task validate、check-trellis-governance.mjs、check-process-contract.mjs、
audit-docs.mjs、git diff --check;无业务代码改动。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 20:40:28 +08:00
wangsli和Claude Sonnet 5 22c6cb7890 补充5d8cdf12部署验收记录到本任务实施清单 [09-11-reimbursement-payment-handoffs]
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
从孤儿 worktree(artifacts/isolated-worktrees/20260910-reimbursement-payment-integration)
合并回填与前一笔 09-04 相同的 2026-09-11 执行记录(候选 5d8cdf12 部署、公网
部分验收、测试账号隔离盘点、提交推送回执),补齐本任务自己的 implement.md——
该事件同时归属两个任务,此前只有 09-04 一侧记录,本任务侧完全空白。

无产品代码改动。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 19:55:56 +08:00
wangsli和Claude Sonnet 5 5068e08b39 回填财务/yj所属主体生产修正执行记录 [09-08-reimbursement-payment-closeout]
从孤儿 worktree(artifacts/isolated-worktrees/20260910-reimbursement-payment-integration)
合并回填一次真实生产数据库写入、此前从未提交的完整执行记录:

- 2026-09-11 用户明确批准仅对财务 wangzhiling 与 yj 两人做 legal_entity_id
  回填(原值须为 NULL,目标须为唯一启用未归档主体),不涉及银行明文/角色/
  经理等其他字段。
- 10:50 READ ONLY 预检确认两人在职、角色/经理未变、目标主体唯一;10:51
  READ WRITE Serializable 事务原子更新恰好两行;10:52 独立连接只读回读
  确认一致,另有独立 SSH 只读复核。执行脚本先过 13 项合成正反例自测。
- 同批次的业务就绪只读核验:确认财务/yj/管理员当时仍缺所属主体,不能
  由此推出"财务不能替别人付款"等错误结论;两者是不同资格维度。

无新增产品代码改动;本次回填是对已实际发生的生产写入补齐审计记录,
使任务文档与真实数据库状态一致。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 19:55:49 +08:00
wangsli和Claude Sonnet 5 7abb410be5 回填5d8cdf12部署与验收账号隔离裁决记录 [09-04-reimbursement-state-gap-finance-view]
从孤儿 worktree(artifacts/isolated-worktrees/20260910-reimbursement-payment-integration)
合并回填 2026-09-11 从未提交的真实执行记录:

- 候选 5d8cdf12 的生产预检、发布与公网部分验收(员工 smoke 双端登录、
  零明细选票入口、合成草稿创建与清理)全过程记录。
- 验收测试账号只读盘点:财务 smoke 已归档、CEO smoke 凭据 0 条匹配、
  一个经理 smoke 需改密;更关键的是角色任务/通知无测试隔离——付款复核
  按当前事实投影会指向非 smoke 的真人 CEO,通知总开关和企微绑定均已
  开启,存在真实外发风险。
- 提出 A(推荐,隔离环境验收+保留公网员工侧验收)/B(先设计完整合成
  隔离方案再做生产公网全链)两条路径,待用户选择,未擅自降级验收口径。

未同步更新 task.json 的 commit/notes 字段——origin/main 该字段已推进到
2026-09-12 财务本人报销 CEO 审批的更新内容,回填旧字段会造成状态倒退。

无产品代码改动、无账号/角色/生产写入。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 19:55:39 +08:00
wangsli和Claude Sonnet 5 c81ed9ca69 回填公网验收与恢复诊断中发现的测试规则 [08-23-isolated-backup-restore-drill]
从孤儿 worktree(20260909-invoice-first、20260910-reimbursement-payment-integration)
合并回填两条实测中发现、从未提交的通用测试规则:

- reimbursement-invoice-ocr.md:公网合成验收流程(provider 检查→锁定 SHA256→
  上传);Fastify 对无 body 的 DELETE 请求发送 application/json 会报
  FST_ERR_CTP_EMPTY_JSON_BODY 的坑;批量分类后编辑需等视图更新,
  getByLabel 对已有内容的嵌套 textarea 可能定位失配。
- deployment-trialrun.md:buildSha 公网字段固定截断为 12 位、探针不得按
  完整 40 位比较;readiness fixture 必须覆盖错误/过短/空/超长四种值并在
  目标主机做无权限探测;附件引用校验失败前必须先保留已完成的 DB/解包
  结果,不能让后续失败掩盖已核实的部分。

均为测试脚本经验教训,无产品代码改动。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 19:55:28 +08:00
wangsli和Claude Sonnet 5 dea0303485 回填10-05到期例外的73文件分流台账 [09-05-error-explainability-payment-readiness]
从孤儿 worktree(artifacts/isolated-worktrees/20260909-ops-preparation)合并
回填 2026-09-09 从未提交的到期豁免分流工作:

- 对 591 条错误原因码豁免基线(scripts/qa/error-reason-legacy-baseline.json,
  全部 2026-10-05 到期)做完整 AST inventory 核对:673 条基线、695 次调用、
  73 文件,逐条 observedCount 与基线一致、0 漂移。
- 73 文件按 A(16 文件/优先迁移)/B(25 文件/待确认业务影响)/C(32 文件/
  逐模块审查延期理由)三档分流,逐文件列出指纹与调用数,均未裁决。
- 首批 4 个具体调用已设计好迁移方案(AP 台账开关/查询校验、todo 开关、
  portal 开关的 reasonCode 与中文文案),尚未落码。
- 明确 09-11/09-18/09-25/09-30/10-02 的分阶段裁决节奏;10-05 00:00 UTC
  (北京时间 08:00)即为门禁到期时点。

无产品代码改动、无原因码源码/注册表变更;仅补齐分流台账文档,为处理
10-05 到期风险提供已有基础,避免从零重新盘点 73 个文件。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 19:49:07 +08:00
wangsli和Claude Sonnet 5 070ea085c0 回填付款交接待办验收环境现状盘点 [09-11-reimbursement-payment-handoffs]
从孤儿 worktree(artifacts/isolated-worktrees/20260910-reimbursement-payment-integration)
合并回填候选 5d8cdf12 实际部署验证结果,以及 2026-09-11 只读盘点发现:
财务 smoke 账号已归档、CEO smoke 凭据 0 条匹配、经理 smoke 需改密;更关键
的是角色任务/通知缺少测试隔离,付款复核当前事实投影会指向非 smoke 的真人
CEO。commit 字段同步更新为已实际部署的 5d8cdf12。

已在 notes 末尾注明:以上账号/角色现状是 2026-09-11 的只读盘点快照,回填
时(2026-09-25)未重新核验,使用前需重新只读确认。

无产品代码改动、无账号/角色/生产操作;仅补齐任务文档记录。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 19:45:30 +08:00
wangsli和Claude Sonnet 5 e57ed0533b 回填e5685f1公网合成验收审计记录 [08-29-reimbursement-expense-policy-invoice-guard]
从孤儿 worktree(artifacts/isolated-worktrees/20260909-invoice-first)合并
回填 2026-09-09 部署 e5685f1 后从未提交的公网验收记录:

- 部署执行计划与 deploy-existing.sh 中途 exit=255 异常的只读排查(构建/
  迁移/健康检查实际均已完成,255 原因未定位但不代表发布未发生)。
- 公网止于草稿的合成验收:真实腾讯 OCR 队列、选票、分类编辑、跨端持久化
  全链路通过;清理工具认证问题(缺 x-device-fingerprint)排查与修正。
- 2026-09-10 最终 PASS:SCOPED_CLEANUP_PASS,测试数据精确清理确认。

无产品代码改动、无生产操作;仅补齐审计记录,使任务文档反映已发生的部署
与验收历史。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 19:45:30 +08:00
wangsli和Claude Sonnet 5 5be9f44445 回填隔离备份恢复演练执行记录 [08-23-isolated-backup-restore-drill]
从孤儿 worktree(artifacts/isolated-worktrees/20260909-ops-preparation、
20260910-reimbursement-payment-integration)合并回填两轮从未提交的真实
执行记录:

- 2026-09-09 ARM 管理员会话完成首次隔离数据库恢复,回执 DB_RESTORE_PASS,
  66 项迁移精确匹配、12 类关键表可读。
- 2026-09-11 第二次配对恢复,AC1/AC3/AC6 勾选完成;对发票池一条历史缺失
  附件做 SHA-256 比对、来源元数据核对、生产/ARM 归档/周检查点全量搜索,
  均未命中,按用户决定非破坏性标记、暂不追查(AC4 仍未过)。

无产品代码改动,无生产/ARM 操作;仅补齐 Trellis 任务文档与既有证据记录,
使 in_progress 状态反映真实已发生的执行历史。

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-25 19:45:18 +08:00
wangsli b1d25d3c99 fix: 加固日历日期与动态错误合同(09-05-error-explainability-payment-readiness,09-08-reimbursement-payment-closeout)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-16 20:20:11 +08:00
wangsli 842c61e696 docs: 核对业务交接与后续恢复计划(09-08-reimbursement-payment-closeout)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-16 12:56:27 +08:00
wangsli 3516d7ec04 fix: 完善动态错误指引与发票日期校验(09-05-error-explainability-payment-readiness) 2026-09-16 12:56:27 +08:00
wangsli b7d2285d8d fix: 完善回单失败引导及真实认证验证(09-08-reimbursement-payment-closeout)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-15 15:26:08 +08:00
wangsli 8d08d46d16 fix: 增加回单核对与付款登记门禁(09-08-reimbursement-payment-closeout)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-15 07:21:55 +08:00
wangsli 229867f5fd fix: 财务本人报销由总经理独立审批(09-04-reimbursement-state-gap-finance-view)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-12 20:03:29 +08:00
wangsli 31ab9fbb2b fix: 拦截已删除报销进入付款创建(09-04-reimbursement-state-gap-finance-view)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-12 16:00:25 +08:00
wangsli 752ec41396 fix: 制单备注补充报销用途(09-04-reimbursement-state-gap-finance-view)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-12 15:18:29 +08:00
wangsli 7bfc25461f fix: 统一报销与付款详情整体宽度(09-04-reimbursement-state-gap-finance-view)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-12 08:51:31 +08:00
wangsli 1eeda7cd92 fix: 制单备注仅保留报销编号(09-04-reimbursement-state-gap-finance-view)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-11 23:54:53 +08:00
wangsli 98eabdde7f fix: 统一报销付款详情布局与票据展示(09-04-reimbursement-state-gap-finance-view)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-11 22:28:06 +08:00
wangsli 2b4e3faa0e fix: 完善报销制单备注(09-08-reimbursement-payment-closeout) 2026-09-11 22:27:40 +08:00
wangsli 5d8cdf12b4 fix: 隔离门户待办身份并取消旧请求(09-11-reimbursement-payment-handoffs)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-11 20:21:46 +08:00
wangsli 9e41f107fa fix: 收窄详情按钮并校正响应式回归(09-04-reimbursement-state-gap-finance-view) 2026-09-11 20:21:45 +08:00
wangsli fedcaed1a1 feat: 补齐报销付款待办交接(09-11-reimbursement-payment-handoffs)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-11 09:43:37 +08:00
wangsli f9aee4c932 fix: 统一报销付款状态与进度(09-04-reimbursement-state-gap-finance-view) 2026-09-11 09:43:36 +08:00
wangsli fe025e65cf fix: 优化报销制单下载与付款进度(09-08-reimbursement-payment-closeout)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-10 16:39:01 +08:00
wangsli 73fcd5a65a fix: 退回报销支持留痕删除(09-04-reimbursement-state-gap-finance-view) 2026-09-10 16:38:37 +08:00
wangsli e5685f18b2 feat: 选票自动生成报销明细并支持集中分类(08-29-reimbursement-expense-policy-invoice-guard)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-09 23:19:02 +08:00
wangsli b87cc55aca fix: 分离日常发布与首次初始化(09-09-existing-deploy-seed-separation)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-09 12:47:30 +08:00
wangsli 81102c26cf fix: 修复迁移预检状态误判(09-06-release-gate-integrity) 2026-09-09 12:47:29 +08:00
wangsli b9185308a6 fix: 优先引导下载银行制单(09-08-reimbursement-payment-closeout)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-09 09:05:17 +08:00
wangsli e8cad812ad fix: 取消CEO默认AP台账权限(09-07-manager-ap-access-scope) 2026-09-09 09:05:17 +08:00
wangsli 58dcee08f7 fix: 用专用权限收窄经理 AP 访问(09-07-manager-ap-access-scope)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-08 07:21:37 +08:00
wangsli 99167127b5 fix: 补齐候选诊断环境与证据保护(09-06-release-gate-integrity) 2026-09-08 07:21:19 +08:00
wangsli 66f25b1fa8 merge: 合入 Trellis 项目升级(09-05-trellis-upgrade-rule-cleanup) 2026-09-06 11:14:42 +08:00
wangsli c3cef5cfc4 chore: 升级 Trellis 并精简规则(09-05-trellis-upgrade-rule-cleanup) 2026-09-06 11:14:41 +08:00
wangsli 492920cd75 docs: 补齐财务身份验收窗口规约(09-05-error-explainability-payment-readiness)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-05 22:04:32 +08:00
wangsli a43df86712 docs: 保存复核后的交接笔记(09-05-error-explainability-payment-readiness) 2026-09-05 21:31:48 +08:00
wangsli a7aad5c753 docs: 记录首次部署与数据库容器身份核验(09-05-existing-deploy-db-lifecycle-isolation)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-05 21:18:32 +08:00
wangsli f223bfb72f fix: 隔离既有发布的数据库容器生命周期(09-05-existing-deploy-db-lifecycle-isolation)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-05 21:02:58 +08:00
wangsli 05d2a3f78a docs: 记录公网验收与已知事项(09-05-error-explainability-payment-readiness)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-05 19:08:42 +08:00
wangsli a837912638 feat: 完成错误原因合同与付款就绪提示(09-05-error-explainability-payment-readiness)
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-05 19:00:35 +08:00
wangsli ab82fe30c0 回填报销状态空隙任务提交信息 [09-04-reimbursement-state-gap-finance-view]
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
2026-09-05 09:24:55 +08:00
wangsli 5fe9f78bc9 补齐报销待组批财务入口 [09-04-reimbursement-state-gap-finance-view][R1] 2026-09-05 09:14:13 +08:00
wangsli 8e0af8235e 收紧报销草稿读取边界 [09-04-reimbursement-state-gap-finance-view][R2] 2026-09-05 09:13:53 +08:00