|
24000
|
docs(identity): 托管登录端到端首次走通记录——PKCE 换令牌 / JWKS 验签 docs(identity): 托管登录端到端首次走通记录——PKCE 换令牌 / JWKS 验签 / userinfo / 重放与篡改拒绝(缺失清单 I-7)...
|
116
|
5
|
platform.yml
|
72
|
5
|
0
|
refs/heads/main
|
ec29ace2dc8f4e3e51b716c3bb673b741f85b47f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ec19ba1b701730e2901aba160298111d06e8660c","after":"ec29ace2dc8f4e3e51b716c3bb673b741f85b47f","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/ec19ba1b701730e2901aba160298111d06e8660c...ec29ace2dc8f4e3e51b716c3bb673b741f85b47f","commits":[{"id":"ec29ace2dc8f4e3e51b716c3bb673b741f85b47f","message":"docs(identity): 托管登录端到端首次走通记录——PKCE 换令牌 / JWKS 验签 / userinfo / 重放与篡改拒绝(缺失清单 I-7)\n\n- stack/reports/identity-oidc-e2e.2026-09-16.json:authorize → 登录(人工)→ 同意 → 回调码 → 换令牌 200(RS256 kid dev-20260916,iss http://localhost:3098/t/demo,tenant_id / sid / acr / amr / nonce)→ JWKS 验签 valid → userinfo 200 → 重放 400 → 篡改 401 → introspect 对 public client 401;授权码 60 s\n- 生产口径容器换令牌 503 属设计内(本地 JWK 签名器只允许 test / development;生产 = OpenBao Transit);演示用本机 development 口径 identity 单 profile 进程(:3101),常驻容器不动\n- 踩坑登记:bash 加载含 JSON 的 env 会剥双引号 → discovery 503 / token 500;值须单引号\n- runbook §2 与缺失清单 §8.1 同步\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/ec29ace2dc8f4e3e51b716c3bb673b741f85b47f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-16T17:09:55-07:00","added":["stack/reports/identity-oidc-e2e.2026-09-16.json"],"removed":[],"modified":["docs/runbook.md","docs/缺失模块完善清单-2026-09-16.md"]}],"total_commits":0,"head_commit":{"id":"ec29ace2dc8f4e3e51b716c3bb673b741f85b47f","message":"docs(identity): 托管登录端到端首次走通记录——PKCE 换令牌 / JWKS 验签 / userinfo / 重放与篡改拒绝(缺失清单 I-7)\n\n- stack/reports/identity-oidc-e2e.2026-09-16.json:authorize → 登录(人工)→ 同意 → 回调码 → 换令牌 200(RS256 kid dev-20260916,iss http://localhost:3098/t/demo,tenant_id / sid / acr / amr / nonce)→ JWKS 验签 valid → userinfo 200 → 重放 400 → 篡改 401 → introspect 对 public client 401;授权码 60 s\n- 生产口径容器换令牌 503 属设计内(本地 JWK 签名器只允许 test / development;生产 = OpenBao Transit);演示用本机 development 口径 identity 单 profile 进程(:3101),常驻容器不动\n- 踩坑登记:bash 加载含 JSON 的 env 会剥双引号 → discovery 503 / token 500;值须单引号\n- runbook §2 与缺失清单 §8.1 同步\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/ec29ace2dc8f4e3e51b716c3bb673b741f85b47f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-16T17:09:55-07:00","added":["stack/reports/identity-oidc-e2e.2026-09-16.json"],"removed":[],"modified":["docs/runbook.md","docs/缺失模块完善清单-2026-09-16.md"]},"repository":{"id":116,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"enterprise-platform","full_name":"luoanwu/enterprise-platform","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":15100,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/enterprise-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":42,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-11T07:33:25+08:00","updated_at":"2026-09-17T07:57:53+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
34
|
1789604187
|
1789604574
|
0
|
1789603798
|
1789605541
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24170
|
docs(发布): 当场记录 rc.4 列车——三包已发,tag 这趟补上,并写清验证的真实范围
|
116
|
5
|
platform.yml
|
141
|
5
|
0
|
refs/heads/main
|
45a6bd523973c97e88f31faa12604773150cec87
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ec0f1c04d60b56c0fa19a2c06fc89e7a64b69c4d","after":"45a6bd523973c97e88f31faa12604773150cec87","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/ec0f1c04d60b56c0fa19a2c06fc89e7a64b69c4d...45a6bd523973c97e88f31faa12604773150cec87","commits":[{"id":"45a6bd523973c97e88f31faa12604773150cec87","message":"docs(发布): 当场记录 rc.4 列车——三包已发,tag 这趟补上,并写清验证的真实范围\n\nrc.4 三包(contracts / governance / client-fact)2026-09-18 经本地旁路发出,源 557a95c,\nRegistry 实查确认在架、三包均 registry integrity verified。与前两趟不同,本次是当场记录。\n\n这趟补上了 CL-5 要求的 tag packages-v1.0.0-rc.4——rc.2 / rc.3 都漏了这一步,\nprovenance.tag 因此第一次不是 null。构建与发布在 .worktrees/rc4-release 的 detached\n干净检出里做,所以 worktreeDirty:false 是真的(主检出当时有并行会话在改 contracts)。\n\n记录里写清了两件容易被夸大的事:\n\n1. rc.4 远不止触发它的那两条 clients 规则。自 rc.3 源 036a308 起,contracts 147 文件 /\n 51 提交、governance 61 文件 / 48 提交随车发出,包含九域规则入参体检那一整轮。\n2. 发布前只跑了 check:fixtures(17 套件 394 例)与 check:module-imports(396 文件),\n 退出码均 0;**完整 pnpm check 是发布后补跑的**(真实退出码 0,check:evidence partial:\n 36 新鲜 / 5 过期,过期项均属其他任务 WIP)。按 G-12 边界,这些都不构成阶段门证据。\n\nCLAUDE.md 的 contracts 条目同步推到 rc.4,并顺手修掉一处自相矛盾:该条前半句还写着\nrc.2 源 eb3cf2c,而后半句已说明按 provenance 订正为 6d3900a。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/45a6bd523973c97e88f31faa12604773150cec87","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:17:05-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/G-12本地旁路发布记录-2026-09-13.md"]},{"id":"df90a19192218b2b65c7cde7326968ac81d03de0","message":"chore(reports): check:module-imports 回绑 @ 557a95c\n\n在 .worktrees/rc4-release 的干净检出(detached 557a95c = packages-v1.0.0-rc.4)里重跑,\n绑 557a95c / worktreeDirty=false,扫描 396 个源文件、0 处违规。\n\n同批在该检出里跑的 check:fixtures 也是 0 失败(17 套件 394 例),但那份报告**没有提交**:\nfixtures 的证据作用域含 contracts,而并行会话正在高频改 contracts,绑 557a95c 的快照\n落地即过期,回绑节奏交还给正在改那片的人。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/df90a19192218b2b65c7cde7326968ac81d03de0","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:14:43-07:00","added":[],"removed":[],"modified":["reports/module-imports.latest.json"]},{"id":"0b3dab61a1072d682d5a921e00025f46431c95d3","message":"test(contracts): decideProviderOutcome 在门禁上零覆盖——退避被供应商压短这条修过的规则,没人盯着它别被改回去\n\n前两轮收了入参硬化(c190a6a)与请求体检/出站 allowlist 的用例(d950aa2)。本轮按「公开方法 × 出口」\n重新盘了一遍,两类空白。两个规则文件零改动,只动夹具评估器、夹具与测试。\n\n1. decideProviderOutcome 在门禁上零覆盖。planner 四个公开方法(status / plan /\n decideProviderOutcome / refresh)里,夹具只有 plan 与 refresh 两条规则。既有的 provider 规则走的是\n 独立函数 classifyProviderOutcome——它只看状态码与次数,不认路由策略:退避基数 baseBackoffSeconds、\n 上界 maximumBackoffSeconds、Retry-After 的钳制全在 planner 方法里,夹具一条都看不到。\n 而那里恰好有一条修过的规则:Retry-After 可以把退避拉长到策略上界,但不能把批准过的退避拉短\n (原实现 min(maximumBackoff, retryAfter),供应商回一个 Retry-After: 0 即可令退避清零)。\n 规则改对了,门禁却看不见它有没有被改回去。\n\n 新增 route-outcome 规则,并把 RETRY 连同算出来的秒数一并返回(RETRY:\u003c秒\u003e)——否则夹具只能看见\n 「重试了」,看不见「退避是不是被压短了」。负向实测:把 N33 的声明由 RETRY:20 改成 RETRY:10,\n 门禁 exit 1 并点名该例,秒数确实被钉住。\n\n2. plan() 八条出口此前门禁上没走过:请求非对象、目的地不在册、effectId 非请求派生、尝试次数越界、\n 未授权重放、模板版本未批准、变量越出模板 allowlist、敏感载荷落在未批准敏感数据的模板上。\n 构造用例时注意 effectId = tenant:sourceEvent:destination:template:v\u003c版本\u003e 是派生值,改 templateVersion\n 必须同步改 effectId,否则先撞 WEBHOOK_EFFECT_ID_MISMATCH,测不到目标那条。\n\n一处预期被实测推翻,按实现订正:retryAfterSeconds 超出 [0, 3600] 不是「钳到上界」,而是整条回执判\nPROVIDER_OUTCOME_INVALID。两条边界各钉一例(3600 → RETRY:60;9999 → 拒)。\n\n覆盖:夹具 25 → 39 例(正 4 / 反 35);定向测试 28 → 30 例,补上唯一一条「门禁有、单测没有」的\nWEBHOOK_TEMPLATE_NOT_APPROVED 以及 Retry-After 取值域。前两轮断言一条未改。\n变异探针(39 例真实 payload × 14 种脏值)14560 个变异点、0 处抛异常。\n\n未做(越界):模板审批流、多渠道 Provider、签名防重放、渠道切换仍不在本仓,C12 按缺失模块完善清单\n仍是「裁决」;Catalog 登记未动(notification-webhook 仍 module_e2、code_truth 指向工单仓)。\n\n证据:pnpm --dir contracts build / typecheck 绿、check:generated 14 files / 12 schemas 无漂移、\nnode --test contracts/test/*.test.mjs 400/400、contract-notification-webhook 夹具 39/39 失败 0。\n本次不回绑任何 reports/。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/0b3dab61a1072d682d5a921e00025f46431c95d3","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:13:04-07:00","added":[],"removed":[],"modified":["contracts/SOURCE.md","contracts/src/domain/notification-webhook/fixture-evaluator.ts","contracts/test/fixtures/notification-webhook.fixtures.json","contracts/test/notification-webhook-domain.test.mjs","docs/domain/notification-effect-blueprint.md"]},{"id":"0b30631d9c45ceff29558ddf821e6cb5a5c7cd00","message":"docs(治理): 夹具覆盖度的算法写进 CLAUDE.md,并把探针从 /tmp 落进仓里\n\n今天九个契约包的门禁空白有一半是靠一个临时脚本找出来的,光看用例名一个也发现不了。方法写进文档\n而脚本留在 /tmp,下次没人跑得起来——所以一并落仓。\n\ngovernance/fixture-coverage.mjs(诊断,不是门禁:不写报告、不进 pnpm check):\n由 governance/fixtures/*.suite.json 驱动,新增套件自动纳入,不写死域名单。拿每个夹具用例的真实\npayload 逐个叶子字段换脏值,走门禁自己的 evaluateFixturePayload 入口,收集规则实际吐出的原因码,\n分三档——已钉(被某条用例的 reasons 声明过,守卫回退必红)/ 仅单测 / 都没有(守卫删掉任何一道都\n不会红)。--list 连「仅单测」一并列出,--json 出机器格式。\n\n三条读法都写进了脚本抬头与 CLAUDE.md:散文式校验消息不是稳定码,单列「非码」不计缺口;插值原因码\n词汇表无界,按前缀过滤;「仅单测」不等于缺陷——§5 迁入时的设计就是夹具只固定失败关闭一侧。\n\n落仓后第一次全量扫描立刻有新发现:九个契约包「都没有」全为 0(今天收口的结果),但运行时模块侧\n还有 4 条——module-permission 的 ACTION_REQUIRED / RESOURCE_REQUIRED / RESOURCE_ID_REQUIRED、\nmodule-audit 的 AUDIT_COMMIT_MODE_INVALID。已在 CLAUDE.md 记为尚未处理;那是 runtime/ 的纪律范围,\n本次不动。\n\n证据:在仅含本提交改动的导出树上跑通(模块未构建时按 unavailable 跳过,与 check:fixtures 同因)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/0b30631d9c45ceff29558ddf821e6cb5a5c7cd00","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:12:09-07:00","added":["governance/fixture-coverage.mjs"],"removed":[],"modified":["CLAUDE.md"]}],"total_commits":0,"head_commit":{"id":"45a6bd523973c97e88f31faa12604773150cec87","message":"docs(发布): 当场记录 rc.4 列车——三包已发,tag 这趟补上,并写清验证的真实范围\n\nrc.4 三包(contracts / governance / client-fact)2026-09-18 经本地旁路发出,源 557a95c,\nRegistry 实查确认在架、三包均 registry integrity verified。与前两趟不同,本次是当场记录。\n\n这趟补上了 CL-5 要求的 tag packages-v1.0.0-rc.4——rc.2 / rc.3 都漏了这一步,\nprovenance.tag 因此第一次不是 null。构建与发布在 .worktrees/rc4-release 的 detached\n干净检出里做,所以 worktreeDirty:false 是真的(主检出当时有并行会话在改 contracts)。\n\n记录里写清了两件容易被夸大的事:\n\n1. rc.4 远不止触发它的那两条 clients 规则。自 rc.3 源 036a308 起,contracts 147 文件 /\n 51 提交、governance 61 文件 / 48 提交随车发出,包含九域规则入参体检那一整轮。\n2. 发布前只跑了 check:fixtures(17 套件 394 例)与 check:module-imports(396 文件),\n 退出码均 0;**完整 pnpm check 是发布后补跑的**(真实退出码 0,check:evidence partial:\n 36 新鲜 / 5 过期,过期项均属其他任务 WIP)。按 G-12 边界,这些都不构成阶段门证据。\n\nCLAUDE.md 的 contracts 条目同步推到 rc.4,并顺手修掉一处自相矛盾:该条前半句还写着\nrc.2 源 eb3cf2c,而后半句已说明按 provenance 订正为 6d3900a。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/45a6bd523973c97e88f31faa12604773150cec87","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:17:05-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/G-12本地旁路发布记录-2026-09-13.md"]},"repository":{"id":116,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"enterprise-platform","full_name":"luoanwu/enterprise-platform","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":20483,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/enterprise-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":44,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-11T07:33:25+08:00","updated_at":"2026-09-19T07:11:57+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
3
|
10
|
0
|
1789773540
|
0
|
1789773436
|
1789773540
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23813
|
test: verify the content brief default candidates test: verify the content brief default candidates round...
|
57
|
5
|
governance.yml
|
180
|
5
|
0
|
refs/heads/main
|
dddfe03474a30345361b3509f30a0843724ffb47
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"eb9f043fa4c56dae0d634c3b9de9b7de82514b24","after":"dddfe03474a30345361b3509f30a0843724ffb47","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/eb9f043fa4c56dae0d634c3b9de9b7de82514b24...dddfe03474a30345361b3509f30a0843724ffb47","commits":[{"id":"dddfe03474a30345361b3509f30a0843724ffb47","message":"test: verify the content brief default candidates round\n\nSeven heavy gates plus pnpm check pass on the isolated stack at source\nfingerprint 7b85b506; CLAUDE.md heavy rows re-marked accordingly.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/dddfe03474a30345361b3509f30a0843724ffb47","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-09T19:54:42-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-detail.brief-desktop.png","reports/content-detail.images-desktop.png","reports/content-detail.output-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.plans-desktop.png","reports/content-detail.review-desktop.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/director-workbench.mobile.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-creation-390.png","reports/image-creation-768.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-mobile-form.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-asset-dialog.mobile.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.first.png","reports/storyboard-frame-dialog.mobile.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1135.png","reports/template-making.1280.png","reports/template-making.1440.png","reports/template-making.390.png","reports/template-making.768.png","reports/template-preview.edit.png","reports/template-preview.templates.png","reports/template-save-ready.APPLICATION.png","reports/template-save-ready.GENERAL.png","reports/template-save-ready.SCENE.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-types.desktop.png","reports/template-types.mobile.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},{"id":"24566351feb01ed76b5a7a2a136acadceabb4397","message":"feat(content): propose brief default candidates after the purpose is chosen\n\nSelecting a creation purpose now submits one BRIEF content task (debounced,\nbrand required, existing idempotency/receipt chain). Both backends parse the\nmodel's JSON object through the shared contentBriefSuggestionSchema: only the\neleven proposable fields survive, enum-invalid values, blanks and fact fields\n(purpose, lockedFacts, references, music) are dropped, and an unusable answer\nis a 422. The candidate dialog lists current vs proposed per field; empty or\ndefault fields are pre-ticked and only ticked fields are written into a new\n\"采用简报候选\" revision.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/24566351feb01ed76b5a7a2a136acadceabb4397","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-09T19:54:41-07:00","added":["docs/governance/log/2026-09-09-content-brief-candidates.md","reports/content-brief-candidates-2026-09-09/README.md"],"removed":[],"modified":["apps/api-fastify/src/modules/creative-project/content.service.ts","apps/api-fastify/test/content-workbench.integration.test.ts","apps/api-nestjs/src/creative-project/content.service.ts","apps/api-nestjs/test/content-workbench.integration.test.ts","apps/web/src/components/material-factory/ContentStudio.tsx","apps/web/src/components/material-factory/content-studio.module.css","docs/product/content-creation-workbench.md","packages/contracts/src/content.test.ts","packages/contracts/src/content.ts"]}],"total_commits":0,"head_commit":{"id":"dddfe03474a30345361b3509f30a0843724ffb47","message":"test: verify the content brief default candidates round\n\nSeven heavy gates plus pnpm check pass on the isolated stack at source\nfingerprint 7b85b506; CLAUDE.md heavy rows re-marked accordingly.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/dddfe03474a30345361b3509f30a0843724ffb47","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-09T19:54:42-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-detail.brief-desktop.png","reports/content-detail.images-desktop.png","reports/content-detail.output-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.plans-desktop.png","reports/content-detail.review-desktop.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/director-workbench.mobile.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-creation-390.png","reports/image-creation-768.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-mobile-form.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-asset-dialog.mobile.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.first.png","reports/storyboard-frame-dialog.mobile.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1135.png","reports/template-making.1280.png","reports/template-making.1440.png","reports/template-making.390.png","reports/template-making.768.png","reports/template-preview.edit.png","reports/template-preview.templates.png","reports/template-save-ready.APPLICATION.png","reports/template-save-ready.GENERAL.png","reports/template-save-ready.SCENE.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-types.desktop.png","reports/template-types.mobile.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},"repository":{"id":57,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":827670,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T09:32:47+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1789008925
|
1789008967
|
0
|
1789008924
|
1789008967
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23514
|
feat(studio): connect script storyboard and video feat(studio): connect script storyboard and video workflow...
|
57
|
5
|
governance.yml
|
1
|
5
|
0
|
refs/heads/main
|
e759f5e4509e93cc4968259cc6d6a64bc73c09f1
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"eb6483fa7aadc8d2d4e715274c2519f67005e135","after":"e759f5e4509e93cc4968259cc6d6a64bc73c09f1","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/eb6483fa7aadc8d2d4e715274c2519f67005e135...e759f5e4509e93cc4968259cc6d6a64bc73c09f1","commits":[{"id":"e759f5e4509e93cc4968259cc6d6a64bc73c09f1","message":"feat(studio): connect script storyboard and video workflow\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/e759f5e4509e93cc4968259cc6d6a64bc73c09f1","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-24T01:26:47-07:00","added":["apps/web/src/components/material-factory/PipelineFlow.tsx","packages/contracts/src/script-to-storyboard.test.ts","packages/contracts/src/script-to-storyboard.ts"],"removed":[],"modified":[".claude/launch.json","CLAUDE.md","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/test/material-inference.acceptance.test.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/test/material-inference.acceptance.test.ts","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/components/material-factory/VideoStudio.tsx","apps/web/src/components/material-factory/constants.ts","apps/web/src/components/material-factory/storyboard-director.ts","apps/web/src/store/useFactoryStore.ts","apps/web/tsconfig.json","packages/contracts/src/index.ts","packages/contracts/src/material-brand.test.ts","packages/contracts/src/material.ts","packages/contracts/src/storyboard.test.ts","packages/contracts/src/storyboard.ts","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-naming.mjs","services/model-sidecar/main.py"]},{"id":"553239d8af8a5f7a56988fa913deaecd5f154121","message":"feat(studio): complete live Bailian production workflow\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/553239d8af8a5f7a56988fa913deaecd5f154121","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-23T19:25:55-07:00","added":["apps/api-fastify/prisma/migrations/20260823220000_script_scenario_modes/migration.sql","apps/api-fastify/prisma/migrations/20260823230000_storyboard_video/migration.sql","apps/api-nestjs/prisma/migrations/20260823220000_script_scenario_modes/migration.sql","apps/api-nestjs/prisma/migrations/20260823230000_storyboard_video/migration.sql","apps/web/src/components/material-factory/VideoStudio.tsx","packages/contracts/src/script-scenario.test.ts","packages/contracts/src/script-sidecar.test.ts","packages/contracts/src/storyboard-video.test.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/src/modules/material-factory/material-sidecar.client.ts","apps/api-fastify/src/modules/material-factory/shooting-script.service.ts","apps/api-fastify/src/routes/material-factory.ts","apps/api-fastify/test/material-inference.acceptance.test.ts","apps/api-fastify/test/material-script.acceptance.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/material-factory/material-factory.controller.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/src/material-factory/shooting-script.service.ts","apps/api-nestjs/test/material-inference.acceptance.test.ts","apps/api-nestjs/test/material-script.acceptance.test.ts","apps/web/src/app/globals.css","apps/web/src/app/layout.tsx","apps/web/src/components/EventFeed.tsx","apps/web/src/components/RealtimeBar.tsx","apps/web/src/components/material-factory/BlockedResolutionPanel.tsx","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/DeliveryCenter.tsx","apps/web/src/components/material-factory/DemoExportModal.tsx","apps/web/src/components/material-factory/EditStudio.tsx","apps/web/src/components/material-factory/ExportModal.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/InpaintStudio.tsx","apps/web/src/components/material-factory/InstanceGallery.tsx","apps/web/src/components/material-factory/LandingGate.tsx","apps/web/src/components/material-factory/MasterCanvas.tsx","apps/web/src/components/material-factory/ModelConnectionsStudio.tsx","apps/web/src/components/material-factory/ModelOperationsDashboard.tsx","apps/web/src/components/material-factory/ProductionDetail.tsx","apps/web/src/components/material-factory/ReviewCenter.tsx","apps/web/src/components/material-factory/RoleConfirmPanel.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/ShotBoard.tsx","apps/web/src/components/material-factory/StillVersionBar.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/components/material-factory/TaskCenter.tsx","apps/web/src/components/material-factory/TemplateStudio.tsx","apps/web/src/components/material-factory/ui.tsx","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","apps/web/src/store/useFactoryStore.ts","packages/contracts/src/material.ts","packages/contracts/src/production.ts","packages/contracts/src/script.ts","packages/contracts/src/storyboard.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-inference-acceptance.mjs","scripts/check-script-acceptance.mjs","services/model-sidecar/main.py"]},{"id":"69d9525d1e38cdb9da1db02f2e25411d2bd4b891","message":"feat(models): route image generation through Bailian Wan 2.7 Pro\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/69d9525d1e38cdb9da1db02f2e25411d2bd4b891","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-23T17:25:44-07:00","added":[".github/workflows/governance.yml","docs/domain/module-boundary.md","reports/module-boundary.latest.json","scripts/check-module-boundary.mjs"],"removed":[],"modified":[".github/pull_request_template.md","CLAUDE.md","apps/api-fastify/.env.example","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/src/modules/material-factory/material-sidecar.client.ts","apps/api-fastify/src/modules/material-factory/model-connector.client.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/material-inference.acceptance.test.ts","apps/api-fastify/test/material-script.acceptance.test.ts","apps/api-fastify/test/model-connector.client.test.ts","apps/api-nestjs/.env.example","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/src/material-factory/material-sidecar.client.ts","apps/api-nestjs/src/material-factory/model-connector.client.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/material-inference.acceptance.test.ts","apps/api-nestjs/test/material-production-worker.integration.test.ts","apps/api-nestjs/test/material-script.acceptance.test.ts","apps/api-nestjs/test/model-connector.client.test.ts","apps/web/eslint.config.mjs","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/ModelConnectionsStudio.tsx","apps/web/src/components/material-factory/ProductionDetail.tsx","deploy/vm/.env.example","deploy/vm/docker-compose.yml","docs/product/controlled-ai-material-factory.md","package.json","packages/contracts/src/material-brand.test.ts","packages/contracts/src/material.test.ts","packages/contracts/src/material.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/validation-source.latest.json","scripts/check-inference-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs","services/model-sidecar/README.md","services/model-sidecar/main.py"]},{"id":"1bc728c529ae21297108ec097f939ce72e77c3c5","message":"feat(storyboard): persist immutable project history\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/1bc728c529ae21297108ec097f939ce72e77c3c5","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-23T11:49:04-07:00","added":["apps/api-fastify/prisma/migrations/20260823212000_add_storyboard_version_snapshots/migration.sql","apps/api-nestjs/prisma/migrations/20260823212000_add_storyboard_version_snapshots/migration.sql"],"removed":[],"modified":[".gitignore","CLAUDE.md","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/web/next.config.ts","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs"]},{"id":"753d41978517db6031c10afef2a9a1897f6f7481","message":"fix(models): restore OCR inference and reject LFS pointers\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/753d41978517db6031c10afef2a9a1897f6f7481","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-23T11:35:43-07:00","added":[],"removed":[],"modified":["CLAUDE.md","models/material-factory/manifest.json","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-models.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json","scripts/download-material-models.mjs"]}],"total_commits":0,"head_commit":{"id":"e759f5e4509e93cc4968259cc6d6a64bc73c09f1","message":"feat(studio): connect script storyboard and video workflow\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/e759f5e4509e93cc4968259cc6d6a64bc73c09f1","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-24T01:26:47-07:00","added":["apps/web/src/components/material-factory/PipelineFlow.tsx","packages/contracts/src/script-to-storyboard.test.ts","packages/contracts/src/script-to-storyboard.ts"],"removed":[],"modified":[".claude/launch.json","CLAUDE.md","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/test/material-inference.acceptance.test.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/test/material-inference.acceptance.test.ts","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/components/material-factory/VideoStudio.tsx","apps/web/src/components/material-factory/constants.ts","apps/web/src/components/material-factory/storyboard-director.ts","apps/web/src/store/useFactoryStore.ts","apps/web/tsconfig.json","packages/contracts/src/index.ts","packages/contracts/src/material-brand.test.ts","packages/contracts/src/material.ts","packages/contracts/src/storyboard.test.ts","packages/contracts/src/storyboard.ts","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-naming.mjs","services/model-sidecar/main.py"]},"repository":{"id":57,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":8098,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":5,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-08-18T16:58:47+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1787560925
|
1787561016
|
0
|
1787560925
|
1787561016
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23939
|
docs(ci): correct the claim that switching channel docs(ci): correct the claim that switching channels needs a DEC revision...
|
116
|
5
|
platform.yml
|
53
|
5
|
0
|
refs/heads/main
|
6d3900abae6fc251b39e4bebcaa74190e25774bb
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"eb3cf2c38148bfc0dac9ab1e8cdd5733ae8aa13f","after":"6d3900abae6fc251b39e4bebcaa74190e25774bb","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/eb3cf2c38148bfc0dac9ab1e8cdd5733ae8aa13f...6d3900abae6fc251b39e4bebcaa74190e25774bb","commits":[{"id":"6d3900abae6fc251b39e4bebcaa74190e25774bb","message":"docs(ci): correct the claim that switching channels needs a DEC revision\n\nThe README (and the plan) said changing the release gate to accept Gitea\nevidence \"extends what DEC-031 accepts as CI evidence, needs a CHG\". That\nis wrong. DEC-031's approval record, its accompanying clauses, DEC-010's\ncondition and design §13 all state capabilities -- clean tag, CI green,\nthree-tier evidence on one SHA, required checks, enforcement over admins,\nCODEOWNERS, linear history, runner=ci -- and never name a CI vendor. The\nonly GitHub mention is §23 listing .github/ under SRE ownership.\n\nSo switching the primary channel is an implementation and repository\nconfiguration change plus a platform-owner call on which channel is\nprimary; no DEC revision, no CHG. Evidence, three options, a file-level\nchange list (CI-1..6) and four items that must be verified first (V-2:\nwhether Gitea can enforce protection over admins) are in\n基础设施/docs/CI验证通道口径裁决材料-2026-09-13.md.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/6d3900abae6fc251b39e4bebcaa74190e25774bb","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-13T21:42:24-07:00","added":[],"removed":[],"modified":["stack/ci/act-runner/README.md"]}],"total_commits":0,"head_commit":{"id":"6d3900abae6fc251b39e4bebcaa74190e25774bb","message":"docs(ci): correct the claim that switching channels needs a DEC revision\n\nThe README (and the plan) said changing the release gate to accept Gitea\nevidence \"extends what DEC-031 accepts as CI evidence, needs a CHG\". That\nis wrong. DEC-031's approval record, its accompanying clauses, DEC-010's\ncondition and design §13 all state capabilities -- clean tag, CI green,\nthree-tier evidence on one SHA, required checks, enforcement over admins,\nCODEOWNERS, linear history, runner=ci -- and never name a CI vendor. The\nonly GitHub mention is §23 listing .github/ under SRE ownership.\n\nSo switching the primary channel is an implementation and repository\nconfiguration change plus a platform-owner call on which channel is\nprimary; no DEC revision, no CHG. Evidence, three options, a file-level\nchange list (CI-1..6) and four items that must be verified first (V-2:\nwhether Gitea can enforce protection over admins) are in\n基础设施/docs/CI验证通道口径裁决材料-2026-09-13.md.\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/6d3900abae6fc251b39e4bebcaa74190e25774bb","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-13T21:42:24-07:00","added":[],"removed":[],"modified":["stack/ci/act-runner/README.md"]},"repository":{"id":116,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"enterprise-platform","full_name":"luoanwu/enterprise-platform","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":13154,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/enterprise-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":30,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-11T07:33:25+08:00","updated_at":"2026-09-14T12:31:55+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
30
|
1789360955
|
1789360993
|
0
|
1789360955
|
1789361027
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24190
|
docs(部署,runbook): 记录补 §16——D-13 从推断变成实测、订正并复验,另登记 docs(部署,runbook): 记录补 §16——D-13 从推断变成实测、订正并复验,另登记 D-15...
|
116
|
5
|
platform.yml
|
156
|
5
|
0
|
refs/heads/main
|
21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"eb275b10c470d5db1907473c40e6c831d1e7a1c6","after":"21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/eb275b10c470d5db1907473c40e6c831d1e7a1c6...21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f","commits":[{"id":"21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f","message":"docs(部署,runbook): 记录补 §16——D-13 从推断变成实测、订正并复验,另登记 D-15\n\nD-13 此前只是读代码推断(判定链对不上)。本轮先做成可证伪的实测:用 dev 的 HS256 密钥\n手工签发三个只差 sub 的 token 打 GET /api/platform/ops/definitions——\n\n sub = users.subject(IdP 令牌的实际形态) 订正前 403 OPS_FORBIDDEN → 订正后 200\n sub = users.id(白名单原值) 订正前 200 → 订正后 403\n 同上但不带 platform:ops(对照) 两次都是 403 OPS_SCOPE_REQUIRED\n\n第三行是对照组,证明守卫顺序是 scope 在前、白名单在后,前两行的差异确实出在白名单这一关。\nsub 的实际形态取自 §14 那次真实登录的令牌,不是猜的。\n\n订正落在仓外 .secrets(PLATFORM_OPS_ADMIN_SUBJECTS 由 users.id 改为 users.subject,\n并在键上方留三行注释说明判定链),force-recreate 重建 runtime 容器后复验,健康探针 200。\nD-13 闭环。\n\n同时订正一个我自己此前过于保守的判断:原以为「必须等 canonical 租户分支合并后与 D-4 一并验」,\n实际 D-4 挡的是执行那一步,定义面的读取不受影响,守卫这一层现在就能独立验证。\n\n新登记 D-15:当前没有任何 OIDC 客户端的 allowedScopes 含 platform:ops(三个客户端全是\nopenid profile [idp:manage]),真实 IdP 令牌因此卡在 scope 关——不是白名单、也不是 D-4。\n给客户端放这个 scope 等于把平台运维权发给浏览器里的公开客户端,属安全裁决,留 Owner。\n\nrunbook §2.1 的警告块同步更新:那处现已订正,并指向 §16 与 D-15。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:58:15-07:00","added":[],"removed":[],"modified":["docs/dev部署运行重做记录-2026-09-18.md","docs/runbook.md"]},{"id":"f28f8f9935231e083402f5fa47269576a96eb38d","message":"test(runtime): credential 的租约 planner 整支不在门禁上——补 lease-plan / lease-refresh,10 处未接线的第 3 处\n\n结构比对报出 LocalMachineCredentialLeasePlanner(308 行、三个公开方法)整支未接线:本模块此前只有\nlease-request 一条规则,走的是 preflight 纯规则;planner 的策略快照准入、主体登记、受众 / Scope\nallowlist、TTL 上限、授权版本水位与热更一条都不在门禁上。判定逻辑一行未改。\n\n判定按 kind:MachineCredentialLeaseResult 的 BLOCKED 携带 blockers 而非 reasons。\n\n接上规则后照例先变差:冒出 6 条「夹具与单测都没有」(归属三件套、授权版本、请求时钟,以及 refresh\n侧的版本 / 修订 / 主体策略),逐条钉完回到 0。\n\n覆盖:夹具 10 → 27 例(正 4 / 反 23),规则 1 → 3;三档(都没有 / 仅单测 / 未接线)均为 0。\n新钉住的策略面包括 AUDIENCE_NOT_ALLOWED / SCOPE_NOT_ALLOWED / TTL_OUT_OF_POLICY / STALE_AUTHORIZATION\n/ MACHINE_PRINCIPAL_NOT_REGISTERED / AI_DELEGATION_REQUIRED——凭据签发的准入闸门此前在门禁上一条没有。\n\n证据:pnpm --dir runtime --filter @juhai/module-credential test 46/46、该套件夹具 27/27 失败 0、\nfixture-coverage 三档全 0。本次不回绑任何 reports/。\n\n进度:10 处未接线已收 3 处(跨域流程 refresh、scope、credential)。余 7 处在 ai-gateway 2 /\npermission 3 / audit / fact 各 1。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/f28f8f9935231e083402f5fa47269576a96eb38d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:57:26-07:00","added":[],"removed":[],"modified":["runtime/modules/credential/src/domain/fixture-evaluator.ts","runtime/modules/credential/test/fixtures/credential.fixtures.json"]},{"id":"7eadfb1a5af353077f1a32eef51389f4a6f7fbfa","message":"chore(release): 三包推到 1.0.0-rc.6——check:fact-pii 这次真的随包出去\n\nrc.5 发的时候 check-fact-pii.mjs 还不在 governance 包的 files 里,消费者拿到的 rc.5 不含它。\neb275b1 把它与 fact-pii-rules.json 加进 files、在 CLI 注册 check:fact-pii 子命令,\n并补上了让它在消费者仓真跑得起来的两处(--dir 指定 Fact schema 目录、判据回落到包内自带)。\n这趟车就是为了把那些送出去。\n\n自 rc.5 源 cf05344 起的随车内容:\n governance 7 文件 / 2 提交(fact-pii 进包 + 消费者可用性)\n contracts 3 文件 / 1 提交\n runtime/clients/fact 0 文件 / 0 提交 —— **完全没有变化,纯跟车**(同 rc.5)\n\n通道:本地旁路(G-12 第五次)。2026-09-18 实测 GitHub Actions 仍停在 run 35404565689\n(failure,计费),没有新 run;GitHub 镜像落后 35 条。正道仍不可满足。\n\n按 CL-5 打 tag packages-v1.0.0-rc.6(连续第三趟)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/7eadfb1a5af353077f1a32eef51389f4a6f7fbfa","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:56:38-07:00","added":[],"removed":[],"modified":["contracts/package.json","governance/package.json","runtime/clients/fact/package.json"]},{"id":"a2a86a7161102dba3d3ef227b89545ea65612273","message":"test(runtime): scope 的 410 行 planner 整支不在门禁上——补 plan / refresh 两条规则,10 处未接线的第 2 处\n\n结构比对报出 LocalScopeResolutionPlanner(三个公开方法)整支未接线:本模块此前只有 snapshot 一条规则,\nplanner 的请求体检、应用登记、目录版本、路由匹配与热更一条都不在门禁上。判定逻辑一行未改。\n\n判定按 kind 而不是 `\"reasons\" in`:ScopeResolutionPlanResult 的 BLOCKED 携带的是 blockers,\n按字段存在与否判会被当成放行——注册中心那次就是这么漏的,这里一开始就避开。\n\n接上规则后覆盖度先变差,同样是预期的:plan / refresh 两面第一次被变异探针走到,冒出 15 条\n「夹具与单测都没有」(十条请求字段守卫 + 路由未登记 + refresh 侧四条),逐条钉完回到 0。\n\n覆盖:夹具 8 → 35 例(正 4 / 反 31),规则 1 → 3;该套件三档(都没有 / 仅单测 / 未接线)均为 0。\n模块夹具与 test/negative/*.fixtures.test.ts 同源(it.each 直接遍历夹具文件),单测随夹具自动同步。\n\n证据:pnpm --dir runtime --filter @juhai/module-scope test 53/53、typecheck 绿、\n该套件夹具 35/35 失败 0、fixture-coverage 三档全 0。本次不回绑任何 reports/。\n\n进度:10 处未接线已收 2 处(跨域流程 refresh、scope)。余 8 处在 ai-gateway 2 / permission 3 /\naudit / credential / fact 各 1,planner 308—734 行,按模块逐个收。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/a2a86a7161102dba3d3ef227b89545ea65612273","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:56:05-07:00","added":[],"removed":[],"modified":["runtime/modules/scope/src/domain/fixture-evaluator.ts","runtime/modules/scope/test/fixtures/scope.fixtures.json"]}],"total_commits":0,"head_commit":{"id":"21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f","message":"docs(部署,runbook): 记录补 §16——D-13 从推断变成实测、订正并复验,另登记 D-15\n\nD-13 此前只是读代码推断(判定链对不上)。本轮先做成可证伪的实测:用 dev 的 HS256 密钥\n手工签发三个只差 sub 的 token 打 GET /api/platform/ops/definitions——\n\n sub = users.subject(IdP 令牌的实际形态) 订正前 403 OPS_FORBIDDEN → 订正后 200\n sub = users.id(白名单原值) 订正前 200 → 订正后 403\n 同上但不带 platform:ops(对照) 两次都是 403 OPS_SCOPE_REQUIRED\n\n第三行是对照组,证明守卫顺序是 scope 在前、白名单在后,前两行的差异确实出在白名单这一关。\nsub 的实际形态取自 §14 那次真实登录的令牌,不是猜的。\n\n订正落在仓外 .secrets(PLATFORM_OPS_ADMIN_SUBJECTS 由 users.id 改为 users.subject,\n并在键上方留三行注释说明判定链),force-recreate 重建 runtime 容器后复验,健康探针 200。\nD-13 闭环。\n\n同时订正一个我自己此前过于保守的判断:原以为「必须等 canonical 租户分支合并后与 D-4 一并验」,\n实际 D-4 挡的是执行那一步,定义面的读取不受影响,守卫这一层现在就能独立验证。\n\n新登记 D-15:当前没有任何 OIDC 客户端的 allowedScopes 含 platform:ops(三个客户端全是\nopenid profile [idp:manage]),真实 IdP 令牌因此卡在 scope 关——不是白名单、也不是 D-4。\n给客户端放这个 scope 等于把平台运维权发给浏览器里的公开客户端,属安全裁决,留 Owner。\n\nrunbook §2.1 的警告块同步更新:那处现已订正,并指向 §16 与 D-15。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:58:15-07:00","added":[],"removed":[],"modified":["docs/dev部署运行重做记录-2026-09-18.md","docs/runbook.md"]},"repository":{"id":116,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"enterprise-platform","full_name":"luoanwu/enterprise-platform","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":21469,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/enterprise-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":44,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-11T07:33:25+08:00","updated_at":"2026-09-19T07:55:10+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
30
|
1789775900
|
1789775940
|
0
|
1789775899
|
1789775969
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23758
|
fix(web): remove model admin shortcut from image c fix(web): remove model admin shortcut from image creation...
|
57
|
5
|
governance.yml
|
128
|
5
|
0
|
refs/heads/main
|
86d3d4d1381714d7faed2fc54bf45493f73eb0b1
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"eafae214ceae1fdb126697d5110baf2313467eea","after":"86d3d4d1381714d7faed2fc54bf45493f73eb0b1","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/eafae214ceae1fdb126697d5110baf2313467eea...86d3d4d1381714d7faed2fc54bf45493f73eb0b1","commits":[{"id":"86d3d4d1381714d7faed2fc54bf45493f73eb0b1","message":"fix(web): remove model admin shortcut from image creation\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/86d3d4d1381714d7faed2fc54bf45493f73eb0b1","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T22:15:40-07:00","added":["docs/governance/log/2026-09-08-create-model-link.md","reports/create-model-link-2026-09-08/README.md","reports/create-model-link-2026-09-08/summary.json"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/CreateStudio.tsx","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"86d3d4d1381714d7faed2fc54bf45493f73eb0b1","message":"fix(web): remove model admin shortcut from image creation\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/86d3d4d1381714d7faed2fc54bf45493f73eb0b1","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T22:15:40-07:00","added":["docs/governance/log/2026-09-08-create-model-link.md","reports/create-model-link-2026-09-08/README.md","reports/create-model-link-2026-09-08/summary.json"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/CreateStudio.tsx","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":57,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":769512,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T13:12:45+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788930960
|
1788931000
|
0
|
1788930958
|
1788931000
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23473
|
接入阿里模型
|
51
|
5
|
ci.yml
|
11
|
8
|
0
|
refs/heads/main
|
d230fd6dfb8fdba731ca1356263d1ec584d734be
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ead57a81e98d7f55797e6963b61e4847d9d9a96d","after":"d230fd6dfb8fdba731ca1356263d1ec584d734be","compare_url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/compare/ead57a81e98d7f55797e6963b61e4847d9d9a96d...d230fd6dfb8fdba731ca1356263d1ec584d734be","commits":[{"id":"d230fd6dfb8fdba731ca1356263d1ec584d734be","message":"接入阿里模型\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/d230fd6dfb8fdba731ca1356263d1ec584d734be","author":{"name":"chenjunfeng","email":"developer.jeff.c@gmail.com","username":""},"committer":{"name":"chenjunfeng","email":"developer.jeff.c@gmail.com","username":""},"verification":null,"timestamp":"2026-07-31T17:31:49+08:00","added":[],"removed":["团购本地生活AI运营App/nginx.conf"],"modified":["COLIMA.md","docker-compose.colima.yml","scripts/colima-start.sh","团购本地生活AI运营App/Dockerfile","团购本地生活AI运营App/WEB.md","团购本地生活AI运营App/docker-entrypoint.d/40-yggdrasil-runtime-config.sh"]}],"total_commits":0,"head_commit":{"id":"d230fd6dfb8fdba731ca1356263d1ec584d734be","message":"接入阿里模型\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/d230fd6dfb8fdba731ca1356263d1ec584d734be","author":{"name":"chenjunfeng","email":"developer.jeff.c@gmail.com","username":""},"committer":{"name":"chenjunfeng","email":"developer.jeff.c@gmail.com","username":""},"verification":null,"timestamp":"2026-07-31T17:31:49+08:00","added":[],"removed":["团购本地生活AI运营App/nginx.conf"],"modified":["COLIMA.md","docker-compose.colima.yml","scripts/colima-start.sh","团购本地生活AI运营App/Dockerfile","团购本地生活AI运营App/WEB.md","团购本地生活AI运营App/docker-entrypoint.d/40-yggdrasil-runtime-config.sh"]},"repository":{"id":51,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"yggdrasil-local-life-tools","full_name":"luoanwu/yggdrasil-local-life-tools","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":87491,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/yggdrasil-local-life-tools/languages","html_url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/yggdrasil-local-life-tools","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/yggdrasil-local-life-tools.git","clone_url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-02T16:02:07+08:00","updated_at":"2026-07-31T16:21:46+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":8,"login":"chenjunfeng","login_name":"","source_id":0,"full_name":"","email":"8+chenjunfeng@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/2c6398f22eba2ea6d8f403921eea0967","html_url":"https://gitea.g-hi.com/chenjunfeng","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-03-09T13:22:40+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"chenjunfeng"},"sender":{"id":8,"login":"chenjunfeng","login_name":"","source_id":0,"full_name":"","email":"8+chenjunfeng@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/2c6398f22eba2ea6d8f403921eea0967","html_url":"https://gitea.g-hi.com/chenjunfeng","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-03-09T13:22:40+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"chenjunfeng"}}...
|
push
|
2
|
8
|
1785490315
|
1785490466
|
0
|
1785490315
|
1785490466
|
group: ci-${{ github.ref }}
cancel-in-progress: group: ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
ci-refs/heads/main
|
1
|
Edit
Delete
|
|
24098
|
chore(reports): tenant.ts 拆分第一步的八份静态门禁证据 回绑 @ 53be chore(reports): tenant.ts 拆分第一步的八份静态门禁证据 回绑 @ 53be2c3...
|
76
|
5
|
governance.yml
|
56
|
5
|
0
|
refs/heads/main
|
614681e6e78d0385bbf043ef964bd444d8e5958b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ea965ed902a9807d07d7d89fc173668804c6294c","after":"614681e6e78d0385bbf043ef964bd444d8e5958b","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/ea965ed902a9807d07d7d89fc173668804c6294c...614681e6e78d0385bbf043ef964bd444d8e5958b","commits":[{"id":"614681e6e78d0385bbf043ef964bd444d8e5958b","message":"chore(reports): tenant.ts 拆分第一步的八份静态门禁证据 回绑 @ 53be2c3\n\n八份全部 clean 绑定(worktreeDirty:false):naming / schema-sync / validation-source /\ncontract-consumers / dual-backend-parity / kernel-boundaries / kernel-packages 七绿,\nkernel-admission 仍是引入时那 8 处(K3 一处 + K4 七处),与拆分前逐条一致——\n本次未引入新红,也未消除旧红。\n\nkernel-admission 的 K1 在重签前如实报出本次变更:task.ts / outcome.ts 各新增、\ntenant.ts 消失 21 个(17 个降私有 + 4 个迁出)。kernel.exports.lock.json 已随实现提交\n重签为 762 个导出。\n\n工作区内三份 reports/ui-*.latest.json 的改动早于本批次,未提交也未还原。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/614681e6e78d0385bbf043ef964bd444d8e5958b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T01:00:33-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-packages.latest.json","reports/naming.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json"]},{"id":"53be2c3dd5e52e0392225f359296ef250447bc56","message":"refactor(contracts): tenant.ts 拆分第一步——work 域判定迁出、17 个零引用导出降私有\n\ntenant.ts 与框架 @juhai/kernel 的同名文件共有导出 0 个:它不是「改过的内核」,是绕过\n内核另写的一份,1075 行 / 65 导出里混着四类东西(租户策略、JWT 验签、自建权限、\nwork 域业务判定)。本次只做两件行为中性的事,不改任何实现。\n\n一、work 域判定迁出(不满足 kernel.boundaries.json 的 CORE 准入证据 crossProductRequired)\n\n requiredPermissionForTaskEvent / canApproveTask / canTransitionTask → task.ts\n canResolveOutcome → outcome.ts\n\n「哪些任务事件是特权事件」只对本 OS 的 work 域成立,不是跨产品必需的内核契约。\n角色与权限的定义仍留在 tenant.ts,后续随自建权限一并迁往 authorization.ts。\n\n二、17 个全仓零引用的导出降为模块内私有\n\n RsaSha256Verify verifyJwtRs256 JwksKeyStoreDeps browserJwtIdentitySchema\n BrowserJwtIdentity PermissionOverrideLike PermissionAuditEventData RoleAuditEventData\n TENANT_AUTH_STARTUP_MODES TenantAuthStartupMode TenantAuthStartupDecision\n TenantAuthEnvironment TenantAuthInput TenantAuthPosture RealtimeAuthExpiryDecision\n TenantAuthOptions AuditActorBinding\n\n前五个与 RsaSha256Verify / verifyJwtRs256 是 resolveTenantAuth 的内部实现,后端注入的是\nnode:crypto 的 createHmac / createVerify,从不按名字引用这些类型。\nPermissionAuditEventData / RoleAuditEventData 模块内也不使用,是纯死代码;本次只降可见性,\n删除留给后续。\n\ntenant.ts 65 → 44 导出。应用侧零改动——都经 @repo/contracts 根 barrel 导入,模块间搬移\n不可见;只有 contracts.test.ts 的直接 ./tenant 导入需要切分(保留 21、迁出 4)。\n\n验证:@repo/contracts 24 文件 312/312(与变更前基线逐个一致,行为中性);typecheck 13/13;\ncheck:dual-backend / naming / schema / validation / contract-consumers / kernel-boundaries 全绿。\ncheck-dual-backend-parity.mjs 对 tenant.ts 有 5 处内容位置断言(C51/C52/C73/C181),本次\n涉及的标识符全部仍在该文件内,故未触发;C 组迁往 authorization.ts 时这 5 处必须同步改路径。\n\n顺带一处发现:check:kernel-packages 对本次 21 个符号的公开面收缩完全无感——它的 apiDigest\n只覆盖导出子路径,不覆盖符号集合。真正抓到本次变更的是 check:kernel-admission 的 K1\n(task.ts/outcome.ts 3 处新增、tenant.ts 21 处消失)。kernel.exports.lock.json 随本提交重签\n779 → 762 个导出;重签是 K1「变更即复核」的设计意图,不是绕过。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/53be2c3dd5e52e0392225f359296ef250447bc56","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T00:59:59-07:00","added":[],"removed":[],"modified":["kernel.exports.lock.json","packages/contracts/src/contracts.test.ts","packages/contracts/src/outcome.ts","packages/contracts/src/task.ts","packages/contracts/src/tenant.ts"]}],"total_commits":0,"head_commit":{"id":"614681e6e78d0385bbf043ef964bd444d8e5958b","message":"chore(reports): tenant.ts 拆分第一步的八份静态门禁证据 回绑 @ 53be2c3\n\n八份全部 clean 绑定(worktreeDirty:false):naming / schema-sync / validation-source /\ncontract-consumers / dual-backend-parity / kernel-boundaries / kernel-packages 七绿,\nkernel-admission 仍是引入时那 8 处(K3 一处 + K4 七处),与拆分前逐条一致——\n本次未引入新红,也未消除旧红。\n\nkernel-admission 的 K1 在重签前如实报出本次变更:task.ts / outcome.ts 各新增、\ntenant.ts 消失 21 个(17 个降私有 + 4 个迁出)。kernel.exports.lock.json 已随实现提交\n重签为 762 个导出。\n\n工作区内三份 reports/ui-*.latest.json 的改动早于本批次,未提交也未还原。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/614681e6e78d0385bbf043ef964bd444d8e5958b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T01:00:33-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-packages.latest.json","reports/naming.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json"]},"repository":{"id":76,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"digital-employee-os","full_name":"luoanwu/digital-employee-os","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":85234,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/digital-employee-os/languages","html_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/digital-employee-os","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/digital-employee-os.git","clone_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os.git","original_url":"","website":"","stars_count":0,"forks_count":1,"watchers_count":1,"branch_count":3,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-08-20T14:46:28+08:00","updated_at":"2026-09-18T15:55:12+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
36
|
1789718533
|
1789718542
|
0
|
1789718531
|
1789718556
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
24099
|
chore(reports): tenant.ts 拆分第一步的八份静态门禁证据 回绑 @ 53be chore(reports): tenant.ts 拆分第一步的八份静态门禁证据 回绑 @ 53be2c3...
|
76
|
5
|
platform-governance.yml
|
57
|
5
|
0
|
refs/heads/main
|
614681e6e78d0385bbf043ef964bd444d8e5958b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ea965ed902a9807d07d7d89fc173668804c6294c","after":"614681e6e78d0385bbf043ef964bd444d8e5958b","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/ea965ed902a9807d07d7d89fc173668804c6294c...614681e6e78d0385bbf043ef964bd444d8e5958b","commits":[{"id":"614681e6e78d0385bbf043ef964bd444d8e5958b","message":"chore(reports): tenant.ts 拆分第一步的八份静态门禁证据 回绑 @ 53be2c3\n\n八份全部 clean 绑定(worktreeDirty:false):naming / schema-sync / validation-source /\ncontract-consumers / dual-backend-parity / kernel-boundaries / kernel-packages 七绿,\nkernel-admission 仍是引入时那 8 处(K3 一处 + K4 七处),与拆分前逐条一致——\n本次未引入新红,也未消除旧红。\n\nkernel-admission 的 K1 在重签前如实报出本次变更:task.ts / outcome.ts 各新增、\ntenant.ts 消失 21 个(17 个降私有 + 4 个迁出)。kernel.exports.lock.json 已随实现提交\n重签为 762 个导出。\n\n工作区内三份 reports/ui-*.latest.json 的改动早于本批次,未提交也未还原。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/614681e6e78d0385bbf043ef964bd444d8e5958b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T01:00:33-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-packages.latest.json","reports/naming.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json"]},{"id":"53be2c3dd5e52e0392225f359296ef250447bc56","message":"refactor(contracts): tenant.ts 拆分第一步——work 域判定迁出、17 个零引用导出降私有\n\ntenant.ts 与框架 @juhai/kernel 的同名文件共有导出 0 个:它不是「改过的内核」,是绕过\n内核另写的一份,1075 行 / 65 导出里混着四类东西(租户策略、JWT 验签、自建权限、\nwork 域业务判定)。本次只做两件行为中性的事,不改任何实现。\n\n一、work 域判定迁出(不满足 kernel.boundaries.json 的 CORE 准入证据 crossProductRequired)\n\n requiredPermissionForTaskEvent / canApproveTask / canTransitionTask → task.ts\n canResolveOutcome → outcome.ts\n\n「哪些任务事件是特权事件」只对本 OS 的 work 域成立,不是跨产品必需的内核契约。\n角色与权限的定义仍留在 tenant.ts,后续随自建权限一并迁往 authorization.ts。\n\n二、17 个全仓零引用的导出降为模块内私有\n\n RsaSha256Verify verifyJwtRs256 JwksKeyStoreDeps browserJwtIdentitySchema\n BrowserJwtIdentity PermissionOverrideLike PermissionAuditEventData RoleAuditEventData\n TENANT_AUTH_STARTUP_MODES TenantAuthStartupMode TenantAuthStartupDecision\n TenantAuthEnvironment TenantAuthInput TenantAuthPosture RealtimeAuthExpiryDecision\n TenantAuthOptions AuditActorBinding\n\n前五个与 RsaSha256Verify / verifyJwtRs256 是 resolveTenantAuth 的内部实现,后端注入的是\nnode:crypto 的 createHmac / createVerify,从不按名字引用这些类型。\nPermissionAuditEventData / RoleAuditEventData 模块内也不使用,是纯死代码;本次只降可见性,\n删除留给后续。\n\ntenant.ts 65 → 44 导出。应用侧零改动——都经 @repo/contracts 根 barrel 导入,模块间搬移\n不可见;只有 contracts.test.ts 的直接 ./tenant 导入需要切分(保留 21、迁出 4)。\n\n验证:@repo/contracts 24 文件 312/312(与变更前基线逐个一致,行为中性);typecheck 13/13;\ncheck:dual-backend / naming / schema / validation / contract-consumers / kernel-boundaries 全绿。\ncheck-dual-backend-parity.mjs 对 tenant.ts 有 5 处内容位置断言(C51/C52/C73/C181),本次\n涉及的标识符全部仍在该文件内,故未触发;C 组迁往 authorization.ts 时这 5 处必须同步改路径。\n\n顺带一处发现:check:kernel-packages 对本次 21 个符号的公开面收缩完全无感——它的 apiDigest\n只覆盖导出子路径,不覆盖符号集合。真正抓到本次变更的是 check:kernel-admission 的 K1\n(task.ts/outcome.ts 3 处新增、tenant.ts 21 处消失)。kernel.exports.lock.json 随本提交重签\n779 → 762 个导出;重签是 K1「变更即复核」的设计意图,不是绕过。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/53be2c3dd5e52e0392225f359296ef250447bc56","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T00:59:59-07:00","added":[],"removed":[],"modified":["kernel.exports.lock.json","packages/contracts/src/contracts.test.ts","packages/contracts/src/outcome.ts","packages/contracts/src/task.ts","packages/contracts/src/tenant.ts"]}],"total_commits":0,"head_commit":{"id":"614681e6e78d0385bbf043ef964bd444d8e5958b","message":"chore(reports): tenant.ts 拆分第一步的八份静态门禁证据 回绑 @ 53be2c3\n\n八份全部 clean 绑定(worktreeDirty:false):naming / schema-sync / validation-source /\ncontract-consumers / dual-backend-parity / kernel-boundaries / kernel-packages 七绿,\nkernel-admission 仍是引入时那 8 处(K3 一处 + K4 七处),与拆分前逐条一致——\n本次未引入新红,也未消除旧红。\n\nkernel-admission 的 K1 在重签前如实报出本次变更:task.ts / outcome.ts 各新增、\ntenant.ts 消失 21 个(17 个降私有 + 4 个迁出)。kernel.exports.lock.json 已随实现提交\n重签为 762 个导出。\n\n工作区内三份 reports/ui-*.latest.json 的改动早于本批次,未提交也未还原。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/614681e6e78d0385bbf043ef964bd444d8e5958b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T01:00:33-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-packages.latest.json","reports/naming.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json"]},"repository":{"id":76,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"digital-employee-os","full_name":"luoanwu/digital-employee-os","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":85234,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/digital-employee-os/languages","html_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/digital-employee-os","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/digital-employee-os.git","clone_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os.git","original_url":"","website":"","stars_count":0,"forks_count":1,"watchers_count":1,"branch_count":3,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-08-20T14:46:28+08:00","updated_at":"2026-09-18T15:55:12+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
8
|
1789718542
|
1789718551
|
0
|
1789718532
|
1789718557
|
|
|
0
|
Edit
Delete
|
|
23619
|
chore(reports): refresh clean static evidence
|
104
|
5
|
governance.yml
|
2
|
5
|
0
|
refs/heads/main
|
26967e84600a2a5cfb83b7a300e130e94a2122aa
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ea8167e33e2b6db49a9c694db5fbb4b6b84ad4b7","after":"26967e84600a2a5cfb83b7a300e130e94a2122aa","compare_url":"https://gitea.g-hi.com/luoanwu/cost-capacity/compare/ea8167e33e2b6db49a9c694db5fbb4b6b84ad4b7...26967e84600a2a5cfb83b7a300e130e94a2122aa","commits":[{"id":"26967e84600a2a5cfb83b7a300e130e94a2122aa","message":"chore(reports): refresh clean static evidence\n","url":"https://gitea.g-hi.com/luoanwu/cost-capacity/commit/26967e84600a2a5cfb83b7a300e130e94a2122aa","author":{"name":"hillao","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"hillao","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-09-02T17:34:56-07:00","added":[],"removed":[],"modified":["reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"f7774f14cbf2aff824abf765ec2c603eb3b59745","message":"chore(reports): record clean framework sync evidence\n","url":"https://gitea.g-hi.com/luoanwu/cost-capacity/commit/f7774f14cbf2aff824abf765ec2c603eb3b59745","author":{"name":"hillao","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"hillao","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-09-02T17:20:32-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/framework-migration.md","reports/baseline.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"723a8ed2ba0af8ecccecc2234a4d9e9ed590c4db","message":"chore(migration): record framework sync receipt\n","url":"https://gitea.g-hi.com/luoanwu/cost-capacity/commit/723a8ed2ba0af8ecccecc2234a4d9e9ed590c4db","author":{"name":"hillao","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"hillao","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-09-02T17:19:46-07:00","added":[],"removed":[],"modified":["docs/framework-migration.md","reports/framework-migration.latest.json"]},{"id":"c93402b1982dba146fe2db96906987db7f5521bf","message":"feat(framework): sync G15-B Redis occupancy guard and governance experience\n","url":"https://gitea.g-hi.com/luoanwu/cost-capacity/commit/c93402b1982dba146fe2db96906987db7f5521bf","author":{"name":"hillao","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"hillao","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-09-02T17:19:45-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/framework-migration.md","docs/governance-experience.md","reports/baseline.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-conformance-differential.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/lib/acceptance-base-guard.mjs"]},{"id":"3c367c2adc04600600109ae3882e8b44d895bc44","message":"chore(reports): refresh clean static evidence\n","url":"https://gitea.g-hi.com/luoanwu/cost-capacity/commit/3c367c2adc04600600109ae3882e8b44d895bc44","author":{"name":"hillao","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"hillao","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-09-02T01:30:38-07:00","added":[],"removed":[],"modified":["reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"26967e84600a2a5cfb83b7a300e130e94a2122aa","message":"chore(reports): refresh clean static evidence\n","url":"https://gitea.g-hi.com/luoanwu/cost-capacity/commit/26967e84600a2a5cfb83b7a300e130e94a2122aa","author":{"name":"hillao","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"hillao","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-09-02T17:34:56-07:00","added":[],"removed":[],"modified":["reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},"repository":{"id":104,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"cost-capacity","full_name":"luoanwu/cost-capacity","description":"","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":712,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/cost-capacity/languages","html_url":"https://gitea.g-hi.com/luoanwu/cost-capacity","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/cost-capacity","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/cost-capacity.git","clone_url":"https://gitea.g-hi.com/luoanwu/cost-capacity.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-01T21:58:09+08:00","updated_at":"2026-09-01T21:59:45+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
10
|
1788405910
|
1788406000
|
0
|
1788405497
|
1788407516
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23469
|
接入阿里模型
|
51
|
5
|
ci.yml
|
7
|
8
|
0
|
refs/heads/main
|
d2c80a998dd127b9cbf72d39436ca7248ffe98ae
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ea5ea97b4d7487a0cd01201fcf404ec4b1913321","after":"d2c80a998dd127b9cbf72d39436ca7248ffe98ae","compare_url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/compare/ea5ea97b4d7487a0cd01201fcf404ec4b1913321...d2c80a998dd127b9cbf72d39436ca7248ffe98ae","commits":[{"id":"d2c80a998dd127b9cbf72d39436ca7248ffe98ae","message":"接入阿里模型\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/d2c80a998dd127b9cbf72d39436ca7248ffe98ae","author":{"name":"chenjunfeng","email":"developer.jeff.c@gmail.com","username":""},"committer":{"name":"chenjunfeng","email":"developer.jeff.c@gmail.com","username":""},"verification":null,"timestamp":"2026-07-31T14:49:48+08:00","added":[],"removed":[],"modified":["团购本地生活AI运营App/app.jsx","团购本地生活AI运营App/index.html","团购本地生活AI运营App/screens-ai.jsx","团购本地生活AI运营App/scripts/test-static.mjs"]}],"total_commits":0,"head_commit":{"id":"d2c80a998dd127b9cbf72d39436ca7248ffe98ae","message":"接入阿里模型\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/d2c80a998dd127b9cbf72d39436ca7248ffe98ae","author":{"name":"chenjunfeng","email":"developer.jeff.c@gmail.com","username":""},"committer":{"name":"chenjunfeng","email":"developer.jeff.c@gmail.com","username":""},"verification":null,"timestamp":"2026-07-31T14:49:48+08:00","added":[],"removed":[],"modified":["团购本地生活AI运营App/app.jsx","团购本地生活AI运营App/index.html","团购本地生活AI运营App/screens-ai.jsx","团购本地生活AI运营App/scripts/test-static.mjs"]},"repository":{"id":51,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"yggdrasil-local-life-tools","full_name":"luoanwu/yggdrasil-local-life-tools","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":87296,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/yggdrasil-local-life-tools/languages","html_url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/yggdrasil-local-life-tools","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/yggdrasil-local-life-tools.git","clone_url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-02T16:02:07+08:00","updated_at":"2026-07-31T14:10:11+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":8,"login":"chenjunfeng","login_name":"","source_id":0,"full_name":"","email":"8+chenjunfeng@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/2c6398f22eba2ea6d8f403921eea0967","html_url":"https://gitea.g-hi.com/chenjunfeng","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-03-09T13:22:40+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"chenjunfeng"},"sender":{"id":8,"login":"chenjunfeng","login_name":"","source_id":0,"full_name":"","email":"8+chenjunfeng@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/2c6398f22eba2ea6d8f403921eea0967","html_url":"https://gitea.g-hi.com/chenjunfeng","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-03-09T13:22:40+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"chenjunfeng"}}...
|
push
|
2
|
8
|
1785480594
|
1785480692
|
0
|
1785480593
|
1785480692
|
group: ci-${{ github.ref }}
cancel-in-progress: group: ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
ci-refs/heads/main
|
1
|
Edit
Delete
|
|
24011
|
docs(平台): owner-matrix 增工作台维护者拟设行
|
116
|
5
|
platform.yml
|
80
|
5
|
0
|
refs/heads/main
|
26b9b2578237a047c841b32ca6b1633669b8ee10
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e9ee9c7634e301d18908a21ce30741b93de2fdac","after":"26b9b2578237a047c841b32ca6b1633669b8ee10","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/e9ee9c7634e301d18908a21ce30741b93de2fdac...26b9b2578237a047c841b32ca6b1633669b8ee10","commits":[{"id":"26b9b2578237a047c841b32ca6b1633669b8ee10","message":"docs(平台): owner-matrix 增工作台维护者拟设行\n\n对外交付设计 §2 声明维护责任沿用 owner-matrix,设计方案 §23 已增「工作台维护者」岗位,本表补一行:路径拟为 runtime/apps/workbench(本轮不改 CODEOWNERS),待其动作按对外交付设计 §8 阶段 ②/③ 列出,实名与 slug 待签收。其余角色行未重列。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/26b9b2578237a047c841b32ca6b1633669b8ee10","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-17T05:17:55-07:00","added":[],"removed":[],"modified":["docs/owner-matrix.md"]}],"total_commits":0,"head_commit":{"id":"26b9b2578237a047c841b32ca6b1633669b8ee10","message":"docs(平台): owner-matrix 增工作台维护者拟设行\n\n对外交付设计 §2 声明维护责任沿用 owner-matrix,设计方案 §23 已增「工作台维护者」岗位,本表补一行:路径拟为 runtime/apps/workbench(本轮不改 CODEOWNERS),待其动作按对外交付设计 §8 阶段 ②/③ 列出,实名与 slug 待签收。其余角色行未重列。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/26b9b2578237a047c841b32ca6b1633669b8ee10","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-17T05:17:55-07:00","added":[],"removed":[],"modified":["docs/owner-matrix.md"]},"repository":{"id":116,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"enterprise-platform","full_name":"luoanwu/enterprise-platform","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":15859,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/enterprise-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":42,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-11T07:33:25+08:00","updated_at":"2026-09-17T19:20:42+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
30
|
1789647479
|
1789647516
|
0
|
1789647479
|
1789647558
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23740
|
test(video-edit): verify direct timeline editing r test(video-edit): verify direct timeline editing release baseline...
|
57
|
5
|
governance.yml
|
111
|
5
|
0
|
refs/heads/main
|
9a541a3406a35f02960bb330a7c7475a351fab25
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e9b89290bab75ea32c59892a594d1a67df6804b6","after":"9a541a3406a35f02960bb330a7c7475a351fab25","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/e9b89290bab75ea32c59892a594d1a67df6804b6...9a541a3406a35f02960bb330a7c7475a351fab25","commits":[{"id":"9a541a3406a35f02960bb330a7c7475a351fab25","message":"test(video-edit): verify direct timeline editing release baseline\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/9a541a3406a35f02960bb330a7c7475a351fab25","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T17:16:01-07:00","added":["reports/video-timeline-editing-2026-09-08/README.md","reports/video-timeline-editing-2026-09-08/browser-verification.json","reports/video-timeline-editing-2026-09-08/post-production-api.json","reports/video-timeline-editing-2026-09-08/specialty-results.json","reports/video-timeline-editing-2026-09-08/subtitle-api.json","reports/video-timeline-editing-2026-09-08/validation.json"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-08-video-timeline-editing.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"75d8ae2ae4976d2b5ae9905b7275469089eed962","message":"Merge branch 'main' into feat/video-timeline-preview\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/75d8ae2ae4976d2b5ae9905b7275469089eed962","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T17:15:12-07:00","added":["docs/releases/2026-09-08-subtitle-burn1.md","reports/subtitle-burn-2026-09-08/README.md","reports/subtitle-burn-2026-09-08/api.json","reports/subtitle-burn-2026-09-08/backup-verification.json","reports/subtitle-burn-2026-09-08/browser-verification.json","reports/subtitle-burn-2026-09-08/deployed-verify.json","reports/subtitle-burn-2026-09-08/deployment.json","reports/subtitle-burn-2026-09-08/output.png","reports/subtitle-burn-2026-09-08/post-deployment-smoke.json","reports/subtitle-burn-2026-09-08/post-production.json","reports/subtitle-burn-2026-09-08/subtitle-burn-mobile.png","reports/subtitle-burn-2026-09-08/subtitle-burn.png","reports/subtitle-burn-2026-09-08/subtitle-regression.json","reports/subtitle-burn-2026-09-08/ui.json","reports/subtitle-burn-2026-09-08/validation.json"],"removed":[],"modified":["docs/releases/current.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"9dc2165d25aecc1540a58928305221113c9522e6","message":"feat(video-edit): add atomic timeline trim roll slip and editing shortcuts\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/9dc2165d25aecc1540a58928305221113c9522e6","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T17:09:53-07:00","added":["docs/governance/log/2026-09-08-video-timeline-editing.md","docs/product/pro-video-platform-progress.md","packages/contracts/src/video-edit-timeline.test.ts","packages/contracts/src/video-edit-timeline.ts"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/video-edit/EditTimeline.tsx","apps/web/src/components/material-factory/video-edit/VideoEditStudio.tsx","apps/web/src/components/material-factory/video-edit/video-edit.module.css","docs/product/pro-video-platform-gap-analysis.md","packages/contracts/src/index.ts"]}],"total_commits":0,"head_commit":{"id":"9a541a3406a35f02960bb330a7c7475a351fab25","message":"test(video-edit): verify direct timeline editing release baseline\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/9a541a3406a35f02960bb330a7c7475a351fab25","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T17:16:01-07:00","added":["reports/video-timeline-editing-2026-09-08/README.md","reports/video-timeline-editing-2026-09-08/browser-verification.json","reports/video-timeline-editing-2026-09-08/post-production-api.json","reports/video-timeline-editing-2026-09-08/specialty-results.json","reports/video-timeline-editing-2026-09-08/subtitle-api.json","reports/video-timeline-editing-2026-09-08/validation.json"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-08-video-timeline-editing.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":57,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":724373,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":7,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T08:09:24+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
3
|
3
|
0
|
1788913472
|
0
|
1788912983
|
1788913472
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23873
|
docs(releases): record g34-write-chain1 deployment
|
57
|
5
|
governance.yml
|
217
|
5
|
0
|
refs/heads/main
|
98d37c24042810f98d7817d37515bdd8d89e6570
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e9764103a19cefa8ecbc18c172a62f8c900a7b72","after":"98d37c24042810f98d7817d37515bdd8d89e6570","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/e9764103a19cefa8ecbc18c172a62f8c900a7b72...98d37c24042810f98d7817d37515bdd8d89e6570","commits":[{"id":"98d37c24042810f98d7817d37515bdd8d89e6570","message":"docs(releases): record g34-write-chain1 deployment\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/98d37c24042810f98d7817d37515bdd8d89e6570","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T00:45:14-07:00","added":["docs/releases/2026-09-12-g34-write-chain1.md"],"removed":[],"modified":["docs/governance/log/2026-09-12-g34-write-chain.md","docs/releases/current.md","reports/startup-acceptance.latest.json"]}],"total_commits":0,"head_commit":{"id":"98d37c24042810f98d7817d37515bdd8d89e6570","message":"docs(releases): record g34-write-chain1 deployment\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/98d37c24042810f98d7817d37515bdd8d89e6570","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T00:45:14-07:00","added":["docs/releases/2026-09-12-g34-write-chain1.md"],"removed":[],"modified":["docs/governance/log/2026-09-12-g34-write-chain.md","docs/releases/current.md","reports/startup-acceptance.latest.json"]},"repository":{"id":57,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":947713,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-12T15:40:27+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1789199124
|
1789200172
|
0
|
1789199124
|
1789200172
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
18319
|
Merge branch 'claude/hungry-montalcini-932ea7& Merge branch 'claude/hungry-montalcini-932ea7'...
|
6
|
5
|
ci.yml
|
18239
|
5
|
0
|
refs/heads/main
|
6086495033147939cdd979bd15fd97d71f6c1ac3
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e9258713d6944a1e296ddd7017cf9755186b54d8","after":"6086495033147939cdd979bd15fd97d71f6c1ac3","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/e9258713d6944a1e296ddd7017cf9755186b54d8...6086495033147939cdd979bd15fd97d71f6c1ac3","commits":[{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9b899c023b84a5aeab99138ad11b0618bb0875a6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:49-07:00","added":[],"removed":[],"modified":["frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d4fc589c2674f52dd6c03aaca02764ae3002ca47","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:33-07:00","added":[],"removed":[],"modified":["scripts/release/rollback-prod.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3f732fd5d670787659f0ba94e73357a7f079d352","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:16-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-monitor.docs.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/ad05c63ff48d357cad375e21d75232fd19fc8b4a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:43:55-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/tests/api/service-monitor.test.ts"]}],"total_commits":0,"head_commit":{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5230218,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T15:13:38+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
14
|
1777360604
|
1777360641
|
0
|
1777360555
|
1777361866
|
group: ci-${{ github.ref }}
cancel-in-progress: group: ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
ci-refs/heads/main
|
1
|
Edit
Delete
|
|
18320
|
Merge branch 'claude/hungry-montalcini-932ea7& Merge branch 'claude/hungry-montalcini-932ea7'...
|
6
|
5
|
e2e-tests.yml
|
18240
|
5
|
0
|
refs/heads/main
|
6086495033147939cdd979bd15fd97d71f6c1ac3
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e9258713d6944a1e296ddd7017cf9755186b54d8","after":"6086495033147939cdd979bd15fd97d71f6c1ac3","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/e9258713d6944a1e296ddd7017cf9755186b54d8...6086495033147939cdd979bd15fd97d71f6c1ac3","commits":[{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9b899c023b84a5aeab99138ad11b0618bb0875a6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:49-07:00","added":[],"removed":[],"modified":["frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d4fc589c2674f52dd6c03aaca02764ae3002ca47","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:33-07:00","added":[],"removed":[],"modified":["scripts/release/rollback-prod.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3f732fd5d670787659f0ba94e73357a7f079d352","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:16-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-monitor.docs.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/ad05c63ff48d357cad375e21d75232fd19fc8b4a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:43:55-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/tests/api/service-monitor.test.ts"]}],"total_commits":0,"head_commit":{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5230218,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T15:13:38+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
20
|
1777360642
|
1777360781
|
0
|
1777360556
|
1777361868
|
|
|
0
|
Edit
Delete
|
|
18322
|
Merge branch 'claude/hungry-montalcini-932ea7& Merge branch 'claude/hungry-montalcini-932ea7'...
|
6
|
5
|
test-pipeline.yml
|
18241
|
5
|
0
|
refs/heads/main
|
6086495033147939cdd979bd15fd97d71f6c1ac3
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e9258713d6944a1e296ddd7017cf9755186b54d8","after":"6086495033147939cdd979bd15fd97d71f6c1ac3","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/e9258713d6944a1e296ddd7017cf9755186b54d8...6086495033147939cdd979bd15fd97d71f6c1ac3","commits":[{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9b899c023b84a5aeab99138ad11b0618bb0875a6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:49-07:00","added":[],"removed":[],"modified":["frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d4fc589c2674f52dd6c03aaca02764ae3002ca47","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:33-07:00","added":[],"removed":[],"modified":["scripts/release/rollback-prod.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3f732fd5d670787659f0ba94e73357a7f079d352","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:16-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-monitor.docs.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/ad05c63ff48d357cad375e21d75232fd19fc8b4a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:43:55-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/tests/api/service-monitor.test.ts"]}],"total_commits":0,"head_commit":{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5230218,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T15:13:38+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
72
|
1777360790
|
1777361849
|
0
|
1777360565
|
1777361964
|
group: test-pipeline-${{ github.ref }}
cancel-in-p group: test-pipeline-${{ github.ref }}
cancel-in-progress: "true"
...
|
test-pipeline-refs/heads/main
|
1
|
Edit
Delete
|
|
18325
|
Merge branch 'claude/hungry-montalcini-932ea7& Merge branch 'claude/hungry-montalcini-932ea7'...
|
6
|
5
|
health-check.yml
|
18245
|
-2
|
337
|
refs/heads/main
|
6086495033147939cdd979bd15fd97d71f6c1ac3
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e9258713d6944a1e296ddd7017cf9755186b54d8","after":"6086495033147939cdd979bd15fd97d71f6c1ac3","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/e9258713d6944a1e296ddd7017cf9755186b54d8...6086495033147939cdd979bd15fd97d71f6c1ac3","commits":[{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9b899c023b84a5aeab99138ad11b0618bb0875a6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:49-07:00","added":[],"removed":[],"modified":["frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d4fc589c2674f52dd6c03aaca02764ae3002ca47","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:33-07:00","added":[],"removed":[],"modified":["scripts/release/rollback-prod.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3f732fd5d670787659f0ba94e73357a7f079d352","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:16-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-monitor.docs.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/ad05c63ff48d357cad375e21d75232fd19fc8b4a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:43:55-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/tests/api/service-monitor.test.ts"]}],"total_commits":0,"head_commit":{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5230218,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T15:13:38+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1777361873
|
1777361873
|
0
|
1777360850
|
1777361873
|
|
|
0
|
Edit
Delete
|
|
18326
|
Merge branch 'claude/hungry-montalcini-932ea7& Merge branch 'claude/hungry-montalcini-932ea7'...
|
6
|
5
|
health-check.yml
|
18246
|
-2
|
337
|
refs/heads/main
|
6086495033147939cdd979bd15fd97d71f6c1ac3
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e9258713d6944a1e296ddd7017cf9755186b54d8","after":"6086495033147939cdd979bd15fd97d71f6c1ac3","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/e9258713d6944a1e296ddd7017cf9755186b54d8...6086495033147939cdd979bd15fd97d71f6c1ac3","commits":[{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9b899c023b84a5aeab99138ad11b0618bb0875a6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:49-07:00","added":[],"removed":[],"modified":["frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d4fc589c2674f52dd6c03aaca02764ae3002ca47","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:33-07:00","added":[],"removed":[],"modified":["scripts/release/rollback-prod.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3f732fd5d670787659f0ba94e73357a7f079d352","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:16-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-monitor.docs.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/ad05c63ff48d357cad375e21d75232fd19fc8b4a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:43:55-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/tests/api/service-monitor.test.ts"]}],"total_commits":0,"head_commit":{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5230218,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T15:13:38+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1777361875
|
1777361876
|
0
|
1777361150
|
1777361876
|
|
|
0
|
Edit
Delete
|
|
18327
|
Merge branch 'claude/hungry-montalcini-932ea7& Merge branch 'claude/hungry-montalcini-932ea7'...
|
6
|
5
|
health-check.yml
|
18247
|
-2
|
337
|
refs/heads/main
|
6086495033147939cdd979bd15fd97d71f6c1ac3
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e9258713d6944a1e296ddd7017cf9755186b54d8","after":"6086495033147939cdd979bd15fd97d71f6c1ac3","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/e9258713d6944a1e296ddd7017cf9755186b54d8...6086495033147939cdd979bd15fd97d71f6c1ac3","commits":[{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9b899c023b84a5aeab99138ad11b0618bb0875a6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:49-07:00","added":[],"removed":[],"modified":["frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d4fc589c2674f52dd6c03aaca02764ae3002ca47","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:33-07:00","added":[],"removed":[],"modified":["scripts/release/rollback-prod.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3f732fd5d670787659f0ba94e73357a7f079d352","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:16-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-monitor.docs.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/ad05c63ff48d357cad375e21d75232fd19fc8b4a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:43:55-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/tests/api/service-monitor.test.ts"]}],"total_commits":0,"head_commit":{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5230218,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T15:13:38+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1777361877
|
1777361877
|
0
|
1777361450
|
1777361877
|
|
|
0
|
Edit
Delete
|
|
18328
|
Merge branch 'claude/hungry-montalcini-932ea7& Merge branch 'claude/hungry-montalcini-932ea7'...
|
6
|
5
|
health-check.yml
|
18248
|
-2
|
337
|
refs/heads/main
|
6086495033147939cdd979bd15fd97d71f6c1ac3
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e9258713d6944a1e296ddd7017cf9755186b54d8","after":"6086495033147939cdd979bd15fd97d71f6c1ac3","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/e9258713d6944a1e296ddd7017cf9755186b54d8...6086495033147939cdd979bd15fd97d71f6c1ac3","commits":[{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9b899c023b84a5aeab99138ad11b0618bb0875a6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:49-07:00","added":[],"removed":[],"modified":["frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d4fc589c2674f52dd6c03aaca02764ae3002ca47","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:33-07:00","added":[],"removed":[],"modified":["scripts/release/rollback-prod.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3f732fd5d670787659f0ba94e73357a7f079d352","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:16-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-monitor.docs.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/ad05c63ff48d357cad375e21d75232fd19fc8b4a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:43:55-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/tests/api/service-monitor.test.ts"]}],"total_commits":0,"head_commit":{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5230218,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T15:13:38+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1777361879
|
1777361879
|
0
|
1777361810
|
1777361879
|
|
|
0
|
Edit
Delete
|
|
18334
|
Merge branch 'claude/hungry-montalcini-932ea7& Merge branch 'claude/hungry-montalcini-932ea7'...
|
6
|
5
|
health-check.yml
|
18254
|
-2
|
337
|
refs/heads/main
|
6086495033147939cdd979bd15fd97d71f6c1ac3
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e9258713d6944a1e296ddd7017cf9755186b54d8","after":"6086495033147939cdd979bd15fd97d71f6c1ac3","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/e9258713d6944a1e296ddd7017cf9755186b54d8...6086495033147939cdd979bd15fd97d71f6c1ac3","commits":[{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9b899c023b84a5aeab99138ad11b0618bb0875a6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:49-07:00","added":[],"removed":[],"modified":["frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d4fc589c2674f52dd6c03aaca02764ae3002ca47","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:33-07:00","added":[],"removed":[],"modified":["scripts/release/rollback-prod.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3f732fd5d670787659f0ba94e73357a7f079d352","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:16-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-monitor.docs.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/ad05c63ff48d357cad375e21d75232fd19fc8b4a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:43:55-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/tests/api/service-monitor.test.ts"]}],"total_commits":0,"head_commit":{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5230218,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T15:13:38+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1777362050
|
1777362051
|
0
|
1777362050
|
1777362051
|
|
|
0
|
Edit
Delete
|
|
18335
|
Merge branch 'claude/hungry-montalcini-932ea7& Merge branch 'claude/hungry-montalcini-932ea7'...
|
6
|
5
|
health-check.yml
|
18255
|
-2
|
337
|
refs/heads/main
|
6086495033147939cdd979bd15fd97d71f6c1ac3
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e9258713d6944a1e296ddd7017cf9755186b54d8","after":"6086495033147939cdd979bd15fd97d71f6c1ac3","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/e9258713d6944a1e296ddd7017cf9755186b54d8...6086495033147939cdd979bd15fd97d71f6c1ac3","commits":[{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9b899c023b84a5aeab99138ad11b0618bb0875a6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:49-07:00","added":[],"removed":[],"modified":["frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d4fc589c2674f52dd6c03aaca02764ae3002ca47","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:33-07:00","added":[],"removed":[],"modified":["scripts/release/rollback-prod.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3f732fd5d670787659f0ba94e73357a7f079d352","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:16-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-monitor.docs.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/ad05c63ff48d357cad375e21d75232fd19fc8b4a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:43:55-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/tests/api/service-monitor.test.ts"]}],"total_commits":0,"head_commit":{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5230218,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T15:13:38+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1777362350
|
1777362351
|
0
|
1777362350
|
1777362351
|
|
|
0
|
Edit
Delete
|
|
18336
|
Merge branch 'claude/hungry-montalcini-932ea7& Merge branch 'claude/hungry-montalcini-932ea7'...
|
6
|
5
|
health-check.yml
|
18256
|
-2
|
337
|
refs/heads/main
|
6086495033147939cdd979bd15fd97d71f6c1ac3
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e9258713d6944a1e296ddd7017cf9755186b54d8","after":"6086495033147939cdd979bd15fd97d71f6c1ac3","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/e9258713d6944a1e296ddd7017cf9755186b54d8...6086495033147939cdd979bd15fd97d71f6c1ac3","commits":[{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9b899c023b84a5aeab99138ad11b0618bb0875a6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:49-07:00","added":[],"removed":[],"modified":["frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d4fc589c2674f52dd6c03aaca02764ae3002ca47","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:33-07:00","added":[],"removed":[],"modified":["scripts/release/rollback-prod.sh"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3f732fd5d670787659f0ba94e73357a7f079d352","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:16-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-monitor.docs.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue"]},{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/ad05c63ff48d357cad375e21d75232fd19fc8b4a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:43:55-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/tests/api/service-monitor.test.ts"]}],"total_commits":0,"head_commit":{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5230218,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T15:13:38+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1777362650
|
1777362651
|
0
|
1777362650
|
1777362651
|
|
|
0
|
Edit
Delete
|
|
24138
|
Merge pull request 'fix(contracts): 注册中心规则补失败关 Merge pull request 'fix(contracts): 注册中心规则补失败关闭与摘要规范化——三个入口此前抛 TypeError,同一摘要的两种写法此前分叉成两个复核键' (#1) from feat/registry-rule-hardening into main...
|
116
|
5
|
platform.yml
|
123
|
5
|
0
|
refs/heads/main
|
b62945890987b341b65684046c6e4d8ae612c529
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e8fda74e279a5884440d5efaac2265e513c814b6","after":"b62945890987b341b65684046c6e4d8ae612c529","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/e8fda74e279a5884440d5efaac2265e513c814b6...b62945890987b341b65684046c6e4d8ae612c529","commits":[{"id":"b62945890987b341b65684046c6e4d8ae612c529","message":"Merge pull request 'fix(contracts): 注册中心规则补失败关闭与摘要规范化——三个入口此前抛 TypeError,同一摘要的两种写法此前分叉成两个复核键' (#1) from feat/registry-rule-hardening into main\n\nReviewed-on: https://gitea.g-hi.com/luoanwu/enterprise-platform/pulls/1\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/b62945890987b341b65684046c6e4d8ae612c529","author":{"name":"luoanwu","email":"law@g-hi.com","username":"luoanwu"},"committer":{"name":"luoanwu","email":"law@g-hi.com","username":"luoanwu"},"verification":null,"timestamp":"2026-09-18T22:48:44+08:00","added":["contracts/src/domain/application-contract-registry/registry-primitives.ts"],"removed":[],"modified":["contracts/src/domain/application-contract-registry/fixture-evaluator.ts","contracts/src/domain/application-contract-registry/index.ts","contracts/src/domain/application-contract-registry/manifest-admission-planner.ts","contracts/src/domain/application-contract-registry/registry-snapshot.ts","contracts/src/domain/application-contract-registry/snapshot-upgrade-review.ts","contracts/test/application-contract-registry-domain.test.mjs","contracts/test/fixtures/application-contract-registry.fixtures.json","docs/domain/registry-snapshot-blueprint.md"]},{"id":"92a6b8e647c2c4d764c1fcdb8448bfc48a4dc4ed","message":"fix(contracts): 注册中心规则补失败关闭与摘要规范化——三个入口此前抛 TypeError,同一摘要的两种写法此前分叉成两个复核键\n\n蓝图 docs/domain/registry-snapshot-blueprint.md 从迁入起就写着「失败关闭」与\n「review key 仅用于人工复核幂等」两条不变量,实测三处不成立。本次按蓝图自己的口径补齐,\n改动只在 contracts/src/domain/application-contract-registry/:不新增写入点、不新增宿主、\n不动 Catalog 与 Schema,每条输出仍固定 activationAllowed=false / registryWriteAllowed=false /\nhumanApprovalRequired=true。\n\n1. 失败关闭:assessRegistrySnapshot / assessRegistryTransition /\n reviewCandidateSnapshotUpgrade 对畸形输入抛 TypeError(快照缺字段、now 不是 Date、\n decisions 整个缺失都会抛),四个入口里只有 LocalManifestAdmissionPlanner.plan 是\n 失败关闭的。现四个入口一致返回 REJECT + 原因码。这不是洁癖:check-fixtures 把抛出当\n 配置错误处理,实测一次 TypeError 会让整套 15 例逐例判定塌成一条 configuration 失败。\n\n2. 十六进制引用规范化:digest / commit 的正则带 /i 收大小写两种写法,比较与入键却\n 大小写敏感——同一摘要写成大写会得到另一个 reviewIdempotencyKey,同版本大小写翻转被判成\n SAME_VERSION_DIGEST_CHANGED,大写回滚 pin 被判成 ROLLBACK_PIN_MUST_MATCH_CURRENT。\n 现一律规范化为小写后再比较、再入键,ACCEPT 回吐规范化后的值。\n\n3. 版本文法收敛:一个模块三套(快照流与清单准入用 \\d+\\.\\d+\\.\\d+,升级复核用严格 SemVer),\n 新增 registry-primitives.ts 作单一来源,含预发布序;DEC-009—012 此前在两份文件各写一份,\n 一并收敛。snapshot-upgrade-review.ts 因此净减约 60 行重复实现。\n\n两处语义变化(蓝图新增一节已如实登记):\n- 收紧:1.02.0 这类前导零版本此前被放行,现在拒;assessRegistrySnapshot 另开始拒 latest\n 这类可变标签——此前它能过体检却必然过不了迁移规则。\n- 放宽:1.0.0-rc.1 这类预发布版本此前被快照流整条挡在外面,现在按 SemVer 序参与迁移。\n 平台自己发的就是 1.0.0-rc.N,升级复核那一侧本来就这么判。风险面有限:本模块所有出口\n 都不激活、不写 Registry,多进人工复核队列不等于多放行制品。\n\n证据(本分支隔离工作树,clean):注册中心单测 44/44(原 34 + 加固 10);\ncontracts check:local 302/302;check:fixtures 九个契约域套件 100 例 0 失败,\n其中本套件 15 例(正 4 / 反 11,原 8 例)。篡改必红实测两次:sameHexRef 退回大小写敏感\n→ 单测 1 红 + 夹具 P03 红;去掉快照入口守卫 → 整套塌成 0 例 1 配置失败。\n\n仍为仓内候选 sdk_e2,不代表正式 Registry、Snapshot 发布或跨仓 Required Check 已上线。\n清单登记的 C01.04 / C01.06 是「接线」型缺口且前置 Q01 运行宿主未裁,本次未动。\nreports/fixtures.latest.json 未回绑:它是 17 套件的聚合报告,只跑 9 个套件去覆盖会缩小结论面,\n应在整批(含并行会话的 public-file / IM / 跨域流程改动)落定后统一重跑回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/92a6b8e647c2c4d764c1fcdb8448bfc48a4dc4ed","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T07:40:10-07:00","added":["contracts/src/domain/application-contract-registry/registry-primitives.ts"],"removed":[],"modified":["contracts/src/domain/application-contract-registry/fixture-evaluator.ts","contracts/src/domain/application-contract-registry/index.ts","contracts/src/domain/application-contract-registry/manifest-admission-planner.ts","contracts/src/domain/application-contract-registry/registry-snapshot.ts","contracts/src/domain/application-contract-registry/snapshot-upgrade-review.ts","contracts/test/application-contract-registry-domain.test.mjs","contracts/test/fixtures/application-contract-registry.fixtures.json","docs/domain/registry-snapshot-blueprint.md"]}],"total_commits":0,"head_commit":{"id":"b62945890987b341b65684046c6e4d8ae612c529","message":"Merge pull request 'fix(contracts): 注册中心规则补失败关闭与摘要规范化——三个入口此前抛 TypeError,同一摘要的两种写法此前分叉成两个复核键' (#1) from feat/registry-rule-hardening into main\n\nReviewed-on: https://gitea.g-hi.com/luoanwu/enterprise-platform/pulls/1\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/b62945890987b341b65684046c6e4d8ae612c529","author":{"name":"luoanwu","email":"law@g-hi.com","username":"luoanwu"},"committer":{"name":"luoanwu","email":"law@g-hi.com","username":"luoanwu"},"verification":null,"timestamp":"2026-09-18T22:48:44+08:00","added":["contracts/src/domain/application-contract-registry/registry-primitives.ts"],"removed":[],"modified":["contracts/src/domain/application-contract-registry/fixture-evaluator.ts","contracts/src/domain/application-contract-registry/index.ts","contracts/src/domain/application-contract-registry/manifest-admission-planner.ts","contracts/src/domain/application-contract-registry/registry-snapshot.ts","contracts/src/domain/application-contract-registry/snapshot-upgrade-review.ts","contracts/test/application-contract-registry-domain.test.mjs","contracts/test/fixtures/application-contract-registry.fixtures.json","docs/domain/registry-snapshot-blueprint.md"]},"repository":{"id":116,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"enterprise-platform","full_name":"luoanwu/enterprise-platform","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":19008,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/enterprise-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":43,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-11T07:33:25+08:00","updated_at":"2026-09-18T22:47:53+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
30
|
1789742961
|
1789742999
|
0
|
1789742926
|
1789743053
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23833
|
docs(playbook): 回灌 P19–P22(共享基座跨套件领取、默认状态码漂移、非空验收库 docs(playbook): 回灌 P19–P22(共享基座跨套件领取、默认状态码漂移、非空验收库、并行构建污染)...
|
54
|
5
|
governance.yml
|
35
|
5
|
0
|
refs/heads/main
|
4e46be3af7172533e93417e123d3369963f13e08
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e8d262220de86b35614cdeb27802673a82930ffa","after":"4e46be3af7172533e93417e123d3369963f13e08","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/e8d262220de86b35614cdeb27802673a82930ffa...4e46be3af7172533e93417e123d3369963f13e08","commits":[{"id":"4e46be3af7172533e93417e123d3369963f13e08","message":"docs(playbook): 回灌 P19–P22(共享基座跨套件领取、默认状态码漂移、非空验收库、并行构建污染)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/4e46be3af7172533e93417e123d3369963f13e08","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-10T06:51:15-07:00","added":[],"removed":[],"modified":["docs/migration-playbook.md"]}],"total_commits":0,"head_commit":{"id":"4e46be3af7172533e93417e123d3369963f13e08","message":"docs(playbook): 回灌 P19–P22(共享基座跨套件领取、默认状态码漂移、非空验收库、并行构建污染)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/4e46be3af7172533e93417e123d3369963f13e08","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-10T06:51:15-07:00","added":[],"removed":[],"modified":["docs/migration-playbook.md"]},"repository":{"id":54,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5058,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-03T12:24:18+08:00","updated_at":"2026-09-10T21:38:18+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
12
|
1789048639
|
1789048683
|
0
|
1789048277
|
1789048693
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23751
|
Merge branch 'main' into feat/video-formal Merge branch 'main' into feat/video-formal-delivery-20260908...
|
57
|
5
|
governance.yml
|
122
|
5
|
0
|
refs/heads/main
|
d5b92949daffd9b1d13a4090131ed55d1b1aef6f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e8c059aa0cf828e4922ec7fd58429272e2e93719","after":"d5b92949daffd9b1d13a4090131ed55d1b1aef6f","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/e8c059aa0cf828e4922ec7fd58429272e2e93719...d5b92949daffd9b1d13a4090131ed55d1b1aef6f","commits":[{"id":"d5b92949daffd9b1d13a4090131ed55d1b1aef6f","message":"Merge branch 'main' into feat/video-formal-delivery-20260908\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/d5b92949daffd9b1d13a4090131ed55d1b1aef6f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T19:12:38-07:00","added":["docs/releases/2026-09-08-timeline4.md","reports/video-range-preview-2026-09-08/backup-verification.json","reports/video-range-preview-2026-09-08/build-interruption.json","reports/video-range-preview-2026-09-08/deployed-verify.json","reports/video-range-preview-2026-09-08/deployment.json","reports/video-range-preview-2026-09-08/live-browser-verification.json","reports/video-range-preview-2026-09-08/post-deployment-smoke.json"],"removed":[],"modified":["docs/governance/log/2026-09-08-video-range-preview.md","docs/product/pro-video-platform-progress.md","docs/releases/current.md","reports/video-range-preview-2026-09-08/README.md","reports/video-range-preview-2026-09-08/validation.json"]},{"id":"51523f1ae0cd3df01d9b145d4795568a0b908925","message":"test(governance): final same-fingerprint evidence for video formal transfer\n\nSeven gates and the dual-backend HTTP specialty pass on the tree merged\nwith main 70fcc5c (range preview); one production-gate flake and the\nreused-database specialty failures are kept in the round logs.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/51523f1ae0cd3df01d9b145d4795568a0b908925","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T19:12:38-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/template-types.desktop.png","reports/template-types.mobile.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.production.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-delivery-2026-09-08/README.md","reports/video-delivery-2026-09-08/verification.json","reports/video-regenerate-2026-09-08/desktop.png"]},{"id":"691d39b5437b8f3add1a5d10357fc88a9171a447","message":"fix(video-edit): remove duplicated media query import after merge\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/691d39b5437b8f3add1a5d10357fc88a9171a447","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T18:59:35-07:00","added":[],"removed":[],"modified":["packages/video-edit/src/index.ts","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"7858d74730cd96f451f63a4f5dc0acc26fd0d449","message":"Merge branch 'main' into feat/video-formal-delivery-20260908\n\n# Conflicts:\n#\tCLAUDE.md\n#\tapps/web/src/components/material-factory/video-edit/VideoEditStudio.tsx\n#\tpackages/video-edit/src/index.ts\n#\tpackages/video-edit/src/media.ts\n#\treports/contract-consumers.latest.json\n#\treports/dependency-audit.latest.json\n#\treports/governance-docs.latest.json\n#\treports/governance.latest.json\n#\treports/inference-acceptance.latest.json\n#\treports/material-review-concurrency-guard.latest.json\n#\treports/migrations.latest.json\n#\treports/module-boundary.latest.json\n#\treports/naming.latest.json\n#\treports/order-concurrency-guard.latest.json\n#\treports/production-acceptance.latest.json\n#\treports/production-security.latest.json\n#\treports/public-file-acceptance.latest.json\n#\treports/public-file-integration.latest.json\n#\treports/runtime-acceptance.latest.json\n#\treports/runtime-governance.latest.json\n#\treports/schema-sync.latest.json\n#\treports/script-acceptance.latest.json\n#\treports/sidecar-tests.latest.json\n#\treports/storyboard-director-guard.latest.json\n#\treports/toolchain.latest.json\n#\treports/ui-acceptance.latest.json\n#\treports/validation-source.latest.json\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/7858d74730cd96f451f63a4f5dc0acc26fd0d449","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T18:55:22-07:00","added":["apps/web/src/components/material-factory/video-edit/RangePreviewControls.tsx","docs/adr/0018-video-range-preview.md","docs/governance/log/2026-09-08-frontend-uiux-analysis.md","docs/governance/log/2026-09-08-video-range-preview.md","docs/releases/2026-09-08-merged1-migration-plan.md","docs/releases/2026-09-08-merged1.md","packages/contracts/src/video-edit-range.test.ts","packages/contracts/src/video-edit-range.ts","packages/video-edit/src/range-preview.test.ts","packages/video-edit/src/range-preview.ts","reports/frontend-uiux-analysis-2026-09-08/README.md","reports/frontend-uiux-analysis-2026-09-08/evidence/aggregate.mjs","reports/frontend-uiux-analysis-2026-09-08/evidence/scan-aggregate.md","reports/frontend-uiux-analysis-2026-09-08/evidence/scan-summary-rerun.json","reports/frontend-uiux-analysis-2026-09-08/evidence/scan-summary.json","reports/frontend-uiux-analysis-2026-09-08/evidence/source-metrics.sh","reports/frontend-uiux-analysis-2026-09-08/evidence/source-metrics.txt","reports/frontend-uiux-analysis-2026-09-08/evidence/uiux-interactions.mjs","reports/frontend-uiux-analysis-2026-09-08/evidence/uiux-scan.mjs","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-admin-operations.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-admin.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-brand.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-content.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-create.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-deliveries.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-edit.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-events.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-gallery.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-home.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-industry-trends.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-inpaint.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-landing.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-reviews.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-script.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-shijie.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-storyboard.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-tasks.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-templates.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-video-edit.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/desktop-video.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/mobile-admin.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/mobile-brand.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/mobile-content.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/mobile-create-scrolled.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/mobile-create.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/mobile-edit.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/mobile-home.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/mobile-landing.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/mobile-menu-dialog.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/mobile-script.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/mobile-storyboard.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/mobile-tasks.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/mobile-video-edit.jpg","reports/frontend-uiux-analysis-2026-09-08/screens/mobile-video.jpg","reports/releases/merged1-2026-09-08/backup-verification.json","reports/releases/merged1-2026-09-08/browser-verification.json","reports/releases/merged1-2026-09-08/build.json","reports/releases/merged1-2026-09-08/database-verification.json","reports/releases/merged1-2026-09-08/deployment.json","reports/releases/merged1-2026-09-08/final-verification.json","reports/releases/merged1-2026-09-08/identity.json","reports/releases/merged1-2026-09-08/rehearsal.json","reports/releases/merged1-2026-09-08/source-permissions.json","reports/video-range-preview-2026-09-08/README.md","reports/video-range-preview-2026-09-08/benchmark.json","reports/video-range-preview-2026-09-08/browser-verification.json","reports/video-range-preview-2026-09-08/range-api.json","reports/video-range-preview-2026-09-08/specialty-results.json","reports/video-range-preview-2026-09-08/validation.json","scripts/benchmark-video-range.cjs","scripts/check-video-range-preview.cjs"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/routes/video-edit.ts","apps/api-nestjs/src/video-edit/video-edit.controller.ts","apps/web/src/components/material-factory/video-edit/SubtitleBurnPanel.tsx","apps/web/src/components/material-factory/video-edit/VideoEditStudio.tsx","apps/web/src/components/material-factory/video-edit/timeline-position.ts","apps/web/src/lib/api.ts","deploy/vm/release.py","docs/README.md","docs/adr/README.md","docs/domain/owner-matrix.md","docs/releases/current.md","packages/contracts/src/index.ts","packages/contracts/src/video-edit.ts","packages/video-edit/src/index.ts","packages/video-edit/src/media.ts","packages/video-edit/src/post-production.ts","packages/video-edit/src/worker.ts","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","scripts/video-edit-timeline.test.mjs"]},{"id":"90231ad9130ac52606bb0cb2f36c524953eb7e67","message":"test(governance): regenerate heavy gate reports for the integrated delivery tree\n\nSeven gates pass at fingerprint 56e1a65e… on the branch merged with main\n2344e0b (governed media workflows, media overviews).\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/90231ad9130ac52606bb0cb2f36c524953eb7e67","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T18:51:54-07:00","added":[],"removed":[],"modified":["reports/admin-desktop.png","reports/admin-mobile.png","reports/content-detail.images-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.review-desktop.png","reports/contract-consumers.latest.json","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/template-types.desktop.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.production.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png"]}],"total_commits":0,"head_commit":{"id":"d5b92949daffd9b1d13a4090131ed55d1b1aef6f","message":"Merge branch 'main' into feat/video-formal-delivery-20260908\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/d5b92949daffd9b1d13a4090131ed55d1b1aef6f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T19:12:38-07:00","added":["docs/releases/2026-09-08-timeline4.md","reports/video-range-preview-2026-09-08/backup-verification.json","reports/video-range-preview-2026-09-08/build-interruption.json","reports/video-range-preview-2026-09-08/deployed-verify.json","reports/video-range-preview-2026-09-08/deployment.json","reports/video-range-preview-2026-09-08/live-browser-verification.json","reports/video-range-preview-2026-09-08/post-deployment-smoke.json"],"removed":[],"modified":["docs/governance/log/2026-09-08-video-range-preview.md","docs/product/pro-video-platform-progress.md","docs/releases/current.md","reports/video-range-preview-2026-09-08/README.md","reports/video-range-preview-2026-09-08/validation.json"]},"repository":{"id":57,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":748336,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":7,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T09:56:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788920076
|
1788920118
|
0
|
1788920076
|
1788920118
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23689
|
merge: integrate accepted asset ownership and queu merge: integrate accepted asset ownership and queue scheduling fixes...
|
57
|
5
|
governance.yml
|
60
|
5
|
0
|
refs/heads/main
|
71f2769e17a58a697b380cc2a2be27428a9692b2
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e831a73b46891ca7b86a44fa67605510f9272232","after":"71f2769e17a58a697b380cc2a2be27428a9692b2","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/e831a73b46891ca7b86a44fa67605510f9272232...71f2769e17a58a697b380cc2a2be27428a9692b2","commits":[{"id":"71f2769e17a58a697b380cc2a2be27428a9692b2","message":"merge: integrate accepted asset ownership and queue scheduling fixes\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/71f2769e17a58a697b380cc2a2be27428a9692b2","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T07:51:20-07:00","added":["apps/api-fastify/test/creative-dispatch-boundary.integration.test.ts","apps/api-nestjs/test/creative-dispatch-boundary.integration.test.ts","docs/governance/log/2026-09-08-adversarial-path-queue.md","packages/public-file/src/asset-path.test.ts","packages/public-file/src/asset-path.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/creative-project/creative-project.service.ts","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/src/modules/material-factory/material-sidecar.client.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/material-review.integration.test.ts","apps/api-nestjs/src/creative-project/creative-project.service.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/src/material-factory/material-sidecar.client.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/material-review.integration.test.ts","docs/adr/0016-durable-creative-projects.md","packages/contracts/src/creative-queue-policy.test.ts","packages/contracts/src/creative-queue-policy.ts","packages/public-file/src/index.ts","packages/public-file/src/rendered-file.test.ts","packages/public-file/src/rendered-file.ts","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-security.latest.json","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/validation-source.latest.json"]},{"id":"cdbd6c1dcea80e4dfe523a059543e043380c0904","message":"fix(security): bind asset paths to one canonical form and admit queue candidates before LIMIT\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/cdbd6c1dcea80e4dfe523a059543e043380c0904","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T07:44:25-07:00","added":["apps/api-fastify/test/creative-dispatch-boundary.integration.test.ts","apps/api-nestjs/test/creative-dispatch-boundary.integration.test.ts","docs/governance/log/2026-09-08-adversarial-path-queue.md","packages/public-file/src/asset-path.test.ts","packages/public-file/src/asset-path.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/creative-project/creative-project.service.ts","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/src/modules/material-factory/material-sidecar.client.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/material-review.integration.test.ts","apps/api-nestjs/src/creative-project/creative-project.service.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/src/material-factory/material-sidecar.client.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/material-review.integration.test.ts","docs/adr/0016-durable-creative-projects.md","packages/contracts/src/creative-queue-policy.test.ts","packages/contracts/src/creative-queue-policy.ts","packages/public-file/src/index.ts","packages/public-file/src/rendered-file.test.ts","packages/public-file/src/rendered-file.ts","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-security.latest.json","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"71f2769e17a58a697b380cc2a2be27428a9692b2","message":"merge: integrate accepted asset ownership and queue scheduling fixes\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/71f2769e17a58a697b380cc2a2be27428a9692b2","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T07:51:20-07:00","added":["apps/api-fastify/test/creative-dispatch-boundary.integration.test.ts","apps/api-nestjs/test/creative-dispatch-boundary.integration.test.ts","docs/governance/log/2026-09-08-adversarial-path-queue.md","packages/public-file/src/asset-path.test.ts","packages/public-file/src/asset-path.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/creative-project/creative-project.service.ts","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/src/modules/material-factory/material-sidecar.client.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/material-review.integration.test.ts","apps/api-nestjs/src/creative-project/creative-project.service.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/src/material-factory/material-sidecar.client.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/material-review.integration.test.ts","docs/adr/0016-durable-creative-projects.md","packages/contracts/src/creative-queue-policy.test.ts","packages/contracts/src/creative-queue-policy.ts","packages/public-file/src/index.ts","packages/public-file/src/rendered-file.test.ts","packages/public-file/src/rendered-file.ts","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-security.latest.json","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/validation-source.latest.json"]},"repository":{"id":57,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":636940,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":5,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-08T22:38:24+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
1
|
4
|
1788879154
|
1788879243
|
0
|
1788879154
|
1788879243
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
24074
|
docs(计划): mainline-dev-deployment 退役,四份手工记录清零(真源仓 docs(计划): mainline-dev-deployment 退役,四份手工记录清零(真源仓 903f019)...
|
117
|
5
|
governance.yml
|
44
|
5
|
0
|
refs/heads/main
|
ae6cf47e538de724c00c270f78ad014669585c8d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e81617fb827a3db190701bc33bca21cc14ce20c8","after":"ae6cf47e538de724c00c270f78ad014669585c8d","compare_url":"https://gitea.g-hi.com/luoanwu/platform-governance/compare/e81617fb827a3db190701bc33bca21cc14ce20c8...ae6cf47e538de724c00c270f78ad014669585c8d","commits":[{"id":"ae6cf47e538de724c00c270f78ad014669585c8d","message":"docs(计划): mainline-dev-deployment 退役,四份手工记录清零(真源仓 903f019)\n\n结论由 compose 的 redpanda 启用状态、四份更新的 runtime-up 记录与\ncheck:deployed 覆盖,三者都会自动保鲜;dev 栈此后已重建多轮,09-12 的\n快照早已不是当前事实。\n\n§1 证据行补第三步;§8 增一行。未登记 16 → 13。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/ae6cf47e538de724c00c270f78ad014669585c8d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-17T19:24:42-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]}],"total_commits":0,"head_commit":{"id":"ae6cf47e538de724c00c270f78ad014669585c8d","message":"docs(计划): mainline-dev-deployment 退役,四份手工记录清零(真源仓 903f019)\n\n结论由 compose 的 redpanda 启用状态、四份更新的 runtime-up 记录与\ncheck:deployed 覆盖,三者都会自动保鲜;dev 栈此后已重建多轮,09-12 的\n快照早已不是当前事实。\n\n§1 证据行补第三步;§8 增一行。未登记 16 → 13。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/ae6cf47e538de724c00c270f78ad014669585c8d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-17T19:24:42-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]},"repository":{"id":117,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"platform-governance","full_name":"luoanwu/platform-governance","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":9023,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance/languages","html_url":"https://gitea.g-hi.com/luoanwu/platform-governance","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/platform-governance.git","clone_url":"https://gitea.g-hi.com/luoanwu/platform-governance.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-15T11:53:24+08:00","updated_at":"2026-09-18T10:21:56+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1789698302
|
1789698356
|
0
|
1789698286
|
1789698356
|
|
|
0
|
Edit
Delete
|
|
24188
|
docs(部署): §15.4 改写 + 新增 §15.5——ui-acceptance 已真跑回来 docs(部署): §15.4 改写 + 新增 §15.5——ui-acceptance 已真跑回来,D-14 闭环...
|
116
|
5
|
platform.yml
|
154
|
5
|
0
|
refs/heads/main
|
3baec4ad9f8c27a94f514af7e4e340c1c763b923
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e79e5f2b943a633299851dbc7709455247a415ef","after":"3baec4ad9f8c27a94f514af7e4e340c1c763b923","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/e79e5f2b943a633299851dbc7709455247a415ef...3baec4ad9f8c27a94f514af7e4e340c1c763b923","commits":[{"id":"3baec4ad9f8c27a94f514af7e4e340c1c763b923","message":"docs(部署): §15.4 改写 + 新增 §15.5——ui-acceptance 已真跑回来,D-14 闭环\n\n回绑提交 c4ec6f6:passed,nestjs/ws 5/5(地板 5),绑 67e8193 / worktreeDirty=false;\n67e8193..HEAD 之间作用域零变更,绑定对当前代码仍成立。\n\n同轮补两条环境教训:\n\n1. 隔离栈 enterprise-platform-ms23 那台 PG 的库又被清空了,验收库得重建。与 §9 末尾\n 「不能假定上一轮还在」同一条,这是第二次撞上——可以当常态而不是意外。\n2. §9 的三条前置少写了一条:临时检出只 install + prisma:generate 不够,必须再 pnpm build。\n 缺它时 api-nestjs 的 tsc 以 Cannot find module '@juhai/module-kit' / '@repo/telemetry' 失败,\n 是 workspace 包没构建,不是回归。该次失败停在构建阶段、未写报告,主工作区那份旧报告\n 全程没被覆盖——这正是在独立检出里跑的意义。\n\n§15.4 标题与结尾同步订正:原文写「本轮只登记」,现已不成立。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/3baec4ad9f8c27a94f514af7e4e340c1c763b923","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:53:58-07:00","added":[],"removed":[],"modified":["docs/dev部署运行重做记录-2026-09-18.md"]},{"id":"c4ec6f6ad12a7b415db4bdd07de48ed64c26bde8","message":"chore(reports): ui-acceptance 重跑回绑 @ 67e8193\n\nD-14 登记的那份过期报告已真跑回来:passed,nestjs/ws 组合 5/5(地板 5),\nprovenance gitSha=67e8193 / worktreeDirty=false / runner=local。\n67e8193..HEAD 之间作用域(runtime/apps、runtime/packages、modules.json)零变更,\n因此该绑定对当前代码仍然成立。\n\n跑法按 §9 的口径:HEAD 的独立 git worktree 干净检出(主工作区有并行会话 WIP,\n跑在那里必 worktreeDirty=true)+ 隔离栈 enterprise-platform-ms23(PG :55471 /\nRedis :56380 逻辑库 7,本轮重新 docker start 并新建 enterprise_platform_ui_acceptance 库\n——那台 PG 里的库又被清空过一次,与 §9 末尾记的教训一致)。\n\n踩到一条 §9 三条前置之外的:**临时检出只 install + prisma:generate 还不够,必须再\npnpm build**。缺它时 api-nestjs 的 tsc 以 Cannot find module '@juhai/module-kit' /\n'@repo/telemetry' 失败——workspace 包没构建,不是回归。CLAUDE.md「开发命令」节的三步\n本来就写了 build,是我漏了第三步。该次失败发生在构建阶段、未写报告,主工作区那份\n旧报告全程未被覆盖(这正是在独立检出里跑的意义)。\n\n本提交只含这一个报告文件:同时有 18 份 runtime 报告被并行会话改动,不属本轮,未纳入。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/c4ec6f6ad12a7b415db4bdd07de48ed64c26bde8","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:53:21-07:00","added":[],"removed":[],"modified":["runtime/reports/ui-acceptance.latest.json"]}],"total_commits":0,"head_commit":{"id":"3baec4ad9f8c27a94f514af7e4e340c1c763b923","message":"docs(部署): §15.4 改写 + 新增 §15.5——ui-acceptance 已真跑回来,D-14 闭环\n\n回绑提交 c4ec6f6:passed,nestjs/ws 5/5(地板 5),绑 67e8193 / worktreeDirty=false;\n67e8193..HEAD 之间作用域零变更,绑定对当前代码仍成立。\n\n同轮补两条环境教训:\n\n1. 隔离栈 enterprise-platform-ms23 那台 PG 的库又被清空了,验收库得重建。与 §9 末尾\n 「不能假定上一轮还在」同一条,这是第二次撞上——可以当常态而不是意外。\n2. §9 的三条前置少写了一条:临时检出只 install + prisma:generate 不够,必须再 pnpm build。\n 缺它时 api-nestjs 的 tsc 以 Cannot find module '@juhai/module-kit' / '@repo/telemetry' 失败,\n 是 workspace 包没构建,不是回归。该次失败停在构建阶段、未写报告,主工作区那份旧报告\n 全程没被覆盖——这正是在独立检出里跑的意义。\n\n§15.4 标题与结尾同步订正:原文写「本轮只登记」,现已不成立。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/3baec4ad9f8c27a94f514af7e4e340c1c763b923","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T16:53:58-07:00","added":[],"removed":[],"modified":["docs/dev部署运行重做记录-2026-09-18.md"]},"repository":{"id":116,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"enterprise-platform","full_name":"luoanwu/enterprise-platform","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":21357,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/enterprise-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":44,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-11T07:33:25+08:00","updated_at":"2026-09-19T07:52:34+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
30
|
1789775645
|
1789775684
|
0
|
1789775643
|
1789775713
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23427
|
feat: complete calibrated voiceprint workflow
|
62
|
5
|
governance.yml
|
4
|
5
|
0
|
refs/heads/main
|
32c70bb2198cf25b362a49e4f74387dd1a47768a
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e795edf9d8130692c02ac8d6083ddbd41edcdc0c","after":"32c70bb2198cf25b362a49e4f74387dd1a47768a","compare_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/compare/e795edf9d8130692c02ac8d6083ddbd41edcdc0c...32c70bb2198cf25b362a49e4f74387dd1a47768a","commits":[{"id":"32c70bb2198cf25b362a49e4f74387dd1a47768a","message":"feat: complete calibrated voiceprint workflow\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/32c70bb2198cf25b362a49e4f74387dd1a47768a","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-14T22:19:23-07:00","added":["configs/voiceprint-calibration.json","reports/ui-audit-registration/01-disabled-registration.png","reports/ui-audit-registration/02-registration-validation-fixed.png","reports/ui-audit-registration/03-registration-validation-viewport.png","reports/voiceprint-calibration.latest.json","scripts/calibrate_voiceprint.py","src/speaker_embedding/age_gender_sidecar.py","src/speaker_embedding/audio_payload.py","src/speaker_embedding/calibration.py","tests/test_age_gender_sidecar.py","tests/test_calibration.py"],"removed":[],"modified":[".dockerignore","CLAUDE.md","README.md","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/voiceprint/EnrollPanel.tsx","apps/web/src/components/voiceprint/IdentifyPanel.tsx","apps/web/src/components/voiceprint/VoiceProfileCard.tsx","deploy/vm/.env.vm.example","deploy/vm/Dockerfile.research","deploy/vm/Dockerfile.sidecar","deploy/vm/compose.yaml","deploy/vm/requirements-research.txt","docs/deployment-vm.md","docs/domain/voiceprint-blueprint.md","docs/karaoke-singer-personalized-dsp-system-design.md","docs/product-prd.md","docs/research-age-gender.md","package.json","packages/contracts/src/voiceprint.test.ts","packages/contracts/src/voiceprint.ts","pyproject.toml","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","reports/voiceprint-real-acceptance.latest.json","scripts/deploy-vm.sh","scripts/governance-report.mjs","scripts/voiceprint-sidecar-ui-stub.mjs","src/speaker_embedding/__init__.py","src/speaker_embedding/age_gender_research.py","src/speaker_embedding/extractor.py","src/speaker_embedding/sidecar.py","src/speaker_embedding/speaker_db.py","src/speaker_embedding/timbre.py","tests/test_sidecar.py","tests/test_speaker_db.py"]}],"total_commits":0,"head_commit":{"id":"32c70bb2198cf25b362a49e4f74387dd1a47768a","message":"feat: complete calibrated voiceprint workflow\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/32c70bb2198cf25b362a49e4f74387dd1a47768a","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-14T22:19:23-07:00","added":["configs/voiceprint-calibration.json","reports/ui-audit-registration/01-disabled-registration.png","reports/ui-audit-registration/02-registration-validation-fixed.png","reports/ui-audit-registration/03-registration-validation-viewport.png","reports/voiceprint-calibration.latest.json","scripts/calibrate_voiceprint.py","src/speaker_embedding/age_gender_sidecar.py","src/speaker_embedding/audio_payload.py","src/speaker_embedding/calibration.py","tests/test_age_gender_sidecar.py","tests/test_calibration.py"],"removed":[],"modified":[".dockerignore","CLAUDE.md","README.md","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/voiceprint/EnrollPanel.tsx","apps/web/src/components/voiceprint/IdentifyPanel.tsx","apps/web/src/components/voiceprint/VoiceProfileCard.tsx","deploy/vm/.env.vm.example","deploy/vm/Dockerfile.research","deploy/vm/Dockerfile.sidecar","deploy/vm/compose.yaml","deploy/vm/requirements-research.txt","docs/deployment-vm.md","docs/domain/voiceprint-blueprint.md","docs/karaoke-singer-personalized-dsp-system-design.md","docs/product-prd.md","docs/research-age-gender.md","package.json","packages/contracts/src/voiceprint.test.ts","packages/contracts/src/voiceprint.ts","pyproject.toml","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","reports/voiceprint-real-acceptance.latest.json","scripts/deploy-vm.sh","scripts/governance-report.mjs","scripts/voiceprint-sidecar-ui-stub.mjs","src/speaker_embedding/__init__.py","src/speaker_embedding/age_gender_research.py","src/speaker_embedding/extractor.py","src/speaker_embedding/sidecar.py","src/speaker_embedding/speaker_db.py","src/speaker_embedding/timbre.py","tests/test_sidecar.py","tests/test_speaker_db.py"]},"repository":{"id":62,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"voiceprint-recognition","full_name":"luoanwu/voiceprint-recognition","description":"ECAPA+WavLM 声纹注册识别、1:N ANN 检索与声音特征画像平台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":918,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition/languages","html_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voiceprint-recognition.git","clone_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-15T08:42:42+08:00","updated_at":"2026-07-15T11:24:34+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
8
|
1784092782
|
1784092836
|
0
|
1784092781
|
1784092836
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23515
|
Refine image generation modes and custom output si Refine image generation modes and custom output sizing...
|
57
|
5
|
governance.yml
|
2
|
5
|
0
|
refs/heads/main
|
43fb473a0f44228eb0ac2dc41e920e3e5ab523b5
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e759f5e4509e93cc4968259cc6d6a64bc73c09f1","after":"43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/e759f5e4509e93cc4968259cc6d6a64bc73c09f1...43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","commits":[{"id":"43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","message":"Refine image generation modes and custom output sizing\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-24T02:19:22-07:00","added":["apps/web/public/material-factory/human-review-approved-stamp.png","design-qa.md","reports/login-redesign.comparison.jpg","reports/login-redesign.desktop.png","reports/login-redesign.form-comparison.jpg","reports/login-redesign.mobile.png"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/LandingGate.tsx","apps/web/src/components/material-factory/ModelConnectionsStudio.tsx","apps/web/src/components/material-factory/brand.ts","packages/contracts/src/material-brand.test.ts","packages/contracts/src/material.ts","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs"]}],"total_commits":0,"head_commit":{"id":"43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","message":"Refine image generation modes and custom output sizing\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-24T02:19:22-07:00","added":["apps/web/public/material-factory/human-review-approved-stamp.png","design-qa.md","reports/login-redesign.comparison.jpg","reports/login-redesign.desktop.png","reports/login-redesign.form-comparison.jpg","reports/login-redesign.mobile.png"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/LandingGate.tsx","apps/web/src/components/material-factory/ModelConnectionsStudio.tsx","apps/web/src/components/material-factory/brand.ts","packages/contracts/src/material-brand.test.ts","packages/contracts/src/material.ts","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs"]},"repository":{"id":57,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":12509,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":5,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-08-24T16:42:05+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1787563172
|
1787563263
|
0
|
1787563171
|
1787563263
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
24069
|
chore(reports): 回绑 @ a9fd6e8,check:evidence 全绿
|
116
|
5
|
platform.yml
|
106
|
5
|
0
|
refs/heads/main
|
2dfbcb9148a7beabb926462eebb82645e548c10a
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e6d286b4f61d0227fa7f42cd0f5f40e624540dbf","after":"2dfbcb9148a7beabb926462eebb82645e548c10a","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/e6d286b4f61d0227fa7f42cd0f5f40e624540dbf...2dfbcb9148a7beabb926462eebb82645e548c10a","commits":[{"id":"2dfbcb9148a7beabb926462eebb82645e548c10a","message":"chore(reports): 回绑 @ a9fd6e8,check:evidence 全绿\n\n33 份已登记全部新鲜,0 过期 / 0 未提交输入 / 0 例外 / 0 告警。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/2dfbcb9148a7beabb926462eebb82645e548c10a","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-17T19:00:52-07:00","added":[],"removed":[],"modified":["reports/caddy.latest.json","reports/catalog-drift.latest.json","reports/catalog-reconciliation.latest.json","reports/evidence-freshness.latest.json","reports/facts.latest.json","reports/fixtures.latest.json","reports/migration-decs.latest.json","reports/module-imports.latest.json","reports/otel.latest.json","runtime/reports/agent-adapters.latest.json","runtime/reports/conformance-matrix.latest.json","runtime/reports/contract-consumers.latest.json","runtime/reports/docs-truth.latest.json","runtime/reports/dual-backend-parity.latest.json","runtime/reports/fork-readiness.latest.json","runtime/reports/governance-docs.latest.json","runtime/reports/governance-rules.latest.json","runtime/reports/governance-status.latest.json","runtime/reports/governance.latest.json","runtime/reports/migrations.latest.json","runtime/reports/naming.latest.json","runtime/reports/permission-catalog.latest.json","runtime/reports/platform-ops-definitions.latest.json","runtime/reports/runtime-governance.latest.json","runtime/reports/schema-sync.latest.json","runtime/reports/statemachine-write-guard.latest.json","runtime/reports/validation-source.latest.json"]},{"id":"a9fd6e826db77532ac3abfc149a9de822e40ea12","message":"chore(governance): 退役 stack-image-pins,check:evidence 首次转 passed\n\n目录负责人裁决:按该报告自己的例外里写的「倾向 ① 退役」执行。\n\n它与今日退役的另两份同类:仓内无生成脚本(2026-09-14 全仓搜索确认),是\n一次性手工产物,永远无法重跑,只能靠例外掩盖。其结论「compose 12 个镜像\n是否全按 digest 锁定」已由 governance/release-manifest.mjs 的\nparseComposeImages 完整覆盖——实测同为 12 条、0 未锁,且未锁时进 missing,\n由真脚本产出、自动保鲜,严格优于被退役的手工快照。\n\n- evidence-scopes:entries 34 → 33,exceptions 1 → 0(自此为空)\n- check-evidence-freshness 的成因注释保留 2026-09-14 那条实锤(它正是本门禁\n 存在的理由),但标注该报告已退役,免得后人去找一个不存在的文件\n\ncheck:evidence:**passed**,33 新鲜 / 0 过期 / 0 输入未提交 / 0 例外。\n这是它第一次不是 partial。governance 测试 277/277。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/a9fd6e826db77532ac3abfc149a9de822e40ea12","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-17T19:00:17-07:00","added":[],"removed":["reports/stack-image-pins.latest.json"],"modified":["governance/check-evidence-freshness.mjs","governance/evidence-scopes.json"]}],"total_commits":0,"head_commit":{"id":"2dfbcb9148a7beabb926462eebb82645e548c10a","message":"chore(reports): 回绑 @ a9fd6e8,check:evidence 全绿\n\n33 份已登记全部新鲜,0 过期 / 0 未提交输入 / 0 例外 / 0 告警。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/2dfbcb9148a7beabb926462eebb82645e548c10a","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-17T19:00:52-07:00","added":[],"removed":[],"modified":["reports/caddy.latest.json","reports/catalog-drift.latest.json","reports/catalog-reconciliation.latest.json","reports/evidence-freshness.latest.json","reports/facts.latest.json","reports/fixtures.latest.json","reports/migration-decs.latest.json","reports/module-imports.latest.json","reports/otel.latest.json","runtime/reports/agent-adapters.latest.json","runtime/reports/conformance-matrix.latest.json","runtime/reports/contract-consumers.latest.json","runtime/reports/docs-truth.latest.json","runtime/reports/dual-backend-parity.latest.json","runtime/reports/fork-readiness.latest.json","runtime/reports/governance-docs.latest.json","runtime/reports/governance-rules.latest.json","runtime/reports/governance-status.latest.json","runtime/reports/governance.latest.json","runtime/reports/migrations.latest.json","runtime/reports/naming.latest.json","runtime/reports/permission-catalog.latest.json","runtime/reports/platform-ops-definitions.latest.json","runtime/reports/runtime-governance.latest.json","runtime/reports/schema-sync.latest.json","runtime/reports/statemachine-write-guard.latest.json","runtime/reports/validation-source.latest.json"]},"repository":{"id":116,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"enterprise-platform","full_name":"luoanwu/enterprise-platform","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":17426,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/enterprise-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":42,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-11T07:33:25+08:00","updated_at":"2026-09-18T09:58:08+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
30
|
1789696856
|
1789696895
|
0
|
1789696856
|
1789696940
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23884
|
Merge pull request #2 from laoluojuhai/codex/gover Merge pull request #2 from laoluojuhai/codex/governance-port-ci...
|
116
|
5
|
platform.yml
|
14
|
5
|
0
|
refs/heads/main
|
0b13f1834fd75f1f6cdec1b89ddc6e639dea5f4e
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e5aca81c94597d4cb18cc65fa5b0855d4333aaf6","after":"0b13f1834fd75f1f6cdec1b89ddc6e639dea5f4e","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/e5aca81c94597d4cb18cc65fa5b0855d4333aaf6...0b13f1834fd75f1f6cdec1b89ddc6e639dea5f4e","commits":[{"id":"0b13f1834fd75f1f6cdec1b89ddc6e639dea5f4e","message":"Merge pull request #2 from laoluojuhai/codex/governance-port-ci\n\nfeat(governance): require independent port conformance evidence","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/0b13f1834fd75f1f6cdec1b89ddc6e639dea5f4e","author":{"name":"laoluojuhai","email":"158980461+laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"GitHub","email":"noreply@github.com","username":""},"verification":null,"timestamp":"2026-09-12T02:23:09-07:00","added":["docs/G-7治理门禁收口-2026-09-12.md","docs/owner-matrix.md","docs/runbook.md","governance/check-port-conformance.mjs","governance/lib/port-conformance.mjs","governance/test/port-conformance.test.mjs","reports/governance-g7.2026-09-12.json","reports/port-conformance.latest.json","stack/provision/nats-streams.sh"],"removed":[],"modified":[".github/workflows/platform.yml","CLAUDE.md","README.md","docs/MS-1发布与接入操作说明.md","governance/README.md","governance/bin/cli.mjs","governance/package.json","governance/test/verify-candidate.test.mjs","governance/verify-candidate.mjs","package.json","reports/caddy.latest.json","reports/catalog-drift.latest.json","reports/catalog-reconciliation.latest.json","reports/facts.latest.json","reports/fixtures.latest.json","reports/migration-decs.latest.json","reports/module-imports.latest.json","reports/release-manifest.latest.json","runtime/CLAUDE.md","runtime/reports/agent-adapters.latest.json","runtime/reports/baseline.json","runtime/reports/conformance-differential.latest.json","runtime/reports/conformance-matrix.latest.json","runtime/reports/contract-consumers.latest.json","runtime/reports/docs-truth.latest.json","runtime/reports/dual-backend-parity.latest.json","runtime/reports/fork-readiness.latest.json","runtime/reports/governance-docs.latest.json","runtime/reports/governance-rules.latest.json","runtime/reports/governance-status.latest.json","runtime/reports/governance.latest.json","runtime/reports/migrations.latest.json","runtime/reports/naming.latest.json","runtime/reports/runtime-acceptance.latest.json","runtime/reports/runtime-governance.latest.json","runtime/reports/schema-sync.latest.json","runtime/reports/statemachine-write-guard.latest.json","runtime/reports/ui-acceptance.latest.json","runtime/reports/validation-source.latest.json","stack/README.md","stack/compose.yaml"]},{"id":"756b29f122bf27e38b53b5625efa9802fd36c34d","message":"docs(governance): record seven-job CI and eligible eleven-report candidate\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/756b29f122bf27e38b53b5625efa9802fd36c34d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T02:14:29-07:00","added":[],"removed":[],"modified":["docs/G-7治理门禁收口-2026-09-12.md","reports/governance-g7.2026-09-12.json"]},{"id":"2c74f72be2b7e34cac1b3a80b7e6a41e58718f2c","message":"chore(reports): record clean G-7 governance and port acceptance\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/2c74f72be2b7e34cac1b3a80b7e6a41e58718f2c","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T02:02:35-07:00","added":["reports/governance-g7.2026-09-12.json","reports/port-conformance.latest.json"],"removed":[],"modified":["docs/G-7治理门禁收口-2026-09-12.md","reports/caddy.latest.json","reports/catalog-drift.latest.json","reports/catalog-reconciliation.latest.json","reports/facts.latest.json","reports/fixtures.latest.json","reports/migration-decs.latest.json","reports/module-imports.latest.json","runtime/reports/agent-adapters.latest.json","runtime/reports/conformance-matrix.latest.json","runtime/reports/contract-consumers.latest.json","runtime/reports/docs-truth.latest.json","runtime/reports/dual-backend-parity.latest.json","runtime/reports/fork-readiness.latest.json","runtime/reports/governance-docs.latest.json","runtime/reports/governance-rules.latest.json","runtime/reports/governance-status.latest.json","runtime/reports/governance.latest.json","runtime/reports/migrations.latest.json","runtime/reports/naming.latest.json","runtime/reports/runtime-governance.latest.json","runtime/reports/schema-sync.latest.json","runtime/reports/statemachine-write-guard.latest.json","runtime/reports/validation-source.latest.json"]},{"id":"3d04ef0550ffe068c8c8c768e90eea14ccba2aee","message":"feat(governance): require independent port conformance evidence for candidates\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/3d04ef0550ffe068c8c8c768e90eea14ccba2aee","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T02:00:38-07:00","added":["docs/G-7治理门禁收口-2026-09-12.md","governance/check-port-conformance.mjs","governance/lib/port-conformance.mjs","governance/test/port-conformance.test.mjs"],"removed":[],"modified":[".github/workflows/platform.yml","CLAUDE.md","README.md","docs/MS-1发布与接入操作说明.md","governance/README.md","governance/bin/cli.mjs","governance/package.json","governance/test/verify-candidate.test.mjs","governance/verify-candidate.mjs","package.json"]},{"id":"8d2356b0cd3519f796b1876cea20bf59ed915d35","message":"docs(platform): 当前状态 runtime 行改引混沌批次证据(runtime 381 / UI 5 @ 0999ec8;静态 @ a0359bf,报告 fb41598)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/8d2356b0cd3519f796b1876cea20bf59ed915d35","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T01:31:54-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]}],"total_commits":0,"head_commit":{"id":"0b13f1834fd75f1f6cdec1b89ddc6e639dea5f4e","message":"Merge pull request #2 from laoluojuhai/codex/governance-port-ci\n\nfeat(governance): require independent port conformance evidence","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/0b13f1834fd75f1f6cdec1b89ddc6e639dea5f4e","author":{"name":"laoluojuhai","email":"158980461+laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"GitHub","email":"noreply@github.com","username":""},"verification":null,"timestamp":"2026-09-12T02:23:09-07:00","added":["docs/G-7治理门禁收口-2026-09-12.md","docs/owner-matrix.md","docs/runbook.md","governance/check-port-conformance.mjs","governance/lib/port-conformance.mjs","governance/test/port-conformance.test.mjs","reports/governance-g7.2026-09-12.json","reports/port-conformance.latest.json","stack/provision/nats-streams.sh"],"removed":[],"modified":[".github/workflows/platform.yml","CLAUDE.md","README.md","docs/MS-1发布与接入操作说明.md","governance/README.md","governance/bin/cli.mjs","governance/package.json","governance/test/verify-candidate.test.mjs","governance/verify-candidate.mjs","package.json","reports/caddy.latest.json","reports/catalog-drift.latest.json","reports/catalog-reconciliation.latest.json","reports/facts.latest.json","reports/fixtures.latest.json","reports/migration-decs.latest.json","reports/module-imports.latest.json","reports/release-manifest.latest.json","runtime/CLAUDE.md","runtime/reports/agent-adapters.latest.json","runtime/reports/baseline.json","runtime/reports/conformance-differential.latest.json","runtime/reports/conformance-matrix.latest.json","runtime/reports/contract-consumers.latest.json","runtime/reports/docs-truth.latest.json","runtime/reports/dual-backend-parity.latest.json","runtime/reports/fork-readiness.latest.json","runtime/reports/governance-docs.latest.json","runtime/reports/governance-rules.latest.json","runtime/reports/governance-status.latest.json","runtime/reports/governance.latest.json","runtime/reports/migrations.latest.json","runtime/reports/naming.latest.json","runtime/reports/runtime-acceptance.latest.json","runtime/reports/runtime-governance.latest.json","runtime/reports/schema-sync.latest.json","runtime/reports/statemachine-write-guard.latest.json","runtime/reports/ui-acceptance.latest.json","runtime/reports/validation-source.latest.json","stack/README.md","stack/compose.yaml"]},"repository":{"id":116,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"enterprise-platform","full_name":"luoanwu/enterprise-platform","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":3254,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/enterprise-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":3,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-11T07:33:25+08:00","updated_at":"2026-09-12T17:15:23+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
26
|
1789205041
|
1789205074
|
0
|
1789205040
|
1789205096
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23509
|
feat(governance): 三项拍板落地——HTTP jobs kind 值域收窄 + 结果 feat(governance): 三项拍板落地——HTTP jobs kind 值域收窄 + 结果裁决角色闸 + RoleAssignmentDto 接线 (#3)...
|
76
|
5
|
governance.yml
|
10
|
5
|
0
|
refs/heads/main
|
c0ed7540c137f2a6828d24503a4c396156996f33
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e4b6a5e4925ba1a7234be9035af63c53fd77b945","after":"c0ed7540c137f2a6828d24503a4c396156996f33","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/e4b6a5e4925ba1a7234be9035af63c53fd77b945...c0ed7540c137f2a6828d24503a4c396156996f33","commits":[{"id":"c0ed7540c137f2a6828d24503a4c396156996f33","message":"feat(governance): 三项拍板落地——HTTP jobs kind 值域收窄 + 结果裁决角色闸 + RoleAssignmentDto 接线 (#3)\n\n三项 2026-08-20 拍板:① HTTP /api/jobs kind 值域收窄为 HTTP_ENQUEUEABLE_JOB_KINDS\n(内部作业 analysis/outcome.expire 入口即 400,消费门禁断言升级并负向验证);\n② 结果裁决角色闸 canResolveOutcome 单源(outcome confirm/dispute/attribution 收口\napprover/admin,判责矩阵与 approve 完全对等,G8 ⑥);③ /api/roles list/upsert 返回\n接线 contracts RoleAssignmentDto。另含发布快照推进 cf68476 与合并插坏段落修复。\n\n本地全链(2026-08-20):pnpm check exit 0 · check:runtime 378/378(地板 370→378)·\ncheck:ui 14/14。PR CI:头 cec3cd5 run 32375879119 两 job 全绿(2395bfb 的 run #16 红\n为 G18 已档收尾偶发——378 测试全过仅 Fastify auth.rs256 收尾 TCP 未处理拒绝,\n等价复跑即绿,判责档案见 CLAUDE.md G18)。","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/c0ed7540c137f2a6828d24503a4c396156996f33","author":{"name":"laoluojuhai","email":"158980461+laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"GitHub","email":"noreply@github.com","username":""},"verification":null,"timestamp":"2026-08-20T07:30:53-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/roles.service.ts","apps/api-fastify/src/routes/outcomes.ts","apps/api-fastify/test/auth.roles.acceptance.test.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/src/outcomes/outcomes.controller.ts","apps/api-nestjs/src/outcomes/outcomes.module.ts","apps/api-nestjs/src/roles/roles.service.ts","apps/api-nestjs/test/auth.roles.acceptance.test.ts","apps/api-nestjs/test/http.acceptance.test.ts","packages/contracts/src/contracts.test.ts","packages/contracts/src/job.ts","packages/contracts/src/outcome.ts","packages/contracts/src/tenant.ts","reports/agent-adapters.latest.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-contract-consumers.mjs"]},{"id":"cf684760ca7c7d1580ffd27e4ab28726ab8a7636","message":"fix(build): 串行化双 app prisma:generate——U6 竞态在本仓 CI 首次实锤(run #13)(#2)\n\nturbo 包级依赖 api-fastify#prisma:generate → api-nestjs#prisma:generate 全局串行化,\n消除共享 .prisma/client 输出的并行写坏竞态(main run #13 红盘根因,playbook U6)。\nPR merge-ref CI 两 job 全绿(run 32372272135)。","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/cf684760ca7c7d1580ffd27e4ab28726ab8a7636","author":{"name":"laoluojuhai","email":"158980461+laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"GitHub","email":"noreply@github.com","username":""},"verification":null,"timestamp":"2026-08-20T06:14:00-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/migration-playbook.md","reports/agent-adapters.latest.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json","turbo.json"]},{"id":"24eee9a94b903d2e24cf965a081eb8c38a0158e3","message":"fix(build): 串行化双 app prisma:generate——U6 竞态在本仓 CI 首次实锤(run #13)\n\nmerge 9f94390(PR #1)后的 main push run #13 红:两 app 的 prisma generate 被\nturbo 并行执行,共享输出 node_modules/.prisma/client/default.js 被写坏\n(default.js:5 SyntaxError: Unexpected token ')',NestJS 21 个测试套件加载即灭)。\n同一棵树半小时前在 PR merge-ref 全绿(run 32360248617)——纯概率性竞态,\n正是 playbook U6 预记的形态(上游实锤过,本仓 CI 首中)。\n\n修复(U6 自记的长期解法):turbo.json 增包级任务依赖\n api-fastify#prisma:generate dependsOn api-nestjs#prisma:generate\n全局串行化(CI / 本地 / 任何调用方同治),不改各包脚本与开发用法。\n\n验证:pnpm prisma:generate 连跑 3 次,两 generate 严格先后执行,\ndefault.js 每次 node --check 解析干净;pnpm check 静态全绿。\n回灌:playbook U6 补本仓实锤与已落地解法;CLAUDE.md 发布快照补 run #13 判责一笔。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01SPyuoU3B2ecKWLUDp1ogF4\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/24eee9a94b903d2e24cf965a081eb8c38a0158e3","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-08-20T13:04:20Z","added":[],"removed":[],"modified":["CLAUDE.md","docs/migration-playbook.md","reports/agent-adapters.latest.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json","turbo.json"]},{"id":"9f94390ac23dee9c3055f9d1d7ab4bca93f50ffa","message":"fix(governance): 全面治理修复——C25/C26/F8 + 文档真源回灌 + 对等修正与新断言 (#1)\n\n体检 → 修复 → 三轮与 main 汇合的完整治理轮。合并树实测:pnpm check exit 0 ·\ncheck:runtime 370/370 · check:ui 14/14;PR merge-ref CI 两 job 全绿(run 32360248617)。\n含 C26(棘轮地板采集只认 git 已跟踪文件)的唯一根因修复。详见 PR #1 描述与\ndocs/governance-experience.md C25/C26 战役记录。","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/9f94390ac23dee9c3055f9d1d7ab4bca93f50ffa","author":{"name":"laoluojuhai","email":"158980461+laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"GitHub","email":"noreply@github.com","username":""},"verification":null,"timestamp":"2026-08-20T05:53:19-07:00","added":[],"removed":["apps/api-fastify/pnpm-lock.yaml","apps/api-nestjs/pnpm-lock.yaml","apps/web/pnpm-lock.yaml"],"modified":["CLAUDE.md","apps/api-fastify/.env.example","apps/api-fastify/src/modules/learning.service.ts","apps/api-fastify/src/modules/triggers.service.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/routes/health.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/test/outcomes.integration.test.ts","apps/api-nestjs/.env.example","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/learning/learning.service.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/triggers/trigger-engine.service.ts","apps/api-nestjs/src/work/work.module.ts","apps/api-nestjs/test/outcomes.integration.test.ts","apps/web/src/app/layout.tsx","apps/web/src/app/page.tsx","apps/web/src/store/useAppStore.ts","docs/README.md","docs/adr/README.md","docs/governance-experience.md","docs/migration-playbook.md","packages/contracts/package.json","packages/contracts/src/index.ts","packages/contracts/src/learning.ts","packages/contracts/src/outcome.ts","packages/contracts/src/realtime-command.ts","packages/contracts/src/tenant.ts","packages/contracts/tsconfig.json","reports/agent-adapters.latest.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-fork-readiness.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs"]},{"id":"c22c7bcdbc589842e356b7a3ed3a7fc8fc9dc76b","message":"merge: 汇合 main 技能目录治理特性轮(5e00445..e4b6a5e)——三方合并全链绿\n\n冲突解决(并集原则):\n- 发布快照/证据行:取 main「第二次全绿 run 32355865911」事实 + 本轮「参数以 report\n 为准」纪律 + 补记 run #8 C26 判责;数字按合并树实测(54/363/370/14)\n- baseline 表:fork-readiness 取本轮 F8 版;agent-adapters(G21 闭环新门禁)取 main;\n own-tests/own-test-cases 取 C26 口径注记 + 合并树实测值\n- 缺口索引:C25/C26(本轮)与 G21(main)并集;G21 OPEN 段随 main 删除\n- 经验库:C25/C26 战役(本轮)+ G21 战役(main)并集\n- reports/baseline 合并后全链重跑再生成\n\n合并树验证(2026-08-20,基座重启后实跑):pnpm check exit 0(含 agent-adapters 新门禁 +\nC26 跟踪计数)· check:runtime 370/370(地板 368→370)· check:ui 14/14(地板 11→14)·\ngovernance 53→54/349→363 · 终检 exit 0\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01SPyuoU3B2ecKWLUDp1ogF4\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/c22c7bcdbc589842e356b7a3ed3a7fc8fc9dc76b","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-08-20T10:42:36Z","added":[".agents/skills/business-module-intake/SKILL.md","apps/api-fastify/src/modules/work/skills.service.ts","apps/api-fastify/src/routes/skills.ts","apps/api-nestjs/src/work/skills.controller.ts","apps/api-nestjs/src/work/skills.service.ts","apps/web/src/components/RoleAssignmentsPanel.tsx","apps/web/src/components/workbench/SkillPicker.tsx","packages/contracts/src/skill.test.ts","packages/contracts/src/skill.ts","reports/agent-adapters.latest.json","scripts/check-agent-adapters.mjs"],"removed":[],"modified":[".agents/skills/frontend-api-react/SKILL.md",".agents/skills/fullstack-7layer-react/SKILL.md","CLAUDE.md","apps/api-fastify/src/app.ts","apps/api-fastify/src/modules/triggers.service.ts","apps/api-fastify/src/modules/work/errors.ts","apps/api-fastify/src/modules/work/runtimes.service.ts","apps/api-fastify/src/modules/work/tasks.service.ts","apps/api-fastify/src/routes/triggers.ts","apps/api-fastify/src/routes/work.ts","apps/api-fastify/test/actor-events.integration.test.ts","apps/api-fastify/test/learning.concurrency.test.ts","apps/api-fastify/test/llm.acceptance.test.ts","apps/api-fastify/test/llm.anthropic.acceptance.test.ts","apps/api-fastify/test/outcomes.integration.test.ts","apps/api-fastify/test/task-events.integration.test.ts","apps/api-fastify/test/triggers.integration.test.ts","apps/api-fastify/test/work.integration.test.ts","apps/api-nestjs/src/triggers/triggers.service.ts","apps/api-nestjs/src/work/runtimes.service.ts","apps/api-nestjs/src/work/tasks.service.ts","apps/api-nestjs/src/work/work.module.ts","apps/api-nestjs/test/actor-events.integration.test.ts","apps/api-nestjs/test/learning.concurrency.test.ts","apps/api-nestjs/test/llm.acceptance.test.ts","apps/api-nestjs/test/llm.anthropic.acceptance.test.ts","apps/api-nestjs/test/outcomes.integration.test.ts","apps/api-nestjs/test/task-events.integration.test.ts","apps/api-nestjs/test/triggers.integration.test.ts","apps/api-nestjs/test/work.integration.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/app/page.tsx","apps/web/src/components/JobsPanel.tsx","apps/web/src/components/ProjectsPanel.tsx","apps/web/src/components/UsersPanel.tsx","apps/web/src/components/views/AutomationView.tsx","apps/web/src/components/views/SystemView.tsx","apps/web/src/components/views/TeamView.tsx","apps/web/src/components/views/WorkbenchView.tsx","apps/web/src/components/workbench/StateBadge.tsx","apps/web/src/components/workbench/TaskCreateForm.tsx","apps/web/src/components/workbench/TaskDetail.tsx","apps/web/src/components/workbench/TaskList.tsx","apps/web/src/lib/api.ts","apps/web/src/lib/providers.tsx","apps/web/src/lib/state-theme.ts","apps/web/src/lib/types.ts","docs/domain-glossary.md","docs/domain/learning-blueprint.md","docs/domain/owner-matrix.md","docs/domain/work-blueprint.md","docs/governance-experience.md","governance.registry.json","package.json","packages/contracts/src/index.ts","packages/contracts/src/llm.test.ts","packages/contracts/src/llm.ts","packages/contracts/src/realtime.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/governance-report.mjs"]}],"total_commits":0,"head_commit":{"id":"c0ed7540c137f2a6828d24503a4c396156996f33","message":"feat(governance): 三项拍板落地——HTTP jobs kind 值域收窄 + 结果裁决角色闸 + RoleAssignmentDto 接线 (#3)\n\n三项 2026-08-20 拍板:① HTTP /api/jobs kind 值域收窄为 HTTP_ENQUEUEABLE_JOB_KINDS\n(内部作业 analysis/outcome.expire 入口即 400,消费门禁断言升级并负向验证);\n② 结果裁决角色闸 canResolveOutcome 单源(outcome confirm/dispute/attribution 收口\napprover/admin,判责矩阵与 approve 完全对等,G8 ⑥);③ /api/roles list/upsert 返回\n接线 contracts RoleAssignmentDto。另含发布快照推进 cf68476 与合并插坏段落修复。\n\n本地全链(2026-08-20):pnpm check exit 0 · check:runtime 378/378(地板 370→378)·\ncheck:ui 14/14。PR CI:头 cec3cd5 run 32375879119 两 job 全绿(2395bfb 的 run #16 红\n为 G18 已档收尾偶发——378 测试全过仅 Fastify auth.rs256 收尾 TCP 未处理拒绝,\n等价复跑即绿,判责档案见 CLAUDE.md G18)。","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/c0ed7540c137f2a6828d24503a4c396156996f33","author":{"name":"laoluojuhai","email":"158980461+laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"GitHub","email":"noreply@github.com","username":""},"verification":null,"timestamp":"2026-08-20T07:30:53-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/roles.service.ts","apps/api-fastify/src/routes/outcomes.ts","apps/api-fastify/test/auth.roles.acceptance.test.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/src/outcomes/outcomes.controller.ts","apps/api-nestjs/src/outcomes/outcomes.module.ts","apps/api-nestjs/src/roles/roles.service.ts","apps/api-nestjs/test/auth.roles.acceptance.test.ts","apps/api-nestjs/test/http.acceptance.test.ts","packages/contracts/src/contracts.test.ts","packages/contracts/src/job.ts","packages/contracts/src/outcome.ts","packages/contracts/src/tenant.ts","reports/agent-adapters.latest.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-contract-consumers.mjs"]},"repository":{"id":76,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"digital-employee-os","full_name":"luoanwu/digital-employee-os","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1591,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/digital-employee-os/languages","html_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/digital-employee-os","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/digital-employee-os.git","clone_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-08-20T14:46:28+08:00","updated_at":"2026-08-20T18:03:08+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
8
|
1787327001
|
1787327074
|
0
|
1787326999
|
1787327074
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23723
|
docs(release): record verified trends scrolling de docs(release): record verified trends scrolling deployment...
|
57
|
5
|
governance.yml
|
94
|
5
|
0
|
refs/heads/main
|
9f10a4c02ce3566a3a92b468af23f96d75569b6b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e47221e4088fcbd22b6581846a9bfc8db5428256","after":"9f10a4c02ce3566a3a92b468af23f96d75569b6b","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/e47221e4088fcbd22b6581846a9bfc8db5428256...9f10a4c02ce3566a3a92b468af23f96d75569b6b","commits":[{"id":"9f10a4c02ce3566a3a92b468af23f96d75569b6b","message":"docs(release): record verified trends scrolling deployment\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/9f10a4c02ce3566a3a92b468af23f96d75569b6b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T11:57:17-07:00","added":["docs/releases/2026-09-08-trends-scroll1.md","reports/industry-trends-scroll-2026-09-08/backup-verification.json","reports/industry-trends-scroll-2026-09-08/browser-verification.json","reports/industry-trends-scroll-2026-09-08/deployed-verify.json","reports/industry-trends-scroll-2026-09-08/post-deployment-smoke.json"],"removed":[],"modified":["docs/governance/log/2026-09-08-industry-trends-scroll.md","docs/releases/current.md","reports/industry-trends-scroll-2026-09-08/README.md"]}],"total_commits":0,"head_commit":{"id":"9f10a4c02ce3566a3a92b468af23f96d75569b6b","message":"docs(release): record verified trends scrolling deployment\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/9f10a4c02ce3566a3a92b468af23f96d75569b6b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T11:57:17-07:00","added":["docs/releases/2026-09-08-trends-scroll1.md","reports/industry-trends-scroll-2026-09-08/backup-verification.json","reports/industry-trends-scroll-2026-09-08/browser-verification.json","reports/industry-trends-scroll-2026-09-08/deployed-verify.json","reports/industry-trends-scroll-2026-09-08/post-deployment-smoke.json"],"removed":[],"modified":["docs/governance/log/2026-09-08-industry-trends-scroll.md","docs/releases/current.md","reports/industry-trends-scroll-2026-09-08/README.md"]},"repository":{"id":57,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":674689,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":7,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T02:50:31+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788893856
|
1788893893
|
0
|
1788893854
|
1788893893
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23547
|
fix(ci): full-history checkout so F5 can verify re fix(ci): full-history checkout so F5 can verify report provenance...
|
91
|
5
|
governance.yml
|
5
|
5
|
0
|
refs/heads/main
|
fed53f136145fe82cb7dc0a4ee7b8b5453bfddd0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e465f302d62150997d35782bfec2304043dd605d","after":"fed53f136145fe82cb7dc0a4ee7b8b5453bfddd0","compare_url":"https://gitea.g-hi.com/luoanwu/qwen3-8-flash-next/compare/e465f302d62150997d35782bfec2304043dd605d...fed53f136145fe82cb7dc0a4ee7b8b5453bfddd0","commits":[{"id":"fed53f136145fe82cb7dc0a4ee7b8b5453bfddd0","message":"fix(ci): full-history checkout so F5 can verify report provenance\n\nCI run #4 实锤:actions/checkout 默认 depth-1 浅克隆只含当前提交,\nfork-readiness F5 校验验收报告 provenance.gitSha(166f9b3,真实祖先)\n时 git cat-file 查无此 commit,把本仓真证据误判为外仓伪证。两 job 均\nfetch-depth: 0(历史极小,零成本);不给 F5 加浅克隆豁免——豁免正是\n它要防的伪证通道。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/qwen3-8-flash-next/commit/fed53f136145fe82cb7dc0a4ee7b8b5453bfddd0","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-29T18:49:49-07:00","added":[],"removed":[],"modified":[".github/workflows/governance.yml"]}],"total_commits":0,"head_commit":{"id":"fed53f136145fe82cb7dc0a4ee7b8b5453bfddd0","message":"fix(ci): full-history checkout so F5 can verify report provenance\n\nCI run #4 实锤:actions/checkout 默认 depth-1 浅克隆只含当前提交,\nfork-readiness F5 校验验收报告 provenance.gitSha(166f9b3,真实祖先)\n时 git cat-file 查无此 commit,把本仓真证据误判为外仓伪证。两 job 均\nfetch-depth: 0(历史极小,零成本);不给 F5 加浅克隆豁免——豁免正是\n它要防的伪证通道。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/qwen3-8-flash-next/commit/fed53f136145fe82cb7dc0a4ee7b8b5453bfddd0","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-29T18:49:49-07:00","added":[],"removed":[],"modified":[".github/workflows/governance.yml"]},"repository":{"id":91,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"qwen3-8-flash-next","full_name":"luoanwu/qwen3-8-flash-next","description":"Qwen3.8-Flash-Next 本地部署与多模态 Chat/RAG 工作台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":2985,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/qwen3-8-flash-next/languages","html_url":"https://gitea.g-hi.com/luoanwu/qwen3-8-flash-next","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/qwen3-8-flash-next","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/qwen3-8-flash-next.git","clone_url":"https://gitea.g-hi.com/luoanwu/qwen3-8-flash-next.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-08-30T09:20:06+08:00","updated_at":"2026-08-30T09:45:30+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
8
|
1788054595
|
1788054676
|
0
|
1788054593
|
1788054676
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
24200
|
chore(reports): identity docs-truth 回绑 @ 1f3ff8c — chore(reports): identity docs-truth 回绑 @ 1f3ff8c —— 含新增的两条 freshness 断言...
|
116
|
5
|
platform.yml
|
166
|
5
|
0
|
refs/heads/main
|
6687aecfababeb5c03b9fa56d306e8212e79e107
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e3b9d12525448038fd8d8ac3f3c1470552ce4ff7","after":"6687aecfababeb5c03b9fa56d306e8212e79e107","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/e3b9d12525448038fd8d8ac3f3c1470552ce4ff7...6687aecfababeb5c03b9fa56d306e8212e79e107","commits":[{"id":"6687aecfababeb5c03b9fa56d306e8212e79e107","message":"chore(reports): identity docs-truth 回绑 @ 1f3ff8c —— 含新增的两条 freshness 断言\n\n绑 1f3ff8c、worktreeDirty=false、docsTruthViolations=0。该门禁自身零依赖,故在 HEAD 的\n干净 worktree 里直接 node 即可跑出,不需要 install。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/6687aecfababeb5c03b9fa56d306e8212e79e107","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T17:24:55-07:00","added":[],"removed":[],"modified":["identity/reports/docs-truth.latest.json"]},{"id":"1f3ff8c8f7d688955cc786f83cc79cc21fd73cc2","message":"feat(identity): check:docs-truth 补 freshness-sha 断言,证据处置出口 ② 落地\n\na48cbd6 登记的二选一出口,门禁 Owner 取 ②。identity 的报告此前两头都照不到:\nidentity/reports 不在 governance/check-evidence-freshness.mjs 的扫描面内(那边只扫\nreports/ 与 runtime/reports/),而 identity 自带的 check:docs-truth 有 0 条 freshness\n断言(runtime 版有 4 条)。当日实测它已真的漂了一次——动态区写 255 / 12 @ 85d538b,\n报告实际是 25ead3e(261 项)与 90cda56(UI 12)。\n\n口径移植自 runtime/scripts/check-docs-truth.mjs,保留其三条设计判断,逐条都有理由:\n\n 刻意不含静态级——governance.latest.json 每次 check 都重绑当时 HEAD,对它断言等价于\n 「每次提交都必须改文档」,提交报告后必红,那是会误杀的门禁不是有牙的门禁。\n\n 未接线的级别跳过而不是判红——恒红门禁不携带信息。本仓只接了 check:runtime 与 check:ui,\n 故只有这两条;deployment / production 两级在 identity 不存在,未列入。\n\n 必须是声明形式——上游实锤过一次自我假绿:条目为说明陈旧度写了提交区间 A..B,裸 includes\n 命中散文里的顺带提及,于是「文档声明 A、报告是 B」这个断言唯一要防的形态被整个绕过。\n\n与上游的唯一差异:本仓动态区写法是 clean commit `sha`(上游是 clean `sha`),两种都认——\n让断言认识本仓真实措辞,而不是为迁就工具去改文档。\n\n负向三项实做:① 把 runtime 条目 SHA 改回 85d538b → exit 1 并点名期望形式;② SHA 只出现在\n提交区间里(clean commit `85d538b`(区间 85d538b..25ead3e))→ 仍 exit 1,即上游那条陷阱\n在本仓也拦得住;③ UI 条目单独篡改 → exit 1。三项还原后均 exit 0。\n\nevidence-scopes 的处置说明同步更新:② 标记为已实施并记下负向证据;① 明示未做且暂不做\n(identity 按仓纪律 7 本就与根链分离,扩面会把 15 份一次性拖进根链账),现状是「identity\n的报告由 identity 自己的门禁守新鲜度」,边界清楚。本条仍随 PF-07 阶段 2 折入后作废。\n\n报告未随本提交:identity/reports/docs-truth.latest.json 我跑出来的那份绑脏树,已还原,\n按纪律在干净检出重出后另起 chore(reports)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/1f3ff8c8f7d688955cc786f83cc79cc21fd73cc2","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T17:24:38-07:00","added":[],"removed":[],"modified":["governance/evidence-scopes.json","identity/scripts/check-docs-truth.mjs"]},{"id":"a0145351979f7cf18de29b182000f791d6f5de05","message":"chore(reports): release-manifest 与 port-conformance 回绑 @ e3b9d12 —— 离线可跑的那批收口\n\n排查 7 条过期证据后分三组:A 组离线可跑、B 组要重建镜像并重启容器、C 组要真实 DB / Redpanda 验收。\n本次收 A 组。sbom 那条已由并行会话 e3b9d12 先收(包清单一字未变,因为镜像还是 106 个提交前那个),\n故 A 组实收两条。\n\n- release-manifest:结论仍是 partial,缺 signature(缺少与本次 registry 镜像绑定且 cosign 验证成功的\n 签名,§3A D-2)。回绑的是「当前确实缺这一项」这个事实,不是把它跑绿。\n- port-conformance:passed。\n\n回绑做法同前几次:企业控制面/.worktrees/rebind-a 开 detached 干净检出(HEAD e3b9d12),软链主检出的\nnode_modules(写进本地 info/exclude,用后删除),build contracts / modules / clients 后逐条跑,\n只把这两份 report 拷回主检出、按 pathspec 单独提交——主检出里并行会话另有十余份报告 WIP,一份没碰。\n\n过程中一处返工:首次跑 port-conformance 失败于 `Command \"vitest\" not found`——runtime/test 是独立\nworkspace 包,我第一轮软链只覆盖了 modules / packages / apps / clients,漏了它。补上软链后 passed。\n失败那份报告没有拷回。\n\n结果:两份 provenance 均 gitSha=e3b9d12、worktreeDirty=false;e3b9d12..HEAD 未触及这两份的作用域输入,\n绑定仍成立。\n\n未收(已登记,需你决定):\n B 组 deployed-runtime —— BUILT_IMAGE_SOURCE_BEHIND,运行容器镜像源 05e3826,HEAD 已有 23 个运行时\n 输入变更(其中含本会话接线那批 fixture-evaluator 与夹具)。要 image:build 重建 + 重启 runtime 容器。\n C 组 runtime-acceptance / mainline-acceptance / revocation-sla —— 要真实 PostgreSQL + Redis + Redpanda\n 验收;本机 dev 底座 13 个容器在跑,但会真实读写隔离库。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/a0145351979f7cf18de29b182000f791d6f5de05","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T17:24:14-07:00","added":[],"removed":[],"modified":["reports/port-conformance.latest.json","reports/release-manifest.latest.json"]}],"total_commits":0,"head_commit":{"id":"6687aecfababeb5c03b9fa56d306e8212e79e107","message":"chore(reports): identity docs-truth 回绑 @ 1f3ff8c —— 含新增的两条 freshness 断言\n\n绑 1f3ff8c、worktreeDirty=false、docsTruthViolations=0。该门禁自身零依赖,故在 HEAD 的\n干净 worktree 里直接 node 即可跑出,不需要 install。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/6687aecfababeb5c03b9fa56d306e8212e79e107","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T17:24:55-07:00","added":[],"removed":[],"modified":["identity/reports/docs-truth.latest.json"]},"repository":{"id":116,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"enterprise-platform","full_name":"luoanwu/enterprise-platform","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":21967,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/enterprise-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":44,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-11T07:33:25+08:00","updated_at":"2026-09-19T08:22:46+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
3
|
33
|
1789778117
|
1789778261
|
0
|
1789777575
|
1789778290
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24085
|
docs(框架): FR-6 提交框架 Owner——在送达入口 README 登记待受理
|
117
|
5
|
governance.yml
|
52
|
5
|
0
|
refs/heads/main
|
5b7a1c033ef290f7fa48f58bf0eae5eaa38150aa
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e393d2db524e2c16a517866d412b1d039c01640a","after":"5b7a1c033ef290f7fa48f58bf0eae5eaa38150aa","compare_url":"https://gitea.g-hi.com/luoanwu/platform-governance/compare/e393d2db524e2c16a517866d412b1d039c01640a...5b7a1c033ef290f7fa48f58bf0eae5eaa38150aa","commits":[{"id":"5b7a1c033ef290f7fa48f58bf0eae5eaa38150aa","message":"docs(框架): FR-6 提交框架 Owner——在送达入口 README 登记待受理\n\nFR-6 的正文 2026-09-18 已写入 基础设施仓框架变更请求-2026-09-12.md(48c5a9c),\n但那份文档本身不是送达入口:框架 Owner 是从 工程基础框架/README.md 的变更请求\n条目看待办的(FR-1 / FR-4 / FR-5 与另两份平台治理的请求都是这么送达并受理的)。\n此前只写了正文没更新入口,等于没提。\n\nREADME 该条更新为:FR-1 已落地 0.19.0、FR-4 / FR-5 已落地 0.20.0、**FR-6 新提\n待受理**、FR-2 / FR-3 仍未受理,并就地摘出 FR-6 的请求与依据:\n\ncheck:docs-truth 的四级证据新鲜度须按「该级别是否已接线」判定。起因是基础设施仓\n同步到 0.22.0 时实测,新增的制品部署 / 生产运维两级依赖 apps/api-nestjs/Dockerfile,\n而那份里有 COPY packages/kernel/package.json——该仓按 DEC-010 / DEC-031 只 exact\npin 已发布的 @juhai/kernel,仓内不存在 packages/kernel,构建必然失败,这道门禁\n在该仓只能恒红。恒红门禁不携带信息,正是 0.22.0 自己要治的失效模式的反面。\n\n请求对应 pnpm 脚本存在则断言照旧、不存在则 SKIPPED,不接受占位报告;接线了却让\n报告陈旧的仓仍照旧判红。影响面是框架仓单点改动加一条负向用例。基础设施仓已本地\n修正并在改动处注释指向 FR-6,受理后删除该段回到框架原文。\n\n未触碰框架仓 base-framework(其工作区有 12 项他人在途改动)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/5b7a1c033ef290f7fa48f58bf0eae5eaa38150aa","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-17T23:57:57-07:00","added":["平台治理/企业应用群总架构-2026-09-17.md","平台治理/基础/分层模型-图3-三类流量与降级.svg"],"removed":[],"modified":["工程基础框架/README.md"]}],"total_commits":0,"head_commit":{"id":"5b7a1c033ef290f7fa48f58bf0eae5eaa38150aa","message":"docs(框架): FR-6 提交框架 Owner——在送达入口 README 登记待受理\n\nFR-6 的正文 2026-09-18 已写入 基础设施仓框架变更请求-2026-09-12.md(48c5a9c),\n但那份文档本身不是送达入口:框架 Owner 是从 工程基础框架/README.md 的变更请求\n条目看待办的(FR-1 / FR-4 / FR-5 与另两份平台治理的请求都是这么送达并受理的)。\n此前只写了正文没更新入口,等于没提。\n\nREADME 该条更新为:FR-1 已落地 0.19.0、FR-4 / FR-5 已落地 0.20.0、**FR-6 新提\n待受理**、FR-2 / FR-3 仍未受理,并就地摘出 FR-6 的请求与依据:\n\ncheck:docs-truth 的四级证据新鲜度须按「该级别是否已接线」判定。起因是基础设施仓\n同步到 0.22.0 时实测,新增的制品部署 / 生产运维两级依赖 apps/api-nestjs/Dockerfile,\n而那份里有 COPY packages/kernel/package.json——该仓按 DEC-010 / DEC-031 只 exact\npin 已发布的 @juhai/kernel,仓内不存在 packages/kernel,构建必然失败,这道门禁\n在该仓只能恒红。恒红门禁不携带信息,正是 0.22.0 自己要治的失效模式的反面。\n\n请求对应 pnpm 脚本存在则断言照旧、不存在则 SKIPPED,不接受占位报告;接线了却让\n报告陈旧的仓仍照旧判红。影响面是框架仓单点改动加一条负向用例。基础设施仓已本地\n修正并在改动处注释指向 FR-6,受理后删除该段回到框架原文。\n\n未触碰框架仓 base-framework(其工作区有 12 项他人在途改动)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/5b7a1c033ef290f7fa48f58bf0eae5eaa38150aa","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-17T23:57:57-07:00","added":["平台治理/企业应用群总架构-2026-09-17.md","平台治理/基础/分层模型-图3-三类流量与降级.svg"],"removed":[],"modified":["工程基础框架/README.md"]},"repository":{"id":117,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"platform-governance","full_name":"luoanwu/platform-governance","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":9359,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance/languages","html_url":"https://gitea.g-hi.com/luoanwu/platform-governance","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/platform-governance.git","clone_url":"https://gitea.g-hi.com/luoanwu/platform-governance.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-15T11:53:24+08:00","updated_at":"2026-09-18T14:49:19+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
1
|
4
|
1789714681
|
1789714697
|
0
|
1789714680
|
1789714697
|
|
|
0
|
Edit
Delete
|
|
23435
|
Add Cantonese support and language contract valida Add Cantonese support and language contract validation...
|
63
|
5
|
governance.yml
|
4
|
5
|
0
|
refs/heads/main
|
bbe7744fc0df50ca87397478731523692d59a867
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e35b3d57744e6178a7c3fdeae0aab051c6f2408f","after":"bbe7744fc0df50ca87397478731523692d59a867","compare_url":"https://gitea.g-hi.com/luoanwu/forced-alignment/compare/e35b3d57744e6178a7c3fdeae0aab051c6f2408f...bbe7744fc0df50ca87397478731523692d59a867","commits":[{"id":"bbe7744fc0df50ca87397478731523692d59a867","message":"Add Cantonese support and language contract validation\n","url":"https://gitea.g-hi.com/luoanwu/forced-alignment/commit/bbe7744fc0df50ca87397478731523692d59a867","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T21:35:50-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/web/e2e/acceptance.spec.ts","apps/web/src/features/alignment/components/AlignmentWorkbench.tsx","packages/contracts/src/alignment.ts","packages/contracts/src/contracts.test.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"bbe7744fc0df50ca87397478731523692d59a867","message":"Add Cantonese support and language contract validation\n","url":"https://gitea.g-hi.com/luoanwu/forced-alignment/commit/bbe7744fc0df50ca87397478731523692d59a867","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T21:35:50-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/web/e2e/acceptance.spec.ts","apps/web/src/features/alignment/components/AlignmentWorkbench.tsx","packages/contracts/src/alignment.ts","packages/contracts/src/contracts.test.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":63,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"forced-alignment","full_name":"luoanwu/forced-alignment","description":"纯人声与歌词精准强制对齐工作台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":29630,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/forced-alignment/languages","html_url":"https://gitea.g-hi.com/luoanwu/forced-alignment","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/forced-alignment","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/forced-alignment.git","clone_url":"https://gitea.g-hi.com/luoanwu/forced-alignment.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-22T08:56:49+08:00","updated_at":"2026-07-22T11:43:48+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
6
|
1784694955
|
1784695046
|
0
|
1784694954
|
1784695047
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23867
|
docs(reports): record clean candidate and restore docs(reports): record clean candidate and restore regression at 7b72ee9...
|
116
|
5
|
platform.yml
|
5
|
5
|
0
|
refs/heads/main
|
2c26d9d48c606dcae4a86d8c8dcb1921b65f48d4
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e332908c794bfa0f3afbc59886fdf8c89c0486c8","after":"2c26d9d48c606dcae4a86d8c8dcb1921b65f48d4","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/e332908c794bfa0f3afbc59886fdf8c89c0486c8...2c26d9d48c606dcae4a86d8c8dcb1921b65f48d4","commits":[{"id":"2c26d9d48c606dcae4a86d8c8dcb1921b65f48d4","message":"docs(reports): record clean candidate and restore regression at 7b72ee9\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/2c26d9d48c606dcae4a86d8c8dcb1921b65f48d4","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T00:04:51-07:00","added":["docs/候选校验与恢复脚本修复记录-2026-09-12.md","reports/candidate-restore-regression.2026-09-12.json"],"removed":[],"modified":["reports/caddy.latest.json","reports/facts.latest.json","reports/migration-decs.latest.json","reports/module-imports.latest.json"]},{"id":"7b72ee95a3cb68cf2d0c620e6949ae81ef3edb0e","message":"fix(governance): reject incomplete candidate evidence and failed restore drills\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/7b72ee95a3cb68cf2d0c620e6949ae81ef3edb0e","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T00:03:45-07:00","added":["governance/test/restore-drill.test.mjs"],"removed":[],"modified":["governance/README.md","governance/test/verify-candidate.test.mjs","governance/verify-candidate.mjs","stack/README.md","stack/backup/restore-drill.sh"]},{"id":"cfcf8b6bc620857e266cdf05d9ac72db4a6d7b77","message":"chore(reports): refresh clean static evidence @ dc1a52c(S-6/S-7 后:runtime 213 / UI 5 绑定 723699d;地板 213)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/cfcf8b6bc620857e266cdf05d9ac72db4a6d7b77","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T00:01:48-07:00","added":[],"removed":[],"modified":["reports/caddy.latest.json","reports/catalog-drift.latest.json","reports/catalog-reconciliation.latest.json","reports/facts.latest.json","reports/fixtures.latest.json","reports/migration-decs.latest.json","reports/module-imports.latest.json","reports/release-manifest.latest.json","runtime/reports/agent-adapters.latest.json","runtime/reports/conformance-matrix.latest.json","runtime/reports/contract-consumers.latest.json","runtime/reports/docs-truth.latest.json","runtime/reports/dual-backend-parity.latest.json","runtime/reports/fork-readiness.latest.json","runtime/reports/governance-docs.latest.json","runtime/reports/governance-rules.latest.json","runtime/reports/governance-status.latest.json","runtime/reports/governance.latest.json","runtime/reports/migrations.latest.json","runtime/reports/naming.latest.json","runtime/reports/runtime-governance.latest.json","runtime/reports/schema-sync.latest.json","runtime/reports/statemachine-write-guard.latest.json","runtime/reports/validation-source.latest.json"]},{"id":"dc1a52c37af6b971f986bcfa5a7c2a92f88e84b5","message":"docs(runtime): record clean commit acceptance @ 723699d(runtime 213 / UI 5 / 差分 0,含 platform-tests 端口一致性夹具 14 例;地板收紧 testsPassed 213)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/dc1a52c37af6b971f986bcfa5a7c2a92f88e84b5","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T00:01:10-07:00","added":[],"removed":[],"modified":["runtime/CLAUDE.md","runtime/reports/baseline.json","runtime/reports/conformance-differential.latest.json","runtime/reports/runtime-acceptance.latest.json","runtime/reports/ui-acceptance.latest.json"]},{"id":"723699d09a76ae2fa9d22fb8d4672bf2a23ab6da","message":"feat(runtime): S-6 端口一致性共用夹具 + S-7 platform-tests 工作区包(e2e / chaos / ui 骨架,开发计划 §3A T-2—T-4)\n\n- runtime/test(`platform-tests`,进 pnpm-workspace 与 turbo test):port/platform-ports.conformance.ts 把框架 kernel/src/platform-ports.test.ts\n 参数化为 describePortConformance(label, factory, profile),不变量:四端口非空 name 且未配置 = 内核 fail-closed 对象;权限端口对任何输入只返回决策\n 永不抛错、拒绝带稳定 reasonCode;审计 / 事实出口 / 凭据未配置抛 PlatformPortNotConfiguredError、真实提供方拒畸形输入并返回契约形状;\n 内核 zod schema 拒绝缺上下文 / 原始载荷 / 越界 TTL。kernel-defaults.test.ts 先对 fail-closed 与 local 两束跑通(14 例)——模块 shape 提供方\n (Mx-2)与 @juhai/client-*(CL)接入后复用同一夹具。\n- e2e/mainline(6 段)、chaos/fail-closed(3 段)、ui/query-face(2 段)以 it.todo(\"pending-dec: …\") 登记(11 todo,机器可数),转实时删除 todo。\n- runtime 静态门禁 14 项 + lint + typecheck 通过(F7 无空目录)。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/723699d09a76ae2fa9d22fb8d4672bf2a23ab6da","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-11T23:58:57-07:00","added":["runtime/test/README.md","runtime/test/chaos/fail-closed.test.ts","runtime/test/e2e/mainline.test.ts","runtime/test/package.json","runtime/test/port/kernel-defaults.test.ts","runtime/test/port/platform-ports.conformance.ts","runtime/test/tsconfig.json","runtime/test/ui/query-face.test.ts","runtime/test/vitest.config.ts"],"removed":[],"modified":["runtime/pnpm-lock.yaml","runtime/pnpm-workspace.yaml"]}],"total_commits":0,"head_commit":{"id":"2c26d9d48c606dcae4a86d8c8dcb1921b65f48d4","message":"docs(reports): record clean candidate and restore regression at 7b72ee9\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/2c26d9d48c606dcae4a86d8c8dcb1921b65f48d4","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T00:04:51-07:00","added":["docs/候选校验与恢复脚本修复记录-2026-09-12.md","reports/candidate-restore-regression.2026-09-12.json"],"removed":[],"modified":["reports/caddy.latest.json","reports/facts.latest.json","reports/migration-decs.latest.json","reports/module-imports.latest.json"]},"repository":{"id":116,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"enterprise-platform","full_name":"luoanwu/enterprise-platform","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1723,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/enterprise-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-11T07:33:25+08:00","updated_at":"2026-09-12T14:06:35+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
22
|
1789196750
|
1789196774
|
0
|
1789196750
|
1789196793
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23546
|
chore(governance): refresh gate reports after CI p chore(governance): refresh gate reports after CI provisioning...
|
91
|
5
|
governance.yml
|
4
|
5
|
0
|
refs/heads/main
|
e465f302d62150997d35782bfec2304043dd605d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e20004f4776df6413cdfa4d0b49afdd9bea5b69e","after":"e465f302d62150997d35782bfec2304043dd605d","compare_url":"https://gitea.g-hi.com/luoanwu/qwen3-8-flash-next/compare/e20004f4776df6413cdfa4d0b49afdd9bea5b69e...e465f302d62150997d35782bfec2304043dd605d","commits":[{"id":"e465f302d62150997d35782bfec2304043dd605d","message":"chore(governance): refresh gate reports after CI provisioning\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/qwen3-8-flash-next/commit/e465f302d62150997d35782bfec2304043dd605d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-29T18:45:26-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"19e459216a9fd617ba77d9ae5242218d511bff0e","message":"feat(ci): provision Digital Employee OS source for check:os-product\n\nCI 的 os-product 门禁曾必然 fail-closed(runner 上无 OS 源码,G14 同族)。\n按拍板方案「提供 OS 源码」落地:\n\n- static-governance job 按 SHA 钉版(fcbd389,与本地验收口径一致)克隆\n 同实例私有仓 luoanwu/digital-employee-os 到 RUNNER_TEMP(工作区外,\n 防 naming/治理扫描误扫),frozen install + 构建 contracts 后跑 pnpm check\n- token 走 secrets.OS_CHECKOUT_TOKEN(GITEA_TOKEN 兜底)\n- 两 job Node 20→22(OS engines \u003e=22 与本仓 \u003e=20 取并集)\n\n冷启动配方已本地彩排(SHA 直取/安装/构建/check:os-product 绿),\n钉版负向已验(错 SHA → O0-SHA 红)。CI 首绿仍需仓库侧配置\nOS_CHECKOUT_TOKEN secret 与可用 runner。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/qwen3-8-flash-next/commit/19e459216a9fd617ba77d9ae5242218d511bff0e","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-29T18:45:03-07:00","added":[],"removed":[],"modified":[".github/workflows/governance.yml","CLAUDE.md"]}],"total_commits":0,"head_commit":{"id":"e465f302d62150997d35782bfec2304043dd605d","message":"chore(governance): refresh gate reports after CI provisioning\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/qwen3-8-flash-next/commit/e465f302d62150997d35782bfec2304043dd605d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-29T18:45:26-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},"repository":{"id":91,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"qwen3-8-flash-next","full_name":"luoanwu/qwen3-8-flash-next","description":"Qwen3.8-Flash-Next 本地部署与多模态 Chat/RAG 工作台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":2955,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/qwen3-8-flash-next/languages","html_url":"https://gitea.g-hi.com/luoanwu/qwen3-8-flash-next","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/qwen3-8-flash-next","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/qwen3-8-flash-next.git","clone_url":"https://gitea.g-hi.com/luoanwu/qwen3-8-flash-next.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-08-30T09:20:06+08:00","updated_at":"2026-08-30T09:35:41+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
6
|
1788054332
|
1788054370
|
0
|
1788054330
|
1788054372
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23504
|
fix(ci): tests-passing 解析器剥 ANSI——CI 彩色输出把 354 数成 fix(ci): tests-passing 解析器剥 ANSI——CI 彩色输出把 354 数成 0 触发地板假红...
|
76
|
5
|
governance.yml
|
5
|
5
|
0
|
refs/heads/main
|
6a3d263e9c83ec102cd45c7a7303926821bf02cf
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e17e315f20a61059ab3b48375897c5f5b6213bdc","after":"6a3d263e9c83ec102cd45c7a7303926821bf02cf","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/e17e315f20a61059ab3b48375897c5f5b6213bdc...6a3d263e9c83ec102cd45c7a7303926821bf02cf","commits":[{"id":"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","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/6a3d263e9c83ec102cd45c7a7303926821bf02cf","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-20T00:33:52-07:00","added":[],"removed":[],"modified":["scripts/check-runtime-acceptance.mjs"]}],"total_commits":0,"head_commit":{"id":"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","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/6a3d263e9c83ec102cd45c7a7303926821bf02cf","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-20T00:33:52-07:00","added":[],"removed":[],"modified":["scripts/check-runtime-acceptance.mjs"]},"repository":{"id":76,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"digital-employee-os","full_name":"luoanwu/digital-employee-os","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1123,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/digital-employee-os/languages","html_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/digital-employee-os","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/digital-employee-os.git","clone_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-08-20T14:46:28+08:00","updated_at":"2026-08-20T15:18:10+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
6
|
1787211237
|
1787211658
|
0
|
1787211236
|
1787211659
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23450
|
chore(reports): refresh post-merge acceptance evid chore(reports): refresh post-merge acceptance evidence...
|
54
|
5
|
governance.yml
|
5
|
5
|
0
|
refs/heads/main
|
02a656716b10d2a5a4937ba01086cbd0a9ff4b85
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e109e80574304306c9a5911d5e923d2dc7e6c0f4","after":"02a656716b10d2a5a4937ba01086cbd0a9ff4b85","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/e109e80574304306c9a5911d5e923d2dc7e6c0f4...02a656716b10d2a5a4937ba01086cbd0a9ff4b85","commits":[{"id":"02a656716b10d2a5a4937ba01086cbd0a9ff4b85","message":"chore(reports): refresh post-merge acceptance evidence\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/02a656716b10d2a5a4937ba01086cbd0a9ff4b85","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:34:39-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"02a656716b10d2a5a4937ba01086cbd0a9ff4b85","message":"chore(reports): refresh post-merge acceptance evidence\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/02a656716b10d2a5a4937ba01086cbd0a9ff4b85","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:34:39-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":883,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-03T12:24:18+08:00","updated_at":"2026-07-22T16:33:36+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
8
|
1784709310
|
1784709362
|
0
|
1784709310
|
1784709362
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
24089
|
chore(reports): check:evidence 回绑 @ 34fresh
|
116
|
5
|
platform.yml
|
113
|
5
|
0
|
refs/heads/main
|
0abd15c28dd2b92c583289934db660363b202fd4
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"df678ac14f88628a7bc48ce3b53e248f1b257e8b","after":"0abd15c28dd2b92c583289934db660363b202fd4","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/df678ac14f88628a7bc48ce3b53e248f1b257e8b...0abd15c28dd2b92c583289934db660363b202fd4","commits":[{"id":"0abd15c28dd2b92c583289934db660363b202fd4","message":"chore(reports): check:evidence 回绑 @ 34fresh\n\n37 份已登记、34 份新鲜、0 error;余 3 份过期为需真实容器重跑的验收报告\n(runtime-acceptance / mainline-acceptance / revocation-sla,warn 按设计)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/0abd15c28dd2b92c583289934db660363b202fd4","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T00:28:32-07:00","added":[],"removed":[],"modified":["reports/evidence-freshness.latest.json"]},{"id":"a4b3d356f9d2f7a831198787a5b19194f4f763c8","message":"chore(reports): 双后端差分验收重跑回绑 @ 746f323\n\n本轮把 conformance-differential 从「未登记的聚合报告」订正为登记条目后,它第一次\n被新鲜度门禁判为过期——触发者正是同轮改到的 check-conformance-differential.mjs,\n说明登记的作用域是对的。真实 DB + Redis 重跑:7 checkpoints × 2 backends,\n逐字段 0 differences。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/a4b3d356f9d2f7a831198787a5b19194f4f763c8","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T00:28:10-07:00","added":[],"removed":[],"modified":["runtime/reports/conformance-differential.latest.json"]},{"id":"746f323c203531c4ced5f3ca60ea29a4c53c7c4d","message":"chore(reports): 工作台两份快照回绑 @ adda76a\n\nrunbook §7 的订正落在运维快照作用域内(docs/runbook.md),经 reports:rebind 在\nHEAD 的干净检出里重跑,两份同源快照一并带回。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/746f323c203531c4ced5f3ca60ea29a4c53c7c4d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T00:27:33-07:00","added":[],"removed":[],"modified":["reports/workbench-catalog-snapshot.latest.json","reports/workbench-ops-snapshot.latest.json"]},{"id":"adda76acfd8fa046e1f2a320c15b5384b4ddef73","message":"fix(runtime): 前置守卫失败不得覆盖验收报告,并补「一模块一库」检查\n\n按 docs/runbook.md §7 的配方逐字重跑 runtime 验收,当场复现两个缺陷。\n\n一、配方本身是错的。§7 只写了 DATABASE_URL 与 REDIS_URL,而七个模块的\nprisma/schema.prisma 各自写死 url = env(\"DATABASE_URL_\u003cMODULE\u003e\")。照它执行时,\n前两步 nestjs/fastify-migrate-deploy 会通过,第三步 migrate-status 才以\nPrisma P1012 \"Environment variable not found\" 失败——报错指向 wasm 校验,\n完全看不出是环境没配齐。§7 已补齐七个变量,并写明 prepare-mainline.mjs\n只供给主线验收要的 5 个(fact/permission/audit/owner/consumer),差的四个要自己建。\n\n二、更要紧的:那次失败把 runtime-acceptance.latest.json 覆盖成了 status:failed。\n775/775 那份真实结论就此丢失,靠 git checkout 才救回——差一点被当作真实回归提交上去。\n根因是三个 runner 都无条件 writeFileSync:前置守卫失败意味着**验收根本没跑**,\n此时写一份 failed 报告不是诚实,是用操作者的环境问题顶替代码的结论,\n并且顺手销毁了上一次真的跑过的证据。三个 runner 统一改为前置失败即退出、不碰报告:\n check-runtime-acceptance 实测:报告 sha256 前后一致\n check-ui-acceptance 实测:缺 REDIS_URL 时报告 sha256 前后一致\n check-conformance-differential 实测:同上\n\n新增 preflightModuleDatabases + requiredModuleDatabaseEnvNames,把缺失的七个\n变量在动任何东西之前一次列清。变量名**现取自各模块 prisma/schema.prisma**,\n不写死清单:模块增减自动跟上,也避免抄错 ai-gateway 那个没有下划线的\nDATABASE_URL_AIGATEWAY。该检查只接进 runtime 验收——UI 与差分验收跑的是\n两个 app,不走一模块一库。\n\npnpm check 全链通过。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/adda76acfd8fa046e1f2a320c15b5384b4ddef73","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T00:26:48-07:00","added":[],"removed":[],"modified":["docs/runbook.md","runtime/scripts/check-conformance-differential.mjs","runtime/scripts/check-runtime-acceptance.mjs","runtime/scripts/check-ui-acceptance.mjs","runtime/scripts/lib/acceptance-base-guard.mjs"]}],"total_commits":0,"head_commit":{"id":"0abd15c28dd2b92c583289934db660363b202fd4","message":"chore(reports): check:evidence 回绑 @ 34fresh\n\n37 份已登记、34 份新鲜、0 error;余 3 份过期为需真实容器重跑的验收报告\n(runtime-acceptance / mainline-acceptance / revocation-sla,warn 按设计)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/0abd15c28dd2b92c583289934db660363b202fd4","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-18T00:28:32-07:00","added":[],"removed":[],"modified":["reports/evidence-freshness.latest.json"]},"repository":{"id":116,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"enterprise-platform","full_name":"luoanwu/enterprise-platform","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":18077,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/enterprise-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":42,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-11T07:33:25+08:00","updated_at":"2026-09-18T15:14:24+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
30
|
1789716516
|
1789716734
|
0
|
1789716516
|
1789716805
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23886
|
test(platform): keep dispatcher fixtures aligned w test(platform): keep dispatcher fixtures aligned with Redis client options...
|
83
|
5
|
governance.yml
|
4
|
5
|
0
|
refs/heads/main
|
c934bc46240daae849ad93cfacaa3b25c41b323f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"df46b98835ff77c7f4675e043d0869799fbb8d08","after":"c934bc46240daae849ad93cfacaa3b25c41b323f","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system/compare/df46b98835ff77c7f4675e043d0869799fbb8d08...c934bc46240daae849ad93cfacaa3b25c41b323f","commits":[{"id":"c934bc46240daae849ad93cfacaa3b25c41b323f","message":"test(platform): keep dispatcher fixtures aligned with Redis client options\n","url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system/commit/c934bc46240daae849ad93cfacaa3b25c41b323f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T02:38:16-07:00","added":[],"removed":[],"modified":["apps/api-nestjs/test/outbox.concurrency.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","packages/contracts/src/realtime-database.test.ts","scripts/with-platform-dev.mjs"]},{"id":"330a3287b5c0b68652d73af62cab45f99b0d5a84","message":"fix(platform): scope realtime channels for shared development Redis\n","url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system/commit/330a3287b5c0b68652d73af62cab45f99b0d5a84","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T02:26:46-07:00","added":["docs/platform-shared-dev.md","packages/contracts/src/realtime-database.test.ts","scripts/with-platform-dev.mjs"],"removed":[],"modified":[".gitignore","apps/api-fastify/src/plugins/events.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/realtime.tenant.test.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","packages/contracts/src/realtime.ts"]}],"total_commits":0,"head_commit":{"id":"c934bc46240daae849ad93cfacaa3b25c41b323f","message":"test(platform): keep dispatcher fixtures aligned with Redis client options\n","url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system/commit/c934bc46240daae849ad93cfacaa3b25c41b323f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T02:38:16-07:00","added":[],"removed":[],"modified":["apps/api-nestjs/test/outbox.concurrency.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","packages/contracts/src/realtime-database.test.ts","scripts/with-platform-dev.mjs"]},"repository":{"id":83,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhai-ai-hr-system","full_name":"luoanwu/juhai-ai-hr-system","description":"巨嗨 AI 人事系统:受治理全栈基础框架","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":4021,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-ai-hr-system/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-ai-hr-system","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-ai-hr-system.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-08-26T09:35:18+08:00","updated_at":"2026-09-12T16:53:52+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
6
|
1789206500
|
1789206529
|
0
|
1789206499
|
1789206529
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23887
|
test(platform): keep dispatcher fixtures aligned w test(platform): keep dispatcher fixtures aligned with Redis client options...
|
83
|
5
|
platform-governance.yml
|
5
|
5
|
0
|
refs/heads/main
|
c934bc46240daae849ad93cfacaa3b25c41b323f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"df46b98835ff77c7f4675e043d0869799fbb8d08","after":"c934bc46240daae849ad93cfacaa3b25c41b323f","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system/compare/df46b98835ff77c7f4675e043d0869799fbb8d08...c934bc46240daae849ad93cfacaa3b25c41b323f","commits":[{"id":"c934bc46240daae849ad93cfacaa3b25c41b323f","message":"test(platform): keep dispatcher fixtures aligned with Redis client options\n","url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system/commit/c934bc46240daae849ad93cfacaa3b25c41b323f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T02:38:16-07:00","added":[],"removed":[],"modified":["apps/api-nestjs/test/outbox.concurrency.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","packages/contracts/src/realtime-database.test.ts","scripts/with-platform-dev.mjs"]},{"id":"330a3287b5c0b68652d73af62cab45f99b0d5a84","message":"fix(platform): scope realtime channels for shared development Redis\n","url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system/commit/330a3287b5c0b68652d73af62cab45f99b0d5a84","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T02:26:46-07:00","added":["docs/platform-shared-dev.md","packages/contracts/src/realtime-database.test.ts","scripts/with-platform-dev.mjs"],"removed":[],"modified":[".gitignore","apps/api-fastify/src/plugins/events.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/realtime.tenant.test.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","packages/contracts/src/realtime.ts"]}],"total_commits":0,"head_commit":{"id":"c934bc46240daae849ad93cfacaa3b25c41b323f","message":"test(platform): keep dispatcher fixtures aligned with Redis client options\n","url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system/commit/c934bc46240daae849ad93cfacaa3b25c41b323f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-12T02:38:16-07:00","added":[],"removed":[],"modified":["apps/api-nestjs/test/outbox.concurrency.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","packages/contracts/src/realtime-database.test.ts","scripts/with-platform-dev.mjs"]},"repository":{"id":83,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhai-ai-hr-system","full_name":"luoanwu/juhai-ai-hr-system","description":"巨嗨 AI 人事系统:受治理全栈基础框架","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":4021,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-ai-hr-system/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-ai-hr-system","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-ai-hr-system.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-08-26T09:35:18+08:00","updated_at":"2026-09-12T16:53:52+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
1
|
8
|
1789206529
|
1789206583
|
0
|
1789206499
|
1789206583
|
|
|
0
|
Edit
Delete
|
|
23721
|
Merge branch 'fix/industry-trends-acceptance-2 Merge branch 'fix/industry-trends-acceptance-20260908'...
|
57
|
5
|
governance.yml
|
92
|
5
|
0
|
refs/heads/main
|
3338f1f47fc3a3579811531c9f75120b9bff50f7
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"df0737c36336ba0058da7486c943e56fbe7e4b26","after":"3338f1f47fc3a3579811531c9f75120b9bff50f7","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/df0737c36336ba0058da7486c943e56fbe7e4b26...3338f1f47fc3a3579811531c9f75120b9bff50f7","commits":[{"id":"3338f1f47fc3a3579811531c9f75120b9bff50f7","message":"Merge branch 'fix/industry-trends-acceptance-20260908'\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/3338f1f47fc3a3579811531c9f75120b9bff50f7","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T11:37:29-07:00","added":["docs/governance/log/2026-09-08-industry-trends-live.md","reports/industry-trends-live-2026-09-08/README.md"],"removed":[],"modified":["docs/deploy-vm.md"]},{"id":"7cde7d1b9e02631a6db1671c918e38d6b9f684bd","message":"docs(trends): verify live collection adoption and 502 recovery\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/7cde7d1b9e02631a6db1671c918e38d6b9f684bd","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T11:37:25-07:00","added":["docs/governance/log/2026-09-08-industry-trends-live.md","reports/industry-trends-live-2026-09-08/README.md"],"removed":[],"modified":["docs/deploy-vm.md"]}],"total_commits":0,"head_commit":{"id":"3338f1f47fc3a3579811531c9f75120b9bff50f7","message":"Merge branch 'fix/industry-trends-acceptance-20260908'\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/3338f1f47fc3a3579811531c9f75120b9bff50f7","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-08T11:37:29-07:00","added":["docs/governance/log/2026-09-08-industry-trends-live.md","reports/industry-trends-live-2026-09-08/README.md"],"removed":[],"modified":["docs/deploy-vm.md"]},"repository":{"id":57,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":674582,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":7,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T02:35:39+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788893279
|
1788893317
|
0
|
1788892662
|
1788893317
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
24002
|
chore(reports): 门禁回绑 @ defd9d7——根链全绿(含 runtime 静态门 chore(reports): 门禁回绑 @ defd9d7——根链全绿(含 runtime 静态门禁与 F8)、端口一致性 passed、evidence 32 份新鲜...
|
116
|
5
|
platform.yml
|
74
|
5
|
0
|
refs/heads/main
|
6fa07087d02c7fa5504b0a015c9564b6de131f9b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"defd9d729060bf91f2fb1f38c165ea6b27e28780","after":"6fa07087d02c7fa5504b0a015c9564b6de131f9b","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/defd9d729060bf91f2fb1f38c165ea6b27e28780...6fa07087d02c7fa5504b0a015c9564b6de131f9b","commits":[{"id":"6fa07087d02c7fa5504b0a015c9564b6de131f9b","message":"chore(reports): 门禁回绑 @ defd9d7——根链全绿(含 runtime 静态门禁与 F8)、端口一致性 passed、evidence 32 份新鲜\n\n在 clean HEAD defd9d7(审计 Q04 实现 e041207 + Grafana 业务配置 defd9d7 之后)重跑:check:pins / modules / module-imports / catalog / catalog:drift / fixtures(含 module-audit 26 例新规则)/ facts / migration-decs(41 迁移)/ caddy(docker)/ otel(promtool)/ governance 测试 283 例 / contracts check:local / runtime 全部静态门禁(fork-readiness 通过)/ check:evidence(32 份新鲜、9 条 warn 为需隔离底座重跑的验收类报告);check:port-conformance passed。退出码 0 / 0。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/6fa07087d02c7fa5504b0a015c9564b6de131f9b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-16T17:18:12-07:00","added":[],"removed":[],"modified":["reports/caddy.latest.json","reports/catalog-drift.latest.json","reports/catalog-reconciliation.latest.json","reports/evidence-freshness.latest.json","reports/facts.latest.json","reports/fixtures.latest.json","reports/migration-decs.latest.json","reports/module-imports.latest.json","reports/otel.latest.json","reports/port-conformance.latest.json","runtime/reports/agent-adapters.latest.json","runtime/reports/conformance-matrix.latest.json","runtime/reports/contract-consumers.latest.json","runtime/reports/docs-truth.latest.json","runtime/reports/dual-backend-parity.latest.json","runtime/reports/fork-readiness.latest.json","runtime/reports/governance-docs.latest.json","runtime/reports/governance-rules.latest.json","runtime/reports/governance-status.latest.json","runtime/reports/governance.latest.json","runtime/reports/migrations.latest.json","runtime/reports/naming.latest.json","runtime/reports/runtime-governance.latest.json","runtime/reports/schema-sync.latest.json","runtime/reports/statemachine-write-guard.latest.json","runtime/reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"6fa07087d02c7fa5504b0a015c9564b6de131f9b","message":"chore(reports): 门禁回绑 @ defd9d7——根链全绿(含 runtime 静态门禁与 F8)、端口一致性 passed、evidence 32 份新鲜\n\n在 clean HEAD defd9d7(审计 Q04 实现 e041207 + Grafana 业务配置 defd9d7 之后)重跑:check:pins / modules / module-imports / catalog / catalog:drift / fixtures(含 module-audit 26 例新规则)/ facts / migration-decs(41 迁移)/ caddy(docker)/ otel(promtool)/ governance 测试 283 例 / contracts check:local / runtime 全部静态门禁(fork-readiness 通过)/ check:evidence(32 份新鲜、9 条 warn 为需隔离底座重跑的验收类报告);check:port-conformance passed。退出码 0 / 0。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/6fa07087d02c7fa5504b0a015c9564b6de131f9b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-16T17:18:12-07:00","added":[],"removed":[],"modified":["reports/caddy.latest.json","reports/catalog-drift.latest.json","reports/catalog-reconciliation.latest.json","reports/evidence-freshness.latest.json","reports/facts.latest.json","reports/fixtures.latest.json","reports/migration-decs.latest.json","reports/module-imports.latest.json","reports/otel.latest.json","reports/port-conformance.latest.json","runtime/reports/agent-adapters.latest.json","runtime/reports/conformance-matrix.latest.json","runtime/reports/contract-consumers.latest.json","runtime/reports/docs-truth.latest.json","runtime/reports/dual-backend-parity.latest.json","runtime/reports/fork-readiness.latest.json","runtime/reports/governance-docs.latest.json","runtime/reports/governance-rules.latest.json","runtime/reports/governance-status.latest.json","runtime/reports/governance.latest.json","runtime/reports/migrations.latest.json","runtime/reports/naming.latest.json","runtime/reports/runtime-governance.latest.json","runtime/reports/schema-sync.latest.json","runtime/reports/statemachine-write-guard.latest.json","runtime/reports/validation-source.latest.json"]},"repository":{"id":116,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"enterprise-platform","full_name":"luoanwu/enterprise-platform","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":15296,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/enterprise-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":42,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-11T07:33:25+08:00","updated_at":"2026-09-17T08:16:38+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
34
|
1789604586
|
1789604624
|
0
|
1789604295
|
1789605987
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|