| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"28ea42cca5364bd425358f803436ae5c8f9bc687","after":"d0abf16e0287850cbb497074a866f1b35074dbb1","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/28ea42cca5364bd425358f803436ae5c8f9bc687...d0abf16e0287850cbb497074a866f1b35074dbb1","commits":[{"id":"d0abf16e0287850cbb497074a866f1b35074dbb1","message":"fix(test): auth.roles 升权审计断言按 subject 收窄——合并组合暴露的语义冲突\n\nCI run 32581362188 判责:本地线 C42 审计断言(查询租户全量 role.assigned 并断言恰好 2 条)\n与远端线 PR #3 新增的结果裁决闸用例(同租户内先授过一次 approver)在两条时间线上各自全绿,\n合并后首次同文件运行即互相污染——第 3 条审计事件令断言 3≠2 红。git 无冲突 ≠ 语义无冲突。\n\n修复由并行会话完成、本提交收编(两侧同款):审计断言先 filter(subject === \"u-upgrade\")\n再 toMatchObject——断言收窄到被测 subject,与其他用例的角色授予解耦。\n双端 auth.roles 已在一次性专属库(PG 55447 + Redis 6397/9)各 6/6 复现通过。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/d0abf16e0287850cbb497074a866f1b35074dbb1","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-22T08:28:23-07:00","added":[],"removed":[],"modified":["apps/api-fastify/test/auth.roles.acceptance.test.ts","apps/api-nestjs/test/auth.roles.acceptance.test.ts"]}],"total_commits":0,"head_commit":{"id":"d0abf16e0287850cbb497074a866f1b35074dbb1","message":"fix(test): auth.roles 升权审计断言按 subject 收窄——合并组合暴露的语义冲突\n\nCI run 32581362188 判责:本地线 C42 审计断言(查询租户全量 role.assigned 并断言恰好 2 条)\n与远端线 PR #3 新增的结果裁决闸用例(同租户内先授过一次 approver)在两条时间线上各自全绿,\n合并后首次同文件运行即互相污染——第 3 条审计事件令断言 3≠2 红。git 无冲突 ≠ 语义无冲突。\n\n修复由并行会话完成、本提交收编(两侧同款):审计断言先 filter(subject === \"u-upgrade\")\n再 toMatchObject——断言收窄到被测 subject,与其他用例的角色授予解耦。\n双端 auth.roles 已在一次性专属库(PG 55447 + Redis 6397/9)各 6/6 复现通过。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/d0abf16e0287850cbb497074a866f1b35074dbb1","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-22T08:28:23-07:00","added":[],"removed":[],"modified":["apps/api-fastify/test/auth.roles.acceptance.test.ts","apps/api-nestjs/test/auth.roles.acceptance.test.ts"]},"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":51197,"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-22T23:19: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"}}... |