|
26408
|
docs(governance): record completed static and evid docs(governance): record completed static and evidence verification for kernel 0.27...
|
135
|
5
|
governance.yml
|
13
|
5
|
0
|
refs/heads/main
|
6b4743d345460a8e8b1dff7e2c6ed259357ce62b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"9ae301c3f85add3196e697922b824bbd97d0fde0","after":"6b4743d345460a8e8b1dff7e2c6ed259357ce62b","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/compare/9ae301c3f85add3196e697922b824bbd97d0fde0...6b4743d345460a8e8b1dff7e2c6ed259357ce62b","commits":[{"id":"6b4743d345460a8e8b1dff7e2c6ed259357ce62b","message":"docs(governance): record completed static and evidence verification for kernel 0.27\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/6b4743d345460a8e8b1dff7e2c6ed259357ce62b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-23T20:30:39-07:00","added":[],"removed":[],"modified":["reports/agent-adapters.latest.json","reports/ci-evidence.latest.json","reports/conformance-matrix.latest.json","reports/consumer-profile027.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/evidence-current.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-kit.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"60ccfff88103e894e724e794a9aefce711f240f1","message":"test(kernel): record clean Zod4 runtime, four-axis UI and cumulative migration evidence\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/60ccfff88103e894e724e794a9aefce711f240f1","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-23T20:01:32-07:00","added":["reports/consumer-profile027.latest.json","reports/governance-kit.latest.json","reports/kernel-consumer-migration.latest.json"],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/ci-evidence.latest.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"d6b14039a9ee58b22fbc5d90036e537af866ffac","message":"fix(evidence): verify clean source successors and exact generated SHA updates\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/d6b14039a9ee58b22fbc5d90036e537af866ffac","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-23T19:53:54-07:00","added":["scripts/lib/acceptance-successor.mjs","scripts/lib/acceptance-successor.test.mjs"],"removed":[],"modified":["CLAUDE.md","docs/kernel-027-migration.md","governance/framework-consumer.json","scripts/check-evidence-current.mjs"]},{"id":"dfb9ffdabe2c7506eca50dbca5987f018ffd63dc","message":"fix(kernel): apply cumulative fact-intent RLS prerequisites without rewriting history\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/dfb9ffdabe2c7506eca50dbca5987f018ffd63dc","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-23T19:33:38-07:00","added":["apps/api-fastify/prisma/migrations/20261024021000_kernel_027_fact_intents/migration.sql","apps/api-nestjs/prisma/migrations/20261024021000_kernel_027_fact_intents/migration.sql"],"removed":[],"modified":["COMPATIBILITY.md","apps/api-fastify/prisma/schema.prisma","apps/api-nestjs/prisma/schema.prisma","docs/kernel-027-migration.md"]},{"id":"fbf47beb02d5e7785a8672ef47cd338896df7526","message":"fix(build): retain config workspace inputs in isolated image build\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/fbf47beb02d5e7785a8672ef47cd338896df7526","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-23T19:25:35-07:00","added":[],"removed":[],"modified":["apps/api-nestjs/Dockerfile"]}],"total_commits":0,"head_commit":{"id":"6b4743d345460a8e8b1dff7e2c6ed259357ce62b","message":"docs(governance): record completed static and evidence verification for kernel 0.27\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/6b4743d345460a8e8b1dff7e2c6ed259357ce62b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-23T20:30:39-07:00","added":[],"removed":[],"modified":["reports/agent-adapters.latest.json","reports/ci-evidence.latest.json","reports/conformance-matrix.latest.json","reports/consumer-profile027.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/evidence-current.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-kit.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},"repository":{"id":135,"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":"juhai-thing-cloud","full_name":"luoanwu/juhai-thing-cloud","description":"物云:02「物」域应用,自设备云 juhai-device-cloud 4652ce0 分叉","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":3111,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-thing-cloud.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-12T21:14:44+08:00","updated_at":"2026-10-23T09:55:35+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
10
|
1792812701
|
1792812764
|
0
|
1792812701
|
1792813919
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
26354
|
test(bp10): record independent input capture regre test(bp10): record independent input capture regression review...
|
135
|
5
|
governance.yml
|
12
|
5
|
0
|
refs/heads/main
|
9ae301c3f85add3196e697922b824bbd97d0fde0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"6d4dd1aab352d05d4049a7098fdec8443188ded5","after":"9ae301c3f85add3196e697922b824bbd97d0fde0","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/compare/6d4dd1aab352d05d4049a7098fdec8443188ded5...9ae301c3f85add3196e697922b824bbd97d0fde0","commits":[{"id":"9ae301c3f85add3196e697922b824bbd97d0fde0","message":"test(bp10): record independent input capture regression review\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/9ae301c3f85add3196e697922b824bbd97d0fde0","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-22T18:55:12-07:00","added":["reports/bp10-independent-review.latest.json"],"removed":[],"modified":["reports/evidence-current.latest.json"]},{"id":"46c0814a0ee61ad34a3530615115d7bdf2f92ba3","message":"docs(evidence): close BP10 current runtime UI and content-hash checks\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/46c0814a0ee61ad34a3530615115d7bdf2f92ba3","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-22T18:42:31-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/bp10-acceptance.latest.json","reports/ci-evidence.latest.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/evidence-current.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"87c294b3e230605a711651020e90bbdff05b59fb","message":"docs: separate BP10 targeted and current-source acceptance status\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/87c294b3e230605a711651020e90bbdff05b59fb","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-22T18:28:19-07:00","added":["reports/bp10-acceptance.latest.json"],"removed":[],"modified":["CLAUDE.md","README.md"]},{"id":"3e2ae5103dbf55f0580e24d608401d5a66fcc35a","message":"docs(evidence): retain BP10 fixed consumer isolated regression and static checks\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/3e2ae5103dbf55f0580e24d608401d5a66fcc35a","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-22T18:18:55-07:00","added":["docs/evidence/2026-10-22-bp10-input-capture/client-dependencies.json","docs/evidence/2026-10-22-bp10-input-capture/evidence-manifest.json","docs/evidence/2026-10-22-bp10-input-capture/full-static.txt","docs/evidence/2026-10-22-bp10-input-capture/post-runtime.json","docs/evidence/2026-10-22-bp10-input-capture/runtime-input.json","docs/evidence/2026-10-22-bp10-input-capture/runtime-missing-dependency-failure.json","docs/evidence/2026-10-22-bp10-input-capture/runtime-missing-dependency-result.json","docs/evidence/2026-10-22-bp10-input-capture/runtime-missing-dependency.txt","docs/evidence/2026-10-22-bp10-input-capture/runtime-result.json","docs/evidence/2026-10-22-bp10-input-capture/runtime-summary.json","docs/evidence/2026-10-22-bp10-input-capture/runtime.txt","docs/evidence/2026-10-22-bp10-input-capture/s3-summary.json","docs/evidence/2026-10-22-bp10-input-capture/static-relocation-failure.txt","docs/evidence/2026-10-22-bp10-input-capture/verification-summary.json"],"removed":[],"modified":["docs/evidence/2026-10-22-bp10-input-capture/README.md","reports/agent-adapters.latest.json","reports/ci-evidence.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"26172c56e4b2664cb200494b1395a1b7f5d79bdb","message":"docs(evidence): retain static checks and fixed consumer build receipt\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/26172c56e4b2664cb200494b1395a1b7f5d79bdb","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-22T18:14:02-07:00","added":["docs/evidence/2026-10-22-bp10-input-capture/consumer-build.txt","docs/evidence/2026-10-22-bp10-input-capture/static-before-dependencies.txt","docs/evidence/2026-10-22-bp10-input-capture/static-quick.txt"],"removed":[],"modified":["docs/evidence/2026-10-22-bp10-input-capture/README.md"]}],"total_commits":0,"head_commit":{"id":"9ae301c3f85add3196e697922b824bbd97d0fde0","message":"test(bp10): record independent input capture regression review\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/9ae301c3f85add3196e697922b824bbd97d0fde0","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-22T18:55:12-07:00","added":["reports/bp10-independent-review.latest.json"],"removed":[],"modified":["reports/evidence-current.latest.json"]},"repository":{"id":135,"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":"juhai-thing-cloud","full_name":"luoanwu/juhai-thing-cloud","description":"物云:02「物」域应用,自设备云 juhai-device-cloud 4652ce0 分叉","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2908,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-thing-cloud.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-12T21:14:44+08:00","updated_at":"2026-10-22T06:30: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
|
10
|
1792720535
|
1792720626
|
0
|
1792720535
|
1792720718
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
26204
|
chore(reports): bind retirement documentation chec chore(reports): bind retirement documentation checks at 18e4902...
|
135
|
5
|
governance.yml
|
11
|
5
|
0
|
refs/heads/main
|
6d4dd1aab352d05d4049a7098fdec8443188ded5
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"7e79d0fd34a9318d56c8e6cb27e93565e8dcfc7a","after":"6d4dd1aab352d05d4049a7098fdec8443188ded5","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/compare/7e79d0fd34a9318d56c8e6cb27e93565e8dcfc7a...6d4dd1aab352d05d4049a7098fdec8443188ded5","commits":[{"id":"6d4dd1aab352d05d4049a7098fdec8443188ded5","message":"chore(reports): bind retirement documentation checks at 18e4902\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/6d4dd1aab352d05d4049a7098fdec8443188ded5","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-20T04:35:04-07:00","added":[],"removed":[],"modified":["reports/docs-truth.latest.json","reports/governance-docs.latest.json"]},{"id":"18e49027ca858042a8c3b353d3e2cefb27442f52","message":"docs: retire device cloud source and fix historical recovery references\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/18e49027ca858042a8c3b353d3e2cefb27442f52","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-20T04:32:39-07:00","added":[],"removed":[],"modified":["CLAUDE.md","README.md","docs/domain/owner-matrix.md","docs/domain/thing-cloud-migration-plan.md"]}],"total_commits":0,"head_commit":{"id":"6d4dd1aab352d05d4049a7098fdec8443188ded5","message":"chore(reports): bind retirement documentation checks at 18e4902\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/6d4dd1aab352d05d4049a7098fdec8443188ded5","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-20T04:35:04-07:00","added":[],"removed":[],"modified":["reports/docs-truth.latest.json","reports/governance-docs.latest.json"]},"repository":{"id":135,"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":"juhai-thing-cloud","full_name":"luoanwu/juhai-thing-cloud","description":"物云:02「物」域应用,自设备云 juhai-device-cloud 4652ce0 分叉","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2721,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-thing-cloud.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-12T21:14:44+08:00","updated_at":"2026-10-19T01:04: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
|
10
|
1792496111
|
1792496201
|
0
|
1792496108
|
1792496234
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
26105
|
docs(governance): 修复迁仓后的失效链接,DEC-038 已批准的措辞(治理一致性 docs(governance): 修复迁仓后的失效链接,DEC-038 已批准的措辞(治理一致性 L4 / L10)...
|
135
|
5
|
governance.yml
|
10
|
5
|
0
|
refs/heads/main
|
7e79d0fd34a9318d56c8e6cb27e93565e8dcfc7a
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"82bc1aa0e448d79bcc3dbc3f9e0ecf618f9c37d8","after":"7e79d0fd34a9318d56c8e6cb27e93565e8dcfc7a","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/compare/82bc1aa0e448d79bcc3dbc3f9e0ecf618f9c37d8...7e79d0fd34a9318d56c8e6cb27e93565e8dcfc7a","commits":[{"id":"7e79d0fd34a9318d56c8e6cb27e93565e8dcfc7a","message":"docs(governance): 修复迁仓后的失效链接,DEC-038 已批准的措辞(治理一致性 L4 / L10)\n\n治理层门禁 2026-10-18 读数本仓 L4 17 条、L10 7 处(DEC-038 已于 10-15 批准)。\n\n- CHANGELOG.md、docs/migration-playbook.md、docs/platform-integration.md 里\n 随框架同步带来的 `../框架变更请求-*.md`、`../../../平台治理/基础/…` 相对链接\n 只在基础框架原位置成立,改指 platform-governance 固定提交 cc09b9cc 的\n Gitea 页面(工程基础框架/、平台治理/基础/)\n- docs/governance-gate-fixes-2026-10-11.md 的机器摘要在基础框架仓,改指\n base-framework 固定提交 083b36e9;docs/s2-device-loop.md 多写一层 `../`,\n 改到本仓 reports/s2-adversarial.latest.json\n- README、CLAUDE.md(AGENTS.md 为其链接)、客户服务蓝图、Owner 矩阵、\n 迁移准入与迁移方案:SupportCase 去向由「待 DEC-038」改为 DEC-038 已于\n 2026-10-15 批准 A-i(产品包整体迁智服仓、并入 ServiceCase,走 CHG,\n 尚未执行);CLAUDE.md 10-12 历史段落注明「当时未定」\n\n只改链接目标与状态措辞;migration-playbook 是弱指纹(只核 pinnedCommit),\n迁移凭证不受影响。check:quick 11/14(kernel-api、contract-consumers、\nfork-readiness 三项为 worktree 未装 @juhai/kernel),check:docs-truth 通过。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/7e79d0fd34a9318d56c8e6cb27e93565e8dcfc7a","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T09:46:51-07:00","added":[],"removed":[],"modified":["CHANGELOG.md","CLAUDE.md","README.md","docs/domain/customer-service-product-blueprint.md","docs/domain/owner-matrix.md","docs/domain/thing-cloud-migration-admission.md","docs/domain/thing-cloud-migration-plan.md","docs/governance-gate-fixes-2026-10-11.md","docs/migration-playbook.md","docs/platform-integration.md","docs/s2-device-loop.md"]}],"total_commits":0,"head_commit":{"id":"7e79d0fd34a9318d56c8e6cb27e93565e8dcfc7a","message":"docs(governance): 修复迁仓后的失效链接,DEC-038 已批准的措辞(治理一致性 L4 / L10)\n\n治理层门禁 2026-10-18 读数本仓 L4 17 条、L10 7 处(DEC-038 已于 10-15 批准)。\n\n- CHANGELOG.md、docs/migration-playbook.md、docs/platform-integration.md 里\n 随框架同步带来的 `../框架变更请求-*.md`、`../../../平台治理/基础/…` 相对链接\n 只在基础框架原位置成立,改指 platform-governance 固定提交 cc09b9cc 的\n Gitea 页面(工程基础框架/、平台治理/基础/)\n- docs/governance-gate-fixes-2026-10-11.md 的机器摘要在基础框架仓,改指\n base-framework 固定提交 083b36e9;docs/s2-device-loop.md 多写一层 `../`,\n 改到本仓 reports/s2-adversarial.latest.json\n- README、CLAUDE.md(AGENTS.md 为其链接)、客户服务蓝图、Owner 矩阵、\n 迁移准入与迁移方案:SupportCase 去向由「待 DEC-038」改为 DEC-038 已于\n 2026-10-15 批准 A-i(产品包整体迁智服仓、并入 ServiceCase,走 CHG,\n 尚未执行);CLAUDE.md 10-12 历史段落注明「当时未定」\n\n只改链接目标与状态措辞;migration-playbook 是弱指纹(只核 pinnedCommit),\n迁移凭证不受影响。check:quick 11/14(kernel-api、contract-consumers、\nfork-readiness 三项为 worktree 未装 @juhai/kernel),check:docs-truth 通过。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/7e79d0fd34a9318d56c8e6cb27e93565e8dcfc7a","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T09:46:51-07:00","added":[],"removed":[],"modified":["CHANGELOG.md","CLAUDE.md","README.md","docs/domain/customer-service-product-blueprint.md","docs/domain/owner-matrix.md","docs/domain/thing-cloud-migration-admission.md","docs/domain/thing-cloud-migration-plan.md","docs/governance-gate-fixes-2026-10-11.md","docs/migration-playbook.md","docs/platform-integration.md","docs/s2-device-loop.md"]},"repository":{"id":135,"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":"juhai-thing-cloud","full_name":"luoanwu/juhai-thing-cloud","description":"物云:02「物」域应用,自设备云 juhai-device-cloud 4652ce0 分叉","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2580,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-thing-cloud.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-12T21:14:44+08:00","updated_at":"2026-10-18T20:47:15+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
|
10
|
1792343159
|
1792343459
|
0
|
1792343044
|
1792343471
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
26090
|
Merge parallel device safeguards with S3 consumpti Merge parallel device safeguards with S3 consumption candidate...
|
135
|
5
|
governance.yml
|
9
|
5
|
0
|
refs/heads/main
|
82bc1aa0e448d79bcc3dbc3f9e0ecf618f9c37d8
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"6ee3dc2f44d19f9755063124bdc9efb68f8f5810","after":"82bc1aa0e448d79bcc3dbc3f9e0ecf618f9c37d8","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/compare/6ee3dc2f44d19f9755063124bdc9efb68f8f5810...82bc1aa0e448d79bcc3dbc3f9e0ecf618f9c37d8","commits":[{"id":"82bc1aa0e448d79bcc3dbc3f9e0ecf618f9c37d8","message":"Merge parallel device safeguards with S3 consumption candidate\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/82bc1aa0e448d79bcc3dbc3f9e0ecf618f9c37d8","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T05:47:12-07:00","added":["docs/evidence/2026-10-18-s2-adversarial/after.tap","docs/evidence/2026-10-18-s2-adversarial/before.tap","docs/evidence/2026-10-18-s2-adversarial/isolated-runtime.json","ops/device-loop-candidate/adversarial.test.mjs","reports/s2-adversarial.latest.json"],"removed":[],"modified":["CLAUDE.md","docs/domain/s3-consumption-blueprint.md","docs/evidence/2026-10-18-s3/rules.tap","docs/evidence/2026-10-18-s3/runtime-summary.json","docs/evidence/2026-10-18-s3/s3-summary.json","docs/evidence/2026-10-18-s3/source-bindings.json","docs/s2-device-loop.md","ops/device-loop-candidate/run-isolated.mjs","ops/device-loop-candidate/service.mjs","ops/device-loop-candidate/terminal.mjs","package.json","reports/agent-adapters.latest.json","reports/ci-evidence.latest.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/evidence-current.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/s2-candidate.latest.json","reports/s3-candidate.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"659184dea86881b63998611514964caf01c6167c","message":"feat(device): fence consumption rights and old stop on original command ledger\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/659184dea86881b63998611514964caf01c6167c","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T05:39:20-07:00","added":["docs/domain/s3-consumption-blueprint.md","docs/evidence/2026-10-18-s3/rules.tap","docs/evidence/2026-10-18-s3/runtime-summary.json","docs/evidence/2026-10-18-s3/s3-summary.json","docs/evidence/2026-10-18-s3/source-bindings.json","ops/device-loop-candidate/consumption.test.mjs","ops/device-loop-candidate/run-consumption.mjs","reports/s3-candidate.latest.json"],"removed":[],"modified":["CLAUDE.md","README.md","docs/domain/owner-matrix.md","ops/device-loop-candidate/contract.mjs","ops/device-loop-candidate/fixtures.mjs","ops/device-loop-candidate/manifest.json","ops/device-loop-candidate/run-isolated.mjs","ops/device-loop-candidate/service.mjs","ops/device-loop-candidate/terminal.mjs","ops/device-loop-candidate/worker.mjs","package.json","reports/agent-adapters.latest.json","reports/ci-evidence.latest.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/evidence-current.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"82bc1aa0e448d79bcc3dbc3f9e0ecf618f9c37d8","message":"Merge parallel device safeguards with S3 consumption candidate\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/82bc1aa0e448d79bcc3dbc3f9e0ecf618f9c37d8","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T05:47:12-07:00","added":["docs/evidence/2026-10-18-s2-adversarial/after.tap","docs/evidence/2026-10-18-s2-adversarial/before.tap","docs/evidence/2026-10-18-s2-adversarial/isolated-runtime.json","ops/device-loop-candidate/adversarial.test.mjs","reports/s2-adversarial.latest.json"],"removed":[],"modified":["CLAUDE.md","docs/domain/s3-consumption-blueprint.md","docs/evidence/2026-10-18-s3/rules.tap","docs/evidence/2026-10-18-s3/runtime-summary.json","docs/evidence/2026-10-18-s3/s3-summary.json","docs/evidence/2026-10-18-s3/source-bindings.json","docs/s2-device-loop.md","ops/device-loop-candidate/run-isolated.mjs","ops/device-loop-candidate/service.mjs","ops/device-loop-candidate/terminal.mjs","package.json","reports/agent-adapters.latest.json","reports/ci-evidence.latest.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/evidence-current.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/s2-candidate.latest.json","reports/s3-candidate.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":135,"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":"juhai-thing-cloud","full_name":"luoanwu/juhai-thing-cloud","description":"物云:02「物」域应用,自设备云 juhai-device-cloud 4652ce0 分叉","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2359,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-thing-cloud.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-12T21:14:44+08:00","updated_at":"2026-10-18T19:56:17+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
|
10
|
1792327636
|
1792327649
|
0
|
1792327635
|
1792327659
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
26088
|
test(device): verify committed adversarial artifac test(device): verify committed adversarial artifact content fingerprint...
|
135
|
5
|
governance.yml
|
8
|
5
|
0
|
refs/heads/main
|
6ee3dc2f44d19f9755063124bdc9efb68f8f5810
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"4d2d9352220bed528bbfdce783ae269bf03a7b5d","after":"6ee3dc2f44d19f9755063124bdc9efb68f8f5810","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/compare/4d2d9352220bed528bbfdce783ae269bf03a7b5d...6ee3dc2f44d19f9755063124bdc9efb68f8f5810","commits":[{"id":"6ee3dc2f44d19f9755063124bdc9efb68f8f5810","message":"test(device): verify committed adversarial artifact content fingerprint\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/6ee3dc2f44d19f9755063124bdc9efb68f8f5810","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T04:45:17-07:00","added":[],"removed":[],"modified":["reports/evidence-current.latest.json"]},{"id":"a80c4d5138dd128983e3eecad5e96e6636208175","message":"docs(device): bind final adversarial and four-combination regression evidence\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/a80c4d5138dd128983e3eecad5e96e6636208175","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T04:43:44-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/ci-evidence.latest.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/evidence-current.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/s2-adversarial.latest.json","reports/s2-candidate.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"ccdd262e21b3638fb4638b38e5071e96e1e298e8","message":"fix(device): preserve settled receipts and current binding evidence\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/ccdd262e21b3638fb4638b38e5071e96e1e298e8","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T04:34:23-07:00","added":["docs/evidence/2026-10-18-s2-adversarial/after.tap","docs/evidence/2026-10-18-s2-adversarial/before.tap","docs/evidence/2026-10-18-s2-adversarial/isolated-runtime.json","ops/device-loop-candidate/adversarial.test.mjs","reports/s2-adversarial.latest.json"],"removed":[],"modified":["CLAUDE.md","docs/s2-device-loop.md","ops/device-loop-candidate/run-isolated.mjs","ops/device-loop-candidate/service.mjs","ops/device-loop-candidate/terminal.mjs","package.json"]}],"total_commits":0,"head_commit":{"id":"6ee3dc2f44d19f9755063124bdc9efb68f8f5810","message":"test(device): verify committed adversarial artifact content fingerprint\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/6ee3dc2f44d19f9755063124bdc9efb68f8f5810","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T04:45:17-07:00","added":[],"removed":[],"modified":["reports/evidence-current.latest.json"]},"repository":{"id":135,"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":"juhai-thing-cloud","full_name":"luoanwu/juhai-thing-cloud","description":"物云:02「物」域应用,自设备云 juhai-device-cloud 4652ce0 分叉","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2199,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-thing-cloud.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-12T21:14:44+08:00","updated_at":"2026-10-18T19:08: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
|
2
|
10
|
1792324577
|
1792324668
|
0
|
1792324577
|
1792324700
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
26087
|
docs(device): align current verification table wit docs(device): align current verification table with final S2 reports...
|
135
|
5
|
governance.yml
|
7
|
5
|
0
|
refs/heads/main
|
4d2d9352220bed528bbfdce783ae269bf03a7b5d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8a42cf77069e4a70692e366281b75ab8848f3e7c","after":"4d2d9352220bed528bbfdce783ae269bf03a7b5d","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/compare/8a42cf77069e4a70692e366281b75ab8848f3e7c...4d2d9352220bed528bbfdce783ae269bf03a7b5d","commits":[{"id":"4d2d9352220bed528bbfdce783ae269bf03a7b5d","message":"docs(device): align current verification table with final S2 reports\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/4d2d9352220bed528bbfdce783ae269bf03a7b5d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T04:08:52-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/ci-evidence.latest.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/evidence-current.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/s2-candidate.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"4d2d9352220bed528bbfdce783ae269bf03a7b5d","message":"docs(device): align current verification table with final S2 reports\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/4d2d9352220bed528bbfdce783ae269bf03a7b5d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T04:08:52-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/ci-evidence.latest.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/evidence-current.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/s2-candidate.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":135,"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":"juhai-thing-cloud","full_name":"luoanwu/juhai-thing-cloud","description":"物云:02「物」域应用,自设备云 juhai-device-cloud 4652ce0 分叉","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2124,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-thing-cloud.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-12T21:14:44+08:00","updated_at":"2026-10-18T19:04: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
|
12
|
1792321881
|
1792321911
|
0
|
1792321736
|
1792321943
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
26086
|
docs(device): bind final S2 fixed artifact verific docs(device): bind final S2 fixed artifact verification...
|
135
|
5
|
governance.yml
|
6
|
5
|
0
|
refs/heads/main
|
8a42cf77069e4a70692e366281b75ab8848f3e7c
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"4b39ba2e2da24a46314e9d171f4c3636d023290d","after":"8a42cf77069e4a70692e366281b75ab8848f3e7c","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/compare/4b39ba2e2da24a46314e9d171f4c3636d023290d...8a42cf77069e4a70692e366281b75ab8848f3e7c","commits":[{"id":"8a42cf77069e4a70692e366281b75ab8848f3e7c","message":"docs(device): bind final S2 fixed artifact verification\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/8a42cf77069e4a70692e366281b75ab8848f3e7c","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T04:04:18-07:00","added":["reports/s2-candidate.latest.json"],"removed":[],"modified":["reports/evidence-current.latest.json"]}],"total_commits":0,"head_commit":{"id":"8a42cf77069e4a70692e366281b75ab8848f3e7c","message":"docs(device): bind final S2 fixed artifact verification\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/8a42cf77069e4a70692e366281b75ab8848f3e7c","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T04:04:18-07:00","added":["reports/s2-candidate.latest.json"],"removed":[],"modified":["reports/evidence-current.latest.json"]},"repository":{"id":135,"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":"juhai-thing-cloud","full_name":"luoanwu/juhai-thing-cloud","description":"物云:02「物」域应用,自设备云 juhai-device-cloud 4652ce0 分叉","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2119,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-thing-cloud.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-12T21:14:44+08:00","updated_at":"2026-10-18T19:02: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
|
3
|
5
|
0
|
1792321736
|
0
|
1792321485
|
1792321736
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
26085
|
feat(device): add isolated S2 connection and durab feat(device): add isolated S2 connection and durable command receipt loop...
|
135
|
5
|
governance.yml
|
5
|
5
|
0
|
refs/heads/main
|
4b39ba2e2da24a46314e9d171f4c3636d023290d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"d820cc6f462a719ddbf43440d5a9b835e6fa09de","after":"4b39ba2e2da24a46314e9d171f4c3636d023290d","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/compare/d820cc6f462a719ddbf43440d5a9b835e6fa09de...4b39ba2e2da24a46314e9d171f4c3636d023290d","commits":[{"id":"4b39ba2e2da24a46314e9d171f4c3636d023290d","message":"feat(device): add isolated S2 connection and durable command receipt loop\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/4b39ba2e2da24a46314e9d171f4c3636d023290d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T04:01:58-07:00","added":["docs/domain/s2-device-loop-blueprint.md","docs/evidence/2026-10-18-s2/rules.tap","docs/evidence/2026-10-18-s2/runtime-summary.json","docs/evidence/2026-10-18-s2/source-bindings.json","docs/s2-device-loop.md","ops/device-loop-candidate/contract.mjs","ops/device-loop-candidate/fixtures.mjs","ops/device-loop-candidate/http.mjs","ops/device-loop-candidate/manifest.json","ops/device-loop-candidate/rules.test.mjs","ops/device-loop-candidate/run-isolated.mjs","ops/device-loop-candidate/service.mjs","ops/device-loop-candidate/store.mjs","ops/device-loop-candidate/terminal.mjs","ops/device-loop-candidate/worker.mjs"],"removed":[],"modified":["CLAUDE.md","README.md","docs/domain/owner-matrix.md","package.json","reports/agent-adapters.latest.json","reports/ci-evidence.latest.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/evidence-current.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"4b39ba2e2da24a46314e9d171f4c3636d023290d","message":"feat(device): add isolated S2 connection and durable command receipt loop\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/4b39ba2e2da24a46314e9d171f4c3636d023290d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T04:01:58-07:00","added":["docs/domain/s2-device-loop-blueprint.md","docs/evidence/2026-10-18-s2/rules.tap","docs/evidence/2026-10-18-s2/runtime-summary.json","docs/evidence/2026-10-18-s2/source-bindings.json","docs/s2-device-loop.md","ops/device-loop-candidate/contract.mjs","ops/device-loop-candidate/fixtures.mjs","ops/device-loop-candidate/http.mjs","ops/device-loop-candidate/manifest.json","ops/device-loop-candidate/rules.test.mjs","ops/device-loop-candidate/run-isolated.mjs","ops/device-loop-candidate/service.mjs","ops/device-loop-candidate/store.mjs","ops/device-loop-candidate/terminal.mjs","ops/device-loop-candidate/worker.mjs"],"removed":[],"modified":["CLAUDE.md","README.md","docs/domain/owner-matrix.md","package.json","reports/agent-adapters.latest.json","reports/ci-evidence.latest.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/evidence-current.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":135,"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":"juhai-thing-cloud","full_name":"luoanwu/juhai-thing-cloud","description":"物云:02「物」域应用,自设备云 juhai-device-cloud 4652ce0 分叉","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1998,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-thing-cloud.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-12T21:14:44+08:00","updated_at":"2026-10-18T07:24:12+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
|
10
|
1792321333
|
1792321754
|
0
|
1792321332
|
1792321881
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
26051
|
docs: bind latest thing-cloud runtime UI and stati docs: bind latest thing-cloud runtime UI and static regression...
|
135
|
5
|
governance.yml
|
4
|
5
|
0
|
refs/heads/main
|
d820cc6f462a719ddbf43440d5a9b835e6fa09de
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dc5f62499f75ebd37d97e3af126dfc88196f20d8","after":"d820cc6f462a719ddbf43440d5a9b835e6fa09de","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/compare/dc5f62499f75ebd37d97e3af126dfc88196f20d8...d820cc6f462a719ddbf43440d5a9b835e6fa09de","commits":[{"id":"d820cc6f462a719ddbf43440d5a9b835e6fa09de","message":"docs: bind latest thing-cloud runtime UI and static regression\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/d820cc6f462a719ddbf43440d5a9b835e6fa09de","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-17T16:23:49-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/ci-evidence.latest.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"d820cc6f462a719ddbf43440d5a9b835e6fa09de","message":"docs: bind latest thing-cloud runtime UI and static regression\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/d820cc6f462a719ddbf43440d5a9b835e6fa09de","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-17T16:23:49-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/ci-evidence.latest.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":135,"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":"juhai-thing-cloud","full_name":"luoanwu/juhai-thing-cloud","description":"物云:02「物」域应用,自设备云 juhai-device-cloud 4652ce0 分叉","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1924,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-thing-cloud.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-12T21:14:44+08:00","updated_at":"2026-10-17T09:36: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
|
10
|
1792279754
|
1792279768
|
0
|
1792279452
|
1792279795
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
25952
|
chore(reports): retain final thing cloud documenta chore(reports): retain final thing cloud documentation truth verification...
|
135
|
5
|
governance.yml
|
3
|
5
|
0
|
refs/heads/main
|
dc5f62499f75ebd37d97e3af126dfc88196f20d8
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8ce6f576c05937f2dc336d621bbb71c495ea06ab","after":"dc5f62499f75ebd37d97e3af126dfc88196f20d8","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/compare/8ce6f576c05937f2dc336d621bbb71c495ea06ab...dc5f62499f75ebd37d97e3af126dfc88196f20d8","commits":[{"id":"dc5f62499f75ebd37d97e3af126dfc88196f20d8","message":"chore(reports): retain final thing cloud documentation truth verification\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/dc5f62499f75ebd37d97e3af126dfc88196f20d8","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-16T18:35:15-07:00","added":[],"removed":[],"modified":["reports/docs-truth.latest.json"]},{"id":"def0a458d52938e2680f7017e1f4d37e33027cc1","message":"chore(reports): bind completed adversarial runtime browser and static verification\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/def0a458d52938e2680f7017e1f4d37e33027cc1","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-16T17:31:49-07:00","added":[],"removed":[],"modified":["reports/agent-adapters.latest.json","reports/ci-evidence.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"2124afd1d97746a74e4753c7836517f01c737b22","message":"docs(acceptance): bind current thing cloud runtime and full browser matrix\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/2124afd1d97746a74e4753c7836517f01c737b22","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-16T17:09:40-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/ci-evidence.latest.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"dc5f62499f75ebd37d97e3af126dfc88196f20d8","message":"chore(reports): retain final thing cloud documentation truth verification\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/dc5f62499f75ebd37d97e3af126dfc88196f20d8","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-16T18:35:15-07:00","added":[],"removed":[],"modified":["reports/docs-truth.latest.json"]},"repository":{"id":135,"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":"juhai-thing-cloud","full_name":"luoanwu/juhai-thing-cloud","description":"物云:02「物」域应用,自设备云 juhai-device-cloud 4652ce0 分叉","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1839,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-thing-cloud.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-12T21:14:44+08:00","updated_at":"2026-10-13T09:40:17+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
|
10
|
1792201083
|
1792201113
|
0
|
1792200979
|
1792202195
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
25787
|
docs(devices): 记录框架 0.25.1 迁移分支已快进合入 main 并推送
|
135
|
5
|
governance.yml
|
2
|
5
|
0
|
refs/heads/main
|
8ce6f576c05937f2dc336d621bbb71c495ea06ab
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"4652ce0fd0569840e5cab90e091be88f7173a7f9","after":"8ce6f576c05937f2dc336d621bbb71c495ea06ab","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/compare/4652ce0fd0569840e5cab90e091be88f7173a7f9...8ce6f576c05937f2dc336d621bbb71c495ea06ab","commits":[{"id":"8ce6f576c05937f2dc336d621bbb71c495ea06ab","message":"docs(devices): 记录框架 0.25.1 迁移分支已快进合入 main 并推送\n\n动态区发布快照与 framework-migration.md 去掉「未合入 main、未推送」;证据仍绑定 f582f13(runtime/UI)与 44ecd2c(静态)。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/8ce6f576c05937f2dc336d621bbb71c495ea06ab","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-12T18:39:56-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/framework-migration.md"]},{"id":"ae81d9e8db9caa1d6ea1e477128772848021cc4e","message":"chore(governance): 在 clean 44ecd2c 上重跑静态门禁,静态证据绑定当前提交\n\npnpm check exit 0(18 项静态门禁 + test:scripts + lint + typecheck;棘轮未回退)。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/ae81d9e8db9caa1d6ea1e477128772848021cc4e","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-12T18:37:46-07:00","added":["reports/agent-adapters.latest.json","reports/conformance-matrix.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json"],"removed":[],"modified":["reports/ci-evidence.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"44ecd2cc153ca4640cc63832905c73e689016fbd","message":"chore(reports): 绑定 f582f13 的运行与浏览器证据,回填动态区并重建棘轮基线\n\n- check:runtime @ clean f582f13:236 tests / 0 failures,租户 RLS enforce(tenantRlsEnforced=1),同夹具差分通过;\n 新建空库 device_cloud_runtime_20261012b;\n- check:ui(UI_MATRIX=1)@ clean f582f13:nestjs/fastify × ws/sse 四组合各 9 用例 / 0 失败;\n 新建空库 device_cloud_ui_20261012b;\n- 身份负例:check:runtime 传 base_framework_wrong 在预检 exit 1;\n- migration:rollback --verify:隔离检出 ok,check:kernel fail(回滚点 4652ce0 是 0.1.0 之前的拷贝,\n 没有 check:kernel 脚本;待回灌框架),报告原样提交;\n- reports/baseline.json 按迁移手册删除后由 governance-report 以本仓实测初始化,手工补 testsPassed 236 /\n uiTestsPassed 9 地板(迁移前 188 / 8);\n- CLAUDE.md 动态区与 framework-migration.md 回填上述证据。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/44ecd2cc153ca4640cc63832905c73e689016fbd","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-12T18:37:20-07:00","added":["reports/conformance-differential.latest.json","reports/framework-migration-rollback.latest.json"],"removed":[],"modified":["CLAUDE.md","docs/framework-migration.md","reports/baseline.json","reports/runtime-acceptance.latest.json","reports/ui-acceptance.latest.json"]},{"id":"f582f139b64c22ef9b85a3656f8b9d5c9901c9f3","message":"chore(governance): 签发框架 0.25.1 sync 迁移凭证(回滚点 4652ce0)\n\npnpm migration:record -- --source \u003cv0.25.1 克隆 @ bed72c1\u003e --target \u003c本仓\u003e --mode sync --rollback-to 4652ce0;\nrunId=6e6736d4-1131-4682-a911-0028b58e02aa,frameworkVersion 0.25.1 → 0.25.1。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/f582f139b64c22ef9b85a3656f8b9d5c9901c9f3","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-12T18:32:01-07:00","added":["reports/framework-migration.latest.json"],"removed":[],"modified":[]},{"id":"5a0a055a0e055506fd8fe103d85672fc9973be3d","message":"docs(devices): 治理宪章、README 与文档随框架 0.25.1 合并;迁移记录与方案更新\n\n- CLAUDE.md:框架稳定宪章 + 物云定位与设备写链真源;动态区按本仓重写(证据数字在证据提交回填);\n 已关闭缺口分「框架继承」「物云自有」两表,本仓自有编号改 DC- 前缀(原 C19–C33、G24、G25),\n 新增 DC-C34、DC-C35 与开放缺口 DC-G26、DC-G27;开放缺口按本仓现状改写;\n 更正框架真源地图里过时的「RLS 未闭环」;\n- README / docs:合并框架改动;本仓门禁与 OS 产品包现状;经验库本仓条目改 DC- 编号;\n owner-matrix 设备段打剥离标记;\n- framework-migration.md:新增 2026-10-12 sync 记录(源 v0.25.1 = bed72c1,回滚点 4652ce0),\n 历史记录原文保留;迁移方案补「执行中追加的决定与发现」并更正两处原写法。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/5a0a055a0e055506fd8fe103d85672fc9973be3d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-12T18:29:58-07:00","added":["docs/adr/0010-governance-layering-and-evidence-model.md","docs/alerting.md","docs/deployment-runbook.md","docs/governance-gate-fixes-2026-10-11.md","docs/platform-integration.md","docs/project-review-2026-09-05.md","docs/strip-sample-domain.md","docs/tenant-rls.md"],"removed":[],"modified":["CLAUDE.md","README.md","docs/README.md","docs/adr/README.md","docs/domain/owner-matrix.md","docs/domain/thing-cloud-migration-plan.md","docs/framework-migration.md","docs/governance-experience.md","docs/migration-playbook.md","docs/standards/api-standard.md","docs/standards/database-standard.md","docs/standards/naming-standard.md","docs/standards/review-standard.md"]}],"total_commits":0,"head_commit":{"id":"8ce6f576c05937f2dc336d621bbb71c495ea06ab","message":"docs(devices): 记录框架 0.25.1 迁移分支已快进合入 main 并推送\n\n动态区发布快照与 framework-migration.md 去掉「未合入 main、未推送」;证据仍绑定 f582f13(runtime/UI)与 44ecd2c(静态)。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/8ce6f576c05937f2dc336d621bbb71c495ea06ab","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-12T18:39:56-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/framework-migration.md"]},"repository":{"id":135,"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":"juhai-thing-cloud","full_name":"luoanwu/juhai-thing-cloud","description":"物云:02「物」域应用,自设备云 juhai-device-cloud 4652ce0 分叉","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":815,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-thing-cloud.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-12T21:14:44+08:00","updated_at":"2026-10-12T21:14:55+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
|
10
|
1791872685
|
1791872697
|
0
|
1791855617
|
1791873082
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
25630
|
fix(compose): 开发基座补顶层 name,停止与另外六个仓共用 project `api fix(compose): 开发基座补顶层 name,停止与另外六个仓共用 project `api-nestjs`...
|
135
|
5
|
governance.yml
|
1
|
5
|
0
|
refs/heads/main
|
4652ce0fd0569840e5cab90e091be88f7173a7f9
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0000000000000000000000000000000000000000","after":"4652ce0fd0569840e5cab90e091be88f7173a7f9","compare_url":"https://gitea.g-hi.com/","commits":[{"id":"4652ce0fd0569840e5cab90e091be88f7173a7f9","message":"fix(compose): 开发基座补顶层 name,停止与另外六个仓共用 project `api-nestjs`\n\n本文件没有顶层 name,compose 便按**所在目录名**推导 project 名。它在每个仓里的路径都是\napps/api-nestjs/,于是 7 个仓推导出同一个 `api-nestjs`,共用 `api-nestjs_pgdata` /\n`_redisdata` 与同名容器——后 up 的那个直接接管先起者的容器与卷。这类冲突单仓内部永远\n判不出来,只有横着比多份 compose 才看得见,已经咬过一次(C-15)。\n\n现改为 `name: ${COMPOSE_PROJECT_NAME:-device-cloud}`,默认取本仓 package.json 的 name,\n仍可用 COMPOSE_PROJECT_NAME 覆盖。实测 `docker compose config` 解析出的卷已变为\n`device-cloud_*`。\n\n数据风险已先核过再改:本机 260 个卷里**没有任何 `api-nestjs_*`**,\n`docker ps -a --filter label=com.docker.compose.project=api-nestjs` 零命中——\n这份 compose 在本机从未以默认推导名起过,没有旧卷需要迁移。(只证明本机;\n别的机器若直接 up 过,改名后首次 up 会建新空卷,旧卷需自行迁移。)\n\n工作区门禁 `平台治理/基础/scripts/check-workspace-consistency.mjs` 的\nL9 COMPOSE_PROJECT_COLLISION 在 7 个仓全部补齐后由 ISSUES 转 CLEAN(exit 0,0 issues)。\n处置依据:裁决 N-11 选项 ①。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/4652ce0fd0569840e5cab90e091be88f7173a7f9","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:13:31-07:00","added":[],"removed":[],"modified":["apps/api-nestjs/docker-compose.yml"]},{"id":"50f4399dc7bb4ef9be6f97aa60a8e3148667c3e2","message":"chore(governance): 在 clean HEAD 上重跑静态门禁,证据第一次绑定当前提交\n\n迁移后本仓 19 份 reports/*.latest.json 无一绑定当前 HEAD,全部生成于 2026-08-26 /\n09-10 的旧树,按证据纪律一律按 STALE 对待——也就是说当前 HEAD 的质量一直是未知数。\n\n本次在 clean HEAD (bda8349) 上逐条重跑全部静态门禁:12 通过 / 2 失败,14 份报告\nprovenance 全部 gitSha=bda8349 且 worktreeDirty=false。\n\n两条失败都是跨仓耦合,不是本仓静态问题:\n- check-evidence-current:os-product-runtime 的 upstream 指向基座 checkout 状态\n- check-os-product-compat:产品兼容性需要基座侧路径\n\n不跑需实例的门禁(runtime / UI / 容器 / 灾备),那些要 DATABASE_URL 与浏览器,\n按证据等级\"静态 \u003c 真实 DB \u003c 浏览器\",本次只提升到静态一级。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/50f4399dc7bb4ef9be6f97aa60a8e3148667c3e2","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-15T00:34:03-07:00","added":[],"removed":[],"modified":["reports/ci-evidence.latest.json","reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/evidence-current.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"bda8349f3440331dc74da6a4a41880607201d63d","message":"chore: refresh governance evidence reports\n\nRegenerate reports/*.latest.json from the latest local gate run\n(contract-consumers, device-boundaries, dual-backend-parity,\nmigrations, naming, os-product-compat, schema-sync,\nstatemachine-write-guard, validation-source, evidence-current).\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/bda8349f3440331dc74da6a4a41880607201d63d","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-14T19:51:44-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/device-boundaries.latest.json","reports/dual-backend-parity.latest.json","reports/evidence-current.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"7307924582aa9ace4042b51463833ebd9bc9d17e","message":"feat: harden device cloud governance\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/7307924582aa9ace4042b51463833ebd9bc9d17e","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-25T17:19:11-07:00","added":["reports/ci-evidence.latest.json","reports/device-boundaries.latest.json","reports/evidence-current.latest.json","scripts/check-ci-evidence.mjs","scripts/check-device-boundaries.mjs","scripts/check-evidence-current.mjs"],"removed":[],"modified":[".github/pull_request_template.md",".github/workflows/governance.yml","CLAUDE.md","apps/api-fastify/src/modules/device-v1a/device-v1a.service.ts","apps/api-fastify/src/routes/device-v1a.ts","apps/api-fastify/test/device-v1a.integration.test.ts","apps/api-nestjs/src/device-v1a/device-v1a.service.ts","apps/api-nestjs/test/device-v1a.integration.test.ts","apps/web/e2e/acceptance.spec.ts","docs/standards/api-standard.md","governance.registry.json","governance.registry.schema.json","package.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/os-product-runtime.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-docs-truth.mjs","scripts/check-fork-readiness.mjs","scripts/check-os-product-compat.mjs","scripts/check-os-product-runtime.mjs","scripts/governance-report.mjs","scripts/lib/report-provenance.mjs"]},{"id":"49e97bd63c64e1d0484db4acffd63d40ab27bbbe","message":"feat: implement governed device cloud V1\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/49e97bd63c64e1d0484db4acffd63d40ab27bbbe","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-25T08:46:32-07:00","added":["apps/api-fastify/prisma/migrations/20260824163000_device_v1a/migration.sql","apps/api-fastify/prisma/migrations/20260825100000_device_v1b_activation/migration.sql","apps/api-fastify/prisma/migrations/20260825143000_device_v1b_transfer/migration.sql","apps/api-fastify/prisma/migrations/20260825150000_device_v1b_topology/migration.sql","apps/api-fastify/prisma/migrations/20260825162000_device_v1b_grant_revocation/migration.sql","apps/api-fastify/src/modules/device-v1a/device-v1a.service.ts","apps/api-fastify/src/modules/device-v1b/device-v1b.service.ts","apps/api-fastify/src/routes/device-v1a.ts","apps/api-fastify/src/routes/device-v1b.ts","apps/api-fastify/test/device-v1a.integration.test.ts","apps/api-fastify/test/device-v1b.integration.test.ts","apps/api-nestjs/prisma/migrations/20260824163000_device_v1a/migration.sql","apps/api-nestjs/prisma/migrations/20260825100000_device_v1b_activation/migration.sql","apps/api-nestjs/prisma/migrations/20260825143000_device_v1b_transfer/migration.sql","apps/api-nestjs/prisma/migrations/20260825150000_device_v1b_topology/migration.sql","apps/api-nestjs/prisma/migrations/20260825162000_device_v1b_grant_revocation/migration.sql","apps/api-nestjs/src/device-v1a/device-v1a.controller.ts","apps/api-nestjs/src/device-v1a/device-v1a.module.ts","apps/api-nestjs/src/device-v1a/device-v1a.service.ts","apps/api-nestjs/src/device-v1b/device-v1b.controller.ts","apps/api-nestjs/src/device-v1b/device-v1b.module.ts","apps/api-nestjs/src/device-v1b/device-v1b.service.ts","apps/api-nestjs/test/device-v1a.integration.test.ts","apps/api-nestjs/test/device-v1b.integration.test.ts","apps/web/src/components/DeviceV1aWorkspace.tsx","apps/web/src/components/DeviceV1bActivationWorkspace.tsx","docs/domain/customer-service-product-blueprint.md","docs/domain/device-cloud-blueprint.md","docs/domain/device-cloud-review.md","kernel.products.json","packages/contracts/src/device-v1a.test.ts","packages/contracts/src/device-v1a.ts","packages/contracts/src/device-v1b.test.ts","packages/contracts/src/device-v1b.ts","products/juhai.support/README.md","products/juhai.support/acceptance/juhai.support.case.acceptance.mjs","products/juhai.support/migrations/juhai.support.case/20260825090000_create_support_cases.sql","products/juhai.support/migrations/juhai.support.case/20260825091000_create_support_case_actions.sql","products/juhai.support/package.json","products/juhai.support/product.manifest.json","products/juhai.support/src/case-repository.ts","products/juhai.support/src/contracts.ts","products/juhai.support/src/fastify.ts","products/juhai.support/src/host.ts","products/juhai.support/src/index.ts","products/juhai.support/src/manifest.ts","products/juhai.support/src/nestjs.ts","products/juhai.support/src/tools.ts","products/juhai.support/src/web.tsx","products/juhai.support/test/os-host.runtime.test.ts","products/juhai.support/tsconfig.os-host.json","products/juhai.support/vitest.os-host.config.ts","reports/os-product-compat.latest.json","reports/os-product-runtime.latest.json","scripts/check-os-product-compat.mjs","scripts/check-os-product-runtime.mjs"],"removed":[],"modified":["CLAUDE.md","README.md","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-nestjs/package.json","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/redis/redis.module.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/app/globals.css","apps/web/src/app/page.tsx","apps/web/src/components/EventFeed.tsx","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","docs/README.md","docs/domain-glossary.md","docs/domain/owner-matrix.md","docs/governance-experience.md","governance.registry.json","governance.registry.schema.json","package.json","packages/contracts/src/index.ts","packages/contracts/src/realtime.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-docs-truth.mjs","scripts/check-migrations.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-statemachine-write-guard.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs"]}],"total_commits":0,"head_commit":{"id":"4652ce0fd0569840e5cab90e091be88f7173a7f9","message":"fix(compose): 开发基座补顶层 name,停止与另外六个仓共用 project `api-nestjs`\n\n本文件没有顶层 name,compose 便按**所在目录名**推导 project 名。它在每个仓里的路径都是\napps/api-nestjs/,于是 7 个仓推导出同一个 `api-nestjs`,共用 `api-nestjs_pgdata` /\n`_redisdata` 与同名容器——后 up 的那个直接接管先起者的容器与卷。这类冲突单仓内部永远\n判不出来,只有横着比多份 compose 才看得见,已经咬过一次(C-15)。\n\n现改为 `name: ${COMPOSE_PROJECT_NAME:-device-cloud}`,默认取本仓 package.json 的 name,\n仍可用 COMPOSE_PROJECT_NAME 覆盖。实测 `docker compose config` 解析出的卷已变为\n`device-cloud_*`。\n\n数据风险已先核过再改:本机 260 个卷里**没有任何 `api-nestjs_*`**,\n`docker ps -a --filter label=com.docker.compose.project=api-nestjs` 零命中——\n这份 compose 在本机从未以默认推导名起过,没有旧卷需要迁移。(只证明本机;\n别的机器若直接 up 过,改名后首次 up 会建新空卷,旧卷需自行迁移。)\n\n工作区门禁 `平台治理/基础/scripts/check-workspace-consistency.mjs` 的\nL9 COMPOSE_PROJECT_COLLISION 在 7 个仓全部补齐后由 ISSUES 转 CLEAN(exit 0,0 issues)。\n处置依据:裁决 N-11 选项 ①。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud/commit/4652ce0fd0569840e5cab90e091be88f7173a7f9","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:13:31-07:00","added":[],"removed":[],"modified":["apps/api-nestjs/docker-compose.yml"]},"repository":{"id":135,"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":"juhai-thing-cloud","full_name":"luoanwu/juhai-thing-cloud","description":"物云:02「物」域应用,自设备云 juhai-device-cloud 4652ce0 分叉","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":27,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-thing-cloud","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-thing-cloud.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-thing-cloud.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-12T21:14:44+08:00","updated_at":"2026-10-12T21:14:55+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
|
6
|
1791810895
|
1791810904
|
0
|
1791810895
|
1791810905
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
27057
|
docs(infra): record control-plane staging secrets docs(infra): record control-plane staging secrets landing...
|
133
|
5
|
infra.yml
|
22
|
5
|
0
|
refs/heads/main
|
abac9719e7d634761d231826aacb46792209c054
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8a0189100c6edafe263a42bf866057f69195e538","after":"abac9719e7d634761d231826aacb46792209c054","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/8a0189100c6edafe263a42bf866057f69195e538...abac9719e7d634761d231826aacb46792209c054","commits":[{"id":"abac9719e7d634761d231826aacb46792209c054","message":"docs(infra): record control-plane staging secrets landing\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/abac9719e7d634761d231826aacb46792209c054","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-11-04T18:32:01-08:00","added":[],"removed":[],"modified":["README.md"]},{"id":"d7697c875c8aae80f8b0198ec1a2c2ee2db5f7e1","message":"fix(staging): require secrets and sync declarations to control plane\n\nstaging 缺数据库、对象存储、Grafana 口令或 LiteLLM 主密钥时配置直接失败,\n不再沿用基线开发默认值;dev/test 默认值不变。声明快照同步到控制面 1df501663。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/d7697c875c8aae80f8b0198ec1a2c2ee2db5f7e1","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-11-04T18:16:35-08:00","added":["test/staging-fail-closed.test.mjs"],"removed":[],"modified":["README.md","declarations/SOURCE.json","declarations/caddy-routes.json","declarations/modules.json","overlays/staging.yaml"]}],"total_commits":0,"head_commit":{"id":"abac9719e7d634761d231826aacb46792209c054","message":"docs(infra): record control-plane staging secrets landing\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/abac9719e7d634761d231826aacb46792209c054","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-11-04T18:32:01-08:00","added":[],"removed":[],"modified":["README.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1477,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-11-02T08:09: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
|
6
|
1793846745
|
1793846813
|
0
|
1793845954
|
1793846813
|
|
|
0
|
Edit
Delete
|
|
26904
|
docs(infra): align runtime role and Redis persiste docs(infra): align runtime role and Redis persistence examples...
|
133
|
5
|
infra.yml
|
21
|
5
|
0
|
refs/heads/main
|
8a0189100c6edafe263a42bf866057f69195e538
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"64cf7ffa531c8cfb8c14b77bc42f27265daaf4ef","after":"8a0189100c6edafe263a42bf866057f69195e538","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/64cf7ffa531c8cfb8c14b77bc42f27265daaf4ef...8a0189100c6edafe263a42bf866057f69195e538","commits":[{"id":"8a0189100c6edafe263a42bf866057f69195e538","message":"docs(infra): align runtime role and Redis persistence examples\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/8a0189100c6edafe263a42bf866057f69195e538","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-11-01T16:09:03-08:00","added":[],"removed":[],"modified":["README.md"]}],"total_commits":0,"head_commit":{"id":"8a0189100c6edafe263a42bf866057f69195e538","message":"docs(infra): align runtime role and Redis persistence examples\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/8a0189100c6edafe263a42bf866057f69195e538","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-11-01T16:09:03-08:00","added":[],"removed":[],"modified":["README.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1459,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-31T23:12:12+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
|
6
|
1793578190
|
1793578232
|
0
|
1793578190
|
1793578232
|
|
|
0
|
Edit
Delete
|
|
26715
|
docs(devbase): record broker and object-store evid docs(devbase): record broker and object-store evidence (50 checks, restart, zero residue)...
|
133
|
5
|
infra.yml
|
20
|
5
|
0
|
refs/heads/main
|
64cf7ffa531c8cfb8c14b77bc42f27265daaf4ef
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"daa895b4214fda43d73bcadb8d3bf0fbf9f7f981","after":"64cf7ffa531c8cfb8c14b77bc42f27265daaf4ef","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/daa895b4214fda43d73bcadb8d3bf0fbf9f7f981...64cf7ffa531c8cfb8c14b77bc42f27265daaf4ef","commits":[{"id":"64cf7ffa531c8cfb8c14b77bc42f27265daaf4ef","message":"docs(devbase): record broker and object-store evidence (50 checks, restart, zero residue)\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/64cf7ffa531c8cfb8c14b77bc42f27265daaf4ef","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-31T08:11:59-07:00","added":["reports/isolated-dev-base-2026-10-31-broker-objects/README.md","reports/isolated-dev-base-2026-10-31-broker-objects/check.txt","reports/isolated-dev-base-2026-10-31-broker-objects/down-1.json","reports/isolated-dev-base-2026-10-31-broker-objects/receipt.json","reports/isolated-dev-base-2026-10-31-broker-objects/run.log"],"removed":[],"modified":["README.md"]},{"id":"c3f88e083ab7c6b66b8d6ce9e7906ecf736b8575","message":"docs(devbase): document optional broker and object store\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/c3f88e083ab7c6b66b8d6ce9e7906ecf736b8575","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-31T08:10:15-07:00","added":[],"removed":[],"modified":["README.md","scripts/isolated-dev-base.py"]},{"id":"e4b4f2a692b10e145151241e824f69b03b05a7ad","message":"feat(devbase): optional authenticated broker and bucket-scoped object store\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/e4b4f2a692b10e145151241e824f69b03b05a7ad","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-31T08:08:00-07:00","added":["scripts/devbase-broker-probe.mjs"],"removed":[],"modified":["scripts/isolated-dev-base.py","test/isolated-dev-base.test.mjs"]}],"total_commits":0,"head_commit":{"id":"64cf7ffa531c8cfb8c14b77bc42f27265daaf4ef","message":"docs(devbase): record broker and object-store evidence (50 checks, restart, zero residue)\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/64cf7ffa531c8cfb8c14b77bc42f27265daaf4ef","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-31T08:11:59-07:00","added":["reports/isolated-dev-base-2026-10-31-broker-objects/README.md","reports/isolated-dev-base-2026-10-31-broker-objects/check.txt","reports/isolated-dev-base-2026-10-31-broker-objects/down-1.json","reports/isolated-dev-base-2026-10-31-broker-objects/receipt.json","reports/isolated-dev-base-2026-10-31-broker-objects/run.log"],"removed":[],"modified":["README.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1386,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-31T22:18: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
|
6
|
1793459534
|
1793459715
|
0
|
1793459532
|
1793459715
|
|
|
0
|
Edit
Delete
|
|
26714
|
docs(devbase): record isolated dev base usage and docs(devbase): record isolated dev base usage and 10-31 evidence...
|
133
|
5
|
infra.yml
|
19
|
5
|
0
|
refs/heads/main
|
daa895b4214fda43d73bcadb8d3bf0fbf9f7f981
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ef8462aaf0469bdba862c3dadf5b8b71538d1420","after":"daa895b4214fda43d73bcadb8d3bf0fbf9f7f981","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/ef8462aaf0469bdba862c3dadf5b8b71538d1420...daa895b4214fda43d73bcadb8d3bf0fbf9f7f981","commits":[{"id":"daa895b4214fda43d73bcadb8d3bf0fbf9f7f981","message":"docs(devbase): record isolated dev base usage and 10-31 evidence\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/daa895b4214fda43d73bcadb8d3bf0fbf9f7f981","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-31T07:17:42-07:00","added":["reports/isolated-dev-base-2026-10-31/README.md","reports/isolated-dev-base-2026-10-31/check.txt","reports/isolated-dev-base-2026-10-31/down-1.json","reports/isolated-dev-base-2026-10-31/receipt.json","reports/isolated-dev-base-2026-10-31/run.log"],"removed":[],"modified":["README.md"]},{"id":"d1904dbab71a8295613b544b773d24f277dd2fef","message":"feat(devbase): long-lived isolated PG/Redis base with owned teardown\n\nscripts/isolated-dev-base.py up|status|down gives one task a uniquely\nnamed project: digest-pinned PG/Redis on reserved 127.0.0.1 ports (stable\nacross restarts), PG data in a project-owned volume, declared databases\nprovisioned with least-privilege roles, Redis behind requirepass. The\nreceipt carries no secrets; credentials go to a 0600 file. down removes\nonly resources carrying the project's ownership label and refuses\notherwise. Same-machine only; does not close staging or off-site DR.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/d1904dbab71a8295613b544b773d24f277dd2fef","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-31T07:16:16-07:00","added":["scripts/isolated-dev-base.py","test/isolated-dev-base.test.mjs"],"removed":[],"modified":[]},{"id":"7d411cfa34062279978ace7ef8b0361656337e24","message":"chore(declarations): sync snapshot to control plane 3fdcfbaf\n\nRegenerated with scripts/sync-declarations.mjs from 04 enterprise-platform\nmain 3fdcfbaf (adds master-data-registry module and DEC-067); clears the\nDECLARATIONS_DRIFT gate failure present on infra main.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/7d411cfa34062279978ace7ef8b0361656337e24","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-31T07:16:16-07:00","added":[],"removed":[],"modified":["declarations/SOURCE.json","declarations/caddy-routes.json","declarations/modules.json","declarations/otel-attributes.json"]}],"total_commits":0,"head_commit":{"id":"daa895b4214fda43d73bcadb8d3bf0fbf9f7f981","message":"docs(devbase): record isolated dev base usage and 10-31 evidence\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/daa895b4214fda43d73bcadb8d3bf0fbf9f7f981","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-31T07:17:42-07:00","added":["reports/isolated-dev-base-2026-10-31/README.md","reports/isolated-dev-base-2026-10-31/check.txt","reports/isolated-dev-base-2026-10-31/down-1.json","reports/isolated-dev-base-2026-10-31/receipt.json","reports/isolated-dev-base-2026-10-31/run.log"],"removed":[],"modified":["README.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1336,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-24T17:03:02+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
|
6
|
1793456297
|
1793456809
|
0
|
1793456296
|
1793456809
|
|
|
0
|
Edit
Delete
|
|
26434
|
docs(ops): record fixed recovery-tool adoption by docs(ops): record fixed recovery-tool adoption by existing scheduled jobs...
|
133
|
5
|
infra.yml
|
18
|
5
|
0
|
refs/heads/main
|
ef8462aaf0469bdba862c3dadf5b8b71538d1420
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"9a45908b8825736c4178c263a64b9dd8a265c334","after":"ef8462aaf0469bdba862c3dadf5b8b71538d1420","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/9a45908b8825736c4178c263a64b9dd8a265c334...ef8462aaf0469bdba862c3dadf5b8b71538d1420","commits":[{"id":"ef8462aaf0469bdba862c3dadf5b8b71538d1420","message":"docs(ops): record fixed recovery-tool adoption by existing scheduled jobs\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/ef8462aaf0469bdba862c3dadf5b8b71538d1420","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-24T02:02:55-07:00","added":["reports/p0-recovery-role-safety-2026-10-24/adoption-verification.json","reports/p0-recovery-role-safety-2026-10-24/adoption.json"],"removed":[],"modified":["docs/发布与恢复路径-2026-10-20.md"]}],"total_commits":0,"head_commit":{"id":"ef8462aaf0469bdba862c3dadf5b8b71538d1420","message":"docs(ops): record fixed recovery-tool adoption by existing scheduled jobs\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/ef8462aaf0469bdba862c3dadf5b8b71538d1420","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-24T02:02:55-07:00","added":["reports/p0-recovery-role-safety-2026-10-24/adoption-verification.json","reports/p0-recovery-role-safety-2026-10-24/adoption.json"],"removed":[],"modified":["docs/发布与恢复路径-2026-10-20.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1326,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-24T17:01:07+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
|
6
|
1792832584
|
1792832617
|
0
|
1792832582
|
1792832617
|
|
|
0
|
Edit
Delete
|
|
26433
|
docs(backup): preserve P0 recovery evidence and re docs(backup): preserve P0 recovery evidence and refresh authority declarations...
|
133
|
5
|
infra.yml
|
17
|
5
|
0
|
refs/heads/main
|
9a45908b8825736c4178c263a64b9dd8a265c334
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"a2fefb25e793fb47f4a50cb97332e1415ebc72f2","after":"9a45908b8825736c4178c263a64b9dd8a265c334","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/a2fefb25e793fb47f4a50cb97332e1415ebc72f2...9a45908b8825736c4178c263a64b9dd8a265c334","commits":[{"id":"9a45908b8825736c4178c263a64b9dd8a265c334","message":"docs(backup): preserve P0 recovery evidence and refresh authority declarations\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/9a45908b8825736c4178c263a64b9dd8a265c334","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-24T01:59:00-07:00","added":["reports/p0-recovery-role-safety-2026-10-24/authentication-negative.json","reports/p0-recovery-role-safety-2026-10-24/baseline.json","reports/p0-recovery-role-safety-2026-10-24/check-full.log","reports/p0-recovery-role-safety-2026-10-24/check-independent-first.log","reports/p0-recovery-role-safety-2026-10-24/pack.json","reports/p0-recovery-role-safety-2026-10-24/restore-1.json","reports/p0-recovery-role-safety-2026-10-24/restore-2.json","reports/p0-recovery-role-safety-2026-10-24/smoke.json","reports/p0-recovery-role-safety-2026-10-24/tampered.json","reports/p0-recovery-role-safety-2026-10-24/unknown-database.json","reports/p0-recovery-role-safety-2026-10-24/unsafe-role-restore.json","reports/p0-recovery-role-safety-2026-10-24/verify.json","reports/p0-recovery-role-safety-2026-10-24/wrong-identity.json"],"removed":[],"modified":["declarations/SOURCE.json","declarations/caddy-routes.json","declarations/modules.json","docs/发布与恢复路径-2026-10-20.md"]},{"id":"12b613e7f389c894ed2934823dfebd61f6bf1bc6","message":"fix(backup): reject unsafe recovery roles and disclose incomplete probes\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/12b613e7f389c894ed2934823dfebd61f6bf1bc6","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-24T01:52:02-07:00","added":["backup/test_runtime_role_safety.py"],"removed":[],"modified":["backup/README.md","backup/managed-backup.py","backup/recovery-kit.py","backup/test_recovery_kit.py","scripts/isolated-recovery-kit-smoke.py"]}],"total_commits":0,"head_commit":{"id":"9a45908b8825736c4178c263a64b9dd8a265c334","message":"docs(backup): preserve P0 recovery evidence and refresh authority declarations\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/9a45908b8825736c4178c263a64b9dd8a265c334","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-24T01:59:00-07:00","added":["reports/p0-recovery-role-safety-2026-10-24/authentication-negative.json","reports/p0-recovery-role-safety-2026-10-24/baseline.json","reports/p0-recovery-role-safety-2026-10-24/check-full.log","reports/p0-recovery-role-safety-2026-10-24/check-independent-first.log","reports/p0-recovery-role-safety-2026-10-24/pack.json","reports/p0-recovery-role-safety-2026-10-24/restore-1.json","reports/p0-recovery-role-safety-2026-10-24/restore-2.json","reports/p0-recovery-role-safety-2026-10-24/smoke.json","reports/p0-recovery-role-safety-2026-10-24/tampered.json","reports/p0-recovery-role-safety-2026-10-24/unknown-database.json","reports/p0-recovery-role-safety-2026-10-24/unsafe-role-restore.json","reports/p0-recovery-role-safety-2026-10-24/verify.json","reports/p0-recovery-role-safety-2026-10-24/wrong-identity.json"],"removed":[],"modified":["declarations/SOURCE.json","declarations/caddy-routes.json","declarations/modules.json","docs/发布与恢复路径-2026-10-20.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1270,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-22T06:38:29+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
|
6
|
1792832468
|
1792832503
|
0
|
1792832467
|
1792832503
|
|
|
0
|
Edit
Delete
|
|
26280
|
docs(infra): bind 2GiB configuration claims to new docs(infra): bind 2GiB configuration claims to new fixed evidence...
|
133
|
5
|
infra.yml
|
16
|
5
|
0
|
refs/heads/main
|
a2fefb25e793fb47f4a50cb97332e1415ebc72f2
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"cea70cd0c5975cc9c78d79dbd4d6dcdba768dd47","after":"a2fefb25e793fb47f4a50cb97332e1415ebc72f2","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/cea70cd0c5975cc9c78d79dbd4d6dcdba768dd47...a2fefb25e793fb47f4a50cb97332e1415ebc72f2","commits":[{"id":"a2fefb25e793fb47f4a50cb97332e1415ebc72f2","message":"docs(infra): bind 2GiB configuration claims to new fixed evidence\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/a2fefb25e793fb47f4a50cb97332e1415ebc72f2","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-21T15:38:26-07:00","added":["docs/LiteLLM2GiB配置复验-2026-10-21.md","reports/compose-parity.2026-10-21-2g.txt","reports/litellm-check.2026-10-21-2g.log","reports/litellm-compose-values.2026-10-21-2g.json"],"removed":[],"modified":["README.md"]}],"total_commits":0,"head_commit":{"id":"a2fefb25e793fb47f4a50cb97332e1415ebc72f2","message":"docs(infra): bind 2GiB configuration claims to new fixed evidence\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/a2fefb25e793fb47f4a50cb97332e1415ebc72f2","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-21T15:38:26-07:00","added":["docs/LiteLLM2GiB配置复验-2026-10-21.md","reports/compose-parity.2026-10-21-2g.txt","reports/litellm-check.2026-10-21-2g.log","reports/litellm-compose-values.2026-10-21-2g.json"],"removed":[],"modified":["README.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1250,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-22T06:37: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
|
1
|
6
|
1792622311
|
1792622342
|
0
|
1792622309
|
1792622342
|
|
|
0
|
Edit
Delete
|
|
26279
|
docs(ops): record fixed model gateway adoption, re docs(ops): record fixed model gateway adoption, recovery and semantic environment checks...
|
133
|
5
|
infra.yml
|
15
|
5
|
0
|
refs/heads/main
|
cea70cd0c5975cc9c78d79dbd4d6dcdba768dd47
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"7c6c9109c4900270ca9c733f50ae64d4c8ca677e","after":"cea70cd0c5975cc9c78d79dbd4d6dcdba768dd47","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/7c6c9109c4900270ca9c733f50ae64d4c8ca677e...cea70cd0c5975cc9c78d79dbd4d6dcdba768dd47","commits":[{"id":"cea70cd0c5975cc9c78d79dbd4d6dcdba768dd47","message":"docs(ops): record fixed model gateway adoption, recovery and semantic environment checks\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/cea70cd0c5975cc9c78d79dbd4d6dcdba768dd47","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-21T15:37:00-07:00","added":["docs/evidence/litellm-confluence-2026-10-21/adoption-attempt1.json","docs/evidence/litellm-confluence-2026-10-21/adoption-attempt2.json","docs/evidence/litellm-confluence-2026-10-21/adoption-compose-values.json","scripts/verify-ai-gateway-policy.py"],"removed":[],"modified":["README.md","docs/LiteLLM双仓加固合流与验收-2026-10-21.md","docs/本地目录与真源-2026-10-20.md"]}],"total_commits":0,"head_commit":{"id":"cea70cd0c5975cc9c78d79dbd4d6dcdba768dd47","message":"docs(ops): record fixed model gateway adoption, recovery and semantic environment checks\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/cea70cd0c5975cc9c78d79dbd4d6dcdba768dd47","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-21T15:37:00-07:00","added":["docs/evidence/litellm-confluence-2026-10-21/adoption-attempt1.json","docs/evidence/litellm-confluence-2026-10-21/adoption-attempt2.json","docs/evidence/litellm-confluence-2026-10-21/adoption-compose-values.json","scripts/verify-ai-gateway-policy.py"],"removed":[],"modified":["README.md","docs/LiteLLM双仓加固合流与验收-2026-10-21.md","docs/本地目录与真源-2026-10-20.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1222,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-22T06:28: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
|
6
|
1792622258
|
1792622289
|
0
|
1792622256
|
1792622289
|
|
|
0
|
Edit
Delete
|
|
26278
|
merge(infra): retain main confluence and adopt obs merge(infra): retain main confluence and adopt observed gateway memory budget...
|
133
|
5
|
infra.yml
|
14
|
5
|
0
|
refs/heads/main
|
7c6c9109c4900270ca9c733f50ae64d4c8ca677e
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"a536d894a7b1f8f10c0293ed952dd04b6572c63d","after":"7c6c9109c4900270ca9c733f50ae64d4c8ca677e","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/a536d894a7b1f8f10c0293ed952dd04b6572c63d...7c6c9109c4900270ca9c733f50ae64d4c8ca677e","commits":[{"id":"7c6c9109c4900270ca9c733f50ae64d4c8ca677e","message":"merge(infra): retain main confluence and adopt observed gateway memory budget\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/7c6c9109c4900270ca9c733f50ae64d4c8ca677e","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-21T15:26:34-07:00","added":[],"removed":[],"modified":["README.md","compose.yaml","overlays/dev.yaml"]},{"id":"a3107a28af16e100e6a346d18e7c8554e474c584","message":"fix(infra): replay adopted scanner supervision and size model gateway limit\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/a3107a28af16e100e6a346d18e7c8554e474c584","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-21T15:24:55-07:00","added":["clamav/README.md","clamav/entrypoint.sh","clamav/test-entrypoint.sh"],"removed":[],"modified":["README.md","compose.yaml","overlays/dev.yaml"]},{"id":"a9c15917ad72ac73f5ae75b793312b3a3287ad1b","message":"fix(compose): default alertmanager host port to 59094\n\nMirror the control-plane overlay change; infra check 9/9 and compose\nparity 4/4 SAME against the control-plane branch (report refreshed).\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/a9c15917ad72ac73f5ae75b793312b3a3287ad1b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-21T00:48:24-07:00","added":[],"removed":[],"modified":["README.md","overlays/dev.yaml","reports/compose-parity.2026-10-21.txt"]},{"id":"35a6c98c97a1b74a25589d9156b55de0b1c35753","message":"fix(compose): add restart policy and memory limit to ai-gateway\n\nMirror the control-plane stack change: restart: unless-stopped and\ndeploy.resources.limits.memory (PLATFORM_AI_GATEWAY_MEMORY_LIMIT, default\n1g initial ceiling). npm run check 9/9; compose parity with the\ncontrol-plane branch 4/4 SAME (report attached). Live container unchanged.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/35a6c98c97a1b74a25589d9156b55de0b1c35753","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-21T00:45:17-07:00","added":["reports/compose-parity.2026-10-21.txt"],"removed":[],"modified":["README.md","compose.yaml"]}],"total_commits":0,"head_commit":{"id":"7c6c9109c4900270ca9c733f50ae64d4c8ca677e","message":"merge(infra): retain main confluence and adopt observed gateway memory budget\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/7c6c9109c4900270ca9c733f50ae64d4c8ca677e","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-21T15:26:34-07:00","added":[],"removed":[],"modified":["README.md","compose.yaml","overlays/dev.yaml"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1173,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-22T06:17:55+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
|
6
|
1792621721
|
1792621841
|
0
|
1792621719
|
1792621841
|
|
|
0
|
Edit
Delete
|
|
26277
|
merge(infra): 合流 LiteLLM 双仓加固与固定 stack 历史
|
133
|
5
|
infra.yml
|
13
|
5
|
0
|
refs/heads/main
|
a536d894a7b1f8f10c0293ed952dd04b6572c63d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"d3a4b1f10c8539c554e663c676aa956852827d67","after":"a536d894a7b1f8f10c0293ed952dd04b6572c63d","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/d3a4b1f10c8539c554e663c676aa956852827d67...a536d894a7b1f8f10c0293ed952dd04b6572c63d","commits":[{"id":"a536d894a7b1f8f10c0293ed952dd04b6572c63d","message":"merge(infra): 合流 LiteLLM 双仓加固与固定 stack 历史\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/a536d894a7b1f8f10c0293ed952dd04b6572c63d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-21T15:17:35-07:00","added":["acceptance-kafka.yaml","clamav/README.md","clamav/TESTING.md","clamav/entrypoint.sh","clamav/test-entrypoint.sh","docs/LiteLLM双仓加固合流与验收-2026-10-21.md","docs/evidence/litellm-confluence-2026-10-21/clamav-fixtures.log","docs/evidence/litellm-confluence-2026-10-21/compose-parity.txt","docs/evidence/litellm-confluence-2026-10-21/compose-values.json","docs/evidence/litellm-confluence-2026-10-21/control-plane-evidence.json","docs/evidence/litellm-confluence-2026-10-21/infra-check.log","docs/evidence/litellm-confluence-2026-10-21/verify-compose-values.py","reports/compose-parity.2026-10-21.txt"],"removed":[],"modified":["README.md","compose.yaml","declarations/SOURCE.json","overlays/dev.yaml"]},{"id":"f1694bf9beca0b5db27c9d91ae13d07915d0045c","message":"docs(infra): record fixed LiteLLM confluence acceptance and deployment boundary\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/f1694bf9beca0b5db27c9d91ae13d07915d0045c","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-21T15:17:30-07:00","added":["docs/LiteLLM双仓加固合流与验收-2026-10-21.md","docs/evidence/litellm-confluence-2026-10-21/clamav-fixtures.log","docs/evidence/litellm-confluence-2026-10-21/compose-parity.txt","docs/evidence/litellm-confluence-2026-10-21/compose-values.json","docs/evidence/litellm-confluence-2026-10-21/control-plane-evidence.json","docs/evidence/litellm-confluence-2026-10-21/infra-check.log","docs/evidence/litellm-confluence-2026-10-21/verify-compose-values.py"],"removed":[],"modified":["README.md","clamav/TESTING.md"]},{"id":"93f66a9f1494a9c72711d834a075eabbd12d9759","message":"chore(infra): bind declarations to fixed LiteLLM confluence source\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/93f66a9f1494a9c72711d834a075eabbd12d9759","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-21T15:15:40-07:00","added":[],"removed":[],"modified":["declarations/SOURCE.json"]},{"id":"fffa5257502453d4f3963f15d4b923b449f8caa6","message":"Merge commit '03be832fa689cd9245ac8a4b6c798f379b7557b7' of /Users/hillao/企业智能OS/04-技术中台层/enterprise-platform into codex/litellm-hardening-confluence-20261021\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/fffa5257502453d4f3963f15d4b923b449f8caa6","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-21T15:15:26-07:00","added":["acceptance-kafka.yaml","clamav/README.md","clamav/TESTING.md","clamav/entrypoint.sh","clamav/test-entrypoint.sh"],"removed":[],"modified":["README.md","compose.yaml"]},{"id":"03be832fa689cd9245ac8a4b6c798f379b7557b7","message":"Merge branch 'main' into claude/ai-gateway-hardening-20261021\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/03be832fa689cd9245ac8a4b6c798f379b7557b7","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-21T15:13:17-07:00","added":["acceptance-kafka.yaml","clamav/README.md","clamav/TESTING.md","clamav/entrypoint.sh","clamav/test-entrypoint.sh"],"removed":[],"modified":["README.md","compose.yaml"]}],"total_commits":0,"head_commit":{"id":"a536d894a7b1f8f10c0293ed952dd04b6572c63d","message":"merge(infra): 合流 LiteLLM 双仓加固与固定 stack 历史\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/a536d894a7b1f8f10c0293ed952dd04b6572c63d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-21T15:17:35-07:00","added":["acceptance-kafka.yaml","clamav/README.md","clamav/TESTING.md","clamav/entrypoint.sh","clamav/test-entrypoint.sh","docs/LiteLLM双仓加固合流与验收-2026-10-21.md","docs/evidence/litellm-confluence-2026-10-21/clamav-fixtures.log","docs/evidence/litellm-confluence-2026-10-21/compose-parity.txt","docs/evidence/litellm-confluence-2026-10-21/compose-values.json","docs/evidence/litellm-confluence-2026-10-21/control-plane-evidence.json","docs/evidence/litellm-confluence-2026-10-21/infra-check.log","docs/evidence/litellm-confluence-2026-10-21/verify-compose-values.py","reports/compose-parity.2026-10-21.txt"],"removed":[],"modified":["README.md","compose.yaml","declarations/SOURCE.json","overlays/dev.yaml"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":966,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-21T12:46: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
|
1
|
6
|
1792621076
|
1792621114
|
0
|
1792621075
|
1792621114
|
|
|
0
|
Edit
Delete
|
|
26255
|
docs(backup): bind fixed encrypted recovery and au docs(backup): bind fixed encrypted recovery and authentication evidence...
|
133
|
5
|
infra.yml
|
12
|
5
|
0
|
refs/heads/main
|
d3a4b1f10c8539c554e663c676aa956852827d67
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"00ba65bb9f9f7402a944101819e7ab7d629c0984","after":"d3a4b1f10c8539c554e663c676aa956852827d67","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/00ba65bb9f9f7402a944101819e7ab7d629c0984...d3a4b1f10c8539c554e663c676aa956852827d67","commits":[{"id":"d3a4b1f10c8539c554e663c676aa956852827d67","message":"docs(backup): bind fixed encrypted recovery and authentication evidence\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/d3a4b1f10c8539c554e663c676aa956852827d67","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-20T21:46:14-07:00","added":["reports/recovery-kit-2026-10-20/fixed/authentication-negative.json","reports/recovery-kit-2026-10-20/fixed/check.txt","reports/recovery-kit-2026-10-20/fixed/pack.json","reports/recovery-kit-2026-10-20/fixed/restore-1.json","reports/recovery-kit-2026-10-20/fixed/restore-2.json","reports/recovery-kit-2026-10-20/fixed/smoke.json","reports/recovery-kit-2026-10-20/fixed/tampered.json","reports/recovery-kit-2026-10-20/fixed/verify.json","reports/recovery-kit-2026-10-20/fixed/wrong-identity.json","reports/recovery-kit-2026-10-20/initial/pack.json","reports/recovery-kit-2026-10-20/initial/restore-1.json","reports/recovery-kit-2026-10-20/initial/restore-2.json","reports/recovery-kit-2026-10-20/initial/smoke.json","reports/recovery-kit-2026-10-20/initial/tampered.json","reports/recovery-kit-2026-10-20/initial/verify.json"],"removed":[],"modified":["docs/发布与恢复路径-2026-10-20.md"]},{"id":"47d10cfcf4fcbee7eab3603b96937cb2f0455079","message":"test(backup): make encrypted recovery drill repeatable from fixed source\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/47d10cfcf4fcbee7eab3603b96937cb2f0455079","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-20T21:44:27-07:00","added":["scripts/isolated-recovery-kit-smoke.py","test/recovery-kit-smoke.test.mjs"],"removed":[],"modified":["backup/README.md"]},{"id":"554607702202bc1d5590e989fc014f587de2d6b9","message":"feat(backup): add encrypted fixed-image PostgreSQL recovery kit\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/554607702202bc1d5590e989fc014f587de2d6b9","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-20T21:41:54-07:00","added":["backup/README.md","backup/recovery-kit.py","backup/test_recovery_kit.py","docs/发布与恢复路径-2026-10-20.md"],"removed":[],"modified":["README.md"]}],"total_commits":0,"head_commit":{"id":"d3a4b1f10c8539c554e663c676aa956852827d67","message":"docs(backup): bind fixed encrypted recovery and authentication evidence\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/d3a4b1f10c8539c554e663c676aa956852827d67","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-20T21:46:14-07:00","added":["reports/recovery-kit-2026-10-20/fixed/authentication-negative.json","reports/recovery-kit-2026-10-20/fixed/check.txt","reports/recovery-kit-2026-10-20/fixed/pack.json","reports/recovery-kit-2026-10-20/fixed/restore-1.json","reports/recovery-kit-2026-10-20/fixed/restore-2.json","reports/recovery-kit-2026-10-20/fixed/smoke.json","reports/recovery-kit-2026-10-20/fixed/tampered.json","reports/recovery-kit-2026-10-20/fixed/verify.json","reports/recovery-kit-2026-10-20/fixed/wrong-identity.json","reports/recovery-kit-2026-10-20/initial/pack.json","reports/recovery-kit-2026-10-20/initial/restore-1.json","reports/recovery-kit-2026-10-20/initial/restore-2.json","reports/recovery-kit-2026-10-20/initial/smoke.json","reports/recovery-kit-2026-10-20/initial/tampered.json","reports/recovery-kit-2026-10-20/initial/verify.json"],"removed":[],"modified":["docs/发布与恢复路径-2026-10-20.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":910,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-21T11:15: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
|
1
|
6
|
1792557997
|
1792558029
|
0
|
1792557996
|
1792558029
|
|
|
0
|
Edit
Delete
|
|
26252
|
docs(infra): diagnose ClamAV daemon loss and plan docs(infra): diagnose ClamAV daemon loss and plan window recovery acceptance...
|
133
|
5
|
infra.yml
|
11
|
5
|
0
|
refs/heads/main
|
00ba65bb9f9f7402a944101819e7ab7d629c0984
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"b94c9047462e5f24307a5ca6ce505f70a752bdcc","after":"00ba65bb9f9f7402a944101819e7ab7d629c0984","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/b94c9047462e5f24307a5ca6ce505f70a752bdcc...00ba65bb9f9f7402a944101819e7ab7d629c0984","commits":[{"id":"00ba65bb9f9f7402a944101819e7ab7d629c0984","message":"docs(infra): diagnose ClamAV daemon loss and plan window recovery acceptance\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/00ba65bb9f9f7402a944101819e7ab7d629c0984","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-20T20:14:52-07:00","added":["docs/ClamAV只读诊断与修复验收-2026-10-20.md","reports/clamav-readonly-2026-10-20/observations.json","reports/clamav-readonly-2026-10-20/vm-oom-excerpts.json"],"removed":[],"modified":["README.md"]}],"total_commits":0,"head_commit":{"id":"00ba65bb9f9f7402a944101819e7ab7d629c0984","message":"docs(infra): diagnose ClamAV daemon loss and plan window recovery acceptance\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/00ba65bb9f9f7402a944101819e7ab7d629c0984","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-20T20:14:52-07:00","added":["docs/ClamAV只读诊断与修复验收-2026-10-20.md","reports/clamav-readonly-2026-10-20/observations.json","reports/clamav-readonly-2026-10-20/vm-oom-excerpts.json"],"removed":[],"modified":["README.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":884,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-21T10:34:23+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
|
6
|
1792552516
|
1792552549
|
0
|
1792552516
|
1792552549
|
|
|
0
|
Edit
Delete
|
|
26251
|
fix(infra): resolve canonical workspace source and fix(infra): resolve canonical workspace source and record runtime provenance...
|
133
|
5
|
infra.yml
|
10
|
5
|
0
|
refs/heads/main
|
b94c9047462e5f24307a5ca6ce505f70a752bdcc
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"35be065ab5a6e8d53a93ceb81aec3595e73d28e6","after":"b94c9047462e5f24307a5ca6ce505f70a752bdcc","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/35be065ab5a6e8d53a93ceb81aec3595e73d28e6...b94c9047462e5f24307a5ca6ce505f70a752bdcc","commits":[{"id":"b94c9047462e5f24307a5ca6ce505f70a752bdcc","message":"fix(infra): resolve canonical workspace source and record runtime provenance\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/b94c9047462e5f24307a5ca6ce505f70a752bdcc","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-20T19:34:07-07:00","added":["docs/本地目录与真源-2026-10-20.md","reports/source-layout-2026-10-20/check-before-merge.txt","reports/source-layout-2026-10-20/check-final.txt","reports/source-layout-2026-10-20/check.txt","reports/source-layout-2026-10-20/parity-after.txt","reports/source-layout-2026-10-20/parity-before.txt","reports/source-layout-2026-10-20/replay-before.txt","reports/source-layout-2026-10-20/runtime-inventory.json","scripts/control-plane-root.mjs","test/control-plane-root.test.mjs"],"removed":[],"modified":[".env.example","README.md","declarations/README.md","docs/迁出方案.md","scripts/check.mjs","scripts/sync-declarations.mjs","test/declarations.test.mjs"]},{"id":"92ab599a646f4e787d4d4f0448bf69524c9db2e1","message":"Merge commit 'cfff185caae496dc10f939c1eb65e937e8a6d6a8' of /private/tmp/infra-source-sync-20261020/cp into codex/infra-source-layout-20261020\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/92ab599a646f4e787d4d4f0448bf69524c9db2e1","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-20T19:32:46-07:00","added":[],"removed":[],"modified":["compose.yaml"]},{"id":"cfff185caae496dc10f939c1eb65e937e8a6d6a8","message":"feat(workbench): add bounded personnel delivery metadata reads\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/cfff185caae496dc10f939c1eb65e937e8a6d6a8","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-20T08:26:42-07:00","added":[],"removed":[],"modified":["compose.yaml"]},{"id":"bbc0b3d0d5a07540cd145fc360c04e34e626be37","message":"feat(ai): separate public model access from application configuration\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/bbc0b3d0d5a07540cd145fc360c04e34e626be37","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-20T02:16:51-07:00","added":[],"removed":[],"modified":["compose.yaml"]}],"total_commits":0,"head_commit":{"id":"b94c9047462e5f24307a5ca6ce505f70a752bdcc","message":"fix(infra): resolve canonical workspace source and record runtime provenance\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/b94c9047462e5f24307a5ca6ce505f70a752bdcc","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-20T19:34:07-07:00","added":["docs/本地目录与真源-2026-10-20.md","reports/source-layout-2026-10-20/check-before-merge.txt","reports/source-layout-2026-10-20/check-final.txt","reports/source-layout-2026-10-20/check.txt","reports/source-layout-2026-10-20/parity-after.txt","reports/source-layout-2026-10-20/parity-before.txt","reports/source-layout-2026-10-20/replay-before.txt","reports/source-layout-2026-10-20/runtime-inventory.json","scripts/control-plane-root.mjs","test/control-plane-root.test.mjs"],"removed":[],"modified":[".env.example","README.md","declarations/README.md","docs/迁出方案.md","scripts/check.mjs","scripts/sync-declarations.mjs","test/declarations.test.mjs"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":801,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-20T12:03: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
|
6
|
1792550063
|
1792550096
|
0
|
1792550062
|
1792550096
|
|
|
0
|
Edit
Delete
|
|
26136
|
docs(infra): record four-service acceptance and re docs(infra): record four-service acceptance and retained failure evidence...
|
133
|
5
|
infra.yml
|
9
|
5
|
0
|
refs/heads/main
|
35be065ab5a6e8d53a93ceb81aec3595e73d28e6
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"d6cd4a22a8e7f05efcad973f2e172cb78685f52d","after":"35be065ab5a6e8d53a93ceb81aec3595e73d28e6","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/d6cd4a22a8e7f05efcad973f2e172cb78685f52d...35be065ab5a6e8d53a93ceb81aec3595e73d28e6","commits":[{"id":"35be065ab5a6e8d53a93ceb81aec3595e73d28e6","message":"docs(infra): record four-service acceptance and retained failure evidence\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/35be065ab5a6e8d53a93ceb81aec3595e73d28e6","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-19T21:03:42-07:00","added":["reports/omni-assets-check.2026-10-19.txt","reports/omni-assets-final-check.2026-10-19.txt","reports/omni-assets-recheck.2026-10-19.json","reports/omni-assets.2026-10-19.json"],"removed":[],"modified":["docs/全域智库底座执行-2026-10-19.md"]},{"id":"789779d0c32b3b47bc7c2adc3218d7cfbccd9f40","message":"fix(infra): bound file probe memory and preserve failure lifecycle evidence\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/789779d0c32b3b47bc7c2adc3218d7cfbccd9f40","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-19T20:58:15-07:00","added":[],"removed":[],"modified":["README.md","scripts/isolated-foundation-smoke.py"]},{"id":"f6f7decb48e76d51856baf74fe212f0d9fcf63e5","message":"feat(infra): extend isolated foundation with broker and file recovery checks\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/f6f7decb48e76d51856baf74fe212f0d9fcf63e5","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-19T20:57:20-07:00","added":[],"removed":[],"modified":["README.md","scripts/isolated-foundation-smoke.py","test/isolated-foundation.test.mjs"]}],"total_commits":0,"head_commit":{"id":"35be065ab5a6e8d53a93ceb81aec3595e73d28e6","message":"docs(infra): record four-service acceptance and retained failure evidence\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/35be065ab5a6e8d53a93ceb81aec3595e73d28e6","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-19T21:03:42-07:00","added":["reports/omni-assets-check.2026-10-19.txt","reports/omni-assets-final-check.2026-10-19.txt","reports/omni-assets-recheck.2026-10-19.json","reports/omni-assets.2026-10-19.json"],"removed":[],"modified":["docs/全域智库底座执行-2026-10-19.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":747,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-20T11:11:31+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
|
6
|
1792469027
|
1792469057
|
0
|
1792469025
|
1792469057
|
|
|
0
|
Edit
Delete
|
|
26135
|
docs(infra): record fixed-source foundation checks docs(infra): record fixed-source foundation checks and isolated recovery evidence...
|
133
|
5
|
infra.yml
|
8
|
5
|
0
|
refs/heads/main
|
d6cd4a22a8e7f05efcad973f2e172cb78685f52d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"194a697d0567bcdb7c0533c70fbf1d6965037a10","after":"d6cd4a22a8e7f05efcad973f2e172cb78685f52d","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/194a697d0567bcdb7c0533c70fbf1d6965037a10...d6cd4a22a8e7f05efcad973f2e172cb78685f52d","commits":[{"id":"d6cd4a22a8e7f05efcad973f2e172cb78685f52d","message":"docs(infra): record fixed-source foundation checks and isolated recovery evidence\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/d6cd4a22a8e7f05efcad973f2e172cb78685f52d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-19T20:10:31-07:00","added":["docs/全域智库底座执行-2026-10-19.md","reports/omni-compose-parity-before.2026-10-19.txt","reports/omni-compose-parity.2026-10-19.txt","reports/omni-foundation-check.2026-10-19.txt","reports/omni-foundation.2026-10-19.json"],"removed":[],"modified":["README.md"]},{"id":"f21273eb769fb352a2653bf300acb12d17a5bdf2","message":"feat(infra): align fixed stack history and add isolated foundation acceptance\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/f21273eb769fb352a2653bf300acb12d17a5bdf2","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-19T20:09:31-07:00","added":["backup/restore-drill.py","scripts/isolated-foundation-smoke.py","test/isolated-foundation.test.mjs"],"removed":[],"modified":["README.md","backup/restore-drill.sh","compose.yaml","declarations/SOURCE.json","declarations/modules.json","docs/迁出方案.md","provision/db.sh","provision/kernel-db.sh","release-candidate.schema.json","scripts/check.mjs","test/provision-db.test.mjs","test/restore-drill.test.mjs"]},{"id":"365bd40c3c32d3748a8a8fb0eaf9f2fbcd152874","message":"merge: 合入 claude/db-sys-role-optin-20261018,保留主线生成报告待整体验证\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/365bd40c3c32d3748a8a8fb0eaf9f2fbcd152874","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-19T08:58:10-07:00","added":[],"removed":[],"modified":["README.md","provision/db.sh"]},{"id":"b10d46f077f5df7ff4778fd75764b72f07e5543c","message":"merge: 收纳模型中心最终发布历史并保留主线后续验收记录\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/b10d46f077f5df7ff4778fd75764b72f07e5543c","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-19T08:54:17-07:00","added":[],"removed":[],"modified":[]},{"id":"ec9071dc615f86bc97f495125d68100d5e0b0e46","message":"feat(stack): db.sh 只为登记 systemRole 的模块建 _sys 登录角色(04 完善计划第 24 项)\n\n背景:18 个模块里只有 identity 的源码读系统连接串 DATABASE_SYSTEM_URL_IDENTITY\n(runtime/modules/identity/src/persistence/database-url.ts、http/common/tenant-scope.ts),\n它经 \u003cdb\u003e_sys 登录角色进 NOLOGIN 组 platform_identity_system,身份迁移\n20260923120000_identity_tenant_rls 的 system_access 策略写 TO 这个组。其余 17 个模块的\n\u003cdb\u003e_sys 有 CONNECT 和口令、没有任何表权限、也没人连(04 层《授权模型核对-2026-10-11》§2.3)。\n本提交是 04 完善计划第 24 项「数据库授权收紧」的第一半:未用的 _sys 不再创建,db.sh 按模块声明\nsystem 需求。stack/compose.yaml 第 270 行的 DATABASE_SYSTEM_URL 是内核库(kernel-db.sh)的,不动。\n\n行为变化:\n- runtime/modules.json:identity 条目加 \"systemRole\": true(无 JSON Schema、无测试拒绝未知字段)。\n- stack/provision/db.sh:模块列表一并解析 systemRole。登记的模块保持原行为(建 \u003cdb\u003e_sys LOGIN、\n 建 \u003c库族\u003e_system NOLOGIN 组、GRANT 组 TO sys、GRANT CONNECT);未登记的模块不建 _sys、不建组,\n 改为幂等收紧 SQL:DO $$ IF EXISTS \u003cdb\u003e_sys THEN ALTER ROLE … NOLOGIN; REVOKE CONNECT … $$\n (不 DROP,避免对象依赖失败);已存在的组角色留着不动(集群级、可能被别的环境引用)。\n 头注释、--dry-run 首行与末尾 echo 改为如实口径;三类口令仍一并要求且必须互不相同。\n- governance/check-modules.mjs 新增对等规则 SYSTEM_ROLE_PARITY(lib/module-system-role-parity.mjs,\n 纯函数):模块 src 下非测试 .ts(跳过 node_modules / dist / test)出现 DATABASE_SYSTEM_URL_\n ⇔ 登记 systemRole === true;systemRole 出现须为布尔(SYSTEM_ROLE_INVALID)。头注释与成功摘要同步。\n- governance/lib/module-database-plan.mjs 把 systemRole 带进计划;prepare-module-databases.mjs\n 只为这些模块输出 DATABASE_SYSTEM_URL_\u003cM\u003e(否则输出会指向不再存在的角色),roles 摘要改为如实口径。\n- 测试:新增 governance/test/module-system-role-parity.test.mjs(正反例 + 真实登记逐模块对等);\n module-databases.test.mjs 的 dry-run 断言按新口径(18 库;只有 identity 出现 _sys 与\n platform_identity_system;其他模块出现 NOLOGIN 收紧语句;37 个 LOGIN / 1 个 NOLOGIN 组;\n 三个口令占位符仍都出现);module-database-plan.test.mjs 钉住 systemRole 只有 identity。\n- 文档:stack/README.md、docs/runbook.md(三处)、仓根 CLAUDE.md「stack 与门禁的对照关系」一句、\n runtime/apps/api-nestjs/.env.example 的角色计数与口径改为「18 个库 + 37 个 LOGIN 角色 + 1 个\n NOLOGIN 系统组;_sys 只给登记 systemRole 的模块(现为 identity)」。带日期的历史记录不改。\n\n老环境重跑的效果:`db.sh \u003cenv\u003e` 重跑即把 17 个模块已存在的 \u003cdb\u003e_\u003cenv\u003e_sys 收为 NOLOGIN 并收回\nCONNECT;identity 的 _sys 与 platform_identity_system 不变;已存在的其他 \u003c库族\u003e_system 组角色保留。\ndry-run(dev):18 CREATE DATABASE、37 条 ALTER ROLE … LOGIN、1 个 CREATE ROLE … NOLOGIN、\n17 条 ALTER ROLE … NOLOGIN 收紧、组角色只出现 platform_identity_system。\n\n门禁(本 worktree,无 runtime / contracts 安装,不连真库):\n- bash stack/provision/db.sh dev --dry-run:通过,计数如上。\n- pnpm test:1023 项,1021 通过 / 1 失败 / 1 跳过;唯一失败 permission-service-candidate.test.mjs\n 是环境原因(require ajv 经 contracts/node_modules,本 worktree 未装),同一测试在主检出 9/9 通过,\n 且不引用本次改动的任何文件。\n- pnpm check:modules:把主检出的 @juhai/kernel platform-ports.d.ts 临时放到被忽略的\n runtime/node_modules 后通过(18 个模块;system 登录角色只给 1 个登记 systemRole 的模块 identity),\n 跑完已删除;无该文件时门禁按既有逻辑先报「未找到已安装的 @juhai/kernel」。\n- pnpm check:doc-claims、check:stub-surface、check:caddy:通过。\n- reports/*.latest.json 已恢复,本提交不带报告,合入时按仓纪律回绑。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/ec9071dc615f86bc97f495125d68100d5e0b0e46","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T20:42:24-07:00","added":[],"removed":[],"modified":["README.md","provision/db.sh"]}],"total_commits":0,"head_commit":{"id":"d6cd4a22a8e7f05efcad973f2e172cb78685f52d","message":"docs(infra): record fixed-source foundation checks and isolated recovery evidence\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/d6cd4a22a8e7f05efcad973f2e172cb78685f52d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-19T20:10:31-07:00","added":["docs/全域智库底座执行-2026-10-19.md","reports/omni-compose-parity-before.2026-10-19.txt","reports/omni-compose-parity.2026-10-19.txt","reports/omni-foundation-check.2026-10-19.txt","reports/omni-foundation.2026-10-19.json"],"removed":[],"modified":["README.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":534,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-19T01:03:58+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
|
6
|
1792465891
|
1792465931
|
0
|
1792465891
|
1792465931
|
|
|
0
|
Edit
Delete
|
|
26104
|
docs(governance): 迁出控制面后的文档链接改指固定提交(治理一致性 L4)
|
133
|
5
|
infra.yml
|
7
|
5
|
0
|
refs/heads/main
|
194a697d0567bcdb7c0533c70fbf1d6965037a10
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fbc127c8341c596329f98fb1f9eb8f17e210a07e","after":"194a697d0567bcdb7c0533c70fbf1d6965037a10","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/fbc127c8341c596329f98fb1f9eb8f17e210a07e...194a697d0567bcdb7c0533c70fbf1d6965037a10","commits":[{"id":"194a697d0567bcdb7c0533c70fbf1d6965037a10","message":"docs(governance): 迁出控制面后的文档链接改指固定提交(治理一致性 L4)\n\n治理层门禁 2026-10-18 读数本仓 L4 14 条:README、ci/act-runner、credentials、\nmodel-center-pilot 的相对链接按本目录还在 enterprise-platform 仓内时写,\n迁出成独立仓后全部失效。\n\n- 指向控制面 docs/、reports/ 的 11 条 → enterprise-platform 固定提交\n 106e5b87c 的 Gitea 页面(目标均在该提交)\n- 指向治理仓 平台治理/基础设施文档、工程基础框架 的 3 条 → platform-governance\n 固定提交 cc09b9cc\n\n只改链接目标。node scripts/check.mjs 全部 PASS(declarations drift 按独立\n检出 SKIP),node --test 31/31。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/194a697d0567bcdb7c0533c70fbf1d6965037a10","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T09:53:47-07:00","added":[],"removed":[],"modified":["README.md","ci/act-runner/README.md","credentials/README.md","model-center-pilot/README.md"]}],"total_commits":0,"head_commit":{"id":"194a697d0567bcdb7c0533c70fbf1d6965037a10","message":"docs(governance): 迁出控制面后的文档链接改指固定提交(治理一致性 L4)\n\n治理层门禁 2026-10-18 读数本仓 L4 14 条:README、ci/act-runner、credentials、\nmodel-center-pilot 的相对链接按本目录还在 enterprise-platform 仓内时写,\n迁出成独立仓后全部失效。\n\n- 指向控制面 docs/、reports/ 的 11 条 → enterprise-platform 固定提交\n 106e5b87c 的 Gitea 页面(目标均在该提交)\n- 指向治理仓 平台治理/基础设施文档、工程基础框架 的 3 条 → platform-governance\n 固定提交 cc09b9cc\n\n只改链接目标。node scripts/check.mjs 全部 PASS(declarations drift 按独立\n检出 SKIP),node --test 31/31。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/194a697d0567bcdb7c0533c70fbf1d6965037a10","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-18T09:53:47-07:00","added":[],"removed":[],"modified":["README.md","ci/act-runner/README.md","credentials/README.md","model-center-pilot/README.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":512,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-13T06:13: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
|
6
|
1792343038
|
1792343159
|
0
|
1792343038
|
1792343159
|
|
|
0
|
Edit
Delete
|
|
25652
|
chore(chg036): merge CHG-034 stack history and ref chore(chg036): merge CHG-034 stack history and refresh declarations...
|
133
|
5
|
infra.yml
|
6
|
5
|
0
|
refs/heads/main
|
fbc127c8341c596329f98fb1f9eb8f17e210a07e
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"4a41adae67bcf5be2d98b33d6257c0a6de632d69","after":"fbc127c8341c596329f98fb1f9eb8f17e210a07e","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/4a41adae67bcf5be2d98b33d6257c0a6de632d69...fbc127c8341c596329f98fb1f9eb8f17e210a07e","commits":[{"id":"fbc127c8341c596329f98fb1f9eb8f17e210a07e","message":"chore(chg036): merge CHG-034 stack history and refresh declarations\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/fbc127c8341c596329f98fb1f9eb8f17e210a07e","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-12T15:12:45-07:00","added":[],"removed":[],"modified":["caddy/Caddyfile","compose.yaml","declarations/SOURCE.json","declarations/caddy-routes.json","declarations/modules.json","docs/迁出方案.md","provision/openbao-provision.json","provision/redis-dbs.json","provision/redpanda-topics.json"]},{"id":"c673ed2d02b23a2eb750cbaf89b357c383cb6418","message":"refactor(catalog): CHG-034 数字员工OS 更名为数字智能层(digital-intelligence-layer)\n\n- Catalog 项目 id、EmploymentTransferred 消费者、AppManifest 草案与用量投影契约改为新标识;fact catalogFingerprint 同步\n- 契约 id os-usage-projection-api.v1 → dil-usage-projection-api.v1(modules.json、cost-capacity、caddy-routes;网关前缀 /api/v1/cost/ 不变)\n- stack/provision:OpenBao 应用列表、Redis 库说明、Redpanda 重放 topic 与消费组名;测试、夹具、注释与文档用词同步\n- 不改:已发布 Schema 与生成代码、已应用迁移、decisions.json、docs/报告/证据、ERK 固定快照、工作区目录路径、\n os-product 协议名、凭据台账 stack/credentials/、带日期的现存资源名、旧栈卷名、2026-08 移植回灌等历史记录行\n- 用户 2026-10-12 以 Catalog Owner 签署:硬切(运行库旧登记观察期保留,A2 新增新 id 登记),现在合入\n- 生成:在 4bfc0b81 上重放 03 切换执行/工具/rename-cp.py(03 233f219)与 sync-fact-schema-digests --write\n- 材料:平台治理/doc/decisions/CHG-034-材料/(治理仓 65a87a4)\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/c673ed2d02b23a2eb750cbaf89b357c383cb6418","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-12T08:36:20-07:00","added":[],"removed":[],"modified":["provision/openbao-provision.json","provision/redis-dbs.json","provision/redpanda-topics.json"]},{"id":"12d40ebb94d7948d7307f017585450996f513bbc","message":"feat(workbench): EES 只读宿主接入工作台——第 19 个探针、语义目录实时读取与 /ees/* 入口路由\n\nC1 首消费者(只读正式宿主 H2/O1/I1/C1 批准记录 §5)的工作台侧实现:\n- 运行信息页新增「受托独立服务」:经入口读 EES 公开就绪探针 /ees/health/ready(不带令牌),\n 计入「读取全部 N 个探针」(dev 为 18 + 1);200+ready 就绪、503 未就绪、502/404 探测失败。\n 同源前缀登记在 features/platform/hosted-services.ts,未登记的受托服务不探测。\n- EES 服务工作区「语义目录」:登录后点按钮经 /ees/api/v1/semantics/* 读取三个语义读操作\n (按游标读完,页数有上限),对照快照 catalogRevision;401/403/404/503 各给说明,\n EES 拒绝不清平台会话;未登录不渲染,标签内容与快照逐字一致(MW-07 不变)。\n- stack/caddy/Caddyfile:handle /ees/* + uri strip_prefix 转发 {$PLATFORM_EES_UPSTREAM:host.docker.internal:4432};\n 不用 handle_path(排在全部 handle 之后,会被工作台兜底抢先)。check:caddy 与 caddy validate 通过。\n- 用例:RT-06(受托探针计数、不带令牌、502 探测失败)、MW-22(实时读取、游标、拒绝说明、会话保留),\n check-workbench-ui REQUIRED_CASES 92 → 94;MW-06 的服务入口文字随概览更新。\n- 文档:runbook 新增「EES 只读正式宿主接入工作台」(含换工作台客户端时两条单值 OIDC 信任的连带改动);\n formal-host README 补工作台接入。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/12d40ebb94d7948d7307f017585450996f513bbc","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T19:06:09-07:00","added":[],"removed":[],"modified":["caddy/Caddyfile"]},{"id":"45363b29810308fee90f67a8ccad12d4453507cd","message":"Merge remote-tracking branch 'origin/main' into claude/ees-ktv-c1-20261011\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/45363b29810308fee90f67a8ccad12d4453507cd","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T16:32:37-07:00","added":[],"removed":[],"modified":["backup/managed-backup.py","backup/test_managed_backup.py","release-candidate.schema.json"]},{"id":"0da7d0b960ffa4014061df6297eca8908196d38e","message":"feat(permission): 决策接口新增 Human OIDC 入口,供 EES HUMAN_REQUEST_TOKEN 画像调用\n\n- 新 env PLATFORM_DECISION_HUMAN_OIDC_TRUSTS:1..8 条 {issuer, audience, endpointOrigin?},\n 逐条沿用角色管理入口的校验(开发环境才允许回环 HTTP;staging/production 拒绝),重复或非法即\n DECISION_HUMAN_ENTRY_TRUST_INVALID 启动失败;未设即关闭,行为不变\n- DecisionHumanEntryVerifier 只处理 POST /api/v1/decisions:令牌声明的 (iss, aud) 命中登记才接手,\n 按固定信任完整验签并逐请求 UserInfo 回查,失败直接拒绝、不回落;未命中交回原链(machine / 通用 JWT 不变)\n- 决策适配器:经此入口时请求体 actor 须为 human/oidc,actor_id、client_id、session_id 逐项等于已验签\n 的 subject、clientId(OIDC 客户端)与 sid,否则 context-invalid;账本 appId 仍为 clientId\n- 角色管理入口抽出 createEntryIdentityClient 共用;compose 透传与 runbook、对接说明书同步\n- 测试:新增 5 例入口测试与 2 例适配器测试;api-nestjs typecheck 通过,相关 6 个文件 72/72;\n 对「不回落」与 sid 校验做过故意破坏的负向自检\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/0da7d0b960ffa4014061df6297eca8908196d38e","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T16:15:16-07:00","added":[],"removed":[],"modified":["compose.yaml"]}],"total_commits":0,"head_commit":{"id":"fbc127c8341c596329f98fb1f9eb8f17e210a07e","message":"chore(chg036): merge CHG-034 stack history and refresh declarations\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/fbc127c8341c596329f98fb1f9eb8f17e210a07e","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-12T15:12:45-07:00","added":[],"removed":[],"modified":["caddy/Caddyfile","compose.yaml","declarations/SOURCE.json","declarations/caddy-routes.json","declarations/modules.json","docs/迁出方案.md","provision/openbao-provision.json","provision/redis-dbs.json","provision/redpanda-topics.json"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":455,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-12T07:28:07+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
|
6
|
1791843203
|
1791843232
|
0
|
1791843202
|
1791843232
|
|
|
0
|
Edit
Delete
|
|
25587
|
Merge branch 'codex/chg036-stack-8173ef3f' Merge branch 'codex/chg036-stack-8173ef3f' of /Users/hillao/AI产品/企业AI应用开发群/企业控制面/enterprise-platform...
|
133
|
5
|
infra.yml
|
5
|
5
|
0
|
refs/heads/main
|
4a41adae67bcf5be2d98b33d6257c0a6de632d69
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"9e2794afc2caec1dd31fe7ada1e875dfa91ca1f8","after":"4a41adae67bcf5be2d98b33d6257c0a6de632d69","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/9e2794afc2caec1dd31fe7ada1e875dfa91ca1f8...4a41adae67bcf5be2d98b33d6257c0a6de632d69","commits":[{"id":"4a41adae67bcf5be2d98b33d6257c0a6de632d69","message":"Merge branch 'codex/chg036-stack-8173ef3f' of /Users/hillao/AI产品/企业AI应用开发群/企业控制面/enterprise-platform\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/4a41adae67bcf5be2d98b33d6257c0a6de632d69","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T16:27:22-07:00","added":[],"removed":[],"modified":["release-candidate.schema.json"]},{"id":"4bb16dec341c6ad983cb2fc4d473446aaeae9323","message":"fix(chg036): propagate compose parity failures and validate both overlay sets\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/4bb16dec341c6ad983cb2fc4d473446aaeae9323","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T16:27:15-07:00","added":["test/compose-parity.test.mjs"],"removed":[],"modified":["docs/迁出方案.md","scripts/verify-compose-parity.sh"]},{"id":"90d82543c073535d2b92b5d0938efc9f7372eabc","message":"Merge Scope registration and candidate verification hardening\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/90d82543c073535d2b92b5d0938efc9f7372eabc","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T16:16:26-07:00","added":[],"removed":[],"modified":["release-candidate.schema.json"]},{"id":"0e290b999c46c483dcaabdb6b9c3322ed99b0105","message":"fix(governance): register OS Scope and bind candidate reports to CI attempt\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/0e290b999c46c483dcaabdb6b9c3322ed99b0105","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T16:13:44-07:00","added":[],"removed":[],"modified":["release-candidate.schema.json"]}],"total_commits":0,"head_commit":{"id":"4a41adae67bcf5be2d98b33d6257c0a6de632d69","message":"Merge branch 'codex/chg036-stack-8173ef3f' of /Users/hillao/AI产品/企业AI应用开发群/企业控制面/enterprise-platform\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/4a41adae67bcf5be2d98b33d6257c0a6de632d69","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T16:27:22-07:00","added":[],"removed":[],"modified":["release-candidate.schema.json"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":441,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-12T07:16: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
|
2
|
6
|
1791761287
|
1791761468
|
0
|
1791761287
|
1791761468
|
|
|
0
|
Edit
Delete
|
|
25583
|
Merge branch 'codex/infra-backup-split-2026101 Merge branch 'codex/infra-backup-split-20261011' of /Users/hillao/AI产品/企业AI应用开发群/企业控制面/enterprise-platform...
|
133
|
5
|
infra.yml
|
4
|
5
|
0
|
refs/heads/main
|
9e2794afc2caec1dd31fe7ada1e875dfa91ca1f8
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"9d7c43296a9badda43811f5ea5eee052db562008","after":"9e2794afc2caec1dd31fe7ada1e875dfa91ca1f8","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/9d7c43296a9badda43811f5ea5eee052db562008...9e2794afc2caec1dd31fe7ada1e875dfa91ca1f8","commits":[{"id":"9e2794afc2caec1dd31fe7ada1e875dfa91ca1f8","message":"Merge branch 'codex/infra-backup-split-20261011' of /Users/hillao/AI产品/企业AI应用开发群/企业控制面/enterprise-platform\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/9e2794afc2caec1dd31fe7ada1e875dfa91ca1f8","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T16:16:18-07:00","added":[],"removed":[],"modified":["model-center-pilot/Caddyfile","model-center-pilot/README.md"]},{"id":"0ff119bf7444dc18aa8c7fdbd29beeb787049664","message":"fix(backup): verify stored data and restore health without mutation\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/0ff119bf7444dc18aa8c7fdbd29beeb787049664","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T16:15:04-07:00","added":[],"removed":[],"modified":["README.md","backup/managed-backup.py","backup/test_managed_backup.py","provision/db.sh"]},{"id":"9997f1e98e94228b7e5ab9c78a05e46df9405f07","message":"fix(backup): fail closed on missing data and restore failures\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/9997f1e98e94228b7e5ab9c78a05e46df9405f07","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T16:14:56-07:00","added":[],"removed":[],"modified":["backup/managed-backup.py","backup/test_managed_backup.py"]},{"id":"270e41c31ba929fe0cb9a7fc24b7ab3de2a247f5","message":"fix(pilot): 将渠道与支付入口转到主控制面\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/270e41c31ba929fe0cb9a7fc24b7ab3de2a247f5","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T06:29:00-07:00","added":[],"removed":[],"modified":["model-center-pilot/Caddyfile","model-center-pilot/README.md"]}],"total_commits":0,"head_commit":{"id":"9e2794afc2caec1dd31fe7ada1e875dfa91ca1f8","message":"Merge branch 'codex/infra-backup-split-20261011' of /Users/hillao/AI产品/企业AI应用开发群/企业控制面/enterprise-platform\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/9e2794afc2caec1dd31fe7ada1e875dfa91ca1f8","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T16:16:18-07:00","added":[],"removed":[],"modified":["model-center-pilot/Caddyfile","model-center-pilot/README.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":408,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-11T22:33:08+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
1
|
6
|
1791760648
|
1791760675
|
0
|
1791760585
|
1791760675
|
|
|
0
|
Edit
Delete
|
|
25558
|
docs: 迁出方案配合清单——登记与 CHG-034 的先后,勾掉已完成的建仓项
|
133
|
5
|
infra.yml
|
3
|
5
|
0
|
refs/heads/main
|
9d7c43296a9badda43811f5ea5eee052db562008
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8384d258206ce9465517ca8020f1528630d5ce60","after":"9d7c43296a9badda43811f5ea5eee052db562008","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/8384d258206ce9465517ca8020f1528630d5ce60...9d7c43296a9badda43811f5ea5eee052db562008","commits":[{"id":"9d7c43296a9badda43811f5ea5eee052db562008","message":"docs: 迁出方案配合清单——登记与 CHG-034 的先后,勾掉已完成的建仓项\n\n- CHG-034(数字智能层改名)补丁改了 stack/provision/{openbao-provision,\n redis-dbs,redpanda-topics}.json 与 stack/credentials/README.md,本仓这\n 4 处仍是旧名 digital-employee-os:034 先合则按 重放.sh 并入;036 先合则\n 034 的 stack/ 部分改为本仓提交再升 gitlink\n- 「Gitea 建 infra 仓并推送」10-11 已完成;CI token 未配、runner 未注册\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/9d7c43296a9badda43811f5ea5eee052db562008","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T07:33:06-07:00","added":[],"removed":[],"modified":["docs/迁出方案.md"]}],"total_commits":0,"head_commit":{"id":"9d7c43296a9badda43811f5ea5eee052db562008","message":"docs: 迁出方案配合清单——登记与 CHG-034 的先后,勾掉已完成的建仓项\n\n- CHG-034(数字智能层改名)补丁改了 stack/provision/{openbao-provision,\n redis-dbs,redpanda-topics}.json 与 stack/credentials/README.md,本仓这\n 4 处仍是旧名 digital-employee-os:034 先合则按 重放.sh 并入;036 先合则\n 034 的 stack/ 部分改为本仓提交再升 gitlink\n- 「Gitea 建 infra 仓并推送」10-11 已完成;CI token 未配、runner 未注册\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/9d7c43296a9badda43811f5ea5eee052db562008","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T07:33:06-07:00","added":[],"removed":[],"modified":["docs/迁出方案.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":402,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-11T22:03:01+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
|
6
|
1791729189
|
1791729216
|
0
|
1791729188
|
1791729216
|
|
|
0
|
Edit
Delete
|
|
25556
|
infra: gate fills every required compose var (comp infra: gate fills every required compose var (compose config failed 4/4 on Mac)...
|
133
|
5
|
infra.yml
|
2
|
5
|
0
|
refs/heads/main
|
8384d258206ce9465517ca8020f1528630d5ce60
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"467586207b3181b1e77c6022866a2c306a4b144a","after":"8384d258206ce9465517ca8020f1528630d5ce60","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/467586207b3181b1e77c6022866a2c306a4b144a...8384d258206ce9465517ca8020f1528630d5ce60","commits":[{"id":"8384d258206ce9465517ca8020f1528630d5ce60","message":"infra: gate fills every required compose var (compose config failed 4/4 on Mac)\n\nThe compose-config step only set 4 placeholder vars; on a machine with\ndocker every overlay failed on PLATFORM_RUNTIME_REDIS_URL (staging also\nneeds PLATFORM_PUBLIC_HOST / PLATFORM_TLS_ISSUER, ai-gateway-db needs\nLITELLM_DATABASE_URL), so `npm run check` exited 1. It went unnoticed\nbecause the gate was written in a sandbox without docker (step SKIPped),\nand the Gitea runner image (node:20-bookworm) has no docker either.\n\n- collect every ${VAR:?} / ${VAR?} from compose.yaml + overlays and give\n placeholders, same approach as verify-compose-parity.sh (8 vars today)\n- report docker's last stderr line per failing overlay\n- docs/迁出方案.md §5: record the failure, the fix, and that CI still skips\n\nMac: compose config 4/4 PASS, exit 0; declarations in sync vs control\nplane main; broken-overlay negative case reports FAIL.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/8384d258206ce9465517ca8020f1528630d5ce60","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T07:02:59-07:00","added":[],"removed":[],"modified":["docs/迁出方案.md","scripts/check.mjs"]}],"total_commits":0,"head_commit":{"id":"8384d258206ce9465517ca8020f1528630d5ce60","message":"infra: gate fills every required compose var (compose config failed 4/4 on Mac)\n\nThe compose-config step only set 4 placeholder vars; on a machine with\ndocker every overlay failed on PLATFORM_RUNTIME_REDIS_URL (staging also\nneeds PLATFORM_PUBLIC_HOST / PLATFORM_TLS_ISSUER, ai-gateway-db needs\nLITELLM_DATABASE_URL), so `npm run check` exited 1. It went unnoticed\nbecause the gate was written in a sandbox without docker (step SKIPped),\nand the Gitea runner image (node:20-bookworm) has no docker either.\n\n- collect every ${VAR:?} / ${VAR?} from compose.yaml + overlays and give\n placeholders, same approach as verify-compose-parity.sh (8 vars today)\n- report docker's last stderr line per failing overlay\n- docs/迁出方案.md §5: record the failure, the fix, and that CI still skips\n\nMac: compose config 4/4 PASS, exit 0; declarations in sync vs control\nplane main; broken-overlay negative case reports FAIL.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/8384d258206ce9465517ca8020f1528630d5ce60","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-11T07:02:59-07:00","added":[],"removed":[],"modified":["docs/迁出方案.md","scripts/check.mjs"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":394,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-11T21:11:51+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
|
6
|
1791727381
|
1791727410
|
0
|
1791727381
|
1791727410
|
|
|
0
|
Edit
Delete
|
|
25549
|
reports: compose parity PASS (4/4 overlays identic reports: compose parity PASS (4/4 overlays identical vs control-plane stack/ @ e6bc6492)...
|
133
|
5
|
infra.yml
|
1
|
5
|
0
|
refs/heads/main
|
467586207b3181b1e77c6022866a2c306a4b144a
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0000000000000000000000000000000000000000","after":"467586207b3181b1e77c6022866a2c306a4b144a","compare_url":"https://gitea.g-hi.com/luoanwu/infra/compare/6c564a6e39087aa1e1912668fe97a34d39f5b622...467586207b3181b1e77c6022866a2c306a4b144a","commits":[{"id":"467586207b3181b1e77c6022866a2c306a4b144a","message":"reports: compose parity PASS (4/4 overlays identical vs control-plane stack/ @ e6bc6492)\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01QJ59SfRQABmxkDBphp5WKZ\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/467586207b3181b1e77c6022866a2c306a4b144a","author":{"name":"Luolao","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"Luolao","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T12:19:16Z","added":["reports/compose-parity.2026-10-11.txt"],"removed":[],"modified":["docs/迁出方案.md"]},{"id":"021f1e3dd592ba0315e3e051dc5d24ce5f0504e2","message":"infra: parity script passes a normalised secrets dir\n\nSecond Mac run: the only diff in all 4 overlays was the write-token path\nspelled .../enterprise-platform/../.secrets vs .../.secrets (same file);\ncompose does not fold '..' in absolute paths.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01QJ59SfRQABmxkDBphp5WKZ\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/021f1e3dd592ba0315e3e051dc5d24ce5f0504e2","author":{"name":"Luolao","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"Luolao","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T12:18:25Z","added":[],"removed":[],"modified":["scripts/verify-compose-parity.sh"]},{"id":"feb4de05773c055bfde8d340a37234ac0dfed5e3","message":"infra: parity script fills every required var, runs compose under env -i\n\nFirst run on the Mac failed identically on both sides\n(PLATFORM_RUNTIME_REDIS_URL required). Now all ${VAR:?} names from both\ncompose sets get placeholders, and the shell environment is not inherited.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01QJ59SfRQABmxkDBphp5WKZ\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/feb4de05773c055bfde8d340a37234ac0dfed5e3","author":{"name":"Luolao","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"Luolao","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T12:14:23Z","added":[],"removed":[],"modified":["scripts/verify-compose-parity.sh"]},{"id":"4cdaa06df0a2690f9aa846e36159a6fb41f72946","message":"docs: overlay count\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01QJ59SfRQABmxkDBphp5WKZ\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/4cdaa06df0a2690f9aa846e36159a6fb41f72946","author":{"name":"Luolao","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"Luolao","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T12:12:26Z","added":[],"removed":[],"modified":["docs/迁出方案.md"]},{"id":"bc43071e316ba10e0ef7a545b0f5425aa22748dd","message":"infra: compose parity script (control-plane stack/ vs infra, needs docker)\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01QJ59SfRQABmxkDBphp5WKZ\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/bc43071e316ba10e0ef7a545b0f5425aa22748dd","author":{"name":"Luolao","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"Luolao","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T12:12:15Z","added":["scripts/verify-compose-parity.sh"],"removed":[],"modified":["docs/迁出方案.md"]}],"total_commits":0,"head_commit":{"id":"467586207b3181b1e77c6022866a2c306a4b144a","message":"reports: compose parity PASS (4/4 overlays identical vs control-plane stack/ @ e6bc6492)\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_01QJ59SfRQABmxkDBphp5WKZ\n","url":"https://gitea.g-hi.com/luoanwu/infra/commit/467586207b3181b1e77c6022866a2c306a4b144a","author":{"name":"Luolao","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"Luolao","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T12:19:16Z","added":["reports/compose-parity.2026-10-11.txt"],"removed":[],"modified":["docs/迁出方案.md"]},"repository":{"id":133,"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":"infra","full_name":"luoanwu/infra","description":"","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":27,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra/languages","html_url":"https://gitea.g-hi.com/luoanwu/infra","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/infra","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/infra.git","clone_url":"https://gitea.g-hi.com/luoanwu/infra.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-11T21:11:15+08:00","updated_at":"2026-10-11T21:11:51+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
|
6
|
1791724313
|
1791724338
|
0
|
1791724311
|
1791724338
|
|
|
0
|
Edit
Delete
|
|
25821
|
feat(console): 重排工作台与平台、企业、应用三个概览页
|
125
|
16
|
verify.yml
|
10
|
16
|
0
|
refs/heads/feat/console-layout
|
695ea4d16f5066a81e3808b0ba4432b2a69cbd87
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/feat/console-layout {"ref":"refs/heads/feat/console-layout","before":"ff5ee33515b0a21b6ba738d00c52373fabfaa50d","after":"695ea4d16f5066a81e3808b0ba4432b2a69cbd87","compare_url":"https://gitea.g-hi.com/pengzhiyu/IAM/compare/ff5ee33515b0a21b6ba738d00c52373fabfaa50d...695ea4d16f5066a81e3808b0ba4432b2a69cbd87","commits":[{"id":"695ea4d16f5066a81e3808b0ba4432b2a69cbd87","message":"feat(console): 重排工作台与平台、企业、应用三个概览页\n\n四个概览页此前沿用早期布局:工作台只有两个入口,待办和应用用零散小卡片展示,功能入口不分组,与已改造的列表页风格不一致。本次按「上方状态卡片、下方两栏分组入口」统一四页布局。\n\n实现内容:\n- 工作台:三个并列入口「平台管理 / 应用 / 企业管理」,新增应用配色 entry--apps;应用管理员入口写明负责的应用,无身份的入口锁定并说明原因\n- 工作台新增「我的企业」可点表格(企业、你的身份,每次读取 10 条,满页时可加载更多),账号摘要放侧栏并链接个人中心,基本概念改为四格横排\n- 平台概览:「需要你关注」改为卡片,三类事项固定列出,没有内容时显示对勾与「目前没有。」,有内容时显示数量、最多 3 个名称与处理入口,读取失败只在该行重试\n- 企业概览:本企业的应用改为卡片内表格,停用的应用不可进入并注明原因;空状态改用公共 EmptyList\n- 应用概览:三步引导放进卡片,步骤之间用分隔线,右上角显示完成进度;任一步读取中或失败时不显示进度\n- 三个概览的功能入口统一用 overview-groups 两栏分组,窄屏改为上下排列;删除不再使用的待办卡片、应用卡片与一切正常提示条样式\n\n验证:\n- npm run typecheck、npm run lint、npm run format:check:通过\n- npm run test:27 个测试文件、234 项通过(同步修改平台、企业、应用概览单测,新增 home.test.tsx 4 项)\n- 浏览器检查 1280 宽、375 窄屏与暗色:四页无页面级横向溢出;待办与停用应用状态用页面内临时拦截 fetch 验证\n- 验收脚本未运行(脚本只依赖「工作台」标题与 .entry--locked,均已保留)\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/695ea4d16f5066a81e3808b0ba4432b2a69cbd87","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T06:50:19-07:00","added":["iam-admin-web/src/test/home.test.tsx"],"removed":[],"modified":["iam-admin-web/src/pages/AppOverview.tsx","iam-admin-web/src/pages/HomePage.tsx","iam-admin-web/src/pages/PlatformOverview.tsx","iam-admin-web/src/pages/TenantOverview.tsx","iam-admin-web/src/styles/pages.css","iam-admin-web/src/test/app-overview.test.tsx","iam-admin-web/src/test/platform-overview.test.tsx","iam-admin-web/src/test/tenant-overview.test.tsx"]},{"id":"ceb5884bba8e1274c550348e99226f46614e6511","message":"feat(console): 把应用定义独立成「应用」分组并统一权限相关命名\n\nIAM 面向多租户,一个应用登记后可由多家企业开通。原导航把应用的全局定义(登录客户端、受保护的服务、权限与资源规则)放在「平台管理」下,企业内的应用授权又叫「应用管理」,使用者难以分清权限为何不在应用层维护、改了会影响谁。\n\n实现内容:\n- 侧边栏改为「平台管理 / 应用 / 企业管理 / 应用授权」四组:平台管理只对平台管理员展示链接;新增「应用」分组(应用列表),平台管理员与应用管理员可见;原「应用管理」改名「应用授权」;网址保持不变\n- 应用详情网址仍在 /platform/applications 下,导航高亮、顶部上下文标识(「应用定义」)与面包屑(应用 › 应用列表)归入「应用」\n- 平台侧「应用接入」改为「应用列表」、「权限清单与资源规则」改为「权限定义与资源规则」,徽标改为「所有企业共用」,权限定义卡片与修改弹窗写明对所有开通企业生效\n- 企业侧「权限清单」改为「可用权限」,入口改为「修改权限定义」;工作台、平台概览、切换对话框、无权限说明、操作记录操作名称及相关提示同步新命名\n- 侧边栏测试改为可切换平台角色,新增平台管理员与应用管理员分组可见性用例;弹出面板测试先等待焦点进入面板再按 Esc,消除原有时序抖动\n- acceptance-t03、acceptance-p10-t02、acceptance-p10-t03 同步新的标签名称\n\n验证:\n- npm run format:check、npm run lint、npm run typecheck:通过\n- npm test:26 个测试文件、230 项通过;侧边栏测试单独连续运行 5 次均通过\n- 浏览器经 5173 连接演示后端,在 1280 宽、375 窄屏及亮/暗色下检查四个分组、应用详情、企业可用权限与跳转、修改弹窗影响说明:正常\n- 应用管理员视角仅有单元测试覆盖(演示环境无应用管理员账号);验收脚本未运行\n- 「已在 N 个企业开通」需后端提供按应用统计的接口,本次未实现\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/ceb5884bba8e1274c550348e99226f46614e6511","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T06:36:58-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-p10-t02.mjs","iam-admin-web/scripts/acceptance-p10-t03.mjs","iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/src/data/pages.ts","iam-admin-web/src/lib/audit-actions.ts","iam-admin-web/src/pages/AppOverview.tsx","iam-admin-web/src/pages/HomePage.tsx","iam-admin-web/src/pages/PlatformOverview.tsx","iam-admin-web/src/pages/ScopePages.tsx","iam-admin-web/src/pages/management/ApplicationContracts.tsx","iam-admin-web/src/pages/management/ApplicationsPage.tsx","iam-admin-web/src/pages/management/BindingScopes.tsx","iam-admin-web/src/pages/management/BindingsPage.tsx","iam-admin-web/src/pages/management/DecisionCallersPage.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/shell/ContextSwitcher.tsx","iam-admin-web/src/shell/ContextTrail.tsx","iam-admin-web/src/shell/NavRail.tsx","iam-admin-web/src/shell/scope.tsx","iam-admin-web/src/styles/layout.css","iam-admin-web/src/test/app-overview.test.tsx","iam-admin-web/src/test/sidebar.test.tsx"]},{"id":"7a1bd50d627fb56ebd548956a8a05c61fd306f64","message":"fix(console): 转义代码输入框 pattern 中的连字符\n\n浏览器按 v 模式编译 input 的 pattern,字符类末尾未转义的「-」会被判为非法正则,浏览器报错并直接跳过该格式校验。其余页面已使用转义写法,本次统一。\n\n实现内容:\n- 权限代码(新增权限、资源类型代码)、角色代码、程序身份代码、应用代码共 5 处 pattern 改为 \\- 转义,匹配规则不变\n\n验证:\n- 两种写法用 new RegExp(..., 'v') 编译通过\n- 浏览器中新增权限弹窗输入 Bad-Code 时 validity.patternMismatch 为 true\n- npm run format:check、npm run lint、npm run typecheck:通过;npm test:26 个测试文件、228 项通过\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/7a1bd50d627fb56ebd548956a8a05c61fd306f64","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T06:11:02-07:00","added":[],"removed":[],"modified":["iam-admin-web/src/pages/management/ApplicationContracts.tsx","iam-admin-web/src/pages/management/ApplicationsPage.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/pages/management/ServicePrincipalsPage.tsx"]},{"id":"54b1e1ee340da10ec01235cc9d1cf8d6ca22ca5c","message":"feat(console): 把权限清单的新增与修改拆开并支持按行修改\n\n平台权限清单原先只有一个「新增或修改权限」入口,要修改已有权限必须手输准确的代码,输错会误建一项不能删除的权限;企业侧只读权限清单也看不出该去哪里修改。\n\n实现内容:\n- 平台权限清单每行增加「修改」:代码只读展示,名称和说明预填,内容未变不能保存,修改不再要求勾选确认\n- 未设置名称的权限名称框留空且可留空,只改说明时名称保持原样;已停用的权限也可修改名称和说明\n- 顶部按钮改为「新增权限」:代码与已有权限重复时拦下并引导到列表「修改」,新增仍需勾选确认\n- 企业侧应用权限清单在平台管理员或该应用的应用管理员登录时,页头显示「去平台修改权限」入口\n- 操作记录中 authorization.group_changed 改称「创建用户组」(后端只在新建用户组时写入)\n- 表格行末操作按钮新增 management-actions--end 靠右排列\n- acceptance-t03 改用「新增权限」按钮,并把提交按钮限定在弹窗内\n\n验证:\n- npm run format:check、npm run lint、npm run typecheck:通过\n- npm test:26 个测试文件、228 项通过(新增修改模式与新增重复代码拦截用例)\n- 浏览器经 5173 连接演示后端实际保存:只填说明保存成功且名称保持原样、其余权限说明保留、清单版本逐次加 1;重复代码被拦下;企业侧入口跳转与说明显示正常\n- acceptance-t03 未运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/54b1e1ee340da10ec01235cc9d1cf8d6ca22ca5c","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T06:10:34-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/src/lib/audit-actions.ts","iam-admin-web/src/pages/management/ApplicationContracts.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/styles/management.css","iam-admin-web/src/test/application-management.test.tsx"]}],"total_commits":0,"head_commit":{"id":"695ea4d16f5066a81e3808b0ba4432b2a69cbd87","message":"feat(console): 重排工作台与平台、企业、应用三个概览页\n\n四个概览页此前沿用早期布局:工作台只有两个入口,待办和应用用零散小卡片展示,功能入口不分组,与已改造的列表页风格不一致。本次按「上方状态卡片、下方两栏分组入口」统一四页布局。\n\n实现内容:\n- 工作台:三个并列入口「平台管理 / 应用 / 企业管理」,新增应用配色 entry--apps;应用管理员入口写明负责的应用,无身份的入口锁定并说明原因\n- 工作台新增「我的企业」可点表格(企业、你的身份,每次读取 10 条,满页时可加载更多),账号摘要放侧栏并链接个人中心,基本概念改为四格横排\n- 平台概览:「需要你关注」改为卡片,三类事项固定列出,没有内容时显示对勾与「目前没有。」,有内容时显示数量、最多 3 个名称与处理入口,读取失败只在该行重试\n- 企业概览:本企业的应用改为卡片内表格,停用的应用不可进入并注明原因;空状态改用公共 EmptyList\n- 应用概览:三步引导放进卡片,步骤之间用分隔线,右上角显示完成进度;任一步读取中或失败时不显示进度\n- 三个概览的功能入口统一用 overview-groups 两栏分组,窄屏改为上下排列;删除不再使用的待办卡片、应用卡片与一切正常提示条样式\n\n验证:\n- npm run typecheck、npm run lint、npm run format:check:通过\n- npm run test:27 个测试文件、234 项通过(同步修改平台、企业、应用概览单测,新增 home.test.tsx 4 项)\n- 浏览器检查 1280 宽、375 窄屏与暗色:四页无页面级横向溢出;待办与停用应用状态用页面内临时拦截 fetch 验证\n- 验收脚本未运行(脚本只依赖「工作台」标题与 .entry--locked,均已保留)\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/695ea4d16f5066a81e3808b0ba4432b2a69cbd87","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T06:50:19-07:00","added":["iam-admin-web/src/test/home.test.tsx"],"removed":[],"modified":["iam-admin-web/src/pages/AppOverview.tsx","iam-admin-web/src/pages/HomePage.tsx","iam-admin-web/src/pages/PlatformOverview.tsx","iam-admin-web/src/pages/TenantOverview.tsx","iam-admin-web/src/styles/pages.css","iam-admin-web/src/test/app-overview.test.tsx","iam-admin-web/src/test/platform-overview.test.tsx","iam-admin-web/src/test/tenant-overview.test.tsx"]},"repository":{"id":125,"owner":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"228834386@qq.com","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"name":"IAM","full_name":"pengzhiyu/IAM","description":"Identity and Access Management(身份识别与访问管理)","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":102367,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM/languages","html_url":"https://gitea.g-hi.com/pengzhiyu/IAM","url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM","link":"","ssh_url":"git@gitea.g-hi.com:pengzhiyu/IAM.git","clone_url":"https://gitea.g-hi.com/pengzhiyu/IAM.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-08T17:04:24+08:00","updated_at":"2026-10-13T22:23:23+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":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"sender":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"}}...
|
push
|
2
|
4
|
1791901620
|
1791901831
|
0
|
1791901432
|
1791901831
|
|
|
0
|
Edit
Delete
|
|
25820
|
feat(console): 合并应用中心导航、权限清单按行修改与概览页重排
|
125
|
16
|
verify.yml
|
9
|
16
|
0
|
refs/heads/main
|
cf70e039ad30edff8e3a51877be4561ed564e95f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ff5ee33515b0a21b6ba738d00c52373fabfaa50d","after":"cf70e039ad30edff8e3a51877be4561ed564e95f","compare_url":"https://gitea.g-hi.com/pengzhiyu/IAM/compare/ff5ee33515b0a21b6ba738d00c52373fabfaa50d...cf70e039ad30edff8e3a51877be4561ed564e95f","commits":[{"id":"cf70e039ad30edff8e3a51877be4561ed564e95f","message":"feat(console): 合并应用中心导航、权限清单按行修改与概览页重排\n\nmain 停在 ff5ee33 之后,控制台仍是旧的侧栏分组、权限清单整体编辑和早期概览页布局。合并 feat/console-layout 上其后的 4 个前端提交,完成控制台全部页面的布局改造。\n\n实现内容:\n- 权限清单把新增与修改拆开,平台侧支持按行修改名称与说明,企业侧「可用权限」提供去平台修改的入口;权限名称等于代码时编辑弹窗不再预填代码,用户组事件标签改为「创建用户组」\n- 转义 5 处代码输入框 pattern 中的连字符\n- 侧栏分为「平台管理 / 应用 / 企业管理 / 应用授权」四组,应用定义独立成「应用」分组(网址仍为 /platform/applications),统一「应用列表」「权限定义与资源规则」「所有企业共用」「可用权限」等命名\n- 工作台改为平台管理 / 应用 / 企业管理三个并列入口,加上「我的企业」表格与账号摘要;平台概览的「需要你关注」三类事项固定列出;企业概览的应用改为表格;应用概览的三步引导放进卡片并显示进度;三个概览的功能入口按用途分两栏\n\n验证:\n- 分支上各提交前运行 format:check、lint、typecheck 与 Vitest,最后一次 27 个测试文件、234 项全部通过\n- 合并无冲突,只涉及 iam-admin-web/ 下的文件;main 上相对分支只多出 568be88(两处集成测试),合并后的前端文件与分支末端 695ea4d 一致\n- main 上未单独重新运行检查;验收脚本未运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/cf70e039ad30edff8e3a51877be4561ed564e95f","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T07:22:40-07:00","added":["iam-admin-web/src/test/home.test.tsx"],"removed":[],"modified":["iam-admin-web/scripts/acceptance-p10-t02.mjs","iam-admin-web/scripts/acceptance-p10-t03.mjs","iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/src/data/pages.ts","iam-admin-web/src/lib/audit-actions.ts","iam-admin-web/src/pages/AppOverview.tsx","iam-admin-web/src/pages/HomePage.tsx","iam-admin-web/src/pages/PlatformOverview.tsx","iam-admin-web/src/pages/ScopePages.tsx","iam-admin-web/src/pages/TenantOverview.tsx","iam-admin-web/src/pages/management/ApplicationContracts.tsx","iam-admin-web/src/pages/management/ApplicationsPage.tsx","iam-admin-web/src/pages/management/BindingScopes.tsx","iam-admin-web/src/pages/management/BindingsPage.tsx","iam-admin-web/src/pages/management/DecisionCallersPage.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/pages/management/ServicePrincipalsPage.tsx","iam-admin-web/src/shell/ContextSwitcher.tsx","iam-admin-web/src/shell/ContextTrail.tsx","iam-admin-web/src/shell/NavRail.tsx","iam-admin-web/src/shell/scope.tsx","iam-admin-web/src/styles/layout.css","iam-admin-web/src/styles/management.css","iam-admin-web/src/styles/pages.css","iam-admin-web/src/test/app-overview.test.tsx","iam-admin-web/src/test/application-management.test.tsx","iam-admin-web/src/test/platform-overview.test.tsx","iam-admin-web/src/test/sidebar.test.tsx","iam-admin-web/src/test/tenant-overview.test.tsx"]},{"id":"568be8853874bf5d720f1c49e060edd5f4d20825","message":"test(protocol): 按完整迁移历史校验模式切换与启动反例\n\n新增 V29 后,两处固定最高迁移版本为 28 的测试不再符合当前完整提交。改为核对动作前后历史保持,避免每次新增迁移重复修改版本预期。\n\n实现内容:\n- 仅修改 ScopedLifecycleIT 和 IdentityReadLifecycleIT 两处迁移断言\n- 按 installed_rank 比较全部 version、checksum、success,显式要求 V27、V28 已成功\n- 保留并发互斥、释放、SCOPED 函数缺失反例及原安全断言\n\n验证:\n- Java 25,在独立快照执行 ./mvnw -o -B -ntp -pl iam-server -am verify -Dit.test=ScopedLifecycleIT,IdentityReadLifecycleIT -Dfailsafe.failIfNoSpecifiedTests=false -Dfailsafe.skipAfterFailureCount=1 -Dsurefire.skipAfterFailureCount=1:通过\n- 180 项单测、ScopedLifecycleIT 9 项及 IdentityReadLifecycleIT 40 项集成通过,零失败、错误或跳过;格式、编译和打包通过\n- git diff --check:通过\n- 本提交前未运行含控制台全量验收;随后从最新完整提交另建快照验证\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/568be8853874bf5d720f1c49e060edd5f4d20825","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T07:00:04-07:00","added":[],"removed":[],"modified":["iam-server/src/test/java/com/iam/server/protocol/IdentityReadLifecycleIT.java","iam-server/src/test/java/com/iam/server/protocol/ScopedLifecycleIT.java"]},{"id":"695ea4d16f5066a81e3808b0ba4432b2a69cbd87","message":"feat(console): 重排工作台与平台、企业、应用三个概览页\n\n四个概览页此前沿用早期布局:工作台只有两个入口,待办和应用用零散小卡片展示,功能入口不分组,与已改造的列表页风格不一致。本次按「上方状态卡片、下方两栏分组入口」统一四页布局。\n\n实现内容:\n- 工作台:三个并列入口「平台管理 / 应用 / 企业管理」,新增应用配色 entry--apps;应用管理员入口写明负责的应用,无身份的入口锁定并说明原因\n- 工作台新增「我的企业」可点表格(企业、你的身份,每次读取 10 条,满页时可加载更多),账号摘要放侧栏并链接个人中心,基本概念改为四格横排\n- 平台概览:「需要你关注」改为卡片,三类事项固定列出,没有内容时显示对勾与「目前没有。」,有内容时显示数量、最多 3 个名称与处理入口,读取失败只在该行重试\n- 企业概览:本企业的应用改为卡片内表格,停用的应用不可进入并注明原因;空状态改用公共 EmptyList\n- 应用概览:三步引导放进卡片,步骤之间用分隔线,右上角显示完成进度;任一步读取中或失败时不显示进度\n- 三个概览的功能入口统一用 overview-groups 两栏分组,窄屏改为上下排列;删除不再使用的待办卡片、应用卡片与一切正常提示条样式\n\n验证:\n- npm run typecheck、npm run lint、npm run format:check:通过\n- npm run test:27 个测试文件、234 项通过(同步修改平台、企业、应用概览单测,新增 home.test.tsx 4 项)\n- 浏览器检查 1280 宽、375 窄屏与暗色:四页无页面级横向溢出;待办与停用应用状态用页面内临时拦截 fetch 验证\n- 验收脚本未运行(脚本只依赖「工作台」标题与 .entry--locked,均已保留)\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/695ea4d16f5066a81e3808b0ba4432b2a69cbd87","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T06:50:19-07:00","added":["iam-admin-web/src/test/home.test.tsx"],"removed":[],"modified":["iam-admin-web/src/pages/AppOverview.tsx","iam-admin-web/src/pages/HomePage.tsx","iam-admin-web/src/pages/PlatformOverview.tsx","iam-admin-web/src/pages/TenantOverview.tsx","iam-admin-web/src/styles/pages.css","iam-admin-web/src/test/app-overview.test.tsx","iam-admin-web/src/test/platform-overview.test.tsx","iam-admin-web/src/test/tenant-overview.test.tsx"]},{"id":"ceb5884bba8e1274c550348e99226f46614e6511","message":"feat(console): 把应用定义独立成「应用」分组并统一权限相关命名\n\nIAM 面向多租户,一个应用登记后可由多家企业开通。原导航把应用的全局定义(登录客户端、受保护的服务、权限与资源规则)放在「平台管理」下,企业内的应用授权又叫「应用管理」,使用者难以分清权限为何不在应用层维护、改了会影响谁。\n\n实现内容:\n- 侧边栏改为「平台管理 / 应用 / 企业管理 / 应用授权」四组:平台管理只对平台管理员展示链接;新增「应用」分组(应用列表),平台管理员与应用管理员可见;原「应用管理」改名「应用授权」;网址保持不变\n- 应用详情网址仍在 /platform/applications 下,导航高亮、顶部上下文标识(「应用定义」)与面包屑(应用 › 应用列表)归入「应用」\n- 平台侧「应用接入」改为「应用列表」、「权限清单与资源规则」改为「权限定义与资源规则」,徽标改为「所有企业共用」,权限定义卡片与修改弹窗写明对所有开通企业生效\n- 企业侧「权限清单」改为「可用权限」,入口改为「修改权限定义」;工作台、平台概览、切换对话框、无权限说明、操作记录操作名称及相关提示同步新命名\n- 侧边栏测试改为可切换平台角色,新增平台管理员与应用管理员分组可见性用例;弹出面板测试先等待焦点进入面板再按 Esc,消除原有时序抖动\n- acceptance-t03、acceptance-p10-t02、acceptance-p10-t03 同步新的标签名称\n\n验证:\n- npm run format:check、npm run lint、npm run typecheck:通过\n- npm test:26 个测试文件、230 项通过;侧边栏测试单独连续运行 5 次均通过\n- 浏览器经 5173 连接演示后端,在 1280 宽、375 窄屏及亮/暗色下检查四个分组、应用详情、企业可用权限与跳转、修改弹窗影响说明:正常\n- 应用管理员视角仅有单元测试覆盖(演示环境无应用管理员账号);验收脚本未运行\n- 「已在 N 个企业开通」需后端提供按应用统计的接口,本次未实现\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/ceb5884bba8e1274c550348e99226f46614e6511","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T06:36:58-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-p10-t02.mjs","iam-admin-web/scripts/acceptance-p10-t03.mjs","iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/src/data/pages.ts","iam-admin-web/src/lib/audit-actions.ts","iam-admin-web/src/pages/AppOverview.tsx","iam-admin-web/src/pages/HomePage.tsx","iam-admin-web/src/pages/PlatformOverview.tsx","iam-admin-web/src/pages/ScopePages.tsx","iam-admin-web/src/pages/management/ApplicationContracts.tsx","iam-admin-web/src/pages/management/ApplicationsPage.tsx","iam-admin-web/src/pages/management/BindingScopes.tsx","iam-admin-web/src/pages/management/BindingsPage.tsx","iam-admin-web/src/pages/management/DecisionCallersPage.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/shell/ContextSwitcher.tsx","iam-admin-web/src/shell/ContextTrail.tsx","iam-admin-web/src/shell/NavRail.tsx","iam-admin-web/src/shell/scope.tsx","iam-admin-web/src/styles/layout.css","iam-admin-web/src/test/app-overview.test.tsx","iam-admin-web/src/test/sidebar.test.tsx"]},{"id":"7a1bd50d627fb56ebd548956a8a05c61fd306f64","message":"fix(console): 转义代码输入框 pattern 中的连字符\n\n浏览器按 v 模式编译 input 的 pattern,字符类末尾未转义的「-」会被判为非法正则,浏览器报错并直接跳过该格式校验。其余页面已使用转义写法,本次统一。\n\n实现内容:\n- 权限代码(新增权限、资源类型代码)、角色代码、程序身份代码、应用代码共 5 处 pattern 改为 \\- 转义,匹配规则不变\n\n验证:\n- 两种写法用 new RegExp(..., 'v') 编译通过\n- 浏览器中新增权限弹窗输入 Bad-Code 时 validity.patternMismatch 为 true\n- npm run format:check、npm run lint、npm run typecheck:通过;npm test:26 个测试文件、228 项通过\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/7a1bd50d627fb56ebd548956a8a05c61fd306f64","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T06:11:02-07:00","added":[],"removed":[],"modified":["iam-admin-web/src/pages/management/ApplicationContracts.tsx","iam-admin-web/src/pages/management/ApplicationsPage.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/pages/management/ServicePrincipalsPage.tsx"]}],"total_commits":0,"head_commit":{"id":"cf70e039ad30edff8e3a51877be4561ed564e95f","message":"feat(console): 合并应用中心导航、权限清单按行修改与概览页重排\n\nmain 停在 ff5ee33 之后,控制台仍是旧的侧栏分组、权限清单整体编辑和早期概览页布局。合并 feat/console-layout 上其后的 4 个前端提交,完成控制台全部页面的布局改造。\n\n实现内容:\n- 权限清单把新增与修改拆开,平台侧支持按行修改名称与说明,企业侧「可用权限」提供去平台修改的入口;权限名称等于代码时编辑弹窗不再预填代码,用户组事件标签改为「创建用户组」\n- 转义 5 处代码输入框 pattern 中的连字符\n- 侧栏分为「平台管理 / 应用 / 企业管理 / 应用授权」四组,应用定义独立成「应用」分组(网址仍为 /platform/applications),统一「应用列表」「权限定义与资源规则」「所有企业共用」「可用权限」等命名\n- 工作台改为平台管理 / 应用 / 企业管理三个并列入口,加上「我的企业」表格与账号摘要;平台概览的「需要你关注」三类事项固定列出;企业概览的应用改为表格;应用概览的三步引导放进卡片并显示进度;三个概览的功能入口按用途分两栏\n\n验证:\n- 分支上各提交前运行 format:check、lint、typecheck 与 Vitest,最后一次 27 个测试文件、234 项全部通过\n- 合并无冲突,只涉及 iam-admin-web/ 下的文件;main 上相对分支只多出 568be88(两处集成测试),合并后的前端文件与分支末端 695ea4d 一致\n- main 上未单独重新运行检查;验收脚本未运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/cf70e039ad30edff8e3a51877be4561ed564e95f","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T07:22:40-07:00","added":["iam-admin-web/src/test/home.test.tsx"],"removed":[],"modified":["iam-admin-web/scripts/acceptance-p10-t02.mjs","iam-admin-web/scripts/acceptance-p10-t03.mjs","iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/src/data/pages.ts","iam-admin-web/src/lib/audit-actions.ts","iam-admin-web/src/pages/AppOverview.tsx","iam-admin-web/src/pages/HomePage.tsx","iam-admin-web/src/pages/PlatformOverview.tsx","iam-admin-web/src/pages/ScopePages.tsx","iam-admin-web/src/pages/TenantOverview.tsx","iam-admin-web/src/pages/management/ApplicationContracts.tsx","iam-admin-web/src/pages/management/ApplicationsPage.tsx","iam-admin-web/src/pages/management/BindingScopes.tsx","iam-admin-web/src/pages/management/BindingsPage.tsx","iam-admin-web/src/pages/management/DecisionCallersPage.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/pages/management/ServicePrincipalsPage.tsx","iam-admin-web/src/shell/ContextSwitcher.tsx","iam-admin-web/src/shell/ContextTrail.tsx","iam-admin-web/src/shell/NavRail.tsx","iam-admin-web/src/shell/scope.tsx","iam-admin-web/src/styles/layout.css","iam-admin-web/src/styles/management.css","iam-admin-web/src/styles/pages.css","iam-admin-web/src/test/app-overview.test.tsx","iam-admin-web/src/test/application-management.test.tsx","iam-admin-web/src/test/platform-overview.test.tsx","iam-admin-web/src/test/sidebar.test.tsx","iam-admin-web/src/test/tenant-overview.test.tsx"]},"repository":{"id":125,"owner":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"228834386@qq.com","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"name":"IAM","full_name":"pengzhiyu/IAM","description":"Identity and Access Management(身份识别与访问管理)","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":102073,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM/languages","html_url":"https://gitea.g-hi.com/pengzhiyu/IAM","url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM","link":"","ssh_url":"git@gitea.g-hi.com:pengzhiyu/IAM.git","clone_url":"https://gitea.g-hi.com/pengzhiyu/IAM.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-08T17:04:24+08:00","updated_at":"2026-10-13T15:53: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":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"sender":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"}}...
|
push
|
2
|
4
|
1791901404
|
1791901620
|
0
|
1791901403
|
1791901620
|
|
|
0
|
Edit
Delete
|
|
25819
|
feat(console): 接入权限说明与操作记录的操作对象快照
|
125
|
16
|
verify.yml
|
8
|
16
|
0
|
refs/heads/main
|
ff5ee33515b0a21b6ba738d00c52373fabfaa50d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"85e2c17b4829f451e34f938ca6c11354a0b17f30","after":"ff5ee33515b0a21b6ba738d00c52373fabfaa50d","compare_url":"https://gitea.g-hi.com/pengzhiyu/IAM/compare/85e2c17b4829f451e34f938ca6c11354a0b17f30...ff5ee33515b0a21b6ba738d00c52373fabfaa50d","commits":[{"id":"ff5ee33515b0a21b6ba738d00c52373fabfaa50d","message":"feat(console): 接入权限说明与操作记录的操作对象快照\n\n后端已为权限增加可选说明,并在操作记录中返回操作对象类型、代码快照和展示摘要。控制台此前无法填写或查看权限说明,操作记录也看不出操作了哪个对象。\n\n实现内容:\n- 权限类型增加 description;完整清单提交时其余每条权限原样带上当前说明或 null,版本号固定为当前值加 1\n- 平台「新增或修改权限」弹窗增加可选说明多行框:预填已有说明、显示字数、上限 1000、拦截回车,换行/制表符/格式字符在前端提示,首尾空白去掉、清空或全空白提交 null\n- 后端返回 INVALID_PERMISSION_DESCRIPTION 时给出具体修改提示\n- PermissionLabel 支持显示说明;平台权限表、企业权限清单(搜索可匹配说明)与 PermissionPicker 显示说明,为空时不占位\n- PermissionPicker 中说明经 aria-describedby 关联,不并入勾选框名称\n- 操作记录列表在操作名称下显示「类型「代码」 · 应用」;未知类型统一称「对象」,无快照时省略\n- 操作记录详情增加「操作对象」,摘要优先 display_summary,原 summary 移到技术细节「内部摘要」;旧记录说明未记录对象名称\n- acceptance-t03 同步新的按钮名称\n\n验证:\n- npm run format:check、npm run lint、npm run typecheck:通过\n- npm test:26 个测试文件、227 项通过(新增说明保留与清空、说明校验、编辑弹窗、选择器无障碍名称、操作对象快照与回退用例)\n- 浏览器在 1280 宽、375 窄屏及亮/暗色下用页面内临时拦截 fetch 模拟新字段检查显示:正常\n- 未与包含 V29 的新后端联调;acceptance-t03 未运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/ff5ee33515b0a21b6ba738d00c52373fabfaa50d","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T00:48:33-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/src/lib/audit-actions.ts","iam-admin-web/src/lib/t03-api.ts","iam-admin-web/src/pages/management/ApplicationContracts.tsx","iam-admin-web/src/pages/management/AuditPage.tsx","iam-admin-web/src/pages/management/AuthorizationShared.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/styles/applications.css","iam-admin-web/src/styles/audit.css","iam-admin-web/src/styles/authorization.css","iam-admin-web/src/test/application-management.test.tsx","iam-admin-web/src/test/audit.test.tsx","iam-admin-web/src/test/authorization-management.test.tsx"]},{"id":"9631e78cfeee4abd1ccb7e7f777864e4815ded49","message":"chore: 合并 main 引入权限说明与操作对象快照后端\n\n前端接入权限说明与操作记录操作对象前,先把 main 上的后端交付(a435000、536e36c、85e2c17)合入前端分支。\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/9631e78cfeee4abd1ccb7e7f777864e4815ded49","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T00:33:36-07:00","added":["docs/console/permission-description-audit-target-handoff.md","iam-server/src/main/java/com/iam/server/accounts/AuditTargetSnapshot.java","iam-server/src/main/resources/db/migration/V29__permission_description.sql","iam-server/src/test/java/com/iam/server/protocol/ObservedProtocolFixture.java","iam-server/src/test/java/com/iam/server/protocol/PermissionDescriptionIT.java","iam-server/src/test/java/com/iam/server/protocol/ProtocolPortAllocationIT.java","iam-server/src/test/java/com/iam/server/protocol/ProtocolTestPort.java","iam-server/src/test/java/com/iam/server/security/AuthDiagnosticsTestProbe.java","iam-server/src/test/java/com/iam/server/security/AuthDiagnosticsTestProbeTest.java"],"removed":[],"modified":["docs/audit-security.md","docs/authorization.md","docs/data-foundation.md","docs/schemas/permission-catalog.schema.json","docs/tasks/P12-auth-ingress-attribution-design.md","docs/tasks/P12-software-optimization.md","iam-server/src/main/java/com/iam/server/accounts/AccountStore.java","iam-server/src/main/java/com/iam/server/accounts/AuditReadService.java","iam-server/src/main/java/com/iam/server/accounts/AuthorizationService.java","iam-server/src/main/java/com/iam/server/protocol/RefreshExpiryGuard.java","iam-server/src/main/java/com/iam/server/protocol/RefreshGovernance.java","iam-server/src/main/java/com/iam/server/security/AuthRequestDiagnostics.java","iam-server/src/test/java/com/iam/server/data/AuthorizationMigrationIT.java","iam-server/src/test/java/com/iam/server/data/MigrationIT.java","iam-server/src/test/java/com/iam/server/protocol/AuditReadIT.java","iam-server/src/test/java/com/iam/server/protocol/AuthIngressConservativeIT.java","iam-server/src/test/java/com/iam/server/protocol/AuthIngressLifecycleIT.java","iam-server/src/test/java/com/iam/server/protocol/AuthIngressTimeContractIT.java","iam-server/src/test/java/com/iam/server/protocol/CapacityDiagnosticsTest.java","iam-server/src/test/java/com/iam/server/protocol/ProtocolFixture.java","iam-server/src/test/java/com/iam/server/protocol/RefreshExpiryGuardTest.java","iam-server/src/test/java/com/iam/server/protocol/RefreshExpiryLifecycleIT.java","iam-server/src/test/java/com/iam/server/security/AuthRequestDiagnosticsTest.java","scripts/capacity/auth_diagnostics.py","scripts/capacity/test_auth_diagnostics.py"]},{"id":"3973681b67a737220c25c4bc3f916ca2b687b5ee","message":"feat(console): 重排个人中心并把登录记录改为当前登录加表格\n\n个人中心原先把邮箱、多因素验证放在最前,账号信息压在下方;登录记录每条都是一张大卡片,十几条记录要滚很久,已过期的登录也和当前登录一样醒目。本次按控制台其他页面的布局约定重排个人中心。\n\n实现内容:\n- 上排并列「我的账号」(名字首字头像 + 平台管理身份徽标)与「我的企业」(企业 / 你的身份 / 成员代码三列表格,手机上收窄内边距不必横向滚动)\n- 邮箱与多因素验证合并为「账号安全」卡片,左侧标题与说明、右侧内容,900px 以下上下排列;多因素验证面板与登录页共用,本次未改\n- 邮箱区域改用与多因素验证相同外观的状态摘要(未登记 / 未验证 / 已验证 + 投递状态);登记或发送验证邮件的表单点按钮后就地展开,展开后聚焦第一个字段,提交后无论成败都清除密码;「取消待处理的验证与恢复链接」改名为「作废已发出的邮件链接」并保持常驻(找回密码链接不体现在邮箱状态里)\n- 登录记录拆为「当前这次登录」单独一块(四个时间 + 期限规则)与「其他登录」表格(登录时间 + 编号缩写 / 状态 / 最近使用 / 自动退出于);表格时间用今天、昨天等简短写法,完整时间在悬停提示中\n- 已退出的登录不再显示退出按钮;已过期、已失效的登录仍可退出以撤销业务系统中残留的授权,按钮改为轻量样式,整行弱化\n- 退出确认弹窗底部改为「取消 + 确认退出」,补充最近使用时间,登录编号带名称与注解;账号标识同样带名称与注解\n- 单测改用新的邮箱按钮与字段名,新增「当前登录单独列出、已退出的登录不提供退出按钮」用例;acceptance-p11-t02 同步新的邮箱登记流程与已验证文案,acceptance-t05 依赖的类名与按钮名保持不变\n\n验证:\n- npm run format:check:通过\n- npm run typecheck:通过\n- npm run lint:通过\n- npm run test:26 个测试文件、224 项全部通过\n- 浏览器检查 1280 宽、375 窄屏与亮暗色,整页无横向溢出;邮箱登记表单与退出确认弹窗只打开查看,未实际提交\n- acceptance-p11-t02、acceptance-t05:未运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/3973681b67a737220c25c4bc3f916ca2b687b5ee","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T00:28:12-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-p11-t02.mjs","iam-admin-web/src/pages/EmailRecoveryPage.tsx","iam-admin-web/src/pages/PersonalPage.tsx","iam-admin-web/src/styles/email.css","iam-admin-web/src/styles/personal.css","iam-admin-web/src/test/email-recovery.test.tsx","iam-admin-web/src/test/personal.test.tsx"]},{"id":"2508f797ba72291a981665d5f4fcc4fb86280af8","message":"feat(console): 为技术细节中的编号补充名称与用途注解\n\n技术细节原先只列出编号,部分地方连名称都没有,普通使用者看不懂这串字符是什么、什么时候用得上。本次为各页面技术细节中的编号、版本和代码补充名称与一句用途说明。\n\n实现内容:\n- TechDetails 展开后先显示一句总说明:这些编号用于定位记录,日常不需要关心,反馈问题时可复制给管理员或技术支持\n- DescriptionList 每项新增可选 hint,在值下方显示灰色注解;有注解时值包在 .dlist__value 中,按值定位的测试不受注解文字影响\n- 新增 lib/tech-hints.ts 统一注解文案:对象标识、记录版本、账号标识与成员标识的区别、密钥编号、客户端标识与客户端代码的区别等\n- 工作台账号标识、程序接入新建密钥后的密钥编号、应用接入新建客户端后的客户端标识原先只露出编号,改为带名称的描述列表并加注解\n- 企业、账号、成员、部门、用户组、应用接入、应用开通、角色、授权、程序接入、程序身份、权限查询接入、操作记录、状态变更影响预览中的技术细节逐项补充注解\n- 同步 acceptance-p10-t01、acceptance-t03 中按记录版本值定位的选择器为 dd .dlist__value\n\n验证:\n- npm run format:check:通过\n- npm run typecheck:通过\n- npm run lint:通过\n- npm run test:26 个测试文件、223 项全部通过(暂时移开个人中心未提交改动后单独运行)\n- 浏览器检查应用接入客户端详情抽屉的技术细节注解显示正常;其余页面未逐页目测\n- acceptance-p10-t01、acceptance-t03:未运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/2508f797ba72291a981665d5f4fcc4fb86280af8","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T00:27:34-07:00","added":["iam-admin-web/src/lib/tech-hints.ts"],"removed":[],"modified":["iam-admin-web/scripts/acceptance-p10-t01.mjs","iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/src/components/Layout.tsx","iam-admin-web/src/pages/HomePage.tsx","iam-admin-web/src/pages/management/ApplicationAdmissionPage.tsx","iam-admin-web/src/pages/management/ApplicationLifecycle.tsx","iam-admin-web/src/pages/management/ApplicationsPage.tsx","iam-admin-web/src/pages/management/AuditPage.tsx","iam-admin-web/src/pages/management/BindingsPage.tsx","iam-admin-web/src/pages/management/DecisionCallersPage.tsx","iam-admin-web/src/pages/management/GroupsPage.tsx","iam-admin-web/src/pages/management/MachineClientsPage.tsx","iam-admin-web/src/pages/management/MembersPage.tsx","iam-admin-web/src/pages/management/OrganizationsPage.tsx","iam-admin-web/src/pages/management/PlatformPages.tsx","iam-admin-web/src/pages/management/PlatformTenantPage.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/pages/management/ServicePrincipalsPage.tsx","iam-admin-web/src/styles/components.css"]},{"id":"e5c32be5d8e106d727495fd92d5b3bf6ab2a3b4f","message":"feat(console): 把权限查询接入改为分区详情抽屉并以选择代替粘贴标识登记\n\n权限查询接入页列表与详情只显示一串 UUID,登记时需要手动粘贴企业、应用、服务三个标识;系统过期后状态仍显示「正常」,管理员无法看出它的查询已被拒绝。本次按控制台已定的列表、抽屉与弹窗样式重排该页。\n\n实现内容:\n- 列表改为「查询的应用 / 所属企业 / 到期时间 / 状态」,应用名称是打开详情的按钮、整行可点;企业与应用名称各读取第一页(最多 100 个),读不到时回退为「类别 + 标识前 8 位」\n- 正常但已过期的系统显示「已过期」徽标并提示查询会被拒绝,正常且 3 天内到期时提前提醒;列表新增定制空状态\n- 详情抽屉分「基本信息(企业、应用、服务名称)/ 密钥说明 / 停用(危险区)」,四个标识与固定查询范围收进技术细节;停用默认收起为按钮,展开后勾选确认、可取消,停用后抽屉保持打开并把焦点留在抽屉上\n- 登记改为两步:平铺列表选正常状态的企业,再用单选卡片选该企业已启用的应用和应用下的服务,填写摘要与到期时间(输入框限定现在至 30 天后);底部为「重新选择企业 / 确认登记」,提交字段与原来一致\n- 公共样式 .card__actions 不再收缩,卡片说明较长时操作按钮保持一行;600px 以下卡片头部换行,按钮排到标题下方\n- 同步登记单测为按企业、应用、服务选择的流程,acceptance-t03 的 A11 改为点击应用名称打开详情、展开停用并等待停用后的说明\n\n验证:\n- npm run format:check、npm run lint:通过\n- npx tsc -b:通过\n- npm run test:26 个测试文件、223 项全部通过\n- 浏览器在演示环境查看 1280 宽、375 窄屏与亮暗色;演示环境未开启登记功能,登记流程用页面内临时拦截请求验证,提交字段正确且未写入后端\n- acceptance-t03:未运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/e5c32be5d8e106d727495fd92d5b3bf6ab2a3b4f","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-12T23:49:35-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/src/pages/management/DecisionCallersPage.tsx","iam-admin-web/src/styles/components.css","iam-admin-web/src/test/application-management.test.tsx"]}],"total_commits":0,"head_commit":{"id":"ff5ee33515b0a21b6ba738d00c52373fabfaa50d","message":"feat(console): 接入权限说明与操作记录的操作对象快照\n\n后端已为权限增加可选说明,并在操作记录中返回操作对象类型、代码快照和展示摘要。控制台此前无法填写或查看权限说明,操作记录也看不出操作了哪个对象。\n\n实现内容:\n- 权限类型增加 description;完整清单提交时其余每条权限原样带上当前说明或 null,版本号固定为当前值加 1\n- 平台「新增或修改权限」弹窗增加可选说明多行框:预填已有说明、显示字数、上限 1000、拦截回车,换行/制表符/格式字符在前端提示,首尾空白去掉、清空或全空白提交 null\n- 后端返回 INVALID_PERMISSION_DESCRIPTION 时给出具体修改提示\n- PermissionLabel 支持显示说明;平台权限表、企业权限清单(搜索可匹配说明)与 PermissionPicker 显示说明,为空时不占位\n- PermissionPicker 中说明经 aria-describedby 关联,不并入勾选框名称\n- 操作记录列表在操作名称下显示「类型「代码」 · 应用」;未知类型统一称「对象」,无快照时省略\n- 操作记录详情增加「操作对象」,摘要优先 display_summary,原 summary 移到技术细节「内部摘要」;旧记录说明未记录对象名称\n- acceptance-t03 同步新的按钮名称\n\n验证:\n- npm run format:check、npm run lint、npm run typecheck:通过\n- npm test:26 个测试文件、227 项通过(新增说明保留与清空、说明校验、编辑弹窗、选择器无障碍名称、操作对象快照与回退用例)\n- 浏览器在 1280 宽、375 窄屏及亮/暗色下用页面内临时拦截 fetch 模拟新字段检查显示:正常\n- 未与包含 V29 的新后端联调;acceptance-t03 未运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/ff5ee33515b0a21b6ba738d00c52373fabfaa50d","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T00:48:33-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/src/lib/audit-actions.ts","iam-admin-web/src/lib/t03-api.ts","iam-admin-web/src/pages/management/ApplicationContracts.tsx","iam-admin-web/src/pages/management/AuditPage.tsx","iam-admin-web/src/pages/management/AuthorizationShared.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/styles/applications.css","iam-admin-web/src/styles/audit.css","iam-admin-web/src/styles/authorization.css","iam-admin-web/src/test/application-management.test.tsx","iam-admin-web/src/test/audit.test.tsx","iam-admin-web/src/test/authorization-management.test.tsx"]},"repository":{"id":125,"owner":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"228834386@qq.com","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"name":"IAM","full_name":"pengzhiyu/IAM","description":"Identity and Access Management(身份识别与访问管理)","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":102073,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM/languages","html_url":"https://gitea.g-hi.com/pengzhiyu/IAM","url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM","link":"","ssh_url":"git@gitea.g-hi.com:pengzhiyu/IAM.git","clone_url":"https://gitea.g-hi.com/pengzhiyu/IAM.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-08T17:04:24+08:00","updated_at":"2026-10-13T15:52:47+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"sender":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"}}...
|
push
|
3
|
4
|
1791878088
|
1791878106
|
0
|
1791877984
|
1791878106
|
|
|
0
|
Edit
Delete
|
|
25818
|
feat(console): 接入权限说明与操作记录的操作对象快照
|
125
|
16
|
verify.yml
|
7
|
16
|
0
|
refs/heads/feat/console-layout
|
ff5ee33515b0a21b6ba738d00c52373fabfaa50d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/feat/console-layout {"ref":"refs/heads/feat/console-layout","before":"0000000000000000000000000000000000000000","after":"ff5ee33515b0a21b6ba738d00c52373fabfaa50d","compare_url":"https://gitea.g-hi.com/pengzhiyu/IAM/compare/3cf111b21a47760e5c71fc6b2fba96d882dbd3f1...ff5ee33515b0a21b6ba738d00c52373fabfaa50d","commits":[{"id":"ff5ee33515b0a21b6ba738d00c52373fabfaa50d","message":"feat(console): 接入权限说明与操作记录的操作对象快照\n\n后端已为权限增加可选说明,并在操作记录中返回操作对象类型、代码快照和展示摘要。控制台此前无法填写或查看权限说明,操作记录也看不出操作了哪个对象。\n\n实现内容:\n- 权限类型增加 description;完整清单提交时其余每条权限原样带上当前说明或 null,版本号固定为当前值加 1\n- 平台「新增或修改权限」弹窗增加可选说明多行框:预填已有说明、显示字数、上限 1000、拦截回车,换行/制表符/格式字符在前端提示,首尾空白去掉、清空或全空白提交 null\n- 后端返回 INVALID_PERMISSION_DESCRIPTION 时给出具体修改提示\n- PermissionLabel 支持显示说明;平台权限表、企业权限清单(搜索可匹配说明)与 PermissionPicker 显示说明,为空时不占位\n- PermissionPicker 中说明经 aria-describedby 关联,不并入勾选框名称\n- 操作记录列表在操作名称下显示「类型「代码」 · 应用」;未知类型统一称「对象」,无快照时省略\n- 操作记录详情增加「操作对象」,摘要优先 display_summary,原 summary 移到技术细节「内部摘要」;旧记录说明未记录对象名称\n- acceptance-t03 同步新的按钮名称\n\n验证:\n- npm run format:check、npm run lint、npm run typecheck:通过\n- npm test:26 个测试文件、227 项通过(新增说明保留与清空、说明校验、编辑弹窗、选择器无障碍名称、操作对象快照与回退用例)\n- 浏览器在 1280 宽、375 窄屏及亮/暗色下用页面内临时拦截 fetch 模拟新字段检查显示:正常\n- 未与包含 V29 的新后端联调;acceptance-t03 未运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/ff5ee33515b0a21b6ba738d00c52373fabfaa50d","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T00:48:33-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/src/lib/audit-actions.ts","iam-admin-web/src/lib/t03-api.ts","iam-admin-web/src/pages/management/ApplicationContracts.tsx","iam-admin-web/src/pages/management/AuditPage.tsx","iam-admin-web/src/pages/management/AuthorizationShared.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/styles/applications.css","iam-admin-web/src/styles/audit.css","iam-admin-web/src/styles/authorization.css","iam-admin-web/src/test/application-management.test.tsx","iam-admin-web/src/test/audit.test.tsx","iam-admin-web/src/test/authorization-management.test.tsx"]},{"id":"9631e78cfeee4abd1ccb7e7f777864e4815ded49","message":"chore: 合并 main 引入权限说明与操作对象快照后端\n\n前端接入权限说明与操作记录操作对象前,先把 main 上的后端交付(a435000、536e36c、85e2c17)合入前端分支。\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/9631e78cfeee4abd1ccb7e7f777864e4815ded49","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T00:33:36-07:00","added":["docs/console/permission-description-audit-target-handoff.md","iam-server/src/main/java/com/iam/server/accounts/AuditTargetSnapshot.java","iam-server/src/main/resources/db/migration/V29__permission_description.sql","iam-server/src/test/java/com/iam/server/protocol/ObservedProtocolFixture.java","iam-server/src/test/java/com/iam/server/protocol/PermissionDescriptionIT.java","iam-server/src/test/java/com/iam/server/protocol/ProtocolPortAllocationIT.java","iam-server/src/test/java/com/iam/server/protocol/ProtocolTestPort.java","iam-server/src/test/java/com/iam/server/security/AuthDiagnosticsTestProbe.java","iam-server/src/test/java/com/iam/server/security/AuthDiagnosticsTestProbeTest.java"],"removed":[],"modified":["docs/audit-security.md","docs/authorization.md","docs/data-foundation.md","docs/schemas/permission-catalog.schema.json","docs/tasks/P12-auth-ingress-attribution-design.md","docs/tasks/P12-software-optimization.md","iam-server/src/main/java/com/iam/server/accounts/AccountStore.java","iam-server/src/main/java/com/iam/server/accounts/AuditReadService.java","iam-server/src/main/java/com/iam/server/accounts/AuthorizationService.java","iam-server/src/main/java/com/iam/server/protocol/RefreshExpiryGuard.java","iam-server/src/main/java/com/iam/server/protocol/RefreshGovernance.java","iam-server/src/main/java/com/iam/server/security/AuthRequestDiagnostics.java","iam-server/src/test/java/com/iam/server/data/AuthorizationMigrationIT.java","iam-server/src/test/java/com/iam/server/data/MigrationIT.java","iam-server/src/test/java/com/iam/server/protocol/AuditReadIT.java","iam-server/src/test/java/com/iam/server/protocol/AuthIngressConservativeIT.java","iam-server/src/test/java/com/iam/server/protocol/AuthIngressLifecycleIT.java","iam-server/src/test/java/com/iam/server/protocol/AuthIngressTimeContractIT.java","iam-server/src/test/java/com/iam/server/protocol/CapacityDiagnosticsTest.java","iam-server/src/test/java/com/iam/server/protocol/ProtocolFixture.java","iam-server/src/test/java/com/iam/server/protocol/RefreshExpiryGuardTest.java","iam-server/src/test/java/com/iam/server/protocol/RefreshExpiryLifecycleIT.java","iam-server/src/test/java/com/iam/server/security/AuthRequestDiagnosticsTest.java","scripts/capacity/auth_diagnostics.py","scripts/capacity/test_auth_diagnostics.py"]},{"id":"3973681b67a737220c25c4bc3f916ca2b687b5ee","message":"feat(console): 重排个人中心并把登录记录改为当前登录加表格\n\n个人中心原先把邮箱、多因素验证放在最前,账号信息压在下方;登录记录每条都是一张大卡片,十几条记录要滚很久,已过期的登录也和当前登录一样醒目。本次按控制台其他页面的布局约定重排个人中心。\n\n实现内容:\n- 上排并列「我的账号」(名字首字头像 + 平台管理身份徽标)与「我的企业」(企业 / 你的身份 / 成员代码三列表格,手机上收窄内边距不必横向滚动)\n- 邮箱与多因素验证合并为「账号安全」卡片,左侧标题与说明、右侧内容,900px 以下上下排列;多因素验证面板与登录页共用,本次未改\n- 邮箱区域改用与多因素验证相同外观的状态摘要(未登记 / 未验证 / 已验证 + 投递状态);登记或发送验证邮件的表单点按钮后就地展开,展开后聚焦第一个字段,提交后无论成败都清除密码;「取消待处理的验证与恢复链接」改名为「作废已发出的邮件链接」并保持常驻(找回密码链接不体现在邮箱状态里)\n- 登录记录拆为「当前这次登录」单独一块(四个时间 + 期限规则)与「其他登录」表格(登录时间 + 编号缩写 / 状态 / 最近使用 / 自动退出于);表格时间用今天、昨天等简短写法,完整时间在悬停提示中\n- 已退出的登录不再显示退出按钮;已过期、已失效的登录仍可退出以撤销业务系统中残留的授权,按钮改为轻量样式,整行弱化\n- 退出确认弹窗底部改为「取消 + 确认退出」,补充最近使用时间,登录编号带名称与注解;账号标识同样带名称与注解\n- 单测改用新的邮箱按钮与字段名,新增「当前登录单独列出、已退出的登录不提供退出按钮」用例;acceptance-p11-t02 同步新的邮箱登记流程与已验证文案,acceptance-t05 依赖的类名与按钮名保持不变\n\n验证:\n- npm run format:check:通过\n- npm run typecheck:通过\n- npm run lint:通过\n- npm run test:26 个测试文件、224 项全部通过\n- 浏览器检查 1280 宽、375 窄屏与亮暗色,整页无横向溢出;邮箱登记表单与退出确认弹窗只打开查看,未实际提交\n- acceptance-p11-t02、acceptance-t05:未运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/3973681b67a737220c25c4bc3f916ca2b687b5ee","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T00:28:12-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-p11-t02.mjs","iam-admin-web/src/pages/EmailRecoveryPage.tsx","iam-admin-web/src/pages/PersonalPage.tsx","iam-admin-web/src/styles/email.css","iam-admin-web/src/styles/personal.css","iam-admin-web/src/test/email-recovery.test.tsx","iam-admin-web/src/test/personal.test.tsx"]},{"id":"2508f797ba72291a981665d5f4fcc4fb86280af8","message":"feat(console): 为技术细节中的编号补充名称与用途注解\n\n技术细节原先只列出编号,部分地方连名称都没有,普通使用者看不懂这串字符是什么、什么时候用得上。本次为各页面技术细节中的编号、版本和代码补充名称与一句用途说明。\n\n实现内容:\n- TechDetails 展开后先显示一句总说明:这些编号用于定位记录,日常不需要关心,反馈问题时可复制给管理员或技术支持\n- DescriptionList 每项新增可选 hint,在值下方显示灰色注解;有注解时值包在 .dlist__value 中,按值定位的测试不受注解文字影响\n- 新增 lib/tech-hints.ts 统一注解文案:对象标识、记录版本、账号标识与成员标识的区别、密钥编号、客户端标识与客户端代码的区别等\n- 工作台账号标识、程序接入新建密钥后的密钥编号、应用接入新建客户端后的客户端标识原先只露出编号,改为带名称的描述列表并加注解\n- 企业、账号、成员、部门、用户组、应用接入、应用开通、角色、授权、程序接入、程序身份、权限查询接入、操作记录、状态变更影响预览中的技术细节逐项补充注解\n- 同步 acceptance-p10-t01、acceptance-t03 中按记录版本值定位的选择器为 dd .dlist__value\n\n验证:\n- npm run format:check:通过\n- npm run typecheck:通过\n- npm run lint:通过\n- npm run test:26 个测试文件、223 项全部通过(暂时移开个人中心未提交改动后单独运行)\n- 浏览器检查应用接入客户端详情抽屉的技术细节注解显示正常;其余页面未逐页目测\n- acceptance-p10-t01、acceptance-t03:未运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/2508f797ba72291a981665d5f4fcc4fb86280af8","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T00:27:34-07:00","added":["iam-admin-web/src/lib/tech-hints.ts"],"removed":[],"modified":["iam-admin-web/scripts/acceptance-p10-t01.mjs","iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/src/components/Layout.tsx","iam-admin-web/src/pages/HomePage.tsx","iam-admin-web/src/pages/management/ApplicationAdmissionPage.tsx","iam-admin-web/src/pages/management/ApplicationLifecycle.tsx","iam-admin-web/src/pages/management/ApplicationsPage.tsx","iam-admin-web/src/pages/management/AuditPage.tsx","iam-admin-web/src/pages/management/BindingsPage.tsx","iam-admin-web/src/pages/management/DecisionCallersPage.tsx","iam-admin-web/src/pages/management/GroupsPage.tsx","iam-admin-web/src/pages/management/MachineClientsPage.tsx","iam-admin-web/src/pages/management/MembersPage.tsx","iam-admin-web/src/pages/management/OrganizationsPage.tsx","iam-admin-web/src/pages/management/PlatformPages.tsx","iam-admin-web/src/pages/management/PlatformTenantPage.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/pages/management/ServicePrincipalsPage.tsx","iam-admin-web/src/styles/components.css"]},{"id":"e5c32be5d8e106d727495fd92d5b3bf6ab2a3b4f","message":"feat(console): 把权限查询接入改为分区详情抽屉并以选择代替粘贴标识登记\n\n权限查询接入页列表与详情只显示一串 UUID,登记时需要手动粘贴企业、应用、服务三个标识;系统过期后状态仍显示「正常」,管理员无法看出它的查询已被拒绝。本次按控制台已定的列表、抽屉与弹窗样式重排该页。\n\n实现内容:\n- 列表改为「查询的应用 / 所属企业 / 到期时间 / 状态」,应用名称是打开详情的按钮、整行可点;企业与应用名称各读取第一页(最多 100 个),读不到时回退为「类别 + 标识前 8 位」\n- 正常但已过期的系统显示「已过期」徽标并提示查询会被拒绝,正常且 3 天内到期时提前提醒;列表新增定制空状态\n- 详情抽屉分「基本信息(企业、应用、服务名称)/ 密钥说明 / 停用(危险区)」,四个标识与固定查询范围收进技术细节;停用默认收起为按钮,展开后勾选确认、可取消,停用后抽屉保持打开并把焦点留在抽屉上\n- 登记改为两步:平铺列表选正常状态的企业,再用单选卡片选该企业已启用的应用和应用下的服务,填写摘要与到期时间(输入框限定现在至 30 天后);底部为「重新选择企业 / 确认登记」,提交字段与原来一致\n- 公共样式 .card__actions 不再收缩,卡片说明较长时操作按钮保持一行;600px 以下卡片头部换行,按钮排到标题下方\n- 同步登记单测为按企业、应用、服务选择的流程,acceptance-t03 的 A11 改为点击应用名称打开详情、展开停用并等待停用后的说明\n\n验证:\n- npm run format:check、npm run lint:通过\n- npx tsc -b:通过\n- npm run test:26 个测试文件、223 项全部通过\n- 浏览器在演示环境查看 1280 宽、375 窄屏与亮暗色;演示环境未开启登记功能,登记流程用页面内临时拦截请求验证,提交字段正确且未写入后端\n- acceptance-t03:未运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/e5c32be5d8e106d727495fd92d5b3bf6ab2a3b4f","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-12T23:49:35-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/src/pages/management/DecisionCallersPage.tsx","iam-admin-web/src/styles/components.css","iam-admin-web/src/test/application-management.test.tsx"]}],"total_commits":0,"head_commit":{"id":"ff5ee33515b0a21b6ba738d00c52373fabfaa50d","message":"feat(console): 接入权限说明与操作记录的操作对象快照\n\n后端已为权限增加可选说明,并在操作记录中返回操作对象类型、代码快照和展示摘要。控制台此前无法填写或查看权限说明,操作记录也看不出操作了哪个对象。\n\n实现内容:\n- 权限类型增加 description;完整清单提交时其余每条权限原样带上当前说明或 null,版本号固定为当前值加 1\n- 平台「新增或修改权限」弹窗增加可选说明多行框:预填已有说明、显示字数、上限 1000、拦截回车,换行/制表符/格式字符在前端提示,首尾空白去掉、清空或全空白提交 null\n- 后端返回 INVALID_PERMISSION_DESCRIPTION 时给出具体修改提示\n- PermissionLabel 支持显示说明;平台权限表、企业权限清单(搜索可匹配说明)与 PermissionPicker 显示说明,为空时不占位\n- PermissionPicker 中说明经 aria-describedby 关联,不并入勾选框名称\n- 操作记录列表在操作名称下显示「类型「代码」 · 应用」;未知类型统一称「对象」,无快照时省略\n- 操作记录详情增加「操作对象」,摘要优先 display_summary,原 summary 移到技术细节「内部摘要」;旧记录说明未记录对象名称\n- acceptance-t03 同步新的按钮名称\n\n验证:\n- npm run format:check、npm run lint、npm run typecheck:通过\n- npm test:26 个测试文件、227 项通过(新增说明保留与清空、说明校验、编辑弹窗、选择器无障碍名称、操作对象快照与回退用例)\n- 浏览器在 1280 宽、375 窄屏及亮/暗色下用页面内临时拦截 fetch 模拟新字段检查显示:正常\n- 未与包含 V29 的新后端联调;acceptance-t03 未运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/ff5ee33515b0a21b6ba738d00c52373fabfaa50d","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-13T00:48:33-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/src/lib/audit-actions.ts","iam-admin-web/src/lib/t03-api.ts","iam-admin-web/src/pages/management/ApplicationContracts.tsx","iam-admin-web/src/pages/management/AuditPage.tsx","iam-admin-web/src/pages/management/AuthorizationShared.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/styles/applications.css","iam-admin-web/src/styles/audit.css","iam-admin-web/src/styles/authorization.css","iam-admin-web/src/test/application-management.test.tsx","iam-admin-web/src/test/audit.test.tsx","iam-admin-web/src/test/authorization-management.test.tsx"]},"repository":{"id":125,"owner":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"228834386@qq.com","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"name":"IAM","full_name":"pengzhiyu/IAM","description":"Identity and Access Management(身份识别与访问管理)","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":101765,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM/languages","html_url":"https://gitea.g-hi.com/pengzhiyu/IAM","url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM","link":"","ssh_url":"git@gitea.g-hi.com:pengzhiyu/IAM.git","clone_url":"https://gitea.g-hi.com/pengzhiyu/IAM.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-08T17:04:24+08:00","updated_at":"2026-10-13T08:51:43+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":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"sender":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"}}...
|
push
|
3
|
4
|
1791877969
|
1791878086
|
0
|
1791877967
|
1791878086
|
|
|
0
|
Edit
Delete
|
|
25776
|
docs: 记录 P12 云测归因与 E2a 验证结果
|
125
|
16
|
verify.yml
|
6
|
16
|
0
|
refs/heads/main
|
85e2c17b4829f451e34f938ca6c11354a0b17f30
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"faac5481c1cca66e4708222686b6588a43938150","after":"85e2c17b4829f451e34f938ca6c11354a0b17f30","compare_url":"https://gitea.g-hi.com/pengzhiyu/IAM/compare/faac5481c1cca66e4708222686b6588a43938150...85e2c17b4829f451e34f938ca6c11354a0b17f30","commits":[{"id":"85e2c17b4829f451e34f938ca6c11354a0b17f30","message":"docs: 记录 P12 云测归因与 E2a 验证结果\n\n归档原两份任务文档中累计的候选验证、单轮云测、持有成本分析和 E2a 实施记录,保持历史失败及授权边界可追溯。\n\n实现内容:\n- 记录 50 次入口拒绝的真实关联证据与尚未验收的容量目标\n- 记录三个期限检查点计时的实现、首例测试修正和独立提交\n- 区分历史完整检查、共享报告覆盖与当前组合的定向复验\n- 更新当前状态并说明下一步隔离候选验证建议\n\n验证:\n- 文件摘要、独立执行日志和实际提交内容核对通过\n- 当前组合定向 28 项单测、18 项集成及 26 项 Python 测试通过\n- 文档差异、相对文件链接和 git diff --check 检查通过\n- 本次不新增完整构建、候选冻结或云测结果\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/85e2c17b4829f451e34f938ca6c11354a0b17f30","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-12T08:42:04-07:00","added":[],"removed":[],"modified":["docs/tasks/P12-auth-ingress-attribution-design.md","docs/tasks/P12-software-optimization.md"]},{"id":"536e36cfae600b8bbdc378012e723ffbbd34a491","message":"feat(protocol): 增加刷新期限检查点诊断计时\n\n现有粗阶段无法区分三次期限复核的耗时,为后续容量归因补齐固定观测。\n\n实现内容:\n- 在原 P0/P1/P2 检查处分别计时,保留 SQL、事务、期限及回滚顺序\n- 同步诊断读取白名单,保留旧记录的阶段缺失语义\n- 覆盖嵌套计时、导出大小、检查短路、迟到期回滚和旧记录兼容\n\n验证:\n- Java 25 离线 Maven 定向 verify:AuthRequestDiagnosticsTest、RefreshExpiryGuardTest、CapacityDiagnosticsTest、AuthDiagnosticsTestProbeTest 共 28 项单测及 RefreshExpiryLifecycleIT 18 项集成全部通过\n- python3 -m unittest discover -s scripts/capacity -p 'test_*.py':26 项通过\n- Spotless、编译、打包及 git diff --check 通过\n- 本次提交前未重跑完整后端或控制台检查,不将此前完整结果当作当前全部组合的重新验收\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/536e36cfae600b8bbdc378012e723ffbbd34a491","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-12T08:40:04-07:00","added":[],"removed":[],"modified":["iam-server/src/main/java/com/iam/server/protocol/RefreshExpiryGuard.java","iam-server/src/main/java/com/iam/server/protocol/RefreshGovernance.java","iam-server/src/main/java/com/iam/server/security/AuthRequestDiagnostics.java","iam-server/src/test/java/com/iam/server/protocol/CapacityDiagnosticsTest.java","iam-server/src/test/java/com/iam/server/protocol/RefreshExpiryGuardTest.java","iam-server/src/test/java/com/iam/server/protocol/RefreshExpiryLifecycleIT.java","iam-server/src/test/java/com/iam/server/security/AuthRequestDiagnosticsTest.java","scripts/capacity/auth_diagnostics.py","scripts/capacity/test_auth_diagnostics.py"]},{"id":"a435000ebba0784762f27ae3f1a04e1159cf0617","message":"feat: 增加权限说明与审计操作对象快照\n\n为控制台权限清单提供使用说明,并让操作记录在对象改名或归档后仍能识别操作对象。\n\n实现内容:\n- 新增 V29 迁移及可空权限说明,支持完整替换、输入校验和新旧清单摘要兼容\n- 平台与企业目录返回说明,保持本人有效权限代码集合不变\n- 在业务事务内保存受控对象代码快照,审计列表和详情增加类型、名称和展示摘要\n- 校验事件与对象类型匹配,保留旧摘要、安全投影和企业访问边界\n- 补充迁移、接口和审计安全测试,同步接口合同、数据字典与前端接入说明\n\n验证:\n- Java 25 下执行 ./mvnw -B -ntp -pl iam-server -am -Dit.test=PermissionDescriptionIT,AuditReadIT,AuthorizationIT,GroupLifecycleIT,MigrationIT,FoundationIT -Dfailsafe.failIfNoSpecifiedTests=false verify:通过\n- Java 25 下执行 ./mvnw -B -ntp -pl iam-server -am -Dit.test=AuditReadIT,AuthorizationMigrationIT,ApplicationLifecycleUpgradeIT,MachineCredentialUpgradeIT,AuditRetentionIT -Dfailsafe.failIfNoSpecifiedTests=false verify:通过\n- Java 25 下执行 ./mvnw -B -ntp -pl iam-server -am -Dit.test=AuditReadIT,GroupLifecycleIT -Dfailsafe.failIfNoSpecifiedTests=false verify:通过\n- 三轮去重共 180 个单元测试、83 个集成测试通过,格式检查、编译和打包通过\n- 权限清单 JSON Schema 语法校验及 git diff --check 通过\n- 未执行前端浏览器接入验证,未重启演示环境\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/a435000ebba0784762f27ae3f1a04e1159cf0617","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-12T08:36:49-07:00","added":["docs/console/permission-description-audit-target-handoff.md","iam-server/src/main/java/com/iam/server/accounts/AuditTargetSnapshot.java","iam-server/src/main/resources/db/migration/V29__permission_description.sql","iam-server/src/test/java/com/iam/server/protocol/PermissionDescriptionIT.java"],"removed":[],"modified":["docs/audit-security.md","docs/authorization.md","docs/data-foundation.md","docs/schemas/permission-catalog.schema.json","iam-server/src/main/java/com/iam/server/accounts/AccountStore.java","iam-server/src/main/java/com/iam/server/accounts/AuditReadService.java","iam-server/src/main/java/com/iam/server/accounts/AuthorizationService.java","iam-server/src/test/java/com/iam/server/data/AuthorizationMigrationIT.java","iam-server/src/test/java/com/iam/server/data/MigrationIT.java","iam-server/src/test/java/com/iam/server/protocol/AuditReadIT.java"]}],"total_commits":0,"head_commit":{"id":"85e2c17b4829f451e34f938ca6c11354a0b17f30","message":"docs: 记录 P12 云测归因与 E2a 验证结果\n\n归档原两份任务文档中累计的候选验证、单轮云测、持有成本分析和 E2a 实施记录,保持历史失败及授权边界可追溯。\n\n实现内容:\n- 记录 50 次入口拒绝的真实关联证据与尚未验收的容量目标\n- 记录三个期限检查点计时的实现、首例测试修正和独立提交\n- 区分历史完整检查、共享报告覆盖与当前组合的定向复验\n- 更新当前状态并说明下一步隔离候选验证建议\n\n验证:\n- 文件摘要、独立执行日志和实际提交内容核对通过\n- 当前组合定向 28 项单测、18 项集成及 26 项 Python 测试通过\n- 文档差异、相对文件链接和 git diff --check 检查通过\n- 本次不新增完整构建、候选冻结或云测结果\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/85e2c17b4829f451e34f938ca6c11354a0b17f30","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-12T08:42:04-07:00","added":[],"removed":[],"modified":["docs/tasks/P12-auth-ingress-attribution-design.md","docs/tasks/P12-software-optimization.md"]},"repository":{"id":125,"owner":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"228834386@qq.com","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"name":"IAM","full_name":"pengzhiyu/IAM","description":"Identity and Access Management(身份识别与访问管理)","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":101474,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM/languages","html_url":"https://gitea.g-hi.com/pengzhiyu/IAM","url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM","link":"","ssh_url":"git@gitea.g-hi.com:pengzhiyu/IAM.git","clone_url":"https://gitea.g-hi.com/pengzhiyu/IAM.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-08T17:04:24+08:00","updated_at":"2026-10-12T23:15:07+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":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"sender":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"}}...
|
push
|
2
|
4
|
1791872390
|
1791872617
|
0
|
1791852703
|
1791872617
|
|
|
0
|
Edit
Delete
|
|
25633
|
feat(console): 合并控制台逐页布局与样式改造
|
125
|
16
|
verify.yml
|
5
|
16
|
0
|
refs/heads/main
|
faac5481c1cca66e4708222686b6588a43938150
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"4bda2cc02706e1c64d5cd23c233673a0b32d0a72","after":"faac5481c1cca66e4708222686b6588a43938150","compare_url":"https://gitea.g-hi.com/pengzhiyu/IAM/compare/4bda2cc02706e1c64d5cd23c233673a0b32d0a72...faac5481c1cca66e4708222686b6588a43938150","commits":[{"id":"faac5481c1cca66e4708222686b6588a43938150","message":"feat(console): 合并控制台逐页布局与样式改造\n\n控制台各页面原先列表用「查看详情」按钮、详情是整张表单、弹窗操作区与空状态各不相同,常用信息和危险操作混在一起。合并 feat/console-layout 分支,按统一的列表、抽屉与弹窗约定逐页重排企业内、平台侧与应用内的管理页面。\n\n实现内容:\n- 列表统一为整行可点(OpenableRow 或同交互的专用行),名称为链接或按钮、末列右箭头,需要处理的状态用 cell-note 提示;空状态改为带图标、说明与操作的公共 EmptyList,无数据时不显示分页\n- 详情抽屉按「基本信息 / 业务分区 / 危险区」分区,修改就地展开且同一时间只进行一项;危险操作默认收起,展开后用单选卡片或确认勾选\n- 企业、应用接入改为带分区标签的详情页;新增只读组织架构图;成员、部门、用户组、所有账号、企业与平台管理员、应用开通、操作记录、权限清单、角色、角色分配、程序接入(密钥管理内嵌抽屉)与程序身份完成改造\n- 弹窗底部统一使用 FormActions「取消 + 主操作」,多步弹窗提供「重新选择」;权限统一以名称为主、代码为辅显示,勾选清单统一为带边框的列表\n- 同步更新各页面单元测试与相关验收脚本中的文案和定位\n\n验证:\n- 分支上每次提交前运行 npm run check:format:check、lint、typecheck、test、build 通过,最后一次 Vitest 26 个文件 223 项全部通过\n- 各页面在浏览器 1280 宽、375 窄屏及亮/暗色下核对;程序接入、程序身份等演示环境缺数据的页面以页面内临时改写接口响应检查,未提交写操作\n- 验收脚本仅执行 node --check,未实际运行\n- 合并无冲突,main 上未单独重新运行检查;平台权限查询接入、个人中心尚未改造\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/faac5481c1cca66e4708222686b6588a43938150","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-12T08:07:51-07:00","added":["iam-admin-web/src/pages/management/OrganizationChartPage.tsx","iam-admin-web/src/pages/management/PlatformTenantPage.tsx","iam-admin-web/src/test/organizations.test.tsx"],"removed":[],"modified":["iam-admin-web/scripts/acceptance-group-lifecycle.mjs","iam-admin-web/scripts/acceptance-p10-t01.mjs","iam-admin-web/scripts/acceptance-p10-t02.mjs","iam-admin-web/scripts/acceptance-p10-t03.mjs","iam-admin-web/scripts/acceptance-p10-t04.mjs","iam-admin-web/scripts/acceptance-t02.mjs","iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/scripts/acceptance-t04.mjs","iam-admin-web/scripts/acceptance-t06.mjs","iam-admin-web/src/App.tsx","iam-admin-web/src/components/Management.tsx","iam-admin-web/src/lib/t04-api.ts","iam-admin-web/src/pages/management/ApplicationAdmissionPage.tsx","iam-admin-web/src/pages/management/ApplicationContracts.tsx","iam-admin-web/src/pages/management/ApplicationLifecycle.tsx","iam-admin-web/src/pages/management/ApplicationShared.tsx","iam-admin-web/src/pages/management/ApplicationsPage.tsx","iam-admin-web/src/pages/management/AuditPage.tsx","iam-admin-web/src/pages/management/AuthorizationShared.tsx","iam-admin-web/src/pages/management/BindingScopes.tsx","iam-admin-web/src/pages/management/BindingsPage.tsx","iam-admin-web/src/pages/management/GroupsPage.tsx","iam-admin-web/src/pages/management/MachineClientsPage.tsx","iam-admin-web/src/pages/management/MachineContract.tsx","iam-admin-web/src/pages/management/MachineCredentials.tsx","iam-admin-web/src/pages/management/MembersPage.tsx","iam-admin-web/src/pages/management/OrganizationsPage.tsx","iam-admin-web/src/pages/management/PlatformPages.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/pages/management/ServicePrincipalsPage.tsx","iam-admin-web/src/styles/applications.css","iam-admin-web/src/styles/audit.css","iam-admin-web/src/styles/authorization.css","iam-admin-web/src/styles/management.css","iam-admin-web/src/test/application-lifecycle.test.tsx","iam-admin-web/src/test/application-management.test.tsx","iam-admin-web/src/test/audit.test.tsx","iam-admin-web/src/test/authorization-management.test.tsx","iam-admin-web/src/test/group-editor.test.tsx","iam-admin-web/src/test/group-lifecycle.test.tsx","iam-admin-web/src/test/machine-clients.test.tsx","iam-admin-web/src/test/machine-credentials.test.tsx","iam-admin-web/src/test/management-integration.test.tsx","iam-admin-web/src/test/service-principals.test.tsx"]},{"id":"3cf111b21a47760e5c71fc6b2fba96d882dbd3f1","message":"feat(console): 把程序身份详情改为分区抽屉并列出使用它的程序客户端\n\n程序身份详情是一张整体表单,改名、更换负责人和停用都要勾选确认并一起提交;负责人失效时改名会直接被后端拒绝,界面却没有提示;列表每行放「查看详情」按钮,页面顶部还有单独的说明框。按已定的列表与抽屉约定重排。\n\n实现内容:\n- 页面说明并入卡片描述;列表改为整行可点,负责人失效时在负责人下用 cell-note 提示;空列表使用「还没有程序身份」定制空状态\n- 详情抽屉分「基本信息 / 负责人 / 程序客户端 / 停用或恢复」:改名与更换负责人就地展开,不需要影响确认;停用或恢复在危险区展开并须确认;同一时间只进行一项修改,每项修改都带上其余字段的当前值提交到原有整体保存接口\n- 正常状态下负责人失效时禁用「修改名称」并提示先更换负责人,状态说明改为程序暂时不能获取令牌;已停用且负责人失效时恢复按钮不可用\n- 新增「程序客户端」分区:按身份代码搜索程序客户端后再按身份标识过滤(最多 100 个),链接到程序接入详情;没有客户端时给出前往程序接入的链接\n- 新建改为独立弹窗:名称、代码与平铺的负责人选择,底部使用 FormActions;负责人选择改为「选择 成员代码」按钮\n- 保存后焦点留在抽屉内;重写程序身份单元测试(更换负责人、停用确认、未知结果重试、冲突重读),同步 acceptance-p10-t01 中的详情等待、新建、状态变更、负责人失效、冲突重读与深链接步骤\n\n验证:\n- npm run check(format:check、lint、typecheck、test、build):通过,Vitest 26 个文件 223 项全部通过\n- node --check 检查 acceptance-p10-t01:通过\n- 演示环境没有程序身份,浏览器中以页面内临时改写接口响应的方式检查列表、详情四区、更换负责人、停用确认、负责人失效与新建弹窗(1280 宽、375 窄屏及亮/暗色),未提交写操作\n- 验收脚本 acceptance-p10-t01:未运行,需要独立隔离环境\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/3cf111b21a47760e5c71fc6b2fba96d882dbd3f1","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-12T08:05:50-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-p10-t01.mjs","iam-admin-web/src/pages/management/ServicePrincipalsPage.tsx","iam-admin-web/src/styles/management.css","iam-admin-web/src/test/service-principals.test.tsx"]},{"id":"ba844f0abb4b7b64a50d2a5b617e87e33aac5a14","message":"feat(console): 把程序接入详情改为分区抽屉并内嵌密钥管理\n\n程序接入页顶部有一大段说明,列表每行放「查看详情」按钮;详情是一张整体表单,管理密钥要切换到另一个子视图,新建时在弹窗里同时套着两张选择卡片。按已定的列表与抽屉约定重排。\n\n实现内容:\n- 页头补「应用」徽标,原顶部说明并入页头与卡片描述,授权方式名称移到详情技术细节\n- 列表改为整行可点(客户端 ID 为按钮、程序身份与可调用操作为灰色说明),状态正常但暂时不能获取令牌时在状态下提示;空列表使用「还没有程序客户端」定制空状态\n- 详情抽屉分「基本信息 / 可调用的操作 / 密钥 / 停用或归档」:调整操作就地展开,无改动不能保存,改动后须确认;平台已不再批准的操作照常列出并注明不生效,取消勾选后不能再选回\n- 密钥改为抽屉内的常驻分区:逐份显示状态与时间,撤销确认在该行下方展开,成功后以提示条告知并重读记录;更换密钥仍显示一次性回执\n- 调整操作、密钥操作与状态变更互相锁定,写入结果不明或冲突时不能切换到其他修改;保存或撤销后焦点留在抽屉内\n- 新建改为两步:先选程序身份,再选服务并勾选操作,底部「重新选择程序身份 / 创建程序客户端」,不再要求影响确认\n- ScopeChoices 改为与权限勾选一致的边框清单,新增 unavailable、legendHidden、hint;平台「程序可调用的操作」弹窗使用平台场景的说明\n- 同步程序接入与密钥单元测试,以及 acceptance-p10-t02、t03、t04 中的详情等待、新建步骤、调整操作、密钥分区与空状态文案\n\n验证:\n- npm run check(format:check、lint、typecheck、test、build):通过,Vitest 26 个文件 222 项全部通过;构建时 Vite 提示打包文件体积偏大,未核实是否为既有提示\n- node --check 检查 acceptance-p10-t02、t03、t04:通过\n- 演示环境没有程序客户端、可访问服务与程序身份,浏览器中以页面内临时改写接口响应的方式检查列表、详情四区、撤销与更换密钥表单、调整操作、新建两步与已归档只读状态(1280 宽、375 窄屏及亮/暗色),未提交写操作;平台「程序可调用的操作」弹窗打开查看未保存\n- 验收脚本 acceptance-p10-t02、t03、t04:未运行,需要独立隔离环境\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/ba844f0abb4b7b64a50d2a5b617e87e33aac5a14","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-12T07:57:52-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-p10-t02.mjs","iam-admin-web/scripts/acceptance-p10-t03.mjs","iam-admin-web/scripts/acceptance-p10-t04.mjs","iam-admin-web/src/pages/management/MachineClientsPage.tsx","iam-admin-web/src/pages/management/MachineContract.tsx","iam-admin-web/src/pages/management/MachineCredentials.tsx","iam-admin-web/src/styles/management.css","iam-admin-web/src/test/machine-clients.test.tsx","iam-admin-web/src/test/machine-credentials.test.tsx"]},{"id":"91e187c7bfa1c897d22cd3fb7e5d30d7368a586d","message":"feat(console): 在角色分配中显示角色包含的权限并改用卡片选择分配对象\n\n角色分配页已随企业管理员改为分区抽屉,但业务模式下仍看不出一条分配实际给了哪些权限,分配对象名称下显示的是无意义的标识缩写,新建时用下拉框选择成员或用户组,页头徽标也与其他应用内页面不一致。\n\n实现内容:\n- 页头徽标改为「应用」,与权限清单、角色页一致\n- 分配对象说明:有与名称不同的成员代码或用户组代码时显示「类型 · 代码」,名称即代码时只显示类型,两者都没有才回退标识缩写;用户组不是正常状态时在名称下提示\n- 详情基本信息为角色补充灰色代码,新增「角色包含的权限」(按应用权限清单显示名称)\n- 分配弹窗第一步「分配给」改为横排的「成员 / 用户组」单选卡片;第二步选中角色后显示该角色包含的权限预览,读取失败不影响分配\n- BindingRecord 类型补充 group_code;同步 acceptance-t04 中选择分配对象类型的步骤\n\n验证:\n- npm run check(format:check、lint、typecheck、test、build):通过,Vitest 26 个文件 222 项全部通过;首次运行时 group-lifecycle 中一项焦点断言偶发失败,单独重跑 3 次及全量重跑均通过,与本次改动无关\n- node --check 检查 acceptance-t04:通过\n- 浏览器 1280 宽、375 窄屏及亮/暗色检查列表、详情抽屉与分配弹窗两步(切换成员/用户组、选择成员与角色、权限预览),未提交写操作;演示数据没有分给用户组的记录,用户组代码与归档提示未在页面上实际看到\n- 验收脚本 acceptance-t04:未运行,需要独立隔离环境\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/91e187c7bfa1c897d22cd3fb7e5d30d7368a586d","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-12T07:45:50-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-t04.mjs","iam-admin-web/src/lib/t04-api.ts","iam-admin-web/src/pages/management/BindingsPage.tsx","iam-admin-web/src/styles/authorization.css"]},{"id":"4a92a91f122f15d9c26a0ff0fc321e14b589777e","message":"feat(console): 把角色详情改为分区抽屉并重排权限清单\n\n角色详情原先是一张整体表单,改名、调整权限和停用归档混在一起,任何修改都要勾选影响确认;列表每行放「查看 X」按钮,权限清单页也没有筛选。按已定的列表与抽屉约定重排两页。\n\n实现内容:\n- 权限清单拆为独立组件:卡片说明给出权限总数与可放进角色的数量,加入本地名称/代码搜索与状态筛选、「去组合角色」链接,不能放进角色的原因用灰字说明,空清单使用公共空状态\n- 角色列表改用 OpenableRow 整行可点,并提供「还没有角色」定制空状态\n- 角色详情抽屉分「基本信息 / 包含的权限 / 停用或归档」三区:改名与调整权限就地展开,状态变更用单选卡片;同一时间只进行一项修改,每项修改都带上其余字段的当前值提交到原有整体保存接口\n- 改名不再要求影响确认;有分配记录时调整权限、以及任何状态变更仍须确认,草稿改动后确认失效;归档仍同时提交 revokeBindings\n- 基本信息显示分配记录数并提供「前往角色分配」链接;已归档角色只读,不提供修改入口\n- 新建角色改为独立弹窗,底部使用 FormActions「取消 / 创建角色」\n- 公共 PermissionPicker 改为带边框的勾选清单,显示「已选 N 项」,只在不可选的行注明原因,新增 legendHidden;企业管理员中「可分配的权限」随之生效\n- 重写角色相关单元测试(状态归档、改名、调整权限确认、归档只读、新建),同步 acceptance-t04 中的角色详情入口、状态变更与冲突复核步骤\n\n验证:\n- npm run check(format:check、lint、typecheck、test、build):通过,Vitest 26 个文件 222 项全部通过\n- node --check 检查 acceptance-t04:通过\n- 浏览器 1280 宽、375 窄屏及亮/暗色检查权限清单、角色列表、详情三区、新建弹窗与企业管理员可分配权限;已停用权限、需按数据范围分配的权限与已归档角色通过页面内临时改写响应查看,未做写操作\n- 验收脚本 acceptance-t04:未运行,需要独立隔离环境\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/4a92a91f122f15d9c26a0ff0fc321e14b589777e","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-12T07:39:38-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-t04.mjs","iam-admin-web/src/pages/management/AuthorizationShared.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/styles/authorization.css","iam-admin-web/src/styles/management.css","iam-admin-web/src/test/authorization-management.test.tsx"]}],"total_commits":0,"head_commit":{"id":"faac5481c1cca66e4708222686b6588a43938150","message":"feat(console): 合并控制台逐页布局与样式改造\n\n控制台各页面原先列表用「查看详情」按钮、详情是整张表单、弹窗操作区与空状态各不相同,常用信息和危险操作混在一起。合并 feat/console-layout 分支,按统一的列表、抽屉与弹窗约定逐页重排企业内、平台侧与应用内的管理页面。\n\n实现内容:\n- 列表统一为整行可点(OpenableRow 或同交互的专用行),名称为链接或按钮、末列右箭头,需要处理的状态用 cell-note 提示;空状态改为带图标、说明与操作的公共 EmptyList,无数据时不显示分页\n- 详情抽屉按「基本信息 / 业务分区 / 危险区」分区,修改就地展开且同一时间只进行一项;危险操作默认收起,展开后用单选卡片或确认勾选\n- 企业、应用接入改为带分区标签的详情页;新增只读组织架构图;成员、部门、用户组、所有账号、企业与平台管理员、应用开通、操作记录、权限清单、角色、角色分配、程序接入(密钥管理内嵌抽屉)与程序身份完成改造\n- 弹窗底部统一使用 FormActions「取消 + 主操作」,多步弹窗提供「重新选择」;权限统一以名称为主、代码为辅显示,勾选清单统一为带边框的列表\n- 同步更新各页面单元测试与相关验收脚本中的文案和定位\n\n验证:\n- 分支上每次提交前运行 npm run check:format:check、lint、typecheck、test、build 通过,最后一次 Vitest 26 个文件 223 项全部通过\n- 各页面在浏览器 1280 宽、375 窄屏及亮/暗色下核对;程序接入、程序身份等演示环境缺数据的页面以页面内临时改写接口响应检查,未提交写操作\n- 验收脚本仅执行 node --check,未实际运行\n- 合并无冲突,main 上未单独重新运行检查;平台权限查询接入、个人中心尚未改造\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/faac5481c1cca66e4708222686b6588a43938150","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-12T08:07:51-07:00","added":["iam-admin-web/src/pages/management/OrganizationChartPage.tsx","iam-admin-web/src/pages/management/PlatformTenantPage.tsx","iam-admin-web/src/test/organizations.test.tsx"],"removed":[],"modified":["iam-admin-web/scripts/acceptance-group-lifecycle.mjs","iam-admin-web/scripts/acceptance-p10-t01.mjs","iam-admin-web/scripts/acceptance-p10-t02.mjs","iam-admin-web/scripts/acceptance-p10-t03.mjs","iam-admin-web/scripts/acceptance-p10-t04.mjs","iam-admin-web/scripts/acceptance-t02.mjs","iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/scripts/acceptance-t04.mjs","iam-admin-web/scripts/acceptance-t06.mjs","iam-admin-web/src/App.tsx","iam-admin-web/src/components/Management.tsx","iam-admin-web/src/lib/t04-api.ts","iam-admin-web/src/pages/management/ApplicationAdmissionPage.tsx","iam-admin-web/src/pages/management/ApplicationContracts.tsx","iam-admin-web/src/pages/management/ApplicationLifecycle.tsx","iam-admin-web/src/pages/management/ApplicationShared.tsx","iam-admin-web/src/pages/management/ApplicationsPage.tsx","iam-admin-web/src/pages/management/AuditPage.tsx","iam-admin-web/src/pages/management/AuthorizationShared.tsx","iam-admin-web/src/pages/management/BindingScopes.tsx","iam-admin-web/src/pages/management/BindingsPage.tsx","iam-admin-web/src/pages/management/GroupsPage.tsx","iam-admin-web/src/pages/management/MachineClientsPage.tsx","iam-admin-web/src/pages/management/MachineContract.tsx","iam-admin-web/src/pages/management/MachineCredentials.tsx","iam-admin-web/src/pages/management/MembersPage.tsx","iam-admin-web/src/pages/management/OrganizationsPage.tsx","iam-admin-web/src/pages/management/PlatformPages.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/pages/management/ServicePrincipalsPage.tsx","iam-admin-web/src/styles/applications.css","iam-admin-web/src/styles/audit.css","iam-admin-web/src/styles/authorization.css","iam-admin-web/src/styles/management.css","iam-admin-web/src/test/application-lifecycle.test.tsx","iam-admin-web/src/test/application-management.test.tsx","iam-admin-web/src/test/audit.test.tsx","iam-admin-web/src/test/authorization-management.test.tsx","iam-admin-web/src/test/group-editor.test.tsx","iam-admin-web/src/test/group-lifecycle.test.tsx","iam-admin-web/src/test/machine-clients.test.tsx","iam-admin-web/src/test/machine-credentials.test.tsx","iam-admin-web/src/test/management-integration.test.tsx","iam-admin-web/src/test/service-principals.test.tsx"]},"repository":{"id":125,"owner":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"228834386@qq.com","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"name":"IAM","full_name":"pengzhiyu/IAM","description":"Identity and Access Management(身份识别与访问管理)","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":100939,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM/languages","html_url":"https://gitea.g-hi.com/pengzhiyu/IAM","url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM","link":"","ssh_url":"git@gitea.g-hi.com:pengzhiyu/IAM.git","clone_url":"https://gitea.g-hi.com/pengzhiyu/IAM.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-08T17:04:24+08:00","updated_at":"2026-10-11T23:51:55+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":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"sender":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"}}...
|
push
|
2
|
4
|
1791818109
|
1791818322
|
0
|
1791818107
|
1791818322
|
|
|
0
|
Edit
Delete
|
|
25614
|
test: 修复集成测试应用的关闭顺序
|
125
|
16
|
security.yml
|
4
|
-2
|
356
|
refs/heads/main
|
4bda2cc02706e1c64d5cd23c233673a0b32d0a72
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"06556f73ea74b431979b8b819de8e85358843b49","after":"4bda2cc02706e1c64d5cd23c233673a0b32d0a72","compare_url":"https://gitea.g-hi.com/pengzhiyu/IAM/compare/06556f73ea74b431979b8b819de8e85358843b49...4bda2cc02706e1c64d5cd23c233673a0b32d0a72","commits":[{"id":"4bda2cc02706e1c64d5cd23c233673a0b32d0a72","message":"test: 修复集成测试应用的关闭顺序\n\n测试类的临时数据库和 Redis 会先于缓存中的应用回收,后台任务可能继续访问已回收资源。\n\n实现内容:\n- 为 BaselineIT 和 AccountsIT 声明 AFTER_CLASS 关闭并接入测试探针\n- 在容器仍存活时核对连接池、Redis、调度任务及所属执行器结束状态\n- 增加正常、异常回调及未关闭资源反例,保留原故障恢复和安全断言\n- 记录本地归因、首次失败、最终定向结果与完整检查的启动阻塞\n\n验证:\n- Java 25 离线 test-compile(含 Spotless)通过\n- 最终定向 29 项及 Baseline 独立最后应用 7 项通过\n- 完整 clean verify:169 项单测通过;集成 422 项通过、1 项启动错误、74 项跳过\n- ProtocolConsistencyIT 第二个应用因端口绑定失败启动不成功,占用者尚未确证;完整门禁未通过,未重跑\n- F0 36 场景全部拒绝,消费、新凭据和刷新成功事件为零\n- git diff --check 和 37 个文档相对链接/锚点检查通过\n\n仅修改测试及任务文档;不改变产品合同,不作为候选冻结或性能验收通过的证明。\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/4bda2cc02706e1c64d5cd23c233673a0b32d0a72","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T08:50:19-07:00","added":["iam-server/src/test/java/com/iam/server/ContextLifecycleIT.java","iam-server/src/test/java/com/iam/server/TestContextShutdownProbe.java"],"removed":[],"modified":["docs/tasks/P12-auth-ingress-attribution-design.md","docs/tasks/P12-software-optimization.md","iam-server/src/test/java/com/iam/server/BaselineIT.java","iam-server/src/test/java/com/iam/server/accounts/AccountsIT.java"]},{"id":"b69ba6c8145d3b5bc8e67e37a9d2f26e8723222b","message":"feat(console): 合并控制台面向普通用户的文案改写\n\n控制台原先大量使用标识、版本、协议术语和后端状态原值,普通管理员难以理解。合并 feat/console-polish-next 分支,完成三个概览页重设计、导航改名,以及全部管理页面、个人中心、工作台与切换器的文案改写。\n\n实现内容:\n- 重新设计平台、企业、应用三个概览页,侧边栏模块按日常说法改名,并在 docs/console/design-system.md 记录新旧名称对照\n- 各管理页面改用日常说法,状态和角色显示中文,标识、版本、追踪编号收进默认收起的\"技术细节\"\n- 时间输入改用本地日期时间选择器,提交时仍为带时区的 ISO 时间;操作记录显示中文操作名称,并支持下拉筛选\n- \"秘密\"统一称\"密钥\",\"机器客户端/服务主体\"称\"程序客户端/程序身份\",\"IAM 会话\"称\"登录记录\"\n- 同步更新单元测试与验收脚本中的文案和定位,列表行增加 data-record-id 供脚本定位\n\n验证:\n- 分支上每批提交前运行 npm run check:format:check、lint、typecheck、build 通过,最后一次测试 203/203 通过\n- 各页面在浏览器中核对;程序接入详情、程序身份详情与启用新应用弹窗因演示环境缺数据或登录过期未核对\n- 验收脚本仅执行 node --check,未实际运行\n- 合并无冲突,main 上未单独重新运行检查\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/b69ba6c8145d3b5bc8e67e37a9d2f26e8723222b","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T08:34:48-07:00","added":["iam-admin-web/src/lib/audit-actions.ts","iam-admin-web/src/pages/AppOverview.tsx","iam-admin-web/src/pages/PlatformOverview.tsx","iam-admin-web/src/pages/TenantOverview.tsx","iam-admin-web/src/test/app-overview.test.tsx","iam-admin-web/src/test/platform-overview.test.tsx","iam-admin-web/src/test/tenant-overview.test.tsx"],"removed":[],"modified":["docs/console/design-system.md","iam-admin-web/scripts/acceptance-group-lifecycle.mjs","iam-admin-web/scripts/acceptance-p10-t01.mjs","iam-admin-web/scripts/acceptance-p10-t02.mjs","iam-admin-web/scripts/acceptance-p10-t03.mjs","iam-admin-web/scripts/acceptance-p10-t04.mjs","iam-admin-web/scripts/acceptance-p11-t04.mjs","iam-admin-web/scripts/acceptance-p11-t05.mjs","iam-admin-web/scripts/acceptance-p11-t07.mjs","iam-admin-web/scripts/acceptance-t02.mjs","iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/scripts/acceptance-t04.mjs","iam-admin-web/scripts/acceptance-t05.mjs","iam-admin-web/scripts/acceptance-t06.mjs","iam-admin-web/scripts/acceptance.mjs","iam-admin-web/src/App.tsx","iam-admin-web/src/components/Layout.tsx","iam-admin-web/src/components/Management.tsx","iam-admin-web/src/data/pages.ts","iam-admin-web/src/lib/roles.ts","iam-admin-web/src/lib/t02-api.ts","iam-admin-web/src/lib/t04-api.ts","iam-admin-web/src/pages/EmailRecoveryPage.tsx","iam-admin-web/src/pages/HomePage.tsx","iam-admin-web/src/pages/PersonalPage.tsx","iam-admin-web/src/pages/ScopePages.tsx","iam-admin-web/src/pages/management/ApplicationAdmissionPage.tsx","iam-admin-web/src/pages/management/ApplicationContracts.tsx","iam-admin-web/src/pages/management/ApplicationLifecycle.tsx","iam-admin-web/src/pages/management/ApplicationShared.tsx","iam-admin-web/src/pages/management/ApplicationsPage.tsx","iam-admin-web/src/pages/management/AuditPage.tsx","iam-admin-web/src/pages/management/AuthorizationGuard.tsx","iam-admin-web/src/pages/management/AuthorizationShared.tsx","iam-admin-web/src/pages/management/BindingScopes.tsx","iam-admin-web/src/pages/management/BindingsPage.tsx","iam-admin-web/src/pages/management/DecisionCallersPage.tsx","iam-admin-web/src/pages/management/GroupsPage.tsx","iam-admin-web/src/pages/management/MachineClientsPage.tsx","iam-admin-web/src/pages/management/MachineContract.tsx","iam-admin-web/src/pages/management/MachineCredentials.tsx","iam-admin-web/src/pages/management/MembersPage.tsx","iam-admin-web/src/pages/management/OrganizationsPage.tsx","iam-admin-web/src/pages/management/PlatformPages.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/pages/management/ServicePrincipalsPage.tsx","iam-admin-web/src/shell/ContextSwitcher.tsx","iam-admin-web/src/shell/ContextTrail.tsx","iam-admin-web/src/shell/NavRail.tsx","iam-admin-web/src/styles/components.css","iam-admin-web/src/styles/pages.css","iam-admin-web/src/test/application-lifecycle.test.tsx","iam-admin-web/src/test/application-management.test.tsx","iam-admin-web/src/test/audit.test.tsx","iam-admin-web/src/test/authorization-management.test.tsx","iam-admin-web/src/test/group-editor.test.tsx","iam-admin-web/src/test/machine-clients.test.tsx","iam-admin-web/src/test/machine-credentials.test.tsx","iam-admin-web/src/test/management-integration.test.tsx","iam-admin-web/src/test/personal.test.tsx","iam-admin-web/src/test/service-principals.test.tsx","iam-admin-web/src/test/sidebar.test.tsx"]},{"id":"9339f14f94e988b7a3d898f11daa506446d75c44","message":"feat(console): 改写工作台与企业切换器文案\n\n工作台和顶部切换器仍使用\"管理上下文\"\"平台总入口仅限平台管理员\"\"全员准入\"\"企业已启用/应用正常\"双徽标等说法,工作台还直接展示账号标识。改为日常说法,并与应用开通页的\"使用情况\"保持一致。\n\n实现内容:\n- 工作台说明改为说明顶部一直显示正在管理的企业和应用;平台入口锁定提示改为\"只有平台管理员可以进入\",应用管理员入口改为\"进入应用接入\"\n- 右侧卡片改为\"我的账号\",显示名字、平台管理身份、登录方式与\"这台电脑保存了什么\",账号标识收进技术细节\n- 切换器标题改为\"切换企业或应用\"并改写说明;企业列表去掉恒为真的\"企业正常\"徽标,非正常状态显示中文状态\n- 应用列表改为\"应用(可选)\",用 appUsage 的单个\"使用情况\"徽标替代企业关系与全局状态两个徽标,可进入的应用显示\"所有成员可用/仅指定成员可用\";空状态、无权限与停用说明改写\n- 顶部路径的\"未选择管理上下文\"改为\"未选择企业\",相关 aria-label 同步改写\n- 平台与应用无法进入时的说明改为日常说法,应用停用原因复用 appUsage\n- 删除已无引用的 relationLabel、applicationStatusLabel、accessPolicyLabel\n- 同步更新 acceptance.mjs 中切换器标题、应用分组、停用说明与无权限提示的定位\n\n验证:\n- npm run check:format:check、lint、typecheck、build 通过,测试 203/203 通过\n- 浏览器核对工作台与切换器(选择企业后未进入)\n- 验收脚本仅执行 node --check,未实际运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/9339f14f94e988b7a3d898f11daa506446d75c44","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T08:27:50-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance.mjs","iam-admin-web/src/lib/roles.ts","iam-admin-web/src/pages/HomePage.tsx","iam-admin-web/src/pages/ScopePages.tsx","iam-admin-web/src/shell/ContextSwitcher.tsx","iam-admin-web/src/shell/ContextTrail.tsx"]},{"id":"74debf18dda59db91112b09eb5a93214a0e18c52","message":"feat(console): 改写个人中心文案并把会话称为登录记录\n\n个人中心原先使用\"IAM 会话\"\"最近协议活动\"\"绝对截止\"\"期限类别\"\"管理上下文\"等术语,每条会话都重复一段说明并直接展示编号。改为\"登录记录\"等日常说法,编号收进技术细节。\n\n实现内容:\n- \"IAM 登录会话\"改为\"登录记录\",状态改为登录中/已过期/已退出/已失效;时间字段改为登录时间、最近使用、一直不用时自动退出于、最晚退出时间、登录有效期\n- 每条记录重复的说明合并到卡片说明中;登录编号收进技术细节;按钮改为\"退出当前登录\"\"退出这次登录\"\"确认退出\"\"刷新登录记录\"\n- 退出确认与成功提示改为\"登录\"说法,冲突与无权提示改写\n- \"我的身份\"改为\"我的账号\",显示名字与平台管理身份,账号标识收进技术细节;\"我的企业\"去掉恒为真的\"企业正常/有效成员\"徽标与成员标识,改为\"你的身份:所有者/普通成员\",按钮改为\"切换企业\"\n- 底部说明改为\"切换企业与退出登录有什么区别\"\n- 邮箱卡片中\"无法恢复丢失的全部 MFA 因素\"改为日常说明\n- 操作记录中的\"两步验证\"统一为与多因素验证页面一致的\"多因素验证\"\n- 同步更新 personal 测试与 acceptance-t05、acceptance-p11-t04/t05/t07 的按钮与标题定位(示例应用自身的\"退出当前 IAM 会话\"按钮未改)\n\n验证:\n- npm run check:format:check、lint、typecheck、build 通过,测试 203/203 通过\n- 浏览器核对个人中心各卡片与登录记录(未执行退出)\n- 验收脚本仅执行 node --check,未实际运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/74debf18dda59db91112b09eb5a93214a0e18c52","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T08:25:43-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-p11-t04.mjs","iam-admin-web/scripts/acceptance-p11-t05.mjs","iam-admin-web/scripts/acceptance-p11-t07.mjs","iam-admin-web/scripts/acceptance-t05.mjs","iam-admin-web/src/lib/audit-actions.ts","iam-admin-web/src/pages/EmailRecoveryPage.tsx","iam-admin-web/src/pages/PersonalPage.tsx","iam-admin-web/src/test/personal.test.tsx"]},{"id":"546f7184ef08dfa32fbd7610c8152fa6856d9ee4","message":"style(console): 格式化程序身份验收脚本中的负责人失效断言\n\n上一提交在运行 Prettier 之后又修改了 acceptance-p10-t01.mjs 的一行断言,导致该文件不符合 npm run format:check。\n\n实现内容:\n- 按 Prettier 规则折行负责人失效断言,不改变断言内容\n\n验证:\n- npx prettier --check scripts/acceptance-p10-t01.mjs:通过\n- node --check scripts/acceptance-p10-t01.mjs:通过;脚本未实际运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/546f7184ef08dfa32fbd7610c8152fa6856d9ee4","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T08:24:05-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-p10-t01.mjs"]}],"total_commits":0,"head_commit":{"id":"4bda2cc02706e1c64d5cd23c233673a0b32d0a72","message":"test: 修复集成测试应用的关闭顺序\n\n测试类的临时数据库和 Redis 会先于缓存中的应用回收,后台任务可能继续访问已回收资源。\n\n实现内容:\n- 为 BaselineIT 和 AccountsIT 声明 AFTER_CLASS 关闭并接入测试探针\n- 在容器仍存活时核对连接池、Redis、调度任务及所属执行器结束状态\n- 增加正常、异常回调及未关闭资源反例,保留原故障恢复和安全断言\n- 记录本地归因、首次失败、最终定向结果与完整检查的启动阻塞\n\n验证:\n- Java 25 离线 test-compile(含 Spotless)通过\n- 最终定向 29 项及 Baseline 独立最后应用 7 项通过\n- 完整 clean verify:169 项单测通过;集成 422 项通过、1 项启动错误、74 项跳过\n- ProtocolConsistencyIT 第二个应用因端口绑定失败启动不成功,占用者尚未确证;完整门禁未通过,未重跑\n- F0 36 场景全部拒绝,消费、新凭据和刷新成功事件为零\n- git diff --check 和 37 个文档相对链接/锚点检查通过\n\n仅修改测试及任务文档;不改变产品合同,不作为候选冻结或性能验收通过的证明。\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/4bda2cc02706e1c64d5cd23c233673a0b32d0a72","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T08:50:19-07:00","added":["iam-server/src/test/java/com/iam/server/ContextLifecycleIT.java","iam-server/src/test/java/com/iam/server/TestContextShutdownProbe.java"],"removed":[],"modified":["docs/tasks/P12-auth-ingress-attribution-design.md","docs/tasks/P12-software-optimization.md","iam-server/src/test/java/com/iam/server/BaselineIT.java","iam-server/src/test/java/com/iam/server/accounts/AccountsIT.java"]},"repository":{"id":125,"owner":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"228834386@qq.com","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"name":"IAM","full_name":"pengzhiyu/IAM","description":"Identity and Access Management(身份识别与访问管理)","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":99686,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM/languages","html_url":"https://gitea.g-hi.com/pengzhiyu/IAM","url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM","link":"","ssh_url":"git@gitea.g-hi.com:pengzhiyu/IAM.git","clone_url":"https://gitea.g-hi.com/pengzhiyu/IAM.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-08T17:04:24+08:00","updated_at":"2026-10-10T17:57:55+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":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"sender":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"}}...
|
schedule
|
2
|
4
|
1791770416
|
1791770637
|
0
|
1791770415
|
1791770637
|
|
|
0
|
Edit
Delete
|
|
25576
|
test: 修复集成测试应用的关闭顺序
|
125
|
16
|
verify.yml
|
3
|
16
|
0
|
refs/heads/main
|
4bda2cc02706e1c64d5cd23c233673a0b32d0a72
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"06556f73ea74b431979b8b819de8e85358843b49","after":"4bda2cc02706e1c64d5cd23c233673a0b32d0a72","compare_url":"https://gitea.g-hi.com/pengzhiyu/IAM/compare/06556f73ea74b431979b8b819de8e85358843b49...4bda2cc02706e1c64d5cd23c233673a0b32d0a72","commits":[{"id":"4bda2cc02706e1c64d5cd23c233673a0b32d0a72","message":"test: 修复集成测试应用的关闭顺序\n\n测试类的临时数据库和 Redis 会先于缓存中的应用回收,后台任务可能继续访问已回收资源。\n\n实现内容:\n- 为 BaselineIT 和 AccountsIT 声明 AFTER_CLASS 关闭并接入测试探针\n- 在容器仍存活时核对连接池、Redis、调度任务及所属执行器结束状态\n- 增加正常、异常回调及未关闭资源反例,保留原故障恢复和安全断言\n- 记录本地归因、首次失败、最终定向结果与完整检查的启动阻塞\n\n验证:\n- Java 25 离线 test-compile(含 Spotless)通过\n- 最终定向 29 项及 Baseline 独立最后应用 7 项通过\n- 完整 clean verify:169 项单测通过;集成 422 项通过、1 项启动错误、74 项跳过\n- ProtocolConsistencyIT 第二个应用因端口绑定失败启动不成功,占用者尚未确证;完整门禁未通过,未重跑\n- F0 36 场景全部拒绝,消费、新凭据和刷新成功事件为零\n- git diff --check 和 37 个文档相对链接/锚点检查通过\n\n仅修改测试及任务文档;不改变产品合同,不作为候选冻结或性能验收通过的证明。\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/4bda2cc02706e1c64d5cd23c233673a0b32d0a72","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T08:50:19-07:00","added":["iam-server/src/test/java/com/iam/server/ContextLifecycleIT.java","iam-server/src/test/java/com/iam/server/TestContextShutdownProbe.java"],"removed":[],"modified":["docs/tasks/P12-auth-ingress-attribution-design.md","docs/tasks/P12-software-optimization.md","iam-server/src/test/java/com/iam/server/BaselineIT.java","iam-server/src/test/java/com/iam/server/accounts/AccountsIT.java"]},{"id":"b69ba6c8145d3b5bc8e67e37a9d2f26e8723222b","message":"feat(console): 合并控制台面向普通用户的文案改写\n\n控制台原先大量使用标识、版本、协议术语和后端状态原值,普通管理员难以理解。合并 feat/console-polish-next 分支,完成三个概览页重设计、导航改名,以及全部管理页面、个人中心、工作台与切换器的文案改写。\n\n实现内容:\n- 重新设计平台、企业、应用三个概览页,侧边栏模块按日常说法改名,并在 docs/console/design-system.md 记录新旧名称对照\n- 各管理页面改用日常说法,状态和角色显示中文,标识、版本、追踪编号收进默认收起的\"技术细节\"\n- 时间输入改用本地日期时间选择器,提交时仍为带时区的 ISO 时间;操作记录显示中文操作名称,并支持下拉筛选\n- \"秘密\"统一称\"密钥\",\"机器客户端/服务主体\"称\"程序客户端/程序身份\",\"IAM 会话\"称\"登录记录\"\n- 同步更新单元测试与验收脚本中的文案和定位,列表行增加 data-record-id 供脚本定位\n\n验证:\n- 分支上每批提交前运行 npm run check:format:check、lint、typecheck、build 通过,最后一次测试 203/203 通过\n- 各页面在浏览器中核对;程序接入详情、程序身份详情与启用新应用弹窗因演示环境缺数据或登录过期未核对\n- 验收脚本仅执行 node --check,未实际运行\n- 合并无冲突,main 上未单独重新运行检查\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/b69ba6c8145d3b5bc8e67e37a9d2f26e8723222b","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T08:34:48-07:00","added":["iam-admin-web/src/lib/audit-actions.ts","iam-admin-web/src/pages/AppOverview.tsx","iam-admin-web/src/pages/PlatformOverview.tsx","iam-admin-web/src/pages/TenantOverview.tsx","iam-admin-web/src/test/app-overview.test.tsx","iam-admin-web/src/test/platform-overview.test.tsx","iam-admin-web/src/test/tenant-overview.test.tsx"],"removed":[],"modified":["docs/console/design-system.md","iam-admin-web/scripts/acceptance-group-lifecycle.mjs","iam-admin-web/scripts/acceptance-p10-t01.mjs","iam-admin-web/scripts/acceptance-p10-t02.mjs","iam-admin-web/scripts/acceptance-p10-t03.mjs","iam-admin-web/scripts/acceptance-p10-t04.mjs","iam-admin-web/scripts/acceptance-p11-t04.mjs","iam-admin-web/scripts/acceptance-p11-t05.mjs","iam-admin-web/scripts/acceptance-p11-t07.mjs","iam-admin-web/scripts/acceptance-t02.mjs","iam-admin-web/scripts/acceptance-t03.mjs","iam-admin-web/scripts/acceptance-t04.mjs","iam-admin-web/scripts/acceptance-t05.mjs","iam-admin-web/scripts/acceptance-t06.mjs","iam-admin-web/scripts/acceptance.mjs","iam-admin-web/src/App.tsx","iam-admin-web/src/components/Layout.tsx","iam-admin-web/src/components/Management.tsx","iam-admin-web/src/data/pages.ts","iam-admin-web/src/lib/roles.ts","iam-admin-web/src/lib/t02-api.ts","iam-admin-web/src/lib/t04-api.ts","iam-admin-web/src/pages/EmailRecoveryPage.tsx","iam-admin-web/src/pages/HomePage.tsx","iam-admin-web/src/pages/PersonalPage.tsx","iam-admin-web/src/pages/ScopePages.tsx","iam-admin-web/src/pages/management/ApplicationAdmissionPage.tsx","iam-admin-web/src/pages/management/ApplicationContracts.tsx","iam-admin-web/src/pages/management/ApplicationLifecycle.tsx","iam-admin-web/src/pages/management/ApplicationShared.tsx","iam-admin-web/src/pages/management/ApplicationsPage.tsx","iam-admin-web/src/pages/management/AuditPage.tsx","iam-admin-web/src/pages/management/AuthorizationGuard.tsx","iam-admin-web/src/pages/management/AuthorizationShared.tsx","iam-admin-web/src/pages/management/BindingScopes.tsx","iam-admin-web/src/pages/management/BindingsPage.tsx","iam-admin-web/src/pages/management/DecisionCallersPage.tsx","iam-admin-web/src/pages/management/GroupsPage.tsx","iam-admin-web/src/pages/management/MachineClientsPage.tsx","iam-admin-web/src/pages/management/MachineContract.tsx","iam-admin-web/src/pages/management/MachineCredentials.tsx","iam-admin-web/src/pages/management/MembersPage.tsx","iam-admin-web/src/pages/management/OrganizationsPage.tsx","iam-admin-web/src/pages/management/PlatformPages.tsx","iam-admin-web/src/pages/management/RolesPage.tsx","iam-admin-web/src/pages/management/ServicePrincipalsPage.tsx","iam-admin-web/src/shell/ContextSwitcher.tsx","iam-admin-web/src/shell/ContextTrail.tsx","iam-admin-web/src/shell/NavRail.tsx","iam-admin-web/src/styles/components.css","iam-admin-web/src/styles/pages.css","iam-admin-web/src/test/application-lifecycle.test.tsx","iam-admin-web/src/test/application-management.test.tsx","iam-admin-web/src/test/audit.test.tsx","iam-admin-web/src/test/authorization-management.test.tsx","iam-admin-web/src/test/group-editor.test.tsx","iam-admin-web/src/test/machine-clients.test.tsx","iam-admin-web/src/test/machine-credentials.test.tsx","iam-admin-web/src/test/management-integration.test.tsx","iam-admin-web/src/test/personal.test.tsx","iam-admin-web/src/test/service-principals.test.tsx","iam-admin-web/src/test/sidebar.test.tsx"]},{"id":"9339f14f94e988b7a3d898f11daa506446d75c44","message":"feat(console): 改写工作台与企业切换器文案\n\n工作台和顶部切换器仍使用\"管理上下文\"\"平台总入口仅限平台管理员\"\"全员准入\"\"企业已启用/应用正常\"双徽标等说法,工作台还直接展示账号标识。改为日常说法,并与应用开通页的\"使用情况\"保持一致。\n\n实现内容:\n- 工作台说明改为说明顶部一直显示正在管理的企业和应用;平台入口锁定提示改为\"只有平台管理员可以进入\",应用管理员入口改为\"进入应用接入\"\n- 右侧卡片改为\"我的账号\",显示名字、平台管理身份、登录方式与\"这台电脑保存了什么\",账号标识收进技术细节\n- 切换器标题改为\"切换企业或应用\"并改写说明;企业列表去掉恒为真的\"企业正常\"徽标,非正常状态显示中文状态\n- 应用列表改为\"应用(可选)\",用 appUsage 的单个\"使用情况\"徽标替代企业关系与全局状态两个徽标,可进入的应用显示\"所有成员可用/仅指定成员可用\";空状态、无权限与停用说明改写\n- 顶部路径的\"未选择管理上下文\"改为\"未选择企业\",相关 aria-label 同步改写\n- 平台与应用无法进入时的说明改为日常说法,应用停用原因复用 appUsage\n- 删除已无引用的 relationLabel、applicationStatusLabel、accessPolicyLabel\n- 同步更新 acceptance.mjs 中切换器标题、应用分组、停用说明与无权限提示的定位\n\n验证:\n- npm run check:format:check、lint、typecheck、build 通过,测试 203/203 通过\n- 浏览器核对工作台与切换器(选择企业后未进入)\n- 验收脚本仅执行 node --check,未实际运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/9339f14f94e988b7a3d898f11daa506446d75c44","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T08:27:50-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance.mjs","iam-admin-web/src/lib/roles.ts","iam-admin-web/src/pages/HomePage.tsx","iam-admin-web/src/pages/ScopePages.tsx","iam-admin-web/src/shell/ContextSwitcher.tsx","iam-admin-web/src/shell/ContextTrail.tsx"]},{"id":"74debf18dda59db91112b09eb5a93214a0e18c52","message":"feat(console): 改写个人中心文案并把会话称为登录记录\n\n个人中心原先使用\"IAM 会话\"\"最近协议活动\"\"绝对截止\"\"期限类别\"\"管理上下文\"等术语,每条会话都重复一段说明并直接展示编号。改为\"登录记录\"等日常说法,编号收进技术细节。\n\n实现内容:\n- \"IAM 登录会话\"改为\"登录记录\",状态改为登录中/已过期/已退出/已失效;时间字段改为登录时间、最近使用、一直不用时自动退出于、最晚退出时间、登录有效期\n- 每条记录重复的说明合并到卡片说明中;登录编号收进技术细节;按钮改为\"退出当前登录\"\"退出这次登录\"\"确认退出\"\"刷新登录记录\"\n- 退出确认与成功提示改为\"登录\"说法,冲突与无权提示改写\n- \"我的身份\"改为\"我的账号\",显示名字与平台管理身份,账号标识收进技术细节;\"我的企业\"去掉恒为真的\"企业正常/有效成员\"徽标与成员标识,改为\"你的身份:所有者/普通成员\",按钮改为\"切换企业\"\n- 底部说明改为\"切换企业与退出登录有什么区别\"\n- 邮箱卡片中\"无法恢复丢失的全部 MFA 因素\"改为日常说明\n- 操作记录中的\"两步验证\"统一为与多因素验证页面一致的\"多因素验证\"\n- 同步更新 personal 测试与 acceptance-t05、acceptance-p11-t04/t05/t07 的按钮与标题定位(示例应用自身的\"退出当前 IAM 会话\"按钮未改)\n\n验证:\n- npm run check:format:check、lint、typecheck、build 通过,测试 203/203 通过\n- 浏览器核对个人中心各卡片与登录记录(未执行退出)\n- 验收脚本仅执行 node --check,未实际运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/74debf18dda59db91112b09eb5a93214a0e18c52","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T08:25:43-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-p11-t04.mjs","iam-admin-web/scripts/acceptance-p11-t05.mjs","iam-admin-web/scripts/acceptance-p11-t07.mjs","iam-admin-web/scripts/acceptance-t05.mjs","iam-admin-web/src/lib/audit-actions.ts","iam-admin-web/src/pages/EmailRecoveryPage.tsx","iam-admin-web/src/pages/PersonalPage.tsx","iam-admin-web/src/test/personal.test.tsx"]},{"id":"546f7184ef08dfa32fbd7610c8152fa6856d9ee4","message":"style(console): 格式化程序身份验收脚本中的负责人失效断言\n\n上一提交在运行 Prettier 之后又修改了 acceptance-p10-t01.mjs 的一行断言,导致该文件不符合 npm run format:check。\n\n实现内容:\n- 按 Prettier 规则折行负责人失效断言,不改变断言内容\n\n验证:\n- npx prettier --check scripts/acceptance-p10-t01.mjs:通过\n- node --check scripts/acceptance-p10-t01.mjs:通过;脚本未实际运行\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/546f7184ef08dfa32fbd7610c8152fa6856d9ee4","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T08:24:05-07:00","added":[],"removed":[],"modified":["iam-admin-web/scripts/acceptance-p10-t01.mjs"]}],"total_commits":0,"head_commit":{"id":"4bda2cc02706e1c64d5cd23c233673a0b32d0a72","message":"test: 修复集成测试应用的关闭顺序\n\n测试类的临时数据库和 Redis 会先于缓存中的应用回收,后台任务可能继续访问已回收资源。\n\n实现内容:\n- 为 BaselineIT 和 AccountsIT 声明 AFTER_CLASS 关闭并接入测试探针\n- 在容器仍存活时核对连接池、Redis、调度任务及所属执行器结束状态\n- 增加正常、异常回调及未关闭资源反例,保留原故障恢复和安全断言\n- 记录本地归因、首次失败、最终定向结果与完整检查的启动阻塞\n\n验证:\n- Java 25 离线 test-compile(含 Spotless)通过\n- 最终定向 29 项及 Baseline 独立最后应用 7 项通过\n- 完整 clean verify:169 项单测通过;集成 422 项通过、1 项启动错误、74 项跳过\n- ProtocolConsistencyIT 第二个应用因端口绑定失败启动不成功,占用者尚未确证;完整门禁未通过,未重跑\n- F0 36 场景全部拒绝,消费、新凭据和刷新成功事件为零\n- git diff --check 和 37 个文档相对链接/锚点检查通过\n\n仅修改测试及任务文档;不改变产品合同,不作为候选冻结或性能验收通过的证明。\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/4bda2cc02706e1c64d5cd23c233673a0b32d0a72","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-11T08:50:19-07:00","added":["iam-server/src/test/java/com/iam/server/ContextLifecycleIT.java","iam-server/src/test/java/com/iam/server/TestContextShutdownProbe.java"],"removed":[],"modified":["docs/tasks/P12-auth-ingress-attribution-design.md","docs/tasks/P12-software-optimization.md","iam-server/src/test/java/com/iam/server/BaselineIT.java","iam-server/src/test/java/com/iam/server/accounts/AccountsIT.java"]},"repository":{"id":125,"owner":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"228834386@qq.com","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"name":"IAM","full_name":"pengzhiyu/IAM","description":"Identity and Access Management(身份识别与访问管理)","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":99686,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM/languages","html_url":"https://gitea.g-hi.com/pengzhiyu/IAM","url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM","link":"","ssh_url":"git@gitea.g-hi.com:pengzhiyu/IAM.git","clone_url":"https://gitea.g-hi.com/pengzhiyu/IAM.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-08T17:04:24+08:00","updated_at":"2026-10-10T17:57:55+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":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"sender":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"}}...
|
push
|
2
|
4
|
1791733916
|
1791741278
|
0
|
1791733915
|
1791741278
|
|
|
0
|
Edit
Delete
|
|
25368
|
perf: 优化客户端凭据校验与授权查询并补充容量观测
|
125
|
16
|
verify.yml
|
2
|
16
|
0
|
refs/heads/main
|
06556f73ea74b431979b8b819de8e85358843b49
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"958ef4eaa9c5c873973a94474f7ffb6ab9c16cd2","after":"06556f73ea74b431979b8b819de8e85358843b49","compare_url":"https://gitea.g-hi.com/pengzhiyu/IAM/compare/958ef4eaa9c5c873973a94474f7ffb6ab9c16cd2...06556f73ea74b431979b8b819de8e85358843b49","commits":[{"id":"06556f73ea74b431979b8b819de8e85358843b49","message":"perf: 优化客户端凭据校验与授权查询并补充容量观测\n\nP12 L1 尚未通过,先实现客户端校验、授权查询与观测工具的第一批调整,供另一台 JDK 25 设备编译回归后形成云端测试候选;本提交不代表性能验收通过。\n\n实现内容:\n- 新客户端秘密采用用途独立的版本化 HMAC-SHA256,兼容历史 BCrypt12;通过 V25 显式激活密钥权威并守卫凭据写入\n- 增加普通客户端秘密轮换及认证换代复核,补充协议、密钥策略、部署辅助工具与测试源码\n- 通过 V26 缩小目标企业资格查询,批量计算组织范围,将本地缓存调整为有界 LRU\n- 增加认证、锁、缓存及连接池指标,补充 legacy/hmac/mixed 容量模式、Linux 临时路径与候选摘要核对\n- 更新部署说明和 P12 交接,明确另一设备先完成构建回归,随后再进行云端隔离性能测试\n\n验证:\n- google-java-format 1.35.0 --aosp --dry-run --set-exit-if-changed:51 个新增或修改 Java 文件通过\n- Python AST 解析:11 个新增或修改 Python 文件通过,仅语法检查,未导入或执行脚本\n- git diff --check:通过;新增文档相对文件链接检查通过\n- 当前默认 Java 21,按用户安排未运行 Maven/Spotless 全工程门禁、编译、测试、数据库迁移、容器或压测;须在 JDK 25 设备继续验收\n\nBREAKING CHANGE: 启动前必须准备 IAM_CLIENT_SECRET_KEY_RING_FILE 并以迁移身份显式激活权威集合;写入 HMAC 凭据后不支持直接回退旧二进制\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/06556f73ea74b431979b8b819de8e85358843b49","author":{"name":"starry","email":"228834386@qq.com","username":"pengzhiyu"},"committer":{"name":"starry","email":"228834386@qq.com","username":"pengzhiyu"},"verification":null,"timestamp":"2026-10-10T17:56:32+08:00","added":["deploy/lab/test-client-secret.py","docs/client-secret-verification.md","docs/handoff/P12-client-secret-rotation-frontend.md","docs/tasks/P12-software-optimization.md","iam-server/src/main/java/com/iam/server/data/LifecycleLockMetrics.java","iam-server/src/main/java/com/iam/server/security/ClientSecretPolicy.java","iam-server/src/main/java/com/iam/server/security/ClientSecretVerifier.java","iam-server/src/main/resources/db/migration/V25__client_secret_hmac.sql","iam-server/src/main/resources/db/migration/V26__targeted_membership_lookup.sql","iam-server/src/test/java/com/iam/server/accounts/ScopeServiceTest.java","iam-server/src/test/java/com/iam/server/authorization/DecisionCacheTest.java","iam-server/src/test/java/com/iam/server/data/LifecycleLockMetricsTest.java","iam-server/src/test/java/com/iam/server/data/TargetedMembershipMigrationIT.java","iam-server/src/test/java/com/iam/server/protocol/CapacityCredentials.java","iam-server/src/test/java/com/iam/server/protocol/CapacityMeters.java","iam-server/src/test/java/com/iam/server/protocol/ClientSecretPolicyIT.java","iam-server/src/test/java/com/iam/server/protocol/ClientSecretRotationIT.java","iam-server/src/test/java/com/iam/server/security/ClientSecretVerifierTest.java","scripts/client-secret-policy.py"],"removed":[],"modified":[".gitignore","deploy/lab/compose.yml","deploy/lab/key-manifest.py","deploy/lab/lab.py","deploy/lab/test-key-manifest.py","docs/02-IAM开发计划.md","docs/accounts.md","docs/deployment-lab.md","docs/machine-tokens.md","docs/oidc.md","iam-server/src/main/java/com/iam/server/IamApplication.java","iam-server/src/main/java/com/iam/server/accounts/AccountConfiguration.java","iam-server/src/main/java/com/iam/server/accounts/AccountStore.java","iam-server/src/main/java/com/iam/server/accounts/ApplicationRegistry.java","iam-server/src/main/java/com/iam/server/accounts/Authorizer.java","iam-server/src/main/java/com/iam/server/accounts/MachineClientService.java","iam-server/src/main/java/com/iam/server/accounts/ScopeService.java","iam-server/src/main/java/com/iam/server/authorization/DecisionCache.java","iam-server/src/main/java/com/iam/server/protocol/InternalProtocolFilter.java","iam-server/src/main/java/com/iam/server/protocol/LocalKeyInitializer.java","iam-server/src/main/java/com/iam/server/protocol/MachineSecretAuthenticationProvider.java","iam-server/src/main/java/com/iam/server/protocol/ProtectedClientProvider.java","iam-server/src/main/java/com/iam/server/protocol/ProtocolConfiguration.java","iam-server/src/main/java/com/iam/server/protocol/ProtocolStore.java","iam-server/src/main/java/com/iam/server/protocol/TransactionalProvider.java","iam-server/src/main/java/com/iam/server/security/DecisionConfiguration.java","iam-server/src/main/java/com/iam/server/security/SecurityConfiguration.java","iam-server/src/main/java/com/iam/server/web/ApplicationController.java","iam-server/src/main/resources/application-local.yml","iam-server/src/main/resources/application.yml","iam-server/src/test/java/com/iam/server/BaselineIT.java","iam-server/src/test/java/com/iam/server/data/AuthorizationMigrationIT.java","iam-server/src/test/java/com/iam/server/data/CapacityCatalogIT.java","iam-server/src/test/java/com/iam/server/data/DisplayNameMigrationIT.java","iam-server/src/test/java/com/iam/server/data/MigrationIT.java","iam-server/src/test/java/com/iam/server/protocol/ApplicationLifecycleIT.java","iam-server/src/test/java/com/iam/server/protocol/ApplicationLifecycleUpgradeIT.java","iam-server/src/test/java/com/iam/server/protocol/CapacityDiagnostics.java","iam-server/src/test/java/com/iam/server/protocol/CapacityDriver.java","iam-server/src/test/java/com/iam/server/protocol/CapacityDriverTest.java","iam-server/src/test/java/com/iam/server/protocol/CapacityObserver.java","iam-server/src/test/java/com/iam/server/protocol/CapacityProbe.java","iam-server/src/test/java/com/iam/server/protocol/CapacitySeed.java","iam-server/src/test/java/com/iam/server/protocol/DataScopeIT.java","iam-server/src/test/java/com/iam/server/protocol/MachineCredentialUpgradeIT.java","iam-server/src/test/java/com/iam/server/protocol/MachineCredentialsIT.java","iam-server/src/test/java/com/iam/server/protocol/MachineResourceIT.java","iam-server/src/test/java/com/iam/server/protocol/MachineTaskIT.java","iam-server/src/test/java/com/iam/server/protocol/P08Environment.java","iam-server/src/test/java/com/iam/server/protocol/ProtocolFixture.java","iam-server/src/test/java/com/iam/server/protocol/ProtocolTestKeys.java","scripts/capacity/README.md","scripts/capacity/catalog.sql","scripts/capacity/environment.py","scripts/capacity/http_report.py","scripts/capacity/metrics_report.py","scripts/capacity/policies/L1.properties","scripts/capacity/prepare.py","scripts/capacity/round.py","scripts/capacity/test_tools.py"]}],"total_commits":0,"head_commit":{"id":"06556f73ea74b431979b8b819de8e85358843b49","message":"perf: 优化客户端凭据校验与授权查询并补充容量观测\n\nP12 L1 尚未通过,先实现客户端校验、授权查询与观测工具的第一批调整,供另一台 JDK 25 设备编译回归后形成云端测试候选;本提交不代表性能验收通过。\n\n实现内容:\n- 新客户端秘密采用用途独立的版本化 HMAC-SHA256,兼容历史 BCrypt12;通过 V25 显式激活密钥权威并守卫凭据写入\n- 增加普通客户端秘密轮换及认证换代复核,补充协议、密钥策略、部署辅助工具与测试源码\n- 通过 V26 缩小目标企业资格查询,批量计算组织范围,将本地缓存调整为有界 LRU\n- 增加认证、锁、缓存及连接池指标,补充 legacy/hmac/mixed 容量模式、Linux 临时路径与候选摘要核对\n- 更新部署说明和 P12 交接,明确另一设备先完成构建回归,随后再进行云端隔离性能测试\n\n验证:\n- google-java-format 1.35.0 --aosp --dry-run --set-exit-if-changed:51 个新增或修改 Java 文件通过\n- Python AST 解析:11 个新增或修改 Python 文件通过,仅语法检查,未导入或执行脚本\n- git diff --check:通过;新增文档相对文件链接检查通过\n- 当前默认 Java 21,按用户安排未运行 Maven/Spotless 全工程门禁、编译、测试、数据库迁移、容器或压测;须在 JDK 25 设备继续验收\n\nBREAKING CHANGE: 启动前必须准备 IAM_CLIENT_SECRET_KEY_RING_FILE 并以迁移身份显式激活权威集合;写入 HMAC 凭据后不支持直接回退旧二进制\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/06556f73ea74b431979b8b819de8e85358843b49","author":{"name":"starry","email":"228834386@qq.com","username":"pengzhiyu"},"committer":{"name":"starry","email":"228834386@qq.com","username":"pengzhiyu"},"verification":null,"timestamp":"2026-10-10T17:56:32+08:00","added":["deploy/lab/test-client-secret.py","docs/client-secret-verification.md","docs/handoff/P12-client-secret-rotation-frontend.md","docs/tasks/P12-software-optimization.md","iam-server/src/main/java/com/iam/server/data/LifecycleLockMetrics.java","iam-server/src/main/java/com/iam/server/security/ClientSecretPolicy.java","iam-server/src/main/java/com/iam/server/security/ClientSecretVerifier.java","iam-server/src/main/resources/db/migration/V25__client_secret_hmac.sql","iam-server/src/main/resources/db/migration/V26__targeted_membership_lookup.sql","iam-server/src/test/java/com/iam/server/accounts/ScopeServiceTest.java","iam-server/src/test/java/com/iam/server/authorization/DecisionCacheTest.java","iam-server/src/test/java/com/iam/server/data/LifecycleLockMetricsTest.java","iam-server/src/test/java/com/iam/server/data/TargetedMembershipMigrationIT.java","iam-server/src/test/java/com/iam/server/protocol/CapacityCredentials.java","iam-server/src/test/java/com/iam/server/protocol/CapacityMeters.java","iam-server/src/test/java/com/iam/server/protocol/ClientSecretPolicyIT.java","iam-server/src/test/java/com/iam/server/protocol/ClientSecretRotationIT.java","iam-server/src/test/java/com/iam/server/security/ClientSecretVerifierTest.java","scripts/client-secret-policy.py"],"removed":[],"modified":[".gitignore","deploy/lab/compose.yml","deploy/lab/key-manifest.py","deploy/lab/lab.py","deploy/lab/test-key-manifest.py","docs/02-IAM开发计划.md","docs/accounts.md","docs/deployment-lab.md","docs/machine-tokens.md","docs/oidc.md","iam-server/src/main/java/com/iam/server/IamApplication.java","iam-server/src/main/java/com/iam/server/accounts/AccountConfiguration.java","iam-server/src/main/java/com/iam/server/accounts/AccountStore.java","iam-server/src/main/java/com/iam/server/accounts/ApplicationRegistry.java","iam-server/src/main/java/com/iam/server/accounts/Authorizer.java","iam-server/src/main/java/com/iam/server/accounts/MachineClientService.java","iam-server/src/main/java/com/iam/server/accounts/ScopeService.java","iam-server/src/main/java/com/iam/server/authorization/DecisionCache.java","iam-server/src/main/java/com/iam/server/protocol/InternalProtocolFilter.java","iam-server/src/main/java/com/iam/server/protocol/LocalKeyInitializer.java","iam-server/src/main/java/com/iam/server/protocol/MachineSecretAuthenticationProvider.java","iam-server/src/main/java/com/iam/server/protocol/ProtectedClientProvider.java","iam-server/src/main/java/com/iam/server/protocol/ProtocolConfiguration.java","iam-server/src/main/java/com/iam/server/protocol/ProtocolStore.java","iam-server/src/main/java/com/iam/server/protocol/TransactionalProvider.java","iam-server/src/main/java/com/iam/server/security/DecisionConfiguration.java","iam-server/src/main/java/com/iam/server/security/SecurityConfiguration.java","iam-server/src/main/java/com/iam/server/web/ApplicationController.java","iam-server/src/main/resources/application-local.yml","iam-server/src/main/resources/application.yml","iam-server/src/test/java/com/iam/server/BaselineIT.java","iam-server/src/test/java/com/iam/server/data/AuthorizationMigrationIT.java","iam-server/src/test/java/com/iam/server/data/CapacityCatalogIT.java","iam-server/src/test/java/com/iam/server/data/DisplayNameMigrationIT.java","iam-server/src/test/java/com/iam/server/data/MigrationIT.java","iam-server/src/test/java/com/iam/server/protocol/ApplicationLifecycleIT.java","iam-server/src/test/java/com/iam/server/protocol/ApplicationLifecycleUpgradeIT.java","iam-server/src/test/java/com/iam/server/protocol/CapacityDiagnostics.java","iam-server/src/test/java/com/iam/server/protocol/CapacityDriver.java","iam-server/src/test/java/com/iam/server/protocol/CapacityDriverTest.java","iam-server/src/test/java/com/iam/server/protocol/CapacityObserver.java","iam-server/src/test/java/com/iam/server/protocol/CapacityProbe.java","iam-server/src/test/java/com/iam/server/protocol/CapacitySeed.java","iam-server/src/test/java/com/iam/server/protocol/DataScopeIT.java","iam-server/src/test/java/com/iam/server/protocol/MachineCredentialUpgradeIT.java","iam-server/src/test/java/com/iam/server/protocol/MachineCredentialsIT.java","iam-server/src/test/java/com/iam/server/protocol/MachineResourceIT.java","iam-server/src/test/java/com/iam/server/protocol/MachineTaskIT.java","iam-server/src/test/java/com/iam/server/protocol/P08Environment.java","iam-server/src/test/java/com/iam/server/protocol/ProtocolFixture.java","iam-server/src/test/java/com/iam/server/protocol/ProtocolTestKeys.java","scripts/capacity/README.md","scripts/capacity/catalog.sql","scripts/capacity/environment.py","scripts/capacity/http_report.py","scripts/capacity/metrics_report.py","scripts/capacity/policies/L1.properties","scripts/capacity/prepare.py","scripts/capacity/round.py","scripts/capacity/test_tools.py"]},"repository":{"id":125,"owner":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"228834386@qq.com","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"name":"IAM","full_name":"pengzhiyu/IAM","description":"Identity and Access Management(身份识别与访问管理)","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":99286,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM/languages","html_url":"https://gitea.g-hi.com/pengzhiyu/IAM","url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM","link":"","ssh_url":"git@gitea.g-hi.com:pengzhiyu/IAM.git","clone_url":"https://gitea.g-hi.com/pengzhiyu/IAM.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-08T17:04:24+08:00","updated_at":"2026-10-10T13:44:43+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":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"sender":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"}}...
|
push
|
3
|
4
|
1791627069
|
1791628278
|
0
|
1791626275
|
1791628278
|
|
|
0
|
Edit
Delete
|
|
25331
|
fix(mfa): 限制初始管理员凭据并原子完成首次开通
|
125
|
16
|
verify.yml
|
1
|
16
|
0
|
refs/heads/main
|
958ef4eaa9c5c873973a94474f7ffb6ab9c16cd2
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0000000000000000000000000000000000000000","after":"958ef4eaa9c5c873973a94474f7ffb6ab9c16cd2","compare_url":"https://gitea.g-hi.com/pengzhiyu/IAM/compare/bff0faf3451547b455191b02c7cf7ca2a1c1ee80...958ef4eaa9c5c873973a94474f7ffb6ab9c16cd2","commits":[{"id":"958ef4eaa9c5c873973a94474f7ffb6ab9c16cd2","message":"fix(mfa): 限制初始管理员凭据并原子完成首次开通\n\n初始管理员密码原先没有有效期,首次绑定后仍可作为长期密码使用。增加固定开通期限并要求绑定时设置正式密码,保留现有 MFA 安全机制。\n\n实现内容:\n- V24 增加初始凭据截止和完成标记,固定 24 小时有效,受限会话仍最多 300 秒且不能越过开户期限\n- 正式密码替换、TOTP 消费、因素绑定、恢复码生成及审计原子提交,撤销旧身份并创建新会话\n- 处理并发开通的浏览器会话清理,仅续办当前浏览器的有效 OIDC 交易且不延长交易期限\n- 增加离线重新签发命令和私密交付流程,禁止用于已绑定账号;前端仍要求确认保存恢复码\n- 补充开通、迁移、并发、事务回滚、前端和交付脚本测试,同步账号与 MFA 合同\n\n验证:\n- Maven 定向 verify:BootstrapEnrollmentIT 10 项、AccountsIT 15 项、MfaIT 34 项、TotpTest 3 项通过\n- AttackProtectionIT 12 项、SessionLifecycleIT 26 项、AuthorizationIT 26 项、BrowserSecurityIT 5 项通过\n- 初始凭据及三类 MFA 迁移测试各 1 项通过;AuthorizationMigrationIT 修正旧版本断言后 3 项通过\n- npm run check:21 个文件 173 项测试以及格式、lint、类型检查、构建通过\n- python3 deploy/lab/test-bootstrap.py:3 项通过\n- Maven console profile package 通过,最终 JAR 的前端资源和 V24 迁移与工作区一致\n- 后端全量测试及本阶段真实浏览器验收未运行\n\nBREAKING CHANGE: 需执行 V24 并同步升级前后端;历史未绑定初始管理员必须离线重新签发,初始开通确认接口新增必填 new_password,旧实例不能混跑\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/958ef4eaa9c5c873973a94474f7ffb6ab9c16cd2","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-09T18:38:18+08:00","added":["deploy/lab/test-bootstrap.py","iam-server/src/main/resources/db/migration/V24__bootstrap_credential_lifecycle.sql","iam-server/src/test/java/com/iam/server/data/BootstrapCredentialMigrationIT.java","iam-server/src/test/java/com/iam/server/protocol/BootstrapEnrollmentIT.java","iam-server/src/test/java/com/iam/server/protocol/TestAdministrator.java"],"removed":[],"modified":["deploy/lab/lab.py","docs/accounts.md","docs/mfa.md","iam-admin-web/src/pages/MfaPage.tsx","iam-admin-web/src/test/mfa.test.tsx","iam-server/src/main/java/com/iam/server/IamApplication.java","iam-server/src/main/java/com/iam/server/accounts/AccountService.java","iam-server/src/main/java/com/iam/server/accounts/AccountStore.java","iam-server/src/main/java/com/iam/server/accounts/BootstrapCli.java","iam-server/src/main/java/com/iam/server/accounts/BootstrapService.java","iam-server/src/main/java/com/iam/server/protocol/MfaService.java","iam-server/src/main/java/com/iam/server/protocol/ProtocolConfiguration.java","iam-server/src/main/java/com/iam/server/protocol/SessionLifecycle.java","iam-server/src/main/java/com/iam/server/web/MfaController.java","iam-server/src/test/java/com/iam/server/accounts/AccountsIT.java","iam-server/src/test/java/com/iam/server/data/AuthorizationMigrationIT.java","iam-server/src/test/java/com/iam/server/protocol/AuthorizationIT.java","iam-server/src/test/java/com/iam/server/protocol/MfaHttpClient.java","iam-server/src/test/java/com/iam/server/protocol/P08Environment.java","iam-server/src/test/java/com/iam/server/protocol/ProtocolFixture.java","scripts/bootstrap-admin.py"]},{"id":"f59b781e837c7cc0afc4916f4e7ace4d5e37f760","message":"fix(mfa): 修复受限会话恢复并增加递增冷却\n\n修复受限 MFA 会话过期后的页面恢复,并区分挑战终态与临时限流,防止用户等待后继续提交已失效的挑战。\n\n实现内容:\n- 全局 401 覆盖 PENDING/RECOVERY,补充 MFA 路由保护和明确退出导航\n- 挑战及绑定截止不晚于基础会话期限,终态要求重新开始,临时限流按 Retry-After 等待且不自动提交\n- V23 增加账号共享失败累计,每五次无效证明按 30/60/120/300 秒递增冷却,并原子记录审计与 Outbox\n- 保留 TOTP 防重放、恢复码单次消费、管理员禁止停用及独立二次验证授权\n- 补充集成、迁移、前端与浏览器验收测试,同步接口合同\n\n验证:\n- Maven 定向 verify:TotpTest 3 项、AttackProtectionIT 12 项、BrowserSecurityIT 5 项及三类 MFA 迁移测试各 1 项通过\n- MfaIT 首轮两项测试夹具异常已修复,定向 verify 重跑 34 项全部通过\n- npm run check:21 个文件共 171 项测试通过,格式、lint、类型及构建通过;最终脚本补测后格式与 lint 再次通过\n- Maven console profile package 成功,最终 JAR 浏览器 S01—S07 完整通过,S08 正式登录路由单独补测通过\n- 后端全量测试及原 P11 浏览器全套未运行\n\nBREAKING CHANGE: 挑战耗尽由 429 改为 400,新增 MFA_CHALLENGE_CONSUMED 和 MFA_COOLDOWN;需执行 V23、同步升级前后端并协调停止旧实例\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/f59b781e837c7cc0afc4916f4e7ace4d5e37f760","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-09T18:13:57+08:00","added":["iam-admin-web/scripts/acceptance-mfa-stage3.mjs","iam-admin-web/src/test/mfa-route.test.tsx","iam-server/src/main/resources/db/migration/V23__mfa_failure_cooldown.sql","iam-server/src/test/java/com/iam/server/data/MfaCooldownMigrationIT.java"],"removed":[],"modified":["docs/attack-protection.md","docs/console/page-api-matrix.md","docs/mfa.md","iam-admin-web/scripts/acceptance-p11-t01.mjs","iam-admin-web/src/App.tsx","iam-admin-web/src/lib/auth.tsx","iam-admin-web/src/pages/MfaPage.tsx","iam-admin-web/src/test/mfa.test.tsx","iam-server/src/main/java/com/iam/server/protocol/MfaService.java","iam-server/src/main/java/com/iam/server/protocol/ProtocolStore.java","iam-server/src/test/java/com/iam/server/protocol/MfaIT.java"]},{"id":"c0aca8ed9cb6c24340ab9a6cf3c22ff42d68c59b","message":"fix(mfa): 为敏感因素操作增加独立二次验证授权\n\n登录验证不再授权认证器重绑、恢复码再生成或停用 MFA,敏感操作必须完成新的 TOTP 验证。\n\n实现内容:\n- 新增 V22 授权表,绑定用户、会话、因素代际与操作类型,五分钟有效并在业务事务内原子消费\n- 保持首次绑定与恢复码受限重绑、管理员禁用限制及普通管理会话强度语义\n- 前端按具体操作弹出验证,身份变化、取消或过期终止,成功后最多续办一次并使用轮换后的 CSRF\n- 补充迁移、授权边界、前端续办测试以及接口文档和浏览器验收脚本\n\n验证:\n- MfaIT 23、AttackProtectionIT 12、TotpTest 3、BrowserSecurityIT 5、MfaMigrationIT 1、MfaStepUpMigrationIT 1 均通过\n- npm run check 通过:20 个文件共 157 项测试,格式、静态检查、类型检查与构建通过\n- 最后调整验收脚本后 npm run format:check 通过;console 制品打包通过\n- 最终制品的真实浏览器 12 个场景分两轮覆盖通过;完整单轮受账号限流影响,脚本已加入窗口等待\n- git diff --check 通过;后端全量测试未运行\n\nBREAKING CHANGE: 敏感因素操作需在挑战中指定 operation 并携带 X-MFA-Step-Up 授权。上线须执行 V22 并同步升级前后端,旧实例不可混跑;升级会清除未完成的绑定候选。\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/c0aca8ed9cb6c24340ab9a6cf3c22ff42d68c59b","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-09T17:17:07+08:00","added":["iam-server/src/main/resources/db/migration/V22__mfa_step_up_authorization.sql","iam-server/src/test/java/com/iam/server/data/MfaStepUpMigrationIT.java"],"removed":[],"modified":["docs/adr/A25-p11-administrator-mfa.md","docs/console/page-api-matrix.md","docs/mfa.md","iam-admin-web/scripts/acceptance-p11-t01.mjs","iam-admin-web/src/lib/api.ts","iam-admin-web/src/lib/auth.tsx","iam-admin-web/src/pages/MfaPage.tsx","iam-admin-web/src/test/api.test.ts","iam-admin-web/src/test/mfa.test.tsx","iam-server/src/main/java/com/iam/server/protocol/MfaService.java","iam-server/src/main/java/com/iam/server/web/MfaController.java","iam-server/src/test/java/com/iam/server/protocol/MfaIT.java"]},{"id":"7f8cdc4698e73b2af30f932250521b0d12198f06","message":"chore(evidence): 外置验收截图并记录历史清理映射\n\n批量浏览器截图占据仓库主要体积,改为独立归档并保留证据追溯方式。\n\n实现内容:\n- 排除 docs/evidence 下批量图片再次进入版本控制,保留其他文档图片\n- 增加 3473 张截图的归档校验清单及 146 个历史提交的新旧映射\n- 将 534 处截图链接指向归档说明并保留原路径,补充恢复及后续证据规则\n\n验证:\n- 146 个历史提交的非截图文件及父提交关系逐一核对通过\n- 3473 张归档图片逐一核对 SHA-256,通过归档完整性检查\n- 全部归档图片被忽略,其他文档图片未被误排除\n- 534 处改写链接目标校验及 git diff --check 通过\n- 未运行业务测试,本次没有修改业务代码或测试断言\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/7f8cdc4698e73b2af30f932250521b0d12198f06","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-09T15:37:26+08:00","added":["docs/evidence/README.md","docs/evidence/history-rewrite-map.txt","docs/evidence/screenshots-archive.json"],"removed":[],"modified":[".gitignore","docs/README.md","docs/evidence/P08/result.md","docs/evidence/P09/T01/recheck/result.md","docs/evidence/P09/T01/result.md","docs/evidence/P09/T02/group-lifecycle/visual-review.md","docs/evidence/P09/T02/recheck/result.md","docs/evidence/P09/T02/recheck/visual-review.md","docs/evidence/P09/T02/result.md","docs/evidence/P09/T03/result.md","docs/evidence/P09/T03/visual-review.md","docs/evidence/P09/T04/result.md","docs/evidence/P09/T04/visual-review.md","docs/evidence/P09/T05/result.md","docs/evidence/P09/T05/visual-review.md","docs/evidence/P09/T06/m2-exit.md","docs/evidence/P09/T06/visual-review.md","docs/evidence/P10/T01/result.md","docs/evidence/P10/T02/result.md","docs/evidence/P10/T03/result.md","docs/evidence/P10/T04/result.md","docs/evidence/P10/T05/result.md","docs/evidence/P11-PRE01/result.md","docs/evidence/P11/T01/dynamic-review.md","docs/evidence/P11/T01/result.md","docs/evidence/P11/T02/dynamic-review.md","docs/evidence/P11/T02/result.md","docs/evidence/P11/T03/result.md","docs/evidence/P11/T04/README.md","docs/evidence/P11/T04/coverage.md","docs/evidence/P11/T04/failures.md","docs/evidence/P11/T05/README.md","docs/evidence/P11/T06/README.md","docs/evidence/P11/T06/coverage.md","docs/evidence/P11/T07/README.md","docs/evidence/P11/T07/manual-checklist.md"]},{"id":"7da2727c1fa0b56e93f3c0bf68882dedc18dc46d","message":"docs(capacity): 归档生命周期锁优化与两小时故障复验\n\n记录共享生命周期读锁候选的同条件短测、正式稳定性及故障复验,保留失败与修正,并按原预算维持未通过裁决。\n\n实现内容:\n- 归档原始样本、源码摘要、曲线、认证方案评审及复算脚本\n- 同步开发计划和容量任务,区分历史、诊断、正式结果及目标缺口\n- 固定派生CSV使用LF,核对220份证据摘要与Git暂存内容一致\n- 保留耗尽探针首次失败及补测,记录7个独立环境与私有材料清理\n\n验证:\n- 冻结候选 ./mvnw -B -ntp clean verify -Pconsole:491个唯一测试通过,零失败、零跳过,AOSP及冻结前端构建通过\n- Python统计合同11项通过;最终故障工具javac及AOSP通过\n- 正式7200秒:815729成功、31错误、零漏发和429;刷新P95 303.72ms仍超过200ms预算\n- 10类低档隔离探针及9类持续背景故障最终通过,初次失败与预热错误保留\n- 归档JSON/Python语法、摘要与git diff --cached --check通过\n- L1自身目标仍未满足,限定试运行依据不足,P12未通过;未进入P13、未推送\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/7da2727c1fa0b56e93f3c0bf68882dedc18dc46d","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-08T20:21:54+08:00","added":["docs/evidence/P12/capacity/lock-cost-20261008/README.md","docs/evidence/P12/capacity/lock-cost-20261008/after/catalog-sessions.json","docs/evidence/P12/capacity/lock-cost-20261008/after/cleanup-environment.json","docs/evidence/P12/capacity/lock-cost-20261008/after/commands.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/after/curves/timeline.csv","docs/evidence/P12/capacity/lock-cost-20261008/after/curves/timeline.html","docs/evidence/P12/capacity/lock-cost-20261008/after/environment.json","docs/evidence/P12/capacity/lock-cost-20261008/after/hash.json","docs/evidence/P12/capacity/lock-cost-20261008/after/jvm-worker.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/after/mixed-1000-short-metrics.json","docs/evidence/P12/capacity/lock-cost-20261008/after/mixed-1000-short-samples.jsonl.gz","docs/evidence/P12/capacity/lock-cost-20261008/after/mixed-1000-short-summary.json","docs/evidence/P12/capacity/lock-cost-20261008/after/plan.json","docs/evidence/P12/capacity/lock-cost-20261008/after/preparation.json","docs/evidence/P12/capacity/lock-cost-20261008/after/profile-0.json","docs/evidence/P12/capacity/lock-cost-20261008/after/profile-1.json","docs/evidence/P12/capacity/lock-cost-20261008/after/progress.json","docs/evidence/P12/capacity/lock-cost-20261008/after/report-with-warmup.json","docs/evidence/P12/capacity/lock-cost-20261008/after/report.json","docs/evidence/P12/capacity/lock-cost-20261008/after/resources.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/after/round.json","docs/evidence/P12/capacity/lock-cost-20261008/after/smoke.json","docs/evidence/P12/capacity/lock-cost-20261008/after/tool-build.json","docs/evidence/P12/capacity/lock-cost-20261008/artifact-comparison.json","docs/evidence/P12/capacity/lock-cost-20261008/authentication-options.md","docs/evidence/P12/capacity/lock-cost-20261008/baseline/catalog-sessions.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/cleanup-environment.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/commands.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/baseline/curves/timeline.csv","docs/evidence/P12/capacity/lock-cost-20261008/baseline/curves/timeline.html","docs/evidence/P12/capacity/lock-cost-20261008/baseline/digest-plans.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/environment.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/error-types.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/exceptions-0.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/exceptions-1.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/jvm-worker.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/baseline/mixed-short-metrics.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/mixed-short-samples.jsonl.gz","docs/evidence/P12/capacity/lock-cost-20261008/baseline/mixed-short-summary.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/plan.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/preparation.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/progress.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/report-with-warmup.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/report.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/resources.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/baseline/smoke.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/threads-1-0.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/threads-1-1.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/threads-2-0.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/threads-2-1.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/tool-build.json","docs/evidence/P12/capacity/lock-cost-20261008/baseline/tool-source.tar.gz","docs/evidence/P12/capacity/lock-cost-20261008/before/catalog-sessions.json","docs/evidence/P12/capacity/lock-cost-20261008/before/cleanup-environment.json","docs/evidence/P12/capacity/lock-cost-20261008/before/commands.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/before/curves/timeline.csv","docs/evidence/P12/capacity/lock-cost-20261008/before/curves/timeline.html","docs/evidence/P12/capacity/lock-cost-20261008/before/environment.json","docs/evidence/P12/capacity/lock-cost-20261008/before/hash.json","docs/evidence/P12/capacity/lock-cost-20261008/before/jvm-worker.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/before/mixed-1000-short-metrics.json","docs/evidence/P12/capacity/lock-cost-20261008/before/mixed-1000-short-samples.jsonl.gz","docs/evidence/P12/capacity/lock-cost-20261008/before/mixed-1000-short-summary.json","docs/evidence/P12/capacity/lock-cost-20261008/before/plan.json","docs/evidence/P12/capacity/lock-cost-20261008/before/preparation.json","docs/evidence/P12/capacity/lock-cost-20261008/before/profile-0.json","docs/evidence/P12/capacity/lock-cost-20261008/before/profile-1.json","docs/evidence/P12/capacity/lock-cost-20261008/before/progress.json","docs/evidence/P12/capacity/lock-cost-20261008/before/report-with-warmup.json","docs/evidence/P12/capacity/lock-cost-20261008/before/report.json","docs/evidence/P12/capacity/lock-cost-20261008/before/resources.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/before/round.json","docs/evidence/P12/capacity/lock-cost-20261008/before/smoke.json","docs/evidence/P12/capacity/lock-cost-20261008/before/tool-build.json","docs/evidence/P12/capacity/lock-cost-20261008/candidate-overlay.tar.gz","docs/evidence/P12/capacity/lock-cost-20261008/cleanup-check-initial.json","docs/evidence/P12/capacity/lock-cost-20261008/cleanup.json","docs/evidence/P12/capacity/lock-cost-20261008/concurrency.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/background-exhaust/curves/timeline.csv","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/background-exhaust/curves/timeline.html","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/background-exhaust/low-exhaust-samples.jsonl.gz","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/background-exhaust/low-exhaust-summary.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/background-exhaust/plan.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/background-exhaust/progress.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/background-exhaust/report-with-warmup.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/background-exhaust/report.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/catalog-sessions.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/cleanup-environment.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/commands.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/environment.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/exhaust-results/exhaust-prepare.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/exhaust-results/exhaust-recovery.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/exhaust-results/exhaust.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/exhaust-results/summary.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/jvm-worker.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/preparation.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/repair-commands.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/repair-progress.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/repair.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/smoke.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/tool-build.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-exhaust-final/tool-source.tar.gz","docs/evidence/P12/capacity/lock-cost-20261008/fault-overlap.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair-rationale.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-exhaust/curves/timeline.csv","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-exhaust/curves/timeline.html","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-exhaust/low-exhaust-samples.jsonl.gz","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-exhaust/low-exhaust-summary.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-exhaust/plan.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-exhaust/progress.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-exhaust/report-with-warmup.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-exhaust/report.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-notifications/curves/timeline.csv","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-notifications/curves/timeline.html","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-notifications/low-notifications-samples.jsonl.gz","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-notifications/low-notifications-summary.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-notifications/plan.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-notifications/progress.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-notifications/report-with-warmup.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/background-notifications/report.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/catalog-sessions.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/cleanup-environment.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/commands.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/environment.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/exhaust-results/exhaust-prepare.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/exhaust-results/exhaust-recovery.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/exhaust-results/exhaust.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/exhaust-results/summary.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/jvm-worker.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/notifications-results/NOTIFICATION_DELAY.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/notifications-results/NOTIFICATION_DUPLICATE.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/notifications-results/NOTIFICATION_FAIL.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/notifications-results/WORKER_PAUSE.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/notifications-results/summary.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/preparation.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/repair-commands.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/repair-progress.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/repair.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/smoke.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/tool-build.json","docs/evidence/P12/capacity/lock-cost-20261008/fault-repair/tool-source.tar.gz","docs/evidence/P12/capacity/lock-cost-20261008/faults/background-results/curves/timeline.csv","docs/evidence/P12/capacity/lock-cost-20261008/faults/background-results/curves/timeline.html","docs/evidence/P12/capacity/lock-cost-20261008/faults/background-results/low-fault-background-samples.jsonl.gz","docs/evidence/P12/capacity/lock-cost-20261008/faults/background-results/low-fault-background-summary.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/background-results/plan.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/background-results/progress.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/background-results/report-with-warmup.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/background-results/report.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/catalog-sessions.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/cleanup-environment.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/commands.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/faults/environment.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/fault-results/exhaust-prepare.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/fault-results/exhaust.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/fault-results/instance-prepare.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/fault-results/instance-recovery.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/fault-results/instance-unavailable.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/fault-results/postgres-prepare.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/fault-results/postgres-recovery.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/fault-results/postgres-unavailable.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/fault-results/redis-prepare.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/fault-results/redis-recovery.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/fault-results/redis-unavailable.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/fault-results/summary.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/fault-results/transaction-prepare.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/fault-results/transaction-recovery.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/fault-results/transaction.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/followup-commands.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/faults/followup.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/jvm-worker.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/faults/notification-results/NOTIFICATION_DELAY.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/notification-results/NOTIFICATION_DUPLICATE.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/notification-results/NOTIFICATION_FAIL.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/notification-results/WORKER_PAUSE.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/notification-results/summary.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/preparation.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/probes.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/smoke.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/tool-build.json","docs/evidence/P12/capacity/lock-cost-20261008/faults/tool-source.tar.gz","docs/evidence/P12/capacity/lock-cost-20261008/final-validation.json","docs/evidence/P12/capacity/lock-cost-20261008/followup-source.json","docs/evidence/P12/capacity/lock-cost-20261008/followup-source.tar.gz","docs/evidence/P12/capacity/lock-cost-20261008/full-tests.json","docs/evidence/P12/capacity/lock-cost-20261008/manifest.json","docs/evidence/P12/capacity/lock-cost-20261008/recompute-commands.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/recompute-concurrency.py","docs/evidence/P12/capacity/lock-cost-20261008/recompute-results.py","docs/evidence/P12/capacity/lock-cost-20261008/sample-audit.json","docs/evidence/P12/capacity/lock-cost-20261008/secret-scan-initial.json","docs/evidence/P12/capacity/lock-cost-20261008/secret-scan.json","docs/evidence/P12/capacity/lock-cost-20261008/short-comparison.json","docs/evidence/P12/capacity/lock-cost-20261008/source-provenance.json","docs/evidence/P12/capacity/lock-cost-20261008/stability/catalog-sessions.json","docs/evidence/P12/capacity/lock-cost-20261008/stability/cleanup-environment.json","docs/evidence/P12/capacity/lock-cost-20261008/stability/commands.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/stability/curves/timeline.csv","docs/evidence/P12/capacity/lock-cost-20261008/stability/curves/timeline.html","docs/evidence/P12/capacity/lock-cost-20261008/stability/environment.json","docs/evidence/P12/capacity/lock-cost-20261008/stability/error-type-snapshot.json","docs/evidence/P12/capacity/lock-cost-20261008/stability/first-hour-resource-snapshot.json","docs/evidence/P12/capacity/lock-cost-20261008/stability/jvm-worker.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/stability/mixed-low-2h-metrics.json","docs/evidence/P12/capacity/lock-cost-20261008/stability/mixed-low-2h-samples.jsonl.gz","docs/evidence/P12/capacity/lock-cost-20261008/stability/mixed-low-2h-summary.json","docs/evidence/P12/capacity/lock-cost-20261008/stability/plan.json","docs/evidence/P12/capacity/lock-cost-20261008/stability/preparation.json","docs/evidence/P12/capacity/lock-cost-20261008/stability/progress.json","docs/evidence/P12/capacity/lock-cost-20261008/stability/report-with-warmup.json","docs/evidence/P12/capacity/lock-cost-20261008/stability/report.json","docs/evidence/P12/capacity/lock-cost-20261008/stability/resources.jsonl","docs/evidence/P12/capacity/lock-cost-20261008/stability/round.json","docs/evidence/P12/capacity/lock-cost-20261008/stability/smoke.json","docs/evidence/P12/capacity/lock-cost-20261008/stability/tool-build.json","docs/evidence/P12/capacity/lock-cost-20261008/statistics-validation.json","docs/evidence/P12/capacity/lock-cost-20261008/targeted-repair-failures.json","docs/evidence/P12/capacity/lock-cost-20261008/targeted-tests-initial.json","docs/evidence/P12/capacity/lock-cost-20261008/tool-source.tar.gz","docs/evidence/P12/capacity/lock-cost-20261008/validation-commands.jsonl"],"removed":[],"modified":["docs/02-IAM开发计划.md","docs/evidence/P12/capacity/README.md","docs/evidence/P12/capacity/closure.json","docs/tasks/P12-capacity-T02.md","docs/tasks/P12-capacity-T03.md","docs/tasks/P12-capacity-T04.md","docs/tasks/P12-capacity-T05.md","docs/tasks/P12-capacity-T06.md"]}],"total_commits":0,"head_commit":{"id":"958ef4eaa9c5c873973a94474f7ffb6ab9c16cd2","message":"fix(mfa): 限制初始管理员凭据并原子完成首次开通\n\n初始管理员密码原先没有有效期,首次绑定后仍可作为长期密码使用。增加固定开通期限并要求绑定时设置正式密码,保留现有 MFA 安全机制。\n\n实现内容:\n- V24 增加初始凭据截止和完成标记,固定 24 小时有效,受限会话仍最多 300 秒且不能越过开户期限\n- 正式密码替换、TOTP 消费、因素绑定、恢复码生成及审计原子提交,撤销旧身份并创建新会话\n- 处理并发开通的浏览器会话清理,仅续办当前浏览器的有效 OIDC 交易且不延长交易期限\n- 增加离线重新签发命令和私密交付流程,禁止用于已绑定账号;前端仍要求确认保存恢复码\n- 补充开通、迁移、并发、事务回滚、前端和交付脚本测试,同步账号与 MFA 合同\n\n验证:\n- Maven 定向 verify:BootstrapEnrollmentIT 10 项、AccountsIT 15 项、MfaIT 34 项、TotpTest 3 项通过\n- AttackProtectionIT 12 项、SessionLifecycleIT 26 项、AuthorizationIT 26 项、BrowserSecurityIT 5 项通过\n- 初始凭据及三类 MFA 迁移测试各 1 项通过;AuthorizationMigrationIT 修正旧版本断言后 3 项通过\n- npm run check:21 个文件 173 项测试以及格式、lint、类型检查、构建通过\n- python3 deploy/lab/test-bootstrap.py:3 项通过\n- Maven console profile package 通过,最终 JAR 的前端资源和 V24 迁移与工作区一致\n- 后端全量测试及本阶段真实浏览器验收未运行\n\nBREAKING CHANGE: 需执行 V24 并同步升级前后端;历史未绑定初始管理员必须离线重新签发,初始开通确认接口新增必填 new_password,旧实例不能混跑\n","url":"https://gitea.g-hi.com/pengzhiyu/IAM/commit/958ef4eaa9c5c873973a94474f7ffb6ab9c16cd2","author":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"committer":{"name":"starry","email":"gamebyteyu@gmail.com","username":""},"verification":null,"timestamp":"2026-10-09T18:38:18+08:00","added":["deploy/lab/test-bootstrap.py","iam-server/src/main/resources/db/migration/V24__bootstrap_credential_lifecycle.sql","iam-server/src/test/java/com/iam/server/data/BootstrapCredentialMigrationIT.java","iam-server/src/test/java/com/iam/server/protocol/BootstrapEnrollmentIT.java","iam-server/src/test/java/com/iam/server/protocol/TestAdministrator.java"],"removed":[],"modified":["deploy/lab/lab.py","docs/accounts.md","docs/mfa.md","iam-admin-web/src/pages/MfaPage.tsx","iam-admin-web/src/test/mfa.test.tsx","iam-server/src/main/java/com/iam/server/IamApplication.java","iam-server/src/main/java/com/iam/server/accounts/AccountService.java","iam-server/src/main/java/com/iam/server/accounts/AccountStore.java","iam-server/src/main/java/com/iam/server/accounts/BootstrapCli.java","iam-server/src/main/java/com/iam/server/accounts/BootstrapService.java","iam-server/src/main/java/com/iam/server/protocol/MfaService.java","iam-server/src/main/java/com/iam/server/protocol/ProtocolConfiguration.java","iam-server/src/main/java/com/iam/server/protocol/SessionLifecycle.java","iam-server/src/main/java/com/iam/server/web/MfaController.java","iam-server/src/test/java/com/iam/server/accounts/AccountsIT.java","iam-server/src/test/java/com/iam/server/data/AuthorizationMigrationIT.java","iam-server/src/test/java/com/iam/server/protocol/AuthorizationIT.java","iam-server/src/test/java/com/iam/server/protocol/MfaHttpClient.java","iam-server/src/test/java/com/iam/server/protocol/P08Environment.java","iam-server/src/test/java/com/iam/server/protocol/ProtocolFixture.java","scripts/bootstrap-admin.py"]},"repository":{"id":125,"owner":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"228834386@qq.com","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"name":"IAM","full_name":"pengzhiyu/IAM","description":"Identity and Access Management(身份识别与访问管理)","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":27,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM/languages","html_url":"https://gitea.g-hi.com/pengzhiyu/IAM","url":"https://gitea.g-hi.com/api/v1/repos/pengzhiyu/IAM","link":"","ssh_url":"git@gitea.g-hi.com:pengzhiyu/IAM.git","clone_url":"https://gitea.g-hi.com/pengzhiyu/IAM.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-10-08T17:04:24+08:00","updated_at":"2026-10-10T13:44:43+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":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"},"sender":{"id":16,"login":"pengzhiyu","login_name":"","source_id":0,"full_name":"","email":"16+pengzhiyu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/bcd8cfbb58b96e4afa8ab5f6ac09cb16","html_url":"https://gitea.g-hi.com/pengzhiyu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-07-15T09:26:56+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":"pengzhiyu"}}...
|
push
|
2
|
4
|
1791611084
|
1791611175
|
0
|
1791611083
|
1791611175
|
|
|
0
|
Edit
Delete
|
|
25196
|
K4.6b: merge the two official API schema gates int K4.6b: merge the two official API schema gates into one...
|
121
|
5
|
kernel-ci.yml
|
499
|
5
|
0
|
refs/heads/main
|
833eba10ce54e30eeccd95ab7ff20f26fb729b7e
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"3dd9e3a8bd71c81edcad0d033e82bb706c7a2b93","after":"833eba10ce54e30eeccd95ab7ff20f26fb729b7e","compare_url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/compare/3dd9e3a8bd71c81edcad0d033e82bb706c7a2b93...833eba10ce54e30eeccd95ab7ff20f26fb729b7e","commits":[{"id":"833eba10ce54e30eeccd95ab7ff20f26fb729b7e","message":"K4.6b: merge the two official API schema gates into one\n\nThe 0.220.0 standard gate and the 0.221.0 check:api-spec gate validated the same\ntwo generated documents twice. scripts/lib/api-standard-validation.js is now the\nonly implementation and enforces the union of both rule sets; check:model runs it\nonce through check-api-contracts, and check:api-spec is an alias of that script.\n\nVendored official schemas live only in contracts/standards. Both OpenAPI 3.1\niterations stay (schema-base 2022-10-07 and document schema 2026-08-03) because\nneither is a superset of the other; the AsyncAPI without-$id variant is dropped\nas equivalent to the bundled 3.0.0 schema. contracts/meta, check-api-spec.js,\napi-spec-validation.js and its test file are removed; every negative mutation\nmoved into test/api-standard-validation.test.js.\n\nGenerated contracts, the generator and the compat baseline are unchanged.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/commit/833eba10ce54e30eeccd95ab7ff20f26fb729b7e","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T18:51:36-07:00","added":["contracts/standards/openapi-3.1-schema-2026-08-03.json","docs/releases/candidates/k46b-single-api-schema-gate.md"],"removed":["contracts/meta/README.md","contracts/meta/asyncapi-3.0.0.without-id.schema.json","contracts/meta/manifest.json","contracts/meta/openapi-3.1.schema.2026-08-03.json","scripts/check-api-spec.js","scripts/lib/api-spec-validation.js","test/api-spec-validation.test.js"],"modified":["contracts/standards/README.md","contracts/standards/manifest.json","docs/api-contracts.md","model/gap-governance.json","model/plan-ledger.json","package.json","scripts/check-api-contracts.js","scripts/lib/api-standard-validation.js","test/api-standard-validation.test.js"]}],"total_commits":0,"head_commit":{"id":"833eba10ce54e30eeccd95ab7ff20f26fb729b7e","message":"K4.6b: merge the two official API schema gates into one\n\nThe 0.220.0 standard gate and the 0.221.0 check:api-spec gate validated the same\ntwo generated documents twice. scripts/lib/api-standard-validation.js is now the\nonly implementation and enforces the union of both rule sets; check:model runs it\nonce through check-api-contracts, and check:api-spec is an alias of that script.\n\nVendored official schemas live only in contracts/standards. Both OpenAPI 3.1\niterations stay (schema-base 2022-10-07 and document schema 2026-08-03) because\nneither is a superset of the other; the AsyncAPI without-$id variant is dropped\nas equivalent to the bundled 3.0.0 schema. contracts/meta, check-api-spec.js,\napi-spec-validation.js and its test file are removed; every negative mutation\nmoved into test/api-standard-validation.test.js.\n\nGenerated contracts, the generator and the compat baseline are unchanged.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/commit/833eba10ce54e30eeccd95ab7ff20f26fb729b7e","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T18:51:36-07:00","added":["contracts/standards/openapi-3.1-schema-2026-08-03.json","docs/releases/candidates/k46b-single-api-schema-gate.md"],"removed":["contracts/meta/README.md","contracts/meta/asyncapi-3.0.0.without-id.schema.json","contracts/meta/manifest.json","contracts/meta/openapi-3.1.schema.2026-08-03.json","scripts/check-api-spec.js","scripts/lib/api-spec-validation.js","test/api-spec-validation.test.js"],"modified":["contracts/standards/README.md","contracts/standards/manifest.json","docs/api-contracts.md","model/gap-governance.json","model/plan-ledger.json","package.json","scripts/check-api-contracts.js","scripts/lib/api-standard-validation.js","test/api-standard-validation.test.js"]},"repository":{"id":121,"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":"seven-domain-five-dimension-unified-model","full_name":"luoanwu/seven-domain-five-dimension-unified-model","description":"七域五维统一领域模型独立仓:领域内核、31章规范与运行记录","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":24286,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/seven-domain-five-dimension-unified-model/languages","html_url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/seven-domain-five-dimension-unified-model","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/seven-domain-five-dimension-unified-model.git","clone_url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":15,"open_issues_count":0,"open_pr_counter":4,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-29T05:06:56+08:00","updated_at":"2026-10-04T09: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
|
4
|
1791121668
|
1791124721
|
0
|
1791080416
|
1791124721
|
|
|
0
|
Edit
Delete
|
|
25181
|
contracts: advance the API compat baseline to the contracts: advance the API compat baseline to the deployed 0.221.0 contracts; anchor v0.219.0...
|
121
|
5
|
kernel-ci.yml
|
498
|
5
|
0
|
refs/heads/main
|
3dd9e3a8bd71c81edcad0d033e82bb706c7a2b93
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"779c00191cb5a663e6fe700456583cc8bb068c05","after":"3dd9e3a8bd71c81edcad0d033e82bb706c7a2b93","compare_url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/compare/779c00191cb5a663e6fe700456583cc8bb068c05...3dd9e3a8bd71c81edcad0d033e82bb706c7a2b93","commits":[{"id":"3dd9e3a8bd71c81edcad0d033e82bb706c7a2b93","message":"contracts: advance the API compat baseline to the deployed 0.221.0 contracts; anchor v0.219.0\n\nThe installed contracts match the repository byte for byte, so the eight\nwaivers are cleared. v0.219.0 (009aacc8) was live and tagged but missing\nfrom the anchor list.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/commit/3dd9e3a8bd71c81edcad0d033e82bb706c7a2b93","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T17:28:23-07:00","added":[],"removed":[],"modified":["contracts/baseline/asyncapi.v1.json","contracts/baseline/openapi.v1.json","contracts/compat-waivers.json","model/release-anchors.json","ops/deployments/2026-10-03-gap2-batch-02210-local.md"]}],"total_commits":0,"head_commit":{"id":"3dd9e3a8bd71c81edcad0d033e82bb706c7a2b93","message":"contracts: advance the API compat baseline to the deployed 0.221.0 contracts; anchor v0.219.0\n\nThe installed contracts match the repository byte for byte, so the eight\nwaivers are cleared. v0.219.0 (009aacc8) was live and tagged but missing\nfrom the anchor list.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/commit/3dd9e3a8bd71c81edcad0d033e82bb706c7a2b93","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T17:28:23-07:00","added":[],"removed":[],"modified":["contracts/baseline/asyncapi.v1.json","contracts/baseline/openapi.v1.json","contracts/compat-waivers.json","model/release-anchors.json","ops/deployments/2026-10-03-gap2-batch-02210-local.md"]},"repository":{"id":121,"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":"seven-domain-five-dimension-unified-model","full_name":"luoanwu/seven-domain-five-dimension-unified-model","description":"七域五维统一领域模型独立仓:领域内核、31章规范与运行记录","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":23144,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/seven-domain-five-dimension-unified-model/languages","html_url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/seven-domain-five-dimension-unified-model","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/seven-domain-five-dimension-unified-model.git","clone_url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":25,"open_issues_count":0,"open_pr_counter":4,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-29T05:06:56+08:00","updated_at":"2026-10-04T08:28: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
|
2
|
4
|
1791117607
|
1791120354
|
0
|
1791075350
|
1791120354
|
|
|
0
|
Edit
Delete
|
|
25170
|
docs: record verified 0.221.0 delivery, its outage docs: record verified 0.221.0 delivery, its outage and unobserved live paths...
|
121
|
5
|
kernel-ci.yml
|
497
|
5
|
0
|
refs/heads/main
|
779c00191cb5a663e6fe700456583cc8bb068c05
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"607f69f4f6039cf5dcd4bb1e0ca48e1449012dfc","after":"779c00191cb5a663e6fe700456583cc8bb068c05","compare_url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/compare/607f69f4f6039cf5dcd4bb1e0ca48e1449012dfc...779c00191cb5a663e6fe700456583cc8bb068c05","commits":[{"id":"779c00191cb5a663e6fe700456583cc8bb068c05","message":"docs: record verified 0.221.0 delivery, its outage and unobserved live paths\n\nAnchors v0.221.0 at 607f69f4 and notes the deployment on K4.4b/c, K5.2b\nand K5.6; statuses unchanged.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/commit/779c00191cb5a663e6fe700456583cc8bb068c05","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T17:08:28-07:00","added":["ops/deployments/2026-10-03-gap2-batch-02210-local.md"],"removed":[],"modified":["model/plan-ledger.json","model/release-anchors.json","ops/runbook.md"]}],"total_commits":0,"head_commit":{"id":"779c00191cb5a663e6fe700456583cc8bb068c05","message":"docs: record verified 0.221.0 delivery, its outage and unobserved live paths\n\nAnchors v0.221.0 at 607f69f4 and notes the deployment on K4.4b/c, K5.2b\nand K5.6; statuses unchanged.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/commit/779c00191cb5a663e6fe700456583cc8bb068c05","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T17:08:28-07:00","added":["ops/deployments/2026-10-03-gap2-batch-02210-local.md"],"removed":[],"modified":["model/plan-ledger.json","model/release-anchors.json","ops/runbook.md"]},"repository":{"id":121,"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":"seven-domain-five-dimension-unified-model","full_name":"luoanwu/seven-domain-five-dimension-unified-model","description":"七域五维统一领域模型独立仓:领域内核、31章规范与运行记录","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":339889,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/seven-domain-five-dimension-unified-model/languages","html_url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/seven-domain-five-dimension-unified-model","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/seven-domain-five-dimension-unified-model.git","clone_url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":24,"open_issues_count":0,"open_pr_counter":4,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-29T05:06:56+08:00","updated_at":"2026-10-04T07:47:01+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
|
1791114679
|
1791117428
|
0
|
1791072551
|
1791117428
|
|
|
0
|
Edit
Delete
|
|
25163
|
release: prepare 0.221.0 value-chain revision and release: prepare 0.221.0 value-chain revision and review, tool usage metering, burn-rate delivery and gap2 evidence...
|
121
|
5
|
kernel-ci.yml
|
496
|
5
|
0
|
refs/heads/main
|
607f69f4f6039cf5dcd4bb1e0ca48e1449012dfc
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"6e36b93f386509ed116062d735b34cfd2fc4f508","after":"607f69f4f6039cf5dcd4bb1e0ca48e1449012dfc","compare_url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/compare/6e36b93f386509ed116062d735b34cfd2fc4f508...607f69f4f6039cf5dcd4bb1e0ca48e1449012dfc","commits":[{"id":"607f69f4f6039cf5dcd4bb1e0ca48e1449012dfc","message":"release: prepare 0.221.0 value-chain revision and review, tool usage metering, burn-rate delivery and gap2 evidence\n\nCombines the six claude/gap2-* branches on top of 0.220.0. Migrations\n168 and 170-172.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/commit/607f69f4f6039cf5dcd4bb1e0ca48e1449012dfc","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T02:58:49-07:00","added":["docs/releases/0.221.0.md"],"removed":[],"modified":["docs/v1.1-local-contracts-draft.md","model/catalog.json","package.json"]},{"id":"8305639929be6b20fde705670ba0479a99696274","message":"Merge claude/gap2-observability into the gap2 batch\n","url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/commit/8305639929be6b20fde705670ba0479a99696274","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T02:44:41-07:00","added":["docs/releases/candidates/burn-rate-alert-delivery.md","ops/drill-burn-rate-alert-delivery.js","ops/drills/2026-10-03-burn-rate-alert-delivery.md","ops/drills/2026-10-03-slo-burn-rate-promtool-le-fix.json","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/acceptance-validation.json","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/attempt1-dead-le-selector/abort-note.json","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/attempt1-dead-le-selector/api-metrics.txt","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/attempt1-dead-le-selector/checkpoints.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/attempt1-dead-le-selector/prometheus-queries.json","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/attempt1-dead-le-selector/report-at-abort.json","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/attempt2-host-docker-stopped/baseline-metrics.txt","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/attempt2-host-docker-stopped/interruption-note.json","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/attempt2-host-docker-stopped/outage-metrics.txt","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/attempt2-host-docker-stopped/receiver.json","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/attempt2-host-docker-stopped/report.json","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/attempt2-host-docker-stopped/slow-wire-metrics.txt","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/alertmanager-start.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/api.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/baseline-metrics.txt","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/database-restart.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/database-start.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/database-stop.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-all-events.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-audit-chain.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-cross-fks.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-cross-refs.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-db-roles.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-execution-provenance.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-external-sales-order-history.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-historical-facts.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-integration-events.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-partition-cutover.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-partition-horizon.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-partition-identities.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-partition-references.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-schedule-history.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-state-journal.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-task-evaluation-history.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-trigger-authorization-history.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-trigger-condition-history.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-trigger-state-history.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/migrate.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/outage-metrics.txt","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/prometheus-start.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/receiver.json","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/recovery-metrics.txt","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/related-regressions.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/report.json","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/slow-wire-metrics.txt","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/manifest.json","scripts/promql-refs.js","test/promql-refs.test.js","test/slo-sli.test.js"],"removed":[],"modified":["docs/alerting.md","docs/production-readiness.md","docs/slo.md","model/gap-governance.json","model/plan-ledger.json","model/production-readiness.json","model/slo.json","ops/alerts/erk.slo-burn.rules.yml","ops/alerts/erk.slo-burn.test.yml","ops/verify-burn-rate-rules.js","scripts/check-alerts.js","scripts/check-slo.js"]},{"id":"4ff9aed1ad9215873d83c2319eb433cfcb8829c0","message":"Merge origin/main (0.220.0) into the gap2 batch\n\nGovernance and ledger texts take main's wording with this batch's notes\nre-applied; both API schema gates (main's api-standard-validation and\nthis batch's check:api-spec) are kept side by side; generated contracts,\nresponse rows and the v1.1 draft re-rendered on a database migrated\nthrough 172.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/commit/4ff9aed1ad9215873d83c2319eb433cfcb8829c0","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T02:44:34-07:00","added":["contracts/standards/LICENSE-AsyncAPI","contracts/standards/LICENSE-OpenAPI","contracts/standards/README.md","contracts/standards/asyncapi-3.0.0.json","contracts/standards/manifest.json","contracts/standards/openapi-3.1-dialect-base.json","contracts/standards/openapi-3.1-meta-base.json","contracts/standards/openapi-3.1-schema-2022-10-07.json","contracts/standards/openapi-3.1-schema-base-2022-10-07.json","docs/api-contract-bundle.md","docs/governance/full-closure-2026-10-03/README.md","docs/governance/full-closure-2026-10-03/not-verified.md","docs/governance/full-closure-2026-10-03/reconciliation.json","docs/governance/full-closure-2026-10-03/requests/REQ-DECISION-ADR-002-creation-evaluation-contract.md","docs/governance/full-closure-2026-10-03/requests/REQ-DECISION-ADR-002-reuse-reevaluation-contract.md","docs/governance/full-closure-2026-10-03/requests/REQ-DECISION-DEC-053.md","docs/governance/full-closure-2026-10-03/requests/REQ-DECISION-MODEL-owner-source-binding.md","docs/governance/full-closure-2026-10-03/requests/REQ-DECISION-SalesOrderCreated-owner-contract.md","docs/governance/full-closure-2026-10-03/requests/REQ-DECISION-UDM-19-anonymization-scheme.md","docs/governance/full-closure-2026-10-03/requests/REQ-DECISION-external-owner-contract.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-AI-GATEWAY.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-BREAK-GLASS-IDENTITY.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-CENTRAL-AUDIT.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-CI-ISOLATION.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-COMMERCE-OBLIGATION.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-CONTRACT-PIN.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-CREDENTIAL-PROVIDER.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-CROSS-AUTHORITY-EVIDENCE.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-CUSTOMER-CONCEPTS.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-ENVIRONMENT-ACCEPTANCE.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-FACT-CHANNEL.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-FINANCE-PAYMENT.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-IDP-REGISTRATION.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-KNOWLEDGE-SOURCE.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-METRIC-VALUE-SOURCE.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-MODEL-SOURCE.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-OBSERVABILITY-DELIVERY.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-ORG-ASSET-SOURCE.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-OS-CONSUMER.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-POS-PRODUCER.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-PRINCIPAL-CONTRACT.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-QUOTATION-PRODUCER.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-SCENARIO-OWNERS.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-SLA-SOURCE.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-V11-CONTRACT-REVIEW.md","docs/governance/full-closure-2026-10-03/tests.tap","docs/governance/full-closure-2026-10-03/validation.json","docs/governance/full-closure-2026-10-03/work-plan.md","docs/governance/full-closure-external-2026-10-03/README.md","docs/governance/full-closure-external-2026-10-03/collect.mjs","docs/governance/full-closure-external-2026-10-03/minimum-chain.md","docs/governance/full-closure-external-2026-10-03/six-request-bindings.initial.json","docs/governance/full-closure-external-2026-10-03/six-request-bindings.json","docs/governance/full-closure-external-2026-10-03/source-inputs.json","docs/governance/full-closure-external-2026-10-03/source-observation.json","docs/governance/full-closure-external-2026-10-03/validation.json","docs/governance/full-closure-external-2026-10-03/verify.mjs","docs/releases/0.220.0.md","docs/releases/candidates/full-closure-governance.md","docs/releases/candidates/k76a-slo-burn-report.md","docs/slo-burn-report.md","ops/deployments/2026-10-03-full-closure-02200-local.md","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-bundle-first-aborted.tap","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-bundle.tap","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-delivery/asyncapi.v1.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-delivery/manifest.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-delivery/openapi.v1.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-export.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-verified.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/compat.txt","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/gate.txt","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/targeted.tap","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/validation.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/archive-manifest.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/check-deployed.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/attempt-1-preflight/candidate-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/attempt-1-preflight/release-config.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/candidate-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/deploy.mjs","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/live-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/release-config.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/run-deploy.sh","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/source-manifest.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/collect-evidence.py","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/summary.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/summary.md","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/terminal-attempts.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/full-ci-first-static-failure/report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/full-ci/report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/installed-api-contract-verified.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/installed-api-standard-gate.txt","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/api-burn-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/prometheus.yml","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/worker-burn-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/verify-installed-report.mjs","ops/deployments/evidence/2026-10-03-full-closure-02200-local/raw-local-manifest.json","ops/drill-slo-burn-report.js","ops/drills/2026-10-03-slo-burn-report.md","ops/drills/evidence/2026-10-03-slo-burn-report/acceptance-validation.json","ops/drills/evidence/2026-10-03-slo-burn-report/first-report-before-zero-denominator.json","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/api-report.json","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/cli-report.json","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/idle-report.json","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/injection-report.json","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/missing-report.json","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/prometheus.yml","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/report.json","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/worker-report.json","ops/drills/evidence/2026-10-03-slo-burn-report/manifest.json","ops/drills/evidence/2026-10-03-slo-burn-report/unit-tests.tap","ops/lib/slo-burn-report.js","ops/report-slo-burn.js","scripts/export-api-contract-bundle.js","scripts/lib/api-contract-bundle.js","scripts/lib/api-standard-validation.js","scripts/verify-api-contract-bundle.js","test/api-contract-bundle.test.js","test/api-standard-validation.test.js","test/slo-burn-report.test.js"],"removed":[],"modified":["docs/api-contracts.md","docs/gap-governance.md","docs/slo.md","docs/v1.1-local-contracts-draft.md","model/catalog.json","model/gap-governance.json","model/plan-ledger.json","model/release-anchors.json","package.json","scripts/check-api-contracts.js","scripts/check-gap-governance.js","scripts/lib/gap-governance.js","scripts/lib/governance-work-plan.js","scripts/lib/not-verified-governance.js","test/gap-governance.test.js","test/governance-work-plan.test.js","test/not-verified-governance.test.js"]},{"id":"f32d8f5b73807b3e40f11d480a3df0f88572a458","message":"Merge origin/main (0.220.0) into claude/gap2-observability\n\nLedger and gap-governance take main's text; the burn-rate delivery notes are re-applied on top.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/commit/f32d8f5b73807b3e40f11d480a3df0f88572a458","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T02:41:30-07:00","added":["contracts/standards/LICENSE-AsyncAPI","contracts/standards/LICENSE-OpenAPI","contracts/standards/README.md","contracts/standards/asyncapi-3.0.0.json","contracts/standards/manifest.json","contracts/standards/openapi-3.1-dialect-base.json","contracts/standards/openapi-3.1-meta-base.json","contracts/standards/openapi-3.1-schema-2022-10-07.json","contracts/standards/openapi-3.1-schema-base-2022-10-07.json","docs/api-contract-bundle.md","docs/governance/full-closure-2026-10-03/README.md","docs/governance/full-closure-2026-10-03/not-verified.md","docs/governance/full-closure-2026-10-03/reconciliation.json","docs/governance/full-closure-2026-10-03/requests/REQ-DECISION-ADR-002-creation-evaluation-contract.md","docs/governance/full-closure-2026-10-03/requests/REQ-DECISION-ADR-002-reuse-reevaluation-contract.md","docs/governance/full-closure-2026-10-03/requests/REQ-DECISION-DEC-053.md","docs/governance/full-closure-2026-10-03/requests/REQ-DECISION-MODEL-owner-source-binding.md","docs/governance/full-closure-2026-10-03/requests/REQ-DECISION-SalesOrderCreated-owner-contract.md","docs/governance/full-closure-2026-10-03/requests/REQ-DECISION-UDM-19-anonymization-scheme.md","docs/governance/full-closure-2026-10-03/requests/REQ-DECISION-external-owner-contract.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-AI-GATEWAY.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-BREAK-GLASS-IDENTITY.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-CENTRAL-AUDIT.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-CI-ISOLATION.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-COMMERCE-OBLIGATION.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-CONTRACT-PIN.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-CREDENTIAL-PROVIDER.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-CROSS-AUTHORITY-EVIDENCE.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-CUSTOMER-CONCEPTS.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-ENVIRONMENT-ACCEPTANCE.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-FACT-CHANNEL.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-FINANCE-PAYMENT.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-IDP-REGISTRATION.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-KNOWLEDGE-SOURCE.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-METRIC-VALUE-SOURCE.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-MODEL-SOURCE.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-OBSERVABILITY-DELIVERY.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-ORG-ASSET-SOURCE.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-OS-CONSUMER.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-POS-PRODUCER.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-PRINCIPAL-CONTRACT.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-QUOTATION-PRODUCER.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-SCENARIO-OWNERS.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-SLA-SOURCE.md","docs/governance/full-closure-2026-10-03/requests/REQ-EXTERNAL-EXT-V11-CONTRACT-REVIEW.md","docs/governance/full-closure-2026-10-03/tests.tap","docs/governance/full-closure-2026-10-03/validation.json","docs/governance/full-closure-2026-10-03/work-plan.md","docs/governance/full-closure-external-2026-10-03/README.md","docs/governance/full-closure-external-2026-10-03/collect.mjs","docs/governance/full-closure-external-2026-10-03/minimum-chain.md","docs/governance/full-closure-external-2026-10-03/six-request-bindings.initial.json","docs/governance/full-closure-external-2026-10-03/six-request-bindings.json","docs/governance/full-closure-external-2026-10-03/source-inputs.json","docs/governance/full-closure-external-2026-10-03/source-observation.json","docs/governance/full-closure-external-2026-10-03/validation.json","docs/governance/full-closure-external-2026-10-03/verify.mjs","docs/releases/0.220.0.md","docs/releases/candidates/full-closure-governance.md","docs/releases/candidates/k76a-slo-burn-report.md","docs/slo-burn-report.md","ops/deployments/2026-10-03-full-closure-02200-local.md","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-bundle-first-aborted.tap","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-bundle.tap","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-delivery/asyncapi.v1.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-delivery/manifest.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-delivery/openapi.v1.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-export.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-verified.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/compat.txt","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/gate.txt","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/targeted.tap","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/validation.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/archive-manifest.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/check-deployed.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/attempt-1-preflight/candidate-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/attempt-1-preflight/release-config.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/candidate-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/deploy.mjs","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/live-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/release-config.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/run-deploy.sh","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/source-manifest.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/collect-evidence.py","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/summary.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/summary.md","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/terminal-attempts.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/full-ci-first-static-failure/report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/full-ci/report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/installed-api-contract-verified.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/installed-api-standard-gate.txt","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/api-burn-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/prometheus.yml","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/worker-burn-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/verify-installed-report.mjs","ops/deployments/evidence/2026-10-03-full-closure-02200-local/raw-local-manifest.json","ops/drill-slo-burn-report.js","ops/drills/2026-10-03-slo-burn-report.md","ops/drills/evidence/2026-10-03-slo-burn-report/acceptance-validation.json","ops/drills/evidence/2026-10-03-slo-burn-report/first-report-before-zero-denominator.json","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/api-report.json","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/cli-report.json","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/idle-report.json","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/injection-report.json","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/missing-report.json","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/prometheus.yml","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/report.json","ops/drills/evidence/2026-10-03-slo-burn-report/fixed-source/worker-report.json","ops/drills/evidence/2026-10-03-slo-burn-report/manifest.json","ops/drills/evidence/2026-10-03-slo-burn-report/unit-tests.tap","ops/lib/slo-burn-report.js","ops/report-slo-burn.js","scripts/export-api-contract-bundle.js","scripts/lib/api-contract-bundle.js","scripts/lib/api-standard-validation.js","scripts/verify-api-contract-bundle.js","test/api-contract-bundle.test.js","test/api-standard-validation.test.js","test/slo-burn-report.test.js"],"removed":[],"modified":["docs/api-contracts.md","docs/gap-governance.md","docs/slo.md","docs/v1.1-local-contracts-draft.md","model/catalog.json","model/gap-governance.json","model/plan-ledger.json","model/release-anchors.json","package.json","scripts/check-api-contracts.js","scripts/check-gap-governance.js","scripts/lib/gap-governance.js","scripts/lib/governance-work-plan.js","scripts/lib/not-verified-governance.js","test/gap-governance.test.js","test/governance-work-plan.test.js","test/not-verified-governance.test.js"]},{"id":"e88691d887663dbc312c31f1b1fef8adb7c5596f","message":"K7.6a/K7.6b: fixed-source burn-rate delivery evidence, docs, ledger notes and release candidate\n\nAll 12 burn-rate rules fired in an isolated real Prometheus, reached the test\nwebhook and resolved after natural window expiry (third run; the first exposed\nthe dead le selector, the second was cut short when the host Docker engine\nstopped). Statuses unchanged: K7.6a, K7.6b, K8.7 partial, P2.4c not_verified.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/commit/e88691d887663dbc312c31f1b1fef8adb7c5596f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T02:39:51-07:00","added":["docs/releases/candidates/burn-rate-alert-delivery.md","ops/drills/2026-10-03-burn-rate-alert-delivery.md","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/acceptance-validation.json","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/attempt1-dead-le-selector/checkpoints.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/alertmanager-start.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/api.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/baseline-metrics.txt","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/database-restart.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/database-start.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/database-stop.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-all-events.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-audit-chain.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-cross-fks.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-cross-refs.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-db-roles.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-execution-provenance.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-external-sales-order-history.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-historical-facts.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-integration-events.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-partition-cutover.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-partition-horizon.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-partition-identities.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-partition-references.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-schedule-history.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-state-journal.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-task-evaluation-history.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-trigger-authorization-history.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-trigger-condition-history.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/gate-trigger-state-history.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/migrate.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/outage-metrics.txt","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/prometheus-start.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/receiver.json","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/recovery-metrics.txt","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/related-regressions.log","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/report.json","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/fixed-source/slow-wire-metrics.txt","ops/drills/evidence/2026-10-03-burn-rate-alert-delivery/manifest.json"],"removed":[],"modified":["docs/alerting.md","docs/production-readiness.md","docs/slo.md","model/gap-governance.json","model/plan-ledger.json","model/production-readiness.json"]}],"total_commits":0,"head_commit":{"id":"607f69f4f6039cf5dcd4bb1e0ca48e1449012dfc","message":"release: prepare 0.221.0 value-chain revision and review, tool usage metering, burn-rate delivery and gap2 evidence\n\nCombines the six claude/gap2-* branches on top of 0.220.0. Migrations\n168 and 170-172.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/commit/607f69f4f6039cf5dcd4bb1e0ca48e1449012dfc","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T02:58:49-07:00","added":["docs/releases/0.221.0.md"],"removed":[],"modified":["docs/v1.1-local-contracts-draft.md","model/catalog.json","package.json"]},"repository":{"id":121,"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":"seven-domain-five-dimension-unified-model","full_name":"luoanwu/seven-domain-five-dimension-unified-model","description":"七域五维统一领域模型独立仓:领域内核、31章规范与运行记录","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":339886,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/seven-domain-five-dimension-unified-model/languages","html_url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/seven-domain-five-dimension-unified-model","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/seven-domain-five-dimension-unified-model.git","clone_url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":24,"open_issues_count":0,"open_pr_counter":4,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-29T05:06:56+08:00","updated_at":"2026-10-03T18:09: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
|
4
|
1791111804
|
1791114554
|
0
|
1791071221
|
1791114554
|
|
|
0
|
Edit
Delete
|
|
25142
|
Record verified 0.220.0 delivery and remaining clo Record verified 0.220.0 delivery and remaining closure boundaries...
|
121
|
5
|
kernel-ci.yml
|
495
|
5
|
0
|
refs/heads/main
|
6e36b93f386509ed116062d735b34cfd2fc4f508
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"509ea39cb0c08ffa2aedb144bcff20b55c5f8613","after":"6e36b93f386509ed116062d735b34cfd2fc4f508","compare_url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/compare/509ea39cb0c08ffa2aedb144bcff20b55c5f8613...6e36b93f386509ed116062d735b34cfd2fc4f508","commits":[{"id":"6e36b93f386509ed116062d735b34cfd2fc4f508","message":"Record verified 0.220.0 delivery and remaining closure boundaries\n","url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/commit/6e36b93f386509ed116062d735b34cfd2fc4f508","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T01:49:21-07:00","added":["ops/deployments/2026-10-03-full-closure-02200-local.md","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-bundle-first-aborted.tap","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-bundle.tap","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-delivery/asyncapi.v1.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-delivery/manifest.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-delivery/openapi.v1.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-export.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-verified.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/compat.txt","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/gate.txt","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/targeted.tap","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/validation.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/archive-manifest.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/check-deployed.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/attempt-1-preflight/candidate-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/attempt-1-preflight/release-config.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/candidate-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/deploy.mjs","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/live-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/release-config.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/run-deploy.sh","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/source-manifest.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/collect-evidence.py","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/summary.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/summary.md","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/terminal-attempts.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/full-ci-first-static-failure/report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/full-ci/report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/installed-api-contract-verified.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/installed-api-standard-gate.txt","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/api-burn-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/prometheus.yml","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/worker-burn-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/verify-installed-report.mjs","ops/deployments/evidence/2026-10-03-full-closure-02200-local/raw-local-manifest.json"],"removed":[],"modified":["model/gap-governance.json","model/plan-ledger.json","model/release-anchors.json"]}],"total_commits":0,"head_commit":{"id":"6e36b93f386509ed116062d735b34cfd2fc4f508","message":"Record verified 0.220.0 delivery and remaining closure boundaries\n","url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model/commit/6e36b93f386509ed116062d735b34cfd2fc4f508","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-03T01:49:21-07:00","added":["ops/deployments/2026-10-03-full-closure-02200-local.md","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-bundle-first-aborted.tap","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-bundle.tap","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-delivery/asyncapi.v1.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-delivery/manifest.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-delivery/openapi.v1.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-export.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-contract-verified.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/compat.txt","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/gate.txt","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/targeted.tap","ops/deployments/evidence/2026-10-03-full-closure-02200-local/api-standard-validation/validation.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/archive-manifest.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/check-deployed.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/attempt-1-preflight/candidate-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/attempt-1-preflight/release-config.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/candidate-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/deploy.mjs","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/live-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/release-config.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/run-deploy.sh","ops/deployments/evidence/2026-10-03-full-closure-02200-local/deployment/source-manifest.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/collect-evidence.py","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/summary.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/summary.md","ops/deployments/evidence/2026-10-03-full-closure-02200-local/evidence-preparation/terminal-attempts.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/full-ci-first-static-failure/report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/full-ci/report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/installed-api-contract-verified.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/installed-api-standard-gate.txt","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/api-burn-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/prometheus.yml","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/run-1791016816767-2f77b280f6a7/worker-burn-report.json","ops/deployments/evidence/2026-10-03-full-closure-02200-local/live-prometheus/verify-installed-report.mjs","ops/deployments/evidence/2026-10-03-full-closure-02200-local/raw-local-manifest.json"],"removed":[],"modified":["model/gap-governance.json","model/plan-ledger.json","model/release-anchors.json"]},"repository":{"id":121,"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":"seven-domain-five-dimension-unified-model","full_name":"luoanwu/seven-domain-five-dimension-unified-model","description":"七域五维统一领域模型独立仓:领域内核、31章规范与运行记录","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":337749,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/seven-domain-five-dimension-unified-model/languages","html_url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/seven-domain-five-dimension-unified-model","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/seven-domain-five-dimension-unified-model.git","clone_url":"https://gitea.g-hi.com/luoanwu/seven-domain-five-dimension-unified-model.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":23,"open_issues_count":0,"open_pr_counter":4,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-29T05:06:56+08:00","updated_at":"2026-10-03T16:40: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
|
3
|
3
|
0
|
1791108075
|
0
|
1791017367
|
1791108075
|
|
|
0
|
Edit
Delete
|