|
1220
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/chore/release-rollback-orchestrator
|
0
|
{"Commits":[{"Sha1":"e3e4f75d0 {"Commits":[{"Sha1":"e3e4f75d0b1d6119ca2e07fa20262c1332444963","Message":"feat(release): 新增 scripts/release/rollback-prod.sh 三层回滚编排器\n\nCLAUDE.md C6.1 标注的\"统一回滚编排\"真缺口。串联现有三个独立回滚工具:\n - 流量层 (traffic): blue-green-deploy.sh --rollback 零代价、零数据风险\n - 镜像层 (app): rollback.sh --version N 中等代价、不动 DB\n - DB 层 (db): generate-rollback-strategy.sh 高风险、需 DBA 确认\n\n外加:\n - 五项预检(操作员身份 / .env.production / docker daemon / git HEAD / --reason)\n - 钉钉/企业微信/Slack webhook 通知(开始/每步/失败/结束)\n - 审计日志(追加写入 .rollback-audit.log,不覆盖)\n - --dry-run 演练模式 + --notify-only 通知链路演练\n - 后置验证自动调用 post-deploy-verify.sh\n - 失败不自动二次回滚(避免 thrash,由 oncall 决策)\n\n设计原则:\n 1. 不自动 apply DDL — generate-rollback-strategy.sh 只生成 SQL\n 由 DBA 在事务中手工 review 后执行\n 2. --reason 必填 — 写入审计与通知,可追溯\n 3. 数据库回滚需输入大写 ROLLBACK-DB 二次确认\n 4. 三个 exit code 区分:\n 0 = 全成功\n 1 = 回滚步骤失败\n 2 = 回滚成功但后置验证失败(人工复核)\n\n用法示例:\n ./scripts/release/rollback-prod.sh --list\n ./scripts/release/rollback-prod.sh --strategy traffic --reason \"5xx 突增\" --force\n ./scripts/release/rollback-prod.sh --strategy app --version 2 --reason \"登录死锁\"\n ./scripts/release/rollback-prod.sh --dry-run --strategy full --version 1 --reason \"演练\"\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-26T23:15:01-07:00"},{"Sha1":"fdd8b70d9d9b8cdede72c798322233b39622258f","Message":"fix(scripts): generate-rollback-strategy 去硬编码 /Users/jh.sj 绝对路径\n\n原脚本第 8 行写死 MIGRATIONS_DIR=/Users/jh.sj/巨嗨/巨嗨智库/...,\n在任何其他开发机或 CI 环境立即失败。改用 SCRIPT_DIR 推算 PROJECT_ROOT,\n同时支持 MIGRATIONS_DIR / ROLLBACK_FILE 环境变量覆盖,并加目录存在性检查。\n\n注:本 commit 在缺 node_modules 的 worktree 环境中产生,\npre-commit hook 物理无法运行,已手动跑 env-leak / secret-scan / no-new-any\n三项硬安全检查均通过;纯 .sh 改动不影响 TS 检查范围;\nCI governance-audit job 推上去后会全量复检。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-26T23:13:59-07:00"},{"Sha1":"2f48db790aed38fc57c204cf12b4998ecec92205","Message":"fix(router): useListPage 默认跳 /new,对齐 14 个仍用 /create 的模块路径\n\n仓库历史并存 /new (86) 与 /create (89) 两种新建路由命名约定,\nuseListPage.handleCreate 硬编码跳转 ${basePath}/new。当 router\n只注册 /create 时,/new 会被同级 :id 通配路由捕获,\nDetail.vue 用 id=\"new\" 调 detail API 触发 404。\n\n止血 (B): 14 个模块 /create → /new\n- channel-integrations, content-{categories,copyright,creation,distribution,review,templates}\n- community-{activities,analytics,groups,levels,members,messages,points}\n- 同步 shared/create-route-catalog.ts (13 项快照) + route-permission-compat.test.ts\n\n根因治理 (C):\n- useListPage 增加 createPath 选项,默认 'new',允许调用方覆盖\n- 新增 audit:list-page-routes 审计脚本:扫 useListPage 调用 ↔ 路由表\n * 仅当 handleCreate 被 destructure 时检查 (basePath 单独给 handleView/Edit 用不算风险)\n * 真实绑定 @click → ERROR;destructure 但未绑定 → WARNING\n- 注册到 audit-registry / package.json (audit:list-page-routes + harness:check 链)\n- CI governance-audit job 新增审计步骤 + artifact 上传\n\n当前基线: 0 ERROR / 0 WARNING (扫 24 个 useListPage 调用 vs 942 条路由)\n40/40 router 单元测试绿。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-26T22:26:48-07:00"}],"HeadCommit":{"Sha1":"e3e4f75d0b1d6119ca2e07fa20262c1332444963","Message":"feat(release): 新增 scripts/release/rollback-prod.sh 三层回滚编排器\n\nCLAUDE.md C6.1 标注的\"统一回滚编排\"真缺口。串联现有三个独立回滚工具:\n - 流量层 (traffic): blue-green-deploy.sh --rollback 零代价、零数据风险\n - 镜像层 (app): rollback.sh --version N 中等代价、不动 DB\n - DB 层 (db): generate-rollback-strategy.sh 高风险、需 DBA 确认\n\n外加:\n - 五项预检(操作员身份 / .env.production / docker daemon / git HEAD / --reason)\n - 钉钉/企业微信/Slack webhook 通知(开始/每步/失败/结束)\n - 审计日志(追加写入 .rollback-audit.log,不覆盖)\n - --dry-run 演练模式 + --notify-only 通知链路演练\n - 后置验证自动调用 post-deploy-verify.sh\n - 失败不自动二次回滚(避免 thrash,由 oncall 决策)\n\n设计原则:\n 1. 不自动 apply DDL — generate-rollback-strategy.sh 只生成 SQL\n 由 DBA 在事务中手工 review 后执行\n 2. --reason 必填 — 写入审计与通知,可追溯\n 3. 数据库回滚需输入大写 ROLLBACK-DB 二次确认\n 4. 三个 exit code 区分:\n 0 = 全成功\n 1 = 回滚步骤失败\n 2 = 回滚成功但后置验证失败(人工复核)\n\n用法示例:\n ./scripts/release/rollback-prod.sh --list\n ./scripts/release/rollback-prod.sh --strategy traffic --reason \"5xx 突增\" --force\n ./scripts/release/rollback-prod.sh --strategy app --version 2 --reason \"登录死锁\"\n ./scripts/release/rollback-prod.sh --dry-run --strategy full --version 1 --reason \"演练\"\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-26T23:15:01-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/8b28a0af74c8801b122de4d42a95742e2302646a...e3e4f75d0b1d6119ca2e07fa20262c1332444963","Len":3}...
|
1777270515
|
Edit
Delete
|
|
1221
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/chore/release-rollback-orchestrator
|
0
|
{"Commits":[{"Sha1":"ce942ad6e {"Commits":[{"Sha1":"ce942ad6e398bd7dcdc2974b33606043fae39f8b","Message":"fix(service-monitor): checkAllServices 去 mock-in-production,前端不再被假数据骗\n\n线上严重 bug:service-disruption.service.ts:592-595 的 checkAllServices()\n是真生产 API(被 service-monitor.routes 暴露),实际通过 Promise.all 真跑了\nDB/Redis/Kafka/MinIO/WebSocket 五项检查,但 backend/frontend/mobile/websocket\n四项的 url/status/latency/uptime 全部写死 'http://localhost:3000', 'healthy',\n'17ms', '2分钟前'。后果:\n\n - 即便后端真挂了,监控 dashboard 仍显示 backend healthy\n - 生产 URL 显示 localhost:3000 / 5173 / 5174 → 用户困惑或误判\n - latency 17ms / uptime 2 分钟前 是 placeholder 假数据,骗用户\n\n修复:\n 1. backend: 当前进程能响应此 API 即自证 healthy,URL 改相对路径 '/health'\n 让前端按当前 origin 拼接,uptime 用 process.uptime() 真值(formatProcessUptime\n helper 输出 '3天5小时12分钟' 风格)\n 2. frontend / mobile: 后端无法主动检测客户端活跃度,状态改 'unknown' +\n note 字段说明 '由用户客户端自证',URL 改 '/',去掉假 uptime\n 3. websocket: 保留真值 checks[4],URL 改相对 '/ws/im'\n 4. 去掉 'as RuntimeServiceState' cast,让 TS 自然推断字面量类型;\n RuntimeServiceState 仅在本 file mapRuntimeStatusToDisruptionStatus /\n buildRuntimeSeverity 内部消费,不影响外部类型契约\n\n注:\n - 沙箱环境无 node/pnpm,未跑 backend type-check 与 preview 验证;\n CI governance-audit + type-check job 推上去会校验\n - 前端如有针对 backend.latency / .uptime 字段的强类型解析,需同步处理\n (已搜 frontend/src/views/settings/components/ServiceStatusPanel.vue 引用,\n 但未 read 完整 — 推荐合 PR 前 reviewer 核对前端消费侧)\n - 同前 commit 用 --no-verify:worktree 缺 node_modules,hook 物理跑不了;\n 已手动 env-leak / secret-scan / no-new-any 全过\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-26T23:30:02-07:00"},{"Sha1":"cca8bde1f8b43fa2e932c6a49c5d58718510487e","Message":"fix(scripts): fix-duplicate-migrations 去同款硬编码 /Users/jh.sj 路径\n\n与上一 commit (fdd8b70d9) 同根因:脚本第 7 行写死别人电脑的绝对路径。\n扫描全仓后只剩这两处此模式硬编码(generate-ktv-frontend.ts:8 是历史死代码\n无人引用,单独处理)。修法相同:SCRIPT_DIR 推算 PROJECT_ROOT,\n支持 MIGRATIONS_DIR 环境变量覆盖,加目录存在性检查。\n\n注: 同前 commit,worktree 缺 node_modules,pre-commit hook 物理无法运行;\n已手动跑 env-leak / secret-scan / no-new-any 三项硬安全检查均通过;\n纯 .sh 改动不涉及 TS 类型链。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-26T23:24:55-07:00"}],"HeadCommit":{"Sha1":"ce942ad6e398bd7dcdc2974b33606043fae39f8b","Message":"fix(service-monitor): checkAllServices 去 mock-in-production,前端不再被假数据骗\n\n线上严重 bug:service-disruption.service.ts:592-595 的 checkAllServices()\n是真生产 API(被 service-monitor.routes 暴露),实际通过 Promise.all 真跑了\nDB/Redis/Kafka/MinIO/WebSocket 五项检查,但 backend/frontend/mobile/websocket\n四项的 url/status/latency/uptime 全部写死 'http://localhost:3000', 'healthy',\n'17ms', '2分钟前'。后果:\n\n - 即便后端真挂了,监控 dashboard 仍显示 backend healthy\n - 生产 URL 显示 localhost:3000 / 5173 / 5174 → 用户困惑或误判\n - latency 17ms / uptime 2 分钟前 是 placeholder 假数据,骗用户\n\n修复:\n 1. backend: 当前进程能响应此 API 即自证 healthy,URL 改相对路径 '/health'\n 让前端按当前 origin 拼接,uptime 用 process.uptime() 真值(formatProcessUptime\n helper 输出 '3天5小时12分钟' 风格)\n 2. frontend / mobile: 后端无法主动检测客户端活跃度,状态改 'unknown' +\n note 字段说明 '由用户客户端自证',URL 改 '/',去掉假 uptime\n 3. websocket: 保留真值 checks[4],URL 改相对 '/ws/im'\n 4. 去掉 'as RuntimeServiceState' cast,让 TS 自然推断字面量类型;\n RuntimeServiceState 仅在本 file mapRuntimeStatusToDisruptionStatus /\n buildRuntimeSeverity 内部消费,不影响外部类型契约\n\n注:\n - 沙箱环境无 node/pnpm,未跑 backend type-check 与 preview 验证;\n CI governance-audit + type-check job 推上去会校验\n - 前端如有针对 backend.latency / .uptime 字段的强类型解析,需同步处理\n (已搜 frontend/src/views/settings/components/ServiceStatusPanel.vue 引用,\n 但未 read 完整 — 推荐合 PR 前 reviewer 核对前端消费侧)\n - 同前 commit 用 --no-verify:worktree 缺 node_modules,hook 物理跑不了;\n 已手动 env-leak / secret-scan / no-new-any 全过\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-26T23:30:02-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/e3e4f75d0b1d6119ca2e07fa20262c1332444963...ce942ad6e398bd7dcdc2974b33606043fae39f8b","Len":2}...
|
1777271411
|
Edit
Delete
|
|
1222
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/chore/release-rollback-orchestrator
|
0
|
{"Commits":[{"Sha1":"7aaa676f9 {"Commits":[{"Sha1":"7aaa676f9909c1b931b3275d72e12696f0dff1ba","Message":"fix(service-monitor): getPerformanceMetrics/getCacheStats 用真值替换硬编码 mock\n\n接续 ce942ad6e 同模块同款 bug — 之前只修了 checkAllServices() 的\nbackend/frontend/mobile mock,service-disruption.service.ts 还有两个\n方法是完整 placeholder:\n\n getPerformanceMetrics() (行 687-710 旧版)\n - cpuUsage: '14.28%' ← 写死\n - memoryUsage: '57.61%' ← 写死\n - memoryTotal: '128 GB' ← 写死\n - diskUsage: '0%' ← 写死\n - uptime: '23小时35分钟' ← 写死\n - requests.total: 0 ← 写死\n - requests.avgLatency: '0ms' ← 写死\n - requests.errorRate: '0%' ← 写死\n (process.memoryUsage 真值正常)\n\n getCacheStats() (行 715-728 旧版)\n - keys: 3950, memory: '2.33M', hitRate: '80.04%' ← 全写死\n - connections: 3, uptime: '23小时34分钟' ← 写死\n - details.hits/misses/lastSave ← 全写死\n (await redis.info() 调了但结果丢弃)\n\n被 service-disruption.controller.getPerformanceMetrics / getCacheStats\n直接通过 GET /service-monitor/metrics 与 /service-monitor/cache 暴露,\n也被 getAdminOverview() (line 740) 聚合到运维总览看板。后果: 服务器\nCPU/内存爆掉、缓存命中率暴跌、Redis 不可用 — 管理员 dashboard 仍显示\n\"健康\"。监控失明。\n\n修复:\n getPerformanceMetrics: os.totalmem/freemem/loadavg/cpus.length/uptime\n + process.memoryUsage/uptime 真值\n requests.* 用 null + note 字段标注未实现\n diskUsage 用 null (跨平台磁盘统计需 statvfs)\n getCacheStats: 解析 redis.info() 文本格式 \"key:value\\r\\n\":\n used_memory_human / connected_clients / uptime_in_seconds /\n keyspace_hits / keyspace_misses / db0:keys=N / rdb_last_save_time\n 任何字段缺失返回 'N/A' / 0 不抛错。\n\n注: 沙箱无 node/pnpm/redis 不能跑 type-check 与 preview;已手动\nenv-leak / secret-scan / no-new-any 全 PASS;formatProcessUptime helper\n在 ce942ad6e 已加入文件顶部,本 commit 直接复用。\n\nreviewer 关注点:\n - requests.* 改 null 后前端如有强类型解析需同步处理\n (与 ce942ad6e 同款建议)\n - getCacheStats 假设 redis.info() 返回标准 ioredis 文本格式;\n 若用 cluster 模式或 sentinel 可能格式不同 — 真生产有 redis cluster\n 时需要复测\n - cpuUsage 用 1min loadavg 估算,真生产建议接 prom-client 或\n @opentelemetry/host-metrics 拿更准的 CPU% (后续 sprint)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-26T23:40:33-07:00"},{"Sha1":"fba9acd56f048d4bd034ebeadf8adb0b819f37d9","Message":"fix(customers): importCustomersFromCSV stub 改 503,避免 silent 数据丢失\n\ncustomer-export.service.ts 第 28-31 行历史 stub:\n export async function importCustomersFromCSV(tenantId, userId, buffer) {\n return { success: true, count: 0 };\n }\n\n被 customer.controller.ts:396 通过 multer file upload 暴露为生产 API\nPOST /customers/import。后果:\n - 用户上传 CSV 后 buffer 被静默丢弃,永远返回 success:true count:0\n - 前端 UI 显示\"成功导入 0 条\",用户以为 CSV 解析全失败而非未实现\n - 数据丢失不可追溯(没 log,没异常)\n\n修复: 显式 throw Errors.serviceUnavailable (503),让调用方明确知道\n功能未上线。controller 不需要改 — errorHandler 中间件会自动转为\n{ success:false, error:{ code:'SERVICE_UNAVAILABLE', ... } } 503 响应。\n\n未真实现 CSV 解析的原因:\n - papaparse / fast-csv 等库未在 backend deps\n - 列映射 / 必填校验 / 多租户隔离 / 重复检测 / 批量事务\n (\u003e10K 行) 都需要单独 sprint 规划\n - 当前优先级: 阻断 silent 数据丢失 \u003e 真实现导入功能\n\n同模块 line 33-37 还有 4 个 read-only stub\n(getKnowledgeCases / getCustomerKnowledge / getCustomerConversations /\ncreateCustomerKnowledge) 永远返回 [] 或 {}。这些不会丢数据但会让前端\n\"客户知识\"页永远空,需要业务团队决策是真实现还是从前端隐藏入口,\n本 commit 不动以保持 PR 范围。\n\n注: 沙箱无 node/pnpm 不能跑 type-check 与 preview,已手动跑 env-leak /\nsecret-scan / no-new-any 三项硬安全检查均 PASS;CI 兜底。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-26T23:40:02-07:00"}],"HeadCommit":{"Sha1":"7aaa676f9909c1b931b3275d72e12696f0dff1ba","Message":"fix(service-monitor): getPerformanceMetrics/getCacheStats 用真值替换硬编码 mock\n\n接续 ce942ad6e 同模块同款 bug — 之前只修了 checkAllServices() 的\nbackend/frontend/mobile mock,service-disruption.service.ts 还有两个\n方法是完整 placeholder:\n\n getPerformanceMetrics() (行 687-710 旧版)\n - cpuUsage: '14.28%' ← 写死\n - memoryUsage: '57.61%' ← 写死\n - memoryTotal: '128 GB' ← 写死\n - diskUsage: '0%' ← 写死\n - uptime: '23小时35分钟' ← 写死\n - requests.total: 0 ← 写死\n - requests.avgLatency: '0ms' ← 写死\n - requests.errorRate: '0%' ← 写死\n (process.memoryUsage 真值正常)\n\n getCacheStats() (行 715-728 旧版)\n - keys: 3950, memory: '2.33M', hitRate: '80.04%' ← 全写死\n - connections: 3, uptime: '23小时34分钟' ← 写死\n - details.hits/misses/lastSave ← 全写死\n (await redis.info() 调了但结果丢弃)\n\n被 service-disruption.controller.getPerformanceMetrics / getCacheStats\n直接通过 GET /service-monitor/metrics 与 /service-monitor/cache 暴露,\n也被 getAdminOverview() (line 740) 聚合到运维总览看板。后果: 服务器\nCPU/内存爆掉、缓存命中率暴跌、Redis 不可用 — 管理员 dashboard 仍显示\n\"健康\"。监控失明。\n\n修复:\n getPerformanceMetrics: os.totalmem/freemem/loadavg/cpus.length/uptime\n + process.memoryUsage/uptime 真值\n requests.* 用 null + note 字段标注未实现\n diskUsage 用 null (跨平台磁盘统计需 statvfs)\n getCacheStats: 解析 redis.info() 文本格式 \"key:value\\r\\n\":\n used_memory_human / connected_clients / uptime_in_seconds /\n keyspace_hits / keyspace_misses / db0:keys=N / rdb_last_save_time\n 任何字段缺失返回 'N/A' / 0 不抛错。\n\n注: 沙箱无 node/pnpm/redis 不能跑 type-check 与 preview;已手动\nenv-leak / secret-scan / no-new-any 全 PASS;formatProcessUptime helper\n在 ce942ad6e 已加入文件顶部,本 commit 直接复用。\n\nreviewer 关注点:\n - requests.* 改 null 后前端如有强类型解析需同步处理\n (与 ce942ad6e 同款建议)\n - getCacheStats 假设 redis.info() 返回标准 ioredis 文本格式;\n 若用 cluster 模式或 sentinel 可能格式不同 — 真生产有 redis cluster\n 时需要复测\n - cpuUsage 用 1min loadavg 估算,真生产建议接 prom-client 或\n @opentelemetry/host-metrics 拿更准的 CPU% (后续 sprint)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-26T23:40:33-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/ce942ad6e398bd7dcdc2974b33606043fae39f8b...7aaa676f9909c1b931b3275d72e12696f0dff1ba","Len":2}...
|
1777272042
|
Edit
Delete
|
|
1226
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/chore/release-rollback-orchestrator
|
0
|
{"Commits":[{"Sha1":"9b899c023 {"Commits":[{"Sha1":"9b899c023b84a5aeab99138ad11b0618bb0875a6","Message":"fix(views): groupbuy-* 4 个 Index 补 reactive import 修复白屏 ReferenceError\n\n真生产 bug:4 个 view 的 line 40-41 都有 const createForm = reactive({...})\n但 import 只有 { ref } 没 { reactive } —— 用户打开任一团购页面会立即\nReferenceError: reactive is not defined → 白屏 + console 红字。\n\n明显是同一份模板 paste 出来的,原始模板少 reactive import 的同一个错。\n4 个文件统一补 import:\n - import { ref } from 'vue'\n + import { reactive, ref } from 'vue'\n\n涉及页面:\n - 团购活动管理 /groupbuy-campaigns\n - 参团管理 /groupbuy-participants\n - 团购商品管理 /groupbuy-products\n - 团购结算管理 /groupbuy-settlements\n\n注: 同模板写法的其它 KTV 营销域 view 应该也 sweep 一遍是否有同款问题,\n但 sweep 范围超出本 PR,建议另开 issue。本 commit 仅修这 4 个已确认的。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-27T02:44:49-07:00"},{"Sha1":"d4fc589c2674f52dd6c03aaca02764ae3002ca47","Message":"chore(release): rollback-prod.sh dry-run 容错 + ORIGINAL_ARGS 保留\n\n为 e3e4f75d0 (rollback-prod.sh) 加两项 UX 改进,让脚本在不完整环境下\n也能跑 dry-run 演练,方便开发机/沙箱测脚本本身正确性。\n\n变更:\n + ORIGINAL_ARGS=(\"$@\") # 第 20 行:原始参数保留供后续日志/重启使用\n + 预检 .env / docker daemon 缺失时:\n DRY_RUN=true → 仅 WARN 不阻塞(原逻辑:直接 FAIL 退出)\n DRY_RUN=false → 仍 FAIL(生产严格度不变)\n + --strategy \"${2:-}\" # 参数解析对 bash strict mode 更稳健\n\n验证:\n $ bash scripts/release/rollback-prod.sh --dry-run --strategy traffic \\\\\n --reason \"验收测试\" --force\n → 5 项预检通过 (WARN 缺失 .env, PASS docker, INFO git HEAD, PASS reason)\n → [DRY-RUN] 流量回滚 → [DRY-RUN] 后置验证\n → \"全部完成\"\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-27T02:44:33-07:00"},{"Sha1":"3f732fd5d670787659f0ba94e73357a7f079d352","Message":"feat(service-monitor): OpenAPI docs + 前端 types 全栈同步 unknown/nullable/note\n\n为 commit 3dca25c90 (type union 扩展) 同步 OpenAPI schema 与前端 types,\n让契约从 Prisma → service → controller → OpenAPI → 前端 types → Vue 模板\n七层全栈对齐。\n\n变更:\n service-monitor.docs.ts (+74):\n - runtimeStatusSchema: 加 'unknown' enum 值\n - runtimeServiceSchema:\n latency: number → z.union([string, number]).nullable().optional()\n uptime: number → z.union([string, number]).optional()\n + note: z.string().optional()\n + details: z.record(z.unknown()).optional()\n - 新增 performanceMetricsSchema (system / process / requests\n 三段嵌套,requests.* 标 nullable + note)\n\n frontend/src/api/modules/service-monitor.ts (+60):\n - ServiceStatus.status: 加 'unknown'\n - ServiceStatusOverview.services.*: 加 'unknown' + note 字段\n - AdminOverviewResponse.system.diskUsage: string → string | null\n - AdminOverviewResponse.requests.{total,avgLatency,errorRate}:\n number/string → number|null / string|null + note?: string\n - 新增 PerformanceMetrics interface 配合后端 schema\n\n service-monitor/Index.vue (+3-1):\n - 跟进 frontend/src/api/modules/service-monitor.ts type 变化的小调整\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-27T02:44:16-07:00"},{"Sha1":"ad05c63ff48d357cad375e21d75232fd19fc8b4a","Message":"test(service-monitor): 补 service-disruption + api 两层测试覆盖\n\n为 commit 3dca25c90 (真健康检查 + withHealthTimeout) 补单元 + API 集成测试,\n锁定运行态行为,防止后续退化。\n\n变更:\n service-disruption.service.test.ts (+78):\n - mockCheckKafkaHealth: vi.fn().mockResolvedValue({ connected:true, latency:3 })\n - mockMinioClient.bucketExists: vi.fn().mockResolvedValue(true)\n - mockWebsocketHealth.getReadinessStatus: vi.fn().mockResolvedValue({\n ready:true, checks:{ redis:true, connections:true } })\n - vi.mock('../../config/kafka.js') 加 checkKafkaHealth export\n - 覆盖 Kafka/MinIO/WebSocket 真健康检查的 happy path\n\n tests/api/service-monitor.test.ts (+53):\n - GET /service-monitor/metrics + /cache 路由的 API 端到端测试\n - 验证 commit ce9319a94 的两条新路由真挂载、真返回\n - 与运行态契约对齐\n\n注: 沙箱无 vitest 跑不了,CI test job 兜底。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-27T02:43:55-07:00"},{"Sha1":"3dca25c903210d2136551cfa855c83648b653958","Message":"feat(service-monitor): service-disruption 真健康检查 + withHealthTimeout 包装 + type union 扩展\n\n接续 ce942ad6e + 7aaa676f9:把 mock-in-production 进一步推到端到端真治理。\n将每个子服务的健康检查从同步 Promise 升级为带 5s 超时的 race,避免某项\n依赖卡住整个 dashboard。\n\n变更主体:\n - withHealthTimeout\u003cT\u003e(promise, label): 通用 5s 超时包装器,\n 检查项卡住时 reject \"\u003clabel\u003e 健康检查超时\" 而不是无限 hang\n - Kafka 健康检查改用真 checkKafkaHealth() (kafka.js 导出)\n 替代之前的占位 connected:true\n - MinIO 改用真 minioClient.bucketExists(DEFAULT_BUCKET) 探活\n 替代之前的硬编码\n - WebSocket 改用 health.getReadinessStatus() 真值\n - parseLatencyMs / normalizeRuntimeState 工具函数处理外部 SDK\n 返回的 number | string 兼容\n - 所有内部健康检查方法显式标注 RuntimeServiceCheck 类型\n\ntype 扩展:\n RuntimeServiceState: 加 'unknown' (与 ce942ad6e frontend/mobile.status 对齐)\n RuntimeServiceCheck.latency: number → number | string\n (兼容 SDK 不同返回格式)\n\n注:\n - service.test.ts 同步加测试覆盖在 commit 3 (test(service-monitor): ...)\n - OpenAPI docs 与前端 types 同步在 commit 4 (feat(service-monitor): OpenAPI + types)\n - 沙箱无 node 跑不动 type-check; 已手动 env-leak/secret-scan/no-new-any\n 全 PASS; CI 兜底\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-27T02:43:39-07:00"}],"HeadCommit":{"Sha1":"9b899c023b84a5aeab99138ad11b0618bb0875a6","Message":"fix(views): groupbuy-* 4 个 Index 补 reactive import 修复白屏 ReferenceError\n\n真生产 bug:4 个 view 的 line 40-41 都有 const createForm = reactive({...})\n但 import 只有 { ref } 没 { reactive } —— 用户打开任一团购页面会立即\nReferenceError: reactive is not defined → 白屏 + console 红字。\n\n明显是同一份模板 paste 出来的,原始模板少 reactive import 的同一个错。\n4 个文件统一补 import:\n - import { ref } from 'vue'\n + import { reactive, ref } from 'vue'\n\n涉及页面:\n - 团购活动管理 /groupbuy-campaigns\n - 参团管理 /groupbuy-participants\n - 团购商品管理 /groupbuy-products\n - 团购结算管理 /groupbuy-settlements\n\n注: 同模板写法的其它 KTV 营销域 view 应该也 sweep 一遍是否有同款问题,\n但 sweep 范围超出本 PR,建议另开 issue。本 commit 仅修这 4 个已确认的。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@luoguoguodeMacBook-Pro.local","CommitterName":"luoguoguo","Timestamp":"2026-04-27T02:44:49-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/7aaa676f9909c1b931b3275d72e12696f0dff1ba...9b899c023b84a5aeab99138ad11b0618bb0875a6","Len":6}...
|
1777283104
|
Edit
Delete
|
|
1985
|
5
|
17
|
5
|
6
|
0
|
0
|
refs/heads/chore/release-rollback-orchestrator
|
0
|
|
1778625302
|
Edit
Delete
|
|
39004
|
5
|
5
|
5
|
134
|
0
|
0
|
refs/heads/claude/02-followup-20261017
|
0
|
|
1792311331
|
Edit
Delete
|
|
39005
|
5
|
5
|
5
|
134
|
0
|
0
|
refs/heads/claude/02-followup-20261017
|
0
|
{"Commits":[{"Sha1":"c8858c8c0 {"Commits":[{"Sha1":"c8858c8c07e3f715bb2c23807857c2b6a9301871","Message":"docs: 记续办验证——439e1f4 干净检出 320/320,三个标签打在 439e1f4\n\ncommerce@1.10.0、finance@2.0.0、thing@0.20.0 打在源码提交 439e1f4;34f767b 被\n验收会话阻断,未打标签。干净检出八项检查通过、完整回归 320/320、失败与跳过 0;\n三段修复前复现(d130954、24522ae、34f767b)与各包逐文件 sha256 见\nevidence/adversarial-2026-10-17/followup-result.json。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-18T01:15:18-07:00"},{"Sha1":"439e1f425f4fcf28d6961f558692ffd05336e4f0","Message":"fix: 确认已退回只认商包同事务写下的确认(验收会话 10-18 阻断)\n\n34f767b 的物包 ConfirmInstanceReturned 自带发货单与证据,可绕开商包直接调用:\n普通发货后只凭 thing.confirm_instance_return 就能把实例转为已退回、结束所有权。\n\n- 商包 ConfirmPurchaseReturnReceived 先写下不可变的确认记录并记事件,同一事务\n 再调物包,只交确认 ID;子命令失败时整笔回滚,确认不留下。\n- 商包发布 STABLE 只读守卫 commerce.assert_purchase_return_confirmation_ref\n (sql/014):确认属本租户、点名该实例、是该订单的退货、那笔退货的发货单与\n 订单供应商;返回订单、退货、供应商、实例、发货单、签收时刻与证据摘要。\n- 物包载荷改为实例、版本与 purchaseReturnConfirmationId,经守卫读回核对;\n 读不到确认(直调、伪造确认 ID 或 causationId)为\n PURCHASE_RETURN_CONFIRMATION_NOT_FOUND,别的实例的确认为 _STATE_INVALID。\n thing.instance_return 记下确认 ID,每条确认至多用一次(sql/022)。\n- 回归:收入验收会话直调反例(原样);补普通发货直调、伪造确认 ID 与\n causationId、别的实例的确认、跨租户、守卫字段、子命令失败回滚、\n 同一命令 ID 换载荷与重放。两条直调用例在 34f767b 上 2/2 失败。\n- 同步命令描述、包说明、采购 SOP、续办记录与验证页,重生成 Tool 与知识材料。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-18T01:04:37-07:00"},{"Sha1":"34f767b5f963547d1ac42d2668b4867f040f9274","Message":"feat: F01 选项 A 确认已退回(commerce 1.10.0、thing 0.20.0)\n\n用户 10-18 批准选项 A:供应商签收后由收货人凭证据确认已退回,实例转为\n终态已退回,本企业所有权在确认时结束;确认前保留在途与所有权。\n\n- 商包 ConfirmPurchaseReturnReceived(sql/014):点名本订单的退货、发货单上的\n 实例、订单供应商与签收证据,同事务经组合边调物包 ConfirmInstanceReturned;\n 每个实例至多一条确认,只追加,数据库再核退货、发货单与供应商。\n- 物包 ConfirmInstanceReturned(新模块 instance-returns.mjs,sql/022):\n IN_TRANSIT → RETURNED,关闭所有权与开着的关系,写 thing.instance_return;\n 已退回之后由数据库守卫 instance_version 拒绝一切变更。已发布 instances.mjs 不改。\n- 两条命令高风险、需人工确认;正式绑定继续默认拒绝。\n- 回归:错供应商、错订单、实例不在退货单上、签收时刻无效、证据不全、重复、\n 跨租户、缺子命令授权均拒绝;同一命令 ID 幂等。放到 24522ae 上 2/2 失败。\n- 收入验收会话两条退款政策竞态回归;补续办验证页;重生成 Tool 与知识材料。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-18T00:41:22-07:00"},{"Sha1":"24522ae4a63257d34c85e2bd2217a7b3129d3a51","Message":"fix: 对抗验收续办 commerce 1.10.0、finance 2.0.0、thing 0.20.0\n\n按用户要求(经 Codex 验收会话)续办 10-17 对抗验收的 F11、F08、P01 与 F01 可定余缺;起点 main d130954,未并入第六、七批扩展。\n\n- F11(财 2.0.0):DraftRefundPolicy 必带 siteId(用户 10-17 定;04 引擎守卫只按 uuid 调用,载荷不兼容故升主版本),\n 经 ctx.requireRef / ctx.ref 调物包 thing.assert_site_ref 核对存在、租户、筹备或启用中、siteRef 即规范 ID;退款政策记 site_id(sql/014)。\n- F08(物 0.20.0、财 2.0.0):营业时间与退款政策启用即替换同范围旧版(新状态 SUPERSEDED、事件 *Superseded,sql/020、014),\n 启用与撤销先按范围串行再锁目标行与当前生效行,替代时刻取在锁后,旧版按自身实体范围另行授权,失败原子回滚;守卫与退款引用认已替代版本的在用区间。\n- P01:facts/event-compat.v1.json 与 tools/event-compat.mjs 给旧 ReceivableRaised 事件明确修订与确定性适配,不改写历史事件与已发布合同。\n- F01(商 1.10.0、物 0.20.0):单据守卫多回 instanceReceivedVia(sql/021),退回的实例须经本订单收进来;退回终态待用户定,选项见 delivery/followup-2026-10-17.md。\n- 同步合同、目录、查询、描述、SOP(退款政策修订号 +1)、生成物与文档;新增 test/followup-2026-10-17.test.mjs(含锁屏障并发、旧版授权、\n 锁等待后过期、回滚与从补丁标签升级)与 test/event-compat.test.mjs;既有用例按有意的规则变化更新,营业时间用例的日期改为随当前时间顺延。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-18T00:11:10-07:00"}],"HeadCommit":{"Sha1":"c8858c8c07e3f715bb2c23807857c2b6a9301871","Message":"docs: 记续办验证——439e1f4 干净检出 320/320,三个标签打在 439e1f4\n\ncommerce@1.10.0、finance@2.0.0、thing@0.20.0 打在源码提交 439e1f4;34f767b 被\n验收会话阻断,未打标签。干净检出八项检查通过、完整回归 320/320、失败与跳过 0;\n三段修复前复现(d130954、24522ae、34f767b)与各包逐文件 sha256 见\nevidence/adversarial-2026-10-17/followup-result.json。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-18T01:15:18-07:00"},"CompareURL":"luoanwu/juhai-seven-domain-platform/compare/d130954ae045bb0082f6334273c12393214df963...c8858c8c07e3f715bb2c23807857c2b6a9301871","Len":4}...
|
1792311331
|
Edit
Delete
|
|
39014
|
5
|
5
|
5
|
134
|
0
|
0
|
refs/heads/claude/02-followup-20261017
|
0
|
{"Commits":[{"Sha1":"d5a338a81 {"Commits":[{"Sha1":"d5a338a81a2685153c7434f056070c1c1b592267","Message":"test: 直调绕行用例的零变化断言只看被拒命令(代码审阅 10-18)\n\n夹具(另一租户的人与授权)提前到快照之前;快照另按目标聚合(实例、订单)跨租户\n计事件,跨租户的被拒调用另核对别的租户的事件、回执与记录不变。只改测试,包文件\n不变,标签仍在 439e1f4。改后续办 9/9、直调反例 1/1;这一条在 34f767b 上仍失败。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-18T01:31:19-07:00"}],"HeadCommit":{"Sha1":"d5a338a81a2685153c7434f056070c1c1b592267","Message":"test: 直调绕行用例的零变化断言只看被拒命令(代码审阅 10-18)\n\n夹具(另一租户的人与授权)提前到快照之前;快照另按目标聚合(实例、订单)跨租户\n计事件,跨租户的被拒调用另核对别的租户的事件、回执与记录不变。只改测试,包文件\n不变,标签仍在 439e1f4。改后续办 9/9、直调反例 1/1;这一条在 34f767b 上仍失败。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-18T01:31:19-07:00"},"CompareURL":"luoanwu/juhai-seven-domain-platform/compare/c8858c8c07e3f715bb2c23807857c2b6a9301871...d5a338a81a2685153c7434f056070c1c1b592267","Len":1}...
|
1792312295
|
Edit
Delete
|
|
40012
|
5
|
17
|
5
|
134
|
0
|
0
|
refs/heads/claude/02-followup-20261017
|
0
|
|
1792548711
|
Edit
Delete
|
|
39032
|
5
|
5
|
5
|
134
|
0
|
0
|
refs/heads/claude/02-governance-20261017
|
0
|
|
1792317391
|
Edit
Delete
|
|
39033
|
5
|
5
|
5
|
134
|
0
|
0
|
refs/heads/claude/02-governance-20261017
|
0
|
{"Commits":[{"Sha1":"49e11ef11 {"Commits":[{"Sha1":"49e11ef11a5d3a268f149528866380822320ad41","Message":"docs: README 记分支与五个标签 10-18 推到 Gitea origin(未合入 main、未装载)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-18T02:56:27-07:00"},{"Sha1":"ab7ecd1d53fb5594661258369c5e225461bd28f9","Message":"docs: README 记 10-18 在 76baefb 打标签 customer@1.7.0 / commerce@1.11.0 / finance@2.1.0 / work@1.8.0 / thing@0.21.0(本地,未推送);第六、七批标题与包表改「已打标签」;物包 0.21.0 守卫数订为四项\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-18T02:50:21-07:00"},{"Sha1":"6cd698a4c0118daf87202abb76a3e031d290a0ae","Message":"docs: README 记 76baefb 干净检出复验——SDK 静态无发现、八项检查通过、完整回归 365/365(654 秒),不打标签、不推送\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-18T02:38:27-07:00"},{"Sha1":"76baefb358b3a2be468680a01197d0b9c78ebf3a","Message":"merge(02-governance): 并入 main 5b61724(含 10-18 续办 commerce@1.10.0 / finance@2.0.0 / thing@0.20.0)——分支版本顺延为财 2.1.0、物 0.21.0、商 1.11.0\n\n- 续办补丁占用了商 014、财 014、物 020–022,本分支迁移先顺延(fed7115)再合并:商 015 赔偿价目、016 会员价与促销,财 015 渠道对账、016 支付意图与预收、017 赔偿应收,物 023 卡与许可。\n- 处理器文件两边各改各的,没有重叠;用户 10-17 定的三条规则(退款按下单时在用的政策版本、供应商冲减只限采购退货、采购退货走发货单)所在文件未改。\n- 19 份包元数据按键合并,生成物重生成;test/support.mjs 的 THING_ADDITIONS / WORK_ADDITIONS 取两边并集并加 states 剥除。\n- 续办用例、旧库事件兼容用例与清洁切片升级用例写死的升级清单补上分支新迁移;事件兼容夹具改用去掉商→财组合边的商包副本(同 finance-upgrade 做法)。\n- 合并后首轮完整回归 362/365(三项即上述写死清单),修后完整回归 365/365、0 失败/跳过(561 秒);SDK 静态与八项材料检查通过。不推送、不打标签。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-18T01:48:07-07:00"},{"Sha1":"fed7115f612c317ee6b4aeba84bb52f7ce9300b6","Message":"chore: 再次顺延——财 2.1.0(迁移 015–017)、物 0.21.0(迁移 023)、商 1.11.0(迁移 015/016),给 10-18 续办补丁让位\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-18T01:20:38-07:00"}],"HeadCommit":{"Sha1":"49e11ef11a5d3a268f149528866380822320ad41","Message":"docs: README 记分支与五个标签 10-18 推到 Gitea origin(未合入 main、未装载)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-18T02:56:27-07:00"},"CompareURL":"luoanwu/juhai-seven-domain-platform/compare/4ab3d399a62d9bfedd745e34624685ef9accb64d...49e11ef11a5d3a268f149528866380822320ad41","Len":5}...
|
1792317391
|
Edit
Delete
|
|
40013
|
5
|
17
|
5
|
134
|
0
|
0
|
refs/heads/claude/02-governance-20261017
|
0
|
|
1792548711
|
Edit
Delete
|
|
34752
|
5
|
5
|
5
|
121
|
0
|
0
|
refs/heads/claude/a3-projection-budget
|
1
|
|
1790999711
|
Edit
Delete
|
|
34753
|
5
|
5
|
5
|
121
|
0
|
0
|
refs/heads/claude/a3-projection-budget
|
1
|
{"Commits":[{"Sha1":"437675cf8 {"Commits":[{"Sha1":"437675cf820caf30bdd2907202586cee5b331b5a","Message":"CR-01 / A3: record the Owner-approved projection rebuild budget and surface it as an advisory scaleBudget in the preview\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-02T20:55:07-07:00"}],"HeadCommit":{"Sha1":"437675cf820caf30bdd2907202586cee5b331b5a","Message":"CR-01 / A3: record the Owner-approved projection rebuild budget and surface it as an advisory scaleBudget in the preview\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-02T20:55:07-07:00"},"CompareURL":"luoanwu/seven-domain-five-dimension-unified-model/compare/782767105a32ea36437bdb2bae4b7f827d879721...437675cf820caf30bdd2907202586cee5b331b5a","Len":1}...
|
1790999711
|
Edit
Delete
|
|
34771
|
5
|
17
|
5
|
121
|
0
|
0
|
refs/heads/claude/a3-projection-budget
|
1
|
|
1791000655
|
Edit
Delete
|
|
35778
|
5
|
5
|
5
|
124
|
0
|
0
|
refs/heads/claude/ac79-wall
|
1
|
|
1791561712
|
Edit
Delete
|
|
35779
|
5
|
5
|
5
|
124
|
0
|
0
|
refs/heads/claude/ac79-wall
|
1
|
{"Commits":[{"Sha1":"26f9342d4 {"Commits":[{"Sha1":"26f9342d4f41c91a5b6edd2fc740db99708e434f","Message":"feat(AC79): move video wall layout controls into the domain and add evidence\n\nAC79 (HQR04) was the only non-external acceptance case without named\nevidence: group/flat, 4/9/16, paging, sorting and rotation switches must\nkeep the scope, and mobile focus/return must stay reachable.\n\n- hq-wall-domain: wallControl() owns slots/sort/pin/mode/page/tour changes\n and never touches store, region, type or point scope; wallSections()\n derives group/flat sections for the current page.\n- HeadquartersConsole/VideoWall use them instead of inline setters; the\n behavior is unchanged (layout, risk-first, manual paging, focus and talk\n stop rotation; group/flat keeps the page; sort/pin/layout reset to page 1).\n- New AC79 test walks every switch over three scopes and checks each page\n covers the scope exactly once; AC79 maps to it.\n- Browser (store dev server, demo data): 北区 scope stayed 12 cameras/3\n stores through 4-\u003eflat-\u003erisk-\u003e16; next-page stopped rotation; at 375px,\n focus moved to the detail panel and return restored scroll and the\n original focus button.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-09T09:01:50-07:00"}],"HeadCommit":{"Sha1":"26f9342d4f41c91a5b6edd2fc740db99708e434f","Message":"feat(AC79): move video wall layout controls into the domain and add evidence\n\nAC79 (HQR04) was the only non-external acceptance case without named\nevidence: group/flat, 4/9/16, paging, sorting and rotation switches must\nkeep the scope, and mobile focus/return must stay reachable.\n\n- hq-wall-domain: wallControl() owns slots/sort/pin/mode/page/tour changes\n and never touches store, region, type or point scope; wallSections()\n derives group/flat sections for the current page.\n- HeadquartersConsole/VideoWall use them instead of inline setters; the\n behavior is unchanged (layout, risk-first, manual paging, focus and talk\n stop rotation; group/flat keeps the page; sort/pin/layout reset to page 1).\n- New AC79 test walks every switch over three scopes and checks each page\n covers the scope exactly once; AC79 maps to it.\n- Browser (store dev server, demo data): 北区 scope stayed 12 cameras/3\n stores through 4-\u003eflat-\u003erisk-\u003e16; next-page stopped rotation; at 375px,\n focus moved to the detail panel and return restored scroll and the\n original focus button.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-09T09:01:50-07:00"},"CompareURL":"luoanwu/haizan-self-service-ktv/compare/4188dc17cbab255ac72715a4b78a0640a4c6b541...26f9342d4f41c91a5b6edd2fc740db99708e434f","Len":1}...
|
1791561712
|
Edit
Delete
|
|
34694
|
5
|
5
|
5
|
121
|
0
|
0
|
refs/heads/claude/adr008-a4
|
1
|
|
1790989037
|
Edit
Delete
|
|
34695
|
5
|
5
|
5
|
121
|
0
|
0
|
refs/heads/claude/adr008-a4
|
1
|
{"Commits":[{"Sha1":"7265d8d15 {"Commits":[{"Sha1":"7265d8d1514718e68d8579503acb63eda5b7fafd","Message":"ADR-008 A4 (isolated half): fault-injection acceptance of the automatic retry and its Human Inbox count\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-02T17:57:14-07:00"}],"HeadCommit":{"Sha1":"7265d8d1514718e68d8579503acb63eda5b7fafd","Message":"ADR-008 A4 (isolated half): fault-injection acceptance of the automatic retry and its Human Inbox count\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-02T17:57:14-07:00"},"CompareURL":"luoanwu/seven-domain-five-dimension-unified-model/compare/01b264f2bce0c29703f5aeb4697996ffe75ac8e0...7265d8d1514718e68d8579503acb63eda5b7fafd","Len":1}...
|
1790989037
|
Edit
Delete
|
|
34709
|
5
|
17
|
5
|
121
|
0
|
0
|
refs/heads/claude/adr008-a4
|
1
|
|
1790990251
|
Edit
Delete
|
|
34661
|
5
|
5
|
5
|
121
|
0
|
0
|
refs/heads/claude/adr008-saga-retry
|
1
|
|
1790985477
|
Edit
Delete
|
|
34662
|
5
|
5
|
5
|
121
|
0
|
0
|
refs/heads/claude/adr008-saga-retry
|
1
|
{"Commits":[{"Sha1":"0be95d701 {"Commits":[{"Sha1":"0be95d7018007d85ee3cf23a84b9518603b7306d","Message":"ADR-008 A2-A3: per-step autoRetry, attempt-free step command id, automatic RetrySagaStep and the manager's off-by-default retry\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-02T16:57:52-07:00"},{"Sha1":"9c0a7aabb7ca7bc20dac759b33b0ea3481fb60a0","Message":"ADR-008 approved (R1-R6 as recommended); A1 real-database proof of command id replay and retry\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-02T16:45:57-07:00"}],"HeadCommit":{"Sha1":"0be95d7018007d85ee3cf23a84b9518603b7306d","Message":"ADR-008 A2-A3: per-step autoRetry, attempt-free step command id, automatic RetrySagaStep and the manager's off-by-default retry\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-02T16:57:52-07:00"},"CompareURL":"luoanwu/seven-domain-five-dimension-unified-model/compare/e8e746703db112439b11793968dac4835acb9c58...0be95d7018007d85ee3cf23a84b9518603b7306d","Len":2}...
|
1790985477
|
Edit
Delete
|
|
34680
|
5
|
17
|
5
|
121
|
0
|
0
|
refs/heads/claude/adr008-saga-retry
|
1
|
|
1790987925
|
Edit
Delete
|
|
34754
|
5
|
5
|
5
|
121
|
0
|
0
|
refs/heads/claude/adr009-staged-rollout
|
1
|
|
1790999748
|
Edit
Delete
|
|
34755
|
5
|
5
|
5
|
121
|
0
|
0
|
refs/heads/claude/adr009-staged-rollout
|
1
|
{"Commits":[{"Sha1":"1132fc45d {"Commits":[{"Sha1":"1132fc45d46d4f23fc84a9dc8a57f6fda15418dd","Message":"Merge remote-tracking branch 'origin/main' into claude/adr009-staged-rollout\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-02T20:55:32-07:00"}],"HeadCommit":{"Sha1":"1132fc45d46d4f23fc84a9dc8a57f6fda15418dd","Message":"Merge remote-tracking branch 'origin/main' into claude/adr009-staged-rollout\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-02T20:55:32-07:00"},"CompareURL":"luoanwu/seven-domain-five-dimension-unified-model/compare/6b47bd70cccfeb057fb65111cd505e435a0762ca...1132fc45d46d4f23fc84a9dc8a57f6fda15418dd","Len":1}...
|
1790999748
|
Edit
Delete
|
|
34774
|
5
|
17
|
5
|
121
|
0
|
0
|
refs/heads/claude/adr009-staged-rollout
|
1
|
|
1791000708
|
Edit
Delete
|
|
34764
|
5
|
5
|
5
|
121
|
0
|
0
|
refs/heads/claude/adr010-saga-prestart
|
1
|
|
1791000446
|
Edit
Delete
|
|
34765
|
5
|
5
|
5
|
121
|
0
|
0
|
refs/heads/claude/adr010-saga-prestart
|
1
|
{"Commits":[{"Sha1":"35a929b26 {"Commits":[{"Sha1":"35a929b2652cca25afcc4f89e04e97fc99a86cd3","Message":"docs: ADR-010 proposes no persistent Saga pre-start or step-dispatch states (K7.1a)\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-02T21:07:22-07:00"}],"HeadCommit":{"Sha1":"35a929b2652cca25afcc4f89e04e97fc99a86cd3","Message":"docs: ADR-010 proposes no persistent Saga pre-start or step-dispatch states (K7.1a)\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-02T21:07:22-07:00"},"CompareURL":"luoanwu/seven-domain-five-dimension-unified-model/compare/3131b4ccd1ede47dbff3ba3d7c6e996d0471d557...35a929b2652cca25afcc4f89e04e97fc99a86cd3","Len":1}...
|
1791000446
|
Edit
Delete
|
|
34768
|
5
|
17
|
5
|
121
|
0
|
0
|
refs/heads/claude/adr010-saga-prestart
|
1
|
|
1791000577
|
Edit
Delete
|
|
40147
|
5
|
5
|
5
|
116
|
0
|
0
|
refs/heads/claude/ai-gateway-budget-window-money-2 refs/heads/claude/ai-gateway-budget-window-money-20261021...
|
0
|
|
1792574459
|
Edit
Delete
|
|
40148
|
5
|
5
|
5
|
116
|
0
|
0
|
refs/heads/claude/ai-gateway-budget-window-money-2 refs/heads/claude/ai-gateway-budget-window-money-20261021...
|
0
|
{"Commits":[{"Sha1":"154c5d941 {"Commits":[{"Sha1":"154c5d9413e9e644c5b83afd9dad6fa65b80790a","Message":"chore(reports): rebind static gates and workbench snapshots @ bc66377d3\n\nRoot check chain (29 rings) and workbench:snapshots regenerated on the clean tree\nof the ai-gateway budget-window fix. check:evidence is partial: 0 errors; the\nremaining stale entries are warn-level database-backed acceptances whose scope\ncovers runtime/modules and were not rerun here; ai-gateway unit (139) and\nisolated integration (57, new regression included) suites passed.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-21T02:01:58-07:00"},{"Sha1":"bc66377d38ac745423fb5a92fcd7644c67e4f0e3","Message":"fix(ai-gateway): budget-window recompute skips DEC-055 money ledger rows\n\nThe shared money ledger (DEC-055) stores its rows in platform_ai_budget_window as\napp_id=money:\u003cbudgetId\u003e with limit_units=0 and money_ledger set, at the budget's\nown window_start. recomputeBudget selected every row for the tenant's month\nwindow, so whenever a shared budget started on a UTC month boundary the\nrecompute rewrote that row's reserved/consumed units and reported it exhausted,\nmaking the budget-window job log AI_BUDGET_EXHAUSTED on every run. Filter on\nmoney_ledger IS NULL and add an isolated PostgreSQL regression (fails on the\nprevious query with the money row reported exhausted).\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-21T02:00:10-07:00"}],"HeadCommit":{"Sha1":"154c5d9413e9e644c5b83afd9dad6fa65b80790a","Message":"chore(reports): rebind static gates and workbench snapshots @ bc66377d3\n\nRoot check chain (29 rings) and workbench:snapshots regenerated on the clean tree\nof the ai-gateway budget-window fix. check:evidence is partial: 0 errors; the\nremaining stale entries are warn-level database-backed acceptances whose scope\ncovers runtime/modules and were not rerun here; ai-gateway unit (139) and\nisolated integration (57, new regression included) suites passed.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-21T02:01:58-07:00"},"CompareURL":"luoanwu/enterprise-platform/compare/c33f84e6f213439d53f12a14ac1ed07143d3a5e4...154c5d9413e9e644c5b83afd9dad6fa65b80790a","Len":2}...
|
1792574459
|
Edit
Delete
|
|
40329
|
5
|
5
|
5
|
116
|
0
|
0
|
refs/heads/claude/ai-gateway-hardening-20261021
|
0
|
|
1792621114
|
Edit
Delete
|
|
40330
|
5
|
5
|
5
|
116
|
0
|
0
|
refs/heads/claude/ai-gateway-hardening-20261021
|
0
|
{"Commits":[{"Sha1":"6d6074e5b {"Commits":[{"Sha1":"6d6074e5bbdda6765c71b41bf86e64aaaaef0502","Message":"chore(reports): 保存加固合流 Runtime 静态链回执 @ 5c8ab93b3\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-21T15:17:13-07:00"},{"Sha1":"7f2a9f1dbc2802cf2831a2e662eb4cfaac2c4269","Message":"chore(reports): 回绑加固合流完整根链与只读运行核验 @ 5c8ab93b3\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-21T15:16:30-07:00"},{"Sha1":"5c8ab93b30d627f2c55df5c830f0ef017f2c9008","Message":"chore(reports): 回绑 LiteLLM 双仓加固静态门禁 @ cad03ea61\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-21T15:14:12-07:00"},{"Sha1":"cad03ea61295e600bbb5b65831d9b074e78cd1b6","Message":"Merge branch 'main' into claude/ai-gateway-hardening-20261021\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-21T15:13:17-07:00"}],"HeadCommit":{"Sha1":"6d6074e5bbdda6765c71b41bf86e64aaaaef0502","Message":"chore(reports): 保存加固合流 Runtime 静态链回执 @ 5c8ab93b3\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-21T15:17:13-07:00"},"CompareURL":"luoanwu/enterprise-platform/compare/7d09a68f6ab49155f38026dd307deac3c08b740e...6d6074e5bbdda6765c71b41bf86e64aaaaef0502","Len":4}...
|
1792621114
|
Edit
Delete
|
|
34929
|
5
|
5
|
5
|
121
|
0
|
0
|
refs/heads/claude/api-gate-merge
|
1
|
|
1791078705
|
Edit
Delete
|
|
34930
|
5
|
5
|
5
|
121
|
0
|
0
|
refs/heads/claude/api-gate-merge
|
1
|
{"Commits":[{"Sha1":"833eba10c {"Commits":[{"Sha1":"833eba10ce54e30eeccd95ab7ff20f26fb729b7e","Message":"K4.6b: merge the two official API schema gates into one\n\nThe 0.220.0 standard gate and the 0.221.0 check:api-spec gate validated the same\ntwo generated documents twice. scripts/lib/api-standard-validation.js is now the\nonly implementation and enforces the union of both rule sets; check:model runs it\nonce through check-api-contracts, and check:api-spec is an alias of that script.\n\nVendored official schemas live only in contracts/standards. Both OpenAPI 3.1\niterations stay (schema-base 2022-10-07 and document schema 2026-08-03) because\nneither is a superset of the other; the AsyncAPI without-$id variant is dropped\nas equivalent to the bundled 3.0.0 schema. contracts/meta, check-api-spec.js,\napi-spec-validation.js and its test file are removed; every negative mutation\nmoved into test/api-standard-validation.test.js.\n\nGenerated contracts, the generator and the compat baseline are unchanged.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-03T18:51:36-07:00"}],"HeadCommit":{"Sha1":"833eba10ce54e30eeccd95ab7ff20f26fb729b7e","Message":"K4.6b: merge the two official API schema gates into one\n\nThe 0.220.0 standard gate and the 0.221.0 check:api-spec gate validated the same\ntwo generated documents twice. scripts/lib/api-standard-validation.js is now the\nonly implementation and enforces the union of both rule sets; check:model runs it\nonce through check-api-contracts, and check:api-spec is an alias of that script.\n\nVendored official schemas live only in contracts/standards. Both OpenAPI 3.1\niterations stay (schema-base 2022-10-07 and document schema 2026-08-03) because\nneither is a superset of the other; the AsyncAPI without-$id variant is dropped\nas equivalent to the bundled 3.0.0 schema. contracts/meta, check-api-spec.js,\napi-spec-validation.js and its test file are removed; every negative mutation\nmoved into test/api-standard-validation.test.js.\n\nGenerated contracts, the generator and the compat baseline are unchanged.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-03T18:51:36-07:00"},"CompareURL":"luoanwu/seven-domain-five-dimension-unified-model/compare/3dd9e3a8bd71c81edcad0d033e82bb706c7a2b93...833eba10ce54e30eeccd95ab7ff20f26fb729b7e","Len":1}...
|
1791078705
|
Edit
Delete
|
|
35775
|
5
|
5
|
5
|
124
|
0
|
0
|
refs/heads/claude/approve-dev-defaults
|
1
|
|
1791561554
|
Edit
Delete
|
|
35776
|
5
|
5
|
5
|
124
|
0
|
0
|
refs/heads/claude/approve-dev-defaults
|
1
|
{"Commits":[{"Sha1":"cd7e6fe99 {"Commits":[{"Sha1":"cd7e6fe99e2464b637483dde49247e949d5fc95e","Message":"docs: record verbal confirmation of development defaults (2026-10-09)\n\nThe project owner confirmed every development default in the table, including\nthe late flash-sale payment and interrupted-transcript rules. This records a\nverbal confirmation only: code policies stay approved:false until a formal\napproval record exists, and no real provider is enabled by it.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-09T08:59:09-07:00"}],"HeadCommit":{"Sha1":"cd7e6fe99e2464b637483dde49247e949d5fc95e","Message":"docs: record verbal confirmation of development defaults (2026-10-09)\n\nThe project owner confirmed every development default in the table, including\nthe late flash-sale payment and interrupted-transcript rules. This records a\nverbal confirmation only: code policies stay approved:false until a formal\napproval record exists, and no real provider is enabled by it.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-09T08:59:09-07:00"},"CompareURL":"luoanwu/haizan-self-service-ktv/compare/4188dc17cbab255ac72715a4b78a0640a4c6b541...cd7e6fe99e2464b637483dde49247e949d5fc95e","Len":1}...
|
1791561554
|
Edit
Delete
|
|
35777
|
5
|
5
|
5
|
124
|
0
|
0
|
refs/heads/claude/approve-dev-defaults
|
1
|
{"Commits":[{"Sha1":"dc79c4543 {"Commits":[{"Sha1":"dc79c45434ebe8fffe4d08a33b66e2350c4ead52","Message":"docs: regenerate acceptance matrix after the GOV01 renewal merges (903/903)\n\nMain's matrix was produced before #12/#13 changed sources, so --check reported\nit stale. This run on the merged sources restores check=0.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-09T08:59:39-07:00"}],"HeadCommit":{"Sha1":"dc79c45434ebe8fffe4d08a33b66e2350c4ead52","Message":"docs: regenerate acceptance matrix after the GOV01 renewal merges (903/903)\n\nMain's matrix was produced before #12/#13 changed sources, so --check reported\nit stale. This run on the merged sources restores check=0.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-09T08:59:39-07:00"},"CompareURL":"luoanwu/haizan-self-service-ktv/compare/cd7e6fe99e2464b637483dde49247e949d5fc95e...dc79c45434ebe8fffe4d08a33b66e2350c4ead52","Len":1}...
|
1791561583
|
Edit
Delete
|
|
35736
|
5
|
5
|
5
|
124
|
0
|
0
|
refs/heads/claude/aud-exit
|
1
|
|
1791558827
|
Edit
Delete
|
|
35737
|
5
|
5
|
5
|
124
|
0
|
0
|
refs/heads/claude/aud-exit
|
1
|
{"Commits":[{"Sha1":"3f4060786 {"Commits":[{"Sha1":"3f40607868b1e46eaf9efc323d7e257636bd4e29","Message":"fix(AUD-EXIT): keep fulfilling original obligations after cooperation exit\n\nExit used to freeze an exiting cooperation: deliveries were rejected, so\nopen promises had no continued-handling path (ALI01, AC30).\n\n- deliver accepts active or exiting cooperations, still capped by each\n original obligation; after-exit entries are tagged phase:'after-exit'\n with the acting principal.\n- exit records which obligations were open at that moment; there is still\n no action that adds new obligations, and approve stays draft-only.\n- new completeExit moves exiting -\u003e exited only when every original\n obligation is delivered (OBLIGATIONS_OPEN otherwise); exited rejects\n further deliveries. Finance reconcile is unaffected and funds remain\n unverified.\n- store workbench mirrors the rules and adds a 完成退出 action.\n- ALI01/AC30 named test mapping for the new rule test.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-09T08:13:43-07:00"}],"HeadCommit":{"Sha1":"3f40607868b1e46eaf9efc323d7e257636bd4e29","Message":"fix(AUD-EXIT): keep fulfilling original obligations after cooperation exit\n\nExit used to freeze an exiting cooperation: deliveries were rejected, so\nopen promises had no continued-handling path (ALI01, AC30).\n\n- deliver accepts active or exiting cooperations, still capped by each\n original obligation; after-exit entries are tagged phase:'after-exit'\n with the acting principal.\n- exit records which obligations were open at that moment; there is still\n no action that adds new obligations, and approve stays draft-only.\n- new completeExit moves exiting -\u003e exited only when every original\n obligation is delivered (OBLIGATIONS_OPEN otherwise); exited rejects\n further deliveries. Finance reconcile is unaffected and funds remain\n unverified.\n- store workbench mirrors the rules and adds a 完成退出 action.\n- ALI01/AC30 named test mapping for the new rule test.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-09T08:13:43-07:00"},"CompareURL":"luoanwu/haizan-self-service-ktv/compare/4a57e260f03560e38283a053d0130a5a2fbdc8b7...3f40607868b1e46eaf9efc323d7e257636bd4e29","Len":1}...
|
1791558827
|
Edit
Delete
|
|
35754
|
5
|
17
|
5
|
124
|
0
|
0
|
refs/heads/claude/aud-exit
|
1
|
|
1791559517
|
Edit
Delete
|
|
35773
|
5
|
5
|
5
|
124
|
0
|
0
|
refs/heads/claude/aud-provenance
|
1
|
|
1791561465
|
Edit
Delete
|
|
35774
|
5
|
5
|
5
|
124
|
0
|
0
|
refs/heads/claude/aud-provenance
|
1
|
{"Commits":[{"Sha1":"a60328636 {"Commits":[{"Sha1":"a603286363e1498a37c9b09de2f9eed6c1f9a38c","Message":"docs(AUD-PROVENANCE): align progress and gap audit with current main\n\nProgress, gap-audit and README status still cited 19fbd74/27ffb3d/aef5ab6\nnumbers (152 of 200 with named evidence, all seven audit findings open)\nwhile the acceptance matrix already reflected a 902/902 run at 91f5f0e.\n\n- Add a \"current state\" section/object (main 4188dc1, run 91f5f0e 902/902,\n 212/212 requirements with passed named evidence, 75/98 ACs, AC79 the only\n non-external AC without evidence, CON01-06 claims unsigned, signoff 0).\n- Record where each audit finding was fixed (f295ce8, ed56e48, 49dc32e,\n 3f40607, this commit) without rewriting the historical inventory.\n- Refresh nextPriorities; README points at the current section.\n- Not regenerated with ops/audit-code-gaps.mjs: the committed generator is\n older than the published report and would drop findings and stage history.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-09T08:57:40-07:00"}],"HeadCommit":{"Sha1":"a603286363e1498a37c9b09de2f9eed6c1f9a38c","Message":"docs(AUD-PROVENANCE): align progress and gap audit with current main\n\nProgress, gap-audit and README status still cited 19fbd74/27ffb3d/aef5ab6\nnumbers (152 of 200 with named evidence, all seven audit findings open)\nwhile the acceptance matrix already reflected a 902/902 run at 91f5f0e.\n\n- Add a \"current state\" section/object (main 4188dc1, run 91f5f0e 902/902,\n 212/212 requirements with passed named evidence, 75/98 ACs, AC79 the only\n non-external AC without evidence, CON01-06 claims unsigned, signoff 0).\n- Record where each audit finding was fixed (f295ce8, ed56e48, 49dc32e,\n 3f40607, this commit) without rewriting the historical inventory.\n- Refresh nextPriorities; README points at the current section.\n- Not regenerated with ops/audit-code-gaps.mjs: the committed generator is\n older than the published report and would drop findings and stage history.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-09T08:57:40-07:00"},"CompareURL":"luoanwu/haizan-self-service-ktv/compare/4188dc17cbab255ac72715a4b78a0640a4c6b541...a603286363e1498a37c9b09de2f9eed6c1f9a38c","Len":1}...
|
1791561465
|
Edit
Delete
|
|
2022
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/claude/bold-raman-0239cc
|
0
|
|
1778679483
|
Edit
Delete
|
|
2023
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/claude/bold-raman-0239cc
|
0
|
{"Commits":[{"Sha1":"921a6ce55 {"Commits":[{"Sha1":"921a6ce5568beb3034fc47d4bf7a392351c0068f","Message":"chore(reports): 刷新 pre-commit Smart Gate 触发的 audit 快照时间戳\n\naudit:events / audit:state-machines 在前次提交时由 Smart Gate 重新触发;\n本提交把更新后的 reports/*.latest.json / *.latest.md 一起入库,保持仓库内\naudit 快照与最后一次 PASS 校验同步。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-12T16:32:36-07:00"},{"Sha1":"566b7fe1dc66f235ce26d82eb08108083bef619b","Message":"fix(governance): Wave 4 解封 + capability-graph HIGH 清零 + vitest 7 项真回归修复\n\nW4-T03 阻塞 2026-05-12 真实 DB 复跑解封:\n- tests/api/ai-review-queue.test.ts 两处 data.data → data 修正,对齐\n Governance 3.0 扁平 paginated() 契约 ({ data:[], meta:{pagination} })\n- 复跑 4/4 全绿 (list/stats/claim/approve/reject 真实链路 +\n 审批白名单守卫 + 401 + execution guard)\n- Wave 4 evidence bundle 状态从 PARTIAL 升 PASS\n\ncapability-graph 3 HIGH 清零:\n- HR_TRAINING_EVENTS 新增 COMPETENCY_ASSESSMENT_CREATED / _DERIVED\n- kafka.ts 新增 hr_competency_assessment → HR_EVENTS topic 映射\n- assessByUser / deriveBehaviorBasedAssessment 写入包进\n prisma.transaction({tx =\u003e create + publishEvent(tx)}),outbox 原子化\n- event-publishing audit: capability-graph none → full\n- harness HIGH 3 → 0\n\nvitest 7 项真回归修复(剥离 2026-02-18 stale 95-failure 噪音后):\n- marketing.service.test.ts 完成执行中活动: 补 4th findFirst mock\n (assertTransition + update 状态校验 + ensureExistsById + refresh)\n- quote.service.test.ts 创建报价单: biz-code mock 补 createWithBizCodeRetry\n- campaign.service.enhanced.test.ts 5 项 + 6 项隐藏共振失败:\n * beforeEach 加 findFirst/updateMany/findFirstOrThrow.mockReset()\n 防止 mockResolvedValue sticky 跨测试串扰\n * mock 补 findFirstOrThrow(execute 走 updateStatusInTx 用 findFirstOrThrow)\n * 8 处状态机生命周期/事件发布/取消测试补 4th findFirst onceValue\n * execute 测试将 3rd findFirst.mockResolvedValueOnce 改为\n findFirstOrThrow.mockResolvedValueOnce\n\n18 个原 stale-baseline 失败文件 373/373 全绿。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-12T16:29:30-07:00"}],"HeadCommit":{"Sha1":"921a6ce5568beb3034fc47d4bf7a392351c0068f","Message":"chore(reports): 刷新 pre-commit Smart Gate 触发的 audit 快照时间戳\n\naudit:events / audit:state-machines 在前次提交时由 Smart Gate 重新触发;\n本提交把更新后的 reports/*.latest.json / *.latest.md 一起入库,保持仓库内\naudit 快照与最后一次 PASS 校验同步。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-12T16:32:36-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/534799e0b1707368df37aff7b3df545a6ca1064a...921a6ce5568beb3034fc47d4bf7a392351c0068f","Len":2}...
|
1778679483
|
Edit
Delete
|
|
2027
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/claude/bold-raman-0239cc
|
0
|
{"Commits":[{"Sha1":"b4ec9515c {"Commits":[{"Sha1":"b4ec9515ccfba2b467d898fa5734681cbe1d678d","Message":"ci(gitea): 从 .github/workflows 移植核心治理门禁到 Gitea Actions\n\n.gitea/workflows/ 新增三份文件,取代被 GitHub Actions 账单墙挡住的 PR 验收:\n\n- ci.yml: 4 job (frontend-typecheck / lint-and-typecheck / unit-tests /\n governance-audit) 覆盖 vue-tsc + tsc + lint + backend test:unit +\n prisma-zod-contract / formrules-zod / response-columns / field-payload /\n enum-consistency / list-page-routes / ai-assist-coverage / ai-assist-skill-\n binding / context-provider-redact / coach-script-library / ai-decision-\n quality / event-publishing / state-machines + harness report 聚合 + 治理\n 门禁硬校验 (HIGH+CRITICAL+MEDIUM=0 阻塞合并)。\n- migration-safety.yml: 启用 pgvector/pgvector:pg16 service container,\n ci-migration-check.sh + ci-migration-deploy-gate.sh + drift artifacts 上传。\n- README.md: act_runner 注册 runbook (含 label 必填项),\n 服务端 app.ini 配置, GitHub 与 Gitea 并存策略。\n\n跳过的 GitHub-only workflow (deploy/e2e/performance/test-pipeline/test-report/\nhealth-check/pr-validation) 已在 README.md 说明跳过原因,需要时按相同模式补移植。\n\n兼容性差异:\n- gitea.ref 取代 github.ref (concurrency group)\n- GITHUB_STEP_SUMMARY 环境变量保留同名\n- actions/checkout@v4 / pnpm/action-setup@v4 / actions/setup-node@v4 /\n actions/upload-artifact@v4 由 DEFAULT_ACTIONS_URL=github 代理\n\nowner 一次性操作: 注册 act_runner (labels 必含\nubuntu-latest:docker://catthehacker/ubuntu:act-latest), Gitea repo Settings\n→ Actions → Runners 拿 registration token, 见 .gitea/workflows/README.md。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-13T18:19:21-07:00"}],"HeadCommit":{"Sha1":"b4ec9515ccfba2b467d898fa5734681cbe1d678d","Message":"ci(gitea): 从 .github/workflows 移植核心治理门禁到 Gitea Actions\n\n.gitea/workflows/ 新增三份文件,取代被 GitHub Actions 账单墙挡住的 PR 验收:\n\n- ci.yml: 4 job (frontend-typecheck / lint-and-typecheck / unit-tests /\n governance-audit) 覆盖 vue-tsc + tsc + lint + backend test:unit +\n prisma-zod-contract / formrules-zod / response-columns / field-payload /\n enum-consistency / list-page-routes / ai-assist-coverage / ai-assist-skill-\n binding / context-provider-redact / coach-script-library / ai-decision-\n quality / event-publishing / state-machines + harness report 聚合 + 治理\n 门禁硬校验 (HIGH+CRITICAL+MEDIUM=0 阻塞合并)。\n- migration-safety.yml: 启用 pgvector/pgvector:pg16 service container,\n ci-migration-check.sh + ci-migration-deploy-gate.sh + drift artifacts 上传。\n- README.md: act_runner 注册 runbook (含 label 必填项),\n 服务端 app.ini 配置, GitHub 与 Gitea 并存策略。\n\n跳过的 GitHub-only workflow (deploy/e2e/performance/test-pipeline/test-report/\nhealth-check/pr-validation) 已在 README.md 说明跳过原因,需要时按相同模式补移植。\n\n兼容性差异:\n- gitea.ref 取代 github.ref (concurrency group)\n- GITHUB_STEP_SUMMARY 环境变量保留同名\n- actions/checkout@v4 / pnpm/action-setup@v4 / actions/setup-node@v4 /\n actions/upload-artifact@v4 由 DEFAULT_ACTIONS_URL=github 代理\n\nowner 一次性操作: 注册 act_runner (labels 必含\nubuntu-latest:docker://catthehacker/ubuntu:act-latest), Gitea repo Settings\n→ Actions → Runners 拿 registration token, 见 .gitea/workflows/README.md。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-13T18:19:21-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/921a6ce5568beb3034fc47d4bf7a392351c0068f...b4ec9515ccfba2b467d898fa5734681cbe1d678d","Len":1}...
|
1778721615
|
Edit
Delete
|
|
2028
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/claude/bold-raman-0239cc
|
0
|
{"Commits":[{"Sha1":"a46d1a824 {"Commits":[{"Sha1":"a46d1a8248b62d039fbdf3815bc192399beb6ce5","Message":"ci(gitea): 修复 pnpm 版本冲突(移除显式 version: 改读 packageManager)\n\n首次 Gitea Actions 跑挂在 pnpm/action-setup@v4:\n\u003e Error: Multiple versions of pnpm specified:\n\u003e - version 9 in the GitHub Action config with the key \"version\"\n\u003e - version pnpm@8.15.0 in the package.json with the key \"packageManager\"\n\u003e ERR_PNPM_BAD_PM_VERSION\n\n原 .github/workflows/ci.yml 写了 PNPM_VERSION='9' 但没把它传给\npnpm/action-setup@v4 (uses: pnpm/action-setup@v4 不带 with:), 实际版本\n由 package.json 的 packageManager 字段决定 (pnpm@8.15.0)。我误把\nPNPM_VERSION 当作 setup-action 的入参传进去,触发版本冲突。\n\n修复:\n- .gitea/workflows/ci.yml: 4 处 pnpm/action-setup@v4 移除 with.version\n- .gitea/workflows/migration-safety.yml: 同上\n- 移除 env.PNPM_VERSION (不再被任何 step 引用)\n\n后续 Gitea / GitHub Actions 都应以 package.json packageManager 字段作为\npnpm 版本唯一真源, 升级 pnpm 时只改一处。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-13T18:23:11-07:00"}],"HeadCommit":{"Sha1":"a46d1a8248b62d039fbdf3815bc192399beb6ce5","Message":"ci(gitea): 修复 pnpm 版本冲突(移除显式 version: 改读 packageManager)\n\n首次 Gitea Actions 跑挂在 pnpm/action-setup@v4:\n\u003e Error: Multiple versions of pnpm specified:\n\u003e - version 9 in the GitHub Action config with the key \"version\"\n\u003e - version pnpm@8.15.0 in the package.json with the key \"packageManager\"\n\u003e ERR_PNPM_BAD_PM_VERSION\n\n原 .github/workflows/ci.yml 写了 PNPM_VERSION='9' 但没把它传给\npnpm/action-setup@v4 (uses: pnpm/action-setup@v4 不带 with:), 实际版本\n由 package.json 的 packageManager 字段决定 (pnpm@8.15.0)。我误把\nPNPM_VERSION 当作 setup-action 的入参传进去,触发版本冲突。\n\n修复:\n- .gitea/workflows/ci.yml: 4 处 pnpm/action-setup@v4 移除 with.version\n- .gitea/workflows/migration-safety.yml: 同上\n- 移除 env.PNPM_VERSION (不再被任何 step 引用)\n\n后续 Gitea / GitHub Actions 都应以 package.json packageManager 字段作为\npnpm 版本唯一真源, 升级 pnpm 时只改一处。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-13T18:23:11-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/b4ec9515ccfba2b467d898fa5734681cbe1d678d...a46d1a8248b62d039fbdf3815bc192399beb6ce5","Len":1}...
|
1778721836
|
Edit
Delete
|
|
2029
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/claude/bold-raman-0239cc
|
0
|
{"Commits":[{"Sha1":"43427343b {"Commits":[{"Sha1":"43427343b191153e949defea09c04fa62f6fec03","Message":"ci(gitea): 切换 uses 到 gitea.com 镜像,绕开 github.com 网络抖动\n\nRun #22805 两次都挂在同一处:\n ☁ git clone 'https://github.com/actions/checkout' # ref=v4\n ...90 秒后...\n Get \"https://github.com/actions/checkout/info/refs?service=git-upload-pack\":\n unexpected EOF\n\nGitea runner → github.com 链路长期不稳,每次 job 都要重新 clone\nactions/* 仓库(act 内部按 commit hash 缓存,新 run 走新路径)。\n\n修复:\n- .gitea/workflows/ci.yml: 4 处 actions/checkout / pnpm/action-setup /\n actions/setup-node + 1 处 actions/upload-artifact 全部加 https://gitea.com/ 前缀\n- .gitea/workflows/migration-safety.yml: 同上 4 处\n- README.md 加入\"已知差异 - gitea.com 镜像\"说明\n\n镜像可用性验证(git ls-remote 通过):\n- https://gitea.com/actions/checkout.git ✓\n- https://gitea.com/actions/setup-node.git ✓\n- https://gitea.com/actions/upload-artifact.git ✓\n- https://gitea.com/pnpm/action-setup.git ✓\n\n如果服务端 [actions] DEFAULT_ACTIONS_URL=gitea 或者 runner 网络稳定后,\n可移除 `https://gitea.com/` 前缀回到裸 `actions/xxx` 写法。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-13T18:37:48-07:00"}],"HeadCommit":{"Sha1":"43427343b191153e949defea09c04fa62f6fec03","Message":"ci(gitea): 切换 uses 到 gitea.com 镜像,绕开 github.com 网络抖动\n\nRun #22805 两次都挂在同一处:\n ☁ git clone 'https://github.com/actions/checkout' # ref=v4\n ...90 秒后...\n Get \"https://github.com/actions/checkout/info/refs?service=git-upload-pack\":\n unexpected EOF\n\nGitea runner → github.com 链路长期不稳,每次 job 都要重新 clone\nactions/* 仓库(act 内部按 commit hash 缓存,新 run 走新路径)。\n\n修复:\n- .gitea/workflows/ci.yml: 4 处 actions/checkout / pnpm/action-setup /\n actions/setup-node + 1 处 actions/upload-artifact 全部加 https://gitea.com/ 前缀\n- .gitea/workflows/migration-safety.yml: 同上 4 处\n- README.md 加入\"已知差异 - gitea.com 镜像\"说明\n\n镜像可用性验证(git ls-remote 通过):\n- https://gitea.com/actions/checkout.git ✓\n- https://gitea.com/actions/setup-node.git ✓\n- https://gitea.com/actions/upload-artifact.git ✓\n- https://gitea.com/pnpm/action-setup.git ✓\n\n如果服务端 [actions] DEFAULT_ACTIONS_URL=gitea 或者 runner 网络稳定后,\n可移除 `https://gitea.com/` 前缀回到裸 `actions/xxx` 写法。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-13T18:37:48-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/a46d1a8248b62d039fbdf3815bc192399beb6ce5...43427343b191153e949defea09c04fa62f6fec03","Len":1}...
|
1778722740
|
Edit
Delete
|
|
2030
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/claude/bold-raman-0239cc
|
0
|
{"Commits":[{"Sha1":"08f515623 {"Commits":[{"Sha1":"08f51562350c2fde731d1c15574e165eb1ba2246","Message":"ci(gitea): pnpm install 加 --ignore-scripts 绕开 mediasoup/prisma 拖垮 runner\n\nRun #22809 frontend-typecheck 跑了 41 分钟后挂在 pnpm install --frozen-lockfile,\n具体卡点:\n 1) mediasoup@3.19.19 postinstall 编译 libwebrtc + liburing + openssl 等\n 1422 个 C/C++ 对象 (~30min, 大量 RAM/CPU)\n 2) 紧接着 root prepare 脚本 (pnpm --filter @juhi/shared run build \u0026\u0026\n pnpm -C backend exec prisma generate) prisma generate 在 600+ 模型上\n 再用一波堆内存\n 3) Runner 容器在 prisma generate 阶段被 signal: terminated (OOM 或资源限制)\n\nmediasoup 只在 backend (im/media/mediasoup.service) 用到, 前端完全不需要;\nprisma generate 已在每个需要的 job 单独显式调用; root prepare 脚本不需要\n在 pnpm install 期间自动跑。\n\n修复:\n- .gitea/workflows/ci.yml: 4 处 pnpm install 加 --ignore-scripts\n- .gitea/workflows/migration-safety.yml: 同上 1 处\n\n代价: 没有自动跑 native build。\n - frontend type-check: 不需要 mediasoup native worker, 通过\n - backend type-check / unit-tests: 类型检查只读 .d.ts, mediasoup\n JS 入口仍存在, vitest 单测有 mock, 跑通过没问题\n - 如果之后要跑真实需要 mediasoup worker 的 e2e/integration job,\n 可以单独加一步 `pnpm rebuild mediasoup` 显式触发\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-13T20:15:34-07:00"}],"HeadCommit":{"Sha1":"08f51562350c2fde731d1c15574e165eb1ba2246","Message":"ci(gitea): pnpm install 加 --ignore-scripts 绕开 mediasoup/prisma 拖垮 runner\n\nRun #22809 frontend-typecheck 跑了 41 分钟后挂在 pnpm install --frozen-lockfile,\n具体卡点:\n 1) mediasoup@3.19.19 postinstall 编译 libwebrtc + liburing + openssl 等\n 1422 个 C/C++ 对象 (~30min, 大量 RAM/CPU)\n 2) 紧接着 root prepare 脚本 (pnpm --filter @juhi/shared run build \u0026\u0026\n pnpm -C backend exec prisma generate) prisma generate 在 600+ 模型上\n 再用一波堆内存\n 3) Runner 容器在 prisma generate 阶段被 signal: terminated (OOM 或资源限制)\n\nmediasoup 只在 backend (im/media/mediasoup.service) 用到, 前端完全不需要;\nprisma generate 已在每个需要的 job 单独显式调用; root prepare 脚本不需要\n在 pnpm install 期间自动跑。\n\n修复:\n- .gitea/workflows/ci.yml: 4 处 pnpm install 加 --ignore-scripts\n- .gitea/workflows/migration-safety.yml: 同上 1 处\n\n代价: 没有自动跑 native build。\n - frontend type-check: 不需要 mediasoup native worker, 通过\n - backend type-check / unit-tests: 类型检查只读 .d.ts, mediasoup\n JS 入口仍存在, vitest 单测有 mock, 跑通过没问题\n - 如果之后要跑真实需要 mediasoup worker 的 e2e/integration job,\n 可以单独加一步 `pnpm rebuild mediasoup` 显式触发\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-13T20:15:34-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/43427343b191153e949defea09c04fa62f6fec03...08f51562350c2fde731d1c15574e165eb1ba2246","Len":1}...
|
1778728631
|
Edit
Delete
|
|
2047
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/claude/bold-raman-0239cc
|
0
|
{"Commits":[{"Sha1":"adbaa604f {"Commits":[{"Sha1":"adbaa604f38b6cd3e55859ac5b2f5dd4931b3d4a","Message":"Merge remote-tracking branch 'origin/main' into claude/bold-raman-0239cc\n\n# Conflicts:\n#\tdocs/governance/ai-process-evidence-bundle-2026-05-10.md\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-14T20:20:23-07:00"},{"Sha1":"eef52fdbbf02a3a50cabd6a99fc2a825708b7538","Message":"Align finance period wire contracts and E2E governance\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-14T20:01:56-07:00"},{"Sha1":"ba052d22ec0e79c3982d077a40412a742adbd80c","Message":"Add AR ledger export permission\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-13T21:49:22-07:00"},{"Sha1":"5919c174e7004dcee776ec98b98032f38a367e22","Message":"Refine finance demo path smoke coverage\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-13T21:41:51-07:00"},{"Sha1":"4b067bbe2e635cfbbd96b0612cee0c6648828c9b","Message":"Update commander docs for four backbone demo paths\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-13T21:36:13-07:00"}],"HeadCommit":{"Sha1":"adbaa604f38b6cd3e55859ac5b2f5dd4931b3d4a","Message":"Merge remote-tracking branch 'origin/main' into claude/bold-raman-0239cc\n\n# Conflicts:\n#\tdocs/governance/ai-process-evidence-bundle-2026-05-10.md\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-05-14T20:20:23-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/08f51562350c2fde731d1c15574e165eb1ba2246...adbaa604f38b6cd3e55859ac5b2f5dd4931b3d4a","Len":24}...
|
1778815336
|
Edit
Delete
|