| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"b5e20b632a5e072db13a1f859fcc372643481938","after":"793dd5151bba6af78a871397ff4942dbe9da1622","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/b5e20b632a5e072db13a1f859fcc372643481938...793dd5151bba6af78a871397ff4942dbe9da1622","commits":[{"id":"793dd5151bba6af78a871397ff4942dbe9da1622","message":"Merge branch 'main' into codex/governance-findings-fix\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/793dd5151bba6af78a871397ff4942dbe9da1622","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-19T17:53:49-07:00","added":[],"removed":[],"modified":["runtime/apps/api-nestjs/test/platform.ports.compose.test.ts"]},{"id":"6d95f6140ae040316fa102ea01539dfdaa17b6c3","message":"fix(governance): keep integration output in the bound report\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/6d95f6140ae040316fa102ea01539dfdaa17b6c3","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-19T17:53:27-07:00","added":[],"removed":[],"modified":[".gitea/workflows/platform.yml",".github/workflows/platform.yml","governance/check-policy-governance.mjs"]},{"id":"04826671bcd84452bf0c562d5c2af6abace61225","message":"fix(runtime): 装配点的作业注册用例跟上「jobs 逐项须有处理器」——a64dc81 之后 check:runtime 的 test 步是红的\n\na64dc81 在 module-kit 的 defineModule 里加了对账:jobs 里每一项都必须有 jobHandler(待建作业只记在\ngovernance/job-readiness.json 的 deferred,不进 jobs)。kit 自己的单测跟着改了,装配点这一份没改:\napps/api-nestjs/test/platform.ports.compose.test.ts 的 registerModuleJobHandlers(S-2)两条用例,夹具还停在\n「jobs 可以列没有处理器的作业」的旧语义上,defineModule 当场抛错(「登记 2,处理器 1」「登记 1,处理器 0」)。\n\n根 pnpm check 不跑 api-nestjs 单测(runtime check = 静态门禁 + lint + typecheck),所以 a64dc81 过了整链、\n镜像也从 c165a1b 构建并切到了 dev。是在 clean 20f2211 的隔离 worktree 里重跑 check:runtime 才撞出来的:\n迁移 deploy / status、RLS 角色供给、双后端差分都过,test 步 exit 1,turbo 随即停止调度,880 例后中断。\n规则是对的,错的是夹具——改用例,不动规则:\n\n- 用例 1:jobs 由 [\"relay\",\"replay\"] 改为 [\"relay\"];「只注册登记过的作业、没登记的 kind 查不到」原意不变。\n- 用例 3:它要测的是 registerModuleJobHandlers 自己的守卫,须绕过 defineModule 造坏模块——底座先给一个合法\n 处理器让 defineModule 通过,再把 jobHandlers 换成 kind 不在 jobs 里的那个。\n- 增一条:jobs 列了却没有处理器 → defineModule 拒绝。新语义在装配点这一侧此前没有用例钉着。\n\n该文件单跑 11/11。完整 check:runtime 在本提交之后重跑,结果另行回绑。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/04826671bcd84452bf0c562d5c2af6abace61225","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-19T17:53:04-07:00","added":[],"removed":[],"modified":["runtime/apps/api-nestjs/test/platform.ports.compose.test.ts"]},{"id":"799ea50116e0b14382641c4039bcd9693420209b","message":"test(governance): load policy runtimes through the profile registry\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/799ea50116e0b14382641c4039bcd9693420209b","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-19T17:52:30-07:00","added":[],"removed":[],"modified":["runtime/apps/api-nestjs/test/platform.policy-http.test.ts"]},{"id":"c482794d1d62c793a8c8fd26710902dba41db323","message":"fix(governance): enforce policy authority and fence concurrent ledger writes\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/c482794d1d62c793a8c8fd26710902dba41db323","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-19T17:51:09-07:00","added":["docs/治理缺陷修复与dev验证记录-2026-09-20.md","governance/check-policy-governance.mjs","runtime/apps/api-nestjs/test/platform.policy-http.test.ts","runtime/modules/kit/src/policy-refresh.ts","runtime/modules/notification-webhook/src/http/policy-refresh.test.ts","runtime/modules/public-file/src/http/policy-refresh.test.ts","runtime/test/integration/policy-governance.mjs"],"removed":[],"modified":[".gitea/workflows/platform.yml",".github/workflows/platform.yml","CLAUDE.md","contracts/catalogs/permissions.json","contracts/contracts/notification-delivery-api.v1.openapi.json","contracts/contracts/public-file-object-api.v1.openapi.json","contracts/test/governance-linter.test.mjs","contracts/test/impact-graph.test.mjs","docs/作业可执行性收口-2026-09-19.md","governance/job-readiness.json","governance/test/job-readiness.test.mjs","package.json","runtime/apps/api-nestjs/src/platform/http/notification-webhook.controller.ts","runtime/apps/api-nestjs/src/platform/http/public-file.controller.ts","runtime/clients/notification-webhook/src/index.test.ts","runtime/clients/notification-webhook/src/index.ts","runtime/clients/public-file/src/index.test.ts","runtime/clients/public-file/src/index.ts","runtime/modules.json","runtime/modules/kit/src/index.ts","runtime/modules/kit/src/notification-webhook-runtime.ts","runtime/modules/kit/src/public-file-runtime.ts","runtime/modules/notification-webhook/src/http/notification-webhook-runtime.ts","runtime/modules/notification-webhook/src/index.ts","runtime/modules/notification-webhook/src/jobs/claim-expiry.ts","runtime/modules/notification-webhook/src/jobs/delivery-retry.ts","runtime/modules/notification-webhook/src/jobs/jobs.test.ts","runtime/modules/notification-webhook/src/persistence/delivery-store.ts","runtime/modules/notification-webhook/src/persistence/prisma-delivery-store.ts","runtime/modules/public-file/src/http/public-file-runtime.test.ts","runtime/modules/public-file/src/http/public-file-runtime.ts","runtime/modules/public-file/src/index.ts","runtime/modules/public-file/src/jobs/scan-retry.ts","runtime/modules/public-file/src/persistence/public-file-store.ts","runtime/package.json","runtime/packages/contracts/src/permission-catalog.ts","runtime/test/README.md"]}],"total_commits":0,"head_commit":{"id":"793dd5151bba6af78a871397ff4942dbe9da1622","message":"Merge branch 'main' into codex/governance-findings-fix\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/793dd5151bba6af78a871397ff4942dbe9da1622","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-19T17:53:49-07:00","added":[],"removed":[],"modified":["runtime/apps/api-nestjs/test/platform.ports.compose.test.ts"]},"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":26670,"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-20T08:20: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"}}... |