|
27374
|
5
|
5
|
5
|
95
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"8f6910906 {"Commits":[{"Sha1":"8f6910906c90ae8ac301228d1e16a2094effd42e","Message":"feat(conversation): 新增会话接入规划\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"hillao","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"hillao","Timestamp":"2026-09-01T06:45:34-07:00"},{"Sha1":"9160d7a325c179d832751689c36008a12f6f313c","Message":"chore: 迁移执行凭证 + 全量静态门禁(pnpm check)首跑证据\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"hillao","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"hillao","Timestamp":"2026-08-30T21:01:08-07:00"},{"Sha1":"03bb9503f1bbab212efb3038587bd6e351f94a7e","Message":"feat: 平台身份重绑定 im-platform(package name / productId / 表前缀 / 命名空间;F3/F8 前置)\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"hillao","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"hillao","Timestamp":"2026-08-30T21:01:01-07:00"},{"Sha1":"0106d984c9218065931274353deff3d0502cddc1","Message":"chore: 本仓 check:kernel 首跑证据(kernel profile 12 步绿)\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"hillao","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"hillao","Timestamp":"2026-08-30T20:49:18-07:00"},{"Sha1":"3608994da52171d10cb43367c1bd465a052a0971","Message":"chore: 移除跨仓验收证据(fork-readiness F5,须本仓真实重跑 check:runtime/check:ui)\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"hillao","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"hillao","Timestamp":"2026-08-30T20:46:18-07:00"}],"HeadCommit":{"Sha1":"8f6910906c90ae8ac301228d1e16a2094effd42e","Message":"feat(conversation): 新增会话接入规划\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"hillao","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"hillao","Timestamp":"2026-09-01T06:45:34-07:00"},"CompareURL":"","Len":6}...
|
1788271183
|
Edit
Delete
|
|
27373
|
5
|
5
|
5
|
95
|
0
|
0
|
refs/heads/main
|
1
|
|
1788271183
|
Edit
Delete
|
|
27372
|
5
|
1
|
5
|
112
|
0
|
0
|
|
1
|
|
1788271105
|
Edit
Delete
|
|
27371
|
5
|
1
|
5
|
111
|
0
|
0
|
|
1
|
|
1788271103
|
Edit
Delete
|
|
27370
|
5
|
1
|
5
|
110
|
0
|
0
|
|
1
|
|
1788271101
|
Edit
Delete
|
|
27369
|
5
|
1
|
5
|
109
|
0
|
0
|
|
1
|
|
1788271099
|
Edit
Delete
|
|
27368
|
5
|
1
|
5
|
108
|
0
|
0
|
|
1
|
|
1788271097
|
Edit
Delete
|
|
27367
|
5
|
1
|
5
|
107
|
0
|
0
|
|
1
|
|
1788271095
|
Edit
Delete
|
|
27366
|
5
|
1
|
5
|
106
|
0
|
0
|
|
1
|
|
1788271093
|
Edit
Delete
|
|
27365
|
5
|
1
|
5
|
105
|
0
|
0
|
|
1
|
|
1788271091
|
Edit
Delete
|
|
27364
|
5
|
1
|
5
|
104
|
0
|
0
|
|
1
|
|
1788271089
|
Edit
Delete
|
|
27363
|
5
|
1
|
5
|
103
|
0
|
0
|
|
1
|
|
1788271087
|
Edit
Delete
|
|
27362
|
5
|
1
|
5
|
102
|
0
|
0
|
|
1
|
|
1788271085
|
Edit
Delete
|
|
27361
|
5
|
1
|
5
|
101
|
0
|
0
|
|
1
|
|
1788271083
|
Edit
Delete
|
|
27360
|
5
|
1
|
5
|
100
|
0
|
0
|
|
1
|
|
1788271081
|
Edit
Delete
|
|
27359
|
5
|
1
|
5
|
99
|
0
|
0
|
|
1
|
|
1788271079
|
Edit
Delete
|
|
27358
|
5
|
1
|
5
|
98
|
0
|
0
|
|
1
|
|
1788271077
|
Edit
Delete
|
|
27357
|
5
|
1
|
5
|
97
|
0
|
0
|
|
1
|
|
1788271075
|
Edit
Delete
|
|
27356
|
5
|
1
|
5
|
96
|
0
|
0
|
|
1
|
|
1788271073
|
Edit
Delete
|
|
27355
|
5
|
1
|
5
|
95
|
0
|
0
|
|
1
|
|
1788271062
|
Edit
Delete
|
|
27354
|
5
|
1
|
5
|
94
|
0
|
0
|
|
1
|
|
1788271010
|
Edit
Delete
|
|
27353
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"eefb0fed0 {"Commits":[{"Sha1":"eefb0fed0ca13cafe27e806924d4cc2f19154087","Message":"chore(governance): 刷新最新治理报告\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-01T06:45:34-07:00"}],"HeadCommit":{"Sha1":"eefb0fed0ca13cafe27e806924d4cc2f19154087","Message":"chore(governance): 刷新最新治理报告\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-01T06:45:34-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/89b2adeeda1017b1ac4f66fb1ff5f89e0a21fcef...eefb0fed0ca13cafe27e806924d4cc2f19154087","Len":1}...
|
1788270616
|
Edit
Delete
|
|
26986
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"b3a5c0dc6 {"Commits":[{"Sha1":"b3a5c0dc690884729878b7f4cce1adbad046be14","Message":"merge: integrate all remaining branches\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T20:19:35-07:00"},{"Sha1":"dc10d6356138564bf70fcfa6370ba66d99f0b0d7","Message":"feat(material): 完成正式生产与导演交付链路\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-27T14:12:06+08:00"},{"Sha1":"5fbcad0bceea9e81914ae6b7e8bfb05265845598","Message":"merge(main): 合并拍摄脚本与云端渲染能力\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-18T16:58:46+08:00"},{"Sha1":"549ea31448ec1e62e8f10039ed3f8c7d384e07f8","Message":"feat(material-factory): 接入阿里云百炼真实生成链路\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-17T17:34:04+08:00"}],"HeadCommit":{"Sha1":"b3a5c0dc690884729878b7f4cce1adbad046be14","Message":"merge: integrate all remaining branches\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T20:19:35-07:00"},"CompareURL":"luoanwu/image-generation/compare/c16f03b05ec70a53ac99f27dc7901ad3ad99a45a...b3a5c0dc690884729878b7f4cce1adbad046be14","Len":4}...
|
1788232799
|
Edit
Delete
|
|
26966
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"c16f03b05 {"Commits":[{"Sha1":"c16f03b05ec70a53ac99f27dc7901ad3ad99a45a","Message":"feat: add governed public file delivery\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T19:41:05-07:00"}],"HeadCommit":{"Sha1":"c16f03b05ec70a53ac99f27dc7901ad3ad99a45a","Message":"feat: add governed public file delivery\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T19:41:05-07:00"},"CompareURL":"luoanwu/image-generation/compare/0c21eecc828c12daebc00845c14482c3b9d58823...c16f03b05ec70a53ac99f27dc7901ad3ad99a45a","Len":1}...
|
1788230491
|
Edit
Delete
|
|
26941
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"b1695a678 {"Commits":[{"Sha1":"b1695a6780efbc95449a553d313599695c0b22ab","Message":"docs(governance): 回灌首份远端 CI 绿盘证据 + 三级证据刷新至 5f15617\n\n远端证据(G14 部分推进,**未闭环**)\nGitHub 远端已加回(github → laoluojuhai/base-framework,私有仓)。\n在 5f15617 上三个 job 全绿:Static governance / Runtime and UI acceptance /\nAggregate same-SHA governance evidence\nrun: https://github.com/laoluojuhai/base-framework/actions/runs/33455966984\n该 run 的 headSha 与本地 HEAD 逐字符对齐。这是本仓历史上第一次远端 CI 绿——\n此前每一次远端运行都是 failure(最近一次 2026-08-26,正是 check:os-product 并入\npnpm check 那一提交)。\n\n三条「只有远端才看得见」的缺陷已在本轮依次修掉,均已单独提交并在本条登记:\n① checkout 浅克隆 → F5 把本仓证据误判为「来自另一个仓库」\n② 差分门禁依赖磁盘残留的 contracts dist(外加 composite 增量陷阱)\n③ 测试数地板正则未剥 ANSI,CI 下恒读 0\n共同点:本地全绿、远端必红——正是 G14「远端拦截未验证」这条缺口存在的意义。\n\n⚠️ ci-gate 仍不标 GREEN:required checks / 分支保护未配置,受控失败 PR 未做。\n「门禁能跑绿」推不出「违规会被挡住」,缺这两项不得宣称 PR 已被机器拦截。\n\n三级证据刷新\n静态 exit 0、runtime 202 tests / 差分 0 differences、UI 8 用例,\n三份报告 provenance 均为 gitSha=5f15617、worktreeDirty=false。\n本轮回灌过程中 freshness-sha-runtime 断言真的挡了我一次(报告已刷到 74b4644 而\n动态区仍写 cb2a1f0),按其要求重跑取证后才通过——新门禁有牙。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T17:52:26-07:00"}],"HeadCommit":{"Sha1":"b1695a6780efbc95449a553d313599695c0b22ab","Message":"docs(governance): 回灌首份远端 CI 绿盘证据 + 三级证据刷新至 5f15617\n\n远端证据(G14 部分推进,**未闭环**)\nGitHub 远端已加回(github → laoluojuhai/base-framework,私有仓)。\n在 5f15617 上三个 job 全绿:Static governance / Runtime and UI acceptance /\nAggregate same-SHA governance evidence\nrun: https://github.com/laoluojuhai/base-framework/actions/runs/33455966984\n该 run 的 headSha 与本地 HEAD 逐字符对齐。这是本仓历史上第一次远端 CI 绿——\n此前每一次远端运行都是 failure(最近一次 2026-08-26,正是 check:os-product 并入\npnpm check 那一提交)。\n\n三条「只有远端才看得见」的缺陷已在本轮依次修掉,均已单独提交并在本条登记:\n① checkout 浅克隆 → F5 把本仓证据误判为「来自另一个仓库」\n② 差分门禁依赖磁盘残留的 contracts dist(外加 composite 增量陷阱)\n③ 测试数地板正则未剥 ANSI,CI 下恒读 0\n共同点:本地全绿、远端必红——正是 G14「远端拦截未验证」这条缺口存在的意义。\n\n⚠️ ci-gate 仍不标 GREEN:required checks / 分支保护未配置,受控失败 PR 未做。\n「门禁能跑绿」推不出「违规会被挡住」,缺这两项不得宣称 PR 已被机器拦截。\n\n三级证据刷新\n静态 exit 0、runtime 202 tests / 差分 0 differences、UI 8 用例,\n三份报告 provenance 均为 gitSha=5f15617、worktreeDirty=false。\n本轮回灌过程中 freshness-sha-runtime 断言真的挡了我一次(报告已刷到 74b4644 而\n动态区仍写 cb2a1f0),按其要求重跑取证后才通过——新门禁有牙。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T17:52:26-07:00"},"CompareURL":"luoanwu/base-framework/compare/5f156175e6f2397c334fcd3eb5cde4e45423b68b...b1695a6780efbc95449a553d313599695c0b22ab","Len":1}...
|
1788223950
|
Edit
Delete
|
|
26940
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"5f156175e {"Commits":[{"Sha1":"5f156175e6f2397c334fcd3eb5cde4e45423b68b","Message":"fix(gate): 测试数解析先剥 ANSI——地板校验在 CI 上恒读 0(假红)\n\n远端第三次真跑:static job 绿,runtime job 报\n\n Tests passed regressed: expected \u003e= 202, got 0.\n\n但下载 CI 上传的证据 artifact 看,test 步骤 status=0、4 个 turbo 任务全成功、\nFastify 明明 58 passed——测试全跑过了,是 runner 的**解析**失效。\n\n根因:GitHub Actions 支持颜色,vitest/turbo 因此输出带色汇总行,\"Tests\" 与数字之间\n夹着 ANSI 转义序列,`/Tests\\s+(\\d+)\\s+passed/` 匹配不到。本地非 TTY 无色所以一直有效——\n这条地板在本地有牙、在 CI 上恒读 0,属于「同一门禁在两个环境语义不同」。\n方向上它是 fail-closed(0 \u003c 202 判红)而非假绿,但仍是假红,会把真实回归淹没在噪声里。\n\ncountPassedTests 改为先 stripAnsi 再匹配。\n验证:用真实 CI 那行带色文本喂解析器,剥离前 0、剥离后 58;\n本地 check:runtime 仍读到 202(exit 0)。\n\nUI runner 不受影响:它读 Playwright 的 JSON 统计,不解析终端文本。\n\n这是加回 GitHub 远端后暴露的第三条「只有远端才看得见」的缺陷\n(前两条:checkout 浅克隆让 F5 误判、差分门禁依赖磁盘残留的 contracts dist)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T17:43:13-07:00"}],"HeadCommit":{"Sha1":"5f156175e6f2397c334fcd3eb5cde4e45423b68b","Message":"fix(gate): 测试数解析先剥 ANSI——地板校验在 CI 上恒读 0(假红)\n\n远端第三次真跑:static job 绿,runtime job 报\n\n Tests passed regressed: expected \u003e= 202, got 0.\n\n但下载 CI 上传的证据 artifact 看,test 步骤 status=0、4 个 turbo 任务全成功、\nFastify 明明 58 passed——测试全跑过了,是 runner 的**解析**失效。\n\n根因:GitHub Actions 支持颜色,vitest/turbo 因此输出带色汇总行,\"Tests\" 与数字之间\n夹着 ANSI 转义序列,`/Tests\\s+(\\d+)\\s+passed/` 匹配不到。本地非 TTY 无色所以一直有效——\n这条地板在本地有牙、在 CI 上恒读 0,属于「同一门禁在两个环境语义不同」。\n方向上它是 fail-closed(0 \u003c 202 判红)而非假绿,但仍是假红,会把真实回归淹没在噪声里。\n\ncountPassedTests 改为先 stripAnsi 再匹配。\n验证:用真实 CI 那行带色文本喂解析器,剥离前 0、剥离后 58;\n本地 check:runtime 仍读到 202(exit 0)。\n\nUI runner 不受影响:它读 Playwright 的 JSON 统计,不解析终端文本。\n\n这是加回 GitHub 远端后暴露的第三条「只有远端才看得见」的缺陷\n(前两条:checkout 浅克隆让 F5 误判、差分门禁依赖磁盘残留的 contracts dist)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T17:43:13-07:00"},"CompareURL":"luoanwu/base-framework/compare/74b464480301493d008b476e72247f7289ccbffb...5f156175e6f2397c334fcd3eb5cde4e45423b68b","Len":1}...
|
1788223468
|
Edit
Delete
|
|
26939
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"74b464480 {"Commits":[{"Sha1":"74b464480301493d008b476e72247f7289ccbffb","Message":"fix(gate): 差分门禁自包含——不再依赖磁盘上残留的 contracts dist\n\n远端 CI 第二次真跑,static job 首次转绿,runtime job 接着暴露下一条:\n\n Error: Failed to resolve entry for package \"@repo/contracts\".\n\ncheck:conformance:differential 直接调 vitest(不经 turbo),因此拿不到 turbo 声明的\n`test → build` 依赖;而 contracts 是 TS 项目引用,没有 dist 时 vite 解析包入口即失败。\n本地长期通过是因为先跑过 pnpm check 把 dist 留在磁盘上——门禁被环境残留掩盖,\n正是本仓「静态门禁必须自包含」纪律要防的形态。\n\n修复时踩到第二层:contracts 的 tsconfig 是 composite(增量),tsbuildinfo 还在而 dist\n已被删时,`tsc -p` 会认为「一切最新」而**不产出任何文件**——构建退出码 0、dist 依旧为空。\n故重建前先清 tsbuildinfo,并在构建后断言 dist/index.js 真的存在,否则显式报错。\n\n负向验证:`rm -rf packages/contracts/dist packages/contracts/tsconfig.tsbuildinfo`\n后直接跑 check:conformance:differential → 自动重建并通过\n(7 checkpoints × 2 backends,0 differences)。\n\n本地:pnpm check exit 0;pnpm check:runtime exit 0。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T17:36:59-07:00"}],"HeadCommit":{"Sha1":"74b464480301493d008b476e72247f7289ccbffb","Message":"fix(gate): 差分门禁自包含——不再依赖磁盘上残留的 contracts dist\n\n远端 CI 第二次真跑,static job 首次转绿,runtime job 接着暴露下一条:\n\n Error: Failed to resolve entry for package \"@repo/contracts\".\n\ncheck:conformance:differential 直接调 vitest(不经 turbo),因此拿不到 turbo 声明的\n`test → build` 依赖;而 contracts 是 TS 项目引用,没有 dist 时 vite 解析包入口即失败。\n本地长期通过是因为先跑过 pnpm check 把 dist 留在磁盘上——门禁被环境残留掩盖,\n正是本仓「静态门禁必须自包含」纪律要防的形态。\n\n修复时踩到第二层:contracts 的 tsconfig 是 composite(增量),tsbuildinfo 还在而 dist\n已被删时,`tsc -p` 会认为「一切最新」而**不产出任何文件**——构建退出码 0、dist 依旧为空。\n故重建前先清 tsbuildinfo,并在构建后断言 dist/index.js 真的存在,否则显式报错。\n\n负向验证:`rm -rf packages/contracts/dist packages/contracts/tsconfig.tsbuildinfo`\n后直接跑 check:conformance:differential → 自动重建并通过\n(7 checkpoints × 2 backends,0 differences)。\n\n本地:pnpm check exit 0;pnpm check:runtime exit 0。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T17:36:59-07:00"},"CompareURL":"luoanwu/base-framework/compare/5af8e60ea25ac2d24a90b8f103092f30d96b909a...74b464480301493d008b476e72247f7289ccbffb","Len":1}...
|
1788223021
|
Edit
Delete
|
|
26938
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"5af8e60ea {"Commits":[{"Sha1":"5af8e60ea25ac2d24a90b8f103092f30d96b909a","Message":"fix(ci): checkout 取全历史——浅克隆让 F5 把本仓证据误判为「来自另一个仓库」\n\n加回 GitHub 远端后跑出第一份真实远端证据,static job 立刻红,但**不是治理违规**:\n\n ✗ [F5] reports/runtime-acceptance.latest.json: provenance.gitSha=cb2a1f0\n 不存在于本仓 git 历史——该证据来自**另一个仓库**\n\nF5 用 `git cat-file -e \u003csha\u003e^{commit}` 校验验收证据是否绑定本仓历史(防移植时照搬\n源项目的「测试跑过了」假证据)。而 actions/checkout@v4 默认 fetch-depth:1 只克隆\ntip 提交——验收证据一旦绑定任何祖先提交(正常工作流必然如此:先跑验收再提交报告),\nF5 就必然误判。三处 checkout 均补 fetch-depth: 0。\n\n本地负向复现:`git clone --depth 1` 后提交数=1,`git cat-file -e cb2a1f0` 找不到,\n与 CI 报错一致;全历史下同一命令通过。\n\n值得记的是:这条缺陷**只有真跑远端 CI 才暴露得出来**——本地永远是全历史,\n门禁正向绿;G14 登记的「远端拦截未验证」正是为防这类盲区而存在。\n上一轮修掉的是 check:os-product 依赖仓外检出(结构性必红),这是它后面藏着的第二个。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T17:29:21-07:00"}],"HeadCommit":{"Sha1":"5af8e60ea25ac2d24a90b8f103092f30d96b909a","Message":"fix(ci): checkout 取全历史——浅克隆让 F5 把本仓证据误判为「来自另一个仓库」\n\n加回 GitHub 远端后跑出第一份真实远端证据,static job 立刻红,但**不是治理违规**:\n\n ✗ [F5] reports/runtime-acceptance.latest.json: provenance.gitSha=cb2a1f0\n 不存在于本仓 git 历史——该证据来自**另一个仓库**\n\nF5 用 `git cat-file -e \u003csha\u003e^{commit}` 校验验收证据是否绑定本仓历史(防移植时照搬\n源项目的「测试跑过了」假证据)。而 actions/checkout@v4 默认 fetch-depth:1 只克隆\ntip 提交——验收证据一旦绑定任何祖先提交(正常工作流必然如此:先跑验收再提交报告),\nF5 就必然误判。三处 checkout 均补 fetch-depth: 0。\n\n本地负向复现:`git clone --depth 1` 后提交数=1,`git cat-file -e cb2a1f0` 找不到,\n与 CI 报错一致;全历史下同一命令通过。\n\n值得记的是:这条缺陷**只有真跑远端 CI 才暴露得出来**——本地永远是全历史,\n门禁正向绿;G14 登记的「远端拦截未验证」正是为防这类盲区而存在。\n上一轮修掉的是 check:os-product 依赖仓外检出(结构性必红),这是它后面藏着的第二个。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T17:29:21-07:00"},"CompareURL":"luoanwu/base-framework/compare/75189f8787bc51f9cf16ba7b2fdcb735aea2ec15...5af8e60ea25ac2d24a90b8f103092f30d96b909a","Len":1}...
|
1788222564
|
Edit
Delete
|
|
26937
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"75189f878 {"Commits":[{"Sha1":"75189f8787bc51f9cf16ba7b2fdcb735aea2ec15","Message":"chore(reports): 刷新三级证据至 cb2a1f0(clean)+ 动态区同步回灌\n\n结构化日志接线后在 clean commit 上重跑取证:\n- 静态 pnpm check:exit 0\n- 真实 DB check:runtime:202 tests / 0 failures、差分 0 differences\n (PG base_framework_rt_cb2a1f0 + Redis db15)\n- 浏览器 check:ui:8 用例 / 0 失败 / 0 跳过\n (PG base_framework_ui_cb2a1f0 + Redis db12,端口经 UI_WEB_PORT/UI_API_PORT 覆盖)\n\n三份报告 provenance 均为 gitSha=cb2a1f0、worktreeDirty=false,动态区同步更新。\n本轮回灌由上一提交新增的 freshness-sha-runtime / freshness-sha-ui 断言强制——\n报告动了而文档没跟上会直接红,不再依赖人肉记得。\n\n作用域不变:仅证明「本机在 cb2a1f0 这个 clean commit 上通过三级门禁」,\n推不出远端已发布或 CI 已拦截(G14 仍 OPEN)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T17:21:01-07:00"},{"Sha1":"cb2a1f09fde2e86e3a4263b59e3565efaed5b104","Message":"feat(observability): NestJS 接结构化日志,与 Fastify 拉平(G20 第一子项)\n\n此前 Fastify 侧是 pino 结构化 JSON,NestJS 全程默认 ConsoleLogger 输出彩色纯文本——\n同一套写链在两后端产出两种不可对齐的日志格式,生产上无法用同一条查询捞两边。\ncheck:dual-backend 是存在性门禁,看不见这层格式差异(G17 行为级盲区的又一实例)。\nG20「无可观测性」里性价比最高的一半其实早就免费存在,只差把另一半接上。\n\n- 新增 common/logger.ts:pino 支撑的 Nest LoggerService,口径与 api-fastify/src/app.ts\n 逐条对齐(同一个 LOG_LEVEL、同样的凭证脱敏路径、production 单行 JSON);\n Nest 传入的 context(类名)映射为结构化字段而非拼进消息串——拼进去就又要靠正则解析。\n- 在 create-app.ts 这个装配单源接线,测试与 bootstrap 共用同一份(禁止 main.ts 另起一套);\n- main.ts 的 4 行 console.log 改走 Logger,否则启动横幅纯文本、其余日志 JSON,同进程两种格式;\n bootstrap catch 保留 console.error 兜底(此时应用可能尚未装配成功)。\n\n顺带修掉一个两后端都有的启动崩溃模式:pino-pretty 是 devDependency,用\n`pnpm install --prod` 部署且 NODE_ENV 未设 production 时它不存在,pino 解析不到\ntransport target 会直接抛错——为一个开发期美化依赖把服务搞得起不来。\n两侧均改为先探测可用性、不可用则降级为 JSON。\n\n验证:\n- production:单行 JSON,context 为结构化字段,Error 序列化为 err{type,message,stack}\n- 开发态:pino-pretty 正常着色\n- 负向:临时移走 node_modules 里的 pino-pretty → 降级输出 JSON 而非崩溃,恢复后复原\n- pnpm check exit 0;pnpm check:runtime exit 0(202 tests、差分 0 differences)\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T17:18:41-07:00"}],"HeadCommit":{"Sha1":"75189f8787bc51f9cf16ba7b2fdcb735aea2ec15","Message":"chore(reports): 刷新三级证据至 cb2a1f0(clean)+ 动态区同步回灌\n\n结构化日志接线后在 clean commit 上重跑取证:\n- 静态 pnpm check:exit 0\n- 真实 DB check:runtime:202 tests / 0 failures、差分 0 differences\n (PG base_framework_rt_cb2a1f0 + Redis db15)\n- 浏览器 check:ui:8 用例 / 0 失败 / 0 跳过\n (PG base_framework_ui_cb2a1f0 + Redis db12,端口经 UI_WEB_PORT/UI_API_PORT 覆盖)\n\n三份报告 provenance 均为 gitSha=cb2a1f0、worktreeDirty=false,动态区同步更新。\n本轮回灌由上一提交新增的 freshness-sha-runtime / freshness-sha-ui 断言强制——\n报告动了而文档没跟上会直接红,不再依赖人肉记得。\n\n作用域不变:仅证明「本机在 cb2a1f0 这个 clean commit 上通过三级门禁」,\n推不出远端已发布或 CI 已拦截(G14 仍 OPEN)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T17:21:01-07:00"},"CompareURL":"luoanwu/base-framework/compare/742f865d0672599ba182b16012b7671b114f273f...75189f8787bc51f9cf16ba7b2fdcb735aea2ec15","Len":2}...
|
1788222064
|
Edit
Delete
|
|
26936
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"742f865d0 {"Commits":[{"Sha1":"742f865d0672599ba182b16012b7671b114f273f","Message":"chore(os-product): OS 两级验收在 clean commit 上重跑并回灌动态区\n\n上一轮 OS 两级因上游检出未显式提供而 SKIPPED,动态区据实标为 STALE。\n本轮显式给 DIGITAL_EMPLOYEE_OS_ROOT 后重跑,两级均绿:\n\n- check:os-product(静态兼容):juhai.baseframework@0.1.0 / protocol 1.3.0\n / 2 migrations / 1 acceptance suite,0 违规\n- check:os-product:runtime(双宿主真实验收):NestJS + Fastify / 8 cases / 0 failures\n (DB base_framework_os_product_a9bf413 + Redis db13,Node 22.23.2)\n\n证据绑定:本仓 clean @ a9bf413;上游 OS 本机检出源码 clean @ 89b2ade。\n\n关于上游 clean 的判定依据(不接受「报告说 clean 就是 clean」):\n上游工作树 git status 有 24 个变更,但已逐条核实全部匹配 reports/*.latest.json;\nreport-provenance 的 worktreeDirty 按文档化语义刻意排除该模式(报告是运行产物,\n前一个门禁刷新它们不应被后续门禁误判为「被验收源码 dirty」)。\n用同一排除规则跑 `git status --porcelain=v1 -- ':(exclude)reports/*.latest.json'`\n结果为空——源码确实 clean,dirty=false 不是假绿。\n\npnpm check exit 0;check:docs-truth 的动态区 SHA 断言仍绿。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T17:04:22-07:00"}],"HeadCommit":{"Sha1":"742f865d0672599ba182b16012b7671b114f273f","Message":"chore(os-product): OS 两级验收在 clean commit 上重跑并回灌动态区\n\n上一轮 OS 两级因上游检出未显式提供而 SKIPPED,动态区据实标为 STALE。\n本轮显式给 DIGITAL_EMPLOYEE_OS_ROOT 后重跑,两级均绿:\n\n- check:os-product(静态兼容):juhai.baseframework@0.1.0 / protocol 1.3.0\n / 2 migrations / 1 acceptance suite,0 违规\n- check:os-product:runtime(双宿主真实验收):NestJS + Fastify / 8 cases / 0 failures\n (DB base_framework_os_product_a9bf413 + Redis db13,Node 22.23.2)\n\n证据绑定:本仓 clean @ a9bf413;上游 OS 本机检出源码 clean @ 89b2ade。\n\n关于上游 clean 的判定依据(不接受「报告说 clean 就是 clean」):\n上游工作树 git status 有 24 个变更,但已逐条核实全部匹配 reports/*.latest.json;\nreport-provenance 的 worktreeDirty 按文档化语义刻意排除该模式(报告是运行产物,\n前一个门禁刷新它们不应被后续门禁误判为「被验收源码 dirty」)。\n用同一排除规则跑 `git status --porcelain=v1 -- ':(exclude)reports/*.latest.json'`\n结果为空——源码确实 clean,dirty=false 不是假绿。\n\npnpm check exit 0;check:docs-truth 的动态区 SHA 断言仍绿。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T17:04:22-07:00"},"CompareURL":"luoanwu/base-framework/compare/a9bf41341677134557538182b87a1339aa7b7616...742f865d0672599ba182b16012b7671b114f273f","Len":1}...
|
1788221065
|
Edit
Delete
|
|
26935
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"a9bf41341 {"Commits":[{"Sha1":"a9bf41341677134557538182b87a1339aa7b7616","Message":"docs(governance): 动态区回灌至 clean @ 3bb349d + 把「动态区与报告同步」机器化\n\n回灌\n- 三级证据新鲜度从 `dirty @ a9e18b9` 更正为 **clean @ `3bb349d`**(静态 exit 0、\n runtime 202 tests / 差分 0 differences、UI 8 用例),并记录本轮实际基座库名与端口覆盖;\n- G0 余项(clean commit 三级重跑)标记完成;\n- 基线表 6 行「本地 dirty」改为 clean 绑定;\n- OS 两级本轮 SKIPPED / 未实跑,诚实标为 🟡 STALE——不随其他行一起蹭 clean。\n\n机器化(P5:机器门禁 \u003e 手册条目 \u003e 口头经验)\ncheck:docs-truth 新增 freshness-sha-runtime / freshness-sha-ui 两条断言:\n动态区声明的 SHA 必须等于对应 latest 报告的 provenance.gitSha。\n\n实锤依据:连续两轮报告刷新提交都没回灌动态区(报告 clean @ 3bb349d,\n动态区仍写 dirty @ a9e18b9);而 CLAUDE.md 自己规定「判定治理状态只认动态区 + reports」,\n两份真源打架时该规矩直接失效。同一轮人工回灌时我又把「本轮根本没跑」的 OS 行\n误标成 clean——人肉同步不可靠,正是 P5 要求机器化的形态。\n\n刻意不含静态级:governance.latest.json 每次 pnpm check 都重新生成并绑定当时 HEAD,\n对它断言等价于「每次提交都必须改文档」、提交报告后必红,那是会误杀的门禁。\nruntime/UI 报告只有显式跑真实验收才会变,「报告动了而文档没跟上」才是真信号。\n\n负向测试(收尾清单要求):\n① 把 runtime 行 SHA 篡改为 a9e18b9 → freshness-sha-runtime 精确红;\n② 删掉 UI 行的 SHA 声明 → freshness-sha-ui 精确红;\n两次均恢复现场后复跑转绿。pnpm check exit 0。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T17:00:44-07:00"}],"HeadCommit":{"Sha1":"a9bf41341677134557538182b87a1339aa7b7616","Message":"docs(governance): 动态区回灌至 clean @ 3bb349d + 把「动态区与报告同步」机器化\n\n回灌\n- 三级证据新鲜度从 `dirty @ a9e18b9` 更正为 **clean @ `3bb349d`**(静态 exit 0、\n runtime 202 tests / 差分 0 differences、UI 8 用例),并记录本轮实际基座库名与端口覆盖;\n- G0 余项(clean commit 三级重跑)标记完成;\n- 基线表 6 行「本地 dirty」改为 clean 绑定;\n- OS 两级本轮 SKIPPED / 未实跑,诚实标为 🟡 STALE——不随其他行一起蹭 clean。\n\n机器化(P5:机器门禁 \u003e 手册条目 \u003e 口头经验)\ncheck:docs-truth 新增 freshness-sha-runtime / freshness-sha-ui 两条断言:\n动态区声明的 SHA 必须等于对应 latest 报告的 provenance.gitSha。\n\n实锤依据:连续两轮报告刷新提交都没回灌动态区(报告 clean @ 3bb349d,\n动态区仍写 dirty @ a9e18b9);而 CLAUDE.md 自己规定「判定治理状态只认动态区 + reports」,\n两份真源打架时该规矩直接失效。同一轮人工回灌时我又把「本轮根本没跑」的 OS 行\n误标成 clean——人肉同步不可靠,正是 P5 要求机器化的形态。\n\n刻意不含静态级:governance.latest.json 每次 pnpm check 都重新生成并绑定当时 HEAD,\n对它断言等价于「每次提交都必须改文档」、提交报告后必红,那是会误杀的门禁。\nruntime/UI 报告只有显式跑真实验收才会变,「报告动了而文档没跟上」才是真信号。\n\n负向测试(收尾清单要求):\n① 把 runtime 行 SHA 篡改为 a9e18b9 → freshness-sha-runtime 精确红;\n② 删掉 UI 行的 SHA 声明 → freshness-sha-ui 精确红;\n两次均恢复现场后复跑转绿。pnpm check exit 0。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T17:00:44-07:00"},"CompareURL":"luoanwu/base-framework/compare/6449421518ff6b2dd62b6ff862ff44aedcbbea29...a9bf41341677134557538182b87a1339aa7b7616","Len":1}...
|
1788220856
|
Edit
Delete
|
|
26934
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"644942151 {"Commits":[{"Sha1":"6449421518ff6b2dd62b6ff862ff44aedcbbea29","Message":"chore(reports): 刷新三级治理证据至 3bb349d(clean,202 tests / 8 UI)\n\n三级门禁均在 clean 工作区、同一提交 3bb349d 上实跑:\n\n- 静态 pnpm check:13 项门禁 + lint + typecheck,exit 0\n- 真实 DB pnpm check:runtime:202 tests / 0 failures、两后端迁移 deploy+status、\n 双后端同夹具差分 0 differences(PG base_framework_rt_final + Redis db11)\n- 浏览器 pnpm check:ui:8 用例 / 0 失败 / 0 跳过(PG base_framework_ui_final + db12)\n\n三份报告的 provenance 均为 gitSha=3bb349d、worktreeDirty=false,\n不再是此前绑定 a9e18b9 dirty 的 STALE 证据。\n\n新增报告:conformance-matrix、conformance-differential、governance-rules、\ngovernance-profile-kernel、governance-status(四层 profile 当前均为 PARTIAL——\nADR-0010 仍是 Proposed,observe 模式只诊断,不构成发布放行)。\n\n作用域声明:以上仅证明「本机 hillao 在 3bb349d 这个 clean commit 上通过三级门禁」,\n推不出远端已发布或 CI 已拦截(G14 仍 OPEN)。\ncheck:os-product 本轮显式 SKIPPED(上游 OS 检出不在场),未写 osProduct* 指标。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T16:36:45-07:00"},{"Sha1":"3bb349d8ab4351f7f17927b50c94255a7d8abbef","Message":"fix(test): outbox 幂等键用例按租户收窄——移除它自己保证不了的全局隔离假设\n\n`dispatchOutboxBatch` 按设计跨租户全局扫描(outbox dispatcher 的\nwrite-guard-allow 豁免正为此),而 check:runtime 让两后端套件经 turbo 并行\n打同一个库。该用例却断言「全库只有我这一行待投递」——兄弟套件此刻产生的\n未投递行会被一并领走,于是期望 1 实得 2/3,数量随并行时序漂移。\n\n实测:连续两次全量红且失败对象不同(realtime.tenant 一次、outbox 一次),\n换全新库仍红且计数从 2 涨到 3;单独复跑该文件恒绿——典型的共享基座污染\n(G18 已登记族、审计发现「两后端共享 DB/Redis」的又一实证)。\n\n本用例要证的是「信封 id 恒等于 outbox 行 id」这条幂等键稳定性,与其他租户\n有多少行无关,故 publish 回调按 tenantId 过滤后再断言。这是移除伪假设,\n不是放宽断言:跨实例不重复投递由同文件上一条用例独立守护。\n\ncheck:runtime:202 tests、0 failures、差分 0 differences(exit 0)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T16:34:17-07:00"},{"Sha1":"886537eae83f56d3b662e070575ddf3d9a72307f","Message":"feat(governance): ADR-0010 阶段一/二——治理分层与同 SHA 证据模型\n\n把「一堆各自为政的门禁 + 最近一次运行的报告」升级为分层规则与可聚合证据。\nADR-0010 当前为 Proposed,本批只落 observe 模式的实现,不改变现行放行口径。\n\n规则生命周期\n- governance.rules.json + schema:16 条规则,每条带 owner、作用域、严重度、\n 证据映射、profile 归属、ADR 引用与例外期限;check:governance-rules 校验\n 规则无主/入口缺失/例外过期/profile 循环依赖,registryVersion=3。\n\n四层 profile 入口\n- check:kernel / check:production / check:conformance / check:extension,\n 经 check-governance-profile.mjs 统一编排(非 Kernel 的 profile 先跑 Kernel)。\n- governance:status 生成同 SHA 状态清单:缺失、陈旧、dirty、跨 SHA 或未绑定\n registryVersion 的证据一律不产出 VERIFIED,当前四层均为 PARTIAL——\n 这正是它没在拿旧证据冒充绿盘的证明。\n\n双后端行为身份\n- conformance.matrix.json 锁 8 cases × 2 backends 的 case 身份;\n- check:conformance:differential 用**同一夹具**逐字段比较两端 HTTP/DB/outbox\n 的 7 个 checkpoint。存在性门禁看不见语义漂移,差分才看得见。\n\n证据来源加固\n- report-provenance 增加 registryVersion / run URL / artifact 身份;\n- 验收 runner(check:runtime / check:ui)拒绝 GOV_REPORT_* 覆盖变量并 exit 2\n ——此前可用它们一行伪造出「clean@HEAD 通过」的验收报告;\n- governance-report 的缺失指标改 fail-closed:预期指标 key 消失时不再落到\n `?? -1`/`?? 0` 被当成「变好」静默过闸(C18 同族,发生在 current 侧)。\n\n其他\n- runtime-governance 审计与验收基座守卫抽到 scripts/lib,供多入口复用;\n- check 链移出 check:os-product(它依赖仓外 OS 检出,会让静态门禁不自包含、\n GitHub CI 结构性必红);缺失时显式 SKIPPED,要真实校验用 check:full;\n- governance.yml 改三段 artifact 汇总;\n- baseline 仅收紧:ownTests 24→28、ownTestCases 146→197、testsPassed 192→202、\n uiTestsPassed 4→8,另加 5 项新地板,无任何放宽。\n\npnpm check:13 项静态门禁 + lint + typecheck 全绿(exit 0)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T16:28:40-07:00"},{"Sha1":"ec489eae037f3a7bc6b027898804a8b1bde0fc23","Message":"fix(app): 404 不泄露资源 id + 前端断网桥接\n\n两处由治理证据实锤出来的产品缺陷:\n\n1. NestJS 订单 404 回显了资源 id(`Order \u003cid\u003e not found`),跨租户探测据此\n 可确认某 id 是否存在——404 的意义正是不泄露存在性。同时 Nest 默认异常体\n 带 statusCode/error 元数据,与 Fastify 的 `{message}` 形成两套对外契约。\n 现统一为稳定 ApiErrorBody `{ message: \"Order not found\" }`。\n\n2. useRealtime 缺 offline/online 桥接:WS/SSE 的 close/error 只在 TCP 真正\n 断开时触发,而「网络没了但连接还挂着」(拔网线、飞行模式、Playwright\n setOffline)不会立刻断 TCP,服务端 30s 心跳也只是数据帧——状态徽章会停在\n Connected 假绿。现监听 window offline/online:offline 主动断开并入既有退避\n 重连路径;online 清退避定时器立即重连,但不直接置 open——navigator.onLine\n 只有 false 是确定的,恢复后仍由真实连接结果决定状态。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T16:28:00-07:00"}],"HeadCommit":{"Sha1":"6449421518ff6b2dd62b6ff862ff44aedcbbea29","Message":"chore(reports): 刷新三级治理证据至 3bb349d(clean,202 tests / 8 UI)\n\n三级门禁均在 clean 工作区、同一提交 3bb349d 上实跑:\n\n- 静态 pnpm check:13 项门禁 + lint + typecheck,exit 0\n- 真实 DB pnpm check:runtime:202 tests / 0 failures、两后端迁移 deploy+status、\n 双后端同夹具差分 0 differences(PG base_framework_rt_final + Redis db11)\n- 浏览器 pnpm check:ui:8 用例 / 0 失败 / 0 跳过(PG base_framework_ui_final + db12)\n\n三份报告的 provenance 均为 gitSha=3bb349d、worktreeDirty=false,\n不再是此前绑定 a9e18b9 dirty 的 STALE 证据。\n\n新增报告:conformance-matrix、conformance-differential、governance-rules、\ngovernance-profile-kernel、governance-status(四层 profile 当前均为 PARTIAL——\nADR-0010 仍是 Proposed,observe 模式只诊断,不构成发布放行)。\n\n作用域声明:以上仅证明「本机 hillao 在 3bb349d 这个 clean commit 上通过三级门禁」,\n推不出远端已发布或 CI 已拦截(G14 仍 OPEN)。\ncheck:os-product 本轮显式 SKIPPED(上游 OS 检出不在场),未写 osProduct* 指标。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T16:36:45-07:00"},"CompareURL":"luoanwu/base-framework/compare/a9e18b9599335b3ad128ac8c761fc93b83de8711...6449421518ff6b2dd62b6ff862ff44aedcbbea29","Len":4}...
|
1788219424
|
Edit
Delete
|
|
26804
|
5
|
5
|
5
|
91
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"a525a82e0 {"Commits":[{"Sha1":"a525a82e040047e8158104b3fd1b2800a1943132","Message":"Add one-command project startup workflow\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-30T16:23:16-07:00"}],"HeadCommit":{"Sha1":"a525a82e040047e8158104b3fd1b2800a1943132","Message":"Add one-command project startup workflow\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-30T16:23:16-07:00"},"CompareURL":"luoanwu/qwen3-8-flash-next/compare/c1d59277c1c321407babdaf3ad6fe26c73e7cb55...a525a82e040047e8158104b3fd1b2800a1943132","Len":1}...
|
1788132201
|
Edit
Delete
|
|
26793
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"89b2adeed {"Commits":[{"Sha1":"89b2adeeda1017b1ac4f66fb1ff5f89e0a21fcef","Message":"fix(e2e): C240 入职恢复用例余量对齐套件 10–15s 口径——依赖 minor 升级打穿默认 5s,两侧间歇红(33299722229 由 C239 回放实锤)\n\n- acceptance.spec.ts 1686/1690:跨视图重挂载 + Actor 状态到达的断言补显式 timeout,与 1656/1663/1668 同类先例同口径,业务断言零放宽\n- 本地全量 check:ui 双侧 31/31、共 62 次绿(报告随提交);flaky 判定教训(两个样本才归档)入经验库\n- CLAUDE.md/经验库:C240 登记;C232 快照锚点刷新至 cbcfd67\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-30T01:16:40-07:00"}],"HeadCommit":{"Sha1":"89b2adeeda1017b1ac4f66fb1ff5f89e0a21fcef","Message":"fix(e2e): C240 入职恢复用例余量对齐套件 10–15s 口径——依赖 minor 升级打穿默认 5s,两侧间歇红(33299722229 由 C239 回放实锤)\n\n- acceptance.spec.ts 1686/1690:跨视图重挂载 + Actor 状态到达的断言补显式 timeout,与 1656/1663/1668 同类先例同口径,业务断言零放宽\n- 本地全量 check:ui 双侧 31/31、共 62 次绿(报告随提交);flaky 判定教训(两个样本才归档)入经验库\n- CLAUDE.md/经验库:C240 登记;C232 快照锚点刷新至 cbcfd67\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-30T01:16:40-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/cbcfd67ceef8363033fd3eee23a144e1490114f9...89b2adeeda1017b1ac4f66fb1ff5f89e0a21fcef","Len":1}...
|
1788077806
|
Edit
Delete
|
|
26792
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"cbcfd67ce {"Commits":[{"Sha1":"cbcfd67ceef8363033fd3eee23a144e1490114f9","Message":"docs(governance): 快照刷新至 344b00b——run 33298480195 15 job 全绿,C238 远端复验完成,33296922738 单次 UI 红按 C239 判责归档\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-30T00:39:14-07:00"}],"HeadCommit":{"Sha1":"cbcfd67ceef8363033fd3eee23a144e1490114f9","Message":"docs(governance): 快照刷新至 344b00b——run 33298480195 15 job 全绿,C238 远端复验完成,33296922738 单次 UI 红按 C239 判责归档\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-30T00:39:14-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/344b00b3fd60c3495ae152f6a4c9576231880fb6...cbcfd67ceef8363033fd3eee23a144e1490114f9","Len":1}...
|
1788075562
|
Edit
Delete
|
|
26791
|
5
|
5
|
5
|
83
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"c652cd634 {"Commits":[{"Sha1":"c652cd634964e915a0a9895cc9a91be4381333b0","Message":"feat(hr): implement governed HR v2 product foundation\n\nAdd Personnel Core, enterprise identity, recruitment, workforce time and leave, payroll, performance, dual-backend parity, OS product distribution, browser workbenches, and provenance-bound acceptance evidence.\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-28T03:42:38-07:00"},{"Sha1":"76b19716eb3450c705c6379b459894437af03acb","Message":"chore(reports): refresh target static evidence\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T18:34:25-07:00"},{"Sha1":"9d8386e522a5d37e3a826470b66c8e82abce2468","Message":"docs: record target migration verification\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T18:34:08-07:00"},{"Sha1":"805763fbf9a354c7225c5e3106ff16171daa56e1","Message":"chore: bootstrap 巨嗨 AI 人事系统基础框架\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T18:32:35-07:00"}],"HeadCommit":{"Sha1":"c652cd634964e915a0a9895cc9a91be4381333b0","Message":"feat(hr): implement governed HR v2 product foundation\n\nAdd Personnel Core, enterprise identity, recruitment, workforce time and leave, payroll, performance, dual-backend parity, OS product distribution, browser workbenches, and provenance-bound acceptance evidence.\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-28T03:42:38-07:00"},"CompareURL":"","Len":4}...
|
1788073796
|
Edit
Delete
|
|
26790
|
5
|
5
|
5
|
83
|
0
|
0
|
refs/heads/main
|
1
|
|
1788073796
|
Edit
Delete
|
|
26789
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"344b00b3f {"Commits":[{"Sha1":"344b00b3fd60c3495ae152f6a4c9576231880fb6","Message":"fix(gates): C239 UI runner 失败回放补 stdout 双路输出——Playwright 证据写 stdout,run 33296922738 的 CI 红只剩裸 ✗ 不可判责\n\n- scripts/check-ui-acceptance.mjs:失败回放 stderr/stdout 双路、统一 C133 同款脱敏;占用端口负向驱动失败循环验证\n- 判责链:本地同锁文件(Playwright 1.62.1)NestJS 单侧 31/31 绿、735076e 以来 web/e2e 源码零变化;红因悬置,待本轮 CI 携带完整回放判责\n- CLAUDE.md/经验库:C239 登记;C232 快照锚点刷新至 52493ec\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-30T00:07:41-07:00"}],"HeadCommit":{"Sha1":"344b00b3fd60c3495ae152f6a4c9576231880fb6","Message":"fix(gates): C239 UI runner 失败回放补 stdout 双路输出——Playwright 证据写 stdout,run 33296922738 的 CI 红只剩裸 ✗ 不可判责\n\n- scripts/check-ui-acceptance.mjs:失败回放 stderr/stdout 双路、统一 C133 同款脱敏;占用端口负向驱动失败循环验证\n- 判责链:本地同锁文件(Playwright 1.62.1)NestJS 单侧 31/31 绿、735076e 以来 web/e2e 源码零变化;红因悬置,待本轮 CI 携带完整回放判责\n- CLAUDE.md/经验库:C239 登记;C232 快照锚点刷新至 52493ec\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-30T00:07:41-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/52493ec7434e28b4500178ec95b15522ae223ab6...344b00b3fd60c3495ae152f6a4c9576231880fb6","Len":1}...
|
1788073667
|
Edit
Delete
|
|
26788
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"52493ec74 {"Commits":[{"Sha1":"52493ec7434e28b4500178ec95b15522ae223ab6","Message":"fix(deps): C238 juhai.hr Host 构建链回退至与 apps/web 同源版本——b664b43 的版本策展只回退 apps/web,Host 留在 next16/tailwind4 令 web-production-build 红(run 33295243158)\n\n- products/juhai.hr/host/web:next 15.5.24 / tailwindcss ^3.4.17 / postcss 8.5.23 / autoprefixer ^10.4.20 逐字对齐 apps/web(Host 的 next.config/postcss.config/globals.css 全部 re-export apps/web 单源),本地 runner 同命令红→绿复现\n- pnpm-lock.yaml:重建 Host importer,消除 tailwind4/next16 残留与 b664b43 遗留的 postcss 清单/锁失同步\n- .github/dependabot.yml:next/tailwindcss 忽略 semver-major——共享构建链单源的 major 迁移必须显式立项\n- CLAUDE.md/经验库:C238 登记;C232 快照锚点刷新至 b664b43\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T23:26:51-07:00"}],"HeadCommit":{"Sha1":"52493ec7434e28b4500178ec95b15522ae223ab6","Message":"fix(deps): C238 juhai.hr Host 构建链回退至与 apps/web 同源版本——b664b43 的版本策展只回退 apps/web,Host 留在 next16/tailwind4 令 web-production-build 红(run 33295243158)\n\n- products/juhai.hr/host/web:next 15.5.24 / tailwindcss ^3.4.17 / postcss 8.5.23 / autoprefixer ^10.4.20 逐字对齐 apps/web(Host 的 next.config/postcss.config/globals.css 全部 re-export apps/web 单源),本地 runner 同命令红→绿复现\n- pnpm-lock.yaml:重建 Host importer,消除 tailwind4/next16 残留与 b664b43 遗留的 postcss 清单/锁失同步\n- .github/dependabot.yml:next/tailwindcss 忽略 semver-major——共享构建链单源的 major 迁移必须显式立项\n- CLAUDE.md/经验库:C238 登记;C232 快照锚点刷新至 b664b43\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T23:26:51-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/b664b431a778fdbbe13f215b51e5c6a00dd3e8a3...52493ec7434e28b4500178ec95b15522ae223ab6","Len":1}...
|
1788071233
|
Edit
Delete
|
|
26787
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"b664b431a {"Commits":[{"Sha1":"b664b431a778fdbbe13f215b51e5c6a00dd3e8a3","Message":"chore: finalize merged branch governance evidence\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T22:40:58-07:00"},{"Sha1":"a3b474fa8fdc33eec023c604a3e1f996956874f4","Message":"merge: update production dependencies\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T22:05:56-07:00"},{"Sha1":"60aaa759c4baf87a7e7c43dd667499450ab74e85","Message":"merge: update development dependencies\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T21:59:36-07:00"},{"Sha1":"efb160ad2a49b454f110d99940287a31e0a1ea0b","Message":"merge: update actions setup-node\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T21:59:22-07:00"},{"Sha1":"714f2841d3d14119f0043e3ca666e934a55a6a54","Message":"merge: update actions checkout\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T21:59:22-07:00"}],"HeadCommit":{"Sha1":"b664b431a778fdbbe13f215b51e5c6a00dd3e8a3","Message":"chore: finalize merged branch governance evidence\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T22:40:58-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/735076e8aae29d8fcd1407bf9e49da69c2b9e61c...b664b431a778fdbbe13f215b51e5c6a00dd3e8a3","Len":12}...
|
1788068477
|
Edit
Delete
|
|
26786
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"a9e18b959 {"Commits":[{"Sha1":"a9e18b9599335b3ad128ac8c761fc93b83de8711","Message":"fix(governance): 收口实时顺序与验收缺口\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T22:20:28-07:00"}],"HeadCommit":{"Sha1":"a9e18b9599335b3ad128ac8c761fc93b83de8711","Message":"fix(governance): 收口实时顺序与验收缺口\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T22:20:28-07:00"},"CompareURL":"luoanwu/base-framework/compare/4a707c3d3ec98b8ab45864a1b40b941589433914...a9e18b9599335b3ad128ac8c761fc93b83de8711","Len":1}...
|
1788067980
|
Edit
Delete
|
|
26785
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"4a707c3d3 {"Commits":[{"Sha1":"4a707c3d3ec98b8ab45864a1b40b941589433914","Message":"chore(reports): 刷新治理证据至 b1510b5(clean,192 tests)\n\n静态 11 项门禁 + 治理棘轮 + lint + typecheck 全绿;\n真实 PG + Redis 验收 192 tests / 0 failures,provenance 绑定 clean commit b1510b5。\n\n⚠️ 作用域:本轮证据只覆盖静态与运行态两级。浏览器级 check:ui **未重跑**——\n本机无 Node 运行时(全部门禁在 node:22 容器内挂载工作树执行),而容器内没有\nLinux 版 Playwright 浏览器(宿主缓存的是 macOS 构建)。按事实作用域表,\n不得据此宣称 UI 层已验证。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:40:42-07:00"},{"Sha1":"b1510b5a203f7847dc99a0962cd30f36e6901dce","Message":"docs(standards): 修正与实现相悖的 API 标准 + 幽灵路径机器化(批次④·下)\n\n## api-standard 的四项核心约定与实现系统性相悖\n\nCLAUDE.md 真源地图把 docs/standards/*.md 列为「工程标准口径」,使用入口表还直接路由读者\n去读它。但 api-standard 的四项核心约定没有一项与两后端实际实现一致:\n`/api/v1/` 前缀(实际 `/api`,未版本化)、`{ data: ... }` 响应包裹(实际裸资源)、\n嵌套 `error.{code,statusCode,timestamp,path}` 错误体(实际是顶层扁平的 ApiErrorBody)、\n以及一个从不存在的 `packages/contracts/src/errors/error-codes.ts`。\n\n照着它落地新模块,会做出与 contracts `ApiErrorBody` 及 web `ApiError` 消费方直接冲突的接口。\n而 review-standard 的检查清单还会让 reviewer 去核对那个幽灵文件。\n\n- 按本仓既有的 C14「标准 vs 现状」惯例(frontend-standard / backend-standard / git-standard\n 都已有)在 api-standard 头部加对照表,逐项写明目标态与当前真相,并说明改动方向:\n 要落地目标态先改实现与契约,不要反过来照着文档改接口\n- 修正 review-standard 的检查项指向真实位置\n\n## 幽灵路径机器化(C14-⑤ 同族,扫描面扩到 standards)\n\n新增 docs-truth 断言:standards 引用的 `packages/contracts/src/**.ts` 路径必须真实存在,\n否则须在同一行显式标注「目标态 / 当前不存在」。扫描面用 readdirSync 覆盖 docs/standards 全量,\n不硬编码文件清单——旧的幽灵路径断言正是因为清单式扫描漏掉了 docs/README.md 本身而失守过。\n\n该断言上线即多抓到一处此前没人发现的幽灵路径(naming-standard 的\n`packages/contracts/src/store/store.types.ts`),已一并标注。\n负向测试:去掉 review-standard 的诚实标注即红。\n\n## owner-matrix 补录 OS 产品两张业务表\n\n「先登记后建表」是本仓自己立的规则,却被自己的 C20/G23 战役打破:OS 产品包新建了\n`juhai_baseframework_orders` / `..._order_events` 两张带状态机的表却从未登记。\n补录两行并写明 `products/` 下的对象同样要登记(归属真源是 product.manifest.json 的\npersistence.tenantModels,本表挂索引行)。\n\n验收:naming / docs-truth / governance-docs / 治理棘轮均 exit 0。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:39:02-07:00"},{"Sha1":"033e8159c23f4766493fd140ffa7aa923ebe1182","Message":"fix(ops): 优雅停机接线——Fastify 的 onClose 钩子此前全是死代码(批次④·中)\n\n## Fastify 从不优雅停机\n\nserver.ts 没有任何信号处理,也从不调用 app.close():进程收到 SIGTERM 走默认处理直接终止。\n后果是 prisma / redis / outbox / queue 四个插件里**精心写好的 onClose 钩子从未被执行过**——\nBullMQ worker 不 close(在途 job 只能靠 stalled 恢复)、outbox 轮询事务可能被拦腰砍断、\nWS/SSE 连接收不到 close 帧。而 NestJS 侧早有 enableShutdownHooks,两后端停机行为实质分叉。\n\n存在性门禁看得见「钩子写了」,看不见「它从来没被调用过」——这正是 G17 说的行为级盲区。\n\n- server.ts 补 SIGTERM/SIGINT → app.close()(Fastify 会按注册逆序执行全部 onClose),\n 带 10s 超时兜底(卡住的清理不能让容器一直不退)与重复信号防抖\n\n## NestJS 的 Redis 连接从不 quit,且注释谎称有人管\n\nREDIS_PUB / REDIS_SUB 由 useFactory 裸建,没有任何销毁钩子;而 event-bus.service.ts\n的注释写着「redisSub 连接由 RedisModule 统一关闭」——注释与行为相反,于是没人会去查。\n真实后果:停机时连接不回收(两个 acceptance 测试的 afterAll 至今还得手动 quit 才能让进程退出)。\n\n- RedisModule 实现 onApplicationShutdown,quit 两个连接\n- 修正 event-bus 的失实注释\n\n## 防回潮\n\ncheck:dual-backend 新增 4 条停机接线绊网(两后端各自的信号处理 / app.close /\nenableShutdownHooks / Redis 关闭钩子),负向测试已验证删掉信号处理即红。\n\n验收:真实 PG + Redis 192 tests / 0 failures;静态门禁 + 棘轮 + typecheck 5/5 + lint 2/2 全绿。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:35:43-07:00"},{"Sha1":"44cbbaeacf5f53e08e6e3f48a6d8bd2c3327d2de","Message":"fix(governance): 写链守护补齐五条已验证绕过(批次④·上)\n\ncheck:write-guard 守的是 P4「所有写显式带 tenant_id + 状态迁移乐观锁」这条最高优先级红线,\n但它自身存在五条可复现的绕过——每一条都能让违规代码拿到绿盘:\n\n1. **折行**:逐行匹配下 `await tx.order\\n .update({...})` 完全隐形。这甚至无需恶意——\n Prettier 对长链式调用本来就这样折行。\n2. **方括号访问**:`tx[\"order\"].update(` 用 `\\w+` 匹配不到,换个写法整条溜过去。\n3. **upsert 不在禁止模式里**:它与 update/delete 同源(同样只接受唯一键定位),\n TOCTOU 缝隙一模一样,却从未被拦。\n4. **where 里的 tenantId 从未被验证**:门禁 reason 一直宣称 where 是 `{ id, tenantId }`,\n 但只检查了方法名与 state 前置条件——`updateMany({ where: { id } })` 照样绿,\n 而那正是跨租户写。\n5. **0 行拒绝可被一行注释满足**:断言对原始源码做 includes,\n `// if (updated.count === 0)` 就能让一段被注释掉的防护报绿。\n\n修法:\n- 新增 scripts/lib/source-text.mjs 作为公共单源(stripComments / blankComments / lineOf)。\n 「注释掉的代码仍满足断言」这个形态 check-schema-sync 在 2026-08-15 已实锤并就地修过,\n 但同类断言散布在多个脚本里各自对原始源码匹配——按 P5,实锤过的教训必须推广,\n 否则只是把同一个洞留在别处。\n- A 部分改为「注释置空但保持字符偏移」后整体跨行匹配,再由偏移反推行号\n (逐行挡不住折行,整体匹配又需要能定位);禁止模式补 upsert 与方括号访问。\n- B 部分先提取 updateMany 的 where 块再逐项断言(state 前置条件 + tenantId),\n 且全部在剥注释后的源码上跑。\n\n验收:五条绕过逐一注入验证必红、逐一恢复现场;正向 10 项静态门禁 + 治理棘轮全绿。\nCLAUDE.md 基线表 write-guard 行同步为实际覆盖面(此前的描述比实际防线宽)。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:32:47-07:00"},{"Sha1":"c494fc7d2e6b1497647b2ca9601766626dd4775d","Message":"feat(auth): G8 生产级租户验签闭环——回退翻转 + 401 判责 + 降级通道清除(批次③)\n\nCLAUDE.md 里标注「动工前须用户点名」的最大 OPEN 缺口,验签半边落地。\n\n## 回退翻转(G8 的核心)\n\ndemo 期口径是 `Bearer 解析 ?? x-tenant-id`。接入验签后这个 `??` 会变成**降级攻击面**:\n伪造一个签名无效的 Bearer → 验签失败 → 自动落回客户端自报的 demo 头,等于没验。\n且只翻转这一处并不够——裸 `?tenantId=` 是另一条更彻底的通道,它连伪造 token 都不需要。\n\n- jwt 模式下:带 Authorization 或 ?access_token= 即**强制验签,失败一律 401,绝不回退**;\n x-tenant-id / ?tenantId= / `tenant:\u003cid\u003e` 简写整条不承认\n- demo 模式保留原型四级来源(本地与既有验收测试零改动),但**生产跑 demo 即拒绝启动**——\n 漏配鉴权应当是「起不来」,不是「起来了但谁都能进」\n\n## 架构切分:策略在 contracts,验签由后端注入\n\ncontracts 被 web 直接 import,把 jose 与密钥语义拉进去会泄漏到浏览器包。故:\n- `decideTenantResolution`(谁可信、失败怎么判)在 contracts,两后端共用,13 条单测覆盖\n- jose 验签在各后端(NestJS `src/auth/`、Fastify `src/plugins/auth.ts`)\n- `tenantFromBearerToken` 更名 `unsafeTenantClaimFromToken`:函数名里的 unsafe 是给 review 看的,\n 它只该用于浏览器 UI 预填与 demo 模式\n\nNestJS 的判定必须放 Guard 而非 `@TenantId()` 参数装饰器——后者的回调是同步的,\n判定留在那里就永远接不上异步的 JWKS 验签。\n\n## 顺带堵掉的三个额外攻击面(安全审计发现,均在已登记 G8 描述之外)\n\n1. **tenantId 是攻击者可控的自由文本**:无格式/长度约束时可凭空创建租户分区、\n 可用超长值撑爆 `@@unique([tenantId,email])` 的 btree 索引行打出稳定 500、\n 可用换行伪造日志行。现统一过 normalizeTenantId(≤128 + 受控字符集)。\n2. **重复查询参数的类型混淆**:Fastify 把 `?access_token=a\u0026access_token=b` 解析成数组,\n `typeof v === 'string'` 判定直接落空 → 静默跳过 token 分支 → 落到裸 ?tenantId=;\n 而 NestJS 的 `URLSearchParams.get()` 取第一个值。**同一条请求两后端两种身份判定**——\n 既是真实越权通道,也是 G17 行为分叉的活体实证。两侧统一取第一个值。\n3. **凭证进日志**:浏览器 EventSource/WS 无法自定义头,token 只能进 `?access_token=`,\n 而 pino 默认序列化器把完整 url 写进日志——接入真实验签后就是每次建连落盘一枚有效 JWT。\n Fastify logger 加 redact(authorization / cookie / req.url)。\n\n## 判责矩阵补上 401\n\n此前缺凭证一律回 400,把「未认证」伪装成「参数写错了」,客户端无从区分「该去登录」\n和「该改请求」。现 contracts 定义 UNAUTHENTICATED / INVALID_TOKEN / TENANT_FORBIDDEN;\n响应体**只回稳定错误码**,验签失败细节只进日志(区分「签名不对/已过期/issuer 不符」\n对攻击者是免费的探测反馈)。WS 保持 close(1008) 而非握手期 401——两后端同口径,\n且浏览器对握手 401 不暴露任何原因。\n\n## 验收\n\n真实 PG + Redis:**192 tests / 0 failures**(地板 161 → 192,只收紧)。\n两后端各 9 条 jwt 判责用例:正确签名放行 / 无凭证 401 / **伪造签名 + 合法 x-tenant-id 仍 401**\n/ 裸 demo 头 401 / 过期 401 / alg:none 401 / 无租户 claim 401 / health 免鉴权 / 重复参数不落 victim。\n新增 check:dual-backend 的 G8 绊网 5 条,每条均有负向红证据;其中「算法白名单」一条初版\n被自身的类型声明 `algorithms: string[]` 满足而无法变红,已改绑 jwtVerify 实参后重测。\n静态门禁 10/10 + 治理棘轮 + typecheck 5/5 + lint 2/2 全绿。\n\nRLS 未叠加(结构已就绪,阻碍在 CI 超级用户/单例 Prisma/dispatcher 跨租户扫描三处),\nweb 构建期内联 token 与 WS Origin 白名单同样登记为 G8 剩余项。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:27:41-07:00"}],"HeadCommit":{"Sha1":"4a707c3d3ec98b8ab45864a1b40b941589433914","Message":"chore(reports): 刷新治理证据至 b1510b5(clean,192 tests)\n\n静态 11 项门禁 + 治理棘轮 + lint + typecheck 全绿;\n真实 PG + Redis 验收 192 tests / 0 failures,provenance 绑定 clean commit b1510b5。\n\n⚠️ 作用域:本轮证据只覆盖静态与运行态两级。浏览器级 check:ui **未重跑**——\n本机无 Node 运行时(全部门禁在 node:22 容器内挂载工作树执行),而容器内没有\nLinux 版 Playwright 浏览器(宿主缓存的是 macOS 构建)。按事实作用域表,\n不得据此宣称 UI 层已验证。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:40:42-07:00"},"CompareURL":"luoanwu/base-framework/compare/53991090b821b76dff11eee3a2e92806ed3ab173...4a707c3d3ec98b8ab45864a1b40b941589433914","Len":10}...
|
1788064993
|
Edit
Delete
|
|
26784
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"735076e8a {"Commits":[{"Sha1":"735076e8aae29d8fcd1407bf9e49da69c2b9e61c","Message":"docs(governance): 快照锚点刷新至 a7f6b94——C232 闸的收尾纪律:每轮推送以锚点刷新收尾\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T21:34:25-07:00"}],"HeadCommit":{"Sha1":"735076e8aae29d8fcd1407bf9e49da69c2b9e61c","Message":"docs(governance): 快照锚点刷新至 a7f6b94——C232 闸的收尾纪律:每轮推送以锚点刷新收尾\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T21:34:25-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/a7f6b94bcffdf6cb428fe04eabd6def24f06d7d4...735076e8aae29d8fcd1407bf9e49da69c2b9e61c","Len":1}...
|
1788064472
|
Edit
Delete
|
|
26783
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"a7f6b94bc {"Commits":[{"Sha1":"a7f6b94bcffdf6cb428fe04eabd6def24f06d7d4","Message":"fix(gates): O26 Loki 定位窗 1800→2400——C237 补丁行使实测距离 1944 超窗\n\nexpectSource 的字符窗把注释/相邻段体量计入,纯定位窗贴上限时合法改动即假红;\n本轮已先精简 C229/C237 注释至单行仍不足,按实测放宽并留维护注。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:48:43-07:00"},{"Sha1":"31387b8167feac7ae2224ad8f09ed07bf008b8fa","Message":"fix(supply-chain): C237 ops-postgres libssl/libcrypto 升级至 3.5.8-r0——CVE-2026-14456 Alpine 侧补丁转红\n\nrun 33289834128:Static + Runtime/UI 首次干净 CI 全绿(C227/C229 远端确认),唯一残红 ops-postgres。\n降权前 root 窗口 apk upgrade(C171 同款);本地 Trivy 0.74.0 复扫 0H/0C + check:postgres-image 4 类验收全过。\n快照锚点刷新至 3c4c9ae。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:44:03-07:00"}],"HeadCommit":{"Sha1":"a7f6b94bcffdf6cb428fe04eabd6def24f06d7d4","Message":"fix(gates): O26 Loki 定位窗 1800→2400——C237 补丁行使实测距离 1944 超窗\n\nexpectSource 的字符窗把注释/相邻段体量计入,纯定位窗贴上限时合法改动即假红;\n本轮已先精简 C229/C237 注释至单行仍不足,按实测放宽并留维护注。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:48:43-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/3c4c9aeef2d655c577e467bb2cbb9dd76a2e211b...a7f6b94bcffdf6cb428fe04eabd6def24f06d7d4","Len":2}...
|
1788061728
|
Edit
Delete
|
|
26782
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/governance/deep-optimization
|
0
|
{"Commits":[{"Sha1":"4a707c3d3 {"Commits":[{"Sha1":"4a707c3d3ec98b8ab45864a1b40b941589433914","Message":"chore(reports): 刷新治理证据至 b1510b5(clean,192 tests)\n\n静态 11 项门禁 + 治理棘轮 + lint + typecheck 全绿;\n真实 PG + Redis 验收 192 tests / 0 failures,provenance 绑定 clean commit b1510b5。\n\n⚠️ 作用域:本轮证据只覆盖静态与运行态两级。浏览器级 check:ui **未重跑**——\n本机无 Node 运行时(全部门禁在 node:22 容器内挂载工作树执行),而容器内没有\nLinux 版 Playwright 浏览器(宿主缓存的是 macOS 构建)。按事实作用域表,\n不得据此宣称 UI 层已验证。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:40:42-07:00"},{"Sha1":"b1510b5a203f7847dc99a0962cd30f36e6901dce","Message":"docs(standards): 修正与实现相悖的 API 标准 + 幽灵路径机器化(批次④·下)\n\n## api-standard 的四项核心约定与实现系统性相悖\n\nCLAUDE.md 真源地图把 docs/standards/*.md 列为「工程标准口径」,使用入口表还直接路由读者\n去读它。但 api-standard 的四项核心约定没有一项与两后端实际实现一致:\n`/api/v1/` 前缀(实际 `/api`,未版本化)、`{ data: ... }` 响应包裹(实际裸资源)、\n嵌套 `error.{code,statusCode,timestamp,path}` 错误体(实际是顶层扁平的 ApiErrorBody)、\n以及一个从不存在的 `packages/contracts/src/errors/error-codes.ts`。\n\n照着它落地新模块,会做出与 contracts `ApiErrorBody` 及 web `ApiError` 消费方直接冲突的接口。\n而 review-standard 的检查清单还会让 reviewer 去核对那个幽灵文件。\n\n- 按本仓既有的 C14「标准 vs 现状」惯例(frontend-standard / backend-standard / git-standard\n 都已有)在 api-standard 头部加对照表,逐项写明目标态与当前真相,并说明改动方向:\n 要落地目标态先改实现与契约,不要反过来照着文档改接口\n- 修正 review-standard 的检查项指向真实位置\n\n## 幽灵路径机器化(C14-⑤ 同族,扫描面扩到 standards)\n\n新增 docs-truth 断言:standards 引用的 `packages/contracts/src/**.ts` 路径必须真实存在,\n否则须在同一行显式标注「目标态 / 当前不存在」。扫描面用 readdirSync 覆盖 docs/standards 全量,\n不硬编码文件清单——旧的幽灵路径断言正是因为清单式扫描漏掉了 docs/README.md 本身而失守过。\n\n该断言上线即多抓到一处此前没人发现的幽灵路径(naming-standard 的\n`packages/contracts/src/store/store.types.ts`),已一并标注。\n负向测试:去掉 review-standard 的诚实标注即红。\n\n## owner-matrix 补录 OS 产品两张业务表\n\n「先登记后建表」是本仓自己立的规则,却被自己的 C20/G23 战役打破:OS 产品包新建了\n`juhai_baseframework_orders` / `..._order_events` 两张带状态机的表却从未登记。\n补录两行并写明 `products/` 下的对象同样要登记(归属真源是 product.manifest.json 的\npersistence.tenantModels,本表挂索引行)。\n\n验收:naming / docs-truth / governance-docs / 治理棘轮均 exit 0。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:39:02-07:00"},{"Sha1":"033e8159c23f4766493fd140ffa7aa923ebe1182","Message":"fix(ops): 优雅停机接线——Fastify 的 onClose 钩子此前全是死代码(批次④·中)\n\n## Fastify 从不优雅停机\n\nserver.ts 没有任何信号处理,也从不调用 app.close():进程收到 SIGTERM 走默认处理直接终止。\n后果是 prisma / redis / outbox / queue 四个插件里**精心写好的 onClose 钩子从未被执行过**——\nBullMQ worker 不 close(在途 job 只能靠 stalled 恢复)、outbox 轮询事务可能被拦腰砍断、\nWS/SSE 连接收不到 close 帧。而 NestJS 侧早有 enableShutdownHooks,两后端停机行为实质分叉。\n\n存在性门禁看得见「钩子写了」,看不见「它从来没被调用过」——这正是 G17 说的行为级盲区。\n\n- server.ts 补 SIGTERM/SIGINT → app.close()(Fastify 会按注册逆序执行全部 onClose),\n 带 10s 超时兜底(卡住的清理不能让容器一直不退)与重复信号防抖\n\n## NestJS 的 Redis 连接从不 quit,且注释谎称有人管\n\nREDIS_PUB / REDIS_SUB 由 useFactory 裸建,没有任何销毁钩子;而 event-bus.service.ts\n的注释写着「redisSub 连接由 RedisModule 统一关闭」——注释与行为相反,于是没人会去查。\n真实后果:停机时连接不回收(两个 acceptance 测试的 afterAll 至今还得手动 quit 才能让进程退出)。\n\n- RedisModule 实现 onApplicationShutdown,quit 两个连接\n- 修正 event-bus 的失实注释\n\n## 防回潮\n\ncheck:dual-backend 新增 4 条停机接线绊网(两后端各自的信号处理 / app.close /\nenableShutdownHooks / Redis 关闭钩子),负向测试已验证删掉信号处理即红。\n\n验收:真实 PG + Redis 192 tests / 0 failures;静态门禁 + 棘轮 + typecheck 5/5 + lint 2/2 全绿。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:35:43-07:00"},{"Sha1":"44cbbaeacf5f53e08e6e3f48a6d8bd2c3327d2de","Message":"fix(governance): 写链守护补齐五条已验证绕过(批次④·上)\n\ncheck:write-guard 守的是 P4「所有写显式带 tenant_id + 状态迁移乐观锁」这条最高优先级红线,\n但它自身存在五条可复现的绕过——每一条都能让违规代码拿到绿盘:\n\n1. **折行**:逐行匹配下 `await tx.order\\n .update({...})` 完全隐形。这甚至无需恶意——\n Prettier 对长链式调用本来就这样折行。\n2. **方括号访问**:`tx[\"order\"].update(` 用 `\\w+` 匹配不到,换个写法整条溜过去。\n3. **upsert 不在禁止模式里**:它与 update/delete 同源(同样只接受唯一键定位),\n TOCTOU 缝隙一模一样,却从未被拦。\n4. **where 里的 tenantId 从未被验证**:门禁 reason 一直宣称 where 是 `{ id, tenantId }`,\n 但只检查了方法名与 state 前置条件——`updateMany({ where: { id } })` 照样绿,\n 而那正是跨租户写。\n5. **0 行拒绝可被一行注释满足**:断言对原始源码做 includes,\n `// if (updated.count === 0)` 就能让一段被注释掉的防护报绿。\n\n修法:\n- 新增 scripts/lib/source-text.mjs 作为公共单源(stripComments / blankComments / lineOf)。\n 「注释掉的代码仍满足断言」这个形态 check-schema-sync 在 2026-08-15 已实锤并就地修过,\n 但同类断言散布在多个脚本里各自对原始源码匹配——按 P5,实锤过的教训必须推广,\n 否则只是把同一个洞留在别处。\n- A 部分改为「注释置空但保持字符偏移」后整体跨行匹配,再由偏移反推行号\n (逐行挡不住折行,整体匹配又需要能定位);禁止模式补 upsert 与方括号访问。\n- B 部分先提取 updateMany 的 where 块再逐项断言(state 前置条件 + tenantId),\n 且全部在剥注释后的源码上跑。\n\n验收:五条绕过逐一注入验证必红、逐一恢复现场;正向 10 项静态门禁 + 治理棘轮全绿。\nCLAUDE.md 基线表 write-guard 行同步为实际覆盖面(此前的描述比实际防线宽)。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:32:47-07:00"},{"Sha1":"c494fc7d2e6b1497647b2ca9601766626dd4775d","Message":"feat(auth): G8 生产级租户验签闭环——回退翻转 + 401 判责 + 降级通道清除(批次③)\n\nCLAUDE.md 里标注「动工前须用户点名」的最大 OPEN 缺口,验签半边落地。\n\n## 回退翻转(G8 的核心)\n\ndemo 期口径是 `Bearer 解析 ?? x-tenant-id`。接入验签后这个 `??` 会变成**降级攻击面**:\n伪造一个签名无效的 Bearer → 验签失败 → 自动落回客户端自报的 demo 头,等于没验。\n且只翻转这一处并不够——裸 `?tenantId=` 是另一条更彻底的通道,它连伪造 token 都不需要。\n\n- jwt 模式下:带 Authorization 或 ?access_token= 即**强制验签,失败一律 401,绝不回退**;\n x-tenant-id / ?tenantId= / `tenant:\u003cid\u003e` 简写整条不承认\n- demo 模式保留原型四级来源(本地与既有验收测试零改动),但**生产跑 demo 即拒绝启动**——\n 漏配鉴权应当是「起不来」,不是「起来了但谁都能进」\n\n## 架构切分:策略在 contracts,验签由后端注入\n\ncontracts 被 web 直接 import,把 jose 与密钥语义拉进去会泄漏到浏览器包。故:\n- `decideTenantResolution`(谁可信、失败怎么判)在 contracts,两后端共用,13 条单测覆盖\n- jose 验签在各后端(NestJS `src/auth/`、Fastify `src/plugins/auth.ts`)\n- `tenantFromBearerToken` 更名 `unsafeTenantClaimFromToken`:函数名里的 unsafe 是给 review 看的,\n 它只该用于浏览器 UI 预填与 demo 模式\n\nNestJS 的判定必须放 Guard 而非 `@TenantId()` 参数装饰器——后者的回调是同步的,\n判定留在那里就永远接不上异步的 JWKS 验签。\n\n## 顺带堵掉的三个额外攻击面(安全审计发现,均在已登记 G8 描述之外)\n\n1. **tenantId 是攻击者可控的自由文本**:无格式/长度约束时可凭空创建租户分区、\n 可用超长值撑爆 `@@unique([tenantId,email])` 的 btree 索引行打出稳定 500、\n 可用换行伪造日志行。现统一过 normalizeTenantId(≤128 + 受控字符集)。\n2. **重复查询参数的类型混淆**:Fastify 把 `?access_token=a\u0026access_token=b` 解析成数组,\n `typeof v === 'string'` 判定直接落空 → 静默跳过 token 分支 → 落到裸 ?tenantId=;\n 而 NestJS 的 `URLSearchParams.get()` 取第一个值。**同一条请求两后端两种身份判定**——\n 既是真实越权通道,也是 G17 行为分叉的活体实证。两侧统一取第一个值。\n3. **凭证进日志**:浏览器 EventSource/WS 无法自定义头,token 只能进 `?access_token=`,\n 而 pino 默认序列化器把完整 url 写进日志——接入真实验签后就是每次建连落盘一枚有效 JWT。\n Fastify logger 加 redact(authorization / cookie / req.url)。\n\n## 判责矩阵补上 401\n\n此前缺凭证一律回 400,把「未认证」伪装成「参数写错了」,客户端无从区分「该去登录」\n和「该改请求」。现 contracts 定义 UNAUTHENTICATED / INVALID_TOKEN / TENANT_FORBIDDEN;\n响应体**只回稳定错误码**,验签失败细节只进日志(区分「签名不对/已过期/issuer 不符」\n对攻击者是免费的探测反馈)。WS 保持 close(1008) 而非握手期 401——两后端同口径,\n且浏览器对握手 401 不暴露任何原因。\n\n## 验收\n\n真实 PG + Redis:**192 tests / 0 failures**(地板 161 → 192,只收紧)。\n两后端各 9 条 jwt 判责用例:正确签名放行 / 无凭证 401 / **伪造签名 + 合法 x-tenant-id 仍 401**\n/ 裸 demo 头 401 / 过期 401 / alg:none 401 / 无租户 claim 401 / health 免鉴权 / 重复参数不落 victim。\n新增 check:dual-backend 的 G8 绊网 5 条,每条均有负向红证据;其中「算法白名单」一条初版\n被自身的类型声明 `algorithms: string[]` 满足而无法变红,已改绑 jwtVerify 实参后重测。\n静态门禁 10/10 + 治理棘轮 + typecheck 5/5 + lint 2/2 全绿。\n\nRLS 未叠加(结构已就绪,阻碍在 CI 超级用户/单例 Prisma/dispatcher 跨租户扫描三处),\nweb 构建期内联 token 与 WS Origin 白名单同样登记为 G8 剩余项。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:27:41-07:00"}],"HeadCommit":{"Sha1":"4a707c3d3ec98b8ab45864a1b40b941589433914","Message":"chore(reports): 刷新治理证据至 b1510b5(clean,192 tests)\n\n静态 11 项门禁 + 治理棘轮 + lint + typecheck 全绿;\n真实 PG + Redis 验收 192 tests / 0 failures,provenance 绑定 clean commit b1510b5。\n\n⚠️ 作用域:本轮证据只覆盖静态与运行态两级。浏览器级 check:ui **未重跑**——\n本机无 Node 运行时(全部门禁在 node:22 容器内挂载工作树执行),而容器内没有\nLinux 版 Playwright 浏览器(宿主缓存的是 macOS 构建)。按事实作用域表,\n不得据此宣称 UI 层已验证。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:40:42-07:00"},"CompareURL":"luoanwu/base-framework/compare/53991090b821b76dff11eee3a2e92806ed3ab173...4a707c3d3ec98b8ab45864a1b40b941589433914","Len":10}...
|
1788061409
|
Edit
Delete
|
|
26781
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/governance/deep-optimization
|
0
|
|
1788061409
|
Edit
Delete
|
|
26780
|
5
|
5
|
5
|
90
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"8d38d4378 {"Commits":[{"Sha1":"8d38d4378b829970bdaf5ccb811e872883fb9d66","Message":"docs: H3 能力图谱固化(Context-to-AudioVideo 定位,证据分级)\n\n用户研究简报 + 官方文档要点入库 docs/domain/h3-capability-map.md:\n- ✅ 本机已验证:三工作流 _workflow_map、ref2va 参考硬约束\n (图≤9/视频≤3含音轨/音频≤3不可单独/总≤12/顺序即语义/帧率必须随媒体)\n- 📄 官方引用:关系分级、运镜词表、多镜头 schema、声音四类、\n 完整系统(Context-IR/Regenerate-2K)≠开放权重 等\n- 路线图锚点:分镜段 → 可挂参考的音画生成单元(fl2va 先行、ref2va 随后)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"hillao","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"hillao","Timestamp":"2026-08-29T20:29:02-07:00"}],"HeadCommit":{"Sha1":"8d38d4378b829970bdaf5ccb811e872883fb9d66","Message":"docs: H3 能力图谱固化(Context-to-AudioVideo 定位,证据分级)\n\n用户研究简报 + 官方文档要点入库 docs/domain/h3-capability-map.md:\n- ✅ 本机已验证:三工作流 _workflow_map、ref2va 参考硬约束\n (图≤9/视频≤3含音轨/音频≤3不可单独/总≤12/顺序即语义/帧率必须随媒体)\n- 📄 官方引用:关系分级、运镜词表、多镜头 schema、声音四类、\n 完整系统(Context-IR/Regenerate-2K)≠开放权重 等\n- 路线图锚点:分镜段 → 可挂参考的音画生成单元(fl2va 先行、ref2va 随后)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"hillao","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"hillao","Timestamp":"2026-08-29T20:29:02-07:00"},"CompareURL":"luoanwu/minimax-h3-studio/compare/cc4fd9ff70eff1c23556db5da7ac36b0639383e8...8d38d4378b829970bdaf5ccb811e872883fb9d66","Len":1}...
|
1788060627
|
Edit
Delete
|
|
26779
|
5
|
5
|
5
|
90
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"cc4fd9ff7 {"Commits":[{"Sha1":"cc4fd9ff70eff1c23556db5da7ac36b0639383e8","Message":"docs: 跨段一致性归因修正——t2va 工作流边界而非模型上限\n\n本机 diffusers 管线实查(modular_blocks_minimax_h3 _workflow_map):H3 实为\nt2va / fl2va / ref2va 三工作流。fl2va(首尾帧锚定)与 t2va 共用已缓存的 62G\ntransformer 分区、零下载可用;ref2va(全模态有序参考,\u003cPicture i\u003e/\u003cAudio j\u003e/\n\u003cVideo k\u003e 标签语义)需另下 ~62GB transformer_ref。UI 提示、README、契约注释、\n蓝图、CLAUDE.md 真源地图五处按实归因;e2e 锚定短语保持不变。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"hillao","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"hillao","Timestamp":"2026-08-29T20:23:45-07:00"}],"HeadCommit":{"Sha1":"cc4fd9ff70eff1c23556db5da7ac36b0639383e8","Message":"docs: 跨段一致性归因修正——t2va 工作流边界而非模型上限\n\n本机 diffusers 管线实查(modular_blocks_minimax_h3 _workflow_map):H3 实为\nt2va / fl2va / ref2va 三工作流。fl2va(首尾帧锚定)与 t2va 共用已缓存的 62G\ntransformer 分区、零下载可用;ref2va(全模态有序参考,\u003cPicture i\u003e/\u003cAudio j\u003e/\n\u003cVideo k\u003e 标签语义)需另下 ~62GB transformer_ref。UI 提示、README、契约注释、\n蓝图、CLAUDE.md 真源地图五处按实归因;e2e 锚定短语保持不变。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"hillao","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"hillao","Timestamp":"2026-08-29T20:23:45-07:00"},"CompareURL":"luoanwu/minimax-h3-studio/compare/1c5b6ec9fef8d18a24b5bcd6a44665279fb3f493...cc4fd9ff70eff1c23556db5da7ac36b0639383e8","Len":1}...
|
1788060230
|
Edit
Delete
|
|
26778
|
5
|
5
|
5
|
91
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"c1d59277c {"Commits":[{"Sha1":"c1d59277c1c321407babdaf3ad6fe26c73e7cb55","Message":"chore(governance): refresh acceptance evidence for settings panel commit\n\n三级门禁在 clean tree(92b5c75)实跑全绿:静态 12 门禁、真实 DB 155\ntests、浏览器 4 cases;16 份报告 provenance 全部 gitSha=92b5c75 /\nworktreeDirty=false。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:16:38-07:00"},{"Sha1":"92b5c754bb4c98f3473f4e445c41b59a76d21b7a","Message":"feat(web): workspace settings panel\n\n侧栏「设置」现在打开真实设置面板(模态,Esc/遮罩可关,aria-modal):\n- 对话默认值:联网搜索/本地工具开关、推理强度三档分段控件,\n 持久化走 chat-ui-store(新增 resetPreferences 恢复默认)\n- 本地运行时:展示真实探测结果(引擎/连接延迟/模型文件)+ 手动重检\n- 本机数据:会话与知识库计数、清除全部本机会话(confirm +\n localStorage 容错),明示清除不影响模型与知识库\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:15:02-07:00"}],"HeadCommit":{"Sha1":"c1d59277c1c321407babdaf3ad6fe26c73e7cb55","Message":"chore(governance): refresh acceptance evidence for settings panel commit\n\n三级门禁在 clean tree(92b5c75)实跑全绿:静态 12 门禁、真实 DB 155\ntests、浏览器 4 cases;16 份报告 provenance 全部 gitSha=92b5c75 /\nworktreeDirty=false。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-29T20:16:38-07:00"},"CompareURL":"luoanwu/qwen3-8-flash-next/compare/48c7ef665e210ef004970fc6f1fdc443a03b48a1...c1d59277c1c321407babdaf3ad6fe26c73e7cb55","Len":2}...
|
1788059801
|
Edit
Delete
|
|
26777
|
5
|
5
|
5
|
90
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"1c5b6ec9f {"Commits":[{"Sha1":"1c5b6ec9fef8d18a24b5bcd6a44665279fb3f493","Message":"docs: 发布状态快照更新——远端已建并 SHA 对齐(G14 收窄到 CI 证据)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"hillao","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"hillao","Timestamp":"2026-08-29T20:15:44-07:00"}],"HeadCommit":{"Sha1":"1c5b6ec9fef8d18a24b5bcd6a44665279fb3f493","Message":"docs: 发布状态快照更新——远端已建并 SHA 对齐(G14 收窄到 CI 证据)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"hillao","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"hillao","Timestamp":"2026-08-29T20:15:44-07:00"},"CompareURL":"luoanwu/minimax-h3-studio/compare/46dce73b5cfc83e6e6cfb87922f22faee76fdd28...1c5b6ec9fef8d18a24b5bcd6a44665279fb3f493","Len":1}...
|
1788059747
|
Edit
Delete
|