| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"35302bb5d50d227f0b40a50b4f88dec89865b3a2","after":"978aaeeb46174baca37960b898e7fd086cec6696","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/35302bb5d50d227f0b40a50b4f88dec89865b3a2...978aaeeb46174baca37960b898e7fd086cec6696","commits":[{"id":"978aaeeb46174baca37960b898e7fd086cec6696","message":"test(contracts): public-file 的 Catalog 断言改为 authority 口径\n\n6b3baf3 把 code_truth 指回模块目录后,契约包里那支断言仍停在 shape 期(code_truth === null,\n用例名也还写着 in shape state),整链第 17 环 contracts:check:local 判红。改为 authority 口径,\n并把两条规则的完整关系写进注释:catalog:drift 管 shape 侧(不得是代码真源),check:catalog 管\nauthority 侧(必须有代码真源)——这轮红过两次,两次都是只跑了其中一条。\n\ncontracts check:local 416 例全过。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/978aaeeb46174baca37960b898e7fd086cec6696","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-19T04:17:59-07:00","added":[],"removed":[],"modified":["contracts/test/governance-linter.test.mjs"]},{"id":"0799f069c8ef5369d80c9a7f1808fbbffb52e833","message":"chore(reports): catalog / drift / 两份快照回绑 @ 6b3baf3 —— 这次 catalog 真的是绿的\n\n6b3baf3 修好 code_truth 后重绑:catalog-reconciliation 门禁 exit 0(33ca9d0 那份记的是 exit 1 的失败结论,\n见 6b3baf3 的订正说明)。同批把 catalog-drift 与两份工作台快照绑到同一提交。\n\n顺带一条实测口径:整链 pnpm check 会在工作树里写报告(不走 GOV_REPORT_DIR),于是 reports:rebind 会因为\n\"在工作区未提交\"而跳过那几份——先 git checkout 掉整链的产物再绑,否则会静默少绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/0799f069c8ef5369d80c9a7f1808fbbffb52e833","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-19T04:15:17-07:00","added":[],"removed":[],"modified":["reports/catalog-drift.latest.json","reports/catalog-reconciliation.latest.json","reports/workbench-catalog-snapshot.latest.json","reports/workbench-ops-snapshot.latest.json"]},{"id":"6b3baf3a2e95444b1b5bfa7cda867c0273f3b7c2","message":"fix(catalog): public-file 的 code_truth 随 state=authority 指回模块目录 —— 并订正 33ca9d0 的一句错话\n\n整链 pnpm check 抓到:check:catalog 判 AUTHORITY_NO_TRUTH——模块 state=authority 但 Catalog\ncode_truth=null。两条规则合起来才是完整口径,我只跑了其中一条:\n- catalog:drift 的「shape 模块不得是 Catalog 代码真源」→ 建骨架那轮把 code_truth 置 null(正确);\n- check:catalog 的「authority 模块必须有代码真源」→ 474fcbb 把 state 翻成 authority 时该同步指回模块目录,\n 而我那轮只跑了 check:migration-decs / check:modules / check:stub-surface / catalog:drift,**没跑 check:catalog**。\n\n**同时订正一句错话**:33ca9d0 的提交说明写「逐份绑 673093a / dirty=false,各自门禁 exit 0」。\n实际上 reports:rebind 的输出里 catalog 那行明写着「门禁 exit 1」——回绑工具照常把报告带回来,\n但那份报告记的是失败结论,而我没看日志就断言全绿。本提交把 Catalog 修好、报告重绑(见随后一条),\n那句话以此为准更正:**33ca9d0 落地时 check:catalog 是红的,不是绿的**。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/6b3baf3a2e95444b1b5bfa7cda867c0273f3b7c2","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-19T04:14:16-07:00","added":[],"removed":[],"modified":["contracts/catalogs/platform-projects.json"]},{"id":"c1d6baa66052c8b6a544a66aaf63da09f4f52a38","message":"feat(governance): check:modules 增投影类模块准入——权威在仓外的模块只做投影\n\nCHG-022 §3.2 用九项准入条件替代「不新增 M8」,但九条里没有一条带上 C01\n自己的两条硬约束:权威是「获批的 Git 内容」、生成的快照与查询视图不可反向\n写入真源(C01 签收单第 9—10 行),以及禁止成为业务请求的同步依赖(接入模型\nL67 对 C01 规定的交付形态;AppManifest 与治理目录规范 L257 把「Registry 可用性\n成为所有业务请求的同步依赖」列为反模式)。两种误实现都不违反现有九条,门禁\n不会拦:把模块库当权威让 Git 退化成镜像,或把模块接进业务请求同步链。\n\n本提交守住可机器判定的那一半,三条规则只对显式登记 authority=\"external\"\n的模块生效——规则不猜哪个模块是投影,猜错会把真权威模块判成只读:\n\n PROJECTION_PROVIDES_PORT 投影模块不得 provides 内核端口(端口即权威接口)\n PROJECTION_CONTRACT_MISSING 声明的 http 契约在 contracts/contracts/ 找不到\n 同名文件即判红。失败关闭:找不到就无法判定只读,\n 不能当通过——这是 check:caddy 前缀覆盖那处空判的教训\n PROJECTION_CONTRACT_WRITES 契约含 GET / HEAD 之外的方法即判红\n\n今天仓里零个模块带该字段,规则处于待命态。它是给 C01 / C17 / C18 这类模块\n落地时用的,先于模块存在而存在,免得那两条约束在实现时被悄悄丢掉。\n\n「不进业务请求同步链」**不**在本规则内:那要看调用方怎么用,不在本仓可见面\n内,按 §3.2 第 10 条登记为人工复核项。不把没守的说成已守。\n\n判定逻辑独立成 governance/lib/projection-modules.mjs:check-modules.mjs 是平铺\n脚本、无 main() 守卫,测试一 import 就会把整道门禁跑起来,测不了。\n\n验证:新用例 8/8;check:modules 在真实仓通过(8 模块 / 投影 0);治理全量\n480 例 479 通过 0 失败 1 跳过(GOV_REPORT_DIR 重定向,reports/ 未动)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/c1d6baa66052c8b6a544a66aaf63da09f4f52a38","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-19T04:14:15-07:00","added":["governance/lib/projection-modules.mjs","governance/test/check-modules-projection.test.mjs"],"removed":[],"modified":["governance/check-modules.mjs"]},{"id":"636269e370e031b356124086d0bfbedba5465636","message":"chore(reports): port-conformance 回绑 @ fd5ab2c —— 新模块与改写后的客户端都在其扫描面内\n\n本轮新增 public-file 模块(provides 为空)与改写成远程调用的 client-public-file 都落在\nrunime/test/port 的一致性扫描面里,故该报告随之过期。主工作树干净时重跑,passed,绑 fd5ab2c。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/636269e370e031b356124086d0bfbedba5465636","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-19T04:12:10-07:00","added":[],"removed":[],"modified":["reports/port-conformance.latest.json"]}],"total_commits":0,"head_commit":{"id":"978aaeeb46174baca37960b898e7fd086cec6696","message":"test(contracts): public-file 的 Catalog 断言改为 authority 口径\n\n6b3baf3 把 code_truth 指回模块目录后,契约包里那支断言仍停在 shape 期(code_truth === null,\n用例名也还写着 in shape state),整链第 17 环 contracts:check:local 判红。改为 authority 口径,\n并把两条规则的完整关系写进注释:catalog:drift 管 shape 侧(不得是代码真源),check:catalog 管\nauthority 侧(必须有代码真源)——这轮红过两次,两次都是只跑了其中一条。\n\ncontracts check:local 416 例全过。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/978aaeeb46174baca37960b898e7fd086cec6696","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-19T04:17:59-07:00","added":[],"removed":[],"modified":["contracts/test/governance-linter.test.mjs"]},"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":23787,"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-19T17:41: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"}}... |