|
24186
|
docs(治理): 覆盖度探针读数为 0 不等于该域已收口——把最大的盲区和先做结构比对写进 CLA docs(治理): 覆盖度探针读数为 0 不等于该域已收口——把最大的盲区和先做结构比对写进 CLAUDE.md...
|
116
|
5
|
platform.yml
|
152
|
5
|
0
|
refs/heads/main
|
62c9d953569c6a146215a0e5511efc292e3f7740
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"cf05344e117a84fedf092613be5fc13b7a07072b","after":"62c9d953569c6a146215a0e5511efc292e3f7740","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/cf05344e117a84fedf092613be5fc13b7a07072b...62c9d953569c6a146215a0e5511efc292e3f7740","commits":[{"id":"62c9d953569c6a146215a0e5511efc292e3f7740","message":"docs(治理): 覆盖度探针读数为 0 不等于该域已收口——把最大的盲区和先做结构比对写进 CLAUDE.md\n\nfixture-coverage.mjs 的局限第一条「只变异夹具已有用例的字段」,实际后果比字面严重:\n整支规则若一条夹具用例都没有,它根本不进统计,读数会一直显示 0/0。只看读数会以为收完了。\n\n2026-09-18 四次命中同一形状,当时四个域的读数都是 0:\n collaboration-messaging plan 分不出 ADMIT 与 SKIP_DUPLICATE\n notification-webhook decideProviderOutcome 没有规则(退避与 Retry-After 钳制全在里面)\n application-contract-registry plan 把 BLOCKED 判成放行,且没有一条用例带合法快照\n configuration-feature-flags configuration-client.ts(167 行,本域最大的一支)整个文件没有规则\n\n补进去的是可操作的两步,不是结论:\n1. 先做结构比对再看读数——把 index.ts 导出的规则函数与 planner 的公开方法(plan / refresh / status /\n 域特有方法)列出来逐个对 *_FIXTURE_RULES,对不上的先补规则、补一条带合法快照的正例。\n2. 连带查评估器判据——写成 `\"reasons\" in r` 这类按字段存在与否判放行的,凡是不带 reasons 的非放行出口\n (BLOCKED / SKIP_DUPLICATE / DLQ / DUPLICATE_NOOP / USE_LAST_KNOWN_GOOD)都会被判成 ACCEPT,\n 一律改成按 kind 判定。\n并写明:补规则后覆盖度会先变差(新面第一次被走到),那是对的,把新暴露的原因码钉完再收工。\n\n顺带把同段的例数从 458 更正为 468(C13 那轮 +10),按实跑 check:fixtures 的输出校对过。\n\n证据:check:fixtures 17 套件 468 例 0 失败 0 不可用;fixture-coverage 15 套件两档仍全 0;\n工作区一致性门禁只剩既有的 L9 compose project 撞名,无新增 L4 / L13。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/62c9d953569c6a146215a0e5511efc292e3f7740","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:47:21-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]}],"total_commits":0,"head_commit":{"id":"62c9d953569c6a146215a0e5511efc292e3f7740","message":"docs(治理): 覆盖度探针读数为 0 不等于该域已收口——把最大的盲区和先做结构比对写进 CLAUDE.md\n\nfixture-coverage.mjs 的局限第一条「只变异夹具已有用例的字段」,实际后果比字面严重:\n整支规则若一条夹具用例都没有,它根本不进统计,读数会一直显示 0/0。只看读数会以为收完了。\n\n2026-09-18 四次命中同一形状,当时四个域的读数都是 0:\n collaboration-messaging plan 分不出 ADMIT 与 SKIP_DUPLICATE\n notification-webhook decideProviderOutcome 没有规则(退避与 Retry-After 钳制全在里面)\n application-contract-registry plan 把 BLOCKED 判成放行,且没有一条用例带合法快照\n configuration-feature-flags configuration-client.ts(167 行,本域最大的一支)整个文件没有规则\n\n补进去的是可操作的两步,不是结论:\n1. 先做结构比对再看读数——把 index.ts 导出的规则函数与 planner 的公开方法(plan / refresh / status /\n 域特有方法)列出来逐个对 *_FIXTURE_RULES,对不上的先补规则、补一条带合法快照的正例。\n2. 连带查评估器判据——写成 `\"reasons\" in r` 这类按字段存在与否判放行的,凡是不带 reasons 的非放行出口\n (BLOCKED / SKIP_DUPLICATE / DLQ / DUPLICATE_NOOP / USE_LAST_KNOWN_GOOD)都会被判成 ACCEPT,\n 一律改成按 kind 判定。\n并写明:补规则后覆盖度会先变差(新面第一次被走到),那是对的,把新暴露的原因码钉完再收工。\n\n顺带把同段的例数从 458 更正为 468(C13 那轮 +10),按实跑 check:fixtures 的输出校对过。\n\n证据:check:fixtures 17 套件 468 例 0 失败 0 不可用;fixture-coverage 15 套件两档仍全 0;\n工作区一致性门禁只剩既有的 L9 compose project 撞名,无新增 L4 / L13。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/62c9d953569c6a146215a0e5511efc292e3f7740","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:47:21-07:00","added":[],"removed":[],"modified":["CLAUDE.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":21284,"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:46:22+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"}}...
|
push
|
2
|
30
|
1789775278
|
1789775318
|
0
|
1789775276
|
1789775347
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24187
|
feat(governance): 覆盖度探针自己查「整支规则没接进评估器」——那是它此前按设计看不 feat(governance): 覆盖度探针自己查「整支规则没接进评估器」——那是它此前按设计看不见的盲区...
|
116
|
5
|
platform.yml
|
153
|
5
|
0
|
refs/heads/main
|
e79e5f2b943a633299851dbc7709455247a415ef
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"62c9d953569c6a146215a0e5511efc292e3f7740","after":"e79e5f2b943a633299851dbc7709455247a415ef","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/62c9d953569c6a146215a0e5511efc292e3f7740...e79e5f2b943a633299851dbc7709455247a415ef","commits":[{"id":"e79e5f2b943a633299851dbc7709455247a415ef","message":"feat(governance): 覆盖度探针自己查「整支规则没接进评估器」——那是它此前按设计看不见的盲区\n\n上一条(62c9d95)把盲区与绕开它的两步写进了 CLAUDE.md,但那只是文档约束,人不比对就不会发现。\n本次把两项结构比对做进 governance/fixture-coverage.mjs:它们不依赖夹具,因而看得见「从没有用例的那一面」。\n\n1. 未接线列:导入域的 index.js,把导出的判定函数(assess|review|classify|select|decide|plan|preflight|\n evaluate 打头)与 planner 原型方法逐个对评估器源码里的引用,没被引用的报出来。\n2. !!! 行:评估器写成 `\"reasons\" in r ? … : []` 时提醒——该规则结果联合体里一旦出现不带 reasons 的\n 非放行出口(BLOCKED / SKIP_DUPLICATE / DLQ / DUPLICATE_NOOP / USE_LAST_KNOWN_GOOD)就会被静默判成 ACCEPT。\n\n对着 15 个真实套件跑,逮到两类误报,都已修,并写成用例钉住:\n- planner 多数经 createRuntimeX() 工厂到达,类名根本不出现在评估器里。按「类名没出现」判整支未接线会把\n 跨域流程、Webhook、public-file 等全报一遍。改成按「一个方法都没被调」判,并排除 status/get 这类\n 只读访问器与错误类(AiRouteRequestRejected / AuditRequestRejected 不是判定面)。\n- cost-capacity 与 notification-webhook 把旧写法 `\"reasons\" in d ? [...] : []` 抄在注释里当变更记录,\n 按原文匹配会把两个已经改对的域报成缺陷。改成先去注释再匹配。\n措辞也相应收敛:`!!!` 行现在说「今天未必已经出错,但联合体里一旦出现…就会被静默判成 ACCEPT」,\n而不是断言它已经错了——跨域流程那处就属于「今天正确、但脆」。\n\n新增 governance/test/fixture-coverage.test.mjs(3 例):该脚本此前是 governance/ 下唯一没有测试的。\n用临时自足域验三件事——只报没被调的方法、经工厂到达的类不报整支未接线、注释里的旧写法不报。\n\n当前读数(均未处理,已登记进 CLAUDE.md 同段):\n 九个契约包域 未接线 1 处:LocalWorkflowPlanner.refresh()\n 运行时模块侧 未接线 9 处:ai-gateway 2 / permission 3 / audit / credential / fact / scope 各 1\n\n证据:pnpm test(governance)364/364;check-fixtures 17 套件 468 例 0 失败;\n「夹具与单测都没有」仍 0 条;工作区一致性门禁只剩既有的 L9 compose project 撞名。\n脚本仍是诊断而非门禁——不写报告、不进 pnpm check,故本次不涉及 reports 回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/e79e5f2b943a633299851dbc7709455247a415ef","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:51:13-07:00","added":["governance/test/fixture-coverage.test.mjs"],"removed":[],"modified":["governance/fixture-coverage.mjs"]},{"id":"fed1fd024bc60a4feef89dff7c2ec028e0bcb066","message":"docs(发布): 当场记录 rc.5 列车——三层判据随包出去,fact-pii 有意留在仓内\n\nrc.5 三包 2026-09-18 经本地旁路发出,源 cf05344,tag packages-v1.0.0-rc.5(连续第二趟按 CL-5\n打上)。三包均 registry integrity verified;产物 contracts 183.0 kB / governance 96.9 kB /\nclient-fact 17.4 kB,shasum 记在文档里。\n\n记录里写清了三件容易被误读的事:\n\n1. 发布物里有什么、没有什么。check-pins.mjs 在 governance 包的 files 里,三层判据随包出去,\n 消费者仓拿到新判据后因无 pins-baseline 而第三方层不启用,行为与 rc.4 一致(设计好的向后兼容)。\n check-fact-pii.mjs 与 fact-pii-rules.json **有意不进 files**——它扫 contracts/schemas/facts/,\n 消费者仓没有那个目录,发过去是道跑不起来的门禁。\n2. **CI 死锁解开了一半。** rc.4 那趟记的是双重不可用;本次实测 GitHub 镜像落后已从 237 条降到\n 24 条,推送死锁解开,但 Actions 最新 run 35404565689 仍 failure。计费一恢复即可直接走正道,\n 不必再先解死锁——这是四趟以来第一次出现的松动。\n3. 发布前验证的真实范围:构建 BUILD_EXIT=0、逐包核对产物内容与 provenance;**完整 pnpm check\n 没有在发布前跑**,发布后补跑(真实退出码 1,唯一失败是并行会话的 workbench-ops-snapshot 过期,\n 判据类全绿:pins、fact-pii、测试 361/361)。\n\n发布那一步由 Owner 在自己终端执行:本会话的 auto mode 安全分类器以 [Safety Bypass Flag] 拒绝了带\nPLATFORM_RELEASE_BYPASS_CI_EVIDENCE 的命令。那不算误伤,这个开关就是绕过 CI 证据链的。\n备料与验证由会话完成,最后一步由人按下——这个分工也记进了文档。\n\nCLAUDE.md 的 contracts 条目同步推到 rc.5,并记下 fact-pii 不随包这一条。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/fed1fd024bc60a4feef89dff7c2ec028e0bcb066","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:50:56-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/G-12本地旁路发布记录-2026-09-13.md"]},{"id":"5116dc5951412d8e6f037aafb4fe532fa38207a7","message":"chore(reports): check:fixtures 回绑 @ 62c9d95 —— 配置开关补的 10 例还没进报告\n\n已提交版绑 748492c、记 458 例;其后 contracts/src/domain/configuration-feature-flags/\nfixture-evaluator.ts 与对应夹具各有一次变更,现测 17 套件 468 例、失败 0、不可用 0。\n按「作用域内有无变更」判定该回绑,非按提交距离。产出绑 62c9d95、worktreeDirty=false\n(生成时主工作区恰好干净,未用临时检出)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/5116dc5951412d8e6f037aafb4fe532fa38207a7","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:49:08-07:00","added":[],"removed":[],"modified":["reports/fixtures.latest.json"]}],"total_commits":0,"head_commit":{"id":"e79e5f2b943a633299851dbc7709455247a415ef","message":"feat(governance): 覆盖度探针自己查「整支规则没接进评估器」——那是它此前按设计看不见的盲区\n\n上一条(62c9d95)把盲区与绕开它的两步写进了 CLAUDE.md,但那只是文档约束,人不比对就不会发现。\n本次把两项结构比对做进 governance/fixture-coverage.mjs:它们不依赖夹具,因而看得见「从没有用例的那一面」。\n\n1. 未接线列:导入域的 index.js,把导出的判定函数(assess|review|classify|select|decide|plan|preflight|\n evaluate 打头)与 planner 原型方法逐个对评估器源码里的引用,没被引用的报出来。\n2. !!! 行:评估器写成 `\"reasons\" in r ? … : []` 时提醒——该规则结果联合体里一旦出现不带 reasons 的\n 非放行出口(BLOCKED / SKIP_DUPLICATE / DLQ / DUPLICATE_NOOP / USE_LAST_KNOWN_GOOD)就会被静默判成 ACCEPT。\n\n对着 15 个真实套件跑,逮到两类误报,都已修,并写成用例钉住:\n- planner 多数经 createRuntimeX() 工厂到达,类名根本不出现在评估器里。按「类名没出现」判整支未接线会把\n 跨域流程、Webhook、public-file 等全报一遍。改成按「一个方法都没被调」判,并排除 status/get 这类\n 只读访问器与错误类(AiRouteRequestRejected / AuditRequestRejected 不是判定面)。\n- cost-capacity 与 notification-webhook 把旧写法 `\"reasons\" in d ? [...] : []` 抄在注释里当变更记录,\n 按原文匹配会把两个已经改对的域报成缺陷。改成先去注释再匹配。\n措辞也相应收敛:`!!!` 行现在说「今天未必已经出错,但联合体里一旦出现…就会被静默判成 ACCEPT」,\n而不是断言它已经错了——跨域流程那处就属于「今天正确、但脆」。\n\n新增 governance/test/fixture-coverage.test.mjs(3 例):该脚本此前是 governance/ 下唯一没有测试的。\n用临时自足域验三件事——只报没被调的方法、经工厂到达的类不报整支未接线、注释里的旧写法不报。\n\n当前读数(均未处理,已登记进 CLAUDE.md 同段):\n 九个契约包域 未接线 1 处:LocalWorkflowPlanner.refresh()\n 运行时模块侧 未接线 9 处:ai-gateway 2 / permission 3 / audit / credential / fact / scope 各 1\n\n证据:pnpm test(governance)364/364;check-fixtures 17 套件 468 例 0 失败;\n「夹具与单测都没有」仍 0 条;工作区一致性门禁只剩既有的 L9 compose project 撞名。\n脚本仍是诊断而非门禁——不写报告、不进 pnpm check,故本次不涉及 reports 回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/e79e5f2b943a633299851dbc7709455247a415ef","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:51:13-07:00","added":["governance/test/fixture-coverage.test.mjs"],"removed":[],"modified":["governance/fixture-coverage.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":21301,"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:47:57+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"}}...
|
push
|
2
|
30
|
1789775554
|
1789775594
|
0
|
1789775554
|
1789775622
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24188
|
docs(部署): §15.4 改写 + 新增 §15.5——ui-acceptance 已真跑回来 docs(部署): §15.4 改写 + 新增 §15.5——ui-acceptance 已真跑回来,D-14 闭环...
|
116
|
5
|
platform.yml
|
154
|
5
|
0
|
refs/heads/main
|
3baec4ad9f8c27a94f514af7e4e340c1c763b923
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e79e5f2b943a633299851dbc7709455247a415ef","after":"3baec4ad9f8c27a94f514af7e4e340c1c763b923","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/e79e5f2b943a633299851dbc7709455247a415ef...3baec4ad9f8c27a94f514af7e4e340c1c763b923","commits":[{"id":"3baec4ad9f8c27a94f514af7e4e340c1c763b923","message":"docs(部署): §15.4 改写 + 新增 §15.5——ui-acceptance 已真跑回来,D-14 闭环\n\n回绑提交 c4ec6f6:passed,nestjs/ws 5/5(地板 5),绑 67e8193 / worktreeDirty=false;\n67e8193..HEAD 之间作用域零变更,绑定对当前代码仍成立。\n\n同轮补两条环境教训:\n\n1. 隔离栈 enterprise-platform-ms23 那台 PG 的库又被清空了,验收库得重建。与 §9 末尾\n 「不能假定上一轮还在」同一条,这是第二次撞上——可以当常态而不是意外。\n2. §9 的三条前置少写了一条:临时检出只 install + prisma:generate 不够,必须再 pnpm build。\n 缺它时 api-nestjs 的 tsc 以 Cannot find module '@juhai/module-kit' / '@repo/telemetry' 失败,\n 是 workspace 包没构建,不是回归。该次失败停在构建阶段、未写报告,主工作区那份旧报告\n 全程没被覆盖——这正是在独立检出里跑的意义。\n\n§15.4 标题与结尾同步订正:原文写「本轮只登记」,现已不成立。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/3baec4ad9f8c27a94f514af7e4e340c1c763b923","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:53:58-07:00","added":[],"removed":[],"modified":["docs/dev部署运行重做记录-2026-09-18.md"]},{"id":"c4ec6f6ad12a7b415db4bdd07de48ed64c26bde8","message":"chore(reports): ui-acceptance 重跑回绑 @ 67e8193\n\nD-14 登记的那份过期报告已真跑回来:passed,nestjs/ws 组合 5/5(地板 5),\nprovenance gitSha=67e8193 / worktreeDirty=false / runner=local。\n67e8193..HEAD 之间作用域(runtime/apps、runtime/packages、modules.json)零变更,\n因此该绑定对当前代码仍然成立。\n\n跑法按 §9 的口径:HEAD 的独立 git worktree 干净检出(主工作区有并行会话 WIP,\n跑在那里必 worktreeDirty=true)+ 隔离栈 enterprise-platform-ms23(PG :55471 /\nRedis :56380 逻辑库 7,本轮重新 docker start 并新建 enterprise_platform_ui_acceptance 库\n——那台 PG 里的库又被清空过一次,与 §9 末尾记的教训一致)。\n\n踩到一条 §9 三条前置之外的:**临时检出只 install + prisma:generate 还不够,必须再\npnpm build**。缺它时 api-nestjs 的 tsc 以 Cannot find module '@juhai/module-kit' /\n'@repo/telemetry' 失败——workspace 包没构建,不是回归。CLAUDE.md「开发命令」节的三步\n本来就写了 build,是我漏了第三步。该次失败发生在构建阶段、未写报告,主工作区那份\n旧报告全程未被覆盖(这正是在独立检出里跑的意义)。\n\n本提交只含这一个报告文件:同时有 18 份 runtime 报告被并行会话改动,不属本轮,未纳入。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/c4ec6f6ad12a7b415db4bdd07de48ed64c26bde8","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:53:21-07:00","added":[],"removed":[],"modified":["runtime/reports/ui-acceptance.latest.json"]}],"total_commits":0,"head_commit":{"id":"3baec4ad9f8c27a94f514af7e4e340c1c763b923","message":"docs(部署): §15.4 改写 + 新增 §15.5——ui-acceptance 已真跑回来,D-14 闭环\n\n回绑提交 c4ec6f6:passed,nestjs/ws 5/5(地板 5),绑 67e8193 / worktreeDirty=false;\n67e8193..HEAD 之间作用域零变更,绑定对当前代码仍成立。\n\n同轮补两条环境教训:\n\n1. 隔离栈 enterprise-platform-ms23 那台 PG 的库又被清空了,验收库得重建。与 §9 末尾\n 「不能假定上一轮还在」同一条,这是第二次撞上——可以当常态而不是意外。\n2. §9 的三条前置少写了一条:临时检出只 install + prisma:generate 不够,必须再 pnpm build。\n 缺它时 api-nestjs 的 tsc 以 Cannot find module '@juhai/module-kit' / '@repo/telemetry' 失败,\n 是 workspace 包没构建,不是回归。该次失败停在构建阶段、未写报告,主工作区那份旧报告\n 全程没被覆盖——这正是在独立检出里跑的意义。\n\n§15.4 标题与结尾同步订正:原文写「本轮只登记」,现已不成立。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/3baec4ad9f8c27a94f514af7e4e340c1c763b923","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:53:58-07:00","added":[],"removed":[],"modified":["docs/dev部署运行重做记录-2026-09-18.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":21357,"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:52:34+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"}}...
|
push
|
2
|
30
|
1789775645
|
1789775684
|
0
|
1789775643
|
1789775713
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24189
|
feat(治理): check:fact-pii 进 @juhai/governance 包——并补 feat(治理): check:fact-pii 进 @juhai/governance 包——并补上让它在消费者仓真能跑的两处...
|
116
|
5
|
platform.yml
|
155
|
5
|
0
|
refs/heads/main
|
eb275b10c470d5db1907473c40e6c831d1e7a1c6
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"3baec4ad9f8c27a94f514af7e4e340c1c763b923","after":"eb275b10c470d5db1907473c40e6c831d1e7a1c6","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/3baec4ad9f8c27a94f514af7e4e340c1c763b923...eb275b10c470d5db1907473c40e6c831d1e7a1c6","commits":[{"id":"eb275b10c470d5db1907473c40e6c831d1e7a1c6","message":"feat(治理): check:fact-pii 进 @juhai/governance 包——并补上让它在消费者仓真能跑的两处\n\n把 check-fact-pii.mjs 与 fact-pii-rules.json 加进包的 files、在 bin/cli.mjs 注册\ncheck:fact-pii 子命令。但**只加 files 是个摆设**,装到消费者仓会是个永远扫到 0 个 Fact、\n永远 exit 0 的门禁——它原先硬编码扫 contracts/schemas/facts,还硬读仓内的\ngovernance/fact-pii-rules.json。两处都补了:\n\n --dir \u003c目录\u003e… 指定 Fact schema 目录(可重复),缺省仍是本仓那两处。消费者的 Fact\n 定义不在 contracts/schemas/facts,指不过去这道门禁就没有判据对象。\n 判据回落 仓内 governance/fact-pii-rules.json 优先,缺失则用包自带的那份。\n 消费者仓没有 governance/ 目录,硬读仓内路径会让门禁在他们那儿直接崩。\n 要收紧就在自己仓里放一份同名文件覆盖。\n\n一个 Fact 都没扫到时打警告而不是静默通过——多半是目录指错了,不是「真的没有 Fact」。\n报告里记下 scanDirs 与 rulesSource,事后能看出这次扫的是哪儿、判据是谁的。\n\n消费者场景端到端验过(临时目录,无 governance/、Fact 放在 domain/facts/):\n juhai-governance check:fact-pii --root \u003cdir\u003e --dir domain/facts\n → 抓到 buyer_phone、exit 1;报告 rulesSource=bundled、scanDirs=[\"domain/facts\"]\n → 不给 --dir 时明确警告「未找到任何 Fact schema」\n本仓行为不变:21 个 Fact / 116 字段 / 0 违规,rulesSource=repo。测试 8 → 10 例。\n\nREADME 两处同步(判据表 + check 链顺序)——它随包发布,说明必须与实现一致。\n\n**时间差要知道:rc.5 昨天刚发,这些进不了 rc.5。** 包里现在这道门禁的代码要等下一个 RC\n才出得去;在那之前消费者拿到的 @juhai/governance@1.0.0-rc.5 仍不含 fact-pii。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/eb275b10c470d5db1907473c40e6c831d1e7a1c6","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:54:59-07:00","added":[],"removed":[],"modified":["governance/README.md","governance/bin/cli.mjs","governance/check-fact-pii.mjs","governance/package.json","governance/test/check-fact-pii.test.mjs"]},{"id":"475704b56896c09a0408e1e95a87d9a9994b0667","message":"test(contracts): 跨域流程接上 refresh——10 处未接线的第 1 处,也是我自己那轮留下的\n\ngovernance/fixture-coverage.mjs 加上结构比对后第一轮就报出 LocalWorkflowPlanner.refresh() 未接线:\nplanner 三个公开方法里只有 plan 有规则,「版本必须前进」「坏候选保留 last-known-good」两条纪律\n此前只有单测看着。这是我 13c7eb7 那轮留下的口子。\n\n顺带把 plan 的判据从 `\"reasons\" in r` 改为按 kind。今天 WorkflowPlannerResult 只有 PLAN / REJECT\n两支、行为逐字不变,但按字段存在与否判放行意味着将来加一个不带 reasons 的非放行出口就会被静默放过\n——注册中心的 BLOCKED 正是这么漏的。\n\n接上规则后覆盖度先变差,这是预期的:refresh 那一面第一次被变异探针走到,立刻冒出 4 条「夹具与单测\n都没有」(WORKFLOW_ID_REQUIRED / WORKFLOW_DOMAINS_REQUIRED / WORKFLOW_TENANTS_REQUIRED /\nWORKFLOW_REVISION_REQUIRED)与 1 条「仅单测」(WORKFLOW_VERSION_INVALID),逐条钉完回到 0。\n\n覆盖:夹具 18 → 28 例(正 3 / 反 25),规则数 3 → 4;该套件三档(都没有 / 仅单测 / 未接线)均为 0。\n判定逻辑一行未改,只动评估器与夹具。\n\n剩余 9 处未接线全在运行时模块侧(ai-gateway 2 / permission 3 / audit / credential / fact / scope 各 1),\n每个 planner 300—734 行、各自要造一份合法快照,按模块逐个收。\n\n证据:node --test contracts/test/*.test.mjs 408/408、该套件夹具 28/28 失败 0、fixture-coverage 三档全 0。\n负向实测:把 N20(通配租户那条)的声明改成 WORKFLOW_VERSION_NOT_FORWARD → 门禁 exit 1 并点名该例,\n还原后 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/475704b56896c09a0408e1e95a87d9a9994b0667","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:54:50-07:00","added":[],"removed":[],"modified":["contracts/SOURCE.md","contracts/src/domain/cross-domain-workflow/fixture-evaluator.ts","contracts/test/fixtures/cross-domain-workflow.fixtures.json"]}],"total_commits":0,"head_commit":{"id":"eb275b10c470d5db1907473c40e6c831d1e7a1c6","message":"feat(治理): check:fact-pii 进 @juhai/governance 包——并补上让它在消费者仓真能跑的两处\n\n把 check-fact-pii.mjs 与 fact-pii-rules.json 加进包的 files、在 bin/cli.mjs 注册\ncheck:fact-pii 子命令。但**只加 files 是个摆设**,装到消费者仓会是个永远扫到 0 个 Fact、\n永远 exit 0 的门禁——它原先硬编码扫 contracts/schemas/facts,还硬读仓内的\ngovernance/fact-pii-rules.json。两处都补了:\n\n --dir \u003c目录\u003e… 指定 Fact schema 目录(可重复),缺省仍是本仓那两处。消费者的 Fact\n 定义不在 contracts/schemas/facts,指不过去这道门禁就没有判据对象。\n 判据回落 仓内 governance/fact-pii-rules.json 优先,缺失则用包自带的那份。\n 消费者仓没有 governance/ 目录,硬读仓内路径会让门禁在他们那儿直接崩。\n 要收紧就在自己仓里放一份同名文件覆盖。\n\n一个 Fact 都没扫到时打警告而不是静默通过——多半是目录指错了,不是「真的没有 Fact」。\n报告里记下 scanDirs 与 rulesSource,事后能看出这次扫的是哪儿、判据是谁的。\n\n消费者场景端到端验过(临时目录,无 governance/、Fact 放在 domain/facts/):\n juhai-governance check:fact-pii --root \u003cdir\u003e --dir domain/facts\n → 抓到 buyer_phone、exit 1;报告 rulesSource=bundled、scanDirs=[\"domain/facts\"]\n → 不给 --dir 时明确警告「未找到任何 Fact schema」\n本仓行为不变:21 个 Fact / 116 字段 / 0 违规,rulesSource=repo。测试 8 → 10 例。\n\nREADME 两处同步(判据表 + check 链顺序)——它随包发布,说明必须与实现一致。\n\n**时间差要知道:rc.5 昨天刚发,这些进不了 rc.5。** 包里现在这道门禁的代码要等下一个 RC\n才出得去;在那之前消费者拿到的 @juhai/governance@1.0.0-rc.5 仍不含 fact-pii。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/eb275b10c470d5db1907473c40e6c831d1e7a1c6","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:54:59-07:00","added":[],"removed":[],"modified":["governance/README.md","governance/bin/cli.mjs","governance/check-fact-pii.mjs","governance/package.json","governance/test/check-fact-pii.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":21388,"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:54:03+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"}}...
|
push
|
2
|
34
|
1789775716
|
1789775754
|
0
|
1789775710
|
1789775784
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24190
|
docs(部署,runbook): 记录补 §16——D-13 从推断变成实测、订正并复验,另登记 docs(部署,runbook): 记录补 §16——D-13 从推断变成实测、订正并复验,另登记 D-15...
|
116
|
5
|
platform.yml
|
156
|
5
|
0
|
refs/heads/main
|
21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"eb275b10c470d5db1907473c40e6c831d1e7a1c6","after":"21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/eb275b10c470d5db1907473c40e6c831d1e7a1c6...21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f","commits":[{"id":"21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f","message":"docs(部署,runbook): 记录补 §16——D-13 从推断变成实测、订正并复验,另登记 D-15\n\nD-13 此前只是读代码推断(判定链对不上)。本轮先做成可证伪的实测:用 dev 的 HS256 密钥\n手工签发三个只差 sub 的 token 打 GET /api/platform/ops/definitions——\n\n sub = users.subject(IdP 令牌的实际形态) 订正前 403 OPS_FORBIDDEN → 订正后 200\n sub = users.id(白名单原值) 订正前 200 → 订正后 403\n 同上但不带 platform:ops(对照) 两次都是 403 OPS_SCOPE_REQUIRED\n\n第三行是对照组,证明守卫顺序是 scope 在前、白名单在后,前两行的差异确实出在白名单这一关。\nsub 的实际形态取自 §14 那次真实登录的令牌,不是猜的。\n\n订正落在仓外 .secrets(PLATFORM_OPS_ADMIN_SUBJECTS 由 users.id 改为 users.subject,\n并在键上方留三行注释说明判定链),force-recreate 重建 runtime 容器后复验,健康探针 200。\nD-13 闭环。\n\n同时订正一个我自己此前过于保守的判断:原以为「必须等 canonical 租户分支合并后与 D-4 一并验」,\n实际 D-4 挡的是执行那一步,定义面的读取不受影响,守卫这一层现在就能独立验证。\n\n新登记 D-15:当前没有任何 OIDC 客户端的 allowedScopes 含 platform:ops(三个客户端全是\nopenid profile [idp:manage]),真实 IdP 令牌因此卡在 scope 关——不是白名单、也不是 D-4。\n给客户端放这个 scope 等于把平台运维权发给浏览器里的公开客户端,属安全裁决,留 Owner。\n\nrunbook §2.1 的警告块同步更新:那处现已订正,并指向 §16 与 D-15。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f","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:58:15-07:00","added":[],"removed":[],"modified":["docs/dev部署运行重做记录-2026-09-18.md","docs/runbook.md"]},{"id":"f28f8f9935231e083402f5fa47269576a96eb38d","message":"test(runtime): credential 的租约 planner 整支不在门禁上——补 lease-plan / lease-refresh,10 处未接线的第 3 处\n\n结构比对报出 LocalMachineCredentialLeasePlanner(308 行、三个公开方法)整支未接线:本模块此前只有\nlease-request 一条规则,走的是 preflight 纯规则;planner 的策略快照准入、主体登记、受众 / Scope\nallowlist、TTL 上限、授权版本水位与热更一条都不在门禁上。判定逻辑一行未改。\n\n判定按 kind:MachineCredentialLeaseResult 的 BLOCKED 携带 blockers 而非 reasons。\n\n接上规则后照例先变差:冒出 6 条「夹具与单测都没有」(归属三件套、授权版本、请求时钟,以及 refresh\n侧的版本 / 修订 / 主体策略),逐条钉完回到 0。\n\n覆盖:夹具 10 → 27 例(正 4 / 反 23),规则 1 → 3;三档(都没有 / 仅单测 / 未接线)均为 0。\n新钉住的策略面包括 AUDIENCE_NOT_ALLOWED / SCOPE_NOT_ALLOWED / TTL_OUT_OF_POLICY / STALE_AUTHORIZATION\n/ MACHINE_PRINCIPAL_NOT_REGISTERED / AI_DELEGATION_REQUIRED——凭据签发的准入闸门此前在门禁上一条没有。\n\n证据:pnpm --dir runtime --filter @juhai/module-credential test 46/46、该套件夹具 27/27 失败 0、\nfixture-coverage 三档全 0。本次不回绑任何 reports/。\n\n进度:10 处未接线已收 3 处(跨域流程 refresh、scope、credential)。余 7 处在 ai-gateway 2 /\npermission 3 / audit / fact 各 1。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/f28f8f9935231e083402f5fa47269576a96eb38d","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:57:26-07:00","added":[],"removed":[],"modified":["runtime/modules/credential/src/domain/fixture-evaluator.ts","runtime/modules/credential/test/fixtures/credential.fixtures.json"]},{"id":"7eadfb1a5af353077f1a32eef51389f4a6f7fbfa","message":"chore(release): 三包推到 1.0.0-rc.6——check:fact-pii 这次真的随包出去\n\nrc.5 发的时候 check-fact-pii.mjs 还不在 governance 包的 files 里,消费者拿到的 rc.5 不含它。\neb275b1 把它与 fact-pii-rules.json 加进 files、在 CLI 注册 check:fact-pii 子命令,\n并补上了让它在消费者仓真跑得起来的两处(--dir 指定 Fact schema 目录、判据回落到包内自带)。\n这趟车就是为了把那些送出去。\n\n自 rc.5 源 cf05344 起的随车内容:\n governance 7 文件 / 2 提交(fact-pii 进包 + 消费者可用性)\n contracts 3 文件 / 1 提交\n runtime/clients/fact 0 文件 / 0 提交 —— **完全没有变化,纯跟车**(同 rc.5)\n\n通道:本地旁路(G-12 第五次)。2026-09-18 实测 GitHub Actions 仍停在 run 35404565689\n(failure,计费),没有新 run;GitHub 镜像落后 35 条。正道仍不可满足。\n\n按 CL-5 打 tag packages-v1.0.0-rc.6(连续第三趟)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/7eadfb1a5af353077f1a32eef51389f4a6f7fbfa","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:56:38-07:00","added":[],"removed":[],"modified":["contracts/package.json","governance/package.json","runtime/clients/fact/package.json"]},{"id":"a2a86a7161102dba3d3ef227b89545ea65612273","message":"test(runtime): scope 的 410 行 planner 整支不在门禁上——补 plan / refresh 两条规则,10 处未接线的第 2 处\n\n结构比对报出 LocalScopeResolutionPlanner(三个公开方法)整支未接线:本模块此前只有 snapshot 一条规则,\nplanner 的请求体检、应用登记、目录版本、路由匹配与热更一条都不在门禁上。判定逻辑一行未改。\n\n判定按 kind 而不是 `\"reasons\" in`:ScopeResolutionPlanResult 的 BLOCKED 携带的是 blockers,\n按字段存在与否判会被当成放行——注册中心那次就是这么漏的,这里一开始就避开。\n\n接上规则后覆盖度先变差,同样是预期的:plan / refresh 两面第一次被变异探针走到,冒出 15 条\n「夹具与单测都没有」(十条请求字段守卫 + 路由未登记 + refresh 侧四条),逐条钉完回到 0。\n\n覆盖:夹具 8 → 35 例(正 4 / 反 31),规则 1 → 3;该套件三档(都没有 / 仅单测 / 未接线)均为 0。\n模块夹具与 test/negative/*.fixtures.test.ts 同源(it.each 直接遍历夹具文件),单测随夹具自动同步。\n\n证据:pnpm --dir runtime --filter @juhai/module-scope test 53/53、typecheck 绿、\n该套件夹具 35/35 失败 0、fixture-coverage 三档全 0。本次不回绑任何 reports/。\n\n进度:10 处未接线已收 2 处(跨域流程 refresh、scope)。余 8 处在 ai-gateway 2 / permission 3 /\naudit / credential / fact 各 1,planner 308—734 行,按模块逐个收。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/a2a86a7161102dba3d3ef227b89545ea65612273","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:56:05-07:00","added":[],"removed":[],"modified":["runtime/modules/scope/src/domain/fixture-evaluator.ts","runtime/modules/scope/test/fixtures/scope.fixtures.json"]}],"total_commits":0,"head_commit":{"id":"21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f","message":"docs(部署,runbook): 记录补 §16——D-13 从推断变成实测、订正并复验,另登记 D-15\n\nD-13 此前只是读代码推断(判定链对不上)。本轮先做成可证伪的实测:用 dev 的 HS256 密钥\n手工签发三个只差 sub 的 token 打 GET /api/platform/ops/definitions——\n\n sub = users.subject(IdP 令牌的实际形态) 订正前 403 OPS_FORBIDDEN → 订正后 200\n sub = users.id(白名单原值) 订正前 200 → 订正后 403\n 同上但不带 platform:ops(对照) 两次都是 403 OPS_SCOPE_REQUIRED\n\n第三行是对照组,证明守卫顺序是 scope 在前、白名单在后,前两行的差异确实出在白名单这一关。\nsub 的实际形态取自 §14 那次真实登录的令牌,不是猜的。\n\n订正落在仓外 .secrets(PLATFORM_OPS_ADMIN_SUBJECTS 由 users.id 改为 users.subject,\n并在键上方留三行注释说明判定链),force-recreate 重建 runtime 容器后复验,健康探针 200。\nD-13 闭环。\n\n同时订正一个我自己此前过于保守的判断:原以为「必须等 canonical 租户分支合并后与 D-4 一并验」,\n实际 D-4 挡的是执行那一步,定义面的读取不受影响,守卫这一层现在就能独立验证。\n\n新登记 D-15:当前没有任何 OIDC 客户端的 allowedScopes 含 platform:ops(三个客户端全是\nopenid profile [idp:manage]),真实 IdP 令牌因此卡在 scope 关——不是白名单、也不是 D-4。\n给客户端放这个 scope 等于把平台运维权发给浏览器里的公开客户端,属安全裁决,留 Owner。\n\nrunbook §2.1 的警告块同步更新:那处现已订正,并指向 §16 与 D-15。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f","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:58:15-07:00","added":[],"removed":[],"modified":["docs/dev部署运行重做记录-2026-09-18.md","docs/runbook.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":21469,"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:55:10+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"}}...
|
push
|
2
|
30
|
1789775900
|
1789775940
|
0
|
1789775899
|
1789775969
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24191
|
docs(发布): 记录 rc.6 列车——fact-pii 这次真出去了,并记下五趟旁路的累积代价
|
116
|
5
|
platform.yml
|
157
|
5
|
0
|
refs/heads/main
|
fe35d013ca78dcfcec4b634a312cd0266527fe2b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f","after":"fe35d013ca78dcfcec4b634a312cd0266527fe2b","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/21d7c1aaae83d8d5e40aa185b1bd86d3a8d8d99f...fe35d013ca78dcfcec4b634a312cd0266527fe2b","commits":[{"id":"fe35d013ca78dcfcec4b634a312cd0266527fe2b","message":"docs(发布): 记录 rc.6 列车——fact-pii 这次真出去了,并记下五趟旁路的累积代价\n\nrc.6 三包 2026-09-18 发出,源 7eadfb1,tag packages-v1.0.0-rc.6(连续第三趟按 CL-5 打上)。\n动因是补 rc.5 的缺口:那时 check-fact-pii.mjs 还不在 governance 包的 files 里,消费者拿到的\nrc.5 不含它。governance 包从 96.9 kB 涨到 101.3 kB,涨的正是那两个文件。\n\n**这一趟的验证比前四趟硬。** 前几趟只能依赖 publish-rc.mjs 的 integrity 自校验;这次把\nRegistry 登记的 dist.integrity 与本地备料 tarball 的 sha512 逐包比对,三包全部一致——\n证明架上的就是会话备的那批料,中间没有被替换或重打包。\n\n顺带纠正一个前几趟被骗过的点:npm view \u003cpkg\u003e versions 在 Gitea 的 npm registry 上静默返回空,\n查具体版本(npm view \u003cpkg\u003e@\u003cversion\u003e dist.integrity)才有结果。此前以为「Registry 查不了」,\n是被这个 API 差异骗的,不是权限问题。\n\n**记下累积代价:** 旁路第五次使用后,contracts / governance 的 rc.0—rc.6 七个版本号已全部被\n本地包永久占用,永远不会有阶段门证据;计费恢复后 CI 只能从 rc.7 发起。开关当初登记为\n「临时设施」,五趟之后它显然已是常态通道——这不是它该有的角色。计费恢复时该做的是删掉\n这个分支并让 CI 发 rc.7,而不是让它继续顺手可用。这句话写进了 G-12,免得下一趟又顺手发第六次。\n\nCLAUDE.md 的 contracts 条目同步到 rc.6,并记下 check:fact-pii 自 rc.6 起随包。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/fe35d013ca78dcfcec4b634a312cd0266527fe2b","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:59:52-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/G-12本地旁路发布记录-2026-09-13.md"]},{"id":"fe96fe64bdb8753331280a2b3396c8237b08b9d3","message":"test(runtime): ai-gateway 的选路本身不在门禁上——补 router-route / router-refresh / route-plan,10 处的第 4、5 处\n\n结构比对报出 LocalAiGovernanceRouter(316 行、三个公开方法)整支未接线、planAiRoute() 未接线。\n既有三条规则(action / route / egress)走的都是纯函数——动作治理、单条路由体检、外发分类判据——\n而选路本身(租户 allowlist、能力匹配、区域 / 安全层级 / 留存期、禁止静默回退、快照热更)\n与 planAiRoute 的串联(鉴权 → 外发分类 → 选路)一条都不在门禁上。判定逻辑一行未改。\n\n补三条规则,判定按 kind / outcome,不用 `\"reasons\" in`。\n\n接上后照例先变差,冒出 7 条「夹具与单测都没有」(EXPLICIT_FALLBACK_REQUIRED 与 refresh 侧六条\n策略字段守卫),逐条钉完回到 0。\n\n过程中一处预期被实测推翻:我按「删掉 allowFallback 就该拒」造 N21,实跑返回 []——主路由仍然匹配,\n删这个布尔位不构成拒绝。真要触发 EXPLICIT_FALLBACK_REQUIRED 得让快照里只剩 fallback 路由可选。\n按实现重造该例,没有反过来改实现。\n\n覆盖:夹具 16 → 35 例(正 8 / 反 27),规则 3 → 6;三档(都没有 / 仅单测 / 未接线)均为 0。\n新钉住的包括 NO_APPROVED_MODEL_ROUTE(租户越界 / 能力不符 / 无快照三条路径)、\nSENSITIVE_PROVIDER_NOT_APPROVED、EGRESS_CLASS_REQUIRES_SENSITIVE_FLAG、PERMISSION_DENIED:\u003ccode\u003e\n——AI 出站的准入闸门此前在门禁上只有纯函数那一半。\n\n证据:pnpm --dir runtime --filter @juhai/module-ai-gateway test 53/53、typecheck 绿、\n该套件夹具 35/35 失败 0、fixture-coverage 三档全 0。本次不回绑任何 reports/。\n\n进度:10 处已收 5 处(跨域流程 refresh、scope、credential、ai-gateway 两处)。\n余 5 处在 permission 3 / audit 1 / fact 1。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/fe96fe64bdb8753331280a2b3396c8237b08b9d3","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:59:00-07:00","added":[],"removed":[],"modified":["runtime/modules/ai-gateway/src/domain/fixture-evaluator.ts","runtime/modules/ai-gateway/test/fixtures/ai-gateway.fixtures.json"]},{"id":"2822c4d34a1b519fc87a21fe30b035028502d297","message":"fix(modules): permission 三支判定接进夹具门禁,并修两处崩溃面——此前整支不在门禁上\n\n起因是 governance/fixture-coverage.mjs 的结构比对:六个运行时模块共 10 处判定面\n「评估器没接线」,permission 占 3 处(LocalPermissionDecisionPlanner、\nLocalEmploymentScopeInvalidationPlanner、evaluateCatalogAdmission)。\n\n先确认不是有意留白,三条证据:① 探针自述把「未接线」定义为「该面完全不在门禁上」,\n并在同日把契约包侧四次同形全部修掉;② 各模块夹具 description 确实声明过取舍,但都在\n另一个轴上(吊销即时性 / 配额熔断 / 查询越权,一律「属权威实现,DEC-xxx 后」),\n没有一条提到这些 planner;③ 决定性的一条——f7a0cbb 先迁入 planner,8a95879 才建夹具,\n建的时候这些文件就在同一目录里,而 8a95879 自述评估器「只调用迁入的纯规则」,\n按它自己的话这些面本就该在。\n\n实测先行,查出两处真缺陷(均已修):\n\n evaluateCatalogAdmission([null, \"x\"], …) 抛 TypeError——守了 routes 非数组,\n 没守条目非对象;目录来自快照 JSON。\n\n LocalPermissionDecisionPlanner.plan(undefined) 抛,兜底的 deny-all 也抛。\n 注意光守 preflight 不够:plan() 在 preflight 之后仍直接解引用 request.actorType 等,\n 故两处都要守。preflightCataloguedPermissionDecision 的 catalog 非数组 / 条目非对象 /\n actions 非数组一并收口。\n\n三支 employment 的 plan 是本域最结实的一支,畸形入参改前就已 REJECT,未动其判定。\n\n接线五条规则(decision-plan / employment-invalidation / catalog-admission 加两个\nplanner 的 refresh),非放行出口一律按 kind 显式映射:本域 PermissionDecisionPlanResult\n的 BLOCKED 带的是 blockers,EmploymentScopeInvalidationResult 的 SKIP_DUPLICATE 与\nACKNOWLEDGE_STALE 连原因字段都没有——按 `\"reasons\" in r` 判会把它们全判成 ACCEPT\n(该形状已在契约包侧四个域各咬过一次)。\n\n按探针自述「补规则后覆盖度会先变差,把新暴露的原因码钉完再收工」执行:接线后\n「夹具与单测都没有」由 0 涨到 40,用探针 --json 的 trigger 机械生成钉住用例并逐条实跑\n确认可复现(38 条自动 + 2 条手工,其中 ASSIGNMENT_ID_MUST_CHANGE 的 trigger 提示不准,\n删字段实得 NEW_ASSIGNMENT_ID_INVALID,按语义改为新旧指派相同才复现)。\n\n核验:夹具 11 → 68 例(正 7 / 反 61)0 失败;模块单测 63 → 108 例;探针 permission 两档\n双双归零(未接线 3 → 0、都没有 40 → 0),全仓「都没有」合计 47 → 0、未接线 10 → 4;\n负向实做:把 SKIP_DUPLICATE 的声明原因改成不会产生的串,门禁 exit 1 并点名该例,还原后\nexit 0;门禁另自行抓到我一处声明写错(PERMISSION_ADMISSION_SNAPSHOT_VERSION_NOT_FORWARD\n实为 PERMISSION_ADMISSION_VERSION_NOT_FORWARD)。\n\nruntime 静态链 12 道绿、第 13 道 check:docs-truth 红,但与本轮无关:c4ec6f6 把\nui-acceptance 重绑到 67e8193 却没回灌 runtime/CLAUDE.md 动态区,已在 HEAD 干净检出复现。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/2822c4d34a1b519fc87a21fe30b035028502d297","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:58:45-07:00","added":[],"removed":[],"modified":["runtime/modules/permission/src/domain/catalog-admission.ts","runtime/modules/permission/src/domain/fixture-evaluator.ts","runtime/modules/permission/src/domain/permission-decision-planner.ts","runtime/modules/permission/src/domain/permission-preflight.ts","runtime/modules/permission/test/fixtures/permission.fixtures.json"]}],"total_commits":0,"head_commit":{"id":"fe35d013ca78dcfcec4b634a312cd0266527fe2b","message":"docs(发布): 记录 rc.6 列车——fact-pii 这次真出去了,并记下五趟旁路的累积代价\n\nrc.6 三包 2026-09-18 发出,源 7eadfb1,tag packages-v1.0.0-rc.6(连续第三趟按 CL-5 打上)。\n动因是补 rc.5 的缺口:那时 check-fact-pii.mjs 还不在 governance 包的 files 里,消费者拿到的\nrc.5 不含它。governance 包从 96.9 kB 涨到 101.3 kB,涨的正是那两个文件。\n\n**这一趟的验证比前四趟硬。** 前几趟只能依赖 publish-rc.mjs 的 integrity 自校验;这次把\nRegistry 登记的 dist.integrity 与本地备料 tarball 的 sha512 逐包比对,三包全部一致——\n证明架上的就是会话备的那批料,中间没有被替换或重打包。\n\n顺带纠正一个前几趟被骗过的点:npm view \u003cpkg\u003e versions 在 Gitea 的 npm registry 上静默返回空,\n查具体版本(npm view \u003cpkg\u003e@\u003cversion\u003e dist.integrity)才有结果。此前以为「Registry 查不了」,\n是被这个 API 差异骗的,不是权限问题。\n\n**记下累积代价:** 旁路第五次使用后,contracts / governance 的 rc.0—rc.6 七个版本号已全部被\n本地包永久占用,永远不会有阶段门证据;计费恢复后 CI 只能从 rc.7 发起。开关当初登记为\n「临时设施」,五趟之后它显然已是常态通道——这不是它该有的角色。计费恢复时该做的是删掉\n这个分支并让 CI 发 rc.7,而不是让它继续顺手可用。这句话写进了 G-12,免得下一趟又顺手发第六次。\n\nCLAUDE.md 的 contracts 条目同步到 rc.6,并记下 check:fact-pii 自 rc.6 起随包。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/fe35d013ca78dcfcec4b634a312cd0266527fe2b","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:59:52-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/G-12本地旁路发布记录-2026-09-13.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":21540,"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:58:20+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"}}...
|
push
|
3
|
29
|
1789776004
|
1789777073
|
0
|
1789776003
|
1789777125
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24192
|
docs(部署): 记录补 §17——D-15 只说对了一半,放开 scope 在信任锚未改前无效; docs(部署): 记录补 §17——D-15 只说对了一半,放开 scope 在信任锚未改前无效;拆出 D-16...
|
116
|
5
|
platform.yml
|
158
|
5
|
0
|
refs/heads/main
|
db1b4721f85189353d42e1b67586d66ba6041c88
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fe35d013ca78dcfcec4b634a312cd0266527fe2b","after":"db1b4721f85189353d42e1b67586d66ba6041c88","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/fe35d013ca78dcfcec4b634a312cd0266527fe2b...db1b4721f85189353d42e1b67586d66ba6041c88","commits":[{"id":"db1b4721f85189353d42e1b67586d66ba6041c88","message":"docs(部署): 记录补 §17——D-15 只说对了一半,放开 scope 在信任锚未改前无效;拆出 D-16\n\n动手处理 D-15 前先验前提,结论是前提不成立:就算放开 platform:ops,真实 IdP 令牌照样进不来。\n\n实验:用 IdP 自己的 dev 签名私钥签一个 RS256 access token(形状与真实令牌一致),把三重守卫\n的输入全部凑齐——sub 用 §16 订正后的 users.subject、azp 用白名单里的 demo-console、scope 含\nplatform:ops——打 GET /api/platform/ops/definitions,得 401 INVALID_TOKEN。不是 403、不是 scope、\n不是白名单,是签名根本没被验过:容器 AUTH_JWKS_URI 为空,token-verifier.ts:98 因此走 hs256Secret\n分支,算法集只有 HS 一族。用 IdP 真私钥而不是随便造一把,是为了堵住「那只是密钥不对」的解释。\n\n再深一层:token-verifier.ts:47-50 只认单个 key source 与单个 issuer/audience,而 IdP 是每租户\n一个 issuer、每租户一份 JWKS。单租户 dev 下是配一个 URL 的事,多租户下不是——两边模型没对齐。\n\n本轮不擅自改,两处代价都不小:改 AUTH_JWKS_URI 等于换掉整个运行时的信任锚、所有 HS256 令牌\n当场失效,而这台容器是并行会话共用的常驻 dev 运行时;给客户端放 platform:ops 则因管理 API 没有\n改已有客户端的端点,要新建客户端并同步 PLATFORM_OPS_CLIENT_IDS,且本身是安全裁决。\n\nD-15 照此改写(§16.3 那行改为指向 §17.3,避免两处并存),新拆 D-16 记信任锚与模型不匹配。\n在 D-16 未裁之前,单独放开 scope 是无效功。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/db1b4721f85189353d42e1b67586d66ba6041c88","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-18T17:00:37-07:00","added":[],"removed":[],"modified":["docs/dev部署运行重做记录-2026-09-18.md"]}],"total_commits":0,"head_commit":{"id":"db1b4721f85189353d42e1b67586d66ba6041c88","message":"docs(部署): 记录补 §17——D-15 只说对了一半,放开 scope 在信任锚未改前无效;拆出 D-16\n\n动手处理 D-15 前先验前提,结论是前提不成立:就算放开 platform:ops,真实 IdP 令牌照样进不来。\n\n实验:用 IdP 自己的 dev 签名私钥签一个 RS256 access token(形状与真实令牌一致),把三重守卫\n的输入全部凑齐——sub 用 §16 订正后的 users.subject、azp 用白名单里的 demo-console、scope 含\nplatform:ops——打 GET /api/platform/ops/definitions,得 401 INVALID_TOKEN。不是 403、不是 scope、\n不是白名单,是签名根本没被验过:容器 AUTH_JWKS_URI 为空,token-verifier.ts:98 因此走 hs256Secret\n分支,算法集只有 HS 一族。用 IdP 真私钥而不是随便造一把,是为了堵住「那只是密钥不对」的解释。\n\n再深一层:token-verifier.ts:47-50 只认单个 key source 与单个 issuer/audience,而 IdP 是每租户\n一个 issuer、每租户一份 JWKS。单租户 dev 下是配一个 URL 的事,多租户下不是——两边模型没对齐。\n\n本轮不擅自改,两处代价都不小:改 AUTH_JWKS_URI 等于换掉整个运行时的信任锚、所有 HS256 令牌\n当场失效,而这台容器是并行会话共用的常驻 dev 运行时;给客户端放 platform:ops 则因管理 API 没有\n改已有客户端的端点,要新建客户端并同步 PLATFORM_OPS_CLIENT_IDS,且本身是安全裁决。\n\nD-15 照此改写(§16.3 那行改为指向 §17.3,避免两处并存),新拆 D-16 记信任锚与模型不匹配。\n在 D-16 未裁之前,单独放开 scope 是无效功。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/db1b4721f85189353d42e1b67586d66ba6041c88","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-18T17:00:37-07:00","added":[],"removed":[],"modified":["docs/dev部署运行重做记录-2026-09-18.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":21600,"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-19T08:00:04+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"}}...
|
push
|
3
|
10
|
0
|
1789776044
|
0
|
1789776041
|
1789776044
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24193
|
docs(发布): rc.6 产物行补 total files 与 shasum——37→39 是「 docs(发布): rc.6 产物行补 total files 与 shasum——37→39 是「两个文件进包」最直接的证据...
|
116
|
5
|
platform.yml
|
159
|
5
|
0
|
refs/heads/main
|
03af35c77d7373f504875531e22ec6fb8e078898
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"db1b4721f85189353d42e1b67586d66ba6041c88","after":"03af35c77d7373f504875531e22ec6fb8e078898","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/db1b4721f85189353d42e1b67586d66ba6041c88...03af35c77d7373f504875531e22ec6fb8e078898","commits":[{"id":"03af35c77d7373f504875531e22ec6fb8e078898","message":"docs(发布): rc.6 产物行补 total files 与 shasum——37→39 是「两个文件进包」最直接的证据\n\n原记录只写了包大小(96.9→101.3 kB)。发布输出里有更精确的数字:governance 的 total files\n由 rc.5 的 37 变为 39,多出来的正是 check-fact-pii.mjs(8.6 kB) 与 fact-pii-rules.json(1.8 kB);\nbin/cli.mjs 3.9→4.0 kB 是注册子命令那行。三包 shasum 一并记入,便于事后核验。\n\n记录与发布输出已逐项核对一致(三包大小、文件数、包内容)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/03af35c77d7373f504875531e22ec6fb8e078898","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-18T17:00:41-07:00","added":[],"removed":[],"modified":["docs/G-12本地旁路发布记录-2026-09-13.md"]}],"total_commits":0,"head_commit":{"id":"03af35c77d7373f504875531e22ec6fb8e078898","message":"docs(发布): rc.6 产物行补 total files 与 shasum——37→39 是「两个文件进包」最直接的证据\n\n原记录只写了包大小(96.9→101.3 kB)。发布输出里有更精确的数字:governance 的 total files\n由 rc.5 的 37 变为 39,多出来的正是 check-fact-pii.mjs(8.6 kB) 与 fact-pii-rules.json(1.8 kB);\nbin/cli.mjs 3.9→4.0 kB 是注册子命令那行。三包 shasum 一并记入,便于事后核验。\n\n记录与发布输出已逐项核对一致(三包大小、文件数、包内容)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/03af35c77d7373f504875531e22ec6fb8e078898","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-18T17:00:41-07:00","added":[],"removed":[],"modified":["docs/G-12本地旁路发布记录-2026-09-13.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":21628,"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-19T08:00:42+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"}}...
|
push
|
3
|
10
|
0
|
1789776378
|
0
|
1789776045
|
1789776378
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24194
|
fix(modules): audit 追加准入 plan() 补请求体检——兜底 deny-all fix(modules): audit 追加准入 plan() 补请求体检——兜底 deny-all 此前也抛...
|
116
|
5
|
platform.yml
|
160
|
5
|
0
|
refs/heads/main
|
64bc6f5489ead3c65b23869f5e8866202e60b855
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"03af35c77d7373f504875531e22ec6fb8e078898","after":"64bc6f5489ead3c65b23869f5e8866202e60b855","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/03af35c77d7373f504875531e22ec6fb8e078898...64bc6f5489ead3c65b23869f5e8866202e60b855","commits":[{"id":"64bc6f5489ead3c65b23869f5e8866202e60b855","message":"fix(modules): audit 追加准入 plan() 补请求体检——兜底 deny-all 此前也抛\n\n71a04df 把本域接进了门禁(10 处未接线全部收口),但没动判定本身。实测 dist:\nplan(undefined) 在 request.auditEventId 上抛 TypeError,createRuntimeAuditAppendAdmissionPlanner()\n的 bundled deny-all 走同一条路——\"什么都不放行\"的最后一道在畸形入参下抛异常,等于没有兜底。\n请求来自 JSON(夹具、Owner 写入口载荷),声明类型只约束调用方。\n\n本域其余部分改前就已失败关闭,一行未动:plan({}) → REJECT、details 非对象 → REJECT、\nchanges 非数组 → REJECT、refresh(undefined) → applied:false、快照 validated 非真在 create 期抛、\ndetails 带 password → AUDIT_DETAIL_FORBIDDEN 且回 forbiddenDetails、outcome 大写 → REJECT。\n\n补 AUDIT_APPEND_REQUEST_INVALID 一条稳定原因码并钉进夹具(71a04df 的 81 例未覆盖它——\n该原因码此前不存在)。夹具 81 → 82 例(正 11 / 反 71)0 失败;模块单测 136 例;\n负向实做:把该例声明原因改成不会产生的串,门禁 exit 1 并点名,还原后 exit 0。\n覆盖度探针两档归零(未接线 0 处、夹具与单测都没有 0 条)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/64bc6f5489ead3c65b23869f5e8866202e60b855","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-18T17:03:47-07:00","added":[],"removed":[],"modified":["runtime/modules/audit/src/domain/audit-append-planner.ts","runtime/modules/audit/test/fixtures/audit.fixtures.json"]},{"id":"71a04df0f09c8ff265e6f87c0f9016b61f84b4eb","message":"test(runtime): audit 追加准入接进门禁,10 处未接线全部收口——三档归零,17 套件 706 例\n\n最后一处:LocalAuditAppendAdmissionPlanner(734 行、本仓最大的一支 planner、三个公开方法)整支未接线。\n既有四条规则走的是事件预检与提交协议;追加准入——服务与动作登记、环境 allowlist、结果与理由码\nallowlist、details / changes 白名单与上限、权限与 Scope 决策引用、时钟偏移与事件时效、快照热更——\n一条都不在门禁上。补 append-plan / append-refresh 两条规则,判定按 kind(BLOCKED 携带 blockers)。\n接上后新暴露 41 条,逐条钉完回到 0。夹具 27 → 81 例(正 11 / 反 70)。\n\n顺带补掉 permission 的 2 条残留「仅单测」(ACTOR_CREDENTIAL_MISMATCH / TENANT_ID_INVALID)——\n那个模块的三支判定由并行会话 2822c4d 接线,这两条是接线后新暴露、尚未钉住的。夹具 68 → 70 例。\n\n至此 CLAUDE.md 登记的 10 处未接线全部收口,接线顺序与新暴露的原因码数:\n 跨域流程 refresh +4 / scope 整支 +15 / credential 整支 +6 / ai-gateway 路由与 planAiRoute +7 /\n fact 导出准入 +34 / permission 三支(并行会话,残留 2 条本次补)/ audit 追加准入 +41\n合计 109 条原因码此前任何入口都走不到——这正是「读数为 0 不等于收口」的量级。\nCLAUDE.md 同段已从「均未处理」改为已收口,并留下这份接线顺序与数字。\n\n证据:pnpm check:fixtures 17 套件 706 例 0 失败 0 不可用(此前 468 例);\nfixture-coverage 三档(都没有 / 仅单测 / 未接线)15 个套件全为 0;\nmodule-audit test 135/135、module-permission test 110/110、两模块 typecheck 绿;\n工作区一致性门禁只剩既有的 L9 compose project 撞名。\n规则源码一行未改——七次接线动的都只是评估器与夹具。本次不回绑任何 reports/。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/71a04df0f09c8ff265e6f87c0f9016b61f84b4eb","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-18T17:03:02-07:00","added":[],"removed":[],"modified":["CLAUDE.md","runtime/modules/audit/src/domain/fixture-evaluator.ts","runtime/modules/audit/test/fixtures/audit.fixtures.json","runtime/modules/permission/test/fixtures/permission.fixtures.json"]},{"id":"68116db133192fb66e0a6f84ee7b34cac74c9667","message":"test(runtime): fact 的生产侧导出准入不在门禁上——补 export-plan / export-refresh,10 处的第 6 处\n\n结构比对报出 LocalFactExportAdmissionPlanner(549 行、三个公开方法)整支未接线:本模块此前只有\ndelivery 一条规则,管的是消费侧分类(重复 / 乱序 / 缺口 / 毒消息);生产侧的导出准入——事实登记、\n生产者应用与主体、Schema 摘要与兼容性、实体前缀、目录版本水位、双时间顺序、快照热更——一条都不在\n门禁上。判定逻辑一行未改,判定按 kind(BLOCKED 携带 blockers 而非 reasons)。\n\n接上后新暴露 33 条「夹具与单测都没有」+ 1 条「仅单测」,是本批到目前为止最多的一次——因为这支\nplanner 的请求体检面最宽(26 个字段)。逐条钉完回到 0。\n\n覆盖:夹具 10 → 56 例(正 5 / 反 51),规则 1 → 3;三档均为 0。新钉住的包括\nFACT_SCHEMA_NOT_REGISTERED / FACT_PRODUCER_APP_MISMATCH / FACT_PRODUCER_PRINCIPAL_NOT_REGISTERED /\nFACT_SCHEMA_DIGEST_MISMATCH / FACT_ENTITY_ID_PREFIX_MISMATCH / FACT_CATALOG_VERSION_MISMATCH /\nRECORDED_AT_BEFORE_EFFECTIVE_AT——\"谁有资格往事实流里写\"这一整面此前门禁上一条没有。\n\n工具化:这轮把「按探针给出的触发路径逐条生成用例并用真实产出回填」写成了一次性脚本跑(34 例),\n比手写快得多,也避免了我前几轮那种\"挑错底例\"的手误;每例生成后仍逐条核了\"确实拒绝\"。\n\n证据:pnpm --dir runtime --filter @juhai/module-fact test 94/94、typecheck 绿、\n该套件夹具 56/56 失败 0、fixture-coverage 三档全 0。本次不回绑任何 reports/。\n\n进度:10 处已收 6 处。余 4 处在 permission 3 / audit 1。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/68116db133192fb66e0a6f84ee7b34cac74c9667","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-18T17:01:01-07:00","added":[],"removed":[],"modified":["runtime/modules/fact/src/domain/fixture-evaluator.ts","runtime/modules/fact/test/fixtures/fact.fixtures.json"]}],"total_commits":0,"head_commit":{"id":"64bc6f5489ead3c65b23869f5e8866202e60b855","message":"fix(modules): audit 追加准入 plan() 补请求体检——兜底 deny-all 此前也抛\n\n71a04df 把本域接进了门禁(10 处未接线全部收口),但没动判定本身。实测 dist:\nplan(undefined) 在 request.auditEventId 上抛 TypeError,createRuntimeAuditAppendAdmissionPlanner()\n的 bundled deny-all 走同一条路——\"什么都不放行\"的最后一道在畸形入参下抛异常,等于没有兜底。\n请求来自 JSON(夹具、Owner 写入口载荷),声明类型只约束调用方。\n\n本域其余部分改前就已失败关闭,一行未动:plan({}) → REJECT、details 非对象 → REJECT、\nchanges 非数组 → REJECT、refresh(undefined) → applied:false、快照 validated 非真在 create 期抛、\ndetails 带 password → AUDIT_DETAIL_FORBIDDEN 且回 forbiddenDetails、outcome 大写 → REJECT。\n\n补 AUDIT_APPEND_REQUEST_INVALID 一条稳定原因码并钉进夹具(71a04df 的 81 例未覆盖它——\n该原因码此前不存在)。夹具 81 → 82 例(正 11 / 反 71)0 失败;模块单测 136 例;\n负向实做:把该例声明原因改成不会产生的串,门禁 exit 1 并点名,还原后 exit 0。\n覆盖度探针两档归零(未接线 0 处、夹具与单测都没有 0 条)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/64bc6f5489ead3c65b23869f5e8866202e60b855","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-18T17:03:47-07:00","added":[],"removed":[],"modified":["runtime/modules/audit/src/domain/audit-append-planner.ts","runtime/modules/audit/test/fixtures/audit.fixtures.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":21639,"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-19T08:00:45+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"}}...
|
push
|
3
|
10
|
0
|
1789776505
|
0
|
1789776378
|
1789776505
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24195
|
docs(提案): fixture-coverage 探针是否接进门禁流——请门禁 Owner 裁三 docs(提案): fixture-coverage 探针是否接进门禁流——请门禁 Owner 裁三件事...
|
116
|
5
|
platform.yml
|
161
|
5
|
0
|
refs/heads/main
|
aac7c6046805e0336f73206b88fdd993afc991b9
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"64bc6f5489ead3c65b23869f5e8866202e60b855","after":"aac7c6046805e0336f73206b88fdd993afc991b9","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/64bc6f5489ead3c65b23869f5e8866202e60b855...aac7c6046805e0336f73206b88fdd993afc991b9","commits":[{"id":"aac7c6046805e0336f73206b88fdd993afc991b9","message":"docs(提案): fixture-coverage 探针是否接进门禁流——请门禁 Owner 裁三件事\n\n不是裁决,未实施任何接线。提案的核心事实是一条结构性盲区:check:gate-flow 的扫描面是\n根 package.json 的 scripts,而这个探针根本不是一个 script——于是它对那道「专门用来抓\n门禁的失败信号没人看」的门禁结构性不可见,既不在统一流内也不在任何 CI 链里。\n\n价值证据是今天一天的实况:仅靠手动敲它,报出六个模块 10 处判定面「评估器没接线」\n(含 393 行、734 行两整支规则),驱动 permission 夹具 11 → 68、audit 27 → 82,并暴露出\n「按字段存在与否判放行」这一 bug 类。这些对当时在跑的每一道门禁都不可见——check:fixtures\n只能证明已登记的用例都对,证明不了该登记的都登记了。\n\n三个必须先解决的设计问题均已实测,其中第一条最要命:在干净检出里不构建直接跑,15 个\n套件全部跳过,而 --json 的两个总数双双为 0、退出码 0——naive 接进 CI 就是一道永远绿的\n门禁。另两条是陈旧 dist 会假红(本会话被 fact 误报咬过一次),以及 nowhereTotal 在改进\n过程中非单调(permission 实测 0 → 40 → 0),对它上棘轮会阻断正在改进覆盖的提交本身。\n\n推荐紧跟 check:fixtures 之后接(复用其构建,增量 1.4 秒)、空跑失败关闭、只对\nwiringTotal 上棘轮;若认为改造暂不值当,至少给它一条带复核期的登记。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/aac7c6046805e0336f73206b88fdd993afc991b9","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-18T17:07:21-07:00","added":["docs/夹具覆盖度探针接入提案-2026-09-18.md"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"aac7c6046805e0336f73206b88fdd993afc991b9","message":"docs(提案): fixture-coverage 探针是否接进门禁流——请门禁 Owner 裁三件事\n\n不是裁决,未实施任何接线。提案的核心事实是一条结构性盲区:check:gate-flow 的扫描面是\n根 package.json 的 scripts,而这个探针根本不是一个 script——于是它对那道「专门用来抓\n门禁的失败信号没人看」的门禁结构性不可见,既不在统一流内也不在任何 CI 链里。\n\n价值证据是今天一天的实况:仅靠手动敲它,报出六个模块 10 处判定面「评估器没接线」\n(含 393 行、734 行两整支规则),驱动 permission 夹具 11 → 68、audit 27 → 82,并暴露出\n「按字段存在与否判放行」这一 bug 类。这些对当时在跑的每一道门禁都不可见——check:fixtures\n只能证明已登记的用例都对,证明不了该登记的都登记了。\n\n三个必须先解决的设计问题均已实测,其中第一条最要命:在干净检出里不构建直接跑,15 个\n套件全部跳过,而 --json 的两个总数双双为 0、退出码 0——naive 接进 CI 就是一道永远绿的\n门禁。另两条是陈旧 dist 会假红(本会话被 fact 误报咬过一次),以及 nowhereTotal 在改进\n过程中非单调(permission 实测 0 → 40 → 0),对它上棘轮会阻断正在改进覆盖的提交本身。\n\n推荐紧跟 check:fixtures 之后接(复用其构建,增量 1.4 秒)、空跑失败关闭、只对\nwiringTotal 上棘轮;若认为改造暂不值当,至少给它一条带复核期的登记。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/aac7c6046805e0336f73206b88fdd993afc991b9","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-18T17:07:21-07:00","added":["docs/夹具覆盖度探针接入提案-2026-09-18.md"],"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":21719,"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-19T08:06:18+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"}}...
|
push
|
3
|
10
|
0
|
1789776552
|
0
|
1789776505
|
1789776552
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24196
|
feat(治理): 删除 G-12 本地旁路开关——在计费尚未恢复时删,此后发布只有 CI 一条路
|
116
|
5
|
platform.yml
|
162
|
5
|
0
|
refs/heads/main
|
1de65fbbf4f2ae73c374662b9e342934b925556b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"aac7c6046805e0336f73206b88fdd993afc991b9","after":"1de65fbbf4f2ae73c374662b9e342934b925556b","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/aac7c6046805e0336f73206b88fdd993afc991b9...1de65fbbf4f2ae73c374662b9e342934b925556b","commits":[{"id":"1de65fbbf4f2ae73c374662b9e342934b925556b","message":"feat(治理): 删除 G-12 本地旁路开关——在计费尚未恢复时删,此后发布只有 CI 一条路\n\nG-12 开头把这条通道登记为「临时设施」,约定「计费恢复、CI 发布链可用后应删除」。\n实际走向是它被用了**五趟**(rc.2 / rc.3 / rc.4 / rc.5 / rc.6),成了常态通道。\n\n**在计费尚未恢复时就删,是有意的。** 按原约定等计费恢复再删,等于把退场时机交给一件谁也不知道\n什么时候发生的事;而每多走一趟,「顺手再走一次」的门槛就低一分。删除当天实测:GitHub Actions\n最新 run 35404565689(2026-09-18T23:09,main)仍 failure,job 形态仍是计费停摆的典型\n(两个 failure + 其余 skipped),GitHub 镜像落后 46 条。\n\n改动:publish-rc.mjs 删去 localBypass 分支与 PLATFORM_RELEASE_BYPASS_CI_EVIDENCE 判读,\n守门回到 if (!dir || process.env.GITHUB_ACTIONS !== 'true')。\nprepare-package-release.mjs 的七道 require 未动,一条也没放宽。\n\n验证(退出码直取、不经管道):非 CI 环境退出码 1;**带已废弃开关退出码同样是 1**,\n脚本内对该变量的引用数为 0。\n\n**直接后果是有意接受的:CI 发布链不可用期间发不了任何 RC**,想发就得先去修 Billing。\n沉没成本一并记清楚:contracts / governance 的 rc.0—rc.6 七个版本永远不会有阶段门证据——\npublish-rc.mjs 拒绝以不同字节覆盖已发布版本,而 CI 版本必然含不同的 provenance.json,\n这七个版本号无法被 CI 重发。\n\nG-12 追加「关闭记录」一节(本文自己要求的),前五节留在原处不动:它们是这条通道存在过、\n以及它如何从「临时」变成「常态」的完整账。CLAUDE.md 的 contracts 条目同步。\n要重新启用须经裁决并在 G-12 追加记录,不要直接把那段代码改回去。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/1de65fbbf4f2ae73c374662b9e342934b925556b","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-18T17:08:52-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/G-12本地旁路发布记录-2026-09-13.md","governance/publish-rc.mjs"]}],"total_commits":0,"head_commit":{"id":"1de65fbbf4f2ae73c374662b9e342934b925556b","message":"feat(治理): 删除 G-12 本地旁路开关——在计费尚未恢复时删,此后发布只有 CI 一条路\n\nG-12 开头把这条通道登记为「临时设施」,约定「计费恢复、CI 发布链可用后应删除」。\n实际走向是它被用了**五趟**(rc.2 / rc.3 / rc.4 / rc.5 / rc.6),成了常态通道。\n\n**在计费尚未恢复时就删,是有意的。** 按原约定等计费恢复再删,等于把退场时机交给一件谁也不知道\n什么时候发生的事;而每多走一趟,「顺手再走一次」的门槛就低一分。删除当天实测:GitHub Actions\n最新 run 35404565689(2026-09-18T23:09,main)仍 failure,job 形态仍是计费停摆的典型\n(两个 failure + 其余 skipped),GitHub 镜像落后 46 条。\n\n改动:publish-rc.mjs 删去 localBypass 分支与 PLATFORM_RELEASE_BYPASS_CI_EVIDENCE 判读,\n守门回到 if (!dir || process.env.GITHUB_ACTIONS !== 'true')。\nprepare-package-release.mjs 的七道 require 未动,一条也没放宽。\n\n验证(退出码直取、不经管道):非 CI 环境退出码 1;**带已废弃开关退出码同样是 1**,\n脚本内对该变量的引用数为 0。\n\n**直接后果是有意接受的:CI 发布链不可用期间发不了任何 RC**,想发就得先去修 Billing。\n沉没成本一并记清楚:contracts / governance 的 rc.0—rc.6 七个版本永远不会有阶段门证据——\npublish-rc.mjs 拒绝以不同字节覆盖已发布版本,而 CI 版本必然含不同的 provenance.json,\n这七个版本号无法被 CI 重发。\n\nG-12 追加「关闭记录」一节(本文自己要求的),前五节留在原处不动:它们是这条通道存在过、\n以及它如何从「临时」变成「常态」的完整账。CLAUDE.md 的 contracts 条目同步。\n要重新启用须经裁决并在 G-12 追加记录,不要直接把那段代码改回去。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/1de65fbbf4f2ae73c374662b9e342934b925556b","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-18T17:08:52-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/G-12本地旁路发布记录-2026-09-13.md","governance/publish-rc.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":21727,"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-19T08:08:25+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"}}...
|
push
|
3
|
10
|
0
|
1789776809
|
0
|
1789776552
|
1789776809
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24197
|
docs(提案): 补裁决结果——Owner 取方案 B,已实施 @ ab28a95 / 83a55 docs(提案): 补裁决结果——Owner 取方案 B,已实施 @ ab28a95 / 83a5542...
|
116
|
5
|
platform.yml
|
163
|
5
|
0
|
refs/heads/main
|
a15707432a286d35400876ba0420d6953cdee0fa
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"1de65fbbf4f2ae73c374662b9e342934b925556b","after":"a15707432a286d35400876ba0420d6953cdee0fa","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/1de65fbbf4f2ae73c374662b9e342934b925556b...a15707432a286d35400876ba0420d6953cdee0fa","commits":[{"id":"a15707432a286d35400876ba0420d6953cdee0fa","message":"docs(提案): 补裁决结果——Owner 取方案 B,已实施 @ ab28a95 / 83a5542\n\n提案正文 §1—§6 保留提出时原貌不回改,结果另起 §7;抬头改为「已裁定并实施完毕」,\n免得它腐烂成一份看起来还未决的提案。§7 另记一处提案里没写、实施时才发现的证据污染:\n显式 --suite 写仓级报告等于拿合成套件的结论冒充全仓结论,现只有全量扫描才产出。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/a15707432a286d35400876ba0420d6953cdee0fa","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-18T17:13:23-07:00","added":[],"removed":[],"modified":["docs/夹具覆盖度探针接入提案-2026-09-18.md"]},{"id":"a81cb95d81f556b81cfd37184dda2ee9e6ee816e","message":"chore(reports): check:fixtures 回绑 @ ab28a95 —— 补上 10 处接线那一批欠的回绑\n\nreports/fixtures.latest.json 此前绑在 62c9d95(17 套件 468 例),check:evidence 报 EVIDENCE_STALE:\n作用域内 18 个文件已变更。增量来自本会话接线那一批六条提交——475704b(跨域流程 refresh)、\na2a86a7(scope)、f28f8f9(credential)、fe96fe6(ai-gateway)、68116db(fact)、71a04df(audit\n+ permission 残留)。每轮都写了「本次不回绑」(工作树有并行会话 WIP,拿不到 worktreeDirty=false),\n后续没人补,成了欠账。\n\n回绑做法同上一次:在 企业控制面/.worktrees/rebind-fixtures-2 开 detached 干净检出(HEAD ab28a95),\n把主检出的 node_modules 软链进去(软链不被 .gitignore 的 node_modules/ 目录规则匹配,故写进本地\ninfo/exclude,用后删除,不改仓内 .gitignore),build contracts 与七模块后跑 check:fixtures,\n确认 git status 为空再出报告,最后只把这一份 report 拷回主检出、按 pathspec 单独提交。\n\n只拷这一份:主检出里并行会话另有一批报告 WIP,以及他们刚加的 reports/fixture-coverage.latest.json\n(fixture-coverage 由诊断升格为门禁后的首份产物,已由他们自己在 83a5542 回绑),一个都没碰。\n\n结果:provenance gitSha=ab28a95、worktreeDirty=false,17 套件 701 例 0 失败 0 不可用(此前 468 例)。\n83a5542 只新增了 reports/fixture-coverage.latest.json,不在本报告作用域内,故 ab28a95 的绑定仍成立。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/a81cb95d81f556b81cfd37184dda2ee9e6ee816e","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-18T17:13:20-07:00","added":[],"removed":[],"modified":["reports/fixtures.latest.json"]},{"id":"4ead62835b2d39b84f434f333175e42d45885486","message":"chore(reports): check:gate-flow 回绑 @ 83a5542\n\n经 governance/rebind-reports.mjs 在 HEAD 的临时干净检出里重跑,绑 83a5542 / worktreeDirty=false。\n\n此前工作区里那份是脏树产物(绑 1de65fb、dirty=true,是本会话跑 pnpm check 时就地覆写的),\n已还原后重跑。gate-flow 的作用域含根 package.json,1de65fb 之后它又被改过,所以绑定要跟到当前 HEAD。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/4ead62835b2d39b84f434f333175e42d45885486","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-18T17:13:19-07:00","added":[],"removed":[],"modified":["reports/gate-flow.latest.json"]},{"id":"83a554271fb7d176e403778575e45d1cd480aae9","message":"chore(reports): check:fixture-coverage 首份回绑 @ ab28a95\n\n本门禁在 ab28a95 升格后的第一份仓级证据:15 个套件、未接线 0 处、夹具与单测都没有 0 条,\nstatus=passed;provenance 绑 ab28a95、worktreeDirty=false。\n\n主工作区常驻并行会话在途文件、拿不到干净树,按偏差 #34-A 的路径在 HEAD 开 worktree\n(落在 企业控制面/.worktrees/)装依赖、构建 dist 后跑门禁再带回。本门禁依赖 runtime 七模块\n与 contracts 的 dist,故与 check:fixtures 同属 reports:rebind 工具拒绝的那一类,手工补上\ninstall 与 build 两步。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/83a554271fb7d176e403778575e45d1cd480aae9","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-18T17:12:44-07:00","added":["reports/fixture-coverage.latest.json"],"removed":[],"modified":[]},{"id":"ab28a95de59f5253872b51b3d03bb8f7a4c6598c","message":"feat(governance): fixture-coverage 由诊断工具升格为门禁并串进 check 链(Owner 裁方案 B)\n\n按 docs/夹具覆盖度探针接入提案-2026-09-18.md,门禁 Owner 裁定方案 B。提案 §4.2 的三条\n实测约束逐条落地,其中第一条是升格的前提:\n\n① 空跑即红。此前在干净检出里不构建直接跑,15 个套件全部「(未构建,跳过)」,而 --json\n 的 nowhereTotal / wiringTotal 双双为 0、退出码 0——人读的输出诚实,机器读的那份假绿,\n naive 接进 CI 就是一道永远绿的门禁。现照 check-fixtures.mjs 的既有语义:未构建的套件\n 计入 unavailable,默认失败关闭;--allow-unavailable 只降级「部分不可用」,不放行\n 「一个都跑不了」。\n\n② 只阻断 wiringTotal(未接线判定面)。它单调,适合做阻断项。\n\n③ nowhereTotal 只记不拦。它在改进过程中非单调(permission 实测 0 → 40 → 0:接线让新面\n 第一次被走到,钉完才回零),拿它阻断会拦住正在改进覆盖的那条提交本身。\n\n另修一处会污染证据的设计:显式 --suite 是定向排查与单元测试的用法,让它写\nreports/fixture-coverage.latest.json 等于拿合成套件的结论冒充全仓结论(本仓 pnpm test\n曾因此覆盖真实报告)。现只有全量扫描才产出仓级报告。\n\n接线位置紧跟 check:fixtures,复用它已建好的 dist,增量 1.4 秒;两份 CI 的 static job 跑的\n就是根 pnpm check,故无需改工作流。evidence-scopes 登记一条(error 级,作用域 = 套件清单 +\n探针 + 两侧 evaluator + 夹具用例文件)。check:gate-flow 因其已在链内不再需要具名登记。\n\n负向实做四项,全部转为回归用例(governance 测试 366 → 370):空跑 exit 1、\n--allow-unavailable 仍不放行空跑、未接线 exit 1、全接线 exit 0;另有一项手工实做——\n把 dist 里的 planner.refresh( 改成等价的 planner[\"refresh\"]((运行时行为不变,只是正则\n不再匹配),门禁精确报出 LocalAuditAppendAdmissionPlanner.refresh() 并 exit 1,还原后 exit 0。\n\n根链跑到本门禁为 passed(15 套件 / 未接线 0 / 都没有 0)。链上唯一的红是 check:docs-truth,\n与本轮无关:c4ec6f6 把 ui-acceptance 重绑到 67e8193 却没回灌 runtime/CLAUDE.md 动态区,\n已在 HEAD 干净检出复现。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/ab28a95de59f5253872b51b3d03bb8f7a4c6598c","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-18T17:12:04-07:00","added":[],"removed":[],"modified":["governance/evidence-scopes.json","governance/fixture-coverage.mjs","governance/test/fixture-coverage.test.mjs","package.json"]}],"total_commits":0,"head_commit":{"id":"a15707432a286d35400876ba0420d6953cdee0fa","message":"docs(提案): 补裁决结果——Owner 取方案 B,已实施 @ ab28a95 / 83a5542\n\n提案正文 §1—§6 保留提出时原貌不回改,结果另起 §7;抬头改为「已裁定并实施完毕」,\n免得它腐烂成一份看起来还未决的提案。§7 另记一处提案里没写、实施时才发现的证据污染:\n显式 --suite 写仓级报告等于拿合成套件的结论冒充全仓结论,现只有全量扫描才产出。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/a15707432a286d35400876ba0420d6953cdee0fa","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-18T17:13:23-07:00","added":[],"removed":[],"modified":["docs/夹具覆盖度探针接入提案-2026-09-18.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":21759,"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-19T08:09:13+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"}}...
|
push
|
2
|
34
|
1789777085
|
1789778117
|
0
|
1789776810
|
1789778311
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24198
|
chore(reports): 工作台两份快照回绑 @ a157074
|
116
|
5
|
platform.yml
|
164
|
5
|
0
|
refs/heads/main
|
d7d9fe5adc753a199dba41ec4be184d3db5053c4
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"a15707432a286d35400876ba0420d6953cdee0fa","after":"d7d9fe5adc753a199dba41ec4be184d3db5053c4","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/a15707432a286d35400876ba0420d6953cdee0fa...d7d9fe5adc753a199dba41ec4be184d3db5053c4","commits":[{"id":"d7d9fe5adc753a199dba41ec4be184d3db5053c4","message":"chore(reports): 工作台两份快照回绑 @ a157074\n\n经 governance/rebind-reports.mjs 在 HEAD 的临时干净检出里重跑,两份均绑 a157074 /\nworktreeDirty=false。两份由同一脚本(build-workbench-snapshots.mjs)产出,rebind 登记要求\n一起带回——分开提交会让它们绑不同提交,「同一次快照」这个前提就没了。\n\nops-snapshot 此前绑 73e36fd 过期,触发是并行会话的 21d7c1a 改了 docs/runbook.md\n(该报告的作用域含它)。回绑前先还原了 reports/evidence-freshness.latest.json——\n那份是本会话跑 pnpm check 时就地覆写的脏树产物(绑 5116dc5、dirty=true),\n它落在 ops-snapshot 的作用域里,不还原 rebind 会因「作用域内有未提交输入」拒绝。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/d7d9fe5adc753a199dba41ec4be184d3db5053c4","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-18T17:18:31-07:00","added":[],"removed":[],"modified":["reports/workbench-catalog-snapshot.latest.json","reports/workbench-ops-snapshot.latest.json"]}],"total_commits":0,"head_commit":{"id":"d7d9fe5adc753a199dba41ec4be184d3db5053c4","message":"chore(reports): 工作台两份快照回绑 @ a157074\n\n经 governance/rebind-reports.mjs 在 HEAD 的临时干净检出里重跑,两份均绑 a157074 /\nworktreeDirty=false。两份由同一脚本(build-workbench-snapshots.mjs)产出,rebind 登记要求\n一起带回——分开提交会让它们绑不同提交,「同一次快照」这个前提就没了。\n\nops-snapshot 此前绑 73e36fd 过期,触发是并行会话的 21d7c1a 改了 docs/runbook.md\n(该报告的作用域含它)。回绑前先还原了 reports/evidence-freshness.latest.json——\n那份是本会话跑 pnpm check 时就地覆写的脏树产物(绑 5116dc5、dirty=true),\n它落在 ops-snapshot 的作用域里,不还原 rebind 会因「作用域内有未提交输入」拒绝。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/d7d9fe5adc753a199dba41ec4be184d3db5053c4","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-18T17:18:31-07:00","added":[],"removed":[],"modified":["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":21824,"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-19T08:13:30+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"}}...
|
push
|
3
|
10
|
0
|
1789777366
|
0
|
1789777125
|
1789777366
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24199
|
chore(reports): sbom 回绑——包清单一字未变,因为镜像还是 106 个提交前那个
|
116
|
5
|
platform.yml
|
165
|
5
|
0
|
refs/heads/main
|
e3b9d12525448038fd8d8ac3f3c1470552ce4ff7
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"d7d9fe5adc753a199dba41ec4be184d3db5053c4","after":"e3b9d12525448038fd8d8ac3f3c1470552ce4ff7","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/d7d9fe5adc753a199dba41ec4be184d3db5053c4...e3b9d12525448038fd8d8ac3f3c1470552ce4ff7","commits":[{"id":"e3b9d12525448038fd8d8ac3f3c1470552ce4ff7","message":"chore(reports): sbom 回绑——包清单一字未变,因为镜像还是 106 个提交前那个\n\nlockfile 模式扫 reports/image-digest.json 指向的镜像(sha256:c0869934…,本机 docker 里还在),\n268 个包,worktreeDirty=false。\n\n**这次回绑没有改变任何实质结论:** 触发过期的是 63ff31f 改的 runtime/pnpm-lock.yaml(把 clients\n三包的 devDeps pin 成 exact),而 SBOM 描述的是镜像里的物料——镜像绑的源提交 05e3826 距当前 HEAD\n106 个提交,那些改动根本还没进镜像。逐包比对确认:新旧两份的包清单完全一致,变的只有 SPDX 生成时间戳。\n\n诚实读法:**provenance.gitSha 说「我是在哪跑的」,sourceSha 说「我描述的是 05e3826 的镜像」——\n两者相距 106 个提交。** 作用域纳入 runtime/pnpm-lock.yaml,是为了在锁文件变动时提醒「SBOM 可能\n不再反映当前源码」;正确回应是**重建镜像**(需 BuildKit + Gitea token,不在本机这轮范围),\n而不是重跑一遍生成器。回绑只是让证据链不挂着一条无人处理的红,没有解决镜像落后本身。\n\ncoverage 仍是 partial:只含 /srv/runtime/apps/api-nestjs 的 Node 依赖,不含基础镜像的 Debian 包。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/e3b9d12525448038fd8d8ac3f3c1470552ce4ff7","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-18T17:22:33-07:00","added":[],"removed":[],"modified":["reports/sbom.latest.json","reports/sbom.spdx.json"]},{"id":"a48cbd69d9411a1c7bc85e0fb97520c4392d1e73","message":"docs(证据): 补 identity/reports 的扫描面处置说明,并修掉它已造成的一处数字漂移\n\n全仓盲区复核查出的唯一真发现:check-evidence-freshness.mjs 只扫 reports/ 与\nruntime/reports/ 两个目录(写死在源码里),identity/reports/ 的 15 份报告既不在作用域\n登记里、也不在未登记账里——不是「未登记」,是压根没被看见。\n\nidentity 是 PF-07 阶段 1 的过渡工作区,按仓纪律 7 其三级门禁不进根 pnpm check 链,这层\n分离是有意的;但报告新鲜度的失察不是:那 15 份确实被当证据用(verify:candidate 从\nidentity/reports/baseline.json 读测试地板,docs/项目完整能力表.md E03 直接引用两份),\n而 identity 自带的 check:docs-truth 有 0 条 freshness-sha-* 断言(runtime 版有 4 条),\n于是「报告往前跑了、文档没跟上」这类漂移没有任何一道门禁能发现。\n\n它已经真的发生了。三处文档写 runtime 255 / UI 12 @ 85d538b,而报告实际绑:\nruntime-acceptance @ 25ead3e(2026-09-12,261 项 / 地板 255)、ui-acceptance @ 90cda56\n(2026-09-13,12 项)、dual-backend-behavior @ 25ead3e(差分 0)。三处按文档既有的\n「当前 + 历史」体例改正,85d538b 那轮移入历史;该次报告未记录的细节(新 UI 运行的\nWeb / API 端口)不补写,明示未记录。\n\n处置说明写进 undeclaredNote,含二选一出口(纳入扫描面逐份登记,或给 identity 的\ncheck-docs-truth 补 freshness-sha-* 断言)并注明 PF-07 阶段 2 后此条作废——但在那之前\n不得把「将来会消失」当作现在不管的理由。归门禁 Owner 裁。\n\n核验:check:evidence 未登记账仍 10 份 0 份无说明;identity check:governance-docs 与\ncheck:docs-truth 均绿;工作区一致性 L4 / L10 / L13 均 0。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/a48cbd69d9411a1c7bc85e0fb97520c4392d1e73","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-18T17:20:16-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/项目完整能力表.md","governance/evidence-scopes.json","identity/CLAUDE.md"]}],"total_commits":0,"head_commit":{"id":"e3b9d12525448038fd8d8ac3f3c1470552ce4ff7","message":"chore(reports): sbom 回绑——包清单一字未变,因为镜像还是 106 个提交前那个\n\nlockfile 模式扫 reports/image-digest.json 指向的镜像(sha256:c0869934…,本机 docker 里还在),\n268 个包,worktreeDirty=false。\n\n**这次回绑没有改变任何实质结论:** 触发过期的是 63ff31f 改的 runtime/pnpm-lock.yaml(把 clients\n三包的 devDeps pin 成 exact),而 SBOM 描述的是镜像里的物料——镜像绑的源提交 05e3826 距当前 HEAD\n106 个提交,那些改动根本还没进镜像。逐包比对确认:新旧两份的包清单完全一致,变的只有 SPDX 生成时间戳。\n\n诚实读法:**provenance.gitSha 说「我是在哪跑的」,sourceSha 说「我描述的是 05e3826 的镜像」——\n两者相距 106 个提交。** 作用域纳入 runtime/pnpm-lock.yaml,是为了在锁文件变动时提醒「SBOM 可能\n不再反映当前源码」;正确回应是**重建镜像**(需 BuildKit + Gitea token,不在本机这轮范围),\n而不是重跑一遍生成器。回绑只是让证据链不挂着一条无人处理的红,没有解决镜像落后本身。\n\ncoverage 仍是 partial:只含 /srv/runtime/apps/api-nestjs 的 Node 依赖,不含基础镜像的 Debian 包。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/e3b9d12525448038fd8d8ac3f3c1470552ce4ff7","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-18T17:22:33-07:00","added":[],"removed":[],"modified":["reports/sbom.latest.json","reports/sbom.spdx.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":21838,"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-19T08:18:45+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"}}...
|
push
|
3
|
10
|
0
|
1789777575
|
0
|
1789777366
|
1789777575
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24200
|
chore(reports): identity docs-truth 回绑 @ 1f3ff8c — chore(reports): identity docs-truth 回绑 @ 1f3ff8c —— 含新增的两条 freshness 断言...
|
116
|
5
|
platform.yml
|
166
|
5
|
0
|
refs/heads/main
|
6687aecfababeb5c03b9fa56d306e8212e79e107
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e3b9d12525448038fd8d8ac3f3c1470552ce4ff7","after":"6687aecfababeb5c03b9fa56d306e8212e79e107","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/e3b9d12525448038fd8d8ac3f3c1470552ce4ff7...6687aecfababeb5c03b9fa56d306e8212e79e107","commits":[{"id":"6687aecfababeb5c03b9fa56d306e8212e79e107","message":"chore(reports): identity docs-truth 回绑 @ 1f3ff8c —— 含新增的两条 freshness 断言\n\n绑 1f3ff8c、worktreeDirty=false、docsTruthViolations=0。该门禁自身零依赖,故在 HEAD 的\n干净 worktree 里直接 node 即可跑出,不需要 install。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/6687aecfababeb5c03b9fa56d306e8212e79e107","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-18T17:24:55-07:00","added":[],"removed":[],"modified":["identity/reports/docs-truth.latest.json"]},{"id":"1f3ff8c8f7d688955cc786f83cc79cc21fd73cc2","message":"feat(identity): check:docs-truth 补 freshness-sha 断言,证据处置出口 ② 落地\n\na48cbd6 登记的二选一出口,门禁 Owner 取 ②。identity 的报告此前两头都照不到:\nidentity/reports 不在 governance/check-evidence-freshness.mjs 的扫描面内(那边只扫\nreports/ 与 runtime/reports/),而 identity 自带的 check:docs-truth 有 0 条 freshness\n断言(runtime 版有 4 条)。当日实测它已真的漂了一次——动态区写 255 / 12 @ 85d538b,\n报告实际是 25ead3e(261 项)与 90cda56(UI 12)。\n\n口径移植自 runtime/scripts/check-docs-truth.mjs,保留其三条设计判断,逐条都有理由:\n\n 刻意不含静态级——governance.latest.json 每次 check 都重绑当时 HEAD,对它断言等价于\n 「每次提交都必须改文档」,提交报告后必红,那是会误杀的门禁不是有牙的门禁。\n\n 未接线的级别跳过而不是判红——恒红门禁不携带信息。本仓只接了 check:runtime 与 check:ui,\n 故只有这两条;deployment / production 两级在 identity 不存在,未列入。\n\n 必须是声明形式——上游实锤过一次自我假绿:条目为说明陈旧度写了提交区间 A..B,裸 includes\n 命中散文里的顺带提及,于是「文档声明 A、报告是 B」这个断言唯一要防的形态被整个绕过。\n\n与上游的唯一差异:本仓动态区写法是 clean commit `sha`(上游是 clean `sha`),两种都认——\n让断言认识本仓真实措辞,而不是为迁就工具去改文档。\n\n负向三项实做:① 把 runtime 条目 SHA 改回 85d538b → exit 1 并点名期望形式;② SHA 只出现在\n提交区间里(clean commit `85d538b`(区间 85d538b..25ead3e))→ 仍 exit 1,即上游那条陷阱\n在本仓也拦得住;③ UI 条目单独篡改 → exit 1。三项还原后均 exit 0。\n\nevidence-scopes 的处置说明同步更新:② 标记为已实施并记下负向证据;① 明示未做且暂不做\n(identity 按仓纪律 7 本就与根链分离,扩面会把 15 份一次性拖进根链账),现状是「identity\n的报告由 identity 自己的门禁守新鲜度」,边界清楚。本条仍随 PF-07 阶段 2 折入后作废。\n\n报告未随本提交:identity/reports/docs-truth.latest.json 我跑出来的那份绑脏树,已还原,\n按纪律在干净检出重出后另起 chore(reports)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/1f3ff8c8f7d688955cc786f83cc79cc21fd73cc2","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-18T17:24:38-07:00","added":[],"removed":[],"modified":["governance/evidence-scopes.json","identity/scripts/check-docs-truth.mjs"]},{"id":"a0145351979f7cf18de29b182000f791d6f5de05","message":"chore(reports): release-manifest 与 port-conformance 回绑 @ e3b9d12 —— 离线可跑的那批收口\n\n排查 7 条过期证据后分三组:A 组离线可跑、B 组要重建镜像并重启容器、C 组要真实 DB / Redpanda 验收。\n本次收 A 组。sbom 那条已由并行会话 e3b9d12 先收(包清单一字未变,因为镜像还是 106 个提交前那个),\n故 A 组实收两条。\n\n- release-manifest:结论仍是 partial,缺 signature(缺少与本次 registry 镜像绑定且 cosign 验证成功的\n 签名,§3A D-2)。回绑的是「当前确实缺这一项」这个事实,不是把它跑绿。\n- port-conformance:passed。\n\n回绑做法同前几次:企业控制面/.worktrees/rebind-a 开 detached 干净检出(HEAD e3b9d12),软链主检出的\nnode_modules(写进本地 info/exclude,用后删除),build contracts / modules / clients 后逐条跑,\n只把这两份 report 拷回主检出、按 pathspec 单独提交——主检出里并行会话另有十余份报告 WIP,一份没碰。\n\n过程中一处返工:首次跑 port-conformance 失败于 `Command \"vitest\" not found`——runtime/test 是独立\nworkspace 包,我第一轮软链只覆盖了 modules / packages / apps / clients,漏了它。补上软链后 passed。\n失败那份报告没有拷回。\n\n结果:两份 provenance 均 gitSha=e3b9d12、worktreeDirty=false;e3b9d12..HEAD 未触及这两份的作用域输入,\n绑定仍成立。\n\n未收(已登记,需你决定):\n B 组 deployed-runtime —— BUILT_IMAGE_SOURCE_BEHIND,运行容器镜像源 05e3826,HEAD 已有 23 个运行时\n 输入变更(其中含本会话接线那批 fixture-evaluator 与夹具)。要 image:build 重建 + 重启 runtime 容器。\n C 组 runtime-acceptance / mainline-acceptance / revocation-sla —— 要真实 PostgreSQL + Redis + Redpanda\n 验收;本机 dev 底座 13 个容器在跑,但会真实读写隔离库。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/a0145351979f7cf18de29b182000f791d6f5de05","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-18T17:24:14-07:00","added":[],"removed":[],"modified":["reports/port-conformance.latest.json","reports/release-manifest.latest.json"]}],"total_commits":0,"head_commit":{"id":"6687aecfababeb5c03b9fa56d306e8212e79e107","message":"chore(reports): identity docs-truth 回绑 @ 1f3ff8c —— 含新增的两条 freshness 断言\n\n绑 1f3ff8c、worktreeDirty=false、docsTruthViolations=0。该门禁自身零依赖,故在 HEAD 的\n干净 worktree 里直接 node 即可跑出,不需要 install。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/6687aecfababeb5c03b9fa56d306e8212e79e107","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-18T17:24:55-07:00","added":[],"removed":[],"modified":["identity/reports/docs-truth.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":21967,"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-19T08:22:46+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"}}...
|
push
|
3
|
33
|
1789778117
|
1789778261
|
0
|
1789777575
|
1789778290
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24201
|
chore(reports): runtime 静态门禁链 18 份回绑 @ 8a621fd
|
116
|
5
|
platform.yml
|
167
|
5
|
0
|
refs/heads/main
|
12093b843ef69d300370e5da16fcca3399c14d40
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"6687aecfababeb5c03b9fa56d306e8212e79e107","after":"12093b843ef69d300370e5da16fcca3399c14d40","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/6687aecfababeb5c03b9fa56d306e8212e79e107...12093b843ef69d300370e5da16fcca3399c14d40","commits":[{"id":"12093b843ef69d300370e5da16fcca3399c14d40","message":"chore(reports): runtime 静态门禁链 18 份回绑 @ 8a621fd\n\n8a621fd 订正动态区 UI 条目后,docs-truth 的作用域(含 runtime/CLAUDE.md)随之过期;\nruntime check 是一条链、跑一次重出全部 16 项,故整批回绑而不是只挑一份——绑定一致比\n少改几个文件重要(同 b60cc18 的口径)。顺带清掉此前 error 级的 runtime-governance\n(绑 7fc7f02,作用域内 3 个文件已变)。\n\n在 HEAD 的干净 worktree(企业控制面/.worktrees/)装依赖 + prisma:generate 后跑\npnpm --dir runtime check:exit 0、16 项全过;只带回 provenance 绑 8a621fd 且\nworktreeDirty=false 的 18 份。\n\n刻意未带回 4 份:runtime-acceptance / ui-acceptance / conformance-differential 需真实\nDB 与浏览器,不由静态链产出,保持各自原绑定(08c3788 / 67e8193);framework-migration\n至今没有嵌套 provenance,已在 evidence-scopes 未登记账里具名。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/12093b843ef69d300370e5da16fcca3399c14d40","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-18T17:33:42-07:00","added":[],"removed":[],"modified":["runtime/reports/agent-adapters.latest.json","runtime/reports/conformance-matrix.latest.json","runtime/reports/contract-consumers.latest.json","runtime/reports/docs-truth.latest.json","runtime/reports/dual-backend-parity.latest.json","runtime/reports/fork-readiness.latest.json","runtime/reports/governance-docs.latest.json","runtime/reports/governance-rules.latest.json","runtime/reports/governance-status.latest.json","runtime/reports/governance.latest.json","runtime/reports/migrations.latest.json","runtime/reports/naming.latest.json","runtime/reports/permission-catalog.latest.json","runtime/reports/platform-ops-definitions.latest.json","runtime/reports/runtime-governance.latest.json","runtime/reports/schema-sync.latest.json","runtime/reports/statemachine-write-guard.latest.json","runtime/reports/validation-source.latest.json"]},{"id":"8a621fdb03a44cebc985f97332ead8bbb785a685","message":"docs(runtime): 动态区 UI 条目订正三处——SHA、端口、验收库;check:docs-truth 转绿\n\nc4ec6f6 把 ui-acceptance 重绑到 67e8193 后没回灌动态区,check:docs-truth 的\nfreshness-sha-ui 从那时起一直红。逐项核对报告后发现**这一行有三处与报告对不上,\n而门禁只抓得到其中一处**:\n\n clean `1b23285` → 报告绑 `67e8193`(门禁抓到的就这条)\n web :3120 / api :3222 → 报告是 web :3100 / api :3202\n 「同上验收库与 Redis」 → UI 用的是 enterprise_platform_ui_acceptance,\n 与上一行 runtime 那轮的 enterprise_platform_acceptance_20260918\n 不是同一个库;Redis 逻辑库(:56380 db7)才是相同的\n\n只换 SHA 会把红变绿却留着后两句假话,故三处一并订正,并把「不是同一个库」写明——\n这一行紧跟在 runtime 条目之后,「同上」原本就容易被读成同一套基座。\n\n顺带记下门禁的覆盖边界:freshness-sha-* 只断言「动态区是否以声明形式写出报告当前的\nSHA」,同一条目里的端口、库名、用例描述都不在它的判据内,可以静默漂移——本次两处正是\n这样漂的。这不是缺陷而是取舍(把整行结构化对账会把门禁变成文档格式检查器),但读的人\n要知道绿不代表整行都对。\n\n核验:pnpm --dir runtime check 现 exit 0、16 项全过(本会话首次整条绿);\ncheck:governance-docs 绿(AGENTS.md 符号链接一致)。本次跑链改脏的 runtime/reports\n已全部还原,报告另在干净检出重出。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/8a621fdb03a44cebc985f97332ead8bbb785a685","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-18T17:32:06-07:00","added":[],"removed":[],"modified":["runtime/CLAUDE.md"]}],"total_commits":0,"head_commit":{"id":"12093b843ef69d300370e5da16fcca3399c14d40","message":"chore(reports): runtime 静态门禁链 18 份回绑 @ 8a621fd\n\n8a621fd 订正动态区 UI 条目后,docs-truth 的作用域(含 runtime/CLAUDE.md)随之过期;\nruntime check 是一条链、跑一次重出全部 16 项,故整批回绑而不是只挑一份——绑定一致比\n少改几个文件重要(同 b60cc18 的口径)。顺带清掉此前 error 级的 runtime-governance\n(绑 7fc7f02,作用域内 3 个文件已变)。\n\n在 HEAD 的干净 worktree(企业控制面/.worktrees/)装依赖 + prisma:generate 后跑\npnpm --dir runtime check:exit 0、16 项全过;只带回 provenance 绑 8a621fd 且\nworktreeDirty=false 的 18 份。\n\n刻意未带回 4 份:runtime-acceptance / ui-acceptance / conformance-differential 需真实\nDB 与浏览器,不由静态链产出,保持各自原绑定(08c3788 / 67e8193);framework-migration\n至今没有嵌套 provenance,已在 evidence-scopes 未登记账里具名。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/12093b843ef69d300370e5da16fcca3399c14d40","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-18T17:33:42-07:00","added":[],"removed":[],"modified":["runtime/reports/agent-adapters.latest.json","runtime/reports/conformance-matrix.latest.json","runtime/reports/contract-consumers.latest.json","runtime/reports/docs-truth.latest.json","runtime/reports/dual-backend-parity.latest.json","runtime/reports/fork-readiness.latest.json","runtime/reports/governance-docs.latest.json","runtime/reports/governance-rules.latest.json","runtime/reports/governance-status.latest.json","runtime/reports/governance.latest.json","runtime/reports/migrations.latest.json","runtime/reports/naming.latest.json","runtime/reports/permission-catalog.latest.json","runtime/reports/platform-ops-definitions.latest.json","runtime/reports/runtime-governance.latest.json","runtime/reports/schema-sync.latest.json","runtime/reports/statemachine-write-guard.latest.json","runtime/reports/validation-source.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":22003,"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-19T08:26:16+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"}}...
|
push
|
3
|
26
|
1789778463
|
1789779510
|
0
|
1789778291
|
1789779516
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24202
|
chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 47e6 chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 47e6fe3;锚点随批次刷新...
|
76
|
5
|
governance.yml
|
90
|
5
|
0
|
refs/heads/main
|
34aab5dea31113ee2688fd236eea3f382402027e
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2ef8d2fea20dcc03a7397ed3fc71312b675a70d9","after":"34aab5dea31113ee2688fd236eea3f382402027e","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/2ef8d2fea20dcc03a7397ed3fc71312b675a70d9...34aab5dea31113ee2688fd236eea3f382402027e","commits":[{"id":"34aab5dea31113ee2688fd236eea3f382402027e","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 47e6fe3;锚点随批次刷新\n\n三级证据本批首次同时绑定 clean HEAD `47e6fe3`(worktreeDirty:false):\n\n· runtime 30/30 步、**747 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 七包测试、迁移 deploy/status、auth-startup、db-credential-separation、tracing、\n dependency-resilience、capacity、write-capacity、multi-instance 全通过。\n 747 = 735 + 本批 12 例,与 b71b745 前置写下的预测值一致——预测被实测证实,\n 不是反过来改文档迁就。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate(收尾清单硬条目)。\n\nauth-startup 现有**三类拒启各 2/2**:无验签器、显式 demo、**生产缺 APP_ID**。第三类是本日\n新增,`missingAppIdRejected: 2` 是两个后端都真的起不来的机器回执——它抓到的正是本批自己\n第一版的惰性解析缺陷,不是事后补的装饰。\n\n跑了三轮 runtime,如实记账:\n ① 红在 auth-startup —— 真缺陷(惰性 APP_ID),已修(47e6fe3 的父提交);\n ② 实质全绿但红在收尾 docs-truth 的快照锚点滞后 —— 锚点停在 3949dcc 而 HEAD 已走两步,\n 打穿 C232 的 +1 自指窗。修复提交已把锚点折进去指向其父提交;\n ③ 30/30 全绿,即本提交回绑的这一份。\n第 ② 轮暴露的是我自己的流程错:改变用例数的批次天然要两轮,但锚点该在每个提交里跟着走,\n不该等到最后一个提交才想起来——C241 写的就是这条,这次仍然踩了。\n\n本提交按 C241 把锚点指向父提交 47e6fe3;证据新鲜度里 runtime 与 auth-startup 两行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/34aab5dea31113ee2688fd236eea3f382402027e","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-18T17:38:01-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},{"id":"47e6fe38803a863e867b9f8a6141540da75736ee","message":"fix(kernel-repin): APP_ID 改为装配期强制解析——惰性解析让生产「起得来但每个请求 500」\n\n本批 runtime 第一轮就红在 auth-startup,抓到的是我自己引入的缺陷,不是环境问题:\n\n首版 appId() 是**惰性**的(第一次请求才解析)。于是生产缺 APP_ID 时进程**正常启动**,\n随后 /api/health 与每个业务请求各 500 一次——栈顶就是 request-context 插件。内核对\nresolveAppId 写明的语义是「生产缺失即抛错,起不来好过匿名运行」,惰性版把它退化成\n「运行但全错」,而且把一个配置错误伪装成运行时故障。假绿五形态里的「假健康读模型」\n换了个方向:健康检查自己 500,但进程活着、编排层看不出是配置问题。\n\n改法:\n· appId() 解析失败时包一层稳定归因码 `[APP_ID_REQUIRED]`(与 C51 的 AUTH_VERIFIER_REQUIRED、\n C153 的 secret 读取同款——门禁判定归因码,不去匹配内核的中文消息);\n· 新增 assertRequestContextStartup(),在**四个入口**启动期强制解析:\n NestJS create-app.ts / Fastify app.ts(紧挨 assertTenantAuthStartup)\n + 两个 dispatcher 的 main()(contextFromJob 同样以 APP_ID 标识来源应用);\n· check:auth-startup 增加**第三类拒启负例**:生产 + required + 有 verifier、但显式拿掉\n APP_ID → 必须起不来。指标 missingAppIdRejected 入棘轮(floor 2);\n· 八个启动生产入口的 runner 显式提供 APP_ID——它们本来就该像真实编排那样配齐环境,\n 这不是放宽判据:判据是「缺了要拒启」,由上面那条负例证明,不是靠别的 runner 顺带不配。\n\n绊网加厚:check:dual-backend 的 RequestContext 断言由 7 条扩到 14 条,覆盖四个入口的启动闸、\n两份持有模块的归因码,以及那条负例本身——防惰性解析回潮(它在 typecheck 和行为矩阵下都是绿的)。\n\n第一轮 runtime 的其余结果(报告已随失败轮作废,此处只作判断依据,不作证据引用):\n21 个步骤 status=0,**testsPassed=747——与上一提交前置的预测值一致**,两个 request-context\n验收文件各 6 例都在里面;唯一红的是 auth-startup。行为矩阵未执行(在 auth-startup 之后)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/47e6fe38803a863e867b9f8a6141540da75736ee","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-18T17:14:16-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/app.ts","apps/api-fastify/src/dispatcher.ts","apps/api-fastify/src/lib/request-context.ts","apps/api-nestjs/src/common/request-context.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/dispatcher.ts","docs/planning/内核退回pin立项-2026-09-18.md","reports/baseline.json","scripts/check-auth-startup.mjs","scripts/check-capacity-envelope.mjs","scripts/check-db-credential-separation.mjs","scripts/check-dependency-resilience.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-multi-instance.mjs","scripts/check-redis-auth-live.mjs","scripts/check-tracing.mjs","scripts/check-write-capacity.mjs","scripts/governance-report.mjs"]},{"id":"b71b745a36f3b4786d177604aa7034bf5a43ba39","message":"chore(reports): 静态 28/28 回绑 @ 3949dcc;数字前置到本批实测值\n\n静态 28 份报告在实现提交上重新生成并回绑(`check:kernel-admission` 42 模块 / 751 导出、\n`check:kernel-boundaries` 147/147 受管面 / 245/245 锁定文件、`check:dual-backend` 负探针 2/2)。\n\nCLAUDE.md 动态数字随本批改动前移:\n own-tests 92 → 94 (+2 个 request-context 验收文件,C70 只计 git 已跟踪,\n 故必须在实现提交落地后才数得到)\n own-test-cases 738 → 750 (+12 例,与 governance.latest.json 实测一致)\n tests-passing 735 → 747 (**这一个是预测值**:735 + 本批 12 例,尚未被 runtime 实测)\n\n「tests-passing 写在实测之前」是本仓已知的结构性自指,不是抄数:任何改变用例数的批次\n都会在自己第一次 runtime 的收尾 docs-truth 上红——C231/C244 把该复验放在 canonical 报告\n写下之后,而正确数字只有跑完才知道。两条出路都要跑两轮 runtime(先跑得数再改文档,或\n先写预测再跑),这里选后者,好处是 runtime 报告能直接绑定 clean HEAD。\n**若下一轮实测不等于 747,以报告为准修正本行,不反过来迁就文档。**\n\n快照锚点按 C241 指向实现提交 3949dcc。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/b71b745a36f3b4786d177604aa7034bf5a43ba39","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:59:31-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance.latest.json","reports/product-migrations.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/ui-fastify-acceptance.latest.json","reports/ui-nestjs-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"3949dcccd743f991487c1438db85ddb11277cc4c","message":"feat(kernel-repin): RequestContext 从 HTTP 层贯通——两后端回显 x-request-id / x-trace-id\n\nB2c-2 与 B3″ 的共同前置(立项 §5.2)。形状与解析全部取自 contracts `request-context.ts`\n(转发自 `@juhai/kernel` 0.22.0),本仓只写 AsyncLocalStorage、APP_ID 解析与两个框架各自的\n入口适配——不复制第二份判定。\n\n修的是一个真缺陷,不只是搬代码:本仓此前**不回显任何相关性标识**,调用方拿到 500 之后\n没有任何能交给运维去查日志的句柄。现在固定回显 x-request-id;有合法 traceparent 时另回\nx-trace-id。入站 requestId 合法即沿用(跨服务相关性的唯一意义),非法即丢弃重生成——不把\n外部字符串反射进响应头与日志。\n\n装配(两侧必须最先,鉴权在其后才能 enrich,响应头回显要覆盖其后所有分支):\n NestJS create-app.ts 第一个 app.use(先于 trace 中间件)\n Fastify app.ts 第一个 register(先于 setErrorHandler 与既有 hook)\n\n与既有 rls-context 并存、刻意不合并:那一份持有 RLS 执行身份(tenant/system 两态),\n这一份持有请求可追溯性。失败语义不同,合成一个 store 会让「租户缺失」与「上下文缺失」\n不可区分。\n\n⚠️ 部署侧同批改动:resolveAppId 在生产缺 APP_ID 时抛错拒绝启动,\ndeploy/production/compose.yml 的 x-api-environment 与 x-dispatcher-environment 两个锚点\n都已写入 APP_ID。漏掉任一个,对应进程起不来——不能等下一批补。\n\n为什么额外建绊网:行为矩阵**结构上证明不了这条**。x-request-id 是实例噪声,被显式排除在\n22 个稳定响应头白名单之外(两端值必然不同),所以删掉任一侧的装配点,矩阵 204 例仍全绿。\n补两层:\n · check:dual-backend 新增 7 条 targeted 断言(含装配顺序、两个 compose 锚点各一)\n + 一个受控断线负探针;dualBackendParityNegativeProbes 由 1 收紧到 2;\n · 两侧各 6 例真实 HTTP 验收 request-context.acceptance.test.ts,断言集逐条对等:\n 无头生成 / 合法沿用 / 非法重生成 / traceparent 取 trace-id / 畸形不猜 / 404 也回显。\n\n负向实测(已恢复现场):注释掉 Fastify 的 register → 该侧 6/6 精确红;注释掉 NestJS 的\napp.use → 该侧 6/6 精确红。\n\n本批没做、也不声称:outboxContext() 与 decisionContext() 目前**零调用方**——把 context\n写进 outbox 行是 B3″,接进权限判定是 B2c-2(仍卡 ADR 0011 裁决)。本批只交付「上下文在\n请求入口真实存在、可被下游取用、且对外可见」。\n\n边界归属:新增 3 个源码文件按 CORE 归属,kernel.boundaries.lock 重签,受管面 146→147、\n锁定文件 242→245,CLAUDE.md 同步。baseline 只收紧本批真正改变的那个字段\n(dualBackendParityNegativeProbes 1→2)——其余若干地板确实落后于现值(ownTests 83 vs 92、\nrlsProtectedTables 65 vs 67 等),那是另一件事,不在本批顺手扫掉。\n\n证据:typecheck 13/13;pnpm check 28/28;两侧 request-context 验收各 6/6(真实 DB\ndigital_employee_os_acceptance_20260918 @127.0.0.1:55470 + redis :6404/3)。\nruntime 整轮与报告回绑在下一提交。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/3949dcccd743f991487c1438db85ddb11277cc4c","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:56:13-07:00","added":["apps/api-fastify/src/lib/request-context.ts","apps/api-fastify/src/plugins/request-context.ts","apps/api-fastify/test/request-context.acceptance.test.ts","apps/api-nestjs/src/common/request-context.ts","apps/api-nestjs/test/request-context.acceptance.test.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/app.ts","apps/api-nestjs/src/create-app.ts","deploy/production/compose.yml","docs/planning/内核退回pin立项-2026-09-18.md","kernel.boundaries.json","kernel.boundaries.lock.json","reports/baseline.json","scripts/check-dual-backend-parity.mjs"]}],"total_commits":0,"head_commit":{"id":"34aab5dea31113ee2688fd236eea3f382402027e","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 47e6fe3;锚点随批次刷新\n\n三级证据本批首次同时绑定 clean HEAD `47e6fe3`(worktreeDirty:false):\n\n· runtime 30/30 步、**747 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 七包测试、迁移 deploy/status、auth-startup、db-credential-separation、tracing、\n dependency-resilience、capacity、write-capacity、multi-instance 全通过。\n 747 = 735 + 本批 12 例,与 b71b745 前置写下的预测值一致——预测被实测证实,\n 不是反过来改文档迁就。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate(收尾清单硬条目)。\n\nauth-startup 现有**三类拒启各 2/2**:无验签器、显式 demo、**生产缺 APP_ID**。第三类是本日\n新增,`missingAppIdRejected: 2` 是两个后端都真的起不来的机器回执——它抓到的正是本批自己\n第一版的惰性解析缺陷,不是事后补的装饰。\n\n跑了三轮 runtime,如实记账:\n ① 红在 auth-startup —— 真缺陷(惰性 APP_ID),已修(47e6fe3 的父提交);\n ② 实质全绿但红在收尾 docs-truth 的快照锚点滞后 —— 锚点停在 3949dcc 而 HEAD 已走两步,\n 打穿 C232 的 +1 自指窗。修复提交已把锚点折进去指向其父提交;\n ③ 30/30 全绿,即本提交回绑的这一份。\n第 ② 轮暴露的是我自己的流程错:改变用例数的批次天然要两轮,但锚点该在每个提交里跟着走,\n不该等到最后一个提交才想起来——C241 写的就是这条,这次仍然踩了。\n\n本提交按 C241 把锚点指向父提交 47e6fe3;证据新鲜度里 runtime 与 auth-startup 两行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/34aab5dea31113ee2688fd236eea3f382402027e","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-18T17:38:01-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},"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":90066,"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":1,"watchers_count":1,"branch_count":3,"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-09-19T07:35:06+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"}}...
|
push
|
2
|
36
|
1789778311
|
1789778402
|
0
|
1789778300
|
1789779516
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
24203
|
chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 47e6 chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 47e6fe3;锚点随批次刷新...
|
76
|
5
|
platform-governance.yml
|
91
|
5
|
0
|
refs/heads/main
|
34aab5dea31113ee2688fd236eea3f382402027e
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2ef8d2fea20dcc03a7397ed3fc71312b675a70d9","after":"34aab5dea31113ee2688fd236eea3f382402027e","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/2ef8d2fea20dcc03a7397ed3fc71312b675a70d9...34aab5dea31113ee2688fd236eea3f382402027e","commits":[{"id":"34aab5dea31113ee2688fd236eea3f382402027e","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 47e6fe3;锚点随批次刷新\n\n三级证据本批首次同时绑定 clean HEAD `47e6fe3`(worktreeDirty:false):\n\n· runtime 30/30 步、**747 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 七包测试、迁移 deploy/status、auth-startup、db-credential-separation、tracing、\n dependency-resilience、capacity、write-capacity、multi-instance 全通过。\n 747 = 735 + 本批 12 例,与 b71b745 前置写下的预测值一致——预测被实测证实,\n 不是反过来改文档迁就。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate(收尾清单硬条目)。\n\nauth-startup 现有**三类拒启各 2/2**:无验签器、显式 demo、**生产缺 APP_ID**。第三类是本日\n新增,`missingAppIdRejected: 2` 是两个后端都真的起不来的机器回执——它抓到的正是本批自己\n第一版的惰性解析缺陷,不是事后补的装饰。\n\n跑了三轮 runtime,如实记账:\n ① 红在 auth-startup —— 真缺陷(惰性 APP_ID),已修(47e6fe3 的父提交);\n ② 实质全绿但红在收尾 docs-truth 的快照锚点滞后 —— 锚点停在 3949dcc 而 HEAD 已走两步,\n 打穿 C232 的 +1 自指窗。修复提交已把锚点折进去指向其父提交;\n ③ 30/30 全绿,即本提交回绑的这一份。\n第 ② 轮暴露的是我自己的流程错:改变用例数的批次天然要两轮,但锚点该在每个提交里跟着走,\n不该等到最后一个提交才想起来——C241 写的就是这条,这次仍然踩了。\n\n本提交按 C241 把锚点指向父提交 47e6fe3;证据新鲜度里 runtime 与 auth-startup 两行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/34aab5dea31113ee2688fd236eea3f382402027e","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-18T17:38:01-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},{"id":"47e6fe38803a863e867b9f8a6141540da75736ee","message":"fix(kernel-repin): APP_ID 改为装配期强制解析——惰性解析让生产「起得来但每个请求 500」\n\n本批 runtime 第一轮就红在 auth-startup,抓到的是我自己引入的缺陷,不是环境问题:\n\n首版 appId() 是**惰性**的(第一次请求才解析)。于是生产缺 APP_ID 时进程**正常启动**,\n随后 /api/health 与每个业务请求各 500 一次——栈顶就是 request-context 插件。内核对\nresolveAppId 写明的语义是「生产缺失即抛错,起不来好过匿名运行」,惰性版把它退化成\n「运行但全错」,而且把一个配置错误伪装成运行时故障。假绿五形态里的「假健康读模型」\n换了个方向:健康检查自己 500,但进程活着、编排层看不出是配置问题。\n\n改法:\n· appId() 解析失败时包一层稳定归因码 `[APP_ID_REQUIRED]`(与 C51 的 AUTH_VERIFIER_REQUIRED、\n C153 的 secret 读取同款——门禁判定归因码,不去匹配内核的中文消息);\n· 新增 assertRequestContextStartup(),在**四个入口**启动期强制解析:\n NestJS create-app.ts / Fastify app.ts(紧挨 assertTenantAuthStartup)\n + 两个 dispatcher 的 main()(contextFromJob 同样以 APP_ID 标识来源应用);\n· check:auth-startup 增加**第三类拒启负例**:生产 + required + 有 verifier、但显式拿掉\n APP_ID → 必须起不来。指标 missingAppIdRejected 入棘轮(floor 2);\n· 八个启动生产入口的 runner 显式提供 APP_ID——它们本来就该像真实编排那样配齐环境,\n 这不是放宽判据:判据是「缺了要拒启」,由上面那条负例证明,不是靠别的 runner 顺带不配。\n\n绊网加厚:check:dual-backend 的 RequestContext 断言由 7 条扩到 14 条,覆盖四个入口的启动闸、\n两份持有模块的归因码,以及那条负例本身——防惰性解析回潮(它在 typecheck 和行为矩阵下都是绿的)。\n\n第一轮 runtime 的其余结果(报告已随失败轮作废,此处只作判断依据,不作证据引用):\n21 个步骤 status=0,**testsPassed=747——与上一提交前置的预测值一致**,两个 request-context\n验收文件各 6 例都在里面;唯一红的是 auth-startup。行为矩阵未执行(在 auth-startup 之后)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/47e6fe38803a863e867b9f8a6141540da75736ee","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-18T17:14:16-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/app.ts","apps/api-fastify/src/dispatcher.ts","apps/api-fastify/src/lib/request-context.ts","apps/api-nestjs/src/common/request-context.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/dispatcher.ts","docs/planning/内核退回pin立项-2026-09-18.md","reports/baseline.json","scripts/check-auth-startup.mjs","scripts/check-capacity-envelope.mjs","scripts/check-db-credential-separation.mjs","scripts/check-dependency-resilience.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-multi-instance.mjs","scripts/check-redis-auth-live.mjs","scripts/check-tracing.mjs","scripts/check-write-capacity.mjs","scripts/governance-report.mjs"]},{"id":"b71b745a36f3b4786d177604aa7034bf5a43ba39","message":"chore(reports): 静态 28/28 回绑 @ 3949dcc;数字前置到本批实测值\n\n静态 28 份报告在实现提交上重新生成并回绑(`check:kernel-admission` 42 模块 / 751 导出、\n`check:kernel-boundaries` 147/147 受管面 / 245/245 锁定文件、`check:dual-backend` 负探针 2/2)。\n\nCLAUDE.md 动态数字随本批改动前移:\n own-tests 92 → 94 (+2 个 request-context 验收文件,C70 只计 git 已跟踪,\n 故必须在实现提交落地后才数得到)\n own-test-cases 738 → 750 (+12 例,与 governance.latest.json 实测一致)\n tests-passing 735 → 747 (**这一个是预测值**:735 + 本批 12 例,尚未被 runtime 实测)\n\n「tests-passing 写在实测之前」是本仓已知的结构性自指,不是抄数:任何改变用例数的批次\n都会在自己第一次 runtime 的收尾 docs-truth 上红——C231/C244 把该复验放在 canonical 报告\n写下之后,而正确数字只有跑完才知道。两条出路都要跑两轮 runtime(先跑得数再改文档,或\n先写预测再跑),这里选后者,好处是 runtime 报告能直接绑定 clean HEAD。\n**若下一轮实测不等于 747,以报告为准修正本行,不反过来迁就文档。**\n\n快照锚点按 C241 指向实现提交 3949dcc。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/b71b745a36f3b4786d177604aa7034bf5a43ba39","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:59:31-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance.latest.json","reports/product-migrations.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/ui-fastify-acceptance.latest.json","reports/ui-nestjs-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"3949dcccd743f991487c1438db85ddb11277cc4c","message":"feat(kernel-repin): RequestContext 从 HTTP 层贯通——两后端回显 x-request-id / x-trace-id\n\nB2c-2 与 B3″ 的共同前置(立项 §5.2)。形状与解析全部取自 contracts `request-context.ts`\n(转发自 `@juhai/kernel` 0.22.0),本仓只写 AsyncLocalStorage、APP_ID 解析与两个框架各自的\n入口适配——不复制第二份判定。\n\n修的是一个真缺陷,不只是搬代码:本仓此前**不回显任何相关性标识**,调用方拿到 500 之后\n没有任何能交给运维去查日志的句柄。现在固定回显 x-request-id;有合法 traceparent 时另回\nx-trace-id。入站 requestId 合法即沿用(跨服务相关性的唯一意义),非法即丢弃重生成——不把\n外部字符串反射进响应头与日志。\n\n装配(两侧必须最先,鉴权在其后才能 enrich,响应头回显要覆盖其后所有分支):\n NestJS create-app.ts 第一个 app.use(先于 trace 中间件)\n Fastify app.ts 第一个 register(先于 setErrorHandler 与既有 hook)\n\n与既有 rls-context 并存、刻意不合并:那一份持有 RLS 执行身份(tenant/system 两态),\n这一份持有请求可追溯性。失败语义不同,合成一个 store 会让「租户缺失」与「上下文缺失」\n不可区分。\n\n⚠️ 部署侧同批改动:resolveAppId 在生产缺 APP_ID 时抛错拒绝启动,\ndeploy/production/compose.yml 的 x-api-environment 与 x-dispatcher-environment 两个锚点\n都已写入 APP_ID。漏掉任一个,对应进程起不来——不能等下一批补。\n\n为什么额外建绊网:行为矩阵**结构上证明不了这条**。x-request-id 是实例噪声,被显式排除在\n22 个稳定响应头白名单之外(两端值必然不同),所以删掉任一侧的装配点,矩阵 204 例仍全绿。\n补两层:\n · check:dual-backend 新增 7 条 targeted 断言(含装配顺序、两个 compose 锚点各一)\n + 一个受控断线负探针;dualBackendParityNegativeProbes 由 1 收紧到 2;\n · 两侧各 6 例真实 HTTP 验收 request-context.acceptance.test.ts,断言集逐条对等:\n 无头生成 / 合法沿用 / 非法重生成 / traceparent 取 trace-id / 畸形不猜 / 404 也回显。\n\n负向实测(已恢复现场):注释掉 Fastify 的 register → 该侧 6/6 精确红;注释掉 NestJS 的\napp.use → 该侧 6/6 精确红。\n\n本批没做、也不声称:outboxContext() 与 decisionContext() 目前**零调用方**——把 context\n写进 outbox 行是 B3″,接进权限判定是 B2c-2(仍卡 ADR 0011 裁决)。本批只交付「上下文在\n请求入口真实存在、可被下游取用、且对外可见」。\n\n边界归属:新增 3 个源码文件按 CORE 归属,kernel.boundaries.lock 重签,受管面 146→147、\n锁定文件 242→245,CLAUDE.md 同步。baseline 只收紧本批真正改变的那个字段\n(dualBackendParityNegativeProbes 1→2)——其余若干地板确实落后于现值(ownTests 83 vs 92、\nrlsProtectedTables 65 vs 67 等),那是另一件事,不在本批顺手扫掉。\n\n证据:typecheck 13/13;pnpm check 28/28;两侧 request-context 验收各 6/6(真实 DB\ndigital_employee_os_acceptance_20260918 @127.0.0.1:55470 + redis :6404/3)。\nruntime 整轮与报告回绑在下一提交。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/3949dcccd743f991487c1438db85ddb11277cc4c","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:56:13-07:00","added":["apps/api-fastify/src/lib/request-context.ts","apps/api-fastify/src/plugins/request-context.ts","apps/api-fastify/test/request-context.acceptance.test.ts","apps/api-nestjs/src/common/request-context.ts","apps/api-nestjs/test/request-context.acceptance.test.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/app.ts","apps/api-nestjs/src/create-app.ts","deploy/production/compose.yml","docs/planning/内核退回pin立项-2026-09-18.md","kernel.boundaries.json","kernel.boundaries.lock.json","reports/baseline.json","scripts/check-dual-backend-parity.mjs"]}],"total_commits":0,"head_commit":{"id":"34aab5dea31113ee2688fd236eea3f382402027e","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 47e6fe3;锚点随批次刷新\n\n三级证据本批首次同时绑定 clean HEAD `47e6fe3`(worktreeDirty:false):\n\n· runtime 30/30 步、**747 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 七包测试、迁移 deploy/status、auth-startup、db-credential-separation、tracing、\n dependency-resilience、capacity、write-capacity、multi-instance 全通过。\n 747 = 735 + 本批 12 例,与 b71b745 前置写下的预测值一致——预测被实测证实,\n 不是反过来改文档迁就。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate(收尾清单硬条目)。\n\nauth-startup 现有**三类拒启各 2/2**:无验签器、显式 demo、**生产缺 APP_ID**。第三类是本日\n新增,`missingAppIdRejected: 2` 是两个后端都真的起不来的机器回执——它抓到的正是本批自己\n第一版的惰性解析缺陷,不是事后补的装饰。\n\n跑了三轮 runtime,如实记账:\n ① 红在 auth-startup —— 真缺陷(惰性 APP_ID),已修(47e6fe3 的父提交);\n ② 实质全绿但红在收尾 docs-truth 的快照锚点滞后 —— 锚点停在 3949dcc 而 HEAD 已走两步,\n 打穿 C232 的 +1 自指窗。修复提交已把锚点折进去指向其父提交;\n ③ 30/30 全绿,即本提交回绑的这一份。\n第 ② 轮暴露的是我自己的流程错:改变用例数的批次天然要两轮,但锚点该在每个提交里跟着走,\n不该等到最后一个提交才想起来——C241 写的就是这条,这次仍然踩了。\n\n本提交按 C241 把锚点指向父提交 47e6fe3;证据新鲜度里 runtime 与 auth-startup 两行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/34aab5dea31113ee2688fd236eea3f382402027e","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-18T17:38:01-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},"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":90066,"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":1,"watchers_count":1,"branch_count":3,"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-09-19T07:35:06+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"}}...
|
push
|
2
|
8
|
1789778402
|
1789778432
|
0
|
1789778300
|
1789779516
|
|
|
0
|
Edit
Delete
|
|
24204
|
docs(计划): 登记 docs-truth 那条红的修复 @ 8a621fd / 12093b8
|
117
|
5
|
governance.yml
|
74
|
5
|
0
|
refs/heads/main
|
0bd8704df3bd5cfbed6e6b06cbcf6d211d0da76f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"b0c8f85aaf3e0d5d8581c460a2bebbe2c14e9a85","after":"0bd8704df3bd5cfbed6e6b06cbcf6d211d0da76f","compare_url":"https://gitea.g-hi.com/luoanwu/platform-governance/compare/b0c8f85aaf3e0d5d8581c460a2bebbe2c14e9a85...0bd8704df3bd5cfbed6e6b06cbcf6d211d0da76f","commits":[{"id":"0bd8704df3bd5cfbed6e6b06cbcf6d211d0da76f","message":"docs(计划): 登记 docs-truth 那条红的修复 @ 8a621fd / 12093b8\n\n动态区 UI 条目实为三处漂移(SHA、端口、验收库),门禁只抓得到 SHA 一处;只换 SHA 会把红\n变绿却留着两句假话,故三处一并订正。同时记下 freshness-sha-* 的覆盖边界:它只断言 SHA\n的声明形式,同条目里的端口与库名可以静默漂移——绿不代表整行都对。\n\nruntime check 现 exit 0、16 项全过;报告在干净 worktree 整批重出回绑,check:evidence\n降至 0 error。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/0bd8704df3bd5cfbed6e6b06cbcf6d211d0da76f","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-18T17:34:13-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]},{"id":"f84a1e12c72975d9a25af5f9fe62413314b9a280","message":"docs(计划): 登记盲区复核第二轮结果——无新洞,并自查本轮新增的两处接线\n\n四类结果与首轮一致:够不到的检查器 1 个(dev helper 非门禁)、登记报告 0 份无产出方、\n未构建检出逐道跑无新的空跑即绿、流外门禁 5 道复核期均未过期。\n\n自查本轮自己新加的两样是否变成同类盲区:check:fixture-coverage 四处接线齐全;identity\n的两条 freshness 断言经递归展开确认 CI 的 identity job 可达。\n\n同时写清边界:接线正确不等于当前在把关——GitHub Actions 因计费停摆、Gitea 镜像通道从未\n启用,两条均已在案,故这些门禁当前实际把关仍只在本机。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/f84a1e12c72975d9a25af5f9fe62413314b9a280","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-18T17:29:40-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]},{"id":"4a26207d8d4f89aa1b24b7ad4698b6091cc92361","message":"docs(计划): 登记 identity docs-truth 补 freshness-sha 断言 @ 1f3ff8c / 6687aec\n\n出口二选一取 ②。口径移植自 runtime 版并保留其三条设计判断(不含静态级、未接线跳过而非\n恒红、必须是声明形式);唯一差异是认本仓实际写法 clean commit `sha`。负向三项实做,含\n上游记载过的「SHA 只出现在提交区间里」那条自我假绿陷阱。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/4a26207d8d4f89aa1b24b7ad4698b6091cc92361","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-18T17:25:17-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]},{"id":"32f549d3f61c3729d1a00abb65f50df542c84c39","message":"docs(计划): 登记全仓盲区复核结果与 identity 漂移订正 @ a48cbd6\n\n系统性扫描四类形态,唯一真发现是 identity/reports 完全在新鲜度扫描面之外,且已造成\n一处数字漂移(文档 255 @ 85d538b vs 报告 261 @ 25ead3e),当日已修并补处置说明。\n其余四类均核过且干净,含未构建检出里逐道跑根链验证无新的空跑即绿。\n\n另记本轮自己的三次假阳性及其成因,均在报出前复验修正。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/32f549d3f61c3729d1a00abb65f50df542c84c39","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-18T17:20:38-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]},{"id":"c3ae79df23ed6c5e055ef1c5ac6862f14bc477fe","message":"docs(计划): 登记 fixture-coverage 升格为门禁 @ ab28a95 / 83a5542\n\nOwner 裁方案 B。升格前提是先修掉它自己的假绿:不构建直接跑时 15 个套件全跳过而两个\n总数双双为 0、退出码 0,naive 接进 CI 就是永远绿。只阻断 wiringTotal,nowhereTotal 因\n改进过程中非单调只记不拦。另修一处证据污染:显式 --suite 不再写仓级报告。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/c3ae79df23ed6c5e055ef1c5ac6862f14bc477fe","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-18T17:13:51-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]}],"total_commits":0,"head_commit":{"id":"0bd8704df3bd5cfbed6e6b06cbcf6d211d0da76f","message":"docs(计划): 登记 docs-truth 那条红的修复 @ 8a621fd / 12093b8\n\n动态区 UI 条目实为三处漂移(SHA、端口、验收库),门禁只抓得到 SHA 一处;只换 SHA 会把红\n变绿却留着两句假话,故三处一并订正。同时记下 freshness-sha-* 的覆盖边界:它只断言 SHA\n的声明形式,同条目里的端口与库名可以静默漂移——绿不代表整行都对。\n\nruntime check 现 exit 0、16 项全过;报告在干净 worktree 整批重出回绑,check:evidence\n降至 0 error。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/0bd8704df3bd5cfbed6e6b06cbcf6d211d0da76f","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-18T17:34:13-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]},"repository":{"id":117,"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":"platform-governance","full_name":"luoanwu/platform-governance","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":10551,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance/languages","html_url":"https://gitea.g-hi.com/luoanwu/platform-governance","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/platform-governance.git","clone_url":"https://gitea.g-hi.com/luoanwu/platform-governance.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":3,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-15T11:53:24+08:00","updated_at":"2026-09-19T07:41:45+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"}}...
|
push
|
2
|
4
|
1789778432
|
1789778463
|
0
|
1789778300
|
1789778463
|
|
|
0
|
Edit
Delete
|
|
24205
|
chore(reports): C 组三份真实验收回绑 @ 8a621fd —— 在 adversa chore(reports): C 组三份真实验收回绑 @ 8a621fd —— 在 adversarial 隔离栈上跑,共享底座与 ms23 均未触碰...
|
116
|
5
|
platform.yml
|
168
|
5
|
0
|
refs/heads/main
|
b90d7a151e5e9451fa12fb6e883b8898552124df
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"12093b843ef69d300370e5da16fcca3399c14d40","after":"b90d7a151e5e9451fa12fb6e883b8898552124df","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/12093b843ef69d300370e5da16fcca3399c14d40...b90d7a151e5e9451fa12fb6e883b8898552124df","commits":[{"id":"b90d7a151e5e9451fa12fb6e883b8898552124df","message":"chore(reports): C 组三份真实验收回绑 @ 8a621fd —— 在 adversarial 隔离栈上跑,共享底座与 ms23 均未触碰\n\nC 组(runtime-acceptance / mainline-acceptance / revocation-sla)需要真实 PG + Redis + Redpanda。\nms23 那套 35 分钟前刚被并行会话用过(容器 Exited),按 docs/持久主线本地验收.md「同名 project 即使\n容器刚启动也不能直接 up 覆盖,该名称已占用时应协调或选择已有获准且无人使用的测试环境」,改用\nadversarial(PG 55473 / Redis 56382 / Broker 59095,2026-09-12 获准、闲置 3 天、其 Broker 已在故障\n注入白名单)。全程 docker start 既有容器,未 compose up 覆盖任何 project。\n\n结果(均在干净检出 8a621fd 上产出,worktreeDirty=false):\n runtime-acceptance passed 1001 tests(地板 775)、tenantRlsEnforced=1、双后端差分 0\n mainline-acceptance passed\n revocation-sla partial p95 5027ms / max 5041ms / 20 samples——远低于 MS-3 的 30s;\n partial 来自 employmentScope 链仍 pending-scope-consumer-enforcement,\n 以及生产投送/负载/staging 四项 unverified,是既定状态不是失败\n conformance-differential 作为 runtime 验收的副产物一并刷新(同样已登记 severity=warn)\n\n过程中一处失败是我搭环境搭错的,记下来免得下次再犯:首轮 e2e/identity-profile 断言\n`elevated=false` 实测 true——mainline:prepare 只为 fact/permission/audit/owner/consumer 建非超级用户\n角色,identity/credential/scope/aigateway 四个库是我用管理员 platform 手建的,identity 的连接因此是\n特权角色。REASSIGN OWNED 不适用(platform 持有系统对象),改为重建该库并 OWNER 给\nplatform_identity_test_app、以该角色重新 deploy 迁移后转绿。credential / scope 没有\nprisma:migrate:deploy 脚本是对的——它们是 state=shape 模块,按仓纪律不得有迁移。\n\n隔离与收尾:凭据只经仓外 0600 文件(/tmp/c3-mainline.env、/tmp/c3-env.sh),不入仓、不打印;\n验收在独立 worktree 里 pnpm install 自己的 node_modules,不软链主检出,避免与并行会话抢 .prisma;\nadversarial 三容器跑完恢复为 Exited(与我接手前一致)。主检出里并行会话另有十余份报告 WIP,一份没碰。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/b90d7a151e5e9451fa12fb6e883b8898552124df","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-18T17:45:56-07:00","added":[],"removed":[],"modified":["reports/mainline-acceptance.latest.json","reports/revocation-sla.latest.json","runtime/reports/conformance-differential.latest.json","runtime/reports/runtime-acceptance.latest.json"]},{"id":"a178ba36c65d82fab8106fa7395dd65f927876ad","message":"docs(治理): 云端治理段补 2026-09-19 实测——分支保护已整个消失,而计费仍未恢复\n\n推送本会话提交时实测到两条与在案记录对不上的事实:\n\n① main 的分支保护整个没了,不是摘掉那条必需检查而已:\n gh api .../branches/main/protection → 404 \"Branch not protected\"。\n 镜像因此重新推得动,直推 54e6324..12093b8 成功并已核对 github/main 与本地一致;\n 「镜像停在 3308542」这句作废。谁摘的、何时、为什么未知,gh 查不到保护变更历史。\n 本会话未恢复保护、未改动任何 GitHub 设置——不知原委时自行配回去,风险大于留着不动。\n\n② 计费没解决,原记录前半截仍成立:该次直推触发的 run 35410044850 三 job failure、\n 五 skipped,注解逐字仍是 recent account payments have failed。\n\n故「镜像推得动」≠「远端验过了」:这批提交在 GitHub 上一次门禁都没跑过,远端只是有了代码。\n\n第三条是写给下一个人的:本条与同段「不要靠摘必需检查绕过」的口径现在对不上现实,须由\n仓库管理权限持有者二选一收口——恢复保护,或把「为什么现在不设保护」写成显式裁决并给\n复核期。保持现状而不记录,等于让一条在案的治理资产无声消失。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/a178ba36c65d82fab8106fa7395dd65f927876ad","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-18T17:45:16-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]}],"total_commits":0,"head_commit":{"id":"b90d7a151e5e9451fa12fb6e883b8898552124df","message":"chore(reports): C 组三份真实验收回绑 @ 8a621fd —— 在 adversarial 隔离栈上跑,共享底座与 ms23 均未触碰\n\nC 组(runtime-acceptance / mainline-acceptance / revocation-sla)需要真实 PG + Redis + Redpanda。\nms23 那套 35 分钟前刚被并行会话用过(容器 Exited),按 docs/持久主线本地验收.md「同名 project 即使\n容器刚启动也不能直接 up 覆盖,该名称已占用时应协调或选择已有获准且无人使用的测试环境」,改用\nadversarial(PG 55473 / Redis 56382 / Broker 59095,2026-09-12 获准、闲置 3 天、其 Broker 已在故障\n注入白名单)。全程 docker start 既有容器,未 compose up 覆盖任何 project。\n\n结果(均在干净检出 8a621fd 上产出,worktreeDirty=false):\n runtime-acceptance passed 1001 tests(地板 775)、tenantRlsEnforced=1、双后端差分 0\n mainline-acceptance passed\n revocation-sla partial p95 5027ms / max 5041ms / 20 samples——远低于 MS-3 的 30s;\n partial 来自 employmentScope 链仍 pending-scope-consumer-enforcement,\n 以及生产投送/负载/staging 四项 unverified,是既定状态不是失败\n conformance-differential 作为 runtime 验收的副产物一并刷新(同样已登记 severity=warn)\n\n过程中一处失败是我搭环境搭错的,记下来免得下次再犯:首轮 e2e/identity-profile 断言\n`elevated=false` 实测 true——mainline:prepare 只为 fact/permission/audit/owner/consumer 建非超级用户\n角色,identity/credential/scope/aigateway 四个库是我用管理员 platform 手建的,identity 的连接因此是\n特权角色。REASSIGN OWNED 不适用(platform 持有系统对象),改为重建该库并 OWNER 给\nplatform_identity_test_app、以该角色重新 deploy 迁移后转绿。credential / scope 没有\nprisma:migrate:deploy 脚本是对的——它们是 state=shape 模块,按仓纪律不得有迁移。\n\n隔离与收尾:凭据只经仓外 0600 文件(/tmp/c3-mainline.env、/tmp/c3-env.sh),不入仓、不打印;\n验收在独立 worktree 里 pnpm install 自己的 node_modules,不软链主检出,避免与并行会话抢 .prisma;\nadversarial 三容器跑完恢复为 Exited(与我接手前一致)。主检出里并行会话另有十余份报告 WIP,一份没碰。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/b90d7a151e5e9451fa12fb6e883b8898552124df","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-18T17:45:56-07:00","added":[],"removed":[],"modified":["reports/mainline-acceptance.latest.json","reports/revocation-sla.latest.json","runtime/reports/conformance-differential.latest.json","runtime/reports/runtime-acceptance.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":22073,"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-19T08:38:11+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"}}...
|
push
|
3
|
14
|
0
|
1789779515
|
0
|
1789778893
|
1789779515
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24206
|
docs(计划): 登记推送结果与两条实测更正 @ a178ba3
|
117
|
5
|
governance.yml
|
75
|
5
|
0
|
refs/heads/main
|
dea10cf1124b0e7714fe60f395709cda0be55fdb
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0bd8704df3bd5cfbed6e6b06cbcf6d211d0da76f","after":"dea10cf1124b0e7714fe60f395709cda0be55fdb","compare_url":"https://gitea.g-hi.com/luoanwu/platform-governance/compare/0bd8704df3bd5cfbed6e6b06cbcf6d211d0da76f...dea10cf1124b0e7714fe60f395709cda0be55fdb","commits":[{"id":"dea10cf1124b0e7714fe60f395709cda0be55fdb","message":"docs(计划): 登记推送结果与两条实测更正 @ a178ba3\n\n三处远端均已推送并核对 SHA 一致。过程中查出 main 分支保护整个消失(404 Branch not\nprotected,非只摘必需检查)与计费仍未恢复(run 35410044850 三 job failure、注解逐字\n未变)两条,已补进 CLAUDE.md 云端治理段。\n\n按事实作用域,现在只能说到「远端已有该 SHA」,不能说「远端 CI 已通过」。保护由谁摘、\n为何摘未知,本会话未改动任何 GitHub 设置,留给仓库管理权限持有者二选一收口。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/dea10cf1124b0e7714fe60f395709cda0be55fdb","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-18T17:45:36-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]}],"total_commits":0,"head_commit":{"id":"dea10cf1124b0e7714fe60f395709cda0be55fdb","message":"docs(计划): 登记推送结果与两条实测更正 @ a178ba3\n\n三处远端均已推送并核对 SHA 一致。过程中查出 main 分支保护整个消失(404 Branch not\nprotected,非只摘必需检查)与计费仍未恢复(run 35410044850 三 job failure、注解逐字\n未变)两条,已补进 CLAUDE.md 云端治理段。\n\n按事实作用域,现在只能说到「远端已有该 SHA」,不能说「远端 CI 已通过」。保护由谁摘、\n为何摘未知,本会话未改动任何 GitHub 设置,留给仓库管理权限持有者二选一收口。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/dea10cf1124b0e7714fe60f395709cda0be55fdb","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-18T17:45:36-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]},"repository":{"id":117,"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":"platform-governance","full_name":"luoanwu/platform-governance","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":11037,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance/languages","html_url":"https://gitea.g-hi.com/luoanwu/platform-governance","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/platform-governance.git","clone_url":"https://gitea.g-hi.com/luoanwu/platform-governance.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":3,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-15T11:53:24+08:00","updated_at":"2026-09-19T08:38:20+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"}}...
|
push
|
1
|
4
|
1789779518
|
1789779534
|
0
|
1789778936
|
1789779534
|
|
|
0
|
Edit
Delete
|
|
24207
|
chore(reports): 新镜像连带过期的四份,收三份回绑 @ dd6de71;image-s chore(reports): 新镜像连带过期的四份,收三份回绑 @ dd6de71;image-smoke 如实留红...
|
116
|
5
|
platform.yml
|
169
|
5
|
0
|
refs/heads/main
|
6abcd3d93b19b2a73eb7869272261dde4e0b66d5
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"b90d7a151e5e9451fa12fb6e883b8898552124df","after":"6abcd3d93b19b2a73eb7869272261dde4e0b66d5","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/b90d7a151e5e9451fa12fb6e883b8898552124df...6abcd3d93b19b2a73eb7869272261dde4e0b66d5","commits":[{"id":"6abcd3d93b19b2a73eb7869272261dde4e0b66d5","message":"chore(reports): 新镜像连带过期的四份,收三份回绑 @ dd6de71;image-smoke 如实留红\n\n重建 runtime 镜像后 reports/image-digest.json 变了,它同时落在四份报告的作用域里,四份一起过期。\n这四份都是我造成的,一次批量收:\n\n deployed-runtime passed 容器镜像与 image-digest 一致 @ b90d7a1\n release-manifest partial 仍缺 signature(与 registry 镜像绑定的 cosign 验证),是结论不是失败\n sbom 已刷新 lockfile 模式,随新镜像的源提交重算\n\n**image-smoke 没收,如实留在过期状态**,理由写清楚免得下一个人重走一遍:\n- 它要 `--env-file`,仓里没有也不该有;`.secrets/enterprise-platform-runtime-dev.env` 是给 compose 用的,\n 里面的 DB / Redis 主机名是 compose 服务名,独立 `docker run` 的容器不在那张网里,解析不到;\n- 默认端口 53001 被 dev 常驻 runtime 占着,换 --port 53051 可以绕开端口冲突,但上面那条解析不了,\n 实测 api-health HTTP 0、HEALTHCHECK unhealthy;\n- runbook §2 写的是「指向本机底座时主机名用 host.docker.internal」——要跑得先造一份改写过主机名与端口的\n env 变体。那是新配置,不在本次范围,也不该由我随手拼。\n跑出来的那份 failed 报告**没有拷回主检出**(在临时 worktree 里 git checkout 还原了)——不拿失败结果\n冒充证据,也不让它把一份原本只是\"过期\"的报告变成\"失败\"。\n\n做法同前:企业控制面/.worktrees/settle 干净检出(HEAD dd6de71),只软链 runtime/node_modules,\n跑完把三份 report + sbom.spdx.json 拷回,按 pathspec 提交。三份 provenance 均 dd6de71、worktreeDirty=false。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/6abcd3d93b19b2a73eb7869272261dde4e0b66d5","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-18T17:58:16-07:00","added":[],"removed":[],"modified":["reports/deployed-runtime.latest.json","reports/release-manifest.latest.json","reports/sbom.latest.json","reports/sbom.spdx.json"]},{"id":"dd6de7125d4ff5c3a32855f67adc483a2cb2c22a","message":"chore(reports): 工作台两份快照回绑 @ a818ec2 —— 这次内容真的变了(新镜像 + rc.6)\n\n上一次回绑(d7d9fe5)是纯背书,索引内容一字未变。这次不同,两份都有实质变化:\n ops.image ref 05e3826e9e9e → b90d7a151e5e,digest c086993…→ fe5570f…,source_sha 与 built_at 同步\n (B 组重建镜像换容器的结果,a818ec2)\n ops.release version 1.0.0-rc.3 → 1.0.0-rc.6,source_sha 04d02d6 → e3b9d12,三个包版本随之更新\n (并行会话的 rc.6 列车)\n catalog entries 与包版本同步刷新\n\n成因就是它的作用域设计:reports/image-digest.json、release-manifest、evidence-freshness 都在里面,\n任一输入变更即过期——我提交 image-digest.json 的那一刻它就该重跑。\n\n零依赖脚本,在 企业控制面/.worktrees/rebind-ops2 干净检出(HEAD a818ec2)跑\nnode governance/build-workbench-snapshots.mjs,确认 git status 为空后出报告,两份拷回主检出、\n按 pathspec 提交。两份 provenance 均 gitSha=a818ec2、worktreeDirty=false。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/dd6de7125d4ff5c3a32855f67adc483a2cb2c22a","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-18T17:56:53-07:00","added":[],"removed":[],"modified":["reports/workbench-catalog-snapshot.latest.json","reports/workbench-ops-snapshot.latest.json"]},{"id":"a818ec2cb2324fc14720fdfc1bc5f07b9cf38309","message":"chore(reports): B 组 deployed-runtime 转绿 @ b90d7a1 —— 重建 runtime 镜像并换掉 dev 常驻容器\n\ndeployed-runtime 此前 failed:BUILT_IMAGE_SOURCE_BEHIND——运行容器的镜像源停在 05e3826,HEAD 已有\n23 个运行时输入变更,其中含本会话 10 处接线改的那批 fixture-evaluator 与夹具。这条不是重跑报告能收的,\n必须真重建镜像并换容器。\n\n做了什么:\n1. pnpm image:build —— 上下文是 git archive HEAD:runtime(只取已提交的树,不受任何 WIP 影响),\n token 只作 BuildKit secret。产出 enterprise-platform/runtime:b90d7a151e5e,\n image id sha256:fe5570f5cb60…,linux/arm64,195 MB;reports/image-digest.json 随之更新。\n2. 按 runbook §1 的既定写法换镜像:改 .secrets/enterprise-platform-runtime-dev.env 里的\n PLATFORM_RUNTIME_IMAGE 为 \u003cname\u003e@sha256:\u003cimage id\u003e(改前已备份为 .bak-20260919-b90d7a1,该文件在仓外、0600),\n docker compose --env-file … up -d --no-deps runtime 重建。未动底座其他 12 个服务。\n3. 容器 healthy,/api/health 200:{\"status\":\"ok\",\"service\":\"nestjs\",\"checks\":{\"database\":\"up\",\"redis\":\"up\"}}。\n4. 在干净检出跑 node governance/check-deployed-runtime.mjs --write-report → passed @ b90d7a1。\n\n一处踩坑记下来:check-deployed-runtime.mjs 只有带 --write-report 才落盘,不带就只打印。我前两次跑完\n以为报告已更新,实际文件还是 06c3d4c 那份——git status 不显示改动才发现。别被 ✓ 骗了。\n\nreports/image-digest.json 一并提交:它是本次构建的产物,也是 deployed-runtime 与 release-manifest 的\n作用域输入,不提交则下一次判定会指向一个仓里不存在的镜像绑定。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/a818ec2cb2324fc14720fdfc1bc5f07b9cf38309","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-18T17:52:23-07:00","added":[],"removed":[],"modified":["reports/deployed-runtime.latest.json","reports/image-digest.json"]}],"total_commits":0,"head_commit":{"id":"6abcd3d93b19b2a73eb7869272261dde4e0b66d5","message":"chore(reports): 新镜像连带过期的四份,收三份回绑 @ dd6de71;image-smoke 如实留红\n\n重建 runtime 镜像后 reports/image-digest.json 变了,它同时落在四份报告的作用域里,四份一起过期。\n这四份都是我造成的,一次批量收:\n\n deployed-runtime passed 容器镜像与 image-digest 一致 @ b90d7a1\n release-manifest partial 仍缺 signature(与 registry 镜像绑定的 cosign 验证),是结论不是失败\n sbom 已刷新 lockfile 模式,随新镜像的源提交重算\n\n**image-smoke 没收,如实留在过期状态**,理由写清楚免得下一个人重走一遍:\n- 它要 `--env-file`,仓里没有也不该有;`.secrets/enterprise-platform-runtime-dev.env` 是给 compose 用的,\n 里面的 DB / Redis 主机名是 compose 服务名,独立 `docker run` 的容器不在那张网里,解析不到;\n- 默认端口 53001 被 dev 常驻 runtime 占着,换 --port 53051 可以绕开端口冲突,但上面那条解析不了,\n 实测 api-health HTTP 0、HEALTHCHECK unhealthy;\n- runbook §2 写的是「指向本机底座时主机名用 host.docker.internal」——要跑得先造一份改写过主机名与端口的\n env 变体。那是新配置,不在本次范围,也不该由我随手拼。\n跑出来的那份 failed 报告**没有拷回主检出**(在临时 worktree 里 git checkout 还原了)——不拿失败结果\n冒充证据,也不让它把一份原本只是\"过期\"的报告变成\"失败\"。\n\n做法同前:企业控制面/.worktrees/settle 干净检出(HEAD dd6de71),只软链 runtime/node_modules,\n跑完把三份 report + sbom.spdx.json 拷回,按 pathspec 提交。三份 provenance 均 dd6de71、worktreeDirty=false。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/6abcd3d93b19b2a73eb7869272261dde4e0b66d5","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-18T17:58:16-07:00","added":[],"removed":[],"modified":["reports/deployed-runtime.latest.json","reports/release-manifest.latest.json","reports/sbom.latest.json","reports/sbom.spdx.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":22105,"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-19T08:48:13+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"}}...
|
push
|
2
|
30
|
1789779534
|
1789779575
|
0
|
1789779516
|
1789779608
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24208
|
chore(reports): 工作台两份快照回绑 @ 3eb37ea —— image-smoke chore(reports): 工作台两份快照回绑 @ 3eb37ea —— image-smoke 转绿与 runbook 新增章节都进了索引...
|
116
|
5
|
platform.yml
|
170
|
5
|
0
|
refs/heads/main
|
07df639ac88e1f0ec5a24d21c120bc36e2e722fa
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"6abcd3d93b19b2a73eb7869272261dde4e0b66d5","after":"07df639ac88e1f0ec5a24d21c120bc36e2e722fa","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/6abcd3d93b19b2a73eb7869272261dde4e0b66d5...07df639ac88e1f0ec5a24d21c120bc36e2e722fa","commits":[{"id":"07df639ac88e1f0ec5a24d21c120bc36e2e722fa","message":"chore(reports): 工作台两份快照回绑 @ 3eb37ea —— image-smoke 转绿与 runbook 新增章节都进了索引\n\n本会话第三次回绑这两份,成因还是那条作用域设计:docs/runbook.md 与一批 reports 都在里面,\n任一输入变更即过期。这次变的是 runbook §2 新增的 smoke env 生成配方,以及 image-smoke 由过期转 passed。\n内容确有变化(不是纯背书)。\n\n零依赖脚本,干净检出(HEAD 3eb37ea)生成,两份 provenance 均 worktreeDirty=false。\n\n至此 check:evidence 43 份全新鲜。本会话在证据线上收的:\n A 组 release-manifest / port-conformance(sbom 由并行会话收)\n B 组 deployed-runtime —— 重建 runtime 镜像并换掉 dev 常驻容器\n C 组 runtime-acceptance / mainline-acceptance / revocation-sla —— adversarial 隔离栈上真实验收\n 连带 image-digest / image-smoke / sbom / 工作台两份快照\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/07df639ac88e1f0ec5a24d21c120bc36e2e722fa","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-18T18:05:37-07:00","added":[],"removed":[],"modified":["reports/workbench-catalog-snapshot.latest.json","reports/workbench-ops-snapshot.latest.json"]},{"id":"3eb37eaf82da1668fb94e3f5c9f06511da52f51a","message":"chore(reports): image-smoke 转绿 @ 6abcd3d,并把 smoke env 的生成配方写进 runbook\n\n上一条(6abcd3d)把 image-smoke 如实留红,理由是「需要一份主机名改写过的 env 变体,那是新配置」。\n这次把它造出来跑通了,证据面最后一条红清掉。\n\n配方不是手拼的——手拼必错,因为容器侧变量名与 .secrets/…-runtime-dev.env 的键名不是一套\n(compose 里是 `DATABASE_URL: ${PLATFORM_RUNTIME_DATABASE_URL}` 这样映射的)。做法是从\n`docker compose config --format json` 解析出 runtime 的**已解析环境**(32 个变量),只改三处主机名\n(postgres:5432 / redis:6379 / otel-collector:4318 → host.docker.internal + 已发布端口,共 12 个键被改写),\n写进 .secrets/enterprise-platform-runtime-smoke.env(0600,仓外)。\n\n跑通后发现自己漏遵守 runbook 一条,已改正:REDIS_URL 继承了 dev 的逻辑库 14,而 runbook 明写\n「别用 dev 常驻运行时占着的那个,借未分配的」。首轮(db14)虽然六项全绿,但那是和常驻运行时共用\n一个逻辑库;改为 db15 后重跑,六项仍全绿,回绑的是改正后这一份。\n顺带记下一个表本身没说的坑:stack/provision/redis-dbs.json 里 14 / 15 都标未分配,\n**实际占用要看 .secrets 的 dev env,不是看表**。\n\n冒烟结果(镜像 fe5570f5cb60 @ b90d7a1,即 B 组重建的那个):\n container-running / api-health-200(database+redis up)/ platform-modules-view(fail-closed,七模块)\n / module-health-200 / decisions-unauthenticated-401 / docker-healthcheck-healthy —— 六项全绿\n\n报告在干净检出(HEAD 6abcd3d)产出,provenance dirty=false,sourceSha b90d7a1(镜像源提交,与本次\n运行绑定不同是正常的,runbook 已说明)。配方连同两处踩坑写进 docs/runbook.md §2,免得下一个人重走。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/3eb37eaf82da1668fb94e3f5c9f06511da52f51a","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-18T18:05:08-07:00","added":[],"removed":[],"modified":["docs/runbook.md","reports/image-smoke.latest.json"]}],"total_commits":0,"head_commit":{"id":"07df639ac88e1f0ec5a24d21c120bc36e2e722fa","message":"chore(reports): 工作台两份快照回绑 @ 3eb37ea —— image-smoke 转绿与 runbook 新增章节都进了索引\n\n本会话第三次回绑这两份,成因还是那条作用域设计:docs/runbook.md 与一批 reports 都在里面,\n任一输入变更即过期。这次变的是 runbook §2 新增的 smoke env 生成配方,以及 image-smoke 由过期转 passed。\n内容确有变化(不是纯背书)。\n\n零依赖脚本,干净检出(HEAD 3eb37ea)生成,两份 provenance 均 worktreeDirty=false。\n\n至此 check:evidence 43 份全新鲜。本会话在证据线上收的:\n A 组 release-manifest / port-conformance(sbom 由并行会话收)\n B 组 deployed-runtime —— 重建 runtime 镜像并换掉 dev 常驻容器\n C 组 runtime-acceptance / mainline-acceptance / revocation-sla —— adversarial 隔离栈上真实验收\n 连带 image-digest / image-smoke / sbom / 工作台两份快照\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/07df639ac88e1f0ec5a24d21c120bc36e2e722fa","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-18T18:05:37-07:00","added":[],"removed":[],"modified":["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":22172,"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-19T08:58: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"}}...
|
push
|
2
|
30
|
1789780030
|
1789780070
|
0
|
1789780029
|
1789780100
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24209
|
chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 1b22 chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 1b228ba;锚点随批次刷新...
|
76
|
5
|
governance.yml
|
92
|
5
|
0
|
refs/heads/main
|
94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"34aab5dea31113ee2688fd236eea3f382402027e","after":"94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/34aab5dea31113ee2688fd236eea3f382402027e...94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb","commits":[{"id":"94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 1b228ba;锚点随批次刷新\n\nB3″ 三级证据绑定 clean HEAD `1b228ba`(worktreeDirty:false):\n\n· runtime 30/30 步、**759 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 759 = 747 + 本批 12 例,与 1b228ba 前置写下的预测值一致。\n 信封加了可选 context 之后矩阵仍 204/204——它本来就比不到这个字段\n (outbox 快照只取 type + payload),这也正是本批另建 14 条绊网的理由。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\n**一轮过**。上一批因锚点没跟着提交走白跑 25 分钟,这批把锚点写进了每个提交,没有复发。\n\n本提交按 C241 把锚点指向父提交 1b228ba;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb","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-18T18:13:05-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},{"id":"1b228baf0006555572a2e829ae95f67960da7e98","message":"chore(reports): 静态 28/28 回绑 @ aa62fba;数字前置到本批实测值\n\nown-tests 94 → 96、own-test-cases 750 → 762(+2 文件 / +12 例信封上下文验收,C70 只计\ngit 已跟踪文件,故必须在实现提交落地后才数得到)。\n\ntests-passing 747 → 759 是**预测值**(747 + 本批 12 例),由下一轮 runtime 实测证实;\n不等于 759 就按报告改文档。上一批已验证过这条路子:预测值被实测原样证实。\n理由同上批:改变用例数的批次结构上要两轮 runtime,先写预测能让 runtime 报告直接绑 clean HEAD。\n\n锚点按 C241 指向父提交 aa62fba——上一批就是漏在这里,白跑了一轮 25 分钟。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/1b228baf0006555572a2e829ae95f67960da7e98","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-18T18:00:51-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance.latest.json","reports/product-migrations.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"aa62fba5da4448840228f6699f42085fb2bdeae8","message":"feat(kernel-repin): B3″ realtime 双向合并——信封请求上下文真正贯通到 outbox\n\n内核 0.6.0 给信封加了 `context {requestId, traceId}`,但**只给了字段,没给它怎么进来**:\n写入端如何落库、读出端如何还原、无入站请求时如何表达「不知道」,三件事都留给下游发明。\n最省事的实现——投递时从当前 ALS 取一份填进去——恰好是最坏的:照着那个 requestId 去查日志\n只会查到 dispatcher 自己,「信封可追溯」就此变成假象。本批按三段落地:\n\n· 写入:outbox 加 request_id / trace_id 两列(两后端字节一致迁移,纯 additive 可空),\n 由 **Prisma 客户端扩展单点注入**。不逐处改两后端各 74 处 tx.outbox.create——那是\n 148 处一次性改动外加一条永久漂移缝:新写链忘了带就静默缺席,而少一个可空字段\n 不会让任何门禁红。扩展在交互式事务内同样生效,P4 的「outbox 与业务写同 tx」不变。\n 装配顺序固定:扩展在最内层、RLS 代理在最外层——反过来 $extends 会作用到代理的\n 目标对象上,代理当场失效。\n· 读出:dispatcher 与重放各自**从行上取**,经 contracts envelopeContextOf 还原;\n requestId 缺席即整体缺席(半份上下文既对不上日志,也不能声称知道来源)。\n· 缺席:无入站请求(worker / dispatcher / 触发器)时两列 NULL,信封里干脆没有 context。\n\n独立列而非塞 payload:payload 是领域事实,掺进基建相关性标识会被双后端行为矩阵当成领域\n差异比较——它的 outbox 快照恰好只取 type + payload。\n\n这是**合并不是 pin**:内核那版没有 resourceRefs,也没有 realtimeChannelForDatabase,\n直接 pin 会丢掉产品扩展参与订阅的唯一途径与「同 Redis 实例多环境不得互相收事件」的结构解\n(13 个消费者)。分歧已登记进迁移手册 §6,上游同步不得用内核版覆盖本文件。\n\n守护(行为矩阵**结构上证明不了这条**:上下文走独立列,矩阵只比 type + payload,\n删掉任一侧的注入或读出,204 例仍全绿):\n· check:dual-backend 增 14 条 targeted 断言(注入点/读出点/迁移/负例本身)+ 1 个受控断线\n 负探针,dualBackendParityNegativeProbes 由 2 收紧到 3;\n· 两侧各 6 例真实 DB 验收,断言集逐条对等:落库两列 / 无请求即 NULL / dispatcher 读出 /\n 重放保留 / 半份整体缺席 / 显式值不被覆盖。\n负向实测:摘掉 Fastify 注入扩展 → 精确 3 例红;摘掉重放读出 → 精确 1 例红;均已恢复现场。\n\ncontracts 升 1.23.0(expand-only),packages/downstream 两把锁重签,下游 fixture 源码未改\n即通过(同 major 兼容成立)。顺带实测到一个门禁盲区并如实登记为 U-42:check:kernel-packages\n的 apiDigest **只哈希入口 .d.ts 字节、不含再导出的模块**,所以本批加 3 个公开导出它不会红——\n「同版本改公开 API 即红」对 barrel 式入口基本不成立,版本是自觉升的。\n\n本批明确不做、逐条登记在立项书 §5.3:内核的 defineRealtimeEventTypes 组合式事件类型、\n两个未接线的内核常量(LIVE_BUFFER_LIMIT / REDIS_COMMAND_TIMEOUT_MS——后者对应一个真实的\nRedis publish 无超时缺口)、产品事件路径(走 raw SQL,扩展覆盖不到,目前没有 context)、\nworker 派生事件继承原始请求。前三项是范围取舍,最后一项的后果是那些行 context 为 NULL——\n缺席是诚实的,不构成假象。\n\n证据:typecheck 13/13;pnpm check 28/28;两侧信封上下文验收各 6/6(真实 DB\ndigital_employee_os_acceptance_20260918 @127.0.0.1:55470 + redis :6404/3)。\nruntime 整轮与报告回绑在下一提交。锚点按 C241 指向父提交 34aab5d。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/aa62fba5da4448840228f6699f42085fb2bdeae8","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-18T17:59:16-07:00","added":["apps/api-fastify/prisma/migrations/20260929000000_outbox_request_context/migration.sql","apps/api-fastify/src/plugins/outbox-request-context.ts","apps/api-fastify/test/realtime.envelope-context.acceptance.test.ts","apps/api-nestjs/prisma/migrations/20260929000000_outbox_request_context/migration.sql","apps/api-nestjs/src/prisma/outbox-request-context.ts","apps/api-nestjs/test/realtime.envelope-context.acceptance.test.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/modules/replay.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/prisma.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/events/replay.service.ts","apps/api-nestjs/src/prisma/prisma.service.ts","docs/migration-playbook.md","docs/planning/内核退回pin立项-2026-09-18.md","docs/product-extension-guide.md","kernel.boundaries.json","kernel.boundaries.lock.json","kernel.downstream.lock.json","kernel.exports.lock.json","kernel.packages.json","kernel.packages.lock.json","packages/contracts/package.json","packages/contracts/src/realtime.ts","reports/baseline.json","scripts/check-dual-backend-parity.mjs"]}],"total_commits":0,"head_commit":{"id":"94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 1b228ba;锚点随批次刷新\n\nB3″ 三级证据绑定 clean HEAD `1b228ba`(worktreeDirty:false):\n\n· runtime 30/30 步、**759 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 759 = 747 + 本批 12 例,与 1b228ba 前置写下的预测值一致。\n 信封加了可选 context 之后矩阵仍 204/204——它本来就比不到这个字段\n (outbox 快照只取 type + payload),这也正是本批另建 14 条绊网的理由。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\n**一轮过**。上一批因锚点没跟着提交走白跑 25 分钟,这批把锚点写进了每个提交,没有复发。\n\n本提交按 C241 把锚点指向父提交 1b228ba;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb","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-18T18:13:05-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},"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":90457,"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":1,"watchers_count":1,"branch_count":3,"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-09-19T08:38:20+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"}}...
|
push
|
2
|
36
|
1789780398
|
1789780407
|
0
|
1789780398
|
1789780421
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
24210
|
chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 1b22 chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 1b228ba;锚点随批次刷新...
|
76
|
5
|
platform-governance.yml
|
93
|
5
|
0
|
refs/heads/main
|
94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"34aab5dea31113ee2688fd236eea3f382402027e","after":"94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/34aab5dea31113ee2688fd236eea3f382402027e...94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb","commits":[{"id":"94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 1b228ba;锚点随批次刷新\n\nB3″ 三级证据绑定 clean HEAD `1b228ba`(worktreeDirty:false):\n\n· runtime 30/30 步、**759 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 759 = 747 + 本批 12 例,与 1b228ba 前置写下的预测值一致。\n 信封加了可选 context 之后矩阵仍 204/204——它本来就比不到这个字段\n (outbox 快照只取 type + payload),这也正是本批另建 14 条绊网的理由。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\n**一轮过**。上一批因锚点没跟着提交走白跑 25 分钟,这批把锚点写进了每个提交,没有复发。\n\n本提交按 C241 把锚点指向父提交 1b228ba;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb","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-18T18:13:05-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},{"id":"1b228baf0006555572a2e829ae95f67960da7e98","message":"chore(reports): 静态 28/28 回绑 @ aa62fba;数字前置到本批实测值\n\nown-tests 94 → 96、own-test-cases 750 → 762(+2 文件 / +12 例信封上下文验收,C70 只计\ngit 已跟踪文件,故必须在实现提交落地后才数得到)。\n\ntests-passing 747 → 759 是**预测值**(747 + 本批 12 例),由下一轮 runtime 实测证实;\n不等于 759 就按报告改文档。上一批已验证过这条路子:预测值被实测原样证实。\n理由同上批:改变用例数的批次结构上要两轮 runtime,先写预测能让 runtime 报告直接绑 clean HEAD。\n\n锚点按 C241 指向父提交 aa62fba——上一批就是漏在这里,白跑了一轮 25 分钟。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/1b228baf0006555572a2e829ae95f67960da7e98","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-18T18:00:51-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance.latest.json","reports/product-migrations.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"aa62fba5da4448840228f6699f42085fb2bdeae8","message":"feat(kernel-repin): B3″ realtime 双向合并——信封请求上下文真正贯通到 outbox\n\n内核 0.6.0 给信封加了 `context {requestId, traceId}`,但**只给了字段,没给它怎么进来**:\n写入端如何落库、读出端如何还原、无入站请求时如何表达「不知道」,三件事都留给下游发明。\n最省事的实现——投递时从当前 ALS 取一份填进去——恰好是最坏的:照着那个 requestId 去查日志\n只会查到 dispatcher 自己,「信封可追溯」就此变成假象。本批按三段落地:\n\n· 写入:outbox 加 request_id / trace_id 两列(两后端字节一致迁移,纯 additive 可空),\n 由 **Prisma 客户端扩展单点注入**。不逐处改两后端各 74 处 tx.outbox.create——那是\n 148 处一次性改动外加一条永久漂移缝:新写链忘了带就静默缺席,而少一个可空字段\n 不会让任何门禁红。扩展在交互式事务内同样生效,P4 的「outbox 与业务写同 tx」不变。\n 装配顺序固定:扩展在最内层、RLS 代理在最外层——反过来 $extends 会作用到代理的\n 目标对象上,代理当场失效。\n· 读出:dispatcher 与重放各自**从行上取**,经 contracts envelopeContextOf 还原;\n requestId 缺席即整体缺席(半份上下文既对不上日志,也不能声称知道来源)。\n· 缺席:无入站请求(worker / dispatcher / 触发器)时两列 NULL,信封里干脆没有 context。\n\n独立列而非塞 payload:payload 是领域事实,掺进基建相关性标识会被双后端行为矩阵当成领域\n差异比较——它的 outbox 快照恰好只取 type + payload。\n\n这是**合并不是 pin**:内核那版没有 resourceRefs,也没有 realtimeChannelForDatabase,\n直接 pin 会丢掉产品扩展参与订阅的唯一途径与「同 Redis 实例多环境不得互相收事件」的结构解\n(13 个消费者)。分歧已登记进迁移手册 §6,上游同步不得用内核版覆盖本文件。\n\n守护(行为矩阵**结构上证明不了这条**:上下文走独立列,矩阵只比 type + payload,\n删掉任一侧的注入或读出,204 例仍全绿):\n· check:dual-backend 增 14 条 targeted 断言(注入点/读出点/迁移/负例本身)+ 1 个受控断线\n 负探针,dualBackendParityNegativeProbes 由 2 收紧到 3;\n· 两侧各 6 例真实 DB 验收,断言集逐条对等:落库两列 / 无请求即 NULL / dispatcher 读出 /\n 重放保留 / 半份整体缺席 / 显式值不被覆盖。\n负向实测:摘掉 Fastify 注入扩展 → 精确 3 例红;摘掉重放读出 → 精确 1 例红;均已恢复现场。\n\ncontracts 升 1.23.0(expand-only),packages/downstream 两把锁重签,下游 fixture 源码未改\n即通过(同 major 兼容成立)。顺带实测到一个门禁盲区并如实登记为 U-42:check:kernel-packages\n的 apiDigest **只哈希入口 .d.ts 字节、不含再导出的模块**,所以本批加 3 个公开导出它不会红——\n「同版本改公开 API 即红」对 barrel 式入口基本不成立,版本是自觉升的。\n\n本批明确不做、逐条登记在立项书 §5.3:内核的 defineRealtimeEventTypes 组合式事件类型、\n两个未接线的内核常量(LIVE_BUFFER_LIMIT / REDIS_COMMAND_TIMEOUT_MS——后者对应一个真实的\nRedis publish 无超时缺口)、产品事件路径(走 raw SQL,扩展覆盖不到,目前没有 context)、\nworker 派生事件继承原始请求。前三项是范围取舍,最后一项的后果是那些行 context 为 NULL——\n缺席是诚实的,不构成假象。\n\n证据:typecheck 13/13;pnpm check 28/28;两侧信封上下文验收各 6/6(真实 DB\ndigital_employee_os_acceptance_20260918 @127.0.0.1:55470 + redis :6404/3)。\nruntime 整轮与报告回绑在下一提交。锚点按 C241 指向父提交 34aab5d。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/aa62fba5da4448840228f6699f42085fb2bdeae8","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-18T17:59:16-07:00","added":["apps/api-fastify/prisma/migrations/20260929000000_outbox_request_context/migration.sql","apps/api-fastify/src/plugins/outbox-request-context.ts","apps/api-fastify/test/realtime.envelope-context.acceptance.test.ts","apps/api-nestjs/prisma/migrations/20260929000000_outbox_request_context/migration.sql","apps/api-nestjs/src/prisma/outbox-request-context.ts","apps/api-nestjs/test/realtime.envelope-context.acceptance.test.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/modules/replay.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/prisma.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/events/replay.service.ts","apps/api-nestjs/src/prisma/prisma.service.ts","docs/migration-playbook.md","docs/planning/内核退回pin立项-2026-09-18.md","docs/product-extension-guide.md","kernel.boundaries.json","kernel.boundaries.lock.json","kernel.downstream.lock.json","kernel.exports.lock.json","kernel.packages.json","kernel.packages.lock.json","packages/contracts/package.json","packages/contracts/src/realtime.ts","reports/baseline.json","scripts/check-dual-backend-parity.mjs"]}],"total_commits":0,"head_commit":{"id":"94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 1b228ba;锚点随批次刷新\n\nB3″ 三级证据绑定 clean HEAD `1b228ba`(worktreeDirty:false):\n\n· runtime 30/30 步、**759 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 759 = 747 + 本批 12 例,与 1b228ba 前置写下的预测值一致。\n 信封加了可选 context 之后矩阵仍 204/204——它本来就比不到这个字段\n (outbox 快照只取 type + payload),这也正是本批另建 14 条绊网的理由。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\n**一轮过**。上一批因锚点没跟着提交走白跑 25 分钟,这批把锚点写进了每个提交,没有复发。\n\n本提交按 C241 把锚点指向父提交 1b228ba;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb","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-18T18:13:05-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},"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":90457,"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":1,"watchers_count":1,"branch_count":3,"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-09-19T08:38:20+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"}}...
|
push
|
2
|
8
|
1789780407
|
1789780416
|
0
|
1789780398
|
1789780421
|
|
|
0
|
Edit
Delete
|
|
24211
|
chore(reports): check:evidence 自身回绑 @ fe9fdca —— 4 chore(reports): check:evidence 自身回绑 @ fe9fdca —— 43 份全新鲜,状态由 partial 转 passed...
|
116
|
5
|
platform.yml
|
171
|
5
|
0
|
refs/heads/main
|
97d61aa7117c2f88c4ba5e0bdf4a5b5660f2ecbe
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"07df639ac88e1f0ec5a24d21c120bc36e2e722fa","after":"97d61aa7117c2f88c4ba5e0bdf4a5b5660f2ecbe","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/07df639ac88e1f0ec5a24d21c120bc36e2e722fa...97d61aa7117c2f88c4ba5e0bdf4a5b5660f2ecbe","commits":[{"id":"97d61aa7117c2f88c4ba5e0bdf4a5b5660f2ecbe","message":"chore(reports): check:evidence 自身回绑 @ fe9fdca —— 43 份全新鲜,状态由 partial 转 passed\n\n仓里这份还停在 2026-09-18 07:28(绑 a4b3d35),记的是 status=partial、34 新鲜 / 3 过期。\n那三条是 runtime/reports/runtime-acceptance、reports/revocation-sla、reports/mainline-acceptance,\n都因 runtime/test/e2e/identity-profile.test.ts 变更而过期,已在 b90d7a1 那轮收掉;\n只是没人把 check:evidence 自己重跑回绑,证据面的总账一直落后于实况。\n\n本次在干净树上重跑(HEAD fe9fdca,provenance.worktreeDirty=false,门禁 exit 0):\n 43 份已登记,43 份新鲜、0 份过期、0 份输入未提交、0 份无有效绑定、0 份例外\n 0 条告警;10 份未登记作用域,其中 0 份无处置说明\n\n也顺带验了前两个提交没有连带效应:十份零依赖门禁回绑到 07df639 / c570056 之后,\n工作台两份快照等以 reports 为输入的报告仍然新鲜,没有被重新判过期。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/97d61aa7117c2f88c4ba5e0bdf4a5b5660f2ecbe","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-18T18:16:11-07:00","added":[],"removed":[],"modified":["reports/evidence-freshness.latest.json"]},{"id":"fe9fdca41e28e3cbfc84f1ece8f76b068781647b","message":"chore(reports): catalog-drift 与 facts 回绑 @ c570056 —— 在主工作区干净态下重跑\n\n这两份不能走 rebind-reports:它的临时检出在工作区之外,catalog-drift 因此读不到工作区\n(workspaceAvailable 由 true 变 false、candidates 4→0、catalogDriftUnknown 0→154,\n多出一千两百行 unknown 条目),check:facts 则会把临时目录路径写进 candidatesDir。\n改在主工作区跑,用的是上一提交刚腾出的干净窗口:先跑 catalog:drift(树干净 → dirty=false),\n把产出移出工作区、还原文件,再跑 check:facts(树仍干净 → dirty=false),最后把 drift 那份放回来。\n两份因此绑同一个提交 c570056,且 provenance.worktreeDirty 都是 false。\n\n结论与 17:11 那轮在途版本逐字一致(剔除 provenance 三行后无差异),不是靠重跑改出来的:\n catalog:drift —— error 0 / drift 0 / info 5 / unknown 0,工作区可用\n check:facts —— 16 个声明 Fact 全部可追溯(Catalog 11 / 候选 5)\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/fe9fdca41e28e3cbfc84f1ece8f76b068781647b","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-18T18:15:40-07:00","added":[],"removed":[],"modified":["reports/catalog-drift.latest.json","reports/facts.latest.json"]},{"id":"c5700568890c95adf58272c1755e20a54f512d77","message":"chore(reports): 八份零依赖门禁回绑 @ 07df639 —— 覆盖上一轮绑 1de65fb/dirty 的在途版本\n\n工作区里躺着的这八份是 2026-09-18 17:11—17:26 本地跑的,绑的是\n1de65fb(caddy / catalog-reconciliation / fact-pii / migration-decs / module-imports / otel)、\n5116dc5(ci-mirror)与 6687aec(gate-flow)。前七份 provenance.worktreeDirty=true,\n按状态措辞纪律只能绑本地;而 HEAD 此后又走了六个提交(b90d7a1 … 07df639),\n直接提交等于把一份旧输入、脏树的结论写进证据面。\n\n改用 rebind-reports 在 HEAD 07df639 的干净检出里重跑这八个门禁:\n八份全部门禁 exit 0,provenance 均为 07df639 / worktreeDirty=false。\n\n结论与重跑前一致,没有靠重跑把红洗绿:\n caddy / catalog-reconciliation / migration-decs / otel —— findings 0\n fact-pii / module-imports —— violations 0\n gate-flow / ci-mirror —— status=passed,findings 0\nfact-pii 比上一份已提交的报告多出 scanDirs 与 rulesSource 两个字段,\n那是脚本里早已提交的改动第一次落进报告,不是本次新增的判据。\n\ncatalog-drift 与 facts 不在这一提交里:rebind 的临时检出在工作区之外,\n前者因此读不到工作区(workspaceAvailable true→false,catalogDriftUnknown 0→154,\n多出一千两百行 unknown 条目),后者会把临时目录路径写进 candidatesDir。\n这两份改在主工作区干净态下重跑,单独成提交。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/c5700568890c95adf58272c1755e20a54f512d77","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-18T18:15:09-07:00","added":[],"removed":[],"modified":["reports/caddy.latest.json","reports/catalog-reconciliation.latest.json","reports/ci-mirror.latest.json","reports/fact-pii.latest.json","reports/gate-flow.latest.json","reports/migration-decs.latest.json","reports/module-imports.latest.json","reports/otel.latest.json"]}],"total_commits":0,"head_commit":{"id":"97d61aa7117c2f88c4ba5e0bdf4a5b5660f2ecbe","message":"chore(reports): check:evidence 自身回绑 @ fe9fdca —— 43 份全新鲜,状态由 partial 转 passed\n\n仓里这份还停在 2026-09-18 07:28(绑 a4b3d35),记的是 status=partial、34 新鲜 / 3 过期。\n那三条是 runtime/reports/runtime-acceptance、reports/revocation-sla、reports/mainline-acceptance,\n都因 runtime/test/e2e/identity-profile.test.ts 变更而过期,已在 b90d7a1 那轮收掉;\n只是没人把 check:evidence 自己重跑回绑,证据面的总账一直落后于实况。\n\n本次在干净树上重跑(HEAD fe9fdca,provenance.worktreeDirty=false,门禁 exit 0):\n 43 份已登记,43 份新鲜、0 份过期、0 份输入未提交、0 份无有效绑定、0 份例外\n 0 条告警;10 份未登记作用域,其中 0 份无处置说明\n\n也顺带验了前两个提交没有连带效应:十份零依赖门禁回绑到 07df639 / c570056 之后,\n工作台两份快照等以 reports 为输入的报告仍然新鲜,没有被重新判过期。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/97d61aa7117c2f88c4ba5e0bdf4a5b5660f2ecbe","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-18T18:16:11-07:00","added":[],"removed":[],"modified":["reports/evidence-freshness.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":22214,"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-19T09:07:09+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"}}...
|
push
|
2
|
30
|
1789780649
|
1789780690
|
0
|
1789780647
|
1789780719
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24212
|
docs(部署): 登记第二次「重新部署运行」——判据仍指向只重启,但 identity 跑的是旧构 docs(部署): 登记第二次「重新部署运行」——判据仍指向只重启,但 identity 跑的是旧构建...
|
116
|
5
|
platform.yml
|
172
|
5
|
0
|
refs/heads/main
|
51e311bf417385a994296f20da3b9458761bdee8
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"97d61aa7117c2f88c4ba5e0bdf4a5b5660f2ecbe","after":"51e311bf417385a994296f20da3b9458761bdee8","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/97d61aa7117c2f88c4ba5e0bdf4a5b5660f2ecbe...51e311bf417385a994296f20da3b9458761bdee8","commits":[{"id":"51e311bf417385a994296f20da3b9458761bdee8","message":"docs(部署): 登记第二次「重新部署运行」——判据仍指向只重启,但 identity 跑的是旧构建\n\n与 §12 同形态的请求,前置判据同法重算,结论同样是不重建镜像:镜像源 b90d7a1 →\nHEAD 07df639 的 runtime/ 与 stack/ 变更均为零文件,未提交改动不碰运行时输入,\n容器镜像 ID 与 reports/image-digest.json 逐字一致(sha256:fe5570f5cb60…)。\n13 个 stack 容器一个没动。\n\n与 §12.1 的两点差别记在 §18.1 / §18.2:\n- 这次跑了 check:deployed(passed / IMAGE_SOURCE_EQUIVALENT,在 07df639 上),\n 但脚本在脏树上没有落盘,reports/deployed-runtime.latest.json 仍是 dd6de712 那份、\n worktreeDirty=false,未被本轮污染——所以那一行的证据形态是门禁 stdout,不是回绑报告。\n- 这轮重启有实据,不只是「判据说该做的只有启动那半」:identity 的 dist/src/main.js\n 在 17:31 重建过,而在跑的进程是 07:57 起的,跑的是旧构建;web 与工作台的 .next\n 均不落后于源码。停 pid 5209/18658/43950,按 .claude/launch.json 重起。\n\n重启后复验 11 项全绿(§18.3):identity 无凭证 401 / 现签 HS256 令牌 200、\n控制面 /api/platform/{catalog,modules} 200、CORS 预检 204 带 authorization、\n工作台「读取探针」ok 且 database/redis up、常驻容器经 Caddy :58080 与直连 :53001 均 200、\n:3098 transport 为 Connected(D-8 注入生效)、控制台零错误。\n\n§18.4 登记一条未定位的观察:有个不带凭证的客户端每 2 秒打一次 identity 的 /api/users\n(401,失败关闭)。不是本轮重启带出来的——新进程 18:14:46 起、它 18:15:29 就接上了;\n三个浏览器标签页的 network 抓取里都没有这批请求,lsof 只见一条绕过 :3098 代理、\n直连 127.0.0.1:3101 的长连接。未定位到具体页面,该节不作结论。\n\n提交时 HEAD 已被并行会话推到 97d61aa,期间三个提交全是 chore(reports)、\nruntime/ 与 stack/ 零变更,故 §18.1 的判据在新 HEAD 上仍然成立,正文不改。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/51e311bf417385a994296f20da3b9458761bdee8","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-18T18:19:04-07:00","added":[],"removed":[],"modified":["docs/dev部署运行重做记录-2026-09-18.md"]}],"total_commits":0,"head_commit":{"id":"51e311bf417385a994296f20da3b9458761bdee8","message":"docs(部署): 登记第二次「重新部署运行」——判据仍指向只重启,但 identity 跑的是旧构建\n\n与 §12 同形态的请求,前置判据同法重算,结论同样是不重建镜像:镜像源 b90d7a1 →\nHEAD 07df639 的 runtime/ 与 stack/ 变更均为零文件,未提交改动不碰运行时输入,\n容器镜像 ID 与 reports/image-digest.json 逐字一致(sha256:fe5570f5cb60…)。\n13 个 stack 容器一个没动。\n\n与 §12.1 的两点差别记在 §18.1 / §18.2:\n- 这次跑了 check:deployed(passed / IMAGE_SOURCE_EQUIVALENT,在 07df639 上),\n 但脚本在脏树上没有落盘,reports/deployed-runtime.latest.json 仍是 dd6de712 那份、\n worktreeDirty=false,未被本轮污染——所以那一行的证据形态是门禁 stdout,不是回绑报告。\n- 这轮重启有实据,不只是「判据说该做的只有启动那半」:identity 的 dist/src/main.js\n 在 17:31 重建过,而在跑的进程是 07:57 起的,跑的是旧构建;web 与工作台的 .next\n 均不落后于源码。停 pid 5209/18658/43950,按 .claude/launch.json 重起。\n\n重启后复验 11 项全绿(§18.3):identity 无凭证 401 / 现签 HS256 令牌 200、\n控制面 /api/platform/{catalog,modules} 200、CORS 预检 204 带 authorization、\n工作台「读取探针」ok 且 database/redis up、常驻容器经 Caddy :58080 与直连 :53001 均 200、\n:3098 transport 为 Connected(D-8 注入生效)、控制台零错误。\n\n§18.4 登记一条未定位的观察:有个不带凭证的客户端每 2 秒打一次 identity 的 /api/users\n(401,失败关闭)。不是本轮重启带出来的——新进程 18:14:46 起、它 18:15:29 就接上了;\n三个浏览器标签页的 network 抓取里都没有这批请求,lsof 只见一条绕过 :3098 代理、\n直连 127.0.0.1:3101 的长连接。未定位到具体页面,该节不作结论。\n\n提交时 HEAD 已被并行会话推到 97d61aa,期间三个提交全是 chore(reports)、\nruntime/ 与 stack/ 零变更,故 §18.1 的判据在新 HEAD 上仍然成立,正文不改。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/51e311bf417385a994296f20da3b9458761bdee8","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-18T18:19:04-07:00","added":[],"removed":[],"modified":["docs/dev部署运行重做记录-2026-09-18.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":22234,"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-19T09:17:28+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"}}...
|
push
|
2
|
30
|
1789780811
|
1789780853
|
0
|
1789780811
|
1789780883
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24213
|
chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 56e6 chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 56e6e57;锚点随批次刷新...
|
76
|
5
|
governance.yml
|
94
|
5
|
0
|
refs/heads/main
|
01d0eabfa71ec061d876d39d4f399d2290530a15
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb","after":"01d0eabfa71ec061d876d39d4f399d2290530a15","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb...01d0eabfa71ec061d876d39d4f399d2290530a15","commits":[{"id":"01d0eabfa71ec061d876d39d4f399d2290530a15","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 56e6e57;锚点随批次刷新\n\nRedis 发布时限批次的三级证据,绑定 clean HEAD `56e6e57`(worktreeDirty:false):\n\n· runtime 30/30 步、**776 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 776 = 759 + 本批 17 例(contracts 9 + 两后端各 4),与前置预测一致。\n dependency-resilience / multi-instance / write-capacity 这些真打 Redis 的\n 门禁全过——2 秒时限没有误伤健康链路。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate\n (npm 审计接口 503 重试两次后成功)。\n\n本提交按 C241 把锚点指向父提交 56e6e57;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/01d0eabfa71ec061d876d39d4f399d2290530a15","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-18T18:44:00-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},{"id":"56e6e57c22a534a07ac54bc5f8bf9da1c6806a03","message":"chore(reports): 静态 28/28 回绑 @ 00cd95d;数字前置到本批实测值\n\nown-tests 96 → 99、own-test-cases 762 → 779(+3 文件 / +17 例:contracts 9 例判定单测\n与两后端各 4 例黑洞 Redis 验收;C70 只计 git 已跟踪文件,故必须在实现提交落地后才数得到)。\n\ntests-passing 759 → 776 是**预测值**(759 + 17),由下一轮 runtime 实测证实。\n前两批这条路子都验证过:预测被实测原样证实。\n\n锚点按 C241 指向父提交 00cd95d。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/56e6e57c22a534a07ac54bc5f8bf9da1c6806a03","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-18T18:31:04-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance.latest.json","reports/product-migrations.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"00cd95da0b4f2694db9528235f69d2f95a6707ab","message":"fix(realtime): Redis 发布加可判责时限 + 批次预算刹车——此前一次 Redis 故障既不可判责也不收敛\n\nB3″ 登记的推迟项里有一条是真缺口,同日单独做掉。**先有证据再动手**:起一个「接受连接但\n永不应答」的 TCP 服务端(C63 已建模的半开/黑洞形态),用与本仓 publisher 完全相同的连接配置\n(maxRetriesPerRequest: null——BullMQ 的要求)打一次 publish,**8 秒后仍然挂着**。\n不是慢,是永远:ioredis 在该配置下无限重试,命令永不 reject。\n\n真正的后果不在「慢」,在它挂在 outbox 领取事务**之内**:\n\n 修复前 修复后\n 单行 publish 无限挂起 2s 抛 REALTIME_REDIS_COMMAND_TIMEOUT\n 该行 attempts 不增(整事务回滚) +1,事务提交\n 批内其余 49 行 一次都没试过 按预算尽量试,剩下留给下一跳\n 连续故障 每秒重开一个必然超时的事务,不收敛 10 跳后进死信,可判责终态\n 运维看到的错误 Prisma 事务超时,**指向数据库** 稳定前缀,指向 Redis\n\n**光加超时不够,这是最容易做漏的一半。** 故障时每行烧掉一个完整时限,一批 50 行 ×2s 远超\n15 秒事务预算——事务照样超时回滚、attempts 照样不增,只是从「挂着」变成「忙着」。\n所以有 realtimeDispatchBudget:每行开工前裁决「还剩不剩得下再试一行」,不够就 break,\n把剩下的留给下一跳,让本事务先把已累加的 attempts 提交掉。**收敛性来自这条刹车,不是超时。**\n\n超时**抛错不吞**:五个 publish 点各有自己的失败语义(dispatcher 累加 attempts 走死信,\n进程内扇出向上传播)。在 helper 里吞掉就变成事件静默丢失,比挂住更糟。\n\n证据:\n· contracts 9 例判定单测——含「超时后底层 promise 迟到 reject 不产生 unhandledRejection」\n 与「15s 预算最多放行 7 行」(关键不是 7,是它 \u003c 50);\n· 两后端各 4 例真实 ioredis 打黑洞服务端验收,**直接测生产类**\n (new EventBus(hungRedis) / new EventBusService(hungRedis, ...))——在测试里另写一份\n publish 只能证明 helper 能用,证明不了生产路径接了它;\n· check:dual-backend 增 12 条 targeted 断言(五个 publish 点 + 两处刹车 + 黑洞用例本身)\n + 1 个受控断线负探针,dualBackendParityNegativeProbes 3 → 4。\n负向实测:摘掉 Fastify 生产 EventBus.publish 的时限 → 该用例挂满 30 秒测试上限后红、\n其余三例仍绿(精确命中);已恢复现场。\n\n顺带调了一个既有断言并注明理由:G16 的「提交后才发投递样本」用 4200 字节邻近窗口,预算刹车\n合法地把两点推远约 600 字节,放宽到 4800。它是邻近性启发式不是语义判据,意图未变;\n我也把预算日志挪到 observeDelivery 之后,尽量少动它的相邻性。\n\ncontracts 升 1.24.0(expand-only),两把锁重签,下游 fixture 源码未改即通过。\n\n证据:typecheck 13/13;pnpm check 28/28。runtime 整轮与报告回绑在下一提交。\n锚点按 C241 指向父提交 94ec469。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/00cd95da0b4f2694db9528235f69d2f95a6707ab","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-18T18:29:12-07:00","added":["apps/api-fastify/test/realtime.redis-timeout.acceptance.test.ts","apps/api-nestjs/test/realtime.redis-timeout.acceptance.test.ts","packages/contracts/src/realtime-redis-timeout.test.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/dispatcher.ts","apps/api-fastify/src/plugins/events.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-nestjs/src/dispatcher.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","docs/planning/内核退回pin立项-2026-09-18.md","docs/product-extension-guide.md","kernel.downstream.lock.json","kernel.exports.lock.json","kernel.packages.json","kernel.packages.lock.json","packages/contracts/package.json","packages/contracts/src/realtime.ts","reports/baseline.json","scripts/check-dual-backend-parity.mjs"]}],"total_commits":0,"head_commit":{"id":"01d0eabfa71ec061d876d39d4f399d2290530a15","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 56e6e57;锚点随批次刷新\n\nRedis 发布时限批次的三级证据,绑定 clean HEAD `56e6e57`(worktreeDirty:false):\n\n· runtime 30/30 步、**776 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 776 = 759 + 本批 17 例(contracts 9 + 两后端各 4),与前置预测一致。\n dependency-resilience / multi-instance / write-capacity 这些真打 Redis 的\n 门禁全过——2 秒时限没有误伤健康链路。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate\n (npm 审计接口 503 重试两次后成功)。\n\n本提交按 C241 把锚点指向父提交 56e6e57;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/01d0eabfa71ec061d876d39d4f399d2290530a15","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-18T18:44:00-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},"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":90814,"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":1,"watchers_count":1,"branch_count":3,"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-09-19T09:13:19+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"}}...
|
push
|
2
|
36
|
1789782246
|
1789782336
|
0
|
1789782244
|
1789782350
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
24214
|
chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 56e6 chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 56e6e57;锚点随批次刷新...
|
76
|
5
|
platform-governance.yml
|
95
|
5
|
0
|
refs/heads/main
|
01d0eabfa71ec061d876d39d4f399d2290530a15
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb","after":"01d0eabfa71ec061d876d39d4f399d2290530a15","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb...01d0eabfa71ec061d876d39d4f399d2290530a15","commits":[{"id":"01d0eabfa71ec061d876d39d4f399d2290530a15","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 56e6e57;锚点随批次刷新\n\nRedis 发布时限批次的三级证据,绑定 clean HEAD `56e6e57`(worktreeDirty:false):\n\n· runtime 30/30 步、**776 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 776 = 759 + 本批 17 例(contracts 9 + 两后端各 4),与前置预测一致。\n dependency-resilience / multi-instance / write-capacity 这些真打 Redis 的\n 门禁全过——2 秒时限没有误伤健康链路。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate\n (npm 审计接口 503 重试两次后成功)。\n\n本提交按 C241 把锚点指向父提交 56e6e57;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/01d0eabfa71ec061d876d39d4f399d2290530a15","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-18T18:44:00-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},{"id":"56e6e57c22a534a07ac54bc5f8bf9da1c6806a03","message":"chore(reports): 静态 28/28 回绑 @ 00cd95d;数字前置到本批实测值\n\nown-tests 96 → 99、own-test-cases 762 → 779(+3 文件 / +17 例:contracts 9 例判定单测\n与两后端各 4 例黑洞 Redis 验收;C70 只计 git 已跟踪文件,故必须在实现提交落地后才数得到)。\n\ntests-passing 759 → 776 是**预测值**(759 + 17),由下一轮 runtime 实测证实。\n前两批这条路子都验证过:预测被实测原样证实。\n\n锚点按 C241 指向父提交 00cd95d。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/56e6e57c22a534a07ac54bc5f8bf9da1c6806a03","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-18T18:31:04-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance.latest.json","reports/product-migrations.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"00cd95da0b4f2694db9528235f69d2f95a6707ab","message":"fix(realtime): Redis 发布加可判责时限 + 批次预算刹车——此前一次 Redis 故障既不可判责也不收敛\n\nB3″ 登记的推迟项里有一条是真缺口,同日单独做掉。**先有证据再动手**:起一个「接受连接但\n永不应答」的 TCP 服务端(C63 已建模的半开/黑洞形态),用与本仓 publisher 完全相同的连接配置\n(maxRetriesPerRequest: null——BullMQ 的要求)打一次 publish,**8 秒后仍然挂着**。\n不是慢,是永远:ioredis 在该配置下无限重试,命令永不 reject。\n\n真正的后果不在「慢」,在它挂在 outbox 领取事务**之内**:\n\n 修复前 修复后\n 单行 publish 无限挂起 2s 抛 REALTIME_REDIS_COMMAND_TIMEOUT\n 该行 attempts 不增(整事务回滚) +1,事务提交\n 批内其余 49 行 一次都没试过 按预算尽量试,剩下留给下一跳\n 连续故障 每秒重开一个必然超时的事务,不收敛 10 跳后进死信,可判责终态\n 运维看到的错误 Prisma 事务超时,**指向数据库** 稳定前缀,指向 Redis\n\n**光加超时不够,这是最容易做漏的一半。** 故障时每行烧掉一个完整时限,一批 50 行 ×2s 远超\n15 秒事务预算——事务照样超时回滚、attempts 照样不增,只是从「挂着」变成「忙着」。\n所以有 realtimeDispatchBudget:每行开工前裁决「还剩不剩得下再试一行」,不够就 break,\n把剩下的留给下一跳,让本事务先把已累加的 attempts 提交掉。**收敛性来自这条刹车,不是超时。**\n\n超时**抛错不吞**:五个 publish 点各有自己的失败语义(dispatcher 累加 attempts 走死信,\n进程内扇出向上传播)。在 helper 里吞掉就变成事件静默丢失,比挂住更糟。\n\n证据:\n· contracts 9 例判定单测——含「超时后底层 promise 迟到 reject 不产生 unhandledRejection」\n 与「15s 预算最多放行 7 行」(关键不是 7,是它 \u003c 50);\n· 两后端各 4 例真实 ioredis 打黑洞服务端验收,**直接测生产类**\n (new EventBus(hungRedis) / new EventBusService(hungRedis, ...))——在测试里另写一份\n publish 只能证明 helper 能用,证明不了生产路径接了它;\n· check:dual-backend 增 12 条 targeted 断言(五个 publish 点 + 两处刹车 + 黑洞用例本身)\n + 1 个受控断线负探针,dualBackendParityNegativeProbes 3 → 4。\n负向实测:摘掉 Fastify 生产 EventBus.publish 的时限 → 该用例挂满 30 秒测试上限后红、\n其余三例仍绿(精确命中);已恢复现场。\n\n顺带调了一个既有断言并注明理由:G16 的「提交后才发投递样本」用 4200 字节邻近窗口,预算刹车\n合法地把两点推远约 600 字节,放宽到 4800。它是邻近性启发式不是语义判据,意图未变;\n我也把预算日志挪到 observeDelivery 之后,尽量少动它的相邻性。\n\ncontracts 升 1.24.0(expand-only),两把锁重签,下游 fixture 源码未改即通过。\n\n证据:typecheck 13/13;pnpm check 28/28。runtime 整轮与报告回绑在下一提交。\n锚点按 C241 指向父提交 94ec469。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/00cd95da0b4f2694db9528235f69d2f95a6707ab","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-18T18:29:12-07:00","added":["apps/api-fastify/test/realtime.redis-timeout.acceptance.test.ts","apps/api-nestjs/test/realtime.redis-timeout.acceptance.test.ts","packages/contracts/src/realtime-redis-timeout.test.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/dispatcher.ts","apps/api-fastify/src/plugins/events.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-nestjs/src/dispatcher.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","docs/planning/内核退回pin立项-2026-09-18.md","docs/product-extension-guide.md","kernel.downstream.lock.json","kernel.exports.lock.json","kernel.packages.json","kernel.packages.lock.json","packages/contracts/package.json","packages/contracts/src/realtime.ts","reports/baseline.json","scripts/check-dual-backend-parity.mjs"]}],"total_commits":0,"head_commit":{"id":"01d0eabfa71ec061d876d39d4f399d2290530a15","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 56e6e57;锚点随批次刷新\n\nRedis 发布时限批次的三级证据,绑定 clean HEAD `56e6e57`(worktreeDirty:false):\n\n· runtime 30/30 步、**776 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 776 = 759 + 本批 17 例(contracts 9 + 两后端各 4),与前置预测一致。\n dependency-resilience / multi-instance / write-capacity 这些真打 Redis 的\n 门禁全过——2 秒时限没有误伤健康链路。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate\n (npm 审计接口 503 重试两次后成功)。\n\n本提交按 C241 把锚点指向父提交 56e6e57;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/01d0eabfa71ec061d876d39d4f399d2290530a15","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-18T18:44:00-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},"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":90814,"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":1,"watchers_count":1,"branch_count":3,"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-09-19T09:13:19+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"}}...
|
push
|
2
|
8
|
1789782337
|
1789782345
|
0
|
1789782245
|
1789782351
|
|
|
0
|
Edit
Delete
|
|
24215
|
docs(治理): 建宿主协议签收单目录——C-3 附条件的执行面,六份逐域单全部未签收
|
116
|
5
|
platform.yml
|
173
|
5
|
0
|
refs/heads/main
|
b69710a74604d55a435971103dc033025cbc6e6b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"51e311bf417385a994296f20da3b9458761bdee8","after":"b69710a74604d55a435971103dc033025cbc6e6b","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/51e311bf417385a994296f20da3b9458761bdee8...b69710a74604d55a435971103dc033025cbc6e6b","commits":[{"id":"b69710a74604d55a435971103dc033025cbc6e6b","message":"docs(治理): 建宿主协议签收单目录——C-3 附条件的执行面,六份逐域单全部未签收\n\n立项这件事在本体系里已经被裁过:决策批次-2026-09-16 的 C-3(✅ 采纳)把九个契约域的\n运行宿主裁给上层既有宿主,附条件写死「宿主协议……签收才算准入」,Q01 原文还有两句更硬的\n——「签收前不运行」与「不得以『方便实现』自动新增 M8」。裁决当天的执行顺序 §3 第 4 条\n即为「C-3 宿主协议逐域签收 → Catalog 六项去向」,而建本目录之前,全仓「宿主协议」四字\n只出现在三篇设计文档里,零份签收材料:空着的不是立项,是签收。\n\n本次按十三项最小内容(能力ID / 数据Owner / 运行Owner / 库 / 对外契约 / 鉴权 / 备份 /\nSLO / 值班 / 依赖 / 预算 / 升级退出 / 消费者清单)逐域建单,五份对应 C-3 承接表:\nC15 跨域流程、C16 企业 IM、C17 数据分析、C18 统一体验、C19 成本与容量,状态一律「未签收」。\n每份代填的只有本仓可机器核验的字段(规则文件与行数、域测试、失败关闭夹具例数、Catalog\n登记与 blockers、本域特有约束),宿主侧字段一律空缺;本目录不代任何 Owner 签字,\n不改任何 Catalog 字段——Catalog 去向登记是签收之后的动作,须走 CHG。\n\n三处不能读岔的,逐单复写:\n- C19 的宿主按 C-3 是「复用 C17 选定宿主」,C17 未签收前它的宿主栏无从填起;且 C-15 改案\n 把订阅计量与出账并入本域,范围改写材料 CHG-017 待签,签前须先确认适用哪版范围。\n- C18 的宿主是劈成两半的:企业业务 Shell 归数字员工基座(本单要签的那半),平台自身入口\n 由本仓独立工作台承载(CHG-018 修正,不走宿主签收)。工作台已在本机 dev 跑起来,\n 不构成把 enterprise-experience 读成「已有承接」的理由。\n- C15 是六域里唯一带「无合格宿主则另提运行承接裁决」口子的,那是 Q01 给新建运行承接\n (含本仓模块)留的唯一合法入口,走它要附至少两个宿主方案的成本与迁移影响,不是跳过签收。\n\nC01 注册中心单列为「不适用」:C-3 的承接表只覆盖 C11—C19,注册中心是 C01、责任在\nCatalog Owner / 平台工程,权威状态是获批的 Git 内容,没有「托管到某个上层业务应用」这个选项。\nA-2 附条件里「注册中心项已由 CHG-013 / 014 处理」指的是登记面(code_truth 改指、证据归零),\n不是运行承接裁决。它真正卡的是六条 blocker(DEC-009/010/011/012/031/032)的落地面——\n六条都已 approved,所以不是等裁决,是这些裁决在本域还没有对应实现。\n\n一条五份单共同的前置(机器实测 2026-09-18):六个域在 contracts/ 里已登记的 HTTP 契约与\nFact 都是 0——contracts/contracts/ 的 7 份 OpenAPI 全属七模块,facts.json 对六域一条没有。\n按仓纪律 1「模块新增端口 / Fact 必须先登记 contracts/」,登记对外契约必须发生在签收之前,\n否则宿主签的是一份没有接口定义的协议。\n\n同时在 Q01 的「待改产物 / 责任」后补一段「签收面」指向本目录,避免新目录成为孤儿文档。\n门禁:治理层 check-workspace-consistency 重跑,除在案常驻的 L9 COMPOSE_PROJECT_COLLISION\n外无新增问题;七份新文档的相对链接与锚点逐条实测可达。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/b69710a74604d55a435971103dc033025cbc6e6b","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-18T18:46:22-07:00","added":["docs/能力设计/宿主协议/C01-application-contract-registry.md","docs/能力设计/宿主协议/C15-cross-domain-workflow.md","docs/能力设计/宿主协议/C16-collaboration-messaging.md","docs/能力设计/宿主协议/C17-data-analytics.md","docs/能力设计/宿主协议/C18-enterprise-experience.md","docs/能力设计/宿主协议/C19-cost-capacity.md","docs/能力设计/宿主协议/README.md"],"removed":[],"modified":["docs/能力设计/设计问题收口方案.md"]},{"id":"7dd4429a2d0400fdd2f2e9ec2b93e8cfb6e52609","message":"docs(工作台): 订正实现记录里「回绑」那句 —— 本轮只回绑了 runtime 作用域的两份\n\n21b0821 写记录时那句是「报告回绑单独成提交跟在本提交之后」,写的是打算而不是结果。\n实际只做到一半,记录里现在把一半的边界画出来:naming 与 fork-readiness 已在 21b0821 上\n以 worktreeDirty=false 回绑(edff342);module-imports 的输入集确实被本轮动到,但取证时\n仓根不干净——树里有并行会话正在写的未跟踪产物 docs/能力设计/宿主协议/——按仓根算就是\ndirty,回绑等于把现有 clean 绑定降级,留给干净树上补;caddy 的输入本轮一个都没动,\n不需要跟着走。\n\n也就是说这两项在 21b0821 上的证据形态是门禁 stdout 与退出码,不是回绑报告。记录 §6 改成\n一张处置表,不再是一句笼统的「只在本提交之后单独回绑」。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/7dd4429a2d0400fdd2f2e9ec2b93e8cfb6e52609","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-18T18:46:05-07:00","added":[],"removed":[],"modified":["docs/工作台交互与服务目录完善记录-2026-09-18.md"]},{"id":"edff342c2c4e3a7b11920e51d87c32905d58280b","message":"chore(reports): naming 与 fork-readiness 回绑 @ 21b0821 —— 根级两份这轮拿不到 clean\n\n工作台改版(21b0821)动的是 runtime/apps/workbench,naming 与 fork-readiness 的输入集\n覆盖整个 runtime/,所以这两份必须跟着走,否则 check:evidence 会把它们判成过期。两份都在\nruntime 作用域的干净树上重跑,exit 0、worktreeDirty=false。\n\n同一时刻**没有**回绑的两份,以及为什么:\n- reports/module-imports.latest.json:输入集含工作台(规则 3「工作台不得静态 import 任何\n @juhai/module-*」),确实被 21b0821 动到,但它的 provenance 按仓根算——树里有并行会话\n 正在写的 docs/能力设计/宿主协议/(未跟踪,18:43 起),按仓根算就是 dirty=true。回绑一份\n worktreeDirty=true 的报告等于把现有的 clean 绑定降级,不如留着,等干净树上补。\n- reports/caddy.latest.json:同样只能绑 dirty=true,但它的输入(modules.json、\n caddy-routes.json、两个 Caddyfile)21b0821 一个都没动,本来就不需要跟着走。\n\n本轮这四项门禁在 21b0821 上都跑过 exit 0(module-imports、caddy 的证据形态因此是门禁\nstdout,不是回绑报告)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/edff342c2c4e3a7b11920e51d87c32905d58280b","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-18T18:45:42-07:00","added":[],"removed":[],"modified":["runtime/reports/fork-readiness.latest.json","runtime/reports/naming.latest.json"]},{"id":"21b0821a2898e0e2d6f4660b8c50744600dd96bb","message":"feat(workbench): 服务目录重做与交互完善——三处「设计写了、WB-1 没落」的缺口一并补上\n\n本轮只动 runtime/apps/workbench 的前端代码:读的还是原来那三个管理读面与随构建附带的\n目录快照,不新增接口、不新增数据来源、不新增写操作,因此不改变任何模块的验收等级、\n发布档位与 Catalog 状态。\n\n先补的三处不是新功能,是已签署设计里写了而 WB-1 没实现的:\n- 快照的 conflicts / status 此前被整个忽略,页面只渲染 entries。对外交付设计 §3.1 要求\n 「来源冲突展示冲突及证据,不静默挑选更乐观的结果」,现在冲突块排在条目之前,为空时\n 明写「0 处来源冲突」——不靠「没看见」表示没有。\n- §5.3 的「显示来源、环境和更新时间」此前一处都没有。现在每个区块各自显示取数时刻、\n 可单独重取,页脚给出平台接口地址与快照路径。\n- nonce 一直是生成并随授权请求发出,回调里却从未与 id_token 比对(§8 关键验收场景 2\n 要求 PKCE / state / nonce 都正确)。现在 nonce 与 aud 在建立会话之前校验,任一不符即\n 拒绝、不落 sessionStorage;iss 不符只降级为「主体未知」并说明原因——那是 D-10 的部署\n 配置问题,不是这次登录不合法。顺带收了 expires_in 被丢弃的问题:过期令牌此前会补水成\n 「导航栏显示已登录、每个读面都报缺凭证」。\n\n服务目录从一张静态表重做成可取景的服务中心:搜索、四个筛选、排序、分组、选中条目与是否\n对照运行时整体进 URL(默认值一律不写进去,认不出的参数退回默认而不是把页面打空),筛出来\n的视图因此可以直接贴给别人。五列可排序,层按 P0 / P1 / P2 层序、模块档位按 shape →\nauthority → e2 推进序——代码注释与页面 title 都写明这是固定显示顺序、不是优劣排名。详情\n从行内展开改成宽屏常驻面板 / 窄屏行内,六个区加快照自带的 flags 口径提醒;稳定标识、包名、\ncode_truth、绑定提交与 HTTP 前缀都带复制按钮,复制的是完整值而不是截断显示的短号。快照的\ncounts 原样成摘要条,不用筛选结果重算——那是两个时刻的两件事。\n\n新增的「对照运行时」开关默认关:目录页读的是静态快照,不该因为打开一个页面就去打需要令牌\n的接口;开关进 URL,是因为收到链接的人有权知道这个视图会额外取一份数据。打开后表格多一列\n已装载 / 未装载、详情多一节运行时对照。读面失败时只在表格上方说一次(分类 + 原因 + 重试),\n行内用 —,详情那节指回去——同一条 401 不连同同一个重试按钮摆三遍。\n\n运行信息页给出模块与项目的映射及跳回目录的深链(模块 id identity 与项目标识\nenterprise-idp 不是一回事),查不到映射就不给链接。交互面另有:深色模式真正接上(此前\n.dark 变量是死代码),首帧前由内联脚本应用偏好、不闪一帧浅色;焦点环写成原生 outline 而\n不是 @apply ring-*,焦点环消失是可达性缺陷、不该由主题配置的颜色键决定;方向键只在焦点\n落进表格后接管,全局劫持等于抢走页面滚动;窄屏改为收列而不是横向滚动,上一版的详情被困在\n表格的横向滚动容器里、手机上要左右刮着读。\n\n实测与未闭环见 docs/工作台交互与服务目录完善记录-2026-09-18.md。要点两条:nonce / aud\n校验只有单测级证据,托管登录要人工输口令、本轮没走完整授权码流程;工作台仍无仓内测试装置,\n那些断言未进 pnpm check。门禁在本轮的脏树上跑绿(workbench typecheck / lint / build、\ncheck:module-imports、check:naming、check:fork-readiness、check:caddy),报告回绑单独\n成提交跟在本提交之后。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/21b0821a2898e0e2d6f4660b8c50744600dd96bb","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-18T18:44:46-07:00","added":["docs/工作台交互与服务目录完善记录-2026-09-18.md","runtime/apps/workbench/src/app/callback/layout.tsx","runtime/apps/workbench/src/app/catalog/layout.tsx","runtime/apps/workbench/src/app/login/layout.tsx","runtime/apps/workbench/src/app/runtime/layout.tsx","runtime/apps/workbench/src/components/catalog/catalog-table.tsx","runtime/apps/workbench/src/components/catalog/counts-strip.tsx","runtime/apps/workbench/src/components/catalog/entry-detail.tsx","runtime/apps/workbench/src/components/page-header.tsx","runtime/apps/workbench/src/components/refresh-button.tsx","runtime/apps/workbench/src/components/site-footer.tsx","runtime/apps/workbench/src/components/theme-toggle.tsx","runtime/apps/workbench/src/components/ui/copy-button.tsx","runtime/apps/workbench/src/components/ui/data-list.tsx","runtime/apps/workbench/src/features/platform/catalog-filters.ts","runtime/apps/workbench/src/lib/format.ts","runtime/apps/workbench/src/lib/theme.ts"],"removed":[],"modified":["runtime/apps/workbench/src/app/callback/page.tsx","runtime/apps/workbench/src/app/catalog/page.tsx","runtime/apps/workbench/src/app/globals.css","runtime/apps/workbench/src/app/layout.tsx","runtime/apps/workbench/src/app/login/page.tsx","runtime/apps/workbench/src/app/page.tsx","runtime/apps/workbench/src/app/runtime/page.tsx","runtime/apps/workbench/src/components/app-nav.tsx","runtime/apps/workbench/src/components/state-block.tsx","runtime/apps/workbench/src/components/ui/badge.tsx","runtime/apps/workbench/src/components/ui/card.tsx","runtime/apps/workbench/src/features/auth/api.ts","runtime/apps/workbench/src/features/auth/config.ts","runtime/apps/workbench/src/features/auth/store.ts","runtime/apps/workbench/src/features/platform/hooks.ts","runtime/apps/workbench/src/features/platform/types.ts","runtime/apps/workbench/src/lib/providers.tsx","runtime/apps/workbench/tailwind.config.ts"]},{"id":"ef1f95e091db917900dd98bf11f6385e6b176387","message":"docs(部署): 登记「装载全部模块」——1/7 不是回归,是 :3101 的 profile 只写了 identity\n\n§11.4 与 §18.3 两处记的「已装载 1/7」都是当时的实测,本节不追改,补的是成因,\n而成因只在一条链上:常驻容器 :53001 由 compose 注入七个 profile,一直是 7/7;\n工作台读的那条链末端是裸 dev 进程 :3101,它的 PLATFORM_PROFILES 取自\n.secrets/enterprise-platform-identity-dev.env,值是 PF-07 阶段 identity 单启时的\n出厂值 'identity'。同一块读面,两个运行面给的答案差六个模块。\n\n改动一处且在仓外:该 env 第 28 行扩成七个(原件备份 .bak-20260919-profiles),\n七个 DATABASE_URL_\u003cMODULE\u003e 本来就齐、与容器指同一台 PG(容器内 postgres:5432 =\n本机 127.0.0.1:55470),迁移无须补跑;Redis 逻辑库 dev 用 5、容器用 14,不撞。\n按 .claude/launch.json 停 pid 19008、重起为 39237,:3098 / :3010 未动,\n未重建镜像、13 个 stack 容器一个没动。仓内零改动。\n\n实测(§19.3,作用域 = 本机 dev,证据等级 = 运行态链路):启动日志七模块全装载、\n10 条模块作业句柄注册、RLS enforce 校验通过;/api/platform/modules 直打 :3101 与\n经 :3098 代理均 7 条;浏览器 :3010 总览「已装载 / 已登记模块 7 / 7」。端口提供方\n四项由模块承接,其中 factExport 与 serviceCredential 改前是 fail-closed,\npermission / audit 改前走 local-tenant-scope / local-log 回退。\n\n同节写明三条不得读岔的:credential-shape 与 scope 都是 shape 档形状实现、不是权威实现;\n七个模块只有 identity 有 health 探针;装上 ≠ 有能力 ≠ 环境健康。\n\n§19.4 留下四条:① mode 仍是 local(PLATFORM_PORTS_MODE 未设置、非生产按设计回退),\n与容器的 fail-closed 不同档,要不要一并改未裁;② 两个进程现在连同一批模块库,\n队列虽按 Redis 逻辑库分开、作业也要入队才跑,但从 :3101 入队会写容器在读写的库;\n③ env 文件名 identity-dev 与内容(七模块)已名实不符,只登记;④ 本节证据不绑提交——\n裸进程没有 PLATFORM_SOURCE_SHA,且取证时工作区 dirty(工作台改版 WIP)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/ef1f95e091db917900dd98bf11f6385e6b176387","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-18T18:36:44-07:00","added":[],"removed":[],"modified":["docs/dev部署运行重做记录-2026-09-18.md"]}],"total_commits":0,"head_commit":{"id":"b69710a74604d55a435971103dc033025cbc6e6b","message":"docs(治理): 建宿主协议签收单目录——C-3 附条件的执行面,六份逐域单全部未签收\n\n立项这件事在本体系里已经被裁过:决策批次-2026-09-16 的 C-3(✅ 采纳)把九个契约域的\n运行宿主裁给上层既有宿主,附条件写死「宿主协议……签收才算准入」,Q01 原文还有两句更硬的\n——「签收前不运行」与「不得以『方便实现』自动新增 M8」。裁决当天的执行顺序 §3 第 4 条\n即为「C-3 宿主协议逐域签收 → Catalog 六项去向」,而建本目录之前,全仓「宿主协议」四字\n只出现在三篇设计文档里,零份签收材料:空着的不是立项,是签收。\n\n本次按十三项最小内容(能力ID / 数据Owner / 运行Owner / 库 / 对外契约 / 鉴权 / 备份 /\nSLO / 值班 / 依赖 / 预算 / 升级退出 / 消费者清单)逐域建单,五份对应 C-3 承接表:\nC15 跨域流程、C16 企业 IM、C17 数据分析、C18 统一体验、C19 成本与容量,状态一律「未签收」。\n每份代填的只有本仓可机器核验的字段(规则文件与行数、域测试、失败关闭夹具例数、Catalog\n登记与 blockers、本域特有约束),宿主侧字段一律空缺;本目录不代任何 Owner 签字,\n不改任何 Catalog 字段——Catalog 去向登记是签收之后的动作,须走 CHG。\n\n三处不能读岔的,逐单复写:\n- C19 的宿主按 C-3 是「复用 C17 选定宿主」,C17 未签收前它的宿主栏无从填起;且 C-15 改案\n 把订阅计量与出账并入本域,范围改写材料 CHG-017 待签,签前须先确认适用哪版范围。\n- C18 的宿主是劈成两半的:企业业务 Shell 归数字员工基座(本单要签的那半),平台自身入口\n 由本仓独立工作台承载(CHG-018 修正,不走宿主签收)。工作台已在本机 dev 跑起来,\n 不构成把 enterprise-experience 读成「已有承接」的理由。\n- C15 是六域里唯一带「无合格宿主则另提运行承接裁决」口子的,那是 Q01 给新建运行承接\n (含本仓模块)留的唯一合法入口,走它要附至少两个宿主方案的成本与迁移影响,不是跳过签收。\n\nC01 注册中心单列为「不适用」:C-3 的承接表只覆盖 C11—C19,注册中心是 C01、责任在\nCatalog Owner / 平台工程,权威状态是获批的 Git 内容,没有「托管到某个上层业务应用」这个选项。\nA-2 附条件里「注册中心项已由 CHG-013 / 014 处理」指的是登记面(code_truth 改指、证据归零),\n不是运行承接裁决。它真正卡的是六条 blocker(DEC-009/010/011/012/031/032)的落地面——\n六条都已 approved,所以不是等裁决,是这些裁决在本域还没有对应实现。\n\n一条五份单共同的前置(机器实测 2026-09-18):六个域在 contracts/ 里已登记的 HTTP 契约与\nFact 都是 0——contracts/contracts/ 的 7 份 OpenAPI 全属七模块,facts.json 对六域一条没有。\n按仓纪律 1「模块新增端口 / Fact 必须先登记 contracts/」,登记对外契约必须发生在签收之前,\n否则宿主签的是一份没有接口定义的协议。\n\n同时在 Q01 的「待改产物 / 责任」后补一段「签收面」指向本目录,避免新目录成为孤儿文档。\n门禁:治理层 check-workspace-consistency 重跑,除在案常驻的 L9 COMPOSE_PROJECT_COLLISION\n外无新增问题;七份新文档的相对链接与锚点逐条实测可达。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/b69710a74604d55a435971103dc033025cbc6e6b","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-18T18:46:22-07:00","added":["docs/能力设计/宿主协议/C01-application-contract-registry.md","docs/能力设计/宿主协议/C15-cross-domain-workflow.md","docs/能力设计/宿主协议/C16-collaboration-messaging.md","docs/能力设计/宿主协议/C17-data-analytics.md","docs/能力设计/宿主协议/C18-enterprise-experience.md","docs/能力设计/宿主协议/C19-cost-capacity.md","docs/能力设计/宿主协议/README.md"],"removed":[],"modified":["docs/能力设计/设计问题收口方案.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":22264,"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-19T09:20:11+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"}}...
|
push
|
2
|
30
|
1789782547
|
1789783593
|
0
|
1789782545
|
1789783622
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24216
|
chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 520c chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 520cacc;锚点随批次刷新...
|
76
|
5
|
governance.yml
|
96
|
5
|
0
|
refs/heads/main
|
c015261889aca3b700d1226045d8f66a27c3d431
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"01d0eabfa71ec061d876d39d4f399d2290530a15","after":"c015261889aca3b700d1226045d8f66a27c3d431","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/01d0eabfa71ec061d876d39d4f399d2290530a15...c015261889aca3b700d1226045d8f66a27c3d431","commits":[{"id":"c015261889aca3b700d1226045d8f66a27c3d431","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 520cacc;锚点随批次刷新\n\nB4 三级证据绑定 clean HEAD `520cacc`(worktreeDirty:false):\n\n· runtime 30/30 步、**786 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 786 = 776 + 本批 10 例,与前置预测一致。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate(接口 503 重试后成功)。\n\n**本轮 runtime 的额外含义**:db-credential-separation / tracing / multi-instance /\ndependency-resilience / capacity / write-capacity 六个子门禁**第一次在聚合内跑在非超级用户\n登录上**——此前它们以 production 姿态启动真实入口却连超级用户,RLS 对其不生效。\n`dbCredentialSuperuserStartupRejected: 2` 是两个生产入口在超级用户连接下拒启的机器回执。\n\n本提交按 C241 把锚点指向父提交 520cacc;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/c015261889aca3b700d1226045d8f66a27c3d431","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-18T19:23:25-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},{"id":"520cacc00a6da74c376ff46886b4c61dea393ab3","message":"chore(reports): 静态 28/28 回绑 @ 52665a2;数字前置到本批实测值\n\nown-tests 99 → 100、own-test-cases 779 → 789(+1 文件 / +10 例 RLS 启动姿态判定单测;\nC70 只计 git 已跟踪文件,故必须在实现提交落地后才数得到)。\n\ntests-passing 776 → 786 是**预测值**(776 + 10),由下一轮 runtime 实测证实。\n前三批都验证过这条路子:预测被实测原样证实。\n\n锚点按 C241 指向父提交 52665a2。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/520cacc00a6da74c376ff46886b4c61dea393ab3","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-18T19:10:01-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance.latest.json","reports/product-migrations.latest.json","reports/redis-auth-live.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},{"id":"52665a2f60d48062cfe891dafcd7728379524b34","message":"feat(kernel-repin): B4 RLS 启动期姿态探测——顺带修掉验收基座一直跑在超级用户上\n\n开工实测让 B4 第三次校准范围(先「rls 二选一」→ §2 订正「两模块互补」→「双 URL + 启动探测」)。\n**双 URL 那一半不做**:生产编排早有等价的三登录分离(MIGRATION / tenant API / system dispatcher),\nC55/C56 用真库临时 login + 8 个负例验过。语义已覆盖,只差名字;改名要牵动 C55/C56 全部验收面、\n8 个 runner 与生产编排,换不来任何安全收益。登记进迁移手册 §6 分歧账本。\n\n**真正缺的那一件做了。** rls.ts 文件头一直写着「非超级用户生产连接」,但那只是**运维前提**:\n部署时把 URL 填成超级用户,应用照常启动,FORCE RLS 对超级用户不生效,所有 RLS 断言恒绿。\ncheck:db-credential-separation 验的是**供给对不对**,不是**应用会不会拒绝**。\n现在四个入口(两 API 装配点 + 两 dispatcher)在 enforce 姿态下查两个事实——登录不得\nsuperuser/BYPASSRLS、清单内每张租户表已 FORCE RLS,任一不满足即拒启,错误带\n[RLS_RUNTIME_ROLE_UNSAFE] / [RLS_TABLES_NOT_FORCED]。姿态沿用已有的 RLS_CONTEXT_REQUIRED=1,\n不引入第二个开关。\n\n**它当场揪出的第二件事,比第一件更值钱**:加完探测跑第一个 runner 就红了,红的不是生产,\n是本仓自己的验收基座——七个 runner 都以 NODE_ENV=production 启动真实入口,却把共享验收库的\n**超级用户** URL 递给子进程。\"生产入口能跑\"这条证据一直比它看起来的弱:任何只在普通登录下\n才暴露的权限问题,在这些 runner 里结构上看不见。新增 scripts/lib/acceptance-runtime-login.mjs\n幂等供给非超级用户登录(API 走 tenant、dispatcher 走 system,与生产同构),\n**七个全部在新登录下通过**——没有发现只在超级用户下才活得下来的路径,说明 RLS 桥本身是对的,\n这条证据链只是终于名副其实了。\n\ncheck:redis-auth-live 是唯一需要 tenant+system 双成员资格的(它刻意单进程走完\n写库 → in-process dispatcher → Pub/Sub)。为它单开 combined 登录,并在代码里写明\n**它比生产姿态弱且是刻意的**,不构成\"生产也可以合并\"的先例。\n\n**顺带发现一个早已存在的红,判责 C254**:redis-auth 在新登录下仍红;git stash 回到 HEAD\n01d0eab 用超级用户跑一样红,与 B4 无关。根因是 C253 的第四处遗漏——它同样写死基础频道却跑在\nRedis DB 7 上。C253 修了三处,漏它是因为 check:redis-auth 不在 check:runtime 聚合里、修完\n再没跑过,而基线行从 2026-08-26 起一直标着 GREEN。C234 的 agedAcceptanceReports 当时就报了\n24 天陈旧,但「记录不阻断」——**一条不阻断的记录摆在一行 GREEN 旁边,不构成控制**。已修并转绿。\n\n证据:contracts 10 例判定单测;check:db-credentials 负例 8 → 10(新增两个生产入口在超级用户\n连接下拒启的**活证据**);七个 runner 在非超级用户登录下全绿;check:dual-backend 增 11 条\ntargeted 断言 + 1 个受控断线负探针(负探针 4 → 5);pnpm check 28/28;typecheck 13/13。\ncontracts 升 1.25.0(expand-only),两把锁重签。\n\n过程中一次自己的操作失误,如实记:为了给 redis-auth 的红做归因,我 git stash 了整个工作区,\npop 时因未跟踪文件已存在而失败,而我用 \u003e/dev/null 把报错吞了——正是本仓记过的「别用\ncmd \u003e/dev/null \u0026\u0026 echo 掩盖退出码」。已逐文件比对 stash 内容确认无丢失后才 drop。\n\n本批不做:把 agedAcceptanceReports 从「记录」升级为「阻断」——当前 7 份报告 19–24 天陈旧\n(含需 Docker / Xcode 的),一刀切会把整块板子打红。独立立项。\n\nruntime 整轮与报告回绑在下一提交。锚点按 C241 指向父提交 01d0eab。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/52665a2f60d48062cfe891dafcd7728379524b34","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-18T19:07:42-07:00","added":["apps/api-fastify/src/plugins/rls-startup.ts","apps/api-nestjs/src/prisma/rls-startup.ts","packages/contracts/src/rls-startup.test.ts","scripts/lib/acceptance-runtime-login.mjs"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/dispatcher.ts","apps/api-fastify/src/plugins/prisma.ts","apps/api-nestjs/src/dispatcher.ts","apps/api-nestjs/src/prisma/prisma.service.ts","deploy/production/compose.yml","docs/migration-playbook.md","docs/planning/内核退回pin立项-2026-09-18.md","docs/product-extension-guide.md","kernel.boundaries.json","kernel.boundaries.lock.json","kernel.downstream.lock.json","kernel.exports.lock.json","kernel.packages.json","kernel.packages.lock.json","packages/contracts/package.json","packages/contracts/src/rls.ts","reports/baseline.json","scripts/check-auth-startup.mjs","scripts/check-capacity-envelope.mjs","scripts/check-db-credential-separation.mjs","scripts/check-dependency-resilience.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-multi-instance.mjs","scripts/check-redis-auth-live.mjs","scripts/check-tracing.mjs","scripts/check-write-capacity.mjs","scripts/governance-report.mjs"]}],"total_commits":0,"head_commit":{"id":"c015261889aca3b700d1226045d8f66a27c3d431","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 520cacc;锚点随批次刷新\n\nB4 三级证据绑定 clean HEAD `520cacc`(worktreeDirty:false):\n\n· runtime 30/30 步、**786 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 786 = 776 + 本批 10 例,与前置预测一致。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate(接口 503 重试后成功)。\n\n**本轮 runtime 的额外含义**:db-credential-separation / tracing / multi-instance /\ndependency-resilience / capacity / write-capacity 六个子门禁**第一次在聚合内跑在非超级用户\n登录上**——此前它们以 production 姿态启动真实入口却连超级用户,RLS 对其不生效。\n`dbCredentialSuperuserStartupRejected: 2` 是两个生产入口在超级用户连接下拒启的机器回执。\n\n本提交按 C241 把锚点指向父提交 520cacc;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/c015261889aca3b700d1226045d8f66a27c3d431","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-18T19:23:25-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},"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":91147,"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":1,"watchers_count":1,"branch_count":3,"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-09-19T09:44:05+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"}}...
|
push
|
2
|
36
|
1789784611
|
1789784619
|
0
|
1789784609
|
1789784633
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
24217
|
chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 520c chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 520cacc;锚点随批次刷新...
|
76
|
5
|
platform-governance.yml
|
97
|
5
|
0
|
refs/heads/main
|
c015261889aca3b700d1226045d8f66a27c3d431
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"01d0eabfa71ec061d876d39d4f399d2290530a15","after":"c015261889aca3b700d1226045d8f66a27c3d431","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/01d0eabfa71ec061d876d39d4f399d2290530a15...c015261889aca3b700d1226045d8f66a27c3d431","commits":[{"id":"c015261889aca3b700d1226045d8f66a27c3d431","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 520cacc;锚点随批次刷新\n\nB4 三级证据绑定 clean HEAD `520cacc`(worktreeDirty:false):\n\n· runtime 30/30 步、**786 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 786 = 776 + 本批 10 例,与前置预测一致。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate(接口 503 重试后成功)。\n\n**本轮 runtime 的额外含义**:db-credential-separation / tracing / multi-instance /\ndependency-resilience / capacity / write-capacity 六个子门禁**第一次在聚合内跑在非超级用户\n登录上**——此前它们以 production 姿态启动真实入口却连超级用户,RLS 对其不生效。\n`dbCredentialSuperuserStartupRejected: 2` 是两个生产入口在超级用户连接下拒启的机器回执。\n\n本提交按 C241 把锚点指向父提交 520cacc;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/c015261889aca3b700d1226045d8f66a27c3d431","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-18T19:23:25-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},{"id":"520cacc00a6da74c376ff46886b4c61dea393ab3","message":"chore(reports): 静态 28/28 回绑 @ 52665a2;数字前置到本批实测值\n\nown-tests 99 → 100、own-test-cases 779 → 789(+1 文件 / +10 例 RLS 启动姿态判定单测;\nC70 只计 git 已跟踪文件,故必须在实现提交落地后才数得到)。\n\ntests-passing 776 → 786 是**预测值**(776 + 10),由下一轮 runtime 实测证实。\n前三批都验证过这条路子:预测被实测原样证实。\n\n锚点按 C241 指向父提交 52665a2。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/520cacc00a6da74c376ff46886b4c61dea393ab3","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-18T19:10:01-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance.latest.json","reports/product-migrations.latest.json","reports/redis-auth-live.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},{"id":"52665a2f60d48062cfe891dafcd7728379524b34","message":"feat(kernel-repin): B4 RLS 启动期姿态探测——顺带修掉验收基座一直跑在超级用户上\n\n开工实测让 B4 第三次校准范围(先「rls 二选一」→ §2 订正「两模块互补」→「双 URL + 启动探测」)。\n**双 URL 那一半不做**:生产编排早有等价的三登录分离(MIGRATION / tenant API / system dispatcher),\nC55/C56 用真库临时 login + 8 个负例验过。语义已覆盖,只差名字;改名要牵动 C55/C56 全部验收面、\n8 个 runner 与生产编排,换不来任何安全收益。登记进迁移手册 §6 分歧账本。\n\n**真正缺的那一件做了。** rls.ts 文件头一直写着「非超级用户生产连接」,但那只是**运维前提**:\n部署时把 URL 填成超级用户,应用照常启动,FORCE RLS 对超级用户不生效,所有 RLS 断言恒绿。\ncheck:db-credential-separation 验的是**供给对不对**,不是**应用会不会拒绝**。\n现在四个入口(两 API 装配点 + 两 dispatcher)在 enforce 姿态下查两个事实——登录不得\nsuperuser/BYPASSRLS、清单内每张租户表已 FORCE RLS,任一不满足即拒启,错误带\n[RLS_RUNTIME_ROLE_UNSAFE] / [RLS_TABLES_NOT_FORCED]。姿态沿用已有的 RLS_CONTEXT_REQUIRED=1,\n不引入第二个开关。\n\n**它当场揪出的第二件事,比第一件更值钱**:加完探测跑第一个 runner 就红了,红的不是生产,\n是本仓自己的验收基座——七个 runner 都以 NODE_ENV=production 启动真实入口,却把共享验收库的\n**超级用户** URL 递给子进程。\"生产入口能跑\"这条证据一直比它看起来的弱:任何只在普通登录下\n才暴露的权限问题,在这些 runner 里结构上看不见。新增 scripts/lib/acceptance-runtime-login.mjs\n幂等供给非超级用户登录(API 走 tenant、dispatcher 走 system,与生产同构),\n**七个全部在新登录下通过**——没有发现只在超级用户下才活得下来的路径,说明 RLS 桥本身是对的,\n这条证据链只是终于名副其实了。\n\ncheck:redis-auth-live 是唯一需要 tenant+system 双成员资格的(它刻意单进程走完\n写库 → in-process dispatcher → Pub/Sub)。为它单开 combined 登录,并在代码里写明\n**它比生产姿态弱且是刻意的**,不构成\"生产也可以合并\"的先例。\n\n**顺带发现一个早已存在的红,判责 C254**:redis-auth 在新登录下仍红;git stash 回到 HEAD\n01d0eab 用超级用户跑一样红,与 B4 无关。根因是 C253 的第四处遗漏——它同样写死基础频道却跑在\nRedis DB 7 上。C253 修了三处,漏它是因为 check:redis-auth 不在 check:runtime 聚合里、修完\n再没跑过,而基线行从 2026-08-26 起一直标着 GREEN。C234 的 agedAcceptanceReports 当时就报了\n24 天陈旧,但「记录不阻断」——**一条不阻断的记录摆在一行 GREEN 旁边,不构成控制**。已修并转绿。\n\n证据:contracts 10 例判定单测;check:db-credentials 负例 8 → 10(新增两个生产入口在超级用户\n连接下拒启的**活证据**);七个 runner 在非超级用户登录下全绿;check:dual-backend 增 11 条\ntargeted 断言 + 1 个受控断线负探针(负探针 4 → 5);pnpm check 28/28;typecheck 13/13。\ncontracts 升 1.25.0(expand-only),两把锁重签。\n\n过程中一次自己的操作失误,如实记:为了给 redis-auth 的红做归因,我 git stash 了整个工作区,\npop 时因未跟踪文件已存在而失败,而我用 \u003e/dev/null 把报错吞了——正是本仓记过的「别用\ncmd \u003e/dev/null \u0026\u0026 echo 掩盖退出码」。已逐文件比对 stash 内容确认无丢失后才 drop。\n\n本批不做:把 agedAcceptanceReports 从「记录」升级为「阻断」——当前 7 份报告 19–24 天陈旧\n(含需 Docker / Xcode 的),一刀切会把整块板子打红。独立立项。\n\nruntime 整轮与报告回绑在下一提交。锚点按 C241 指向父提交 01d0eab。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/52665a2f60d48062cfe891dafcd7728379524b34","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-18T19:07:42-07:00","added":["apps/api-fastify/src/plugins/rls-startup.ts","apps/api-nestjs/src/prisma/rls-startup.ts","packages/contracts/src/rls-startup.test.ts","scripts/lib/acceptance-runtime-login.mjs"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/dispatcher.ts","apps/api-fastify/src/plugins/prisma.ts","apps/api-nestjs/src/dispatcher.ts","apps/api-nestjs/src/prisma/prisma.service.ts","deploy/production/compose.yml","docs/migration-playbook.md","docs/planning/内核退回pin立项-2026-09-18.md","docs/product-extension-guide.md","kernel.boundaries.json","kernel.boundaries.lock.json","kernel.downstream.lock.json","kernel.exports.lock.json","kernel.packages.json","kernel.packages.lock.json","packages/contracts/package.json","packages/contracts/src/rls.ts","reports/baseline.json","scripts/check-auth-startup.mjs","scripts/check-capacity-envelope.mjs","scripts/check-db-credential-separation.mjs","scripts/check-dependency-resilience.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-multi-instance.mjs","scripts/check-redis-auth-live.mjs","scripts/check-tracing.mjs","scripts/check-write-capacity.mjs","scripts/governance-report.mjs"]}],"total_commits":0,"head_commit":{"id":"c015261889aca3b700d1226045d8f66a27c3d431","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 520cacc;锚点随批次刷新\n\nB4 三级证据绑定 clean HEAD `520cacc`(worktreeDirty:false):\n\n· runtime 30/30 步、**786 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 786 = 776 + 本批 10 例,与前置预测一致。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate(接口 503 重试后成功)。\n\n**本轮 runtime 的额外含义**:db-credential-separation / tracing / multi-instance /\ndependency-resilience / capacity / write-capacity 六个子门禁**第一次在聚合内跑在非超级用户\n登录上**——此前它们以 production 姿态启动真实入口却连超级用户,RLS 对其不生效。\n`dbCredentialSuperuserStartupRejected: 2` 是两个生产入口在超级用户连接下拒启的机器回执。\n\n本提交按 C241 把锚点指向父提交 520cacc;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/c015261889aca3b700d1226045d8f66a27c3d431","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-18T19:23:25-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},"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":91147,"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":1,"watchers_count":1,"branch_count":3,"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-09-19T09:44:05+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"}}...
|
push
|
2
|
8
|
1789784619
|
1789784628
|
0
|
1789784610
|
1789784633
|
|
|
0
|
Edit
Delete
|
|
24218
|
chore(reports): candidate-contracts 回绑 @ 16459e0 — chore(reports): candidate-contracts 回绑 @ 16459e0 —— 9 条探针零豁免...
|
116
|
5
|
platform.yml
|
174
|
5
|
0
|
refs/heads/main
|
6fbebf5285a9a335410c5f884d81314d0394429c
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"b69710a74604d55a435971103dc033025cbc6e6b","after":"6fbebf5285a9a335410c5f884d81314d0394429c","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/b69710a74604d55a435971103dc033025cbc6e6b...6fbebf5285a9a335410c5f884d81314d0394429c","commits":[{"id":"6fbebf5285a9a335410c5f884d81314d0394429c","message":"chore(reports): candidate-contracts 回绑 @ 16459e0 —— 9 条探针零豁免\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/6fbebf5285a9a335410c5f884d81314d0394429c","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-18T19:55:24-07:00","added":[],"removed":[],"modified":["reports/candidate-contracts.latest.json"]},{"id":"16459e09061655eb29b432aa5a9334b9685cbced","message":"test(contracts): 跨域流程的 plan 补第一条 ACCEPT 用例——最后一条 shape 探针豁免清零\n\ncheck:candidate-contracts 此前带着一条豁免:planWorkflowInstance 取不到 ACCEPT 载荷,\n因为 cross-domain-workflow 的 plan 规则在 28 例夹具里全是反例。查隔壁——\ncollaboration-messaging 的同类规则 P03 是有正例的。所以这不是「夹具只固定失败关闭一侧」\n的设计口径,是这一域缺了一条,而豁免让它看起来像是有意为之。\n\n补 P04-approved-snapshot-plans-an-instance:已批准快照 + 合法请求,载荷直接取自该域单测里\n那条已在跑的 planner 正例(不是新造的场景)。夹具 28 → 29 例(正 4 / 反 25),\ncheck:fixtures 该套件 29/29 失败 0,fixture-coverage 三档仍全为 0。\n\n连带把 C15 契约的探针由 skip 换成真探针(planWorkflowInstance ← plan.request):\n9 条探针全部比对通过、零豁免。门禁单测两处计数同步,并把断言从「豁免恰好是这一条」\n改成「豁免必须为空;再出现必须带理由」——前者会在下次加豁免时静默通过。\n\n数字声明同步:仓根 CLAUDE.md 的 17 套件 706 例 → 707,宿主协议 C15 单与索引底账的夹具数\n同步;check-workspace-consistency CLEAN,L13 无漂移。contracts 测试 416/416。\n\n跑这两道门禁都用 GOV_REPORT_DIR 重定向,仓里在途的 fixtures 报告一个字节未动——\n同日早些时候那条修复第一次真用上。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/16459e09061655eb29b432aa5a9334b9685cbced","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-18T19:55:21-07:00","added":[],"removed":[],"modified":["CLAUDE.md","contracts/SOURCE.md","contracts/candidates/contracts/workflow-orchestration-api.v1.openapi.json","contracts/test/fixtures/cross-domain-workflow.fixtures.json","docs/能力设计/宿主协议/C15-cross-domain-workflow.md","docs/能力设计/宿主协议/README.md","governance/test/check-candidate-contracts.test.mjs"]},{"id":"05497f5a3cad8b4a82d07b81504c06fe6338c972","message":"chore(reports): candidate-contracts 回绑 @ 864231d —— 含 11 个操作 ↔ 参考处理器的双向对账\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/05497f5a3cad8b4a82d07b81504c06fe6338c972","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-18T19:49:18-07:00","added":[],"removed":[],"modified":["reports/candidate-contracts.latest.json"]},{"id":"864231dc64629e58ddd53faf5c38b4f58fdf05f9","message":"feat(contracts): 五份候选契约有了可挂载的参考实现——11 个操作,传输无关、零框架依赖\n\nC-3 把这五个域的运行宿主裁给上层既有宿主、本仓不建模块,所以「完善 HTTP 实现」不能是在\nruntime 里加路由。但「每个宿主各写一遍入参解码与决策映射」必然各写各的:REJECT 被压成 4xx、\nSKIP_DUPLICATE 被当成失败、now 忘了从 ISO 串还原成 Date——每一个都是一次就足以让语义走样。\n把这一段写在 contracts/src/http/,判定与映射同源,宿主实现 = 挂载 + 鉴权 + 持有快照。\n\n本层不做任何入参校验,这是实测后的决定,不是省事。首版写了信封校验(非对象或缺顶层键回 400),\n被夹具 N06-definition-is-not-an-object 当场戳穿——那条用例期望的是 WORKFLOW_DEFINITION_INVALID,\n400 把它盖掉了。随后逐个实测七个规则入口:传非对象 / 空对象 / undefined,一律 REJECT 并带自己的\n原因码,没有一个抛异常。校验层不是多一道保险,是多一套词汇:同一个错两种表达,消费侧必然挑更\n好读的那套,规则的原因码就此架空。五份契约的 400 描述同步改为「宿主的 JSON 解析失败」。\n\n唯一的边界处理是 Date 还原:context.now(体验)与 context.policy.now(成本,嵌深一层)过 HTTP\n是 ISO 串而规则侧是 Date。漏了不会报错,只会让时间判定永远不触发——一条静默放行的路径。\n\n测试拿规则自己的夹具载荷经处理器走一遍:ACCEPT 例仍非 REJECT,REJECT 例 reasons 与夹具逐条一致,\n无快照时 planner 失败关闭仍是 200 REJECT 而非 5xx。contracts 测试 408 → 416/416,\ncheck:generated 无漂移。\n\n门禁加 HANDLER_MISSING / HANDLER_ORPHAN 双向对账。按文本解析 index.ts 而不是 import dist——\n本门禁在 ZERO_DEP_GATES 里,要能在没装依赖的临时检出里重跑,改成 import 就会退化成未构建即\nunavailable,干净回绑随之失效。负向实测:把 assessResourceTags 改名,两条规则各报一次。\n\n未做:catalogs/ 一字未动;本仓不挂路由、不建库、不新增模块,C-3 的「不新增 M8」未被触碰;\n401 / 403 / 503 属宿主责任,不在本层。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/864231dc64629e58ddd53faf5c38b4f58fdf05f9","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-18T19:49:15-07:00","added":["contracts/src/http/collaboration-messaging.ts","contracts/src/http/cost-capacity.ts","contracts/src/http/cross-domain-workflow.ts","contracts/src/http/data-analytics.ts","contracts/src/http/enterprise-experience.ts","contracts/src/http/index.ts","contracts/src/http/result.ts","contracts/test/http-handlers.test.mjs"],"removed":[],"modified":["contracts/SOURCE.md","contracts/candidates/contracts/conversation-message-api.v1.openapi.json","contracts/candidates/contracts/experience-contribution-api.v1.openapi.json","contracts/candidates/contracts/metric-contract-api.v1.openapi.json","contracts/candidates/contracts/usage-record-api.v1.openapi.json","contracts/candidates/contracts/workflow-orchestration-api.v1.openapi.json","contracts/package.json","governance/check-candidate-contracts.mjs","governance/test/check-candidate-contracts.test.mjs"]},{"id":"fb371d6cec3a76db97335f51a352cef8c2d7c7b4","message":"chore(reports): candidate-contracts 回绑 @ fdbefc9 —— 补 rules-entry 后重跑,仍 0 违规\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/fb371d6cec3a76db97335f51a352cef8c2d7c7b4","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-18T19:41:03-07:00","added":[],"removed":[],"modified":["reports/candidate-contracts.latest.json"]}],"total_commits":0,"head_commit":{"id":"6fbebf5285a9a335410c5f884d81314d0394429c","message":"chore(reports): candidate-contracts 回绑 @ 16459e0 —— 9 条探针零豁免\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/6fbebf5285a9a335410c5f884d81314d0394429c","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-18T19:55:24-07:00","added":[],"removed":[],"modified":["reports/candidate-contracts.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":22425,"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-19T09:49:06+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"}}...
|
push
|
2
|
30
|
1789786674
|
1789786714
|
0
|
1789786673
|
1789786757
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24219
|
docs(计划): 登记本会话——C-3 宿主协议签收面首次有落点,并附三处自查出的自造缺陷
|
117
|
5
|
governance.yml
|
76
|
5
|
0
|
refs/heads/main
|
078af5fc66585384df768683780239154d06dc7b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dea10cf1124b0e7714fe60f395709cda0be55fdb","after":"078af5fc66585384df768683780239154d06dc7b","compare_url":"https://gitea.g-hi.com/luoanwu/platform-governance/compare/dea10cf1124b0e7714fe60f395709cda0be55fdb...078af5fc66585384df768683780239154d06dc7b","commits":[{"id":"078af5fc66585384df768683780239154d06dc7b","message":"docs(计划): 登记本会话——C-3 宿主协议签收面首次有落点,并附三处自查出的自造缺陷\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/078af5fc66585384df768683780239154d06dc7b","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-18T19:41:03-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]},{"id":"c777303990ce57b7b331c10c8d135b455238797a","message":"docs(基础): 开发环境.md 重写到 2026-09-18 实测——修掉两条已不成立的声明并补端口盘\n\n原文停在 2026-09-04,两条声明已不成立:\n- 「派生仓现存 3 个」——派生仓状态.json 实为 active 0 / archived 0 / missing 1 / retired 18;\n- 路径 `AI数字员工/digital-employee-os` 不存在,实为 `数字员工OS/digital-employee-os`。\n\n补上原文完全没有的本机端口盘(41 个运行容器 / 6 个栈):enterprise-platform-stack\nPG 55470 / Redis 56379 / runtime 53001 / Caddy 58080,ep-delivery-20260917 PG 55481,\nbase-framework PG 5432 / Redis 6379,hi-atelier,deos-local-verify,deos-acceptance-redis 6404。\n新增 §4 工作区一致性门禁一节(当日 CLEAN,14 仓 / 8346 文件 / 4462 链接 / 22 份 compose)。\n\n§5 已知差异按当日实测重写:\n- deos-local-verify 栈不完整——gateway 的 nginx 找不到上游 api-active(该栈无 api 容器),\n 已连续重启 2946 次,当日 docker stop 停下,容器保留可 start 恢复;根因属 OS 层未查。\n- base-framework-app 容器已不存在,当日随 73 个死容器清理,原文那条「看 3500—3502」作废。\n- 7 个上层应用仓仍无 F14 守卫,compose 身份复发只能靠工作区 L9 兜住。\n\n文内每条命令均当场复核过输出与文中声明一致;旧版两条错误声明与初始化经过移入文末「历史记录」,\n不删除。门禁 check-workspace-consistency.mjs 重写后仍 CLEAN(exit 0 / 0 issues)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/c777303990ce57b7b331c10c8d135b455238797a","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-18T19:17:52-07:00","added":[],"removed":[],"modified":["平台治理/基础/开发环境.md"]},{"id":"c894b8ce4445a7e939a0a8d5022dfb526aa3f1a5","message":"docs(决策): N-11 关闭——七个仓补齐 compose 身份,L9 转 CLEAN,并更正两处前置\n\n选项 ① 已执行:七个仓的 apps/api-nestjs/docker-compose.yml 各补\n`name: ${COMPOSE_PROJECT_NAME:-\u003c本仓 package.json name\u003e}`,各仓本地提交(未推远端)。\ndocker compose config 逐份实测 project 名互不相同、卷已变为 \u003cname\u003e_*;\ncheck-workspace-consistency.mjs 由 ISSUES 转 CLEAN(exit 0 / 0 issues)。\n\n两处更正写进条目:\n- 数量是 7 个仓不是 8 个。09-17 清单里的数字员工OS 此后已自行补上 name:,本轮不在名单内。\n- 本条一直把「共用卷里的数据归谁」列为选 ①/② 的前置,实测**该前置是空的**:\n 本机 260 个卷无任何 api-nestjs_*,project=api-nestjs 零命中,这七份 compose 在本机\n 从未以默认推导名起过;已存在的 juhai-knowledge-cloud / juhai-quotation 两个 project 的\n config_files 指向工作区外的另一棵树,与本条无关。故零数据迁移,且该结论只绑本机。\n\n未随本条关闭:选项 ② 的防复发半边。七个仓仍无 F14 守卫,仓内 pnpm check 在冲突状态下\n依旧会绿,复发只能靠工作区 L9 兜住——另行派活。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/c894b8ce4445a7e939a0a8d5022dfb526aa3f1a5","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-18T19:14:16-07:00","added":[],"removed":[],"modified":["平台治理/doc/decisions/待裁决架构事项.md"]}],"total_commits":0,"head_commit":{"id":"078af5fc66585384df768683780239154d06dc7b","message":"docs(计划): 登记本会话——C-3 宿主协议签收面首次有落点,并附三处自查出的自造缺陷\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/078af5fc66585384df768683780239154d06dc7b","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-18T19:41:03-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]},"repository":{"id":117,"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":"platform-governance","full_name":"luoanwu/platform-governance","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":11102,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance/languages","html_url":"https://gitea.g-hi.com/luoanwu/platform-governance","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/platform-governance.git","clone_url":"https://gitea.g-hi.com/luoanwu/platform-governance.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":3,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-15T11:53:24+08:00","updated_at":"2026-09-19T08:48:56+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"}}...
|
push
|
1
|
4
|
1789786714
|
1789786730
|
0
|
1789786684
|
1789786730
|
|
|
0
|
Edit
Delete
|
|
24220
|
chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 43e3 chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 43e3fe5;锚点随批次刷新...
|
76
|
5
|
governance.yml
|
98
|
5
|
0
|
refs/heads/main
|
8419453dedda057cca061637c499e06b345c8db8
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"c015261889aca3b700d1226045d8f66a27c3d431","after":"8419453dedda057cca061637c499e06b345c8db8","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/c015261889aca3b700d1226045d8f66a27c3d431...8419453dedda057cca061637c499e06b345c8db8","commits":[{"id":"8419453dedda057cca061637c499e06b345c8db8","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 43e3fe5;锚点随批次刷新\n\n· runtime 30/30 步、786 tests / 0 failures、行为矩阵 204/204,clean HEAD `43e3fe5`。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\n本批只动了两个门禁脚本(check-access-audit 的 envsubst 白名单、check-operations 的 O4\n派生断言),runtime 路径未变,本可不重跑。**仍然重跑了**:这一批讲的就是「陈旧证据不算数」,\n给自己开例外会让整批话失去分量——runtime 证据现在绑在本批 HEAD 上,不是上一批的。\n\n本提交按 C241 把锚点指向父提交 43e3fe5。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/8419453dedda057cca061637c499e06b345c8db8","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-18T20:03:50-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},{"id":"43e3fe53b3cef4f9941b75a4cc2a132349a37505","message":"fix(gates): C255 access-audit 网关三周起不来 + 陈旧报告全面复验;O4 改为从模板派生\n\nC254 说「聚合外的 runner 会静默腐化」,那就把这句话查实:基线上还有 9 份报告 19–26 天陈旧\n且都标着 GREEN。能本机复验的七份全部重跑,结果分两类——\n\n**一类是本机缺前提,不是回归**:\n· trace-backend 依次缺 grafana/tempo:3.0.3、prom/prometheus:v3.14.0,runner fail-closed 拒跑,\n 行为正确。拉回后实跑通过(Collector→Tempo 入库、双重启持久、告警 3/3)。\n 顺带订正 CLAUDE.md 里 C243 的说法:「本机 Docker 走离线代理,基础镜像拉取一律超时」当日\n 已不成立,pull 正常。\n· 五个 check:*-image runner(postgres / alertmanager / loki / tempo / otel-collector)全绿。\n\n**一类是真回归,判责 C255**:\nC230 给网关模板加了 set_real_ip_from ${REAL_IP_TRUSTED_CIDR},同步了模板 / compose /\n.env.example / O4 断言四处,**唯独漏了 check-access-audit.mjs 自己硬编码的那份\nNGINX_ENVSUBST_FILTER**。变量不被替换,nginx 以\n`host not found in set_real_ip_from \"${REAL_IP_TRUSTED_CIDR}\"` 启动失败——\n该专项自 2026-08-29 起红了三周,而基线行按 08-26 的绿盘一直标着 GREEN。\n讽刺的是 O4 恰有一条「envsubst filter must allow the real_ip trust variable」:\n**它只查 compose,没查自己的测试夹具**。\n\n修法的重点不在补那一个变量,而在别让下一个变量再漏:O4 该断言改为**从模板派生**——\n模板里出现的每个 ${VAR} 必须同时出现在 compose 与 runner 两份白名单里,漏一个即红。\n负向已验证:摘掉变量精确报 `[O4] ... missing template variables: REAL_IP_TRUSTED_CIDR`。\n\n**今天两个 C 号(C254 / C255)是同一个结构**:功能落地时打断了聚合外的 runner,\n而它不再运行,所以没人知道。`agedAcceptanceReports` 每次都如实报了陈旧,\n但「记录不阻断」——一条不阻断的记录摆在一行 GREEN 旁边不构成控制。\n把它升级为阻断仍是独立立项(当前仍有 mobile-android / mobile-ios /\nimage-vulnerabilities 三项本机不可复验)。\n\n证据:trace-backend、access-audit、五个镜像 runner 七份报告全部回绑当日并 status=passed;\nCLAUDE.md 三处新鲜度日期随报告 generatedAt 同步(C132 会持续盯);pnpm check 28/28。\n\n锚点按 C241 指向父提交 c015261。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/43e3fe53b3cef4f9941b75a4cc2a132349a37505","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-18T19:51:02-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/access-audit.latest.json","reports/agent-adapters.latest.json","reports/alertmanager-image.latest.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/loki-image.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/otel-collector-image.latest.json","reports/platform-dependency-provenance.latest.json","reports/postgres-image.latest.json","reports/product-acceptance.latest.json","reports/product-migrations.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tempo-image.latest.json","reports/trace-backend.latest.json","reports/validation-source.latest.json","scripts/check-access-audit.mjs","scripts/check-operations.mjs"]}],"total_commits":0,"head_commit":{"id":"8419453dedda057cca061637c499e06b345c8db8","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 43e3fe5;锚点随批次刷新\n\n· runtime 30/30 步、786 tests / 0 failures、行为矩阵 204/204,clean HEAD `43e3fe5`。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\n本批只动了两个门禁脚本(check-access-audit 的 envsubst 白名单、check-operations 的 O4\n派生断言),runtime 路径未变,本可不重跑。**仍然重跑了**:这一批讲的就是「陈旧证据不算数」,\n给自己开例外会让整批话失去分量——runtime 证据现在绑在本批 HEAD 上,不是上一批的。\n\n本提交按 C241 把锚点指向父提交 43e3fe5。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/8419453dedda057cca061637c499e06b345c8db8","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-18T20:03:50-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},"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":91576,"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":1,"watchers_count":1,"branch_count":3,"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-09-19T10:23:30+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"}}...
|
push
|
2
|
36
|
1789787034
|
1789787043
|
0
|
1789787034
|
1789787057
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
24221
|
chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 43e3 chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 43e3fe5;锚点随批次刷新...
|
76
|
5
|
platform-governance.yml
|
99
|
5
|
0
|
refs/heads/main
|
8419453dedda057cca061637c499e06b345c8db8
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"c015261889aca3b700d1226045d8f66a27c3d431","after":"8419453dedda057cca061637c499e06b345c8db8","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/c015261889aca3b700d1226045d8f66a27c3d431...8419453dedda057cca061637c499e06b345c8db8","commits":[{"id":"8419453dedda057cca061637c499e06b345c8db8","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 43e3fe5;锚点随批次刷新\n\n· runtime 30/30 步、786 tests / 0 failures、行为矩阵 204/204,clean HEAD `43e3fe5`。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\n本批只动了两个门禁脚本(check-access-audit 的 envsubst 白名单、check-operations 的 O4\n派生断言),runtime 路径未变,本可不重跑。**仍然重跑了**:这一批讲的就是「陈旧证据不算数」,\n给自己开例外会让整批话失去分量——runtime 证据现在绑在本批 HEAD 上,不是上一批的。\n\n本提交按 C241 把锚点指向父提交 43e3fe5。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/8419453dedda057cca061637c499e06b345c8db8","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-18T20:03:50-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},{"id":"43e3fe53b3cef4f9941b75a4cc2a132349a37505","message":"fix(gates): C255 access-audit 网关三周起不来 + 陈旧报告全面复验;O4 改为从模板派生\n\nC254 说「聚合外的 runner 会静默腐化」,那就把这句话查实:基线上还有 9 份报告 19–26 天陈旧\n且都标着 GREEN。能本机复验的七份全部重跑,结果分两类——\n\n**一类是本机缺前提,不是回归**:\n· trace-backend 依次缺 grafana/tempo:3.0.3、prom/prometheus:v3.14.0,runner fail-closed 拒跑,\n 行为正确。拉回后实跑通过(Collector→Tempo 入库、双重启持久、告警 3/3)。\n 顺带订正 CLAUDE.md 里 C243 的说法:「本机 Docker 走离线代理,基础镜像拉取一律超时」当日\n 已不成立,pull 正常。\n· 五个 check:*-image runner(postgres / alertmanager / loki / tempo / otel-collector)全绿。\n\n**一类是真回归,判责 C255**:\nC230 给网关模板加了 set_real_ip_from ${REAL_IP_TRUSTED_CIDR},同步了模板 / compose /\n.env.example / O4 断言四处,**唯独漏了 check-access-audit.mjs 自己硬编码的那份\nNGINX_ENVSUBST_FILTER**。变量不被替换,nginx 以\n`host not found in set_real_ip_from \"${REAL_IP_TRUSTED_CIDR}\"` 启动失败——\n该专项自 2026-08-29 起红了三周,而基线行按 08-26 的绿盘一直标着 GREEN。\n讽刺的是 O4 恰有一条「envsubst filter must allow the real_ip trust variable」:\n**它只查 compose,没查自己的测试夹具**。\n\n修法的重点不在补那一个变量,而在别让下一个变量再漏:O4 该断言改为**从模板派生**——\n模板里出现的每个 ${VAR} 必须同时出现在 compose 与 runner 两份白名单里,漏一个即红。\n负向已验证:摘掉变量精确报 `[O4] ... missing template variables: REAL_IP_TRUSTED_CIDR`。\n\n**今天两个 C 号(C254 / C255)是同一个结构**:功能落地时打断了聚合外的 runner,\n而它不再运行,所以没人知道。`agedAcceptanceReports` 每次都如实报了陈旧,\n但「记录不阻断」——一条不阻断的记录摆在一行 GREEN 旁边不构成控制。\n把它升级为阻断仍是独立立项(当前仍有 mobile-android / mobile-ios /\nimage-vulnerabilities 三项本机不可复验)。\n\n证据:trace-backend、access-audit、五个镜像 runner 七份报告全部回绑当日并 status=passed;\nCLAUDE.md 三处新鲜度日期随报告 generatedAt 同步(C132 会持续盯);pnpm check 28/28。\n\n锚点按 C241 指向父提交 c015261。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/43e3fe53b3cef4f9941b75a4cc2a132349a37505","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-18T19:51:02-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/access-audit.latest.json","reports/agent-adapters.latest.json","reports/alertmanager-image.latest.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/loki-image.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/otel-collector-image.latest.json","reports/platform-dependency-provenance.latest.json","reports/postgres-image.latest.json","reports/product-acceptance.latest.json","reports/product-migrations.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tempo-image.latest.json","reports/trace-backend.latest.json","reports/validation-source.latest.json","scripts/check-access-audit.mjs","scripts/check-operations.mjs"]}],"total_commits":0,"head_commit":{"id":"8419453dedda057cca061637c499e06b345c8db8","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 43e3fe5;锚点随批次刷新\n\n· runtime 30/30 步、786 tests / 0 failures、行为矩阵 204/204,clean HEAD `43e3fe5`。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\n本批只动了两个门禁脚本(check-access-audit 的 envsubst 白名单、check-operations 的 O4\n派生断言),runtime 路径未变,本可不重跑。**仍然重跑了**:这一批讲的就是「陈旧证据不算数」,\n给自己开例外会让整批话失去分量——runtime 证据现在绑在本批 HEAD 上,不是上一批的。\n\n本提交按 C241 把锚点指向父提交 43e3fe5。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/8419453dedda057cca061637c499e06b345c8db8","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-18T20:03:50-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},"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":91576,"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":1,"watchers_count":1,"branch_count":3,"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-09-19T10:23:30+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"}}...
|
push
|
2
|
8
|
1789787043
|
1789787052
|
0
|
1789787034
|
1789787057
|
|
|
0
|
Edit
Delete
|
|
24222
|
chore(reports): runtime 30/30 + 静态 28/28 回绑 @ dd2d chore(reports): runtime 30/30 + 静态 28/28 回绑 @ dd2dab5;锚点随批次刷新...
|
76
|
5
|
governance.yml
|
100
|
5
|
0
|
refs/heads/main
|
14983b57ae2ab9c0e424700ca11c3f4677984400
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8419453dedda057cca061637c499e06b345c8db8","after":"14983b57ae2ab9c0e424700ca11c3f4677984400","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/8419453dedda057cca061637c499e06b345c8db8...14983b57ae2ab9c0e424700ca11c3f4677984400","commits":[{"id":"14983b57ae2ab9c0e424700ca11c3f4677984400","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ dd2dab5;锚点随批次刷新\n\n· runtime 30/30 步、786 tests / 0 failures、行为矩阵 204/204,clean HEAD `dd2dab5`。\n· 静态 28/28(含 C256 的时效判定与门禁内自检 9/9)。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\nC256 上线后第一份 governance 报告:staleAcceptanceFreshnessViolations=0,\n两条陈旧源(mobile-android / mobile-ios)都落在已登记且未过期的豁免里——\n**它们仍然是陈旧的,只是不再沉默**:到 2026-12-19 若未解除,门禁会自己红。\n\n本提交按 C241 把锚点指向父提交 dd2dab5。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/14983b57ae2ab9c0e424700ca11c3f4677984400","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-18T20:31:52-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},{"id":"dd2dab5799d061d69b7158585f1b38cd58a31833","message":"feat(gates): C256 验收时效由「记录」升级为「陈旧即红,除非登记」\n\nC254(redis-auth 红 24 天)与 C255(access-audit 红 3 周)同日连出,形态一模一样:\n功能落地时打断了聚合外的 runner,它不再运行,所以没人知道。\n\n关键不在检测失灵——**两次 C234 的 agedAcceptanceReports 都如实报了陈旧,两次都没人动**。\n问题是它「记录不阻断」:一条不阻断的记录摆在一行 GREEN 旁边,不构成控制。\n\nC234 当初不阻断的理由写在注释里且成立——「强制会把离线 check 变成环境人质」。\n所以这次不是在阻断与不阻断之间二选一,而是把「为什么可以不跑」从沉默变成**登记**:\n\n· 超 14 天即红;\n· 出口是五字段登记(reason / registeredAt / expiresAt / blockedBy / replacementPlan),\n 与 platform-dependency-deviations、framework-criteria 的 missing 登记同口径——\n 半份不算、过期即红、expiresAt 非法即红、**策略文件缺失也红**(缺策略不等于没有时效要求);\n· 豁免会过期,逼人重新面对,而不是永久沉默;\n· 已不陈旧却仍挂着的豁免显形但不阻断(它自己会过期),防豁免只增不减。\n\n当前 2 条登记,都是诚实的环境限制而非拖延:\n mobileAndroidAcceptance —— 缺 JDK/SDK/device,runner 本身 fail-closed 无假绿风险;\n mobileIosAcceptance —— 缺 Xcode 26,现有报告只是无 Xcode 下的 fail-closed 自测,\n 不是 native 证据(G19 早已如实标注)。\n两条均至 2026-12-19,replacementPlan 写明各自的解除条件。\n\n**判定器自检在门禁内自跑**(9 条判据、5 条负向),不是只挂一个人工命令——\n只挂人工命令,它自己就会变成下一个 C254。这批修的就是这个病,不能自己再犯一次。\n\n活证据:摘掉 mobile-ios 豁免 → 精确报「已 24 天未重跑(上限 14 天)且无时效豁免登记」,\nmetric 由 0 变 1;恢复即绿。\n\n棘轮新增三项:staleAcceptanceFreshnessViolations(floor 0)、\nacceptanceFreshnessSelfTestCases(floor 9)、acceptanceFreshnessSelfTestNegatives(floor 5)。\n静态轴仍是 28 步——判定挂在 check:governance 内,没有新增步骤。\n\n证据:pnpm check 28/28;自检 9/9。锚点按 C241 指向父提交 8419453。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/dd2dab5799d061d69b7158585f1b38cd58a31833","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-18T20:19:11-07:00","added":["governance/acceptance-freshness.json","scripts/check-acceptance-freshness.mjs","scripts/lib/acceptance-freshness.mjs"],"removed":[],"modified":["CLAUDE.md","package.json","reports/agent-adapters.latest.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance.latest.json","reports/product-migrations.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json","scripts/governance-report.mjs"]}],"total_commits":0,"head_commit":{"id":"14983b57ae2ab9c0e424700ca11c3f4677984400","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ dd2dab5;锚点随批次刷新\n\n· runtime 30/30 步、786 tests / 0 failures、行为矩阵 204/204,clean HEAD `dd2dab5`。\n· 静态 28/28(含 C256 的时效判定与门禁内自检 9/9)。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\nC256 上线后第一份 governance 报告:staleAcceptanceFreshnessViolations=0,\n两条陈旧源(mobile-android / mobile-ios)都落在已登记且未过期的豁免里——\n**它们仍然是陈旧的,只是不再沉默**:到 2026-12-19 若未解除,门禁会自己红。\n\n本提交按 C241 把锚点指向父提交 dd2dab5。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/14983b57ae2ab9c0e424700ca11c3f4677984400","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-18T20:31:52-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},"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":91996,"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":1,"watchers_count":1,"branch_count":3,"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-09-19T11:03:54+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"}}...
|
push
|
2
|
36
|
1789788717
|
1789788726
|
0
|
1789788715
|
1789788849
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
24223
|
chore(reports): runtime 30/30 + 静态 28/28 回绑 @ dd2d chore(reports): runtime 30/30 + 静态 28/28 回绑 @ dd2dab5;锚点随批次刷新...
|
76
|
5
|
platform-governance.yml
|
101
|
5
|
0
|
refs/heads/main
|
14983b57ae2ab9c0e424700ca11c3f4677984400
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8419453dedda057cca061637c499e06b345c8db8","after":"14983b57ae2ab9c0e424700ca11c3f4677984400","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/8419453dedda057cca061637c499e06b345c8db8...14983b57ae2ab9c0e424700ca11c3f4677984400","commits":[{"id":"14983b57ae2ab9c0e424700ca11c3f4677984400","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ dd2dab5;锚点随批次刷新\n\n· runtime 30/30 步、786 tests / 0 failures、行为矩阵 204/204,clean HEAD `dd2dab5`。\n· 静态 28/28(含 C256 的时效判定与门禁内自检 9/9)。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\nC256 上线后第一份 governance 报告:staleAcceptanceFreshnessViolations=0,\n两条陈旧源(mobile-android / mobile-ios)都落在已登记且未过期的豁免里——\n**它们仍然是陈旧的,只是不再沉默**:到 2026-12-19 若未解除,门禁会自己红。\n\n本提交按 C241 把锚点指向父提交 dd2dab5。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/14983b57ae2ab9c0e424700ca11c3f4677984400","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-18T20:31:52-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},{"id":"dd2dab5799d061d69b7158585f1b38cd58a31833","message":"feat(gates): C256 验收时效由「记录」升级为「陈旧即红,除非登记」\n\nC254(redis-auth 红 24 天)与 C255(access-audit 红 3 周)同日连出,形态一模一样:\n功能落地时打断了聚合外的 runner,它不再运行,所以没人知道。\n\n关键不在检测失灵——**两次 C234 的 agedAcceptanceReports 都如实报了陈旧,两次都没人动**。\n问题是它「记录不阻断」:一条不阻断的记录摆在一行 GREEN 旁边,不构成控制。\n\nC234 当初不阻断的理由写在注释里且成立——「强制会把离线 check 变成环境人质」。\n所以这次不是在阻断与不阻断之间二选一,而是把「为什么可以不跑」从沉默变成**登记**:\n\n· 超 14 天即红;\n· 出口是五字段登记(reason / registeredAt / expiresAt / blockedBy / replacementPlan),\n 与 platform-dependency-deviations、framework-criteria 的 missing 登记同口径——\n 半份不算、过期即红、expiresAt 非法即红、**策略文件缺失也红**(缺策略不等于没有时效要求);\n· 豁免会过期,逼人重新面对,而不是永久沉默;\n· 已不陈旧却仍挂着的豁免显形但不阻断(它自己会过期),防豁免只增不减。\n\n当前 2 条登记,都是诚实的环境限制而非拖延:\n mobileAndroidAcceptance —— 缺 JDK/SDK/device,runner 本身 fail-closed 无假绿风险;\n mobileIosAcceptance —— 缺 Xcode 26,现有报告只是无 Xcode 下的 fail-closed 自测,\n 不是 native 证据(G19 早已如实标注)。\n两条均至 2026-12-19,replacementPlan 写明各自的解除条件。\n\n**判定器自检在门禁内自跑**(9 条判据、5 条负向),不是只挂一个人工命令——\n只挂人工命令,它自己就会变成下一个 C254。这批修的就是这个病,不能自己再犯一次。\n\n活证据:摘掉 mobile-ios 豁免 → 精确报「已 24 天未重跑(上限 14 天)且无时效豁免登记」,\nmetric 由 0 变 1;恢复即绿。\n\n棘轮新增三项:staleAcceptanceFreshnessViolations(floor 0)、\nacceptanceFreshnessSelfTestCases(floor 9)、acceptanceFreshnessSelfTestNegatives(floor 5)。\n静态轴仍是 28 步——判定挂在 check:governance 内,没有新增步骤。\n\n证据:pnpm check 28/28;自检 9/9。锚点按 C241 指向父提交 8419453。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/dd2dab5799d061d69b7158585f1b38cd58a31833","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-18T20:19:11-07:00","added":["governance/acceptance-freshness.json","scripts/check-acceptance-freshness.mjs","scripts/lib/acceptance-freshness.mjs"],"removed":[],"modified":["CLAUDE.md","package.json","reports/agent-adapters.latest.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance.latest.json","reports/product-migrations.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json","scripts/governance-report.mjs"]}],"total_commits":0,"head_commit":{"id":"14983b57ae2ab9c0e424700ca11c3f4677984400","message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ dd2dab5;锚点随批次刷新\n\n· runtime 30/30 步、786 tests / 0 failures、行为矩阵 204/204,clean HEAD `dd2dab5`。\n· 静态 28/28(含 C256 的时效判定与门禁内自检 9/9)。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\nC256 上线后第一份 governance 报告:staleAcceptanceFreshnessViolations=0,\n两条陈旧源(mobile-android / mobile-ios)都落在已登记且未过期的豁免里——\n**它们仍然是陈旧的,只是不再沉默**:到 2026-12-19 若未解除,门禁会自己红。\n\n本提交按 C241 把锚点指向父提交 dd2dab5。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/14983b57ae2ab9c0e424700ca11c3f4677984400","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-18T20:31:52-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/contract-consumers.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.latest.json","reports/dual-backend-parity.latest.json","reports/fixtures.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/kernel-admission.latest.json","reports/kernel-boundaries.latest.json","reports/kernel-downstream.latest.json","reports/kernel-extensions.latest.json","reports/kernel-packages.latest.json","reports/list-bounds.latest.json","reports/llm-eval.latest.json","reports/migrations.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/naming.latest.json","reports/operations.latest.json","reports/platform-dependency-provenance.latest.json","reports/product-acceptance-runtime.latest.json","reports/product-acceptance.latest.json","reports/product-extension-runtime.latest.json","reports/product-migrations-runtime.latest.json","reports/product-migrations.latest.json","reports/product-sql-runtime.latest.json","reports/report-transaction-lock.latest.json","reports/rls.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/tracing.latest.json","reports/validation-source.latest.json","reports/write-capacity.latest.json"]},"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":91996,"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":1,"watchers_count":1,"branch_count":3,"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-09-19T11:03:54+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"}}...
|
push
|
2
|
8
|
1789788726
|
1789788735
|
0
|
1789788716
|
1789788850
|
|
|
0
|
Edit
Delete
|
|
24224
|
chore(reports): evidence-freshness 回绑 —— 45 份已登记 / chore(reports): evidence-freshness 回绑 —— 45 份已登记 / 40 份新鲜 / 5 份过期 / 0 error...
|
116
|
5
|
platform.yml
|
175
|
5
|
0
|
refs/heads/main
|
928345d27ed7ade91e7257238a55e64e9f9c6fad
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"6fbebf5285a9a335410c5f884d81314d0394429c","after":"928345d27ed7ade91e7257238a55e64e9f9c6fad","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/6fbebf5285a9a335410c5f884d81314d0394429c...928345d27ed7ade91e7257238a55e64e9f9c6fad","commits":[{"id":"928345d27ed7ade91e7257238a55e64e9f9c6fad","message":"chore(reports): evidence-freshness 回绑 —— 45 份已登记 / 40 份新鲜 / 5 份过期 / 0 error\n\n余下 5 条告警都要真实底座或镜像:sbom、runtime-acceptance、ui-acceptance、\nmainline-acceptance、deployed-runtime。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/928345d27ed7ade91e7257238a55e64e9f9c6fad","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-18T23:02:49-07:00","added":[],"removed":[],"modified":["reports/evidence-freshness.latest.json"]},{"id":"be810fc355f9fdb4949343677ce6769bb61d7459","message":"chore(reports): port-conformance 与 release-manifest 回绑 @ 2e06b92 —— 过期告警 7 → 5\n\n- port-conformance:3 个套件 passed(此前绑 e3b9d12,作用域内已 19 个文件变更)。\n- release-manifest:status 仍非 complete,缺项 6 条且逐条有出口——4 个客户端包未建(CL-1…7)、\n images.runtime.digest(镜像绑 b90d7a1 ≠ 当前 HEAD,须重建)、registryDigest(只有本机构建\n 证据)、images.stack.* 1 个镜像未按 digest 锁定(PF-05 / PF-23)、sbom、signature。\n 结论与此前一致,变的是绑定与「镜像落后几个提交」这一项的实测值。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/be810fc355f9fdb4949343677ce6769bb61d7459","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-18T23:02:47-07:00","added":[],"removed":[],"modified":["reports/port-conformance.latest.json","reports/release-manifest.latest.json"]},{"id":"2e06b9267b4aaa1ebfbd1e1329f61d2c717c587e","message":"chore(reports): runtime 静态门禁 18 份回绑 @ 808740f —— 过期告警 13 → 7\n\n跑一次 `pnpm --dir runtime check`(EXIT 0,链上 17 条判词全绿)后,runtime/reports 下\n18 份报告全部重写并绑 808740f / dirty=false。其中 7 份此前是 check:evidence 的\nEVIDENCE_STALE 告警:agent-adapters、docs-truth、dual-backend-parity、fork-readiness、\ngovernance-docs、naming、runtime-governance。\n\ncheck:evidence:45 份已登记 / 38 份新鲜 / 7 份过期 / 0 error。余下 7 条告警都要真实底座、\n容器或镜像才能重跑,不在本批范围:release-manifest、sbom、port-conformance、\nruntime-acceptance、ui-acceptance、mainline-acceptance、deployed-runtime。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/2e06b9267b4aaa1ebfbd1e1329f61d2c717c587e","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-18T23:01:20-07:00","added":[],"removed":[],"modified":["runtime/reports/agent-adapters.latest.json","runtime/reports/conformance-matrix.latest.json","runtime/reports/contract-consumers.latest.json","runtime/reports/docs-truth.latest.json","runtime/reports/dual-backend-parity.latest.json","runtime/reports/fork-readiness.latest.json","runtime/reports/governance-docs.latest.json","runtime/reports/governance-rules.latest.json","runtime/reports/governance-status.latest.json","runtime/reports/governance.latest.json","runtime/reports/migrations.latest.json","runtime/reports/naming.latest.json","runtime/reports/permission-catalog.latest.json","runtime/reports/platform-ops-definitions.latest.json","runtime/reports/runtime-governance.latest.json","runtime/reports/schema-sync.latest.json","runtime/reports/statemachine-write-guard.latest.json","runtime/reports/validation-source.latest.json"]},{"id":"808740f25add20c3e449cfde913d31ab6715a297","message":"chore(reports): evidence-freshness 回绑 @ d7c1e0a —— error 清零(5 → 0),余 13 条 warning\n\nA7 出口达成:check:evidence 退出 0、status=partial、error 0 条(45 份已登记 / 32 份新鲜 /\n13 份过期 / 0 份输入未提交 / 0 份无有效绑定 / 0 份例外)。\n\n余下 13 条一律 warning,且都要真实底座或容器才能重跑,不在本批范围:\nruntime-acceptance / ui-acceptance / mainline-acceptance / naming / fork-readiness /\ndual-backend-parity / governance-docs / docs-truth / agent-adapters / port-conformance /\ndeployed-runtime 等。它们是「结论可能已被后续提交推翻」,不是「结论造假」——引用前须重跑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/808740f25add20c3e449cfde913d31ab6715a297","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-18T22:57:41-07:00","added":[],"removed":[],"modified":["reports/evidence-freshness.latest.json"]},{"id":"d7c1e0a589f538b720c6fdfda14bbc7bff241c79","message":"chore(reports): 夹具两份从脏绑改为干净回绑 @ 408d344\n\n两份此前绑在脏树 6fbebf5 上却被提交,check:evidence 因此判 EVIDENCE_BOUND_DIRTY\n(severity=error)。在干净树重跑(需构建产物,不在 reports:rebind 的范围内,\n故直接在主工作区跑):\n\n- check:fixtures 17 套件 702 例 0 失败 0 不可用,与脏绑那次逐项一致;\n- check:fixture-coverage 15 个套件、未接线 0 处、都没有 0 条。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/d7c1e0a589f538b720c6fdfda14bbc7bff241c79","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-18T22:57:15-07:00","added":[],"removed":[],"modified":["reports/fixture-coverage.latest.json","reports/fixtures.latest.json"]}],"total_commits":0,"head_commit":{"id":"928345d27ed7ade91e7257238a55e64e9f9c6fad","message":"chore(reports): evidence-freshness 回绑 —— 45 份已登记 / 40 份新鲜 / 5 份过期 / 0 error\n\n余下 5 条告警都要真实底座或镜像:sbom、runtime-acceptance、ui-acceptance、\nmainline-acceptance、deployed-runtime。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/928345d27ed7ade91e7257238a55e64e9f9c6fad","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-18T23:02:49-07:00","added":[],"removed":[],"modified":["reports/evidence-freshness.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":22934,"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-19T10:57:54+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"}}...
|
push
|
2
|
30
|
1789798036
|
1789798135
|
0
|
1789798036
|
1789798206
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24225
|
docs(决策): CHG-020 材料成稿 + 采纳形态对照 §5.6 收口 G-10 @ 0ec docs(决策): CHG-020 材料成稿 + 采纳形态对照 §5.6 收口 G-10 @ 0ec2442...
|
117
|
5
|
governance.yml
|
77
|
5
|
0
|
refs/heads/main
|
ea1054cc672f778229bd51b5c4327884a98b9236
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"078af5fc66585384df768683780239154d06dc7b","after":"ea1054cc672f778229bd51b5c4327884a98b9236","compare_url":"https://gitea.g-hi.com/luoanwu/platform-governance/compare/078af5fc66585384df768683780239154d06dc7b...ea1054cc672f778229bd51b5c4327884a98b9236","commits":[{"id":"ea1054cc672f778229bd51b5c4327884a98b9236","message":"docs(决策): CHG-020 材料成稿 + 采纳形态对照 §5.6 收口 G-10 @ 0ec2442\n\n- 采纳形态覆盖度对照增 §5.6:「采纳的组件自身不在被观测面内」此前在 G-1…G-9 的对照表里\n 没有位置——那张表问的是原规则的判定有没有被承接,没问承接方自己看得见吗。Collector\n 是被观测的(Prometheus 回抓 :8888 + 三条告警),Caddy 完全在外面。trace / metrics /\n logs 三面同日关闭,实现与实测在真源仓 0ec2442 / 72df024。\n- 开发计划:候选 OpenAPI 6 → 11 份(2026-09-18 增五份宿主契约)、CHG-020 进「材料已成\n 待签署」行、新增 G-16 行(契约登记面的门禁覆盖)、裁决队列 ③ a 项加 CHG-020 并注明\n 签署前先答其 §0 的方向题(偏差 #39)。\n- CHG-020 材料五份:四份宿主契约由候选转正式登记,含门禁扩面(check:candidate-contracts\n 扫两目录 + 反向规则 REGISTERED_STILL_PENDING)。本包未改动任何文件,§0 挂着一处\n blocked_by 方向循环待 Catalog Owner 定口径:签收单侧写「先登记后签收」,五份候选的\n x-enterprise-blocked-by 写的是「先签收后登记」。\n\n一致性门禁 CLEAN(本次提交前实测)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/ea1054cc672f778229bd51b5c4327884a98b9236","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-18T22:55:09-07:00","added":["平台治理/doc/decisions/CHG-020-材料/README.md","平台治理/doc/decisions/CHG-020-材料/code.delta.json","平台治理/doc/decisions/CHG-020-材料/contracts.delta.json","平台治理/doc/decisions/CHG-020-材料/platform-projects.delta.json","平台治理/doc/decisions/CHG-020-材料/tests.delta.json"],"removed":[],"modified":["平台治理/基础设施文档/docs/采纳形态覆盖度对照-2026-09-14.md","平台治理/基础设施文档/开发计划.md"]}],"total_commits":0,"head_commit":{"id":"ea1054cc672f778229bd51b5c4327884a98b9236","message":"docs(决策): CHG-020 材料成稿 + 采纳形态对照 §5.6 收口 G-10 @ 0ec2442\n\n- 采纳形态覆盖度对照增 §5.6:「采纳的组件自身不在被观测面内」此前在 G-1…G-9 的对照表里\n 没有位置——那张表问的是原规则的判定有没有被承接,没问承接方自己看得见吗。Collector\n 是被观测的(Prometheus 回抓 :8888 + 三条告警),Caddy 完全在外面。trace / metrics /\n logs 三面同日关闭,实现与实测在真源仓 0ec2442 / 72df024。\n- 开发计划:候选 OpenAPI 6 → 11 份(2026-09-18 增五份宿主契约)、CHG-020 进「材料已成\n 待签署」行、新增 G-16 行(契约登记面的门禁覆盖)、裁决队列 ③ a 项加 CHG-020 并注明\n 签署前先答其 §0 的方向题(偏差 #39)。\n- CHG-020 材料五份:四份宿主契约由候选转正式登记,含门禁扩面(check:candidate-contracts\n 扫两目录 + 反向规则 REGISTERED_STILL_PENDING)。本包未改动任何文件,§0 挂着一处\n blocked_by 方向循环待 Catalog Owner 定口径:签收单侧写「先登记后签收」,五份候选的\n x-enterprise-blocked-by 写的是「先签收后登记」。\n\n一致性门禁 CLEAN(本次提交前实测)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/ea1054cc672f778229bd51b5c4327884a98b9236","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-18T22:55:09-07:00","added":["平台治理/doc/decisions/CHG-020-材料/README.md","平台治理/doc/decisions/CHG-020-材料/code.delta.json","平台治理/doc/decisions/CHG-020-材料/contracts.delta.json","平台治理/doc/decisions/CHG-020-材料/platform-projects.delta.json","平台治理/doc/decisions/CHG-020-材料/tests.delta.json"],"removed":[],"modified":["平台治理/基础设施文档/docs/采纳形态覆盖度对照-2026-09-14.md","平台治理/基础设施文档/开发计划.md"]},"repository":{"id":117,"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":"platform-governance","full_name":"luoanwu/platform-governance","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":11192,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance/languages","html_url":"https://gitea.g-hi.com/luoanwu/platform-governance","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/platform-governance.git","clone_url":"https://gitea.g-hi.com/luoanwu/platform-governance.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":3,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-15T11:53:24+08:00","updated_at":"2026-09-19T10:58:04+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"}}...
|
push
|
2
|
4
|
1789798135
|
1789798165
|
0
|
1789798059
|
1789798165
|
|
|
0
|
Edit
Delete
|
|
24226
|
docs(计划): 登记本会话——松散端 A 组 16 条全部做完,并附三处清单口径更正与一处新缺陷
|
117
|
5
|
governance.yml
|
78
|
5
|
0
|
refs/heads/main
|
705fb456d585cf4825078b6af0e2ef9d41ecd5f5
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ea1054cc672f778229bd51b5c4327884a98b9236","after":"705fb456d585cf4825078b6af0e2ef9d41ecd5f5","compare_url":"https://gitea.g-hi.com/luoanwu/platform-governance/compare/ea1054cc672f778229bd51b5c4327884a98b9236...705fb456d585cf4825078b6af0e2ef9d41ecd5f5","commits":[{"id":"705fb456d585cf4825078b6af0e2ef9d41ecd5f5","message":"docs(计划): 登记本会话——松散端 A 组 16 条全部做完,并附三处清单口径更正与一处新缺陷\n\n- §1 两行按当天实测改:运行证据行的 mainline 由四套件改**六套件 72 例**(A15 新接的\n permission-ops 2 / ai-route-persistence 5)、绑定改 `51f100b`、治理测试 444 → 449;\n 证据新鲜度行原写「35 份全部新鲜、0 过期 / 0 告警」,**与实测差得远**(开工时是 5 error\n + 14 warning),整行改为 `partial @ 3be0bb7`(45 份 / 41 新鲜 / 4 过期 / 0 error)并写清\n 收口过程与余下 4 条为何还在。\n- §8 账本增当天一行:A1—A16 逐项做法与实测出口、三处清单本身给错的口径(Prometheus\n 端口与无 lifecycle 标志、陈旧 worktree 属治理仓、reports:rebind 的覆盖面)、一处新查出\n 的缺陷(`pnpm test` 与 `GOV_REPORT_DIR` 互相抵消,没有一种跑法既不污染又全绿),以及\n B1—B11 十一项待裁的归属与本轮各做到哪一步。\n\n一致性门禁 CLEAN,`prunableWorktrees` 归零。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/705fb456d585cf4825078b6af0e2ef9d41ecd5f5","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-19T00:08:42-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]},{"id":"f2e130d38b5a8ae5d7f18d7a717bf1fb89f02b08","message":"docs(数字): 文档订正第三批(治理层侧)—— §1 的五处报告绑定全不对,并修三个数\n\n按各报告 `provenance.gitSha` 逐份实测,§1「运行 / UI 证据」一行原先**五处绑定全不对**:\n\n| 报告 | 原写 | 实测 |\n|---|---|---|\n| runtime-acceptance | `765300b` | `8a621fd` |\n| ui-acceptance | `003aadd` | `67e8193` |\n| mainline-acceptance | `bc978a8` | `8a621fd` |\n| mainline-restore | `bc978a8` | `765300b` |\n| identity-ui | `828f178` | `46265a6` |\n\n五份 `worktreeDirty` 均 false;用例数(775 / 5·1 / 11·17·19·18 / 3 库 / 2)逐份核对无误,\n错的只是绑定——而绑定正是「这个结论由哪个提交支撑」的唯一定位手段。\n\n另修三个数:\n- `check:fixtures` 17 套件 **189 例 → 702 例**(这条现已有 `check:doc-claims` 机器守);\n- 治理测试 **277/277 → 444(443 通过 / 1 skipped)**;\n- 撤权 SLA cacheBound p95 **5042 ms → 5027.7 ms**(invalidationPush 122 ms 与其\n `measured-with-harness-transport` 的定性无误,不动);\n- Release Manifest 绑定 `71b306f` → `2e06b92`(本日重跑回绑;缺 6 项不变)。\n\n一致性门禁 CLEAN。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/f2e130d38b5a8ae5d7f18d7a717bf1fb89f02b08","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-18T23:32:28-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]},{"id":"aa8550683e912d5442a0e8248915ccdb95a36f10","message":"docs(事实): 文档订正第二批(治理层侧)—— 镜像落后数、「分叉」定性、worktree 与 check 链描述\n\n- 开发计划三处镜像声明:「落后 Gitea 245 个提交」→ **41 个提交**(`github/main` =\n `51e311b`,2026-09-18 23:20 实测)。§1 仓与远端一行整行重写:本地 main = Gitea\n `origin/main` = `12bed2f`、0 个未推提交;本地分支 46 条(含 main),其中 30 条领先\n main、15 条已被 main 完全吸收。\n- §8「两远端分叉扩大」**定性也错了**:GitHub 侧 0 个独有提交,不是分叉,是纯落后;\n 同条里「直推已实证不可行」也已不成立(分支保护其间消失)。三处一并订正并留痕。\n- `企业控制面/CLAUDE.md` 两处:① `.worktrees/` 实测是**两条**(security-governance-hardening\n + docs/registry-blueprint-record),另有一条在本目录之外的 `/private/tmp/ep-delivery-20260917`,\n 并写明权威口径是 `git worktree list` 而不是本表;② 仓根 `pnpm check` 由「静态门禁链」\n 改为逐环列出的 **20 环**,并记下本会话实测到的坑——第 15 环 `pnpm test` 会改写\n `reports/caddy.latest.json`,而用 `GOV_REPORT_DIR` 规避改写又会让 12 个回读仓内报告\n 路径的用例判红,两者互相抵消,跑完整链后须 `git status` 看一眼。\n\n一致性门禁 CLEAN(4491 条链接)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/aa8550683e912d5442a0e8248915ccdb95a36f10","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-18T23:27:24-07:00","added":[],"removed":[],"modified":["企业控制面/CLAUDE.md","平台治理/基础设施文档/开发计划.md"]},{"id":"e707f1df114df1b3eaeaa8731fd21efe9354933f","message":"docs(状态): 文档订正第一批(治理层侧)—— ai-gateway 档位、工作台交付 ② 状态、A-7 事实数\n\n与真源仓同批(见 enterprise-platform 同日提交):\n\n- `企业控制面/README.md` AI 与集成行:`ai-gateway` 模块 `state=shape` → `authority`\n (2026-09-17 `ai-route.v1` 第一批转权威账本)。\n- 开发计划 §状态行、交付五步行、领取队列 ④ 三处:工作台交付 ② 由「▶ 可开工」改为\n 「🟡 进行中」。理由是实测——WB-1 脚手架、目录读面、受控执行面第一条、同源托管 +\n 入口 forward_auth、服务目录环境列探针均已落,**未闭合的是阶段 ② 验收本身**\n (目标环境四页 + `check:deployed`)。原写法会让读者以为一行代码都还没写。\n- 基础设施文档 README 的开发计划摘要同步(「前置只余 OPS-3 第一条」已不成立)。\n- 决策批次-2026-09-16 A-7:`check:facts` 登记 1 / 候选 15 是裁决当时的盘面,保留历史\n 取值并标注 2026-09-18 实测的 11 / 5。\n\n一致性门禁 CLEAN。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/e707f1df114df1b3eaeaa8731fd21efe9354933f","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-18T23:23:51-07:00","added":[],"removed":[],"modified":["企业控制面/README.md","平台治理/doc/decisions/决策批次-2026-09-16.md","平台治理/基础设施文档/README.md","平台治理/基础设施文档/开发计划.md"]},{"id":"a5d023f2ee1eb81503166218eceece073ab2e2bb","message":"docs(计划): 并回陈旧 worktree 独有的「第四处同病」账本行,并补上一提交漏改的 L13 收纳数\n\n- A6:`claude/zealous-tu-6f0fca` 这个 worktree 挂在盘上两天,相对 main 只有一条独有内容——\n 开发计划.md 里「第四处同病」那条账本行(revocation-sla 的报告由用例自己在 beforeAll 起手\n 无条件写 failed,adda76a 的 runner 侧修复没覆盖到;同日已修 08c3788)。手工插回它自称的\n 位置(「本表上一条」= 验收 runner 三处同病那条,按最新在上的表序即其正上方),而不是\n cherry-pick:该分支另有 6 行是 main 早已推进过的旧版本,整条并回会把状态倒退。\n- 同时修掉上一提交(ea1054c)漏掉的一处:CHG-020 材料 5 个文件进仓后,\n `平台治理/README.md` 收纳表的 `doc/` 数没跟着改,一致性门禁 L13 判 GOVERNANCE_COUNT_DRIFT\n (声明 149 / 实为 154)。已改 154,并把材料区间写到 CHG-001~020。门禁复跑 CLEAN。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/a5d023f2ee1eb81503166218eceece073ab2e2bb","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-18T23:10:48-07:00","added":[],"removed":[],"modified":["平台治理/README.md","平台治理/基础设施文档/开发计划.md"]}],"total_commits":0,"head_commit":{"id":"705fb456d585cf4825078b6af0e2ef9d41ecd5f5","message":"docs(计划): 登记本会话——松散端 A 组 16 条全部做完,并附三处清单口径更正与一处新缺陷\n\n- §1 两行按当天实测改:运行证据行的 mainline 由四套件改**六套件 72 例**(A15 新接的\n permission-ops 2 / ai-route-persistence 5)、绑定改 `51f100b`、治理测试 444 → 449;\n 证据新鲜度行原写「35 份全部新鲜、0 过期 / 0 告警」,**与实测差得远**(开工时是 5 error\n + 14 warning),整行改为 `partial @ 3be0bb7`(45 份 / 41 新鲜 / 4 过期 / 0 error)并写清\n 收口过程与余下 4 条为何还在。\n- §8 账本增当天一行:A1—A16 逐项做法与实测出口、三处清单本身给错的口径(Prometheus\n 端口与无 lifecycle 标志、陈旧 worktree 属治理仓、reports:rebind 的覆盖面)、一处新查出\n 的缺陷(`pnpm test` 与 `GOV_REPORT_DIR` 互相抵消,没有一种跑法既不污染又全绿),以及\n B1—B11 十一项待裁的归属与本轮各做到哪一步。\n\n一致性门禁 CLEAN,`prunableWorktrees` 归零。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/705fb456d585cf4825078b6af0e2ef9d41ecd5f5","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-19T00:08:42-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]},"repository":{"id":117,"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":"platform-governance","full_name":"luoanwu/platform-governance","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":11294,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance/languages","html_url":"https://gitea.g-hi.com/luoanwu/platform-governance","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/platform-governance.git","clone_url":"https://gitea.g-hi.com/luoanwu/platform-governance.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":3,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-15T11:53:24+08:00","updated_at":"2026-09-19T14:07:39+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"}}...
|
push
|
1
|
4
|
1789801726
|
1789801742
|
0
|
1789801725
|
1789801742
|
|
|
0
|
Edit
Delete
|
|
24227
|
chore(reports): evidence-freshness 回绑 @ 3be0bb7 —— chore(reports): evidence-freshness 回绑 @ 3be0bb7 —— 41 份新鲜 / 4 份过期 / 0 error...
|
116
|
5
|
platform.yml
|
176
|
5
|
0
|
refs/heads/main
|
623a58d184232de4493761b6612202abae6561c0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"928345d27ed7ade91e7257238a55e64e9f9c6fad","after":"623a58d184232de4493761b6612202abae6561c0","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/928345d27ed7ade91e7257238a55e64e9f9c6fad...623a58d184232de4493761b6612202abae6561c0","commits":[{"id":"623a58d184232de4493761b6612202abae6561c0","message":"chore(reports): evidence-freshness 回绑 @ 3be0bb7 —— 41 份新鲜 / 4 份过期 / 0 error\n\n余 4 条告警都要真实底座或镜像:sbom、runtime-acceptance、ui-acceptance、deployed-runtime。\nmainline-acceptance 随 A15 的六套件重跑已转新鲜。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/623a58d184232de4493761b6612202abae6561c0","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-19T00:06:02-07:00","added":[],"removed":[],"modified":["reports/evidence-freshness.latest.json"]},{"id":"3be0bb7a8ae0ccbecf762475be4425a7eced5038","message":"chore(reports): 工作台两份快照 / doc-claims / caddy / otel 回绑 @ 5ef56d0\n\n两件事各一半:\n- 并行会话的 `bd2a5c3` 改了 `docs/runbook.md`,它在 workbench-ops-snapshot 的作用域里,\n `check:evidence` 因此判其过期(本轮唯一一条 error)。\n- 本会话把 `docs/runbook.md` / `README.md` / `reports/otel.latest.json` 加进了 doc-claims\n 的作用域,该报告随之要重绑。\n\ncaddy / otel 一并带上(同一次干净检出里顺手跑,判词不变)。四份全部 dirty=false。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/3be0bb7a8ae0ccbecf762475be4425a7eced5038","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-19T00:05:43-07:00","added":[],"removed":[],"modified":["reports/caddy.latest.json","reports/doc-claims.latest.json","reports/otel.latest.json","reports/workbench-catalog-snapshot.latest.json","reports/workbench-ops-snapshot.latest.json"]},{"id":"5ef56d011b28e1000e575b67d354594f53249039","message":"chore(reports): mainline-acceptance 与 revocation-sla 回绑 @ 51f100b —— 首份六套件 72 例\n\nA15 接线后首次在干净树上跑完整主线(专用 Broker `enterprise-platform-ms23-redpanda-1`\n:59093 + 6 个隔离库,全部非超级用户角色):\n\n| 套件 | 例数 |\n|---|---|\n| fact-read-http | 11 |\n| fact-persistence | 17 |\n| audit-tamper | 19 |\n| mainline-revocation-chaos | 18 |\n| **permission-ops**(新) | **2** |\n| **ai-route-persistence**(新) | **5** |\n\n合计 72 例、0 失败、0 skipped/todo,`validateMainlineReport` 通过。revocation-sla 仍\n`partial`:cacheBound 与 invalidationPush 各 20 个真实样本,后者的传输仍是 test-harness\nledger poll,生产传输未接线——定性不变。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/5ef56d011b28e1000e575b67d354594f53249039","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-19T00:05:16-07:00","added":[],"removed":[],"modified":["reports/mainline-acceptance.latest.json","reports/revocation-sla.latest.json"]},{"id":"51f100b42bb2cb89db3609bf69f88835c26aa236","message":"feat(governance): 两支无门禁消费的 integration 套件接进主线(A15),并补齐 A14 的作用域\n\n**缺口**:四个模块有 `vitest.integration.config.ts`,但 `check-mainline.mjs` 只消费 fact 与\naudit 两支;`permission` 的 `ops.integration.ts`(OPS-1 受控命令 permission.invalidation 的\n真实库验收)与 `ai-gateway` 的 `persistence.integration.ts`(ai-route 权威账本)**没有任何\n门禁消费**,只能靠人手工 `pnpm test:integration`——写了验收却没有任何东西会在它坏掉时叫。\n\n- `check-mainline.mjs` 增两支套件:`permission-ops`、`ai-route-persistence`。它们要的正是\n 本文件已经在准备的那套隔离库,接进来不需要新底座。\n- `lib/mainline-evidence.mjs` 登记地板(按首次隔离库实测,非超级用户角色):2 例 / 5 例。\n 该表同时供 runner 与 `verify:candidate` 使用,`validateMainlineReport` 要求套件数与本表\n 一致——所以「接线」和「候选可晋级核验」是同一件事,不会只改一半。\n- `prepare-mainline.mjs` 增 `aigateway` 一档:`platform_aigateway_ms23` 此前不存在(只有 dev\n 库),ai-gateway 的 integration 套件因此在任何隔离环境里都跑不起来。顺带修一处会绊下一个\n 人的坑——**库名的 kind 与模块目录名不总是同一个词**(`aigateway` ↔ `ai-gateway`),改为显式\n `moduleDir` 映射,不靠字符串等同。\n- `evidence-scopes.json` 补 A14 漏的一半:`doc-claims` 的 scope 加 `README.md`、\n `docs/runbook.md`、`reports/otel.latest.json`。扩了扫描面却没扩作用域,等于那三处一变\n 本报告也不会被判过期。\n\n**实测**(`enterprise-platform-ms23` 专用 Broker :59093 + 6 个隔离库,非超级用户):\n六套件全过 11 / 17 / 19 / 18 / **2** / **5** = 72 例,`mainline:check` 退出 0,\n`validateMainlineReport` 通过。报告回绑另起提交(本次运行时工作树是脏的)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/51f100b42bb2cb89db3609bf69f88835c26aa236","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-19T00:02:22-07:00","added":[],"removed":[],"modified":["governance/check-mainline.mjs","governance/evidence-scopes.json","governance/lib/mainline-evidence.mjs","governance/prepare-mainline.mjs"]},{"id":"bd2a5c39496b0dda12afc98c321119609780f519","message":"docs(运维): runbook 补工作台「缺配置」的形态判别与入口形态登录的三道坎\n\n入口托管产物按约定摘掉 .env.local 构建,两个 NEXT_PUBLIC_WORKBENCH_* 一起\n没进产物,登录页显示「缺配置」是这份产物的预期结果、不是漏配;写清判形态\n的办法,并点明不该靠「带着 .env.local 重建」去修(那是拿同源形态换登录页)。\n\n入口形态的登录补配置也修不通:构建带变量、补登记入口 origin 回调都可做,\n但换令牌必失败——常驻容器 NODE_ENV=production 而 loadLocalSigningKey 只认\ntest / development,且容器 IDP_CANONICAL_ORIGIN=http://localhost:3098 使入口\n上取到的 discovery issuer 与端点全指 :3098。结论落在等目标环境的真签名源,\n并明写把容器降成 development 是安全面倒退。\n\n同段末句「在那之前不要把工作台挂到网关根路径」已被 426a7df 落地的同源托管与\nforward_auth 超越,改为陈述现状,免得与新段自相矛盾。\n\ncheck:doc-claims ✓(报告经 GOV_REPORT_DIR 导出仓外,仓内 reports/ 未改);\n工作区根 check-workspace-consistency.mjs CLEAN。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/bd2a5c39496b0dda12afc98c321119609780f519","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-18T23:53:37-07:00","added":[],"removed":[],"modified":["docs/runbook.md"]}],"total_commits":0,"head_commit":{"id":"623a58d184232de4493761b6612202abae6561c0","message":"chore(reports): evidence-freshness 回绑 @ 3be0bb7 —— 41 份新鲜 / 4 份过期 / 0 error\n\n余 4 条告警都要真实底座或镜像:sbom、runtime-acceptance、ui-acceptance、deployed-runtime。\nmainline-acceptance 随 A15 的六套件重跑已转新鲜。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/623a58d184232de4493761b6612202abae6561c0","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-19T00:06:02-07:00","added":[],"removed":[],"modified":["reports/evidence-freshness.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":23211,"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-19T14:07:16+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"}}...
|
push
|
2
|
30
|
1789801742
|
1789801782
|
0
|
1789801729
|
1789801813
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24228
|
docs(计划): 镜像落后数三处更新到收尾实测 53(23:20 量到的 41 已被本会话自己的 docs(计划): 镜像落后数三处更新到收尾实测 53(23:20 量到的 41 已被本会话自己的 12 个提交推开)...
|
117
|
5
|
governance.yml
|
79
|
5
|
0
|
refs/heads/main
|
7e11860ff60ecbcf1c10f1c0a578263f6e39e7b0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"705fb456d585cf4825078b6af0e2ef9d41ecd5f5","after":"7e11860ff60ecbcf1c10f1c0a578263f6e39e7b0","compare_url":"https://gitea.g-hi.com/luoanwu/platform-governance/compare/705fb456d585cf4825078b6af0e2ef9d41ecd5f5...7e11860ff60ecbcf1c10f1c0a578263f6e39e7b0","commits":[{"id":"7e11860ff60ecbcf1c10f1c0a578263f6e39e7b0","message":"docs(计划): 镜像落后数三处更新到收尾实测 53(23:20 量到的 41 已被本会话自己的 12 个提交推开)\n\n这个数随本仓每个提交增长,三处都已写明「引用前必重测」。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/7e11860ff60ecbcf1c10f1c0a578263f6e39e7b0","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-19T00:13:51-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]}],"total_commits":0,"head_commit":{"id":"7e11860ff60ecbcf1c10f1c0a578263f6e39e7b0","message":"docs(计划): 镜像落后数三处更新到收尾实测 53(23:20 量到的 41 已被本会话自己的 12 个提交推开)\n\n这个数随本仓每个提交增长,三处都已写明「引用前必重测」。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/7e11860ff60ecbcf1c10f1c0a578263f6e39e7b0","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-19T00:13:51-07:00","added":[],"removed":[],"modified":["平台治理/基础设施文档/开发计划.md"]},"repository":{"id":117,"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":"platform-governance","full_name":"luoanwu/platform-governance","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":11694,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance/languages","html_url":"https://gitea.g-hi.com/luoanwu/platform-governance","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/platform-governance.git","clone_url":"https://gitea.g-hi.com/luoanwu/platform-governance.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":3,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-15T11:53:24+08:00","updated_at":"2026-09-19T15:08:46+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"}}...
|
push
|
1
|
4
|
1789802037
|
1789802052
|
0
|
1789802036
|
1789802052
|
|
|
0
|
Edit
Delete
|
|
24229
|
fix(governance): 治理测试两条跑法合上——不设 GOV_REPORT_DIR 不再污 fix(governance): 治理测试两条跑法合上——不设 GOV_REPORT_DIR 不再污染 reports/,设了也不再判红...
|
116
|
5
|
platform.yml
|
177
|
5
|
0
|
refs/heads/main
|
7021758cffa830beecc7c0af480bc1943a3e78e8
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"623a58d184232de4493761b6612202abae6561c0","after":"7021758cffa830beecc7c0af480bc1943a3e78e8","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/623a58d184232de4493761b6612202abae6561c0...7021758cffa830beecc7c0af480bc1943a3e78e8","commits":[{"id":"7021758cffa830beecc7c0af480bc1943a3e78e8","message":"fix(governance): 治理测试两条跑法合上——不设 GOV_REPORT_DIR 不再污染 reports/,设了也不再判红\n\n2026-09-19 实测的坑:根 `pnpm check` 第 15 环 `pnpm test` 两条路都不干净。\n- 不设 `GOV_REPORT_DIR`:449 例全过,但 `check-caddy.test.mjs` 就地重写\n `reports/caddy.latest.json`(它是 `report-clobber.test.mjs` 里唯一的具名豁免),\n 跑完整条链必然留一份脏绑报告,要靠操作者记得 `git checkout --` 它。\n- 设了 `GOV_REPORT_DIR`:12 个用例判红。它们把门禁 CLI 跑在**临时沙箱**里\n (catalog-drift 的临时检出、evidence 的临时 git 仓、fixtures 的 `--root`),\n 子进程继承了外部这个变量,报告落到沙箱外,用例按沙箱路径回读就读不到。\n\n两头都是同一件事没做:spawn 门禁时没把报告目录钉死。逐个钉:\n\n| 文件 | 钉到哪 |\n|---|---|\n| check-caddy | 临时 `gov-report-*`(解除具名豁免,与另四支 check-* 同款) |\n| check-catalog-drift | `\u003c临时检出\u003e/reports` |\n| check-evidence-freshness | `\u003c临时 git 仓\u003e/reports` |\n| fixture-integrity / platform-fixtures / cli | `\u003c沙箱 --root\u003e/reports` |\n| port-conformance | 进程内调门禁,`process.env` 上钉一次再还原 |\n\n`deployed-runtime.test.mjs` 反着来:它断言的就是「默认不落盘」,故显式 `delete`\n掉外部的 `GOV_REPORT_DIR`——否则报告被重定向走,仓里那份自然不动,断言成空转。\n它继续留在 `CLOBBER_EXEMPT`(现在是唯一一条,理由与解除条件已按这个新事实改写)。\n\n`report-clobber.test.mjs` 同时补两处扫描漏洞:原来只认字面量 `governance/check-*.mjs`\n(漏掉按相对路径与 `bin/cli.mjs` spawn 的 5 个文件),且只要提一嘴变量名就放行\n(`delete` 做的是相反的事)。现在按 `check-*.mjs|cli.mjs` 认,且要求写成赋值形式。\n扫不到的一类(进程内直接调门禁函数)在注释里写明。\n\n出口判据实测:\n- `GOV_REPORT_DIR=\u003ctmp\u003e node --test governance/test/*.test.mjs` → 471 例 470 过 0 失败;\n- 不设变量跑同一套 → 同样 0 失败,且跑前跑后 `reports/*.json` 的 md5 逐份不变、\n `git status --porcelain` 无新增(树上其余脏文件属并行会话)。\n\n无 `chore(reports)` 回绑:本次改动全在 `governance/test/` 下,46 条证据作用域没有一条覆盖它,\n`check:evidence` 的判词不因本提交改变。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/7021758cffa830beecc7c0af480bc1943a3e78e8","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-19T00:26:15-07:00","added":[],"removed":[],"modified":["governance/test/check-caddy.test.mjs","governance/test/check-catalog-drift.test.mjs","governance/test/check-evidence-freshness.test.mjs","governance/test/cli.test.mjs","governance/test/deployed-runtime.test.mjs","governance/test/fixture-integrity.test.mjs","governance/test/platform-fixtures.test.mjs","governance/test/port-conformance.test.mjs","governance/test/report-clobber.test.mjs"]}],"total_commits":0,"head_commit":{"id":"7021758cffa830beecc7c0af480bc1943a3e78e8","message":"fix(governance): 治理测试两条跑法合上——不设 GOV_REPORT_DIR 不再污染 reports/,设了也不再判红\n\n2026-09-19 实测的坑:根 `pnpm check` 第 15 环 `pnpm test` 两条路都不干净。\n- 不设 `GOV_REPORT_DIR`:449 例全过,但 `check-caddy.test.mjs` 就地重写\n `reports/caddy.latest.json`(它是 `report-clobber.test.mjs` 里唯一的具名豁免),\n 跑完整条链必然留一份脏绑报告,要靠操作者记得 `git checkout --` 它。\n- 设了 `GOV_REPORT_DIR`:12 个用例判红。它们把门禁 CLI 跑在**临时沙箱**里\n (catalog-drift 的临时检出、evidence 的临时 git 仓、fixtures 的 `--root`),\n 子进程继承了外部这个变量,报告落到沙箱外,用例按沙箱路径回读就读不到。\n\n两头都是同一件事没做:spawn 门禁时没把报告目录钉死。逐个钉:\n\n| 文件 | 钉到哪 |\n|---|---|\n| check-caddy | 临时 `gov-report-*`(解除具名豁免,与另四支 check-* 同款) |\n| check-catalog-drift | `\u003c临时检出\u003e/reports` |\n| check-evidence-freshness | `\u003c临时 git 仓\u003e/reports` |\n| fixture-integrity / platform-fixtures / cli | `\u003c沙箱 --root\u003e/reports` |\n| port-conformance | 进程内调门禁,`process.env` 上钉一次再还原 |\n\n`deployed-runtime.test.mjs` 反着来:它断言的就是「默认不落盘」,故显式 `delete`\n掉外部的 `GOV_REPORT_DIR`——否则报告被重定向走,仓里那份自然不动,断言成空转。\n它继续留在 `CLOBBER_EXEMPT`(现在是唯一一条,理由与解除条件已按这个新事实改写)。\n\n`report-clobber.test.mjs` 同时补两处扫描漏洞:原来只认字面量 `governance/check-*.mjs`\n(漏掉按相对路径与 `bin/cli.mjs` spawn 的 5 个文件),且只要提一嘴变量名就放行\n(`delete` 做的是相反的事)。现在按 `check-*.mjs|cli.mjs` 认,且要求写成赋值形式。\n扫不到的一类(进程内直接调门禁函数)在注释里写明。\n\n出口判据实测:\n- `GOV_REPORT_DIR=\u003ctmp\u003e node --test governance/test/*.test.mjs` → 471 例 470 过 0 失败;\n- 不设变量跑同一套 → 同样 0 失败,且跑前跑后 `reports/*.json` 的 md5 逐份不变、\n `git status --porcelain` 无新增(树上其余脏文件属并行会话)。\n\n无 `chore(reports)` 回绑:本次改动全在 `governance/test/` 下,46 条证据作用域没有一条覆盖它,\n`check:evidence` 的判词不因本提交改变。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/7021758cffa830beecc7c0af480bc1943a3e78e8","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-19T00:26:15-07:00","added":[],"removed":[],"modified":["governance/test/check-caddy.test.mjs","governance/test/check-catalog-drift.test.mjs","governance/test/check-evidence-freshness.test.mjs","governance/test/cli.test.mjs","governance/test/deployed-runtime.test.mjs","governance/test/fixture-integrity.test.mjs","governance/test/platform-fixtures.test.mjs","governance/test/port-conformance.test.mjs","governance/test/report-clobber.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":23460,"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-19T15:08:49+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"}}...
|
push
|
2
|
30
|
1789802793
|
1789802833
|
0
|
1789802791
|
1789802863
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24230
|
docs(治理): workspace.json 补五层职责字段——层定义此前只在总架构图 PNG docs(治理): workspace.json 补五层职责字段——层定义此前只在总架构图 PNG 里...
|
117
|
5
|
governance.yml
|
80
|
5
|
0
|
refs/heads/main
|
cf82ac49afd4e6da0307bf0f0e1e255be6701bab
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"7e11860ff60ecbcf1c10f1c0a578263f6e39e7b0","after":"cf82ac49afd4e6da0307bf0f0e1e255be6701bab","compare_url":"https://gitea.g-hi.com/luoanwu/platform-governance/compare/7e11860ff60ecbcf1c10f1c0a578263f6e39e7b0...cf82ac49afd4e6da0307bf0f0e1e255be6701bab","commits":[{"id":"cf82ac49afd4e6da0307bf0f0e1e255be6701bab","message":"docs(治理): workspace.json 补五层职责字段——层定义此前只在总架构图 PNG 里\n\nterminology.layers 每层加 responsibility,五句逐字取自根目录\n「AI 应用开发的企业应用群总架构图.png」的层图注。此前本文件只有\nterm / alias / directory / order,五层「是什么」没有任何机器口径,\n于是既无法被引用,也无法反驳把基础基座与基础框架压成一格\nBASE_ASSET / asset 的 Catalog 登记(platform-projects.json)。\n\n职责是应然口径,不是现状声明——该图已由\n平台治理/企业应用群总架构-2026-09-17.md §2.1 定性为愿景图并记了三处过期。\n平台治理不在图上,不给该字段(其原有 note 已说明)。\n\nnote 内一并记录两处现存措辞不一致,本提交不改它们:\n- 数字员工OS/README.md 首句作「运行时宿主,装载并串接……」,弱于图注的「运行与控制中枢」\n- 工程基础框架/README.md 标题自称「基础资产」而非层名\n另三层 README 首句与图注逐字一致。\n\n纯加法:唯一消费方 平台治理/基础/scripts/lib/domain-layer-core.mjs 的\nlayerIndex() 只读 directory / term,复算映射仍 6 条、取值未变。\n门禁 check-workspace-consistency.mjs --json → status=CLEAN / issues=0 / EXIT=0\n(14 仓 8371 文件 4493 链接,2026-09-19,工作区作用域)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/cf82ac49afd4e6da0307bf0f0e1e255be6701bab","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-19T00:59:20-07:00","added":[],"removed":[],"modified":["workspace.json"]},{"id":"4a9dad2c0559feeb66d3c74e4720e70d5bedf698","message":"docs(治理): 门禁链 20 → 21 环——真源仓新增 check:stub-surface,并订正 pnpm test 两条跑法的已合口径\n\n- `pnpm check` 增第 12 环 `check:stub-surface`(真源仓 `6986527`):把「失败关闭的桩 /\n 只在登记里或只在测试夹具里装配 / 环境开关决定走哪条分支」三种未落地形态扫成清单,\n 34 条逐条登记在 `enterprise-platform/governance/stub-surface.json`(只写为什么还在,\n 清单本身由门禁从源码推导),并守住仓根 CLAUDE.md 对清单数字的声明。环数与序号跟着改:\n `pnpm test` 由第 15 环变第 16 环。\n- 订正同句尾巴:本条此前写「`pnpm test` 会改写 `reports/caddy.latest.json`,而设\n `GOV_REPORT_DIR` 规避又会让 12 个回读仓内报告路径的用例判红,两者互相抵消」。该状态已由\n 真源仓 `7021758` 合上——2026-09-19 在干净树上两条跑法各跑一遍实测:均 471 例\n 470 通过 / 0 失败 / 1 跳过,且不设 `GOV_REPORT_DIR` 时 `reports/` 一个字节不动。\n\n`node 平台治理/基础/scripts/check-workspace-consistency.mjs` 合计 0 条\n(14 个仓 / 8370 份受控文件,L4 断链 0 / L13 数字声明 0)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/4a9dad2c0559feeb66d3c74e4720e70d5bedf698","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-19T00:30:44-07:00","added":[],"removed":[],"modified":["企业控制面/CLAUDE.md"]}],"total_commits":0,"head_commit":{"id":"cf82ac49afd4e6da0307bf0f0e1e255be6701bab","message":"docs(治理): workspace.json 补五层职责字段——层定义此前只在总架构图 PNG 里\n\nterminology.layers 每层加 responsibility,五句逐字取自根目录\n「AI 应用开发的企业应用群总架构图.png」的层图注。此前本文件只有\nterm / alias / directory / order,五层「是什么」没有任何机器口径,\n于是既无法被引用,也无法反驳把基础基座与基础框架压成一格\nBASE_ASSET / asset 的 Catalog 登记(platform-projects.json)。\n\n职责是应然口径,不是现状声明——该图已由\n平台治理/企业应用群总架构-2026-09-17.md §2.1 定性为愿景图并记了三处过期。\n平台治理不在图上,不给该字段(其原有 note 已说明)。\n\nnote 内一并记录两处现存措辞不一致,本提交不改它们:\n- 数字员工OS/README.md 首句作「运行时宿主,装载并串接……」,弱于图注的「运行与控制中枢」\n- 工程基础框架/README.md 标题自称「基础资产」而非层名\n另三层 README 首句与图注逐字一致。\n\n纯加法:唯一消费方 平台治理/基础/scripts/lib/domain-layer-core.mjs 的\nlayerIndex() 只读 directory / term,复算映射仍 6 条、取值未变。\n门禁 check-workspace-consistency.mjs --json → status=CLEAN / issues=0 / EXIT=0\n(14 仓 8371 文件 4493 链接,2026-09-19,工作区作用域)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/cf82ac49afd4e6da0307bf0f0e1e255be6701bab","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-19T00:59:20-07:00","added":[],"removed":[],"modified":["workspace.json"]},"repository":{"id":117,"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":"platform-governance","full_name":"luoanwu/platform-governance","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":11931,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance/languages","html_url":"https://gitea.g-hi.com/luoanwu/platform-governance","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/platform-governance.git","clone_url":"https://gitea.g-hi.com/luoanwu/platform-governance.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":4,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-15T11:53:24+08:00","updated_at":"2026-09-19T15:34:50+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"}}...
|
push
|
2
|
4
|
1789804819
|
1789804910
|
0
|
1789804818
|
1789804910
|
|
|
0
|
Edit
Delete
|
|
24231
|
chore(reports): deployed-runtime 回绑 @ 18e4661 —— 常 chore(reports): deployed-runtime 回绑 @ 18e4661 —— 常驻容器跑的是 84ad650 的镜像...
|
116
|
5
|
platform.yml
|
178
|
5
|
0
|
refs/heads/main
|
8f5832b626a294a43810b2f6939e59e93a341283
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"7021758cffa830beecc7c0af480bc1943a3e78e8","after":"8f5832b626a294a43810b2f6939e59e93a341283","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/7021758cffa830beecc7c0af480bc1943a3e78e8...8f5832b626a294a43810b2f6939e59e93a341283","commits":[{"id":"8f5832b626a294a43810b2f6939e59e93a341283","message":"chore(reports): deployed-runtime 回绑 @ 18e4661 —— 常驻容器跑的是 84ad650 的镜像\n\ncheck:deployed passed(IMAGE_SOURCE_EQUIVALENT:镜像源 84ad650 之后只有报告回绑提交,\n运行时输入未变);容器 a1fa232df8d1 healthy,环境键齐备。本份在开工前(3335f46)就已过期,\n本轮部署后在干净树上重出。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/8f5832b626a294a43810b2f6939e59e93a341283","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-19T01:16:46-07:00","added":[],"removed":[],"modified":["reports/deployed-runtime.latest.json"]},{"id":"18e4661c17b4e9f020648434a1f68e7b92ca71ff","message":"chore(reports): 受实现提交影响的门禁回绑 @ a4ba565 —— 仓根三份 + runtime 十五份\n\n84ad650 改了 governance/build-workbench-snapshots.mjs 与 runtime/apps/workbench/src/**,\n落进 doc-claims / stub-surface / module-imports 与 runtime 侧治理报告的作用域,check:evidence\n判 4 处 error。按仓纪律在干净检出里重跑并带回:\n\n- reports:rebind --gates module-imports,doc-claims,stub-surface(三份均绑 a4ba565 / dirty=false,门禁 exit 0)\n- pnpm --dir runtime check:governance(聚合重写 runtime/reports 十五份,同样绑 a4ba565 / dirty=false)\n\ncheck:evidence 由 failed(12 过期 / 4 error)回到 partial(40 新鲜 / 6 过期 / 0 error)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/18e4661c17b4e9f020648434a1f68e7b92ca71ff","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-19T01:16:23-07:00","added":[],"removed":[],"modified":["reports/doc-claims.latest.json","reports/module-imports.latest.json","reports/stub-surface.latest.json","runtime/reports/agent-adapters.latest.json","runtime/reports/conformance-matrix.latest.json","runtime/reports/contract-consumers.latest.json","runtime/reports/docs-truth.latest.json","runtime/reports/dual-backend-parity.latest.json","runtime/reports/fork-readiness.latest.json","runtime/reports/governance-docs.latest.json","runtime/reports/governance-rules.latest.json","runtime/reports/governance-status.latest.json","runtime/reports/governance.latest.json","runtime/reports/migrations.latest.json","runtime/reports/naming.latest.json","runtime/reports/runtime-governance.latest.json","runtime/reports/schema-sync.latest.json","runtime/reports/statemachine-write-guard.latest.json","runtime/reports/validation-source.latest.json"]},{"id":"a4ba565e6bd3d8c50f1653dd9c2a8f8c9f197273","message":"chore(reports): 工作台两份快照回绑 @ ea622e4 —— 服务目录 21 → 19 条,范围外资产改列 excluded\n\n在干净树上重跑 workbench:snapshots(worktreeDirty=false):catalog 快照 schemaVersion 4、\nprojects=19、mapped=7/7、conflicts=0,excluded 两条(digital-employee-os / base-framework)\n各带 Catalog 里的排除理由;ops 快照同步回绑到已提交的镜像证据(84ad65070b94)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/a4ba565e6bd3d8c50f1653dd9c2a8f8c9f197273","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-19T01:12:50-07:00","added":[],"removed":[],"modified":["reports/workbench-catalog-snapshot.latest.json","reports/workbench-ops-snapshot.latest.json"]},{"id":"ea622e4d7f4c374a328cfe5501acbc353089a539","message":"chore(reports): 镜像与冒烟回绑 @ 84ad650 —— 工作台投影收窄后重建并切换常驻运行时\n\n实现提交动了 runtime/apps/workbench/src/**(运行时镜像输入),镜像随之落后,按 runbook §9\n从 clean 提交重建:enterprise-platform/runtime:84ad65070b94(contextMode=head,worktreeDirty=false),\n冒烟 6/6(单 profile、Redis 逻辑库 15、:53009),常驻容器已 up -d --no-deps runtime 切换并 healthy,\ncheck:deployed passed(IMAGE_SOURCE_EQUIVALENT)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/ea622e4d7f4c374a328cfe5501acbc353089a539","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-19T01:12:22-07:00","added":[],"removed":[],"modified":["reports/image-digest.json","reports/image-smoke.latest.json"]},{"id":"84ad65070b945071e0361644342d453b9575ec80","message":"feat(governance): 服务目录只投影平台服务——范围外资产不进 entries、改列 excluded\n\n工作台服务目录此前把 Catalog 的 21 条全量投影出来,含 in_goal_scope=false 的两条排除资产\n(基础框架 base-framework、AI 数字员工 digital-employee-os),等于把用户明确排除的资产\n说成平台自己的服务。改为只投影 in_goal_scope !== false 的 19 条:\n\n- entries 收窄;被挡下的条目按 id / 名称 / 层 / 排除理由 / code_truth 列进新的顶层 excluded,\n 不静默消失。排除裁决的真源仍是 Catalog,本次不动 contracts/catalogs/platform-projects.json,\n classifyConsumption 也保留 excluded-asset 分类,只是那类条目不再投影。\n- counts.excludedFromProjection;schemaVersion 3 → 4(entries 含义从「Catalog 全量」收窄成\n 「平台服务」,按条目数做统计的消费者须回看)。\n- 新冲突规则 MODULE_MAPPED_TO_EXCLUDED_PROJECT:运行时模块若映射到范围外项目,单列冲突,\n 不被投影收窄盖成「模块没有 Catalog 项目」。\n- 工作台计数条首格「项目」改「服务」并加「范围外资产」一格;快照类型补 excluded,注释里的\n 条目数 21 → 19。\n\n治理单测 472 例 / 471 通过 / 0 失败 / 1 跳过(新增「排除资产不得进 entries、必须带理由进\nexcluded」与上述冲突规则两组断言);check:catalog / catalog:drift / check:candidate-contracts /\ncheck:stub-surface / check:doc-claims 均 passed。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/84ad65070b945071e0361644342d453b9575ec80","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-19T01:10:32-07:00","added":[],"removed":[],"modified":["governance/build-workbench-snapshots.mjs","governance/test/build-workbench-snapshots.test.mjs","runtime/apps/workbench/src/components/catalog/counts-strip.tsx","runtime/apps/workbench/src/features/platform/catalog-filters.ts","runtime/apps/workbench/src/features/platform/types.ts"]}],"total_commits":0,"head_commit":{"id":"8f5832b626a294a43810b2f6939e59e93a341283","message":"chore(reports): deployed-runtime 回绑 @ 18e4661 —— 常驻容器跑的是 84ad650 的镜像\n\ncheck:deployed passed(IMAGE_SOURCE_EQUIVALENT:镜像源 84ad650 之后只有报告回绑提交,\n运行时输入未变);容器 a1fa232df8d1 healthy,环境键齐备。本份在开工前(3335f46)就已过期,\n本轮部署后在干净树上重出。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/8f5832b626a294a43810b2f6939e59e93a341283","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-19T01:16:46-07:00","added":[],"removed":[],"modified":["reports/deployed-runtime.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":23498,"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-19T15:26:32+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"}}...
|
push
|
2
|
30
|
1789807906
|
1789808120
|
0
|
1789807906
|
1789809051
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24232
|
docs(决策): 写回 CHG-021 材料的 README——77aaf85 里存进去的那份不是 docs(决策): 写回 CHG-021 材料的 README——77aaf85 里存进去的那份不是本包内容...
|
117
|
5
|
governance.yml
|
81
|
5
|
0
|
refs/heads/main
|
7ad320a65b921c9d68a4ab48df81241998e64867
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"cf82ac49afd4e6da0307bf0f0e1e255be6701bab","after":"7ad320a65b921c9d68a4ab48df81241998e64867","compare_url":"https://gitea.g-hi.com/luoanwu/platform-governance/compare/cf82ac49afd4e6da0307bf0f0e1e255be6701bab...7ad320a65b921c9d68a4ab48df81241998e64867","commits":[{"id":"7ad320a65b921c9d68a4ab48df81241998e64867","message":"docs(决策): 写回 CHG-021 材料的 README——77aaf85 里存进去的那份不是本包内容\n\n事故与更正,如实记:本包 README 于 2026-09-19 01:53 写成,提交 77aaf85 于约 02:0x 落库;\n两者之间另一并行会话(九域/六域收编那条线)在同一路径写入了它自己的材料,而我提交前\n只核了文件名清单、没核文件内容,于是 77aaf85 存进去的是它的「CHG-021-C3-NINE-DOMAIN-MODULE-INTAKE」,\n本包的 README 从未真正入库。四份 delta 与 DEC-040 草案未被波及,一直是本包内容(changeId 均为\nCHG-021-HOSTED-MODULE-PROMOTION),可据以复核本文与它们是否一致。\n\n本次按本会话原稿写回,内容与四份 delta 逐项对齐,并补一节「与 CHG-022 的分工」:\n- CHG-021(本包)= C11 公共文件 / C12 通知与 Webhook / C13 配置与功能开关三条**有真实现与存量\n 消费者**的托管能力升格,要处理权威状态迁移、宿主改造与回切;\n- CHG-022 = 其余六个**零运行面**契约域(C15—C19 + C01)的收编。\n两包范围不重叠。编号维持现状:并行会话已自取 CHG-022 并在其材料里引用本包为 CHG-021,\n无须改号。\n\n链接自检:8 条相对链接逐条验在(含新增的 ../CHG-022-材料/README.md)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/7ad320a65b921c9d68a4ab48df81241998e64867","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-19T02:21:58-07:00","added":[],"removed":[],"modified":["平台治理/doc/decisions/CHG-021-材料/README.md"]},{"id":"e8d488b2bf75395b2aae4a653146440a624073f1","message":"docs(治理): 收纳表随 DEC-040 / CHG-021 落地改数——doc/ 154 → 160,编号区间跟到 040 / 021\n\nL13(治理层自己的数字声明与 git ls-files 不符)在上一条提交后即判红:收纳表写 154,实为 160。\n六个文件全部来自 77aaf85(DEC-040 草案 1 份 + CHG-021 材料 5 份)。同时把区间描述从\nDEC-001~039 / CHG-001~020 跟到 DEC-001~040 / CHG-001~021。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/e8d488b2bf75395b2aae4a653146440a624073f1","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-19T02:10:28-07:00","added":[],"removed":[],"modified":["平台治理/README.md"]},{"id":"77aaf8599b0379a71bf3eed4e07fa93e08317325","message":"docs(决策): DEC-040 托管能力升格为平台运行时模块 + CHG-021 受控变更包(均待签署)\n\n目录负责人 2026-09-19 提出「托管模块应该直接迁进本仓」。该指示与三处已批准口径相反\n(Q01「不得以方便实现自动新增 M8」、设计方案第 155 行「三消费者 + G4 后用 scaffold 加模块」、\n第 35 行把自动服务化文件/通知/配置列为非目标),故先成裁决材料,批准后实现才有依据。\n\nDEC-040 草案(待批准):\n- 底账:三条能力的代码两半都已在本仓(规则 2026-09-14 进 contracts/src/domain,副作用\n 2026-09-18 进 runtime/clients),没有的是运行服务与权威状态——后者仍完整在工单宿主。\n- 消费者实测 3 / 3 / 1;配置的三消费者条件按建议 Decision 第 4 条显式豁免,带回看期\n 2027-03-19 与 single-consumer 接口标记。\n- 补齐 Q01 要求的两个宿主方案成本与迁移影响对比(不做这张表,本裁决不满足自己的准入条件)。\n- 写明两处代价:① 验收等级如实由 E2 降到 E0(宿主实现的 E2 不证明平台实现);② 业务外键\n (Attachment.ticket_id 必填 + Cascade、Notification 唯一键含 escalation_id)必须断开,\n 级联删除语义要由宿主显式调用重建。\n- 内核无对应端口且 kernel 由仓外框架 Owner 发布,故升格出的模块 provides 为空、消费面只有 HTTP。\n\nCHG-021 材料(待 DEC-040 批准 + Catalog Owner 签署,本包未改动任何文件):\n- 四份 delta:decisions / platform-projects / modules / catalog-map,各带当前值与目标值。\n- 逐行核过 check:modules(第 45—57 行)的六条判据并写进应用顺序;登记面与模块骨架必须同批落地。\n- 附实施工作包七步链与已知风险;顺带记录三条模块登记会补上 Release Manifest 少三行的现存缺口。\n\n自检:四份 delta JSON 合法;两份文档 10 条相对链接逐条验在。治理层一致性检查只扫已跟踪文件,\n本批提交后才算机器验过。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/77aaf8599b0379a71bf3eed4e07fa93e08317325","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-19T02:08:58-07:00","added":["平台治理/doc/decisions/CHG-021-材料/README.md","平台治理/doc/decisions/CHG-021-材料/catalog-map.delta.json","平台治理/doc/decisions/CHG-021-材料/decisions.delta.json","平台治理/doc/decisions/CHG-021-材料/modules.delta.json","平台治理/doc/decisions/CHG-021-材料/platform-projects.delta.json","平台治理/doc/decisions/DEC-040-托管能力升格为平台运行时模块-草案.md"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"7ad320a65b921c9d68a4ab48df81241998e64867","message":"docs(决策): 写回 CHG-021 材料的 README——77aaf85 里存进去的那份不是本包内容\n\n事故与更正,如实记:本包 README 于 2026-09-19 01:53 写成,提交 77aaf85 于约 02:0x 落库;\n两者之间另一并行会话(九域/六域收编那条线)在同一路径写入了它自己的材料,而我提交前\n只核了文件名清单、没核文件内容,于是 77aaf85 存进去的是它的「CHG-021-C3-NINE-DOMAIN-MODULE-INTAKE」,\n本包的 README 从未真正入库。四份 delta 与 DEC-040 草案未被波及,一直是本包内容(changeId 均为\nCHG-021-HOSTED-MODULE-PROMOTION),可据以复核本文与它们是否一致。\n\n本次按本会话原稿写回,内容与四份 delta 逐项对齐,并补一节「与 CHG-022 的分工」:\n- CHG-021(本包)= C11 公共文件 / C12 通知与 Webhook / C13 配置与功能开关三条**有真实现与存量\n 消费者**的托管能力升格,要处理权威状态迁移、宿主改造与回切;\n- CHG-022 = 其余六个**零运行面**契约域(C15—C19 + C01)的收编。\n两包范围不重叠。编号维持现状:并行会话已自取 CHG-022 并在其材料里引用本包为 CHG-021,\n无须改号。\n\n链接自检:8 条相对链接逐条验在(含新增的 ../CHG-022-材料/README.md)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/7ad320a65b921c9d68a4ab48df81241998e64867","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-19T02:21:58-07:00","added":[],"removed":[],"modified":["平台治理/doc/decisions/CHG-021-材料/README.md"]},"repository":{"id":117,"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":"platform-governance","full_name":"luoanwu/platform-governance","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":11940,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance/languages","html_url":"https://gitea.g-hi.com/luoanwu/platform-governance","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/platform-governance.git","clone_url":"https://gitea.g-hi.com/luoanwu/platform-governance.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":4,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-15T11:53:24+08:00","updated_at":"2026-09-19T16:00:18+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"}}...
|
push
|
1
|
4
|
1789810068
|
1789810083
|
0
|
1789810066
|
1789810083
|
|
|
0
|
Edit
Delete
|
|
24233
|
feat(workbench): 服务目录加序号列——当前取景下的行号,分组视图连续编
|
116
|
5
|
platform.yml
|
179
|
5
|
0
|
refs/heads/main
|
bb63a0cca03aa4f7e67a8e2630c52788de87708c
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8f5832b626a294a43810b2f6939e59e93a341283","after":"bb63a0cca03aa4f7e67a8e2630c52788de87708c","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/8f5832b626a294a43810b2f6939e59e93a341283...bb63a0cca03aa4f7e67a8e2630c52788de87708c","commits":[{"id":"bb63a0cca03aa4f7e67a8e2630c52788de87708c","message":"feat(workbench): 服务目录加序号列——当前取景下的行号,分组视图连续编\n\n表格最左加一列 #。口径写在表头 title 与读屏可见的 \u003ccaption\u003e 里:它是**取景产物**,\n答的是「当前这一屏的第几行」,筛选 / 排序 / 分组一变就跟着变,**不是条目的固定编号**;\n要稳定指代条目仍用条目名下面的 id。\n\n三处刻意的取舍:\n- 分组视图下**连续编号**,不在每组内从 1 重来——重置会让同一个数字在一页里出现好几次,\n 而「第 7 行」正是拿它来指路的场合。\n- 这一列**不可排序**:它没有可排的取值,给它挂排序等于自我指涉。\n- 偏移用 map 出的派生数组算,不按下标取。仓里开了 noUncheckedIndexedAccess,\n `groupOffsets[groupIndex]` 是 number | undefined,用 `?? 0` 兜会把编号错位悄悄吞掉。\n\n实测:dev :3010 默认视图 1…19;?group=layer 下 P0 组 1—10、P1 组从 11 接着编;\n?layer=P2\u0026sort=-name 筛出 3 条后重编 1—3;入口 :58080 重建产物后同样;375px 窄屏不挤版。\ntypecheck / lint 均 0 error。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/bb63a0cca03aa4f7e67a8e2630c52788de87708c","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-19T02:24:55-07:00","added":[],"removed":[],"modified":["runtime/apps/workbench/src/components/catalog/catalog-table.tsx"]}],"total_commits":0,"head_commit":{"id":"bb63a0cca03aa4f7e67a8e2630c52788de87708c","message":"feat(workbench): 服务目录加序号列——当前取景下的行号,分组视图连续编\n\n表格最左加一列 #。口径写在表头 title 与读屏可见的 \u003ccaption\u003e 里:它是**取景产物**,\n答的是「当前这一屏的第几行」,筛选 / 排序 / 分组一变就跟着变,**不是条目的固定编号**;\n要稳定指代条目仍用条目名下面的 id。\n\n三处刻意的取舍:\n- 分组视图下**连续编号**,不在每组内从 1 重来——重置会让同一个数字在一页里出现好几次,\n 而「第 7 行」正是拿它来指路的场合。\n- 这一列**不可排序**:它没有可排的取值,给它挂排序等于自我指涉。\n- 偏移用 map 出的派生数组算,不按下标取。仓里开了 noUncheckedIndexedAccess,\n `groupOffsets[groupIndex]` 是 number | undefined,用 `?? 0` 兜会把编号错位悄悄吞掉。\n\n实测:dev :3010 默认视图 1…19;?group=layer 下 P0 组 1—10、P1 组从 11 接着编;\n?layer=P2\u0026sort=-name 筛出 3 条后重编 1—3;入口 :58080 重建产物后同样;375px 窄屏不挤版。\ntypecheck / lint 均 0 error。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/bb63a0cca03aa4f7e67a8e2630c52788de87708c","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-19T02:24:55-07:00","added":[],"removed":[],"modified":["runtime/apps/workbench/src/components/catalog/catalog-table.tsx"]},"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":23650,"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-19T16:51:46+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"}}...
|
push
|
2
|
30
|
1789810084
|
1789810123
|
0
|
1789810067
|
1789810153
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
24234
|
docs(决策): DEC-041 零运行面契约域收编为平台运行时模块 + CHG-022 受控变更 docs(决策): DEC-041 零运行面契约域收编为平台运行时模块 + CHG-022 受控变更包(均待签署)...
|
117
|
5
|
governance.yml
|
82
|
5
|
0
|
refs/heads/main
|
87c3722f6c778c786ea50eba75bc5806fa300b0b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"7ad320a65b921c9d68a4ab48df81241998e64867","after":"87c3722f6c778c786ea50eba75bc5806fa300b0b","compare_url":"https://gitea.g-hi.com/luoanwu/platform-governance/compare/7ad320a65b921c9d68a4ab48df81241998e64867...87c3722f6c778c786ea50eba75bc5806fa300b0b","commits":[{"id":"87c3722f6c778c786ea50eba75bc5806fa300b0b","message":"docs(决策): DEC-041 零运行面契约域收编为平台运行时模块 + CHG-022 受控变更包(均待签署)\n\n目录负责人 2026-09-19 提出「调度跨域、企业 IM、数据分析、统一体验、成本容量 + 应用与\n契约注册中心,应该直接放到企业控制面作为运行时模块;企业控制面要支持运行时模块的新增\n和删除」。该指示与已批准的 决策批次-2026-09-16 C-3 相反——C-3 的承接表把这几项裁给上层\n既有宿主,附条件「不新增 M8」「宿主协议签收才算准入」——故先成裁决材料,批准后实现才有依据。\n\n范围与 DEC-040 / CHG-021 划清:那一对管 C11—C13 三条有真实现的托管能力,本对管六个\n零运行面的域(C15 / C16 / C17 / C18 / C19 + C01)。两包独立签署、互不为前置(目录负责人当日定案)。\n\nDEC-041 草案(待批准):\n- Q01 备选条款是唯一合法入口,其触发条件经实测成立,且成立得比该条款预想的彻底:C-3\n 指定的五个宿主里三个不存在——C17「已有分析产品宿主」在业务应用层四个 + 企业领域应用层\n 四个里无一是分析产品;C19「复用 C17」随之落空;C15「业务应用的托管流程执行器」全工作区\n grep 零命中,最接近的工单仓 AutomationRun.ticketId 是必填外键 + onDelete Cascade,绑死\n 单张工单。一个须新建(C16 要的 Conversation/Membership/Message 工单 schema 里没有,而\n C-3 自己要求与 TicketMessage 分开),一个不是状态宿主(C18)。不是「评估后认为不足」,\n 是没有评估对象。\n- 补齐 Q01 要求的两个宿主方案成本与迁移影响对比(不做这张表,本裁决不满足自己的准入条件):\n 逐域给 C-3 指定者 + 全工作区内另找的最接近者,两个候选都评。\n- 一处此前没有材料提过的事实:这六项的 Catalog hosted_by 早就是 enterprise-platform。\n 登记面一直说它们归控制面,是 C-3 把运行宿主裁给了上层——本件是把裁决对齐到登记,\n 不是反过来。另引 workspace.json 2026-09-19 才补入的 layers[].responsibility 作为层职责口径\n (应然口径,不作现状证据)。\n- 建议 Decision 八条:provides 全空不动 kernel(exact pin 不受影响)/「不新增 M8」改写为\n 九项准入标准而非删除(Q01「不得以方便实现自动新增」保留,从「不许新增」变成「不许绕过\n 准入条件新增」)/ 先契约后实现 / 六域起 shape,升 authority 各需一条新的已批准 DEC,本件\n 不代批 / Fact 按 DEC-038(仍 pending)停在候选 / 验收等级不升不降(六域本就 candidate_e0\n E0,与 DEC-040 那三条 E2→E0 相反,两份材料别串)/ 无消费者的模块只能停 shape / 退役机制\n 与本件同批建。末两条为目录负责人当日对原待定项 B / C 的定案。\n- 第 7 条的后果已写明:六域今天零消费者,与「shape 不得有迁移」叠加,等于第一个真实消费者\n 出现前一个都不能升 authority、也建不了权威表。这是已决且尚未满足,不是未决。\n\nCHG-022 材料(待 DEC-041 批准 + Catalog Owner 签署,本包未改动任何文件):\n- 四份 delta:decisions / platform-projects / modules / catalog-map,各带当前值与目标值。\n platform-projects 每条另列 unchanged 段,把「六域只改 form、hosted_by 与验收等级都不动」\n 与 CHG-021 三条的相反处置区分开。\n- §4A 八步应用顺序,每步注明为什么在那一位;六个模块可分批,但每批内部第 3—7 步必须同一提交,\n 否则 catalog:drift(2026-09-17 起 drift 档一律阻断)在中间态判红。\n- 第 8 步是退役机制:今天 runtime/modules.json 没有任何退役表达(无 retirement 字段、无\n directory: null 等价物),删目录 + 删登记行之后 check:modules 反而是绿的——这正是 Q01 要求\n 宿主提供「退出保障」的那一条,对控制面自己同样不成立的地方。没有退役路径,「支持新增」\n 就是单向门。\n- 顺带记录一处由 CHG-021 的 catalog-map.delta.json 查明、本包据以补进准入第 1 条的判据:\n 每个新模块必须在 governance/catalog-map.json 显式登记 模块 id → Catalog id 的映射,不靠\n 同名推断(既有 identity→enterprise-idp 就不同名),漏掉则 build-workbench-snapshots 报\n MODULE_WITHOUT_CATALOG_ENTRY、check:catalog 对账同时判红。\n\n收纳表随之改数:doc/ 160 → 166,编号区间跟到 041 / 022。\n\n配套的两份设计文档在真源仓 docs/能力设计/(九域模块化落地设计、运行时模块进出机制设计),\n本次不在治理仓提交范围内。\n\n自检:四份 delta JSON 合法;六份文件的相对链接逐条验在;治理层一致性检查 CLEAN\n(14 仓 / 8377 文件 / 4507 链接)——它只扫已跟踪文件,本批提交后才算机器验过。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/87c3722f6c778c786ea50eba75bc5806fa300b0b","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-19T02:36:03-07:00","added":["平台治理/doc/decisions/CHG-022-材料/README.md","平台治理/doc/decisions/CHG-022-材料/catalog-map.delta.json","平台治理/doc/decisions/CHG-022-材料/decisions.delta.json","平台治理/doc/decisions/CHG-022-材料/modules.delta.json","平台治理/doc/decisions/CHG-022-材料/platform-projects.delta.json","平台治理/doc/decisions/DEC-041-零运行面契约域收编为平台运行时模块-草案.md"],"removed":[],"modified":["平台治理/README.md"]}],"total_commits":0,"head_commit":{"id":"87c3722f6c778c786ea50eba75bc5806fa300b0b","message":"docs(决策): DEC-041 零运行面契约域收编为平台运行时模块 + CHG-022 受控变更包(均待签署)\n\n目录负责人 2026-09-19 提出「调度跨域、企业 IM、数据分析、统一体验、成本容量 + 应用与\n契约注册中心,应该直接放到企业控制面作为运行时模块;企业控制面要支持运行时模块的新增\n和删除」。该指示与已批准的 决策批次-2026-09-16 C-3 相反——C-3 的承接表把这几项裁给上层\n既有宿主,附条件「不新增 M8」「宿主协议签收才算准入」——故先成裁决材料,批准后实现才有依据。\n\n范围与 DEC-040 / CHG-021 划清:那一对管 C11—C13 三条有真实现的托管能力,本对管六个\n零运行面的域(C15 / C16 / C17 / C18 / C19 + C01)。两包独立签署、互不为前置(目录负责人当日定案)。\n\nDEC-041 草案(待批准):\n- Q01 备选条款是唯一合法入口,其触发条件经实测成立,且成立得比该条款预想的彻底:C-3\n 指定的五个宿主里三个不存在——C17「已有分析产品宿主」在业务应用层四个 + 企业领域应用层\n 四个里无一是分析产品;C19「复用 C17」随之落空;C15「业务应用的托管流程执行器」全工作区\n grep 零命中,最接近的工单仓 AutomationRun.ticketId 是必填外键 + onDelete Cascade,绑死\n 单张工单。一个须新建(C16 要的 Conversation/Membership/Message 工单 schema 里没有,而\n C-3 自己要求与 TicketMessage 分开),一个不是状态宿主(C18)。不是「评估后认为不足」,\n 是没有评估对象。\n- 补齐 Q01 要求的两个宿主方案成本与迁移影响对比(不做这张表,本裁决不满足自己的准入条件):\n 逐域给 C-3 指定者 + 全工作区内另找的最接近者,两个候选都评。\n- 一处此前没有材料提过的事实:这六项的 Catalog hosted_by 早就是 enterprise-platform。\n 登记面一直说它们归控制面,是 C-3 把运行宿主裁给了上层——本件是把裁决对齐到登记,\n 不是反过来。另引 workspace.json 2026-09-19 才补入的 layers[].responsibility 作为层职责口径\n (应然口径,不作现状证据)。\n- 建议 Decision 八条:provides 全空不动 kernel(exact pin 不受影响)/「不新增 M8」改写为\n 九项准入标准而非删除(Q01「不得以方便实现自动新增」保留,从「不许新增」变成「不许绕过\n 准入条件新增」)/ 先契约后实现 / 六域起 shape,升 authority 各需一条新的已批准 DEC,本件\n 不代批 / Fact 按 DEC-038(仍 pending)停在候选 / 验收等级不升不降(六域本就 candidate_e0\n E0,与 DEC-040 那三条 E2→E0 相反,两份材料别串)/ 无消费者的模块只能停 shape / 退役机制\n 与本件同批建。末两条为目录负责人当日对原待定项 B / C 的定案。\n- 第 7 条的后果已写明:六域今天零消费者,与「shape 不得有迁移」叠加,等于第一个真实消费者\n 出现前一个都不能升 authority、也建不了权威表。这是已决且尚未满足,不是未决。\n\nCHG-022 材料(待 DEC-041 批准 + Catalog Owner 签署,本包未改动任何文件):\n- 四份 delta:decisions / platform-projects / modules / catalog-map,各带当前值与目标值。\n platform-projects 每条另列 unchanged 段,把「六域只改 form、hosted_by 与验收等级都不动」\n 与 CHG-021 三条的相反处置区分开。\n- §4A 八步应用顺序,每步注明为什么在那一位;六个模块可分批,但每批内部第 3—7 步必须同一提交,\n 否则 catalog:drift(2026-09-17 起 drift 档一律阻断)在中间态判红。\n- 第 8 步是退役机制:今天 runtime/modules.json 没有任何退役表达(无 retirement 字段、无\n directory: null 等价物),删目录 + 删登记行之后 check:modules 反而是绿的——这正是 Q01 要求\n 宿主提供「退出保障」的那一条,对控制面自己同样不成立的地方。没有退役路径,「支持新增」\n 就是单向门。\n- 顺带记录一处由 CHG-021 的 catalog-map.delta.json 查明、本包据以补进准入第 1 条的判据:\n 每个新模块必须在 governance/catalog-map.json 显式登记 模块 id → Catalog id 的映射,不靠\n 同名推断(既有 identity→enterprise-idp 就不同名),漏掉则 build-workbench-snapshots 报\n MODULE_WITHOUT_CATALOG_ENTRY、check:catalog 对账同时判红。\n\n收纳表随之改数:doc/ 160 → 166,编号区间跟到 041 / 022。\n\n配套的两份设计文档在真源仓 docs/能力设计/(九域模块化落地设计、运行时模块进出机制设计),\n本次不在治理仓提交范围内。\n\n自检:四份 delta JSON 合法;六份文件的相对链接逐条验在;治理层一致性检查 CLEAN\n(14 仓 / 8377 文件 / 4507 链接)——它只扫已跟踪文件,本批提交后才算机器验过。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/platform-governance/commit/87c3722f6c778c786ea50eba75bc5806fa300b0b","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-19T02:36:03-07:00","added":["平台治理/doc/decisions/CHG-022-材料/README.md","平台治理/doc/decisions/CHG-022-材料/catalog-map.delta.json","平台治理/doc/decisions/CHG-022-材料/decisions.delta.json","平台治理/doc/decisions/CHG-022-材料/modules.delta.json","平台治理/doc/decisions/CHG-022-材料/platform-projects.delta.json","平台治理/doc/decisions/DEC-041-零运行面契约域收编为平台运行时模块-草案.md"],"removed":[],"modified":["平台治理/README.md"]},"repository":{"id":117,"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":"platform-governance","full_name":"luoanwu/platform-governance","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":11981,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance/languages","html_url":"https://gitea.g-hi.com/luoanwu/platform-governance","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/platform-governance","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/platform-governance.git","clone_url":"https://gitea.g-hi.com/luoanwu/platform-governance.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":4,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-15T11:53:24+08:00","updated_at":"2026-09-19T17:27:46+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"}}...
|
push
|
1
|
4
|
1789810841
|
1789810856
|
0
|
1789810841
|
1789810856
|
|
|
0
|
Edit
Delete
|
|
24235
|
chore(reports): runtime 治理报告十六份回绑 —— 序号列提交落进其作用域
|
116
|
5
|
platform.yml
|
180
|
5
|
0
|
refs/heads/main
|
35302bb5d50d227f0b40a50b4f88dec89865b3a2
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"bb63a0cca03aa4f7e67a8e2630c52788de87708c","after":"35302bb5d50d227f0b40a50b4f88dec89865b3a2","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/bb63a0cca03aa4f7e67a8e2630c52788de87708c...35302bb5d50d227f0b40a50b4f88dec89865b3a2","commits":[{"id":"35302bb5d50d227f0b40a50b4f88dec89865b3a2","message":"chore(reports): runtime 治理报告十六份回绑 —— 序号列提交落进其作用域\n\nbb63a0c(工作台序号列)落在 runtime/reports/runtime-governance.latest.json 的作用域内,\ncheck:evidence 判它 error(绑定 a4ba565 之后作用域内有 1 个文件变更)。跑 pnpm --dir runtime\ncheck:governance 重出(该聚合会一并重写同目录十六份),provenance dirty=false——runtime 级报告\n的脏判定只看 runtime/ 子树,而并行会话此刻的在途文件都在 stack/ 与 governance/ 下。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/35302bb5d50d227f0b40a50b4f88dec89865b3a2","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-19T02:40:17-07:00","added":[],"removed":[],"modified":["runtime/reports/agent-adapters.latest.json","runtime/reports/conformance-matrix.latest.json","runtime/reports/contract-consumers.latest.json","runtime/reports/docs-truth.latest.json","runtime/reports/dual-backend-parity.latest.json","runtime/reports/fork-readiness.latest.json","runtime/reports/governance-docs.latest.json","runtime/reports/governance-rules.latest.json","runtime/reports/governance-status.latest.json","runtime/reports/governance.latest.json","runtime/reports/migrations.latest.json","runtime/reports/naming.latest.json","runtime/reports/runtime-governance.latest.json","runtime/reports/schema-sync.latest.json","runtime/reports/statemachine-write-guard.latest.json","runtime/reports/validation-source.latest.json"]},{"id":"87a23ad19a567838ae9cdebbfa7f940cf0e59845","message":"chore(reports): Alertmanager 提交影响的门禁回绑 @ 594cc29 —— 五份;工作台两份快照 @ 92d62b3\n\n经 pnpm reports:rebind 在 HEAD 干净检出里重跑(零依赖门禁,临时检出不装依赖),七份\nprovenance 均 worktreeDirty=false。\n\n- 绑 594cc29(Alertmanager 提交):caddy、otel、doc-claims、stub-surface、module-imports。\n 其中 otel 是本次改动直接触及的(直抓目标 5 → 6、掉线告警覆盖 alertmanager);caddy 因\n 作用域含 stack/compose.yaml 与 otel-attributes.json;doc-claims 因作用域含 docs/runbook.md;\n stub-surface 与 module-imports 这两份在本次改动前就已过期——bb63a0c 改了\n runtime/apps/workbench 的源码却没跟 chore(reports),顺带一并清掉。\n- 绑 92d62b3(并行会话的 deployed-runtime 回绑):工作台目录与运维两份快照。工具按当前\n HEAD 生成,故与上面五份不同 sha;两者都在 HEAD 历史上,各自作用域内无后续变更。\n\n回绑后 check:evidence 的 error 档清零。仍为 warn 的几份需要构建产物或运行环境,不在零依赖\n回绑工具范围:release-manifest、sbom、runtime-acceptance、ui-acceptance。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/87a23ad19a567838ae9cdebbfa7f940cf0e59845","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-19T02:38:51-07:00","added":[],"removed":[],"modified":["reports/caddy.latest.json","reports/doc-claims.latest.json","reports/module-imports.latest.json","reports/otel.latest.json","reports/stub-surface.latest.json","reports/workbench-catalog-snapshot.latest.json","reports/workbench-ops-snapshot.latest.json"]},{"id":"c0c135e2113b8035d2eed751cdffbaaf9e36b162","message":"docs(能力设计): 九域模块化落地设计 + 运行时模块进出机制设计(依赖 DEC-041 / CHG-022 签署)\n\n治理仓 87c3722 落了 DEC-041(零运行面契约域收编为平台运行时模块)与 CHG-022 受控变更包;\n本批是它们在真源仓的配套设计。签署前 决策批次-2026-09-16 C-3 的承接表仍是生效裁决,\n两份文件的任何一格都不得开工。\n\n九域模块化落地设计:\n- 六个模块的登记形状定到可直接抄进 runtime/modules.json 的程度:id = profile、package、\n prismaAccessor 与库名一律「模块 id 去连字符」(沿用 ai-gateway → aigateway / platform_aigateway\n 的既有惯例,与同日 CHG-021 三条同规则,不为好看改短名)、provides 一律空数组、\n blocked_by 一律 DEC-041、state 起 shape。\n- provides 空数组是最关键的一条约束:九域不提供任何内核端口,因此不需要动 @juhai/kernel,\n exact pin 不受影响。若将来某域确需新端口,那是基础框架层的独立裁决。\n- state 阶梯写明 authority 卡两道:既缺授权建权威表的已批准 DEC(identity 用 DEC-032、\n C11—C13 用 DEC-040,六域没有对应物,DEC-041 第 4 条明确不代批),又缺消费者(DEC-041\n 第 7 条 2026-09-19 定案不放宽)。这是已决且尚未满足,不是未决。\n- §4 列出落一个模块要动的 13 道门禁及建议顺序,其中两条最容易漏:governance/catalog-map.json\n 必须显式补 模块 id → Catalog id 的映射(不靠同名推断——既有 identity→enterprise-idp 就不同名,\n 漏掉则 build-workbench-snapshots 报 MODULE_WITHOUT_CATALOG_ENTRY、check:catalog 对账同时判红),\n 以及 check:stub-surface 的四个清单数字与 CLAUDE.md 的声明被 S6 绑死、每落一个模块要同步改一次。\n Catalog 那一步必须与 modules.json 同一个提交,否则 catalog:drift(2026-09-17 起 drift 档一律阻断)\n 在中间态判红。\n- §5 说明 C11—C13 不在本设计范围(归 DEC-040 / CHG-021),列出两边共享的三条结论,以及一条\n 只对那三条成立、对六域不成立的代价:它们 module_e2 / E2 要降到 candidate_e0 / E0,而六域本就是 E0。\n\n运行时模块进出机制设计:\n- §0 记录今天的实况:新增有路径(modules.json 登记 + check-modules 校验 + profiles.ts 按\n PLATFORM_PROFILES 动态 import,三处拼起来才看得全),退役完全没有——没有 retirement 字段、\n 没有 directory: null 等价物,删目录 + 删登记行之后 check:modules 反而是绿的,库也留在底座上\n 没有任何登记说它该保留还是删除。这正是 Q01 要求宿主提供「退出保障」的那一条,对控制面\n 自己同样不成立的地方。Catalog 侧早有成熟先例(18 个派生仓退役用 directory: null + retirement),\n 本设计把同一套口径下沉到模块登记。\n- §1 新增九步,第 4 步是「退役路径先写」——进来之前先说清怎么出去;§3 退役三原则与 retirement\n 登记形状(retiredAt / decisionRef / packageRemoved / database.disposition / portsFallback /\n consumerMigration,字段义务逐条写明);§3.3 要改的三处代码:check-modules.mjs 认 retirement\n 并改校验对象、profiles.ts 把退役模块排除出 known 且错误消息要带 retiredAt 与 decisionRef、\n check-stub-surface.mjs 扫描面排除退役模块。prismaAccessor 与 database 的唯一性继续对退役条目\n 生效——退役不是让出名字。\n- §4 用目录负责人举的「流程状态设计管理服务」走一遍,并先划清它与 C15 的边界:设计态出定义、\n 运行态吃定义,两者不共库、经契约相连。结论是机制建成后新增一个服务的技术工作量全在机械步骤\n (第 5—9 步),真正的工作在第 1—4 步的裁决与协议——这正是把闸从「模块数量」换成「准入标准」的意义。\n- §5 列出对工作台的三项影响(「已装载模块 N/M」的分母要改成未退役的登记数、退役模块单列一档\n 而不是从列表消失、服务目录「环境」列口径不变)。\n- §7 记录不做运行期热插拔的四条理由:Nest DynamicModule 的端口束在启动时一次合成、Prisma\n 一模块一库的连接池与在途事务、fail-closed 会多出第三种中间态而消费侧分支只按前两种写、\n 模块进出是季度级动作。\n\n两份均为设计,不含任何登记或代码改动:本次提交不动 runtime/modules.json、contracts/catalogs/、\ngovernance/ 与任何模块目录。工作树里五份 reports/*.latest.json 的改动属并行会话,未随本提交带走。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/c0c135e2113b8035d2eed751cdffbaaf9e36b162","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-19T02:38:37-07:00","added":["docs/能力设计/九域模块化落地设计.md","docs/能力设计/运行时模块进出机制设计.md"],"removed":[],"modified":[]},{"id":"92d62b3f9cefbe46854f87cf4b2fb5ddf63004c5","message":"chore(reports): deployed-runtime 回绑 @ f0be572 —— 常驻容器跑的是 bb63a0c 的镜像\n\n在 .worktrees/image-bb63a0c 的干净检出(f0be572,0 个变更)里跑 check:deployed --write-report:\npassed,容器 1 个,期望镜像 01edea201c85 @ bb63a0c,IMAGE_SOURCE_EQUIVALENT。\n主工作树此刻仍有并行会话的在途文件,故报告在干净检出里生成后拷回(仓纪律 5 / 偏差 #34-A 同款做法)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/92d62b3f9cefbe46854f87cf4b2fb5ddf63004c5","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-19T02:38:04-07:00","added":[],"removed":[],"modified":["reports/deployed-runtime.latest.json"]},{"id":"f0be572e09ebf474b528456d81ed1fa6f4333d5d","message":"chore(reports): 镜像与冒烟回绑 @ bb63a0c —— 序号列提交后重建并切换常驻运行时\n\nbb63a0c 动的是 runtime/apps/workbench/src/**(运行时镜像输入),check:deployed 随即判\nBUILT_IMAGE_SOURCE_BEHIND。本轮重建并切换:\n\n- 主工作树此刻有并行会话的 7 个在途文件(stack/compose.yaml、三份 otel 配置、两个 overlay、\n otel-attributes.json),直接建会把 worktreeDirty 记成 true 而该项是 error。故在\n .worktrees/image-bb63a0c 的干净检出(HEAD=bb63a0c,0 个变更)里 image:build:\n enterprise-platform/runtime:bb63a0cca03a,contextMode=head,worktreeDirty=false。\n- 冒烟 6/6(单 profile、Redis 逻辑库 15、:53009),报告同样绑 bb63a0c / dirty=false。\n- docker compose … up -d --no-deps runtime 切换,healthy;容器内 PLATFORM_SOURCE_SHA=bb63a0c,\n /api/health 200、/api/platform/catalog 200(19 条、schema 4)。--no-deps 未把并行会话在途的\n alertmanager 服务带起来(那个容器是它自己 09:23 起的,我的命令在 09:36)。\n- check:deployed failed → passed(IMAGE_SOURCE_EQUIVALENT)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/f0be572e09ebf474b528456d81ed1fa6f4333d5d","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-19T02:37:31-07:00","added":[],"removed":[],"modified":["reports/image-digest.json","reports/image-smoke.latest.json"]}],"total_commits":0,"head_commit":{"id":"35302bb5d50d227f0b40a50b4f88dec89865b3a2","message":"chore(reports): runtime 治理报告十六份回绑 —— 序号列提交落进其作用域\n\nbb63a0c(工作台序号列)落在 runtime/reports/runtime-governance.latest.json 的作用域内,\ncheck:evidence 判它 error(绑定 a4ba565 之后作用域内有 1 个文件变更)。跑 pnpm --dir runtime\ncheck:governance 重出(该聚合会一并重写同目录十六份),provenance dirty=false——runtime 级报告\n的脏判定只看 runtime/ 子树,而并行会话此刻的在途文件都在 stack/ 与 governance/ 下。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/35302bb5d50d227f0b40a50b4f88dec89865b3a2","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-19T02:40:17-07:00","added":[],"removed":[],"modified":["runtime/reports/agent-adapters.latest.json","runtime/reports/conformance-matrix.latest.json","runtime/reports/contract-consumers.latest.json","runtime/reports/docs-truth.latest.json","runtime/reports/dual-backend-parity.latest.json","runtime/reports/fork-readiness.latest.json","runtime/reports/governance-docs.latest.json","runtime/reports/governance-rules.latest.json","runtime/reports/governance-status.latest.json","runtime/reports/governance.latest.json","runtime/reports/migrations.latest.json","runtime/reports/naming.latest.json","runtime/reports/runtime-governance.latest.json","runtime/reports/schema-sync.latest.json","runtime/reports/statemachine-write-guard.latest.json","runtime/reports/validation-source.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":23659,"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:27:48+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"}}...
|
push
|
2
|
30
|
1789810869
|
1789810909
|
0
|
1789810868
|
1789810939
|
group: platform-${{ github.workflow }}-${{ github. group: platform-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
platform-platform.yml-refs/heads/main
|
0
|
Edit
Delete
|