| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0abd15c28dd2b92c583289934db660363b202fd4","after":"2d4b55254cd0b38f4ae1750038d4a6d9e2ebb30a","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/0abd15c28dd2b92c583289934db660363b202fd4...2d4b55254cd0b38f4ae1750038d4a6d9e2ebb30a","commits":[{"id":"2d4b55254cd0b38f4ae1750038d4a6d9e2ebb30a","message":"chore(reports): check:gate-flow 回绑 @ 574cfb7\n\n45 个脚本、33 个有消费入口、12 个流外且全部具名(门禁 4 / 工具 8)、0 违规。\n并行会话正在本仓改 Dockerfile 与底座,主工作区非干净树——经 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/2d4b55254cd0b38f4ae1750038d4a6d9e2ebb30a","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:09:55-07:00","added":["reports/gate-flow.latest.json"],"removed":[],"modified":[]},{"id":"f3ae97f3460699338d08efe3dd60ea69a3d49fa4","message":"feat(stack,runtime): dev 常驻运行时接上受控执行面与统一服务目录快照(CHG-018 条件 A 的目标环境半边)\n\ncompose 的 runtime 服务此前没有 PLATFORM_OPS_ENABLED / _CLIENT_IDS / _ADMIN_SUBJECTS,也没有\nPLATFORM_CATALOG_SNAPSHOT_PATH:OPS-1 的命令面在 dev 容器里根本不存在(定义 executable=false),\n/api/platform/catalog 的 snapshot 恒为 unavailable。仓内验收过的两个面没有任何一条路径到达运行环境,\nOPS-1 记录里「目标环境验收留阶段 ②」说的就是这一段。\n\n- stack/compose.yaml:四个键全部空默认值——不配置 = 不开命令面,而不是开着没人管\n- stack/overlays/dev.yaml:reports/workbench-catalog-snapshot.latest.json 只读挂到\n /srv/runtime/catalog-snapshot.json,快照绑的是它自己的 gitSha,不是本进程\n- runtime/Dockerfile:ENV PLATFORM_SOURCE_SHA=${SOURCE_SHA},与 OCI revision 标签同源;\n 缺它时目录读面只能报 source_sha_status=unknown,不从文件系统猜\n- docs/runbook.md:§2 环境表补两行,并写明改这四个键必须重建容器(restart 带不上新环境)\n\n本提交只改配置与镜像环境变量;镜像重建、容器切换与探针结果另行取证提交。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/f3ae97f3460699338d08efe3dd60ea69a3d49fa4","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:09:52-07:00","added":[],"removed":[],"modified":["docs/runbook.md","runtime/Dockerfile","stack/compose.yaml","stack/overlays/dev.yaml"]},{"id":"574cfb754278102c1588009c4af3a66dc2201777","message":"feat(governance): 补 check:gate-flow——每个门禁的失败信号有谁在看?\n\n治理层 2026-09-14 就为自己建了 `门禁消费登记.json` 逐条回答这个问题,并写明了病因:\n一个门禁若既不在统一流内、也不在任何 CI 链里,它就停在「永远红」或「永远绿」,\n两种都不再携带信息。本仓一直没问过这个问题。\n\n实测:根 package.json 44 个脚本里 12 个既不在 `pnpm check` 链、CI 也不调用。\n多数是工具与开发者聚合入口(已逐条核实其组成部分确被消费),但其中三个是真门禁:\n\n image:smoke CI 的 image job 构建镜像、生成 SBOM、签名,**却从不启动它一次**。\n 而开发计划把这六项冒烟写成 D-1 的退出条件。更要紧的是\n `image-smoke.latest.json` 在 evidence-scopes 的未登记账里写着\n 「待其下一次真实运行后登记」——而没有任何东西会触发那次运行,\n 于是那条搁置根本没有出口。本轮把它写成带复核期的具名条件。\n promotion:check DEC-024 / DEC-026 的晋级判据,事件驱动,硬接进 check 链只会恒绿\n check:deployed 活体核验,CI runner 上没有长驻底座,接进去等于加一个恒定跳过\n\n三个各有理由,但理由此前只散在 CLAUDE.md / README 的散文里,没有一条有复核期。\n\n**消费关系一律自动推导,不接受声明。** 治理层那套让登记表自报 consumption 再用 G3\n去源码里证伪;本仓直接从 check 链的递归展开与两份 CI 工作流现取——声明会撒谎,\n推导不会。CI 有几处绕开 pnpm 直接 `node governance/build-image.mjs`,因此除按名匹配\n外还按脚本里出现的 .mjs 路径匹配(用例钉住这两条与正则转义)。\n`governance/gate-flow.json` 因此只装推不出来的那些:随接线逐条变少(F2 会拦下\n已被消费却还留着的腐烂登记),也不能无声变多(F1 拦下任何新出现的未说明脚本)。\n\nF4 守的是日期不是条件:接入条件多半含人的判断(「Secret 到位后」「首次晋级时」),\n不可能机器化;能机器化的是必须有人按期回来看一眼。同形判据已在治理层\ngate-registry-core 的 G6 与 domain-layer-baseline 的 B4 上验证过:缓期不是豁免。\n\n已串进 `pnpm check`(放 check:evidence 之前,纯静态先跑先报),报告登记进\nevidence-scopes(severity=error,作用域逐条对应它实际读的文件),并加入\nreports:rebind 的零依赖清单——本仓常有并行会话,脏树上拿不到干净绑定。\n\n治理测试 283 → 298。当前:45 个脚本,33 个有消费入口,12 个流外且全部具名\n(门禁 4 / 工具 8)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/574cfb754278102c1588009c4af3a66dc2201777","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:09:11-07:00","added":["governance/check-gate-flow.mjs","governance/gate-flow.json","governance/lib/gate-flow-core.mjs","governance/test/gate-flow.test.mjs"],"removed":[],"modified":["governance/README.md","governance/evidence-scopes.json","governance/rebind-reports.mjs","package.json"]}],"total_commits":0,"head_commit":{"id":"2d4b55254cd0b38f4ae1750038d4a6d9e2ebb30a","message":"chore(reports): check:gate-flow 回绑 @ 574cfb7\n\n45 个脚本、33 个有消费入口、12 个流外且全部具名(门禁 4 / 工具 8)、0 违规。\n并行会话正在本仓改 Dockerfile 与底座,主工作区非干净树——经 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/2d4b55254cd0b38f4ae1750038d4a6d9e2ebb30a","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:09:55-07:00","added":["reports/gate-flow.latest.json"],"removed":[],"modified":[]},"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":18140,"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:28: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"}}... |