| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"c604db90d32a2193d58cce07418b264c71776375","after":"670ada2555e9286483476121f745b81cf7ef67bc","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/c604db90d32a2193d58cce07418b264c71776375...670ada2555e9286483476121f745b81cf7ef67bc","commits":[{"id":"670ada2555e9286483476121f745b81cf7ef67bc","message":"chore(reports): refresh identity logout evidence\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/670ada2555e9286483476121f745b81cf7ef67bc","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-21T00:51:19-07:00","added":[],"removed":[],"modified":["reports/doc-claims.latest.json","reports/facts.latest.json","reports/migration-decs.latest.json","reports/module-imports.latest.json","reports/stub-surface.latest.json","reports/workbench-catalog-snapshot.latest.json","reports/workbench-ops-snapshot.latest.json"]},{"id":"6373d8c31d77ea09766eee0a98bd0ea76cd0afa4","message":"test(identity): 后端注销分发环补无库单测——注入 deliverImpl + 内存 Prisma,覆盖投递 / 重试 / 死信与 kill switch 三种取值\n\nBackchannelLogoutDispatcherService 此前在 runtime 模块内没有任何测试:分发环靠默认开的\nIDP_BACKCHANNEL_DISPATCH_ENABLED 关,而六处验收 / 测试入口全部把它置 false,deliver / recordDelivered /\nrecordFailure 三段从未在任何门禁里被走到(governance/stub-surface.json 该条 reason)。\n\n新增 src/http/oidc/backchannel-logout-dispatcher.service.test.ts(11 例,不出网、不连库):\n- 投递成功:logout_token 用租户公钥验签且指向本会话,幂等键 = 投递 id,DELIVERED + 审计 + Outbox;\n- 5xx:回 PENDING、按 retryDelayMs(attempts) 排下次,不落审计 / Outbox / 安全事件;\n- 次数用尽:DEAD_LETTERED + 审计 + Outbox + critical 安全事件,告警载荷过 backchannelLogoutDeadLetterAlertSchema;\n- 停用客户端 / 无 URI → TARGET_UNAVAILABLE、未允许 loopback 的 http 与私网地址 → UNSAFE_TARGET,均终态且一次不外发;\n- 租户不可用 → SIGNING_UNAVAILABLE 重试;HTTP 之后租约被改走 → updateMany 0 行不补写审计 / Outbox;\n- kill switch:未设置起表并 tick 到 dispatchBatch、\"false\" 不起表、\"0\" 不算关(这正是它按 defaultOn 登记的原因)。\n领取 SQL(FOR UPDATE SKIP LOCKED、租约过期回收)是真实库语义,不在单测里伪造。\n\n同步改写三处口径:stub-surface.json 该条 reason、CLAUDE.md 的清单句、作业可执行性收口 09-21 补记——\n单测不满足 exitWhen 里「真实接收端回执断言」,登记不退场。\n\n模块套件 13 文件 135 例通过(此前 124);临时 tsconfig 对该文件 tsc --noEmit 通过;check:module-imports /\ncheck:stub-surface / check:doc-claims 单跑 exit 0;stub-surface 测试 27 / 27。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/6373d8c31d77ea09766eee0a98bd0ea76cd0afa4","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-21T00:49:06-07:00","added":["runtime/modules/identity/src/http/oidc/backchannel-logout-dispatcher.service.test.ts"],"removed":[],"modified":["CLAUDE.md","docs/作业可执行性收口-2026-09-19.md","governance/stub-surface.json"]}],"total_commits":0,"head_commit":{"id":"670ada2555e9286483476121f745b81cf7ef67bc","message":"chore(reports): refresh identity logout evidence\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/670ada2555e9286483476121f745b81cf7ef67bc","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-21T00:51:19-07:00","added":[],"removed":[],"modified":["reports/doc-claims.latest.json","reports/facts.latest.json","reports/migration-decs.latest.json","reports/module-imports.latest.json","reports/stub-surface.latest.json","reports/workbench-catalog-snapshot.latest.json","reports/workbench-ops-snapshot.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":31903,"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-21T15:42: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"}}... |