| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"54e6324c8b404aba56e1fa681cbcbe67019128c0","after":"7a4b69367b18f4e284218704981b54c0ee10d2b6","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/54e6324c8b404aba56e1fa681cbcbe67019128c0...7a4b69367b18f4e284218704981b54c0ee10d2b6","commits":[{"id":"7a4b69367b18f4e284218704981b54c0ee10d2b6","message":"test(contracts): 成本容量的门禁覆盖——29 个原因码只有 20 个在夹具上走过,M0 后计费字段禁入那条一片空白\n\n与同日 bdb662d(数据分析)同一套做法:把 29 个原因码逐条与夹具的实际产出比对——跑每个用例、\n收集真实返回值,不读代码推断。判定逻辑一行未改,resource-tags.ts 本轮零改动。\n\n1. 9 条从未在门禁上走过:\n - POST_M0_BINDING_FORBIDDEN:M0 阶段禁止把 invoice / price / budget / quota / chargeback 这类\n 计费与容量动作字段写进用量记录(23 个禁入词),是本域最靠近红线的一条,门禁上一片空白。\n - TAG_VALUE_INVALID:标签取值字符集。此前只有「缺标签」有夹具,「标签值乱写」没有。\n - CORRECTION_REFERENCE_INVALID:更正引用必须成对(id 与 reasonCode 同在或同不在)且不得自指。\n - SOURCE_CLASSIFICATION_DOWNGRADE:记录分级不得低于来源登记分级。\n - 六条基线旗标里除 G3_NOT_REACHED 外的全部五条:G5 产品窗口、应用登记、服务身份、审计、资源标签目录。\n\n2. 反方向 4 条门禁有、单测没有:RESOURCE_TAGS_INVALID / CONTENT_DIGEST_INVALID /\n METER_VERSION_INVALID / USAGE_LINEAGE_REQUIRED,补进单测。\n\n覆盖:夹具 32 → 41 例(正 3 / 反 38),新增 N30—N38 九例且每例只产出一条原因(逐例核过实际返回值);\n定向测试 28 → 32 例;原因码门禁覆盖 20/29 → 29/29,单测覆盖 25/29 → 29/29。上一轮用例一条未改。\n\n写单测时两处预期被实测推翻,按实现订正而不是反过来改实现——夹具与用例的作用正在于此:\n① RESOURCE_TAGS_INVALID 不是标签面自己报的码。assessResourceTags 对非对象入参报的是\n REQUIRED_TAG_MISSING 并把八个必填键全列进 missing;RESOURCE_TAGS_INVALID 是 assessUsageRecord\n 把「内嵌标签没过体检」收敛成的一条。\n② meterVersion 的 semver 模式接受预发布后缀,1.0.0-rc.1 合法。\n两条都写成用例固定住,免得下次被当成缺陷「修」掉。\n\n夹具变异探针(41 例真实 payload × 14 种脏值,走 evaluateFixturePayload 入口):\n22792 个变异点、0 处抛异常——daa226b 的硬化结论在扩面后仍成立。\n\n未做(越界):全资源计量账本、AI 成本明细(依赖 M7)一件未建,C19 按缺失模块完善清单仍是「裁决」;\nCatalog 登记未动。\n\n证据:pnpm --dir contracts build / typecheck 绿、check:generated 14 files / 12 schemas 无漂移、\nnode --test contracts/test/*.test.mjs 398/398、contract-cost-capacity 夹具 41/41 失败 0。\n负向实测:把 N32 的声明原因改成 USAGE_LINEAGE_REQUIRED → 门禁 exit 1 并点名该例\n(reasons=[\"POST_M0_BINDING_FORBIDDEN\"]),还原后 exit 0。本次不回绑任何 reports/。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/7a4b69367b18f4e284218704981b54c0ee10d2b6","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-18T16:09:29-07:00","added":[],"removed":[],"modified":["contracts/SOURCE.md","contracts/test/cost-capacity-domain.test.mjs","contracts/test/fixtures/cost-capacity.fixtures.json","docs/domain/resource-tags-blueprint.md"]},{"id":"557a95c4422518cf3d9fdff04d261114ab389169","message":"chore(release): 三包推到 1.0.0-rc.4——clients 扫描面与这轮 contracts 硬化一起上车\n\n发 rc.4 的直接动因:e61bfcf 给 check:module-imports 补的 clients 扫描面与两条规则\n(CLIENT_FORBIDDEN_IMPORT / ESCAPES_CLIENT)不在任何已发布版本里,而 @juhai/governance\n的 rc.0—rc.3 已全部被占用,按 G-12 的边界只能往前发下一个 RC。\n\n随车发出的远不止这些。自 rc.3 的源 036a308 起:\n contracts 147 个文件 / 51 条提交(九域规则的入参体检与门禁覆盖那一大轮)\n governance 61 个文件 / 48 条提交\n runtime/clients/fact 5 个文件 / 5 条提交\n三包版本一致,符合 CL-5「一次发布 = 一个 tag = 一组同版本包」;包目录单源仍是\ngovernance/release-packages.json。\n\n通道:本地旁路(G-12 第三次使用)。CI 正道 2026-09-18 实测双重不可用——GitHub Actions\n最近三次 run 全部 failure(账户计费,最新 35215270797 即 CLAUDE.md 记的那条注解),\n且 GitHub 镜像落后 237 条提交、因分支保护的 required check 跑不起来而推不动,\ne61bfcf 的代码根本不在 GitHub 上。按 G-12 边界,rc.4 同样不得宣称经过发布门禁验证。\n\n本次按 CL-5 补打 tag packages-v1.0.0-rc.4——rc.2 / rc.3 两趟都漏了这一步。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/557a95c4422518cf3d9fdff04d261114ab389169","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-18T16:08:15-07:00","added":[],"removed":[],"modified":["contracts/package.json","governance/package.json","runtime/clients/fact/package.json"]},{"id":"2c3928d388603168f2510c6f1450b41804c429cf","message":"test(contracts): 统一体验的 21 条原因码只有单测——门禁一条没有\n\n这是九个契约包里最后一块成规模的门禁空白,也是唯一一个判定与单测都齐全、只差夹具的域——所以本条\n一条单测都没加,补的全是夹具。\n\n21 条分四组:\n 贡献自身的体检(归属、类型、分级、双时间、投影修订与新鲜度、Owner Command 声明) 9 条\n 与来源登记的四项比对 4 条\n 派发前动作复核的会话 / 租户 / 源版本 / 幂等键 4 条\n 四条基线闸门真正未就绪时的阻断 4 条\n\n用例按语义写而不是删字段:类型 / 分级填不在册的值、生效时间不可解析、投影修订超过源修订、\nmaxAgeSeconds=1 触发过期、maxRevisionLag=0 触发落后、动作声明 reauthorize=false、会话 expired、\n源修订漂移 5。其中「登记前缀是壳根 /」是规则注释自己点名的红线——根前缀会让「登记应用前缀下」的约束\n失效,等于授权该应用深链到任意其他应用的路由,而门禁此前看不到这条。\n\n补:夹具 18 → 36 例(正 3 / 反 33)。本域「夹具无但单测有」由 21 归 0,「哪里都没有」保持 0。\n\n负向实测:把壳根那条的声明原因改成不会产生的串 → 门禁 exit 1 并点名该例,恢复后转绿。\n\n本条只补覆盖,没有改任何判定,也没有改单测;experience-contribution.ts 一行未动。\n九个域的门禁覆盖至此收口:「哪里都没有」全为 0,「夹具无但单测有」由 77 降至 29。\n\n证据:在仅含本提交改动的导出树上 tsc 绿、定向 35/35、contract-enterprise-experience 36/36。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/2c3928d388603168f2510c6f1450b41804c429cf","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-18T16:07:54-07:00","added":[],"removed":[],"modified":["contracts/SOURCE.md","contracts/test/fixtures/enterprise-experience.fixtures.json"]}],"total_commits":0,"head_commit":{"id":"7a4b69367b18f4e284218704981b54c0ee10d2b6","message":"test(contracts): 成本容量的门禁覆盖——29 个原因码只有 20 个在夹具上走过,M0 后计费字段禁入那条一片空白\n\n与同日 bdb662d(数据分析)同一套做法:把 29 个原因码逐条与夹具的实际产出比对——跑每个用例、\n收集真实返回值,不读代码推断。判定逻辑一行未改,resource-tags.ts 本轮零改动。\n\n1. 9 条从未在门禁上走过:\n - POST_M0_BINDING_FORBIDDEN:M0 阶段禁止把 invoice / price / budget / quota / chargeback 这类\n 计费与容量动作字段写进用量记录(23 个禁入词),是本域最靠近红线的一条,门禁上一片空白。\n - TAG_VALUE_INVALID:标签取值字符集。此前只有「缺标签」有夹具,「标签值乱写」没有。\n - CORRECTION_REFERENCE_INVALID:更正引用必须成对(id 与 reasonCode 同在或同不在)且不得自指。\n - SOURCE_CLASSIFICATION_DOWNGRADE:记录分级不得低于来源登记分级。\n - 六条基线旗标里除 G3_NOT_REACHED 外的全部五条:G5 产品窗口、应用登记、服务身份、审计、资源标签目录。\n\n2. 反方向 4 条门禁有、单测没有:RESOURCE_TAGS_INVALID / CONTENT_DIGEST_INVALID /\n METER_VERSION_INVALID / USAGE_LINEAGE_REQUIRED,补进单测。\n\n覆盖:夹具 32 → 41 例(正 3 / 反 38),新增 N30—N38 九例且每例只产出一条原因(逐例核过实际返回值);\n定向测试 28 → 32 例;原因码门禁覆盖 20/29 → 29/29,单测覆盖 25/29 → 29/29。上一轮用例一条未改。\n\n写单测时两处预期被实测推翻,按实现订正而不是反过来改实现——夹具与用例的作用正在于此:\n① RESOURCE_TAGS_INVALID 不是标签面自己报的码。assessResourceTags 对非对象入参报的是\n REQUIRED_TAG_MISSING 并把八个必填键全列进 missing;RESOURCE_TAGS_INVALID 是 assessUsageRecord\n 把「内嵌标签没过体检」收敛成的一条。\n② meterVersion 的 semver 模式接受预发布后缀,1.0.0-rc.1 合法。\n两条都写成用例固定住,免得下次被当成缺陷「修」掉。\n\n夹具变异探针(41 例真实 payload × 14 种脏值,走 evaluateFixturePayload 入口):\n22792 个变异点、0 处抛异常——daa226b 的硬化结论在扩面后仍成立。\n\n未做(越界):全资源计量账本、AI 成本明细(依赖 M7)一件未建,C19 按缺失模块完善清单仍是「裁决」;\nCatalog 登记未动。\n\n证据:pnpm --dir contracts build / typecheck 绿、check:generated 14 files / 12 schemas 无漂移、\nnode --test contracts/test/*.test.mjs 398/398、contract-cost-capacity 夹具 41/41 失败 0。\n负向实测:把 N32 的声明原因改成 USAGE_LINEAGE_REQUIRED → 门禁 exit 1 并点名该例\n(reasons=[\"POST_M0_BINDING_FORBIDDEN\"]),还原后 exit 0。本次不回绑任何 reports/。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/7a4b69367b18f4e284218704981b54c0ee10d2b6","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-18T16:09:29-07:00","added":[],"removed":[],"modified":["contracts/SOURCE.md","contracts/test/cost-capacity-domain.test.mjs","contracts/test/fixtures/cost-capacity.fixtures.json","docs/domain/resource-tags-blueprint.md"]},"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":20341,"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-19T07:08:35+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"}}... |