|
22083
|
17
|
5
|
17
|
69
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"af6e07598 {"Commits":[{"Sha1":"af6e07598ac4076b5f26fb7c3b27c17d1e934dc5","Message":"新增 20261009 原型版本入口\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-08-12T14:59:58+08:00"}],"HeadCommit":{"Sha1":"af6e07598ac4076b5f26fb7c3b27c17d1e934dc5","Message":"新增 20261009 原型版本入口\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-08-12T14:59:58+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/924492bd66eeb2ad246b789b78540b0b441457a9...af6e07598ac4076b5f26fb7c3b27c17d1e934dc5","Len":1}...
|
1786518018
|
Edit
Delete
|
|
22084
|
18
|
5
|
17
|
69
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"af6e07598 {"Commits":[{"Sha1":"af6e07598ac4076b5f26fb7c3b27c17d1e934dc5","Message":"新增 20261009 原型版本入口\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-08-12T14:59:58+08:00"}],"HeadCommit":{"Sha1":"af6e07598ac4076b5f26fb7c3b27c17d1e934dc5","Message":"新增 20261009 原型版本入口\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-08-12T14:59:58+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/924492bd66eeb2ad246b789b78540b0b441457a9...af6e07598ac4076b5f26fb7c3b27c17d1e934dc5","Len":1}...
|
1786518018
|
Edit
Delete
|
|
22131
|
17
|
5
|
17
|
69
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"f4912a70d {"Commits":[{"Sha1":"f4912a70d6500807b8ab54b868df97fd1622e70c","Message":"同步 20260915 原型数量\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-08-12T15:28:03+08:00"}],"HeadCommit":{"Sha1":"f4912a70d6500807b8ab54b868df97fd1622e70c","Message":"同步 20260915 原型数量\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-08-12T15:28:03+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/af6e07598ac4076b5f26fb7c3b27c17d1e934dc5...f4912a70d6500807b8ab54b868df97fd1622e70c","Len":1}...
|
1786519713
|
Edit
Delete
|
|
22132
|
18
|
5
|
17
|
69
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"f4912a70d {"Commits":[{"Sha1":"f4912a70d6500807b8ab54b868df97fd1622e70c","Message":"同步 20260915 原型数量\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-08-12T15:28:03+08:00"}],"HeadCommit":{"Sha1":"f4912a70d6500807b8ab54b868df97fd1622e70c","Message":"同步 20260915 原型数量\n","AuthorEmail":"codex@local","AuthorName":"Codex","CommitterEmail":"codex@local","CommitterName":"Codex","Timestamp":"2026-08-12T15:28:03+08:00"},"CompareURL":"linmingzhang/ktv-booking-prototype/compare/af6e07598ac4076b5f26fb7c3b27c17d1e934dc5...f4912a70d6500807b8ab54b868df97fd1622e70c","Len":1}...
|
1786519713
|
Edit
Delete
|
|
22445
|
5
|
5
|
5
|
73
|
0
|
0
|
refs/heads/main
|
0
|
|
1786612368
|
Edit
Delete
|
|
22446
|
5
|
5
|
5
|
73
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"5adfbb117 {"Commits":[{"Sha1":"5adfbb1177c24e9a9ddb95ab1b5e5865baa60642","Message":"feat(content-analysis): integrate canonical vocal score metrics\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-13T01:35:39-07:00"},{"Sha1":"e64a62b0b11460ac8ac0965fa3f755a6e23963a5","Message":"feat(content-analysis): add isolated vocal score gold metrics\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-13T00:43:04-07:00"},{"Sha1":"43f31bf8615c32aa70532927d9f34fcdcce68717","Message":"feat(score): harden evaluation eligibility\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-12T23:10:30-07:00"},{"Sha1":"5f47fc13a7039417186241b5f6d2a6fe60f0a0f8","Message":"fix(stem): align realtime endpoint and seal publish evidence\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-12T21:20:21-07:00"},{"Sha1":"3eb89b087903c1657bca1927cf18941a303029a1","Message":"feat(三线完善): run 工作台 + 评分真实链 + 舞谱回放对拍 + 灯谱修订对比;全量门禁首绿\n\n- Web:/content-analysis/runs 持久编排工作台(素材载入/歌词证据浏览器内容寻址/实时列表与详情)\n- 评分工作台接通 WAV→3351→DSP→P0 真实链(补 next.config DSP rewrite),DSP 成熟度徽标不弱化诚实边界\n- 舞谱工作台本地回放对拍(SHA 绑定回放源 + 播放头 + 越拍高亮)\n- 灯谱 RevisionDiffPanel(基准快照 cue 级 diff + 修订链视图)+ A–E 报告钻取\n- 注册表/门禁成对更新(integrationStatus、runs 工作台、activeScope)\n- 修复三处历史死断言(首页 spec 漂移)+ C16 式容器锚定;首页 runs 链接标签\n- 目标仓首次全绿:check:runtime 80 tests、check:ui 15 用例、pnpm check 含棘轮全通过,\n reportProvenanceViolations 13→0,棘轮地板收紧至 15 文件/95 用例/80 tests/15 UI 用例\n- CLAUDE.md 动态区 8 行基线表 + 4 段说明同步为目标仓新鲜证据口径\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"ailaoluo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"ailaoluo","Timestamp":"2026-08-12T08:26:31-07:00"}],"HeadCommit":{"Sha1":"5adfbb1177c24e9a9ddb95ab1b5e5865baa60642","Message":"feat(content-analysis): integrate canonical vocal score metrics\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-13T01:35:39-07:00"},"CompareURL":"","Len":7}...
|
1786612368
|
Edit
Delete
|
|
22535
|
5
|
5
|
5
|
73
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"5756bf365 {"Commits":[{"Sha1":"5756bf3650630520be67b4d5373a82937d065311","Message":"feat(content-analysis): add vocal score physical projection\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-13T03:30:36-07:00"}],"HeadCommit":{"Sha1":"5756bf3650630520be67b4d5373a82937d065311","Message":"feat(content-analysis): add vocal score physical projection\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-13T03:30:36-07:00"},"CompareURL":"luoanwu/highpraise-content-management-platform/compare/5adfbb1177c24e9a9ddb95ab1b5e5865baa60642...5756bf3650630520be67b4d5373a82937d065311","Len":1}...
|
1786617045
|
Edit
Delete
|
|
22845
|
1
|
5
|
1
|
68
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"cc3ae2997 {"Commits":[{"Sha1":"cc3ae29970a6d064dabf5025bd31317ffd1bf77f","Message":"fix: replace staging domain with www.g-hi.com across SEO assets\n\n- src/seo-config.js: DEFAULT_SITE_URL switched to https://www.g-hi.com\n- .env.example: VITE_SITE_URL aligned with new canonical domain\n- public/{sitemap.xml,llms.txt,llms-full.txt,robots.txt}: regenerated via build\n- tests/sites-worker.test.mjs: STAGING_URL + llms URL assertion updated\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T13:25:04+08:00"}],"HeadCommit":{"Sha1":"cc3ae29970a6d064dabf5025bd31317ffd1bf77f","Message":"fix: replace staging domain with www.g-hi.com across SEO assets\n\n- src/seo-config.js: DEFAULT_SITE_URL switched to https://www.g-hi.com\n- .env.example: VITE_SITE_URL aligned with new canonical domain\n- public/{sitemap.xml,llms.txt,llms-full.txt,robots.txt}: regenerated via build\n- tests/sites-worker.test.mjs: STAGING_URL + llms URL assertion updated\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T13:25:04+08:00"},"CompareURL":"luoanwu/juhai-official-website/compare/174a84459d73fd6bd3a03983fcfdcdae2747d91b...cc3ae29970a6d064dabf5025bd31317ffd1bf77f","Len":1}...
|
1786685134
|
Edit
Delete
|
|
22846
|
5
|
5
|
1
|
68
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"cc3ae2997 {"Commits":[{"Sha1":"cc3ae29970a6d064dabf5025bd31317ffd1bf77f","Message":"fix: replace staging domain with www.g-hi.com across SEO assets\n\n- src/seo-config.js: DEFAULT_SITE_URL switched to https://www.g-hi.com\n- .env.example: VITE_SITE_URL aligned with new canonical domain\n- public/{sitemap.xml,llms.txt,llms-full.txt,robots.txt}: regenerated via build\n- tests/sites-worker.test.mjs: STAGING_URL + llms URL assertion updated\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T13:25:04+08:00"}],"HeadCommit":{"Sha1":"cc3ae29970a6d064dabf5025bd31317ffd1bf77f","Message":"fix: replace staging domain with www.g-hi.com across SEO assets\n\n- src/seo-config.js: DEFAULT_SITE_URL switched to https://www.g-hi.com\n- .env.example: VITE_SITE_URL aligned with new canonical domain\n- public/{sitemap.xml,llms.txt,llms-full.txt,robots.txt}: regenerated via build\n- tests/sites-worker.test.mjs: STAGING_URL + llms URL assertion updated\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T13:25:04+08:00"},"CompareURL":"luoanwu/juhai-official-website/compare/174a84459d73fd6bd3a03983fcfdcdae2747d91b...cc3ae29970a6d064dabf5025bd31317ffd1bf77f","Len":1}...
|
1786685134
|
Edit
Delete
|
|
22883
|
1
|
5
|
1
|
68
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"a46ef8ff0 {"Commits":[{"Sha1":"a46ef8ff05a1dad9f77e9539c22871489a6f80b5","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T14:37:26+08:00"}],"HeadCommit":{"Sha1":"a46ef8ff05a1dad9f77e9539c22871489a6f80b5","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T14:37:26+08:00"},"CompareURL":"luoanwu/juhai-official-website/compare/cc3ae29970a6d064dabf5025bd31317ffd1bf77f...a46ef8ff05a1dad9f77e9539c22871489a6f80b5","Len":1}...
|
1786689512
|
Edit
Delete
|
|
22884
|
5
|
5
|
1
|
68
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"a46ef8ff0 {"Commits":[{"Sha1":"a46ef8ff05a1dad9f77e9539c22871489a6f80b5","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T14:37:26+08:00"}],"HeadCommit":{"Sha1":"a46ef8ff05a1dad9f77e9539c22871489a6f80b5","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T14:37:26+08:00"},"CompareURL":"luoanwu/juhai-official-website/compare/cc3ae29970a6d064dabf5025bd31317ffd1bf77f...a46ef8ff05a1dad9f77e9539c22871489a6f80b5","Len":1}...
|
1786689512
|
Edit
Delete
|
|
22917
|
1
|
5
|
1
|
68
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"b068e12e9 {"Commits":[{"Sha1":"b068e12e978e99516741f071169c687ecc0b06ce","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T15:21:15+08:00"}],"HeadCommit":{"Sha1":"b068e12e978e99516741f071169c687ecc0b06ce","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T15:21:15+08:00"},"CompareURL":"luoanwu/juhai-official-website/compare/a46ef8ff05a1dad9f77e9539c22871489a6f80b5...b068e12e978e99516741f071169c687ecc0b06ce","Len":1}...
|
1786692092
|
Edit
Delete
|
|
22918
|
5
|
5
|
1
|
68
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"b068e12e9 {"Commits":[{"Sha1":"b068e12e978e99516741f071169c687ecc0b06ce","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T15:21:15+08:00"}],"HeadCommit":{"Sha1":"b068e12e978e99516741f071169c687ecc0b06ce","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T15:21:15+08:00"},"CompareURL":"luoanwu/juhai-official-website/compare/a46ef8ff05a1dad9f77e9539c22871489a6f80b5...b068e12e978e99516741f071169c687ecc0b06ce","Len":1}...
|
1786692092
|
Edit
Delete
|
|
22921
|
1
|
5
|
1
|
68
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"feb8f3391 {"Commits":[{"Sha1":"feb8f3391048a67a8805e504ecadb581f156505b","Message":"1111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T15:23:13+08:00"}],"HeadCommit":{"Sha1":"feb8f3391048a67a8805e504ecadb581f156505b","Message":"1111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T15:23:13+08:00"},"CompareURL":"luoanwu/juhai-official-website/compare/b068e12e978e99516741f071169c687ecc0b06ce...feb8f3391048a67a8805e504ecadb581f156505b","Len":1}...
|
1786692209
|
Edit
Delete
|
|
22922
|
5
|
5
|
1
|
68
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"feb8f3391 {"Commits":[{"Sha1":"feb8f3391048a67a8805e504ecadb581f156505b","Message":"1111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T15:23:13+08:00"}],"HeadCommit":{"Sha1":"feb8f3391048a67a8805e504ecadb581f156505b","Message":"1111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T15:23:13+08:00"},"CompareURL":"luoanwu/juhai-official-website/compare/b068e12e978e99516741f071169c687ecc0b06ce...feb8f3391048a67a8805e504ecadb581f156505b","Len":1}...
|
1786692209
|
Edit
Delete
|
|
22927
|
1
|
5
|
1
|
68
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"721c2a43f {"Commits":[{"Sha1":"721c2a43fe53aa9f05d45539e8acb43412cd0838","Message":"fix(website): restore legacy news and forms\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T15:33:10+08:00"}],"HeadCommit":{"Sha1":"721c2a43fe53aa9f05d45539e8acb43412cd0838","Message":"fix(website): restore legacy news and forms\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T15:33:10+08:00"},"CompareURL":"luoanwu/juhai-official-website/compare/feb8f3391048a67a8805e504ecadb581f156505b...721c2a43fe53aa9f05d45539e8acb43412cd0838","Len":1}...
|
1786692792
|
Edit
Delete
|
|
22928
|
5
|
5
|
1
|
68
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"721c2a43f {"Commits":[{"Sha1":"721c2a43fe53aa9f05d45539e8acb43412cd0838","Message":"fix(website): restore legacy news and forms\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T15:33:10+08:00"}],"HeadCommit":{"Sha1":"721c2a43fe53aa9f05d45539e8acb43412cd0838","Message":"fix(website): restore legacy news and forms\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-14T15:33:10+08:00"},"CompareURL":"luoanwu/juhai-official-website/compare/feb8f3391048a67a8805e504ecadb581f156505b...721c2a43fe53aa9f05d45539e8acb43412cd0838","Len":1}...
|
1786692792
|
Edit
Delete
|
|
23252
|
5
|
5
|
5
|
74
|
0
|
0
|
refs/heads/main
|
0
|
|
1786746163
|
Edit
Delete
|
|
23253
|
5
|
5
|
5
|
74
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"950d7e3d2 {"Commits":[{"Sha1":"950d7e3d2189ba40de3049c4f10df0cad414c691","Message":"chore(reports): 刷新治理证据,绑定发布状态快照提交\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-14T15:17:56-07:00"},{"Sha1":"5261c63466442dec3dfed5282117e8e700d22aea","Message":"docs(governance): 发布状态快照切换为 haimate 独立远端事实\n\norigin=GitHub laoluojuhai/haimate(私有)已推送对齐;gitea 远端项目待建(push-to-create 关闭)。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-14T15:17:56-07:00"},{"Sha1":"5aba5a36e8958a21696e895693aa69bdc54a3308","Message":"chore(reports): 刷新治理证据,绑定产品全景图归档提交(worktreeDirty=false)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-14T15:09:08-07:00"},{"Sha1":"7e2efd8626198ee54b5c98a118eadfa349ead8f8","Message":"docs(product): 归档产品全景图 + 忽略 playwright-cli 调试产物\n\nmermaid 导出的产品全景图移入 docs/product/ 并在 README 登记(说明性快照,\n状态标注不作真源);.playwright-cli/ 为浏览器交互调试缓存,非验收证据,入 ignore。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-14T15:08:55-07:00"},{"Sha1":"5f4af5cd5ddb5188f410e292d5066def03fcf982","Message":"chore(reports): 刷新治理证据,绑定 P0 收口加固提交\n\n静态门禁绑定 8c986f5;runtime(252 tests)/UI(11 用例)证据为提交前 dirty 工作区实跑,\nworktreeDirty=true 仅余未跟踪的 mermaid-diagram.svg(未入库的本地产物)。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-14T15:04:05-07:00"}],"HeadCommit":{"Sha1":"950d7e3d2189ba40de3049c4f10df0cad414c691","Message":"chore(reports): 刷新治理证据,绑定发布状态快照提交\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-14T15:17:56-07:00"},"CompareURL":"luoanwu/haimate/compare/b4c2a8dcb155eeb7b28c2a2ee55520c649dd3d49...950d7e3d2189ba40de3049c4f10df0cad414c691","Len":10}...
|
1786746163
|
Edit
Delete
|
|
23254
|
5
|
5
|
5
|
74
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"a7b05c570 {"Commits":[{"Sha1":"a7b05c570031d440008da58d5cd13d7c9097b687","Message":"chore(reports): 刷新治理证据,绑定双远端对齐快照提交\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-14T15:24:05-07:00"},{"Sha1":"38a5b9eff3b427df3010450beb499ad886cd47f2","Message":"docs(governance): 发布状态快照——双远端 haimate 均对齐 950d7e3\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-14T15:24:05-07:00"}],"HeadCommit":{"Sha1":"a7b05c570031d440008da58d5cd13d7c9097b687","Message":"chore(reports): 刷新治理证据,绑定双远端对齐快照提交\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-14T15:24:05-07:00"},"CompareURL":"luoanwu/haimate/compare/950d7e3d2189ba40de3049c4f10df0cad414c691...a7b05c570031d440008da58d5cd13d7c9097b687","Len":2}...
|
1786746304
|
Edit
Delete
|
|
23255
|
5
|
5
|
5
|
74
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"66f0513cf {"Commits":[{"Sha1":"66f0513cfb65a0eb27fe77ff8b5bd158c0901623","Message":"docs(finance): 财务对账模块蓝图与 money 契约(在制品,尚无运行时消费方)\n\nADR-0010 + finance-reconciliation-blueprint + owner-matrix/domain-glossary 登记 +\npackages/contracts/src/money.ts。money.ts 未从 index 导出、双端零消费方,\n按\"先登记后建表\"纪律先落蓝图与对象归属,实现另行推进。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-14T16:07:13-07:00"},{"Sha1":"cc2759215b871373a7df54e410fb788f4c8cc8be","Message":"fix: 对抗性验收发现的三项修复——中文短词检索/分区覆盖/实时偶发\n\n- KbStore(双端): trigram 只为 ≥3 字符查询产出 trigram,2 字中文词(房态/报价)\n 命中 0 行且不抛错,原 LIKE 兜底只在抛错时触发 → 空结果继续走 LIKE 子串兜底;\n 双端各补 HTTP 层中文短词回归(负向测试:撤掉兜底两端同时红)\n- ApprovalsPanel: 补 approvals-pending/approvals-decided 语义容器与 e2e 分区断言。\n 实测原用例在分区回潮后仍全绿(零覆盖),新断言可让审批闭环用例由绿转红\n- e2e 实时断言 15s→30s: dispatcher 1s 轮询在并行负载下抖动导致偶发红;\n 放宽等待不掩盖回归,禁用 retries(会把真回归记成 flaky 且仍计入 uiTestsPassed)\n- 边界断言钉死 contracts 真实上限(200 放行/201 拒绝/未知参数 400)\n- CLAUDE.md G18 补记 UI 层实时偶发与\"禁用 retries\"纪律\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-14T16:07:03-07:00"}],"HeadCommit":{"Sha1":"66f0513cfb65a0eb27fe77ff8b5bd158c0901623","Message":"docs(finance): 财务对账模块蓝图与 money 契约(在制品,尚无运行时消费方)\n\nADR-0010 + finance-reconciliation-blueprint + owner-matrix/domain-glossary 登记 +\npackages/contracts/src/money.ts。money.ts 未从 index 导出、双端零消费方,\n按\"先登记后建表\"纪律先落蓝图与对象归属,实现另行推进。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-14T16:07:13-07:00"},"CompareURL":"luoanwu/haimate/compare/a7b05c570031d440008da58d5cd13d7c9097b687...66f0513cfb65a0eb27fe77ff8b5bd158c0901623","Len":2}...
|
1786748944
|
Edit
Delete
|
|
23257
|
5
|
5
|
5
|
75
|
0
|
0
|
refs/heads/main
|
0
|
|
1786853015
|
Edit
Delete
|
|
23258
|
5
|
5
|
5
|
75
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"4bcef1bbf {"Commits":[{"Sha1":"4bcef1bbfffbca2968adef922ca60afb8d4d5bfd","Message":"docs(governance): record clean three-tier evidence SHAs and provenance blind spot\n\n三级证据现均 worktreeDirty=false,分别绑定 9c7586e/1ea36ef/4b8055e\n(相邻 commit 只差 reports/*.latest.json,源码逐字相同)。\n\n同时记录一个继承自源仓的治理盲区:governance-report 对 runtime/UI 报告\n只校验 gitSha 格式合法,不校验等于当前 HEAD——证据新鲜度只靠人工纪律,\n无机器守卫。判断三级状态须实际比对各报告 provenance.gitSha 与 HEAD。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"ailaoluo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"ailaoluo","Timestamp":"2026-08-15T20:56:20-07:00"},{"Sha1":"9c7586eee8910f54f7805c411fa9a742b77fbfd5","Message":"chore(reports): bind UI acceptance evidence to clean commit\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"ailaoluo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"ailaoluo","Timestamp":"2026-08-15T20:55:43-07:00"},{"Sha1":"4b8055e04b7dd0b4943fa712a7663ee4e11ec194","Message":"chore(reports): bind runtime acceptance evidence to clean commit\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"ailaoluo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"ailaoluo","Timestamp":"2026-08-15T20:55:21-07:00"},{"Sha1":"1ea36ef0c0c09a93e20594dc31f10a4beef7877e","Message":"chore(reports): refresh static gate evidence on clean tree\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"ailaoluo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"ailaoluo","Timestamp":"2026-08-15T20:55:00-07:00"},{"Sha1":"67310efba607e03c717fc0d3bb3c50b3f880427c","Message":"feat(recruitment): 前端作战台 + 3 个浏览器用例,三级门禁全绿\n\n前端(apps/web):\n- RecruitmentPanel 招商作战台挂上首页:线索列表/创建/推进/转换、商机卡、\n 岗位切换器、看板(在途/高质量成交/阶段门拦截)\n- 动作按钮不硬编码 17 态,从 GET /api/opportunities/machine 的\n states[state].on 渲染;证据表单由 contracts 的 GATE_REQUIREMENTS 驱动,\n 后端加一项要求前端自动多一格\n- 阶段门反馈分两种:gate-blocked(缺证据 + missing[])与 role-blocked(403)\n- lib/api.ts 增招商调用层,动作接口带 x-actor-role 头\n\n浏览器级验收(4 → 7 用例),把招商域证据等级从「真实 DB API」推到「浏览器交互」:\n- 线索 → 分配 → 接通 → 转商机,验证 CONVERTED 冻结\n- 阶段门:空证据提交被服务端拦下、UI 显示 missing[]、状态不动;补齐后放行\n- 回款门:SALES 填齐同样证据仍被 403,切 FINANCE 才通过\n (证据完全相同、唯一变量是岗位——锁死「角色门独立于证据门」)\n\n棘轮上调(只涨不降):uiTestsPassed 4 → 7\n\n文档:CLAUDE.md 证据段与蓝图状态同步为「一期已落地」,并写明未覆盖项\n(Fastify 侧 UI 属 G17 既有缺口、Interaction 录入页、看板外读模型)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"ailaoluo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"ailaoluo","Timestamp":"2026-08-15T20:53:03-07:00"}],"HeadCommit":{"Sha1":"4bcef1bbfffbca2968adef922ca60afb8d4d5bfd","Message":"docs(governance): record clean three-tier evidence SHAs and provenance blind spot\n\n三级证据现均 worktreeDirty=false,分别绑定 9c7586e/1ea36ef/4b8055e\n(相邻 commit 只差 reports/*.latest.json,源码逐字相同)。\n\n同时记录一个继承自源仓的治理盲区:governance-report 对 runtime/UI 报告\n只校验 gitSha 格式合法,不校验等于当前 HEAD——证据新鲜度只靠人工纪律,\n无机器守卫。判断三级状态须实际比对各报告 provenance.gitSha 与 HEAD。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"ailaoluo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"ailaoluo","Timestamp":"2026-08-15T20:56:20-07:00"},"CompareURL":"","Len":8}...
|
1786853015
|
Edit
Delete
|
|
23259
|
5
|
5
|
5
|
75
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"299e9e73a {"Commits":[{"Sha1":"299e9e73a28b31c10f2bd4a03db552811de642db","Message":"docs(governance): record gitea publish baseline for independent repo\n\n远端已建立并实测对齐:\ngitea = https://gitea.g-hi.com/luoanwu/training-framework.git(独立新仓)\nls-remote 实测 gitea/main=4bcef1bb,与推送时本地 HEAD 逐字一致。\n\n同时写明仍不成立的宣称:远端 CI 已绿、已部署、生产可用。\n并记录 push 打印 Everything up-to-date 不构成已发布证据。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"ailaoluo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"ailaoluo","Timestamp":"2026-08-15T21:04:53-07:00"}],"HeadCommit":{"Sha1":"299e9e73a28b31c10f2bd4a03db552811de642db","Message":"docs(governance): record gitea publish baseline for independent repo\n\n远端已建立并实测对齐:\ngitea = https://gitea.g-hi.com/luoanwu/training-framework.git(独立新仓)\nls-remote 实测 gitea/main=4bcef1bb,与推送时本地 HEAD 逐字一致。\n\n同时写明仍不成立的宣称:远端 CI 已绿、已部署、生产可用。\n并记录 push 打印 Everything up-to-date 不构成已发布证据。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"ailaoluo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"ailaoluo","Timestamp":"2026-08-15T21:04:53-07:00"},"CompareURL":"luoanwu/training-framework/compare/4bcef1bbfffbca2968adef922ca60afb8d4d5bfd...299e9e73a28b31c10f2bd4a03db552811de642db","Len":1}...
|
1786853096
|
Edit
Delete
|
|
23260
|
5
|
5
|
5
|
75
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"27a28dd5a {"Commits":[{"Sha1":"27a28dd5a5a8aabd88832337fd5ffbc1216dbbf8","Message":"docs(ai-mentor): 培训 AI 导师「嗨伙伴」设计稿\n\n定位:AI 演客户,人演顾问,AI 打首评,人做复检。\n\n核心判断:\n1. 角色反转把幻觉赶到无害的一侧——AI 只演客户(客户发言不构成巨嗨对外承诺),\n 并明令禁止 AI 以客户身份陈述巨嗨产品/价格/兼容性(客户本就不该知道),\n 从而把「输出巨嗨事实」从 AI 的可能行为里整个移除。\n 顺带补上文档 15.2「三人轮换」里最难安排的客户角色。\n2. AI 的目标函数是按案例卡「隐藏风险」诱导学员犯错,不是配合学员;学员没上钩才算通过。\n3. 评分分两层:红线层用 20.2 禁用清单做确定性扫描(可复现可审计),\n 评分层 LLM 按 18.1 八维打分但每维必须附学员原话;\n 并套用 19.4 教练校准——AI 与人类复检维度偏差超 10 个百分点即冻结 AI 评分回人工。\n\n与上游嗨伙伴产品线对齐(工作/嗨伙计 crew.ts + check:partner-truth):\n- 防幻觉架构照搬已验证的 hallucination-guard 形状(renderQuote → renderFact(contentId)),\n 不重新发明;\n- 「执行完成只认领域终态,ToolCall ALLOWED 不算完成」映射为\n 「AI 打完分 ≠ 培训完成」,领域终态是学员通过复检并获得 18.2 操作授权;\n- 一期为内部工具,不进 CREW_ROSTER(未对外售卖即无产品就绪事实)。\n\n硬依赖点名:二期「官网事实问答」被 ContentLedger 阻塞——它尚未落地,\n没有它就等于让 LLM 直接产出巨嗨事实,是本设计第 4 节明令禁止的形态。\n\n未落地、未评审。对象模型与状态机为草案,未登记 owner-matrix。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"ailaoluo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"ailaoluo","Timestamp":"2026-08-15T21:27:44-07:00"}],"HeadCommit":{"Sha1":"27a28dd5a5a8aabd88832337fd5ffbc1216dbbf8","Message":"docs(ai-mentor): 培训 AI 导师「嗨伙伴」设计稿\n\n定位:AI 演客户,人演顾问,AI 打首评,人做复检。\n\n核心判断:\n1. 角色反转把幻觉赶到无害的一侧——AI 只演客户(客户发言不构成巨嗨对外承诺),\n 并明令禁止 AI 以客户身份陈述巨嗨产品/价格/兼容性(客户本就不该知道),\n 从而把「输出巨嗨事实」从 AI 的可能行为里整个移除。\n 顺带补上文档 15.2「三人轮换」里最难安排的客户角色。\n2. AI 的目标函数是按案例卡「隐藏风险」诱导学员犯错,不是配合学员;学员没上钩才算通过。\n3. 评分分两层:红线层用 20.2 禁用清单做确定性扫描(可复现可审计),\n 评分层 LLM 按 18.1 八维打分但每维必须附学员原话;\n 并套用 19.4 教练校准——AI 与人类复检维度偏差超 10 个百分点即冻结 AI 评分回人工。\n\n与上游嗨伙伴产品线对齐(工作/嗨伙计 crew.ts + check:partner-truth):\n- 防幻觉架构照搬已验证的 hallucination-guard 形状(renderQuote → renderFact(contentId)),\n 不重新发明;\n- 「执行完成只认领域终态,ToolCall ALLOWED 不算完成」映射为\n 「AI 打完分 ≠ 培训完成」,领域终态是学员通过复检并获得 18.2 操作授权;\n- 一期为内部工具,不进 CREW_ROSTER(未对外售卖即无产品就绪事实)。\n\n硬依赖点名:二期「官网事实问答」被 ContentLedger 阻塞——它尚未落地,\n没有它就等于让 LLM 直接产出巨嗨事实,是本设计第 4 节明令禁止的形态。\n\n未落地、未评审。对象模型与状态机为草案,未登记 owner-matrix。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"ailaoluo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"ailaoluo","Timestamp":"2026-08-15T21:27:44-07:00"},"CompareURL":"luoanwu/training-framework/compare/299e9e73a28b31c10f2bd4a03db552811de642db...27a28dd5a5a8aabd88832337fd5ffbc1216dbbf8","Len":1}...
|
1786855126
|
Edit
Delete
|
|
23626
|
5
|
5
|
5
|
72
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"8ae98649e {"Commits":[{"Sha1":"8ae98649e077fa188f8e9c1b0a11b78a2377c836","Message":"Merge pull request #11 from laoluojuhai/feat/product-catalog-search-and-image-upload\n\nfeat(products): 商品库服务端搜索筛选 + 图片上传至对象存储","AuthorEmail":"158980461+laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"noreply@github.com","CommitterName":"GitHub","Timestamp":"2026-08-17T04:16:44-07:00"},{"Sha1":"6a67a7abf58201b2b407aab3e500b463d3f08bc7","Message":"Merge branch 'feat/product-catalog-search-and-image-upload' of https://github.com/laoluojuhai/juhai-quotation-system into feat/product-catalog-search-and-image-upload\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T04:04:06-07:00"},{"Sha1":"874115874d1ce6a322367e0553a620a531ebdaf9","Message":"fix(e2e): 修两条潜伏五天的失效断言——\u0026\u0026 串行链把 UI 验收挡在门外\n\n上一条提交让 static governance 转绿后,CI 的 Runtime and UI acceptance 才**首次真正\n跑起来**(自 2026-08-06 起每轮都是 SKIPPED),当场暴露两条 E2E 失效断言。二者均由\n35ebc86(2026-08-12)改文案引入而断言没跟上,与本轮重构无关:\n\n① 侧栏入口叫「报价审核」,子页标题已改为「待我审核」——入口名与标题是两个口径,\n 不能因为同一个入口就复用同一个词。\n② 版本徽标由「版本 1」改为紧凑的「v1」(与版本中心的「V1」看齐)。\n 断言收紧为 /·\\s*v1\\s*·/:裸 `v1` 会被报价号或客户名里任何含 v1 的片段撞上,\n 会让断言以错误理由变绿,那恰恰是它该防的漂移。\n\nmodule-integration 的浏览器证据标记同步跟到**标题**而非入口名——写成入口名会被\nopenWorkspaceEntry(page, \"报价审核\") 白白喂饱,标记就不再证明任何事(负向实测:\n把 E2E 里该断言改掉即 exit=1 并命中 browser-name: \"待我审核\")。\n\n顺带删掉上一条提交遗留的死代码:权限判据已随创建卡下沉进 QuotationCreateCard,\nQuotationWorkbench 里的 userCan 不再有消费者,留着会让下一个人以为还有权限逻辑要接。\n\n三级门禁证据(作用域=本地工作区):\n- 静态 pnpm check:22 项全绿 exit=0,16 组负向自检有牙\n- check:runtime:548/548(地板 503;contracts 436 + NestJS 56 + Fastify 56)\n- check:ui:12/12 全绿\n\n教训已回灌 CLAUDE.md:串行 \u0026\u0026 门禁链报出的违规数是**下界不是总数**,\n本轮 CI 报「共 1 处违规」,实际是 4 处静态 + 2 处 E2E。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T04:03:39-07:00"},{"Sha1":"c7d8d5944215315512254bb9a8f6cc2bd937c88f","Message":"Merge branch 'main' into feat/product-catalog-search-and-image-upload","AuthorEmail":"158980461+laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"noreply@github.com","CommitterName":"GitHub","Timestamp":"2026-08-17T03:48:25-07:00"},{"Sha1":"3afb568a1d13a2ceeaf49a2a9bf1d8634f422c23","Message":"fix(gate): 版本中心断言重锚为结构式——距离窗口误杀且漏杀,顺带逼出报价域拆分\n\nPR #11 的 CI 红在 quotation-version-detail-visible。查证为**门禁误杀**:版本中心的\n快照详情一直正常渲染(浏览器实测展开 V1 可见「经济方案 ¥910,000.00 · 1 项明细」),\n只是行内补了 diff 段落与三段设计裁决注释后,两个锚点间距涨到 1309 字符、超过\n{0,500} 距离窗口(after-sales-order-options-hook 同型,本仓第二次踩)。\n\n断言重锚为否定环视 (?:(?!\u003c\\/details\u003e)[\\s\\S])*,语义由「两锚点挨得近」改为\n「快照摘要在版本行元素内部」。差分真值表显示旧写法 4 例错 2 例、两个方向都错:\n不仅误杀,还漏杀「快照挪到行外但离得近」——重锚顺手补上那个洞,并固化为\ncontract-integration.test.mjs 第 24b 条负向用例(实跑 exit=1 且命中预期断言 id)。\n\ncomponent-size 同轮逼出真拆分(门禁明说「先拆分而不是上调登记值」):\n- QuotationWorkbench 661→169:创建卡连同表单状态提为 QuotationCreateCard、\n 单档编辑器提为 QuotationOptionEditor、版本中心提为 QuotationVersionCenter\n- MobileOverview 473→413:报价经营四指标卡提为 OverviewQuoteMetrics\n全部抽为**同文件兄弟组件**——搬到独立文件会让按路径锚定的门禁锚点落空。\nQuotationCreateCard 刻意始终挂载、在 hooks 之后才 return null,保证候选查询的\n发起时机与重构前逐字一致(只搬行不改行为)。登记值同步下调/毕业锁住进步。\n\n⚠️ 抽 OverviewQuoteMetrics 时一度把三元中段当 JSX 搬走并用 \u003c\u003e 包裹,`) : (`\n降格为文本节点原样上屏,且两个分支同时渲染——给有权限的管理员显示「未向当前\n角色开放」。tsc 与 22 项静态门禁全绿,只有浏览器截图抓得到。已修并留档。\n\n证据(作用域=本地工作区):pnpm check 22 项全绿 exit=0、16 组负向自检有牙、\n浏览器实测总览/新建报价/版本中心三处渲染正常。未重跑 check:runtime / check:ui\n(两后端与 contracts 一行未动,那两级证据仍绑定上一轮 commit)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T03:47:39-07:00"}],"HeadCommit":{"Sha1":"8ae98649e077fa188f8e9c1b0a11b78a2377c836","Message":"Merge pull request #11 from laoluojuhai/feat/product-catalog-search-and-image-upload\n\nfeat(products): 商品库服务端搜索筛选 + 图片上传至对象存储","AuthorEmail":"158980461+laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"noreply@github.com","CommitterName":"GitHub","Timestamp":"2026-08-17T04:16:44-07:00"},"CompareURL":"luoanwu/juhai-quotation-system/compare/7619cf79681794bf28a8dceeb606c9dcfec21a5c...8ae98649e077fa188f8e9c1b0a11b78a2377c836","Len":41}...
|
1786965499
|
Edit
Delete
|
|
23627
|
5
|
5
|
5
|
72
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"125c54d32 {"Commits":[{"Sha1":"125c54d328d3da221b5d91c0a2dd0475712c6e96","Message":"Merge pull request #12 from laoluojuhai/fix/vm-dockerfile-build-path\n\nfix(vm): 打通容器构建路径——保住 slim 运行镜像,不靠放宽红线换构建成功","AuthorEmail":"158980461+laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"noreply@github.com","CommitterName":"GitHub","Timestamp":"2026-08-17T07:09:44-07:00"},{"Sha1":"6f13a78de9c02ae6a36fcebfb4bde63fbd092158","Message":"fix(vm): 打通容器构建路径——保住 slim 运行镜像,不靠放宽红线换构建成功\n\n`deploy/vm/Dockerfile` 的构建路径从未真正跑通过(并发治理会话只用 pnpm/turbo 跑门禁,\n从不 docker build)。而 check:vm-deploy 一直是绿的——它查 Dockerfile 的**结构**\n(每个 stage 用哪个 FROM、有没有 fat runtime),不查它**能不能构建出来**。\n于是棘轮报告写着「镜像瘦身非 root、可回滚、备份可恢复」✅,而那个镜像根本产不出来。\n\n5 处构建 bug:\n1. contracts 的 `prepare`(tsc) 在只有 manifest 的依赖层里跑,找不到 tsconfig/src → TS5058。\n 先 COPY contracts 的 tsconfig + src 给它当输入。\n2. 新 workspace 包 @repo/password-auth(两后端 runtime 依赖)未进 manifest COPY、\n 也没被显式 build。\n3. `pnpm deploy --prod --legacy`:pnpm 9.15.9 不认 `--legacy`(Unknown option)。\n 旧注释称「未开启 inject-workspace-packages 时需要 --legacy」——实测在本仓版本上\n 不成立,去掉即可正常打平 workspace 包(sharp 这类 lockfile 原生依赖也照常带出)。\n4. `pnpm deploy` 只按 lockfile 物化依赖,而 .prisma/client(含平台相关 query engine)\n 是 `prisma generate` **生成**的、不在任何 lockfile 里,永远不会被带出去 →\n 新增一步从 build 树复制。路径由 @prisma/client 的解析结果反推,不硬编码 pnpm store\n 的哈希目录名;且必须从 app 目录解析(workspace 根 node_modules 里没有它)。\n5. web stage `COPY apps/web/public` 失败——git 未跟踪任何 public 资产。\n ⚠️ 本机可能有个空的 public/(git 不跟踪空目录),docker build 读本地上下文因而能过,\n CI 与全新 clone 上必挂,注释已写明这个陷阱。\n\n**刻意不采用**此前 `dockerfile-vm-deploy-fixes-ec411c0.patch` 的策略(放弃 slim、\n运行镜像改 FROM build):那会撞 4 条门禁红线(runtime-from-base-* / no-fat-runtime-*),\n而实测 slim 路径的两个阻塞点(3、4)都可解,「镜像瘦身作为后续项不阻塞」的前提不成立。\n体积实测:api-nestjs 741MB / api-fastify 695MB / web 546MB,\n对照 fat 方案 8.46GB、2026-08-06 实际部署的 2.69GB。非 root 由镜像层 USER node 保证,\n而非仅靠 compose 的 user: 覆盖。\n\n顺带两处断链(均为 MinIO 进 compose 后没人跟上):\n- .env.example 与 vm:init 都不认识 S3_*,而它们是 compose 的必填变量 → 新机器\n `vm:init` 后 `vm:up` 必然卡在变量插值。已补占位符 + 随机生成 + 存量 .env 自愈。\n- .dockerignore 只写 `**/.next`,匹配不到本仓工具链自建的 distDir\n (.next-ui-* / .next-dev-* / .next-manual-*),也没排除 sites/(G26 那套独立\n Cloudflare 系统,其 .sites-runtime 本机 1.0GB)→ COPY . . 层 3.79GB → 270MB。\n\n证据(作用域=本地工作区):\n- docker build 四个 target 全部 EXIT=0(api-nestjs / api-fastify / web / migrate)\n- 镜像内实测 @prisma/client 与原生模块 sharp 均可加载、dist 入口就位、uid=1000 非 root\n- Dockerfile 里那条「Prisma Client 缺失即构建失败」的断言**首次真正执行并通过**\n- pnpm vm:config EXIT=0(7 个服务解析通过)\n- pnpm check 22 项全绿 exit=0\n\n未验证:未跑 vm:up / vm:smoke(整栈起停与真实写链冒烟),故不得宣称「可部署」。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T06:57:55-07:00"}],"HeadCommit":{"Sha1":"125c54d328d3da221b5d91c0a2dd0475712c6e96","Message":"Merge pull request #12 from laoluojuhai/fix/vm-dockerfile-build-path\n\nfix(vm): 打通容器构建路径——保住 slim 运行镜像,不靠放宽红线换构建成功","AuthorEmail":"158980461+laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"noreply@github.com","CommitterName":"GitHub","Timestamp":"2026-08-17T07:09:44-07:00"},"CompareURL":"luoanwu/juhai-quotation-system/compare/8ae98649e077fa188f8e9c1b0a11b78a2377c836...125c54d328d3da221b5d91c0a2dd0475712c6e96","Len":2}...
|
1786975808
|
Edit
Delete
|
|
23628
|
5
|
5
|
5
|
74
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"6b3be1daf {"Commits":[{"Sha1":"6b3be1dafc25b3d82703595f7542769eae6b7744","Message":"chore(reports): 刷新治理证据,绑定提交 b0d8e83\n\n三级门禁在 b0d8e83 上重跑后的报告:\n- pnpm check exit 0(16 项静态门禁)\n- check:runtime passed:380 tests / 0 failures\n- check:ui passed:14 用例 / 0 失败\n\n诚实标注:provenance 的 worktreeDirty 仍为 true。原因不是本提交遗漏了文件,\n而是**同一工作区存在并发会话**,其在制品(CLAUDE.md、两端 approval-tickets.service、\nweb/src/lib/types.ts、check-order-concurrency-guard.mjs、check-owner-matrix.mjs)\n在重跑期间处于未提交状态,已刻意不纳入本提交。\n\n因此本组报告只能宣称「本地工作区(含上述并发在制品)在 2026-08-17 通过三级门禁」,\n不得外推为 clean checkout 通过、远端已发布或 CI 已拦截。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T16:16:17-07:00"},{"Sha1":"b0d8e837396f6e0f15c0ceeb46b236f14f40f5c9","Message":"feat: 合并提交长期未落库的批次——Finance Phase A、安全边界、outbox 租约与 crew 雇佣纵切\n\n本次是一次「补提交」:工作区此前累积了大量从未进入任何提交的成果,\n其中包含三个只存在于本地的门禁脚本(partner-truth / security-boundary /\noutbox-lease),clean checkout 根本跑不出当前的治理结论。一并落库。\n\n主要内容\n- Finance 对账 Phase A:12 个 model、双后端服务与 worker、/finance 工作面与 e2e\n- 应用安全边界(C21):显式 demo/signed 分界、principal 取 tenant/actor、\n 治理动作 RBAC、支付 webhook raw-body HMAC\n- Outbox 多实例租约(C22):CTE + FOR UPDATE SKIP LOCKED 原子领取、行锁 fencing、\n 租约过期崩溃恢复\n- crew 雇佣纵切(L7,新):crewEngagementMachine 落 contracts 单源,双后端对等写链\n (updateMany + stage/version 双前置条件,0 行即 409),两端迁移逐字一致,\n /team 的 employment 由写死的 UNKNOWN 变为 crew_engagements 真实阶段\n- 新门禁:check:partner-truth / check:security-boundary / check:outbox-lease /\n check:owner-matrix,并把 crew 写链接入 check:concurrency-guard(20→22 条)\n- a11y 与 Tailwind token 修复及其静默失效门禁\n\ncrew 纵切的两个设计要点\n- 无行即未雇佣,不设 NOT_HIRED 状态(与 TrustState 缺行=UNCONFIGURED 同构)\n- 实习期强制人审、转正后才准进入信任爬坡放行:商业分层直接就是授权分层,\n 实习期本质上是在攒 approval.decided 样本,转正把信任兑现为自治\n- PLANNED 的 SKU 不可雇佣,避免造出「实习中却没有任何工作面」的假雇佣事实\n\n验收(本地 dirty 工作区,2026-08-17;不得外推为远端已发布或生产就绪)\n- pnpm check exit 0(16 项静态门禁;新增并发写链守卫已做负向测试,确认会红)\n- check:runtime passed:380 tests / 0 failures(地板 355→380)\n- check:ui passed:14 用例 / 0 失败(地板 13→14)\n\n按 CLAUDE.md 提交纪律,baseline.json 的地板与支撑它的测试文件在同一提交内。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T16:09:30-07:00"},{"Sha1":"44fed27603c1bd264192d1ce05016c1cd5b1c8ea","Message":"fix(a11y): 修复侧栏隐形导航 + 颜色 token 全面达标 AA,并新增 Tailwind 静默失效门禁\n\n根因:Tailwind 颜色类透明度修饰符只有落在预设刻度(5 的倍数)或方括号任意值\n才生成 CSS。侧栏写 text-white/68 属死类,文字回退继承 --hm-ink 压在深蓝\n--hm-nav 上,实测对比度 1.02——导航区在浏览器里等于隐形,而 TypeScript\n与 ESLint 均不报,只有量计算样式才暴露。\n\n- 侧栏 6 处非法透明度(/38 /58 /68 /78)改为合法刻度,导航项对比度 1.02 → 5.18~17.64,6/6 达标\n- 全站实测 187 个文本节点原有 45 处不达 AA,根因集中在 token 自身取值偏浅;\n 按 token 层修复(text-tertiary/warning/success/danger/ai),每个新值在白底与\n 各自浅色底双双达标才采用,注释写进 globals.css。结果 45 → 0\n- 新增 check:tailwind-tokens 绊网并接入 pnpm check 与棘轮(地板 0);\n 负向测试已验证:注入 text-white/68 即 exit 1,恢复即 exit 0\n- 团队总览按用户拍板退回外壳设计语言(--hm-* / 12px 圆角 / 无衬线),\n 补回此前被重构弄丢的「昨天那一页」与雇佣价目,触控目标统一 44px\n- 花名册单源 contracts CREW_ROSTER + deriveCrewStatus(计费跳档将复用同一口径)\n- e2e 重写为一条覆盖全模块的用例(旧两条因 testid 重命名已失效)\n- CLAUDE.md 基线表 + 治理经验库 ⑬ 回灌\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-14T19:18:43-07:00"}],"HeadCommit":{"Sha1":"6b3be1dafc25b3d82703595f7542769eae6b7744","Message":"chore(reports): 刷新治理证据,绑定提交 b0d8e83\n\n三级门禁在 b0d8e83 上重跑后的报告:\n- pnpm check exit 0(16 项静态门禁)\n- check:runtime passed:380 tests / 0 failures\n- check:ui passed:14 用例 / 0 失败\n\n诚实标注:provenance 的 worktreeDirty 仍为 true。原因不是本提交遗漏了文件,\n而是**同一工作区存在并发会话**,其在制品(CLAUDE.md、两端 approval-tickets.service、\nweb/src/lib/types.ts、check-order-concurrency-guard.mjs、check-owner-matrix.mjs)\n在重跑期间处于未提交状态,已刻意不纳入本提交。\n\n因此本组报告只能宣称「本地工作区(含上述并发在制品)在 2026-08-17 通过三级门禁」,\n不得外推为 clean checkout 通过、远端已发布或 CI 已拦截。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T16:16:17-07:00"},"CompareURL":"luoanwu/haimate/compare/66f0513cfb65a0eb27fe77ff8b5bd158c0901623...6b3be1dafc25b3d82703595f7542769eae6b7744","Len":3}...
|
1787008617
|
Edit
Delete
|
|
23629
|
5
|
5
|
5
|
74
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"a369f4ee0 {"Commits":[{"Sha1":"a369f4ee008c621f3ef5ada67880cb52a9ad7c9b","Message":"chore(reports): 刷新治理证据,绑定提交 fe9a6ae——三级首次 clean-bound\n\n本次刷新的三级证据 provenance 均为 gitSha=fe9a6ae + worktreeDirty=false,\n是本仓第一次在 clean 检出点上取得完整三级绿盘(此前所有轮次都是 dirty 工作区)。\n按发布口径表严格解读,可宣称「本地在 commit fe9a6ae 这一 clean 检出点通过三级门禁」,\n仍不可外推为「远端已发布」或「远端 CI 已拦截」(G14 仍 OPEN)。\n\n- 静态 pnpm check 23:37Z 16 道门禁 + 棘轮 + lint + typecheck 全绿\n- 真实 DB check:runtime 23:38Z status=passed, 380 tests / 0 failures (floor 380)\n- 浏览器 check:ui 23:39Z status=passed, 14 用例 / 0 unexpected (floor 14)\n- 门禁对抗探针 probe:gates 11/11 挡下,并用三项元测试反证该套件本身会失败\n\nCLAUDE.md 动态区同步:\n- 发布快照按实更正。本快照在一个 session 内过期四次\n (66f0513 → b0d8e83 → 6b3be1d → a0563c4 → fe9a6ae),并实测遇到远端 503 不可达——\n 据此补记:发布状态只能实时 ls-remote 判定,远端不可达时只能声明\n 「最后一次成功验证的时刻与结果」,不得含糊成「当前已对齐」。\n- 证据新鲜度段标注三级 clean-bound,并新增 probe:gates 一行。\n- 真源地图「状态迁移并发写入」条按实改为 22 条 updateMany + 10 条 raw SQL,\n 写明 raw SQL 是受检的逃生阀而非免检通道。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T16:41:22-07:00"},{"Sha1":"fe9a6ae90e99138fc09be0f7b2e75971b51f1275","Message":"feat(governance): 固化对抗探针 pnpm probe:gates,把三类攻破路径变成可重复执行\n\n手工做负向测试不可靠且不可重复。本次把对抗性验收当天用到的攻击手法固化为\n11 条探针(scripts/adversarial-probes.mjs),覆盖三类攻破路径:\n- negative:注入真违规,门禁必须报红(证明有牙)\n- vacuous :破坏门禁的输入定位(改表格列数 / 改被扫描的表名),\n 门禁必须报红而不是「检查了 0 项然后通过」(证明关不掉)\n- binding :用无关代码满足泛化断言(unrelated.length \u003e 0 / 注释里写符号名),\n 门禁必须仍然报红(证明断言绑定到被检查对象本身)\n\n设计取舍\n- 刻意不进 pnpm check:它会临时改写源文件,只适合按需运行;\n 结束时逐字节还原现场并还原 latest 报告,探针产生的污染报告不进证据链\n- 锚点失效单独报 ANCHOR-STALE 且 exit 1:源码重构后锚点对不上,\n 意味着该路径本次无人验证,不等于安全——不得当成通过\n\n实测:11 条全部 BLOCKED,被攻破 0、锚点失效 0;运行前后 git status 指纹一致。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T16:32:54-07:00"},{"Sha1":"a0563c40434d93ba1535ce1de39141bdd2b7889a","Message":"fix(governance): 门禁空转加固 + 移除审批工单死负载,并回灌空转测试纪律\n\n对抗性验收(2026-08-17)发现「负向测试通过」并不足以证明门禁有牙:\n门禁还可能被**静默关掉**——扫描出 0 项然后宣布通过。两处实测:\n- check:owner-matrix 改表格列数后报「0 行登记,校验通过」\n- check:concurrency-guard 改表名后 raw 写链从 10 条静默降到 5 条仍 exit 0\n两者都是当天刚做完负向测试的门禁。\n\n修复\n- check:owner-matrix 增加 BUILT 行数下溢守卫(地板 25),识别不足即红\n- check:concurrency-guard 的 raw「0 行拒绝」判据绑定到该语句自身的结果变量,\n 避免被无关的 `unrelated.length \u003e 0` 骗过\n- 移除 ApprovalTicket 查询中三处 `include: { toolCalls: true }` 死负载:\n 无组件消费、无测试断言,属白付 JOIN;ToolCall 的读模型消费方按 owner-matrix\n 登记只有 ToolCallsPanel,自行取数\n\n回灌 CLAUDE.md\n- 收尾清单新增「空转测试」与「断言绑定」两条:凡是「扫描出 N 项并逐项断言」的门禁,\n N 本身必须有地板,否则 N=0 是最容易伪造的绿\n- 真源地图补记 10 条 raw SQL 写链为「受检的逃生阀」而非免检通道\n- 发布快照更新至 6b3be1d,并明确区分「已发布」与「已验收」:\n 三级绿盘取自工作区,不等于该提交本身通过门禁\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T16:24:24-07:00"}],"HeadCommit":{"Sha1":"a369f4ee008c621f3ef5ada67880cb52a9ad7c9b","Message":"chore(reports): 刷新治理证据,绑定提交 fe9a6ae——三级首次 clean-bound\n\n本次刷新的三级证据 provenance 均为 gitSha=fe9a6ae + worktreeDirty=false,\n是本仓第一次在 clean 检出点上取得完整三级绿盘(此前所有轮次都是 dirty 工作区)。\n按发布口径表严格解读,可宣称「本地在 commit fe9a6ae 这一 clean 检出点通过三级门禁」,\n仍不可外推为「远端已发布」或「远端 CI 已拦截」(G14 仍 OPEN)。\n\n- 静态 pnpm check 23:37Z 16 道门禁 + 棘轮 + lint + typecheck 全绿\n- 真实 DB check:runtime 23:38Z status=passed, 380 tests / 0 failures (floor 380)\n- 浏览器 check:ui 23:39Z status=passed, 14 用例 / 0 unexpected (floor 14)\n- 门禁对抗探针 probe:gates 11/11 挡下,并用三项元测试反证该套件本身会失败\n\nCLAUDE.md 动态区同步:\n- 发布快照按实更正。本快照在一个 session 内过期四次\n (66f0513 → b0d8e83 → 6b3be1d → a0563c4 → fe9a6ae),并实测遇到远端 503 不可达——\n 据此补记:发布状态只能实时 ls-remote 判定,远端不可达时只能声明\n 「最后一次成功验证的时刻与结果」,不得含糊成「当前已对齐」。\n- 证据新鲜度段标注三级 clean-bound,并新增 probe:gates 一行。\n- 真源地图「状态迁移并发写入」条按实改为 22 条 updateMany + 10 条 raw SQL,\n 写明 raw SQL 是受检的逃生阀而非免检通道。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T16:41:22-07:00"},"CompareURL":"luoanwu/haimate/compare/6b3be1dafc25b3d82703595f7542769eae6b7744...a369f4ee008c621f3ef5ada67880cb52a9ad7c9b","Len":3}...
|
1787010092
|
Edit
Delete
|
|
23630
|
5
|
5
|
5
|
74
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"470495fbe {"Commits":[{"Sha1":"470495fbe7a9692bbb9ef869546e0050c9c73b7e","Message":"docs(governance): 收口发布声明——fe9a6ae 已推送,把免责句换成可支撑的合并声明\n\n上一提交写的免责句「不可外推为远端已发布该提交(fe9a6ae 尚未推送时本段成立)」\n在推送完成后其前提已不成立,留着就是一条自我失效的治理记录。\n\n按发布口径表改为可支撑的合并声明:\n「双远端已发布 fe9a6ae,且该提交在本地 clean 检出点通过三级门禁」。\n\n同时把剩余边界写死:仍不可外推为「远端 CI 已拦截 / 已部署 / 生产可用」——\n远端从未跑出过一次门禁运行,上述声明的证据来源始终是本机,\n与远端只共享同一个 commit SHA(G14 仍 OPEN)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T16:42:32-07:00"}],"HeadCommit":{"Sha1":"470495fbe7a9692bbb9ef869546e0050c9c73b7e","Message":"docs(governance): 收口发布声明——fe9a6ae 已推送,把免责句换成可支撑的合并声明\n\n上一提交写的免责句「不可外推为远端已发布该提交(fe9a6ae 尚未推送时本段成立)」\n在推送完成后其前提已不成立,留着就是一条自我失效的治理记录。\n\n按发布口径表改为可支撑的合并声明:\n「双远端已发布 fe9a6ae,且该提交在本地 clean 检出点通过三级门禁」。\n\n同时把剩余边界写死:仍不可外推为「远端 CI 已拦截 / 已部署 / 生产可用」——\n远端从未跑出过一次门禁运行,上述声明的证据来源始终是本机,\n与远端只共享同一个 commit SHA(G14 仍 OPEN)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T16:42:32-07:00"},"CompareURL":"luoanwu/haimate/compare/a369f4ee008c621f3ef5ada67880cb52a9ad7c9b...470495fbe7a9692bbb9ef869546e0050c9c73b7e","Len":1}...
|
1787010157
|
Edit
Delete
|
|
23631
|
5
|
5
|
5
|
74
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"b673ff8c2 {"Commits":[{"Sha1":"b673ff8c2e248dbea016f88702215123aa58fd03","Message":"fix(ci): 修复 CI 恒红两处根因——测试计数被 ANSI 吞掉、篡改 JWT 构造可能零改动\n\n远端 CI 自 2026-08-14 起每次推送都红,共 7 次,无人当真。实测根因有二,\n都与本地环境差异有关,本机绿盘无法暴露(这正是 G14 不可被本地证据替代的原因)。\n\n根因一:假红——测试计数在 CI 下恒为 0\n`CI=true` 时 turbo 给子进程输出着色,实际字节是\n`Tests \\x1b[22m \\x1b[1m\\x1b[32m140 passed`;countPassedTests 的\n/Tests\\s+(\\d+)\\s+passed/ 匹配不到转义序列,于是本地 380、CI 0,\n报成「expected \u003e= 380, got 0」这种看似灾难性回归的消息。\n测试其实全过,坏的是计数器。修复:匹配前先剥 ANSI。\n注意这类假红不会被负向测试或空转测试发现——它们都在本地跑。\n\n根因二:flaky——「篡改 JWT」有约 1/64 概率篡改了个寂寞\ntampered 把签名第 5 位替换成 'A',但 payload 含 exp=now+600,签名每次都变;\n当该位恰好就是 'A' 时,产出的是与合法 token 逐字节相同的串,验签通过,\n断言 401 收到 200。base64url 64 字符 → 每次运行约 1.6% 触发,双后端同款。\n修复:先读该位,改成一个必定不同的字符。这类 flake 会悄悄削弱安全断言。\n\n验证:CI=true 条件下本地复现两处失败,修复后 pnpm check:runtime\nstatus=passed、testsPassed=380(地板 380)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T16:52:28-07:00"}],"HeadCommit":{"Sha1":"b673ff8c2e248dbea016f88702215123aa58fd03","Message":"fix(ci): 修复 CI 恒红两处根因——测试计数被 ANSI 吞掉、篡改 JWT 构造可能零改动\n\n远端 CI 自 2026-08-14 起每次推送都红,共 7 次,无人当真。实测根因有二,\n都与本地环境差异有关,本机绿盘无法暴露(这正是 G14 不可被本地证据替代的原因)。\n\n根因一:假红——测试计数在 CI 下恒为 0\n`CI=true` 时 turbo 给子进程输出着色,实际字节是\n`Tests \\x1b[22m \\x1b[1m\\x1b[32m140 passed`;countPassedTests 的\n/Tests\\s+(\\d+)\\s+passed/ 匹配不到转义序列,于是本地 380、CI 0,\n报成「expected \u003e= 380, got 0」这种看似灾难性回归的消息。\n测试其实全过,坏的是计数器。修复:匹配前先剥 ANSI。\n注意这类假红不会被负向测试或空转测试发现——它们都在本地跑。\n\n根因二:flaky——「篡改 JWT」有约 1/64 概率篡改了个寂寞\ntampered 把签名第 5 位替换成 'A',但 payload 含 exp=now+600,签名每次都变;\n当该位恰好就是 'A' 时,产出的是与合法 token 逐字节相同的串,验签通过,\n断言 401 收到 200。base64url 64 字符 → 每次运行约 1.6% 触发,双后端同款。\n修复:先读该位,改成一个必定不同的字符。这类 flake 会悄悄削弱安全断言。\n\n验证:CI=true 条件下本地复现两处失败,修复后 pnpm check:runtime\nstatus=passed、testsPassed=380(地板 380)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T16:52:28-07:00"},"CompareURL":"luoanwu/haimate/compare/470495fbe7a9692bbb9ef869546e0050c9c73b7e...b673ff8c2e248dbea016f88702215123aa58fd03","Len":1}...
|
1787010753
|
Edit
Delete
|
|
23632
|
5
|
5
|
5
|
74
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"15248a4a0 {"Commits":[{"Sha1":"15248a4a041b4e0b1716d65ce7327315a8d39176","Message":"docs(governance): 修正 G14 认知——CI 不是没跑,是连红 7 次无人当真,现已首次全绿\n\n此前 G14 写作「尚未在 GitHub 上跑出绿盘证据」,实测是错的:Governance workflow\n自 2026-08-14 起已运行 8 次(6 红 1 取消 1 绿),红盘一直存在、一直没人看。\n\n根因两处,均只在 CI 环境暴露(本机跑多少次绿盘都推不出来),已于 b673ff8 修复:\n- 假红:CI 着色让测试计数恒为 0,报成看似灾难性回归的「got 0」\n- flaky:篡改 JWT 约 1/64 概率篡改了个寂寞,把安全断言变成偶发假通过\n\n修复后 CI 首次全绿(Static ✓ 1m29s、Runtime and UI ✓ 5m21s)。\n\n回灌的判据:**一个永远红的门禁与一个不存在的门禁,治理价值相同——都不产生信息。**\n「假红」比「假绿」更隐蔽,因为它表面上更严格;且负向测试与空转测试都发现不了它\n(那些都在本地跑)。\n\nG14 仍 OPEN,剩余关闭条件两项:required checks / 分支保护可定位;\n用受控失败 PR 证明违规确实被阻断。\n\n同步刷新三级门禁报告。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T17:02:49-07:00"}],"HeadCommit":{"Sha1":"15248a4a041b4e0b1716d65ce7327315a8d39176","Message":"docs(governance): 修正 G14 认知——CI 不是没跑,是连红 7 次无人当真,现已首次全绿\n\n此前 G14 写作「尚未在 GitHub 上跑出绿盘证据」,实测是错的:Governance workflow\n自 2026-08-14 起已运行 8 次(6 红 1 取消 1 绿),红盘一直存在、一直没人看。\n\n根因两处,均只在 CI 环境暴露(本机跑多少次绿盘都推不出来),已于 b673ff8 修复:\n- 假红:CI 着色让测试计数恒为 0,报成看似灾难性回归的「got 0」\n- flaky:篡改 JWT 约 1/64 概率篡改了个寂寞,把安全断言变成偶发假通过\n\n修复后 CI 首次全绿(Static ✓ 1m29s、Runtime and UI ✓ 5m21s)。\n\n回灌的判据:**一个永远红的门禁与一个不存在的门禁,治理价值相同——都不产生信息。**\n「假红」比「假绿」更隐蔽,因为它表面上更严格;且负向测试与空转测试都发现不了它\n(那些都在本地跑)。\n\nG14 仍 OPEN,剩余关闭条件两项:required checks / 分支保护可定位;\n用受控失败 PR 证明违规确实被阻断。\n\n同步刷新三级门禁报告。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T17:02:49-07:00"},"CompareURL":"luoanwu/haimate/compare/b673ff8c2e248dbea016f88702215123aa58fd03...15248a4a041b4e0b1716d65ce7327315a8d39176","Len":1}...
|
1787011374
|
Edit
Delete
|
|
23633
|
5
|
5
|
5
|
74
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"b33f65055 {"Commits":[{"Sha1":"b33f650552dbc4adad6df5ee670b6d9eba8eb125","Message":"chore(reports): 刷新治理证据,绑定提交 5acf362——容器化落地后三级重跑\n\n三份报告 provenance 均为 gitSha=5acf362 + worktreeDirty=false。\n\n- 静态 pnpm check 00:32Z 16 道门禁 + 棘轮 + lint + typecheck 全绿\n- 真实 DB check:runtime 00:33Z status=passed, 380 tests / 0 failures (floor 380)\n- 浏览器 check:ui 00:34Z status=passed, 14 用例 / 0 unexpected (floor 14)\n\n本轮为什么必须重跑而不能沿用上一份(fe9a6ae)绿盘:\nCI 修复 b673ff8 改动了双端 security.http.test.ts 与 scripts/check-runtime-acceptance.mjs\n——被测代码与测试运行器都变了,旧 runtime 证据随即失效。已把这条判据写进 CLAUDE.md:\n凡 apps/*/test、packages/contracts/src、apps/*/src、prisma 或验收 runner 自身发生改动,\n对应等级的证据一律作废重跑,不得沿用。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T17:35:11-07:00"},{"Sha1":"5acf36269dc9ac57017fb9d77c43ac28fca73395","Message":"feat(ops): 容器化全栈——三份应用 Dockerfile + compose 编排,G20 部分推进\n\nG20 此前记为\"生产运维平面为空:无应用 Dockerfile / 生产 compose 或编排\"。\n本次把容器化这一段做实并实测跑通,其余运维项仍 OPEN。\n\n新增\n- docker/Dockerfile.api-{fastify,nestjs} / .web:node:20-slim + openssl 基座\n (Prisma engine 在 musl 上需另一套二进制目标,alpine 极易出现\"本机能跑、容器里\n engine 找不到\");多阶段构建,依赖层只拷 manifest 以命中缓存\n- compose.yml:PG/Redis + 双后端各自的迁移 job + 双后端 + 前端;\n healthcheck 打 /api/health(真探 DB+Redis,非探活);端口用 +100 段,\n 可与本机 dev 栈同时运行\n- .dockerignore:仓库 1.7G 中 node_modules 占 1.5G,不排除会撑爆构建上下文;\n 宿主机依赖含平台相关二进制,拷进 linux 镜像必然是错的\n\n两个构建期参数(写错不报错、只静默坏掉,已写进 Dockerfile 顶部)\n- API_PROXY_TARGET:next rewrites 在 next build 时序列化进 routes-manifest,\n 是构建参数不是运行时变量;取值走 compose 内网服务名\n- NEXT_PUBLIC_WS_URL:NEXT_PUBLIC_* 构建期内联进客户端 bundle,而 WebSocket 由\n 浏览器直连(rewrites 只代理 /api 与 /sse),取值必须是宿主机可达地址\n 两者取值域相反,搞混的症状是\"页面能开、实时永远未连接\"\n\n迁移刻意拆成两个 job 不合并:双后端各有自己的 prisma/migrations,\"跑一个等于跑两个\"\n是 check:schema / check:migrations 保证的结论,不是编排可以预设的前提。\n实测 migrate-nestjs 独立复核报\"6 个迁移、无待应用\",一致性是被验证而非被假设的。\n\n本地实测证据\n- 五服务全部 healthy;双端容器内 /api/health 均 database/redis: up\n- 租户边界在容器栈同样生效:带租户 200 / 不带 400\n- 浏览器写入后 user.created 经 outbox→Redis→WS 落到 EventFeed(含 tenantId/eventId)\n- web 容器 /api/health 返回 service: fastify,证明内网代理参数正确\n- 容器栈与本机 dev 栈同时运行、数据互不可见\n\n仍 OPEN(CLAUDE.md G20 已按实分栏,不得据此宣称可上生产)\n镜像各约 2.1GB 未裁剪(pnpm 符号链接虚拟 store 与 node_modules/.prisma 耦合,\nprod-only 裁剪易做出\"能构建但运行时缺 engine\"的镜像,首版优先保证真能跑);\n安全模式仍 demo 且 DB 口令明文;无灰度回滚 Runbook / OTel / 限流熔断 / 审计日志 /\n备份恢复演练 / SLO 告警 / 镜像仓库与版本策略;未在任何非本机环境部署过。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T17:31:42-07:00"},{"Sha1":"b0b189c813b46ab3b6903cc4a13cd1ce1ad34d81","Message":"fix(dev): launch.json 指向本仓专属库,并补齐 demo 模式与 worker 开关\n\n启动本地开发栈时发现三处会让人\"跑起来了但其实是坏的\"的问题:\n\n1. DATABASE_URL 原先指向 base_framework_dev——实测该库里同时装着另一个项目的\n 8 个迁移(material_factory / brand_kit_profile / voiceprint_tasks / voice_cloning 等),\n 且缺本仓最新的 20260817090000_add_crew_engagement。按原配置启动会把本仓迁移\n 打进别的项目的库,正是 CLAUDE.md G15 记录的\"本机 PG:55432 被多项目共用\"事故模式。\n 改为本仓专属库 base_framework_haimate_dev(已建库并应用 6 个迁移),\n 对 base_framework_dev 未执行任何写操作。\n\n2. 缺 HAIMATE_SECURITY_MODE=demo——非测试环境默认 signed,缺 JWT 配置时 fail closed,\n 不显式开 demo 则本地所有请求 401(ADR-0011)。\n\n3. 缺 PLATFORM_WORKERS_ENABLED=1——不开则 KB 投影 / Trust 投影 / 审批过期等 worker\n 不运行,页面看起来能用但异步链路是死的。\n\n顺带记录一处认知缺口:G15 的机器防线只装在验收链上(check:runtime / check:ui 强制\n显式 URL + 库名前缀守卫),而开发启动路径没有守卫——launch.json 是手写配置,没人检查\n它指向哪。于是\"验收比开发更安全\",而开发才是每天都在跑的那条路径。已在文件内写明原因,\n机器化守卫列为后续项。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T17:31:16-07:00"}],"HeadCommit":{"Sha1":"b33f650552dbc4adad6df5ee670b6d9eba8eb125","Message":"chore(reports): 刷新治理证据,绑定提交 5acf362——容器化落地后三级重跑\n\n三份报告 provenance 均为 gitSha=5acf362 + worktreeDirty=false。\n\n- 静态 pnpm check 00:32Z 16 道门禁 + 棘轮 + lint + typecheck 全绿\n- 真实 DB check:runtime 00:33Z status=passed, 380 tests / 0 failures (floor 380)\n- 浏览器 check:ui 00:34Z status=passed, 14 用例 / 0 unexpected (floor 14)\n\n本轮为什么必须重跑而不能沿用上一份(fe9a6ae)绿盘:\nCI 修复 b673ff8 改动了双端 security.http.test.ts 与 scripts/check-runtime-acceptance.mjs\n——被测代码与测试运行器都变了,旧 runtime 证据随即失效。已把这条判据写进 CLAUDE.md:\n凡 apps/*/test、packages/contracts/src、apps/*/src、prisma 或验收 runner 自身发生改动,\n对应等级的证据一律作废重跑,不得沿用。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T17:35:11-07:00"},"CompareURL":"luoanwu/haimate/compare/15248a4a041b4e0b1716d65ce7327315a8d39176...b33f650552dbc4adad6df5ee670b6d9eba8eb125","Len":3}...
|
1787013326
|
Edit
Delete
|
|
23634
|
5
|
5
|
5
|
74
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"c6049fee7 {"Commits":[{"Sha1":"c6049fee7c14933da0e4ff1e6a534eb44cfe1a03","Message":"fix(governance): 更正上一提交的证据绑定声明——静态那一级当时并非 clean-bound\n\nb33f650 的提交信息与 CLAUDE.md 都写「三份报告均 worktreeDirty=false」,实测不成立:\n当时 17 份静态报告是 dirty=true,只有 runtime / UI 两份是 false。\n\n根因是执行顺序错了:先改 CLAUDE.md、再跑 pnpm check——那一刻工作区已因文档改动而脏,\n静态报告的 dirty 位被如实记成 true,而提交信息照抄了改动前的说法。\n\n本次在工作区 clean 状态下重跑静态门禁,现状态:\n- 静态 17 份:gitSha=b33f650 + worktreeDirty=false\n- runtime / UI 2 份:gitSha=5acf362 + worktreeDirty=false\n两个 SHA 是刻意如此:5acf362→b33f650 的差异只有 CLAUDE.md 一个文件\n(git diff --name-only 实测),不含任何 apps/ packages/ scripts/ 改动,\n因此 runtime / UI 证据仍绑定当前代码。\n\n已把这条教训写进 CLAUDE.md:报告的 dirty 位由**跑它那一刻的工作区**决定,\n不由你想宣称什么决定;正确顺序是代码与文档先提交干净,再跑门禁,再提交报告。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T17:36:54-07:00"}],"HeadCommit":{"Sha1":"c6049fee7c14933da0e4ff1e6a534eb44cfe1a03","Message":"fix(governance): 更正上一提交的证据绑定声明——静态那一级当时并非 clean-bound\n\nb33f650 的提交信息与 CLAUDE.md 都写「三份报告均 worktreeDirty=false」,实测不成立:\n当时 17 份静态报告是 dirty=true,只有 runtime / UI 两份是 false。\n\n根因是执行顺序错了:先改 CLAUDE.md、再跑 pnpm check——那一刻工作区已因文档改动而脏,\n静态报告的 dirty 位被如实记成 true,而提交信息照抄了改动前的说法。\n\n本次在工作区 clean 状态下重跑静态门禁,现状态:\n- 静态 17 份:gitSha=b33f650 + worktreeDirty=false\n- runtime / UI 2 份:gitSha=5acf362 + worktreeDirty=false\n两个 SHA 是刻意如此:5acf362→b33f650 的差异只有 CLAUDE.md 一个文件\n(git diff --name-only 实测),不含任何 apps/ packages/ scripts/ 改动,\n因此 runtime / UI 证据仍绑定当前代码。\n\n已把这条教训写进 CLAUDE.md:报告的 dirty 位由**跑它那一刻的工作区**决定,\n不由你想宣称什么决定;正确顺序是代码与文档先提交干净,再跑门禁,再提交报告。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T17:36:54-07:00"},"CompareURL":"luoanwu/haimate/compare/b33f650552dbc4adad6df5ee670b6d9eba8eb125...c6049fee7c14933da0e4ff1e6a534eb44cfe1a03","Len":1}...
|
1787013419
|
Edit
Delete
|
|
23758
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"9af0a397c {"Commits":[{"Sha1":"9af0a397ce69cf03623a495ee3ef49943598f5a4","Message":"Merge origin/main: 双推理路线合流为「本地优先 / 托管兜底」能力路由\n\n远端 PR #1(本地权重真跑,面向 128 GiB 主机)与本地 a3b0b41(托管 DashScope\nQwen-Image 3.0,面向 24 GiB 主机)各自独立实现了改字,在 /v1/edit 与双后端\nrender-pipeline 上正面冲突——同一事实两份运行时口径(违治理原则 1)。\n本次不做二选一,合流为一条按能力路由的通路。\n\ncontracts(路由单源)\n- 新增 RENDER_KIND_FALLBACK_CAPABILITIES + resolveRenderCapabilityKeys():\n 主能力=本地 qwen-image-edit,兜底=托管 qwen-image-3-api,双后端禁止各自\n 展开再拼一遍降级逻辑\n- 修掉三方自动合并留下的语义漂移:RENDER_KIND_CAPABILITIES 曾被并成\n 「改字 kind 只映射托管」,与本地优先矛盾\n- 新增 LOCAL_MODEL_KINDS;MATERIAL_MODEL_ROUTING 改字标签体现双通路\n- 契约测试同步断言新语义(主/兜底/解析顺序/无兜底 kind)\n\nsidecar\n- run_edit 改为路由版:本地可跑优先走本地(不外传底图、不产生云端调用费),\n 本地不可用才降到托管;显式传 modelKey 则锁定该条路径不做隐式回退\n- HEAD 的托管实现降为 run_hosted_edit() 分支,EditRequest / run_edit 各唯一\n- 两条都不可用 → 503 NO_EDIT_BACKEND_AVAILABLE 且同时带上两侧 capability,\n 禁止静默降级\n\n双后端\n- sidecarEdit 的 modelKey 由硬编码 'qwen-image-edit' 改为路由解析结果,\n 否则小内存主机上托管兜底永远走不到\n- BLOCKED reason 逐条列出每个候选能力为何不可用\n- 清理两处悬空的 hostedEdit 引用(声明在冲突块、使用在自动合并区,\n 靠 typecheck 兜住)——该分支只在 procedural 路径可达,直接调 sidecarRender\n\n前端\n- 血统标注按证据判定:ktv-poster-master.png 由初始化提交 fc2ce50 引入且\n 远端从未改动,远端将其标为「Qwen-Image-2512 产物」属误标,保留\n 「原型演示静态素材」口径(P3:不冒充模型产物)\n- constants.ts 模型口径一律从 MATERIAL_MODEL_ROUTING 派生,不留第二真源\n\n验收(诚实记录)\n- pnpm check 全项 exit 0\n- pnpm check:runtime 真实 DB+Redis 通过(迁移 deploy/status + 双后端测试)\n- pnpm check:inference 在本机失败:权重实体已删除、仅剩 git-lfs 指针,\n sidecar-health 阶段诚实报 PaddleOCR 权重不完整。属环境限制非代码缺陷,\n 已记为 G16,未因此放宽任何断言\n\nCLAUDE.md 回灌:C10 闭环记录、G14 合并两侧真实证据、G16 新增\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T21:19:49-07:00"},{"Sha1":"a3b0b41a799077b4ab46b58ee7290ae27be009f3","Message":"feat: integrate Qwen-Image 3.0 hosted edit via DashScope\n\nQwen-Image 3.0 (released 2026-07-21) ships no public weights (HF-verified;\nlatest open checkpoint remains Qwen-Image-2512), so integration goes through\nthe Aliyun Model Studio hosted API instead of the weights manifest.\n\n- contracts: add qwen-image-3-api capability (kind=hosted-api), HOSTED_EDIT_KINDS,\n buildEditInstruction (prompt stays aligned with OCR gate expectations),\n sidecarCapabilitySchema.kind; fix lingering \"Qwen-Image 2.0\" routing drift\n- sidecar: /v1/edit now really calls DashScope multimodal-generation\n (base64 base image, \u003e2048px downscale, 24h result URL downloaded to disk\n immediately, honest 503 HOSTED_API_KEY_MISSING / 502 HOSTED_API_ERROR;\n zero new Python deps)\n- backends (NestJS+Fastify, isomorphic): render pipeline executes hosted edit\n kinds when credential ready -\u003e Asset(RENDERED, model=real engine id) -\u003e\n server-side OCR gate; other model kinds stay honestly BLOCKED\n- web: EditStudio hosted-edit entry (run-hosted-edit); MODEL_ROUTING_FALLBACK\n now derived from contracts; purge remaining \"Qwen-Image 2.0\" labels\n- acceptance: deterministic no-key BLOCKED assertions + runIf(DASHSCOPE_API_KEY)\n live test; 20B BLOCKED assertion moved to always-deterministic DESIGN_MASTER\n- gates re-run green: pnpm check / check:runtime / check:inference / check:ui\n (refreshed the stale failed ui-acceptance report left by a July port collision)\n- docs: CLAUDE.md C9 closed record, G14 rewrite, baseline refresh\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-12T22:57:17-07:00"},{"Sha1":"34dc595ae157cf7904da55c885aee4af2c69c469","Message":"chore: add material factory model weights\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T02:21:25-07:00"}],"HeadCommit":{"Sha1":"9af0a397ce69cf03623a495ee3ef49943598f5a4","Message":"Merge origin/main: 双推理路线合流为「本地优先 / 托管兜底」能力路由\n\n远端 PR #1(本地权重真跑,面向 128 GiB 主机)与本地 a3b0b41(托管 DashScope\nQwen-Image 3.0,面向 24 GiB 主机)各自独立实现了改字,在 /v1/edit 与双后端\nrender-pipeline 上正面冲突——同一事实两份运行时口径(违治理原则 1)。\n本次不做二选一,合流为一条按能力路由的通路。\n\ncontracts(路由单源)\n- 新增 RENDER_KIND_FALLBACK_CAPABILITIES + resolveRenderCapabilityKeys():\n 主能力=本地 qwen-image-edit,兜底=托管 qwen-image-3-api,双后端禁止各自\n 展开再拼一遍降级逻辑\n- 修掉三方自动合并留下的语义漂移:RENDER_KIND_CAPABILITIES 曾被并成\n 「改字 kind 只映射托管」,与本地优先矛盾\n- 新增 LOCAL_MODEL_KINDS;MATERIAL_MODEL_ROUTING 改字标签体现双通路\n- 契约测试同步断言新语义(主/兜底/解析顺序/无兜底 kind)\n\nsidecar\n- run_edit 改为路由版:本地可跑优先走本地(不外传底图、不产生云端调用费),\n 本地不可用才降到托管;显式传 modelKey 则锁定该条路径不做隐式回退\n- HEAD 的托管实现降为 run_hosted_edit() 分支,EditRequest / run_edit 各唯一\n- 两条都不可用 → 503 NO_EDIT_BACKEND_AVAILABLE 且同时带上两侧 capability,\n 禁止静默降级\n\n双后端\n- sidecarEdit 的 modelKey 由硬编码 'qwen-image-edit' 改为路由解析结果,\n 否则小内存主机上托管兜底永远走不到\n- BLOCKED reason 逐条列出每个候选能力为何不可用\n- 清理两处悬空的 hostedEdit 引用(声明在冲突块、使用在自动合并区,\n 靠 typecheck 兜住)——该分支只在 procedural 路径可达,直接调 sidecarRender\n\n前端\n- 血统标注按证据判定:ktv-poster-master.png 由初始化提交 fc2ce50 引入且\n 远端从未改动,远端将其标为「Qwen-Image-2512 产物」属误标,保留\n 「原型演示静态素材」口径(P3:不冒充模型产物)\n- constants.ts 模型口径一律从 MATERIAL_MODEL_ROUTING 派生,不留第二真源\n\n验收(诚实记录)\n- pnpm check 全项 exit 0\n- pnpm check:runtime 真实 DB+Redis 通过(迁移 deploy/status + 双后端测试)\n- pnpm check:inference 在本机失败:权重实体已删除、仅剩 git-lfs 指针,\n sidecar-health 阶段诚实报 PaddleOCR 权重不完整。属环境限制非代码缺陷,\n 已记为 G16,未因此放宽任何断言\n\nCLAUDE.md 回灌:C10 闭环记录、G14 合并两侧真实证据、G16 新增\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T21:19:49-07:00"},"CompareURL":"luoanwu/image-generation/compare/27c04f193a6a4170b1e0f7839a18d0e7e9b529fb...9af0a397ce69cf03623a495ee3ef49943598f5a4","Len":3}...
|
1787026816
|
Edit
Delete
|
|
23828
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"eb6483fa7 {"Commits":[{"Sha1":"eb6483fa7aadc8d2d4e715274c2519f67005e135","Message":"Merge pull request 'feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图' (#3) from feat/llm-shooting-script into main\n\nReviewed-on: https://gitea.g-hi.com/luoanwu/image-generation/pulls/3\n","AuthorEmail":"law@g-hi.com","AuthorName":"luoanwu","CommitterEmail":"law@g-hi.com","CommitterName":"luoanwu","Timestamp":"2026-08-18T14:00:06+08:00"},{"Sha1":"b9d34cfb7e777377776325d7b2e73f1a15ff19e8","Message":"feat(script): 分镜可编辑、定格图可微调可回滚\n\nC10 交付后脚本是只读的——LLM 出完就不能改,定格图也只能整张重出。本轮补齐「改」。\n\n分镜编辑\n- 字段编辑 + 增删 + 重排;镜号唯一约束下走两阶段负号位移,1..N 恒连续不撞号\n- 重排要求全量顺序,拒绝增量语义歧义\n- 改角色 appearance 强制退回 DRAFT 并解绑参考图(描述与图不能各说各话);只改 name 不解绑\n- ARCHIVED / ROLES_LOCKED 从装饰性状态变成真实写约束\n\n定格图调整\n- 三模式:FROM_ROLES 从角色重出 / ADJUST 在当前图上按指令迭代微调 / VARIATION 换种子出候选\n- buildStillAdjustInstruction 把「只改这一点、构图与角色都别动」写死进指令\n (迭代微调最常见的失败是模型顺手重画整张)\n- 历史版本表 script_still_versions:每次出图/微调/换版追加一版,可回滚\n\n失效判据(契约单源,双端同源消费)\n- computeShotFingerprint 把所有影响成图的输入拼成规范串——刻意不哈希:\n 碰撞意味着「该失效却没标失效」,那是静默错误;规范串几百字节可肉眼比对\n- isShotStillStale 据此判断;策略是标记失效不自动删图\n (删掉人已满意的图是不可逆破坏,决定权留给人)\n\n三处刻意的「不静默」\n1. ADJUST 无底图 → NO_STILL_TO_ADJUST 明确报错,不悄悄改成整张重出\n2. 回滚连该版本的 fingerprint 一起还原,否则回滚回来的旧图会被误判成新鲜的\n3. 指纹用规范串而非哈希\n\n验收\n- contracts 新增 13 条失效判据单测(61 tests 全绿)\n- 双后端 acceptance 各 21 passed + 1 skipped-live(原 8)\n- pnpm check / check:runtime / check:script 均 exit 0;own-tests floor 14→15\n- 浏览器实测:过期横幅、编辑表单预填真实值、UI 改动落库并发 material.script.shot.updated、\n 新增与上移后镜号仍连续且未撞唯一约束\n\n诚实边界不变:liveLlmAsserted 仍为 false(本机无 DASHSCOPE_API_KEY);\ncheck:inference 仍因权重是 git-lfs 存根而红,与本轮无关。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T22:52:19-07:00"},{"Sha1":"4c34ff4ff22ff5aab34e0492fd7fef9c2c989b02","Message":"feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图\n\n本仓此前零 LLM 接入(全仓只有 DashScope 的图像调用),「歌词成图」屏是纯前端\n原型(procedural.ts 画色块 + setTimeout 假装推理,不落库不接后端)。本轮把这条\n动线升级为真链路 + 真持久化。\n\n契约单源(packages/contracts/src/script.ts)\n- 角色确认状态机 scriptRoleMachine、脚本状态机 shootingScriptMachine\n- 景别/运镜用枚举而非自由文本:LLM 一旦自由发挥,下游 prompt 与统计就没有稳定口径\n- scriptDraftSchema 是 LLM 输出的唯一判据;prompt 构造器单源,两后端禁止各拼一份\n- evaluateRoleReadiness:本域核心不变量,双后端硬拦截 + 前端同源即时反馈\n- 前端私有的 findBannedHits 上收为 contracts 的 findBannedWords(后端也要逐镜标记,\n 两份并行就是双真源)\n\nLLM 不是权威\n- sidecar /v1/script 只保证「返回长得像脚本的 JSON」,两个后端各自再 parse 一次才落库\n- 模型引用未声明角色键 → 422 SCRIPT_ROLE_KEYS_DANGLING(幻觉护栏)\n- 连续给不出合法 JSON → 502 LLM_OUTPUT_UNPARSEABLE,绝不返回占位脚本\n- parse_json_object 只剥围栏、截首尾花括号,不做字段猜测或补齐\n\n角色必须先确认才允许出定格图\n- 判据 = status CONFIRMED 且有 referenceAssetId(没有参考图就没有一致性锚点)\n- CONFIRMED --reset--\u003e DRAFT 会解除参考图绑定:人确认的是那一张图,不是那个名字\n- 出图时按 roleKeys 顺序喂参考图,与指令里「第 N 张参考图」编号严格对齐\n\n写链纪律与物料链路同构:tenant 全覆盖、updateMany 带状态前置条件(0 行即 409)、\n终态与 outbox 同 tx、能力不可用 → job BLOCKED + 诚实 reason,禁止静默降级。\n品牌准绳只逐镜标记不拒绝整份脚本(脚本属创作内容),硬拦截点在出定格图这个受控出口,\n显式放行需带参数且落审计事件。\n\n顺带修掉三个既有缺陷\n1. 合并遗留:sidecarEdit 用 sidecarGenerateResponseSchema 校验响应(要求 steps/\n loadSeconds),但 run_hosted_edit 两个字段都不返回 —— 托管改字会在客户端边界\n 直接 Zod 抛错(本地路径返回这两个字段,所以一直没暴露)\n2. check-migrations 的列检查只扫 CREATE TABLE,凡 ALTER TABLE ADD COLUMN 追加的\n @map 列一律误报 drift(此前唯一的 ALTER 列 brand_kits.profile 没 @map 才没现形)\n3. ktv-poster-master.png 血统在合并两侧打架,git log --all 证明该文件自初始化提交后\n 从未重新生成,取诚实标注 prototype-demo-master\n\n验收\n- 新增 pnpm check:script → reports/script-acceptance.latest.json(双后端各 8 passed\n + 1 skipped-live);own-tests floor 10→14,棘轮已收紧\n- pnpm check / check:runtime 均 exit 0\n- 浏览器实测:未确认角色 → 按钮 disabled 且提示缺哪个角色;绕过前端直打后端 → 422\n ROLE_NOT_CONFIRMED;跨租户 404;无凭证生成 → UI 显示 503 且不产生占位脚本\n\n诚实边界(已写入 CLAUDE.md)\n- liveLlmAsserted=false:本机无 DASHSCOPE_API_KEY,真调 LLM 的 live 断言被 skip,\n 门禁成立 ≠ LLM 出脚本已验证\n- check:inference 在本机为 failed(动手前即为 failed):本工作副本的模型权重是\n git-lfs 指针存根,非本轮改动导致;基线表该行已从 GREEN 改为 OPEN\n- ui-acceptance 报告早于本屏,未覆盖 script 屏,已标 STALE\n- 新开缺口 G16(LLM 只做结构校验、无事实性校验)、G17(同步 HTTP 挂分钟级推理 /\n render_jobs 索引非 CONCURRENTLY / 本地多图 I2I 未在本机验证)\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T22:04:48-07:00"}],"HeadCommit":{"Sha1":"eb6483fa7aadc8d2d4e715274c2519f67005e135","Message":"Merge pull request 'feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图' (#3) from feat/llm-shooting-script into main\n\nReviewed-on: https://gitea.g-hi.com/luoanwu/image-generation/pulls/3\n","AuthorEmail":"law@g-hi.com","AuthorName":"luoanwu","CommitterEmail":"law@g-hi.com","CommitterName":"luoanwu","Timestamp":"2026-08-18T14:00:06+08:00"},"CompareURL":"luoanwu/image-generation/compare/9af0a397ce69cf03623a495ee3ef49943598f5a4...eb6483fa7aadc8d2d4e715274c2519f67005e135","Len":3}...
|
1787032809
|
Edit
Delete
|
|
24224
|
1
|
5
|
1
|
68
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"9e9064c95 {"Commits":[{"Sha1":"9e9064c95b18fc57573c91e56a804976a56b9cd2","Message":"fix(footer): remove disclaimer text\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-19T13:39:01+08:00"}],"HeadCommit":{"Sha1":"9e9064c95b18fc57573c91e56a804976a56b9cd2","Message":"fix(footer): remove disclaimer text\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-19T13:39:01+08:00"},"CompareURL":"luoanwu/juhai-official-website/compare/721c2a43fe53aa9f05d45539e8acb43412cd0838...9e9064c95b18fc57573c91e56a804976a56b9cd2","Len":1}...
|
1787117985
|
Edit
Delete
|
|
24225
|
5
|
5
|
1
|
68
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"9e9064c95 {"Commits":[{"Sha1":"9e9064c95b18fc57573c91e56a804976a56b9cd2","Message":"fix(footer): remove disclaimer text\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-19T13:39:01+08:00"}],"HeadCommit":{"Sha1":"9e9064c95b18fc57573c91e56a804976a56b9cd2","Message":"fix(footer): remove disclaimer text\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-19T13:39:01+08:00"},"CompareURL":"luoanwu/juhai-official-website/compare/721c2a43fe53aa9f05d45539e8acb43412cd0838...9e9064c95b18fc57573c91e56a804976a56b9cd2","Len":1}...
|
1787117985
|
Edit
Delete
|
|
24234
|
1
|
5
|
1
|
68
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"0798f76a8 {"Commits":[{"Sha1":"0798f76a854353ae29c9b99cf4eaf91092a25f11","Message":"1111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-19T13:52:59+08:00"}],"HeadCommit":{"Sha1":"0798f76a854353ae29c9b99cf4eaf91092a25f11","Message":"1111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-19T13:52:59+08:00"},"CompareURL":"luoanwu/juhai-official-website/compare/9e9064c95b18fc57573c91e56a804976a56b9cd2...0798f76a854353ae29c9b99cf4eaf91092a25f11","Len":1}...
|
1787118784
|
Edit
Delete
|
|
24235
|
5
|
5
|
1
|
68
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"0798f76a8 {"Commits":[{"Sha1":"0798f76a854353ae29c9b99cf4eaf91092a25f11","Message":"1111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-19T13:52:59+08:00"}],"HeadCommit":{"Sha1":"0798f76a854353ae29c9b99cf4eaf91092a25f11","Message":"1111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-19T13:52:59+08:00"},"CompareURL":"luoanwu/juhai-official-website/compare/9e9064c95b18fc57573c91e56a804976a56b9cd2...0798f76a854353ae29c9b99cf4eaf91092a25f11","Len":1}...
|
1787118784
|
Edit
Delete
|
|
24397
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"4d95adb2e {"Commits":[{"Sha1":"4d95adb2ebe583e4dddbd233cbb4ffb574b17862","Message":"chore(reports): refresh clean publish evidence for realtime work\n\n三级门禁在 clean commit c223f35 上重跑,所有 reports/*.latest.json 的\nprovenance 记为 gitSha=c223f35 / worktreeDirty=false——证据自此绑定具体\n提交,而非「某次本地 dirty 运行」。\n\nCLAUDE.md 证据新鲜度同步改为绑定该提交,并显式声明这只证明「该提交在\n本机通过三级门禁」,推不出远端 CI 已拦截或已部署(G14 仍 OPEN)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T04:35:15-07:00"},{"Sha1":"c223f35e380114edfe1331619928f405cf77eee2","Message":"feat(realtime): 可靠投递 + 定向推送 + 双向控制帧 + 连接可观测\n\n把实时通讯从单向广播推进到「可靠 + 定向 + 双向 + 可观测」四块,\n两后端对等实现,判定逻辑统一收敛到 @repo/contracts 单源。\n\nA 可靠投递闭环(G16 主体闭环)\n- 信封加 id(= outbox 行 id,稳定幂等键)与 seq(自增重放游标);\n 前端去重从内容指纹改为 envelope.id——指纹依赖「重投时 ts 不变」\n 这个不成立的假设,补发路径上必然误判。\n- dispatcher 改 SELECT ... FOR UPDATE SKIP LOCKED 领取,publish 在同一\n 事务内完成;先提交再 publish 会从 at-least-once 退化成 at-most-once。\n- 断线重放:SSE 走标准 Last-Event-ID,WS 走 ?since=;补不齐时回\n replay.gap 让客户端全量重取,绝不静默截断。\n- 新增 outbox.seq 迁移(显式建序列,DEFAULT 在 SQL 里可见)。\n\nB 定向推送(订阅过滤)\n- matchesSubscription / parseSubscription 单源在 contracts;\n types 前缀 + ids 维度,未声明 = 收本租户全部。\n- 定位是租户内的带宽减法,不是权限边界;租户隔离仍是唯一安全边界。\n- ping / replay.gap / connection.* 为连接级消息,无视订阅条件必送。\n\nC 双向通讯(刻意限定为连接控制平面)\n- WS 接受 subscribe / ping 控制帧,应答 connection.ack / connection.error。\n- 红线:控制帧不承载任何业务写入。HTTP 写链上挂着 Zod、状态机守卫、\n 租户绑定、outbox 同事务(P4 四同边界),WS 若能写业务,要么重实现\n 一遍那套保证(P1 双真源),要么绕过(写链治理失守)。\n- 三道闸按成本排序:限流 → 大小/解析 → 应用。\n\nD 连接可观测与背压\n- GET /api/realtime/stats 按请求方租户收口:租户只从鉴权上下文取,\n 不接受 ?tenantId= 覆盖,也不返回全局/分租户明细。\n- 单租户连接上限背压:超限 WS 回 1013、SSE 回 429;被拒连接不登记计数。\n\n验收(本地工作区,PG:55432 + Redis:6382)\n- pnpm check 全绿;pnpm check:runtime 155 tests / 0 failures;\n pnpm check:ui 4 用例 / 0 失败。\n- 棘轮收紧:ownTests 11→24、ownTestCases 60→146、testsPassed 56→155。\n- 负向测试已验证有牙:退回裸 findMany → 20 行被投递 40 次;摘掉订阅\n 过滤 → types/ids 断言红;stats 接受调用方指定租户 → 越权探测红。\n\n治理回灌:CLAUDE.md 真源地图新增 5 条实时口径、基线表新增 5 行指标、\nG16 改为「部分闭环」并列明仍缺的死信告警与多实例端到端验收;\n战役叙事外迁 docs/governance-experience.md。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T04:33:54-07:00"}],"HeadCommit":{"Sha1":"4d95adb2ebe583e4dddbd233cbb4ffb574b17862","Message":"chore(reports): refresh clean publish evidence for realtime work\n\n三级门禁在 clean commit c223f35 上重跑,所有 reports/*.latest.json 的\nprovenance 记为 gitSha=c223f35 / worktreeDirty=false——证据自此绑定具体\n提交,而非「某次本地 dirty 运行」。\n\nCLAUDE.md 证据新鲜度同步改为绑定该提交,并显式声明这只证明「该提交在\n本机通过三级门禁」,推不出远端 CI 已拦截或已部署(G14 仍 OPEN)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T04:35:15-07:00"},"CompareURL":"luoanwu/base-framework/compare/03ef2eb6d9d8f94868d95821c22f3c23f7dc7f38...4d95adb2ebe583e4dddbd233cbb4ffb574b17862","Len":2}...
|
1787139335
|
Edit
Delete
|
|
24398
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"ccbc413ea {"Commits":[{"Sha1":"ccbc413eaf556c59a5c14707ce87d264c050180f","Message":"docs(migration): 回灌 P9——文档内部数字自相矛盾\n\n下游 Digital Employee OS 移植时实测:只改了 CLAUDE.md 的「证据新鲜度」块\n(49 tests),漏了下方 GOVERNANCE-BASELINE 表(仍是源仓的 11/60/56),\n同一份文件里两个数字互相矛盾,而三级门禁全绿。\n\ncheck:docs-truth 是 targeted 断言集,不覆盖数字类事实,抓不到这类漂移。\n数字矛盾比数字过时更险:过时只是陈旧,矛盾意味着至少有一个是编的,\n而读者无从判断是哪个。\n\n按 §5 回灌纪律(「换个移植目标还会再踩吗」→ 会 → 回灌上游),三处同步补齐:\n- 踩坑档案新增 P9\n- 步骤 8 显式点名 GOVERNANCE-BASELINE 表每个数字与发布状态快照,\n 并加警告说明 check:docs-truth 的覆盖边界\n- 验收标准把「证据日期」扩为「证据日期 + 基线表每个数字」\n\n暂未机器化:数字类断言仍靠人工核对,属手册明记的已知缺口。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T05:10:13-07:00"}],"HeadCommit":{"Sha1":"ccbc413eaf556c59a5c14707ce87d264c050180f","Message":"docs(migration): 回灌 P9——文档内部数字自相矛盾\n\n下游 Digital Employee OS 移植时实测:只改了 CLAUDE.md 的「证据新鲜度」块\n(49 tests),漏了下方 GOVERNANCE-BASELINE 表(仍是源仓的 11/60/56),\n同一份文件里两个数字互相矛盾,而三级门禁全绿。\n\ncheck:docs-truth 是 targeted 断言集,不覆盖数字类事实,抓不到这类漂移。\n数字矛盾比数字过时更险:过时只是陈旧,矛盾意味着至少有一个是编的,\n而读者无从判断是哪个。\n\n按 §5 回灌纪律(「换个移植目标还会再踩吗」→ 会 → 回灌上游),三处同步补齐:\n- 踩坑档案新增 P9\n- 步骤 8 显式点名 GOVERNANCE-BASELINE 表每个数字与发布状态快照,\n 并加警告说明 check:docs-truth 的覆盖边界\n- 验收标准把「证据日期」扩为「证据日期 + 基线表每个数字」\n\n暂未机器化:数字类断言仍靠人工核对,属手册明记的已知缺口。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T05:10:13-07:00"},"CompareURL":"luoanwu/base-framework/compare/4d95adb2ebe583e4dddbd233cbb4ffb574b17862...ccbc413eaf556c59a5c14707ce87d264c050180f","Len":1}...
|
1787141425
|
Edit
Delete
|
|
24399
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"9513a941a {"Commits":[{"Sha1":"9513a941af257b779d7d2c095dff71172edcefaf","Message":"chore(reports): 刷新静态门禁证据至 e15fa81\n\nCLAUDE.md 改动后静态子报告的 provenance 仍指向 ccbc413,与当前 checkout\n不一致(report-provenance 门禁会红)。在 clean commit 上重跑 pnpm check,\n14 份静态报告统一记为 gitSha=e15fa81 / worktreeDirty=false。\n\nruntime/ui 报告未重跑:本轮为纯文档改动,未触碰任何被它们覆盖的代码,\n其证据仍诚实绑定 c223f35 的实跑,不做无意义刷新。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T08:53:15-07:00"},{"Sha1":"e15fa814108637f2484a5be50900fd35a0f05d9d","Message":"docs(claude): 补齐常用命令与运行时拓扑,收敛验证命令双源\n\n对照 /init 的两条标准补齐本文件的实际缺口,治理正文一字未动(纯增量)。\n\n1) 新增「常用命令」小节\n原先只有文件最末尾一个块(install / generate / 三级门禁),缺三类信息:\n- 开发入口与端口(web:3000 / NestJS:3001 / Fastify:3002)\n- 单个测试怎么跑(单文件 / -t 按用例名 / watch)\n- 13 个 check:* 子门禁只写了聚合入口,未说明可单独执行\n同时记入两条本机实证的判责提示:\n- pnpm 锁定 9.15.9,被 pnpm 10 装过会写 store v11,须全量重装 + prisma:generate\n- G15 基座守卫只校验库名前缀、**不校验端口**,故「端口连得上」推不出\n 「基座正确」(2026-08-19 在下游 Digital Employee OS 实际踩到:误用上游\n 容器 PG:55432/Redis:6382 通过守卫,共用 Redis 导致两次时序偶发红)\n\n2) 新增「运行时拓扑」小节\n「真源地图」回答的是「哪份文件说了算」,不回答「请求怎么流」。补一条从\nHTTP 写请求到前端缓存失效的完整事件通路,以及两条读单个文件发现不了的约定:\nNestJS 全局前缀 /api 但 GET /sse/events 被 exclude;WS 用原生 ws 而非\nsocket.io,故协议与 Fastify 侧兼容。\n\n3) 收敛验证命令双源\n文末旧「验证命令」块与新章节重复——同一事实两处维护正是 P1 禁止的漂移温床。\n改为指回顶部,只保留各级门禁的覆盖范围差异(含 check:ui 不覆盖 Fastify\n链路这条 G17 事实)。\n\nAGENTS.md 符号链接完好,check:governance-docs / check:docs-truth 均绿。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T08:52:41-07:00"}],"HeadCommit":{"Sha1":"9513a941af257b779d7d2c095dff71172edcefaf","Message":"chore(reports): 刷新静态门禁证据至 e15fa81\n\nCLAUDE.md 改动后静态子报告的 provenance 仍指向 ccbc413,与当前 checkout\n不一致(report-provenance 门禁会红)。在 clean commit 上重跑 pnpm check,\n14 份静态报告统一记为 gitSha=e15fa81 / worktreeDirty=false。\n\nruntime/ui 报告未重跑:本轮为纯文档改动,未触碰任何被它们覆盖的代码,\n其证据仍诚实绑定 c223f35 的实跑,不做无意义刷新。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T08:53:15-07:00"},"CompareURL":"luoanwu/base-framework/compare/ccbc413eaf556c59a5c14707ce87d264c050180f...9513a941af257b779d7d2c095dff71172edcefaf","Len":2}...
|
1787154806
|
Edit
Delete
|
|
24525
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
|
1787208429
|
Edit
Delete
|
|
24526
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"d66fbcbb4 {"Commits":[{"Sha1":"d66fbcbb48ca0e0fc2b252b67accac472b8d800f","Message":"feat(kernel): integrate governed LLM execution and operations UI\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T23:36:38-07:00"},{"Sha1":"6f6027d4e97cd6dfc976f129ce62cf9e51786c1b","Message":"feat(governance): C19 报告内容指纹 worktreeHash + 扫描器排除单源 scan-ignore\n\n- provenance schema v2:dirty 工作区内容指纹(跟踪 diff + 未跟踪内容哈希,clean 恒 null),\n 取材边界与 worktreeDirty 完全同源;静态子报告六字段同 run 对账,伪造 env / dirty-指纹\n 不相干 / 聚合期间内容变化 均即红;验收报告陈旧性 staleAcceptanceReports 显式记录不阻断\n (提交动作必然产生新 SHA,硬闸在 CI 干净 checkout 下恒红,判责理由见 CLAUDE.md 事实作用域)\n- 六门禁扫描器 IGNORE 表收口单源 scripts/lib/scan-ignore.mjs:.next* 前缀统一按产物豁免\n (NEXT_DIST_DIR=.next-fastify 曾被判 17 条 naming + 3 条 F7 假红);.gitignore 补 .next-*\n- 负向测试已实跑:伪造指纹 env exit1;v1 旧 schema 验收报告 schemaVersion+相干性双红\n (换 schema 必须重新出证);植入禁用词红→复原绿;植入空目录红→复原绿\n- 后续:runtime/ui 验收需在稳定树上重跑一次升级到 v2 provenance;在那之前\n check:governance 对旧 v1 验收报告红盘属预期换证语义\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T22:20:41-07:00"},{"Sha1":"e3696a9352f893fbdbb954f1ec03fb14185d6b53","Message":"fix(e2e): Work Graph 用例断言收窄 first()(goal 默认同名双命中)+ 验收报告刷新\n\n并行会话重写 spec 时回退了 strict-mode 修复;同时刷新 clean 基线后的\nruntime(292)/ui(11) 报告。views 半成品留给并行会话,本提交不含。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T08:58:53-07:00"},{"Sha1":"d7b2d631cf58dd9dcfcf8f2466d43680ea3ea4f3","Message":"feat(workgraph): Project 实体化 + Work Graph 依赖门闸 + 读时进度(§12/§14/§103)\n\n- contracts: project.ts(createProjectSchema/ProjectDto/ProjectProgress,无百分比字段)、\n createTaskSchema.dependsOnTaskIds(max16 默认[])、project.created 事件类型\n- DB: TaskDependency(unique[tenantId,taskId,dependsOnTaskId])+ Project 表,\n 双后端同 SQL 迁移 20260825010000_workgraph_slice\n- 双后端: projects 服务(读时 groupBy 进度:total/succeeded/running/blockedByDeps)+\n Task 创建事务内依赖声明(构造性无环,坏依赖 404)+ ready 门闸\n (409 DEPENDENCIES_NOT_MET + unmet 清单,迁移事务内判定)\n- web: ProjectsPanel + 建任务表单 project/依赖选择 + useRealtime project 分支;\n 含并行会话 workbench/views 面板重构收敛(TaskCreateForm 已吸收依赖字段)\n- 验收: check 绿;check:runtime 292 tests(地板 277→292);check:ui 11 用例(地板 10→11)\n ——2026-08-19 本地实跑,PG:55447 + Redis:6397/2、/3\n- 治理: registry 登记 TaskDependency/projects 入口;CLAUDE.md 真源地图/基线表/新鲜度同步;\n 经验库 workgraph 记录(构造性无环、行为断言防 UI 重构碎测)\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T08:55:25-07:00"},{"Sha1":"2763d474f9fc47991ce52ca1f718685d04a1f2d9","Message":"feat(auth): G8 持久化角色表——resolveEffectiveRole「DB 覆盖 claim」+ admin 端点 + bootstrap\n\n用户拍板三决策落地:① 生效角色 = DB 覆盖已验签 claim(可降可升、本地可吊销\nIdP 签发的角色;DB 非法值按无记录 fail-safe,claim 兜底);② 两后端对等\nadmin-only /api/roles(GET/PUT upsert/DELETE 204,admin 判定同样走生效角色)+\nAUTH_BOOTSTRAP_ADMIN=\"tenantId:subject\" 虚拟授予解鸡生蛋;③ cancel 特权闸与\napprove 同步改查生效角色(非特权事件不查 DB)。\n\n- contracts:roleAssignmentSchema / resolveEffectiveRole / isBootstrapAdmin 单源;\n subject 取 JWT sub claim(TenantAuthResult/双后端 TenantAuthContext 透传——\n 实测抓获「contracts 产出 subject 而消费端丢弃」断链,403 全链复现后修复)\n- 表:role_assignments([tenantId,subject] 唯一)+ 两侧逐字节一致迁移;\n owner-matrix 先登记后建表;registry 登记 auth 域(validation/tenant 门禁自动覆盖)\n- 验收:contracts 27/27;两后端全 auth 套件各 20/20(真实 DB,核心负向:\n claim=admin 而 DB 记 member → 403);migrations/schema/validation/write-guard/\n dual-backend/naming/fork-readiness 七门禁绿(全量 check 待伙伴会话 Projects\n 切片收敛后随快照重跑)\n- schema.prisma / registry / owner-matrix / work 路由含伙伴会话 Projects 半成品,\n 本提交不含,随其扫荡入库\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T08:44:55-07:00"}],"HeadCommit":{"Sha1":"d66fbcbb48ca0e0fc2b252b67accac472b8d800f","Message":"feat(kernel): integrate governed LLM execution and operations UI\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T23:36:38-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/84afc39d2571c2e7d74673572e81fb737d36e271...d66fbcbb48ca0e0fc2b252b67accac472b8d800f","Len":10}...
|
1787208429
|
Edit
Delete
|
|
24535
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"31591db05 {"Commits":[{"Sha1":"31591db0504c787ba6162697ffd05e2a3fe9f1ec","Message":"test(llm): anthropic 协议后端验收 + 真实超时重试链 + live smoke 脚本(关闭 G18 两盲区)\n\n- 两后端各增 llm.anthropic.acceptance.test.ts(独立文件防 env 串扰,沿 auth.rs256 先例):\n /messages + x-api-key + anthropic-version 协议头、usage 从 input/output_tokens 归一化、\n 响应慢于 LLM_TIMEOUT_MS → AbortController abort → transient → BullMQ 重试收敛\n- scripts/llm-live-smoke.mjs(pnpm llm:smoke):真 key 冒烟,env 与后端同源复用\n runAnalysisLlm 策略体;三条退出路径(0 通过/1 失败带分类/2 桩姿态)均已本地实证;\n 不进门禁不写 reports/\n- check:dual-backend LLM 绊网扩展:anthropic 验收文件存在性红线(负向已验证)\n- 地板棘轮:testsPassed 350→354(--update-baseline 全绿后收紧,专属基座\n runtime_llm+Redis/8)、ownTests 49→51、ownTestCases 339→343\n- G18 关闭 anthropic/超时两条盲区,live smoke 更新为「脚本已备待真 key 实跑」\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T23:48:00-07:00"}],"HeadCommit":{"Sha1":"31591db0504c787ba6162697ffd05e2a3fe9f1ec","Message":"test(llm): anthropic 协议后端验收 + 真实超时重试链 + live smoke 脚本(关闭 G18 两盲区)\n\n- 两后端各增 llm.anthropic.acceptance.test.ts(独立文件防 env 串扰,沿 auth.rs256 先例):\n /messages + x-api-key + anthropic-version 协议头、usage 从 input/output_tokens 归一化、\n 响应慢于 LLM_TIMEOUT_MS → AbortController abort → transient → BullMQ 重试收敛\n- scripts/llm-live-smoke.mjs(pnpm llm:smoke):真 key 冒烟,env 与后端同源复用\n runAnalysisLlm 策略体;三条退出路径(0 通过/1 失败带分类/2 桩姿态)均已本地实证;\n 不进门禁不写 reports/\n- check:dual-backend LLM 绊网扩展:anthropic 验收文件存在性红线(负向已验证)\n- 地板棘轮:testsPassed 350→354(--update-baseline 全绿后收紧,专属基座\n runtime_llm+Redis/8)、ownTests 49→51、ownTestCases 339→343\n- G18 关闭 anthropic/超时两条盲区,live smoke 更新为「脚本已备待真 key 实跑」\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T23:48:00-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/d66fbcbb48ca0e0fc2b252b67accac472b8d800f...31591db0504c787ba6162697ffd05e2a3fe9f1ec","Len":1}...
|
1787208720
|
Edit
Delete
|
|
24542
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"859edc397 {"Commits":[{"Sha1":"859edc397ed56d09cf7d370f11c40bc727ca62ea","Message":"fix(ci): checkout 补全历史(F5 需校验 provenance SHA 属本仓)+ UI 阶段 Redis 逻辑库隔离(O1)\n\n首两次真实 CI run(32340541695/32341483001)在 fork-readiness F5 红盘判责:\nactions/checkout 默认浅克隆只有 tip commit,验收报告 provenance 指向的真实祖先\nSHA(d66fbcb/6f6027d)被误判为跨仓假证据。fetch-depth: 0 补全历史即根治。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T23:57:11-07:00"}],"HeadCommit":{"Sha1":"859edc397ed56d09cf7d370f11c40bc727ca62ea","Message":"fix(ci): checkout 补全历史(F5 需校验 provenance SHA 属本仓)+ UI 阶段 Redis 逻辑库隔离(O1)\n\n首两次真实 CI run(32340541695/32341483001)在 fork-readiness F5 红盘判责:\nactions/checkout 默认浅克隆只有 tip commit,验收报告 provenance 指向的真实祖先\nSHA(d66fbcb/6f6027d)被误判为跨仓假证据。fetch-depth: 0 补全历史即根治。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-19T23:57:11-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/31591db0504c787ba6162697ffd05e2a3fe9f1ec...859edc397ed56d09cf7d370f11c40bc727ca62ea","Len":1}...
|
1787209033
|
Edit
Delete
|
|
24551
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"e17e315f2 {"Commits":[{"Sha1":"e17e315f20a61059ab3b48375897c5f5b6213bdc","Message":"fix(ci): 验收 runner 前置 contracts 构建——干净 checkout 下 dist 不存在导致全量解析崩\n\nCI run 32341789171 判责:runtime job 从不 build contracts,vite 解析\n@repo/contracts 入口失败,NestJS 20 个测试文件加载即灭(本地永不复现,\n因 dist 常年存在——干净 worktree 复现实锤)。\n\n- check:runtime / check:ui 首步 contracts-build + dist/index.js 存在性断言\n- contracts build 改 tsc -b --force(composite 已就位)\n- 干净房验证:859edc3 + 本修复 → check:runtime 354/354 全绿\n (/tmp worktree + 全新 install + 专属 PG/Redis)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-20T00:18:07-07:00"}],"HeadCommit":{"Sha1":"e17e315f20a61059ab3b48375897c5f5b6213bdc","Message":"fix(ci): 验收 runner 前置 contracts 构建——干净 checkout 下 dist 不存在导致全量解析崩\n\nCI run 32341789171 判责:runtime job 从不 build contracts,vite 解析\n@repo/contracts 入口失败,NestJS 20 个测试文件加载即灭(本地永不复现,\n因 dist 常年存在——干净 worktree 复现实锤)。\n\n- check:runtime / check:ui 首步 contracts-build + dist/index.js 存在性断言\n- contracts build 改 tsc -b --force(composite 已就位)\n- 干净房验证:859edc3 + 本修复 → check:runtime 354/354 全绿\n (/tmp worktree + 全新 install + 专属 PG/Redis)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-20T00:18:07-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/859edc397ed56d09cf7d370f11c40bc727ca62ea...e17e315f20a61059ab3b48375897c5f5b6213bdc","Len":1}...
|
1787210290
|
Edit
Delete
|
|
24568
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"6a3d263e9 {"Commits":[{"Sha1":"6a3d263e9c83ec102cd45c7a7303926821bf02cf","Message":"fix(ci): tests-passing 解析器剥 ANSI——CI 彩色输出把 354 数成 0 触发地板假红\n\nGITHUB_ACTIONS 下 vitest 强制彩色,`Tests` 与数字间夹 \\x1b[1m\\x1b[32m 序列,\n裸正则失配(run 32343375378:三步测试全绿、地板却报 got 0)。\n干净房以 GITHUB_ACTIONS=true CI=true FORCE_COLOR=1 复现并验证:剥色后 354/passed。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-20T00:33:52-07:00"}],"HeadCommit":{"Sha1":"6a3d263e9c83ec102cd45c7a7303926821bf02cf","Message":"fix(ci): tests-passing 解析器剥 ANSI——CI 彩色输出把 354 数成 0 触发地板假红\n\nGITHUB_ACTIONS 下 vitest 强制彩色,`Tests` 与数字间夹 \\x1b[1m\\x1b[32m 序列,\n裸正则失配(run 32343375378:三步测试全绿、地板却报 got 0)。\n干净房以 GITHUB_ACTIONS=true CI=true FORCE_COLOR=1 复现并验证:剥色后 354/passed。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-20T00:33:52-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/e17e315f20a61059ab3b48375897c5f5b6213bdc...6a3d263e9c83ec102cd45c7a7303926821bf02cf","Len":1}...
|
1787211236
|
Edit
Delete
|
|
24569
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"66900427c {"Commits":[{"Sha1":"66900427c855e2ce43d634de9c6107dd6e8d1224","Message":"docs(governance): 发布状态快照更新为远端三级门禁首次全绿(run 32344601896)\n\n两远端 main=6a3d263,GitHub Actions 两 job 全绿;三层 CI 假红判责留档\n(F5 浅克隆 / 干净 checkout 缺 contracts dist / ANSI 彩色数 0)。\nci-gate 保持 OPEN:branch protection + 受控失败 PR 拦截证明未做。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-20T00:45:06-07:00"}],"HeadCommit":{"Sha1":"66900427c855e2ce43d634de9c6107dd6e8d1224","Message":"docs(governance): 发布状态快照更新为远端三级门禁首次全绿(run 32344601896)\n\n两远端 main=6a3d263,GitHub Actions 两 job 全绿;三层 CI 假红判责留档\n(F5 浅克隆 / 干净 checkout 缺 contracts dist / ANSI 彩色数 0)。\nci-gate 保持 OPEN:branch protection + 受控失败 PR 拦截证明未做。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-20T00:45:06-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/6a3d263e9c83ec102cd45c7a7303926821bf02cf...66900427c855e2ce43d634de9c6107dd6e8d1224","Len":1}...
|
1787211909
|
Edit
Delete
|